Skip to content

feat: CI品質ゲートをimport-linter等の6本に拡充 - #4

Merged
shogo-hs merged 3 commits into
mainfrom
claude/ci-quality-gates
Sep 12, 2026
Merged

shogo-hs merged 3 commits into
mainfrom
claude/ci-quality-gates

Conversation

@shogo-hs

Copy link
Copy Markdown
Owner

概要

  • python-uv-ci-setup Playbook の品質ゲートを ruff / mypy / pytest の 3 本から 6 本(+ import-linter / deptry / coverage 閾値)に拡充する。
  • bootstrap が生成直後から CI が緑になる構成(各層の __init__.py・smoke テスト)を作るようにする。
  • GitHub Actions を現行メジャーに更新し、Dependabot で以後の更新を自動化する。

背景 / 目的

  • テンプレートは Hexagonal Architecture(adapters -> application -> ports -> domain)を設計原則にしているが、依存方向は文書上の約束で、CI は検証していなかった。
  • pytest-cov は dev 依存に入っているだけで閾値が無く、未使用・未宣言の依存も見ていなかった。
  • いまの bootstrap は __init__.py も build-system も生成しないため、テンプレートどおりに立ち上げると src/ 配下が import できず CI が赤から始まっていた。

変更内容

  • templates.md: pyproject(uv_build の build-system / [tool.importlinter] の layers 契約と forbidden 契約 / ruff に S・SIM・C4・RUF・PTH / mypy に disallow_untyped_defs 等 / coverage fail_under = 80)、pre-commit(pre-commit-hooks + import-linter + deptry)、ci.yml(permissions / concurrency / checkout@v7 / setup-python@v7 / setup-uv@v10)、dependabot.yml の雛形を更新
  • tooling-best-practices.md: import-linter / deptry / coverage / Dependabot / pre-commit-hooks の節を追加。CI に入れなかった uv audit は「強化する場合」に記載
  • python-uv-ci-setup.md: 手順を 6 本のゲートに更新。逆依存をわざと 1 行足して lint-imports が落ちることを確認する手順を追加
  • bootstrap_python_project.py: src/<pkg>tests/ の全ディレクトリに __init__.pytests/unit/test_smoke.py.gitignore に coverage 出力を生成。生成する依存方向の記述を ports 込みに修正
  • ADR 0002(import-linter で依存方向を機械検証する)/ ADR 0003(品質ゲート拡充と採らなかった案)
  • .github/workflows/ai-context-sync.yml を checkout@v7 / setup-python@v7 に、.github/dependabot.yml(github-actions)を追加
  • 生成物(.claude/skills/python-uv-ci-setup/SKILL.md / docs/ai/playbooks/python-uv-ci-setup.md)を sync_ai_context.py で再生成

影響範囲

  • backend
  • frontend
  • docs
  • infra
  • CI

検証

更新後の bootstrap でサンプルプロジェクトを生成し、templates.md のコードブロックをそのまま抽出して配置して実走した(uv 0.10.7 / Python 3.12.12 / import-linter 2.15 / deptry 0.25.1 / ruff 0.16.7 / mypy 2.3.1 / pytest 9.1.1)。

  • uv lockuv sync --locked --dev: exit 0
  • uv run ruff format --check . / uv run ruff check . / uv run mypy . / uv run lint-imports / uv run deptry src / uv run pytest -q: すべて exit 0(lint-imports は 2 契約 KEPT、coverage 100%)
  • domain から adapters を import するモジュールを足す → uv run lint-imports が exit 1(違反行を指す)。戻すと exit 0
  • uv run pre-commit run --all-files--hook-stage pre-push: 全フック Passed
  • actionlint で ci.yml / ai-context-sync.yml とも指摘なし
  • python3 scripts/sync_ai_context.pypython3 scripts/sync_ai_context.py --check: [OK] Generated files are up to date.

未実施: GitHub Actions runner 上での ci.yml の実走(テンプレート自身には pyproject が無いので、利用先プロジェクトの初回 PR で確認する)、Dependabot の実動作。

AI実行ログ(AIが作成した場合は必須)

  • 使用したエージェント: Claude Code
  • 使用した主な参照ドキュメント: AGENTS.md / python-uv-ci-setup Playbook / adr-management Playbook / git-commit Playbook / import-linter・deptry・uv・setup-uv・Dependabot の公式ドキュメント
  • 自動生成後に人間が確認した観点: 設計書の承認(採用ツールと採らなかった案)

チェックリスト

  • 変更理由を説明できる
  • 追加・更新したドキュメントを列挙した
  • 機密情報を含んでいない
  • 必要なテスト/検証を実施した

https://claude.ai/code/session_01BCnNRzPkgcTJ3fo7sZMemX

@shogo-hs
shogo-hs merged commit f1cf179 into main Sep 12, 2026
1 check passed
@shogo-hs
shogo-hs deleted the claude/ci-quality-gates branch September 12, 2026 10:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants