constitution-checker

drillan's avatarfrom drillan

プロジェクト憲法への準拠を検証します。実装完了時やPR作成時に全Articleをチェックし、違反がないことを確認します。

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 3, 2026⬇️1downloads

When & Why to Use This Skill

The Constitution Checker is a robust Claude skill designed to automate project governance by enforcing a 'Project Constitution.' It ensures that every code contribution adheres to strict, non-negotiable principles such as Test-First development, DRY (Don't Repeat Yourself), and mandatory type safety. By integrating static analysis tools like ruff and mypy with custom heuristic checks, it acts as an automated quality gate for PRs and implementations, significantly reducing technical debt and maintaining high architectural standards.

Use Cases

  • Pre-Pull Request Validation: Automatically scan code changes against the project's core principles to ensure 100% compliance before a PR is even opened.
  • TDD Enforcement: Verify that test files exist for every implementation and that the development workflow followed a 'Test-First' imperative.
  • Automated Quality Guardrails: Execute and report on ruff, mypy, and pytest results alongside custom checks for magic numbers, hardcoded strings, and naming conventions.
  • Consistency Auditing: Use the skill during code reviews to identify violations of the DRY principle or deviations from the SpecKit naming standards across large codebases.
  • Compliance Reporting: Generate structured 'Constitution Compliance Reports' that clearly distinguish between critical failures and recommended improvements for developers.
nameconstitution-checker
descriptionプロジェクト憲法への準拠を検証します。実装完了時やPR作成時に全Articleをチェックし、違反がないことを確認します。
allowed-toolsRead Glob Grep Bash

Constitution Checker スキル

このスキルは、.specify/memory/constitution.md で定義されたプロジェクト憲法への準拠を検証します。

起動条件

以下の状況で起動します:

  1. 実装完了時: 機能実装が完了し、コミット前にチェックが必要な場合
  2. PR作成前: プルリクエストを作成する前の最終チェック
  3. コードレビュー時: 他者のコードをレビューする際
  4. 明示的な依頼: ユーザーが憲法準拠チェックを依頼した場合

チェック項目

非交渉的原則(例外なし)

Article 1: Test-First Imperative

  • テストファイルが実装ファイルより先に作成されているか
  • テストファイルと実装ファイルが1:1で対応しているか
  • テストが失敗状態(Red)から開始されているか
# テストファイルの存在確認
uv run pytest --collect-only

Article 5: Code Quality Standards

  • ruff check がエラーなしで通過するか
  • ruff format で差分が発生しないか
  • mypy がエラーなしで通過するか
# 品質チェックの実行
uv run ruff check .
uv run ruff format --check .
uv run mypy .

Article 6: Data Accuracy Mandate

  • マジックナンバーが直接埋め込まれていないか
  • ハードコードされた文字列がないか
  • 暗黙的なフォールバック(= "default" 等)がないか
# ハードコード検出(ヒューリスティック)
grep -rn "= 30\|= 60\|= 100" --include="*.py" src/
grep -rn '= "default"\|= "none"' --include="*.py" src/

Article 7: DRY Principle

  • 同一ロジックが複数箇所に存在しないか
  • 類似コードが3回以上繰り返されていないか

Article 9: Python Type Safety Mandate

  • すべての関数に型アノテーションがあるか
  • 戻り値に型アノテーションがあるか
  • Any 型の使用が最小限か
# 型アノテーションなし関数の検出
grep -rn "def .*(" --include="*.py" src/ | grep -v ":"

Article 11: SpecKit Naming Convention

  • ディレクトリ名が <3桁番号>-<name> 形式か
  • ブランチ名が同一の命名規則に従っているか

推奨チェック項目

Article 2: Documentation Integrity

  • 実装が仕様と一致しているか
  • ドキュメントが最新の状態か

Article 3: MCP Protocol Compliance

  • MCPツールにスキーマ定義があるか
  • 入力がPydanticモデルで検証されているか
  • エラーレスポンスが適切な形式か

Article 10: Python Docstring Standards

  • 公開関数にdocstringがあるか
  • Google-style形式を使用しているか

実行プロセス

1. 自動チェック実行

# 全品質チェック
uv run ruff check --fix . && uv run ruff format . && uv run mypy .

# テスト実行
uv run pytest

2. 手動チェック項目の確認

自動化できない項目を目視確認:

  • コードの重複
  • 仕様との整合性
  • 適切な抽象化

3. レポート生成

チェック結果を以下の形式で報告:

## Constitution Compliance Report

### 非交渉的原則
- [✓] Article 1: Test-First Imperative
- [✓] Article 5: Code Quality Standards
- [✓] Article 6: Data Accuracy Mandate
- [✓] Article 7: DRY Principle
- [✓] Article 9: Python Type Safety Mandate
- [✓] Article 11: SpecKit Naming Convention

### 推奨項目
- [✓] Article 2: Documentation Integrity
- [✓] Article 3: MCP Protocol Compliance
- [✓] Article 10: Python Docstring Standards

### 総合判定: PASS / FAIL

違反検出時の対応

  1. 作業を停止: 違反が解消されるまで次工程に進まない
  2. 違反内容を報告: 具体的な違反箇所と修正方法を提示
  3. 修正を支援: 必要に応じて修正コードを提案
  4. 再チェック: 修正後に再度チェックを実行

注意事項

  • 非交渉的原則(Article 1, 5, 6, 7, 9, 11)は例外なく遵守が必要
  • 時間制約、緊急性を理由とした例外は認められない
  • すべてのチェック項目がPASSするまでコミット・PRは行わない