コンフォーミティゲート
Apothem のコンフォーミティゲートを実行して、エコシステムの健全性を検証します。
src/apothem/conformity/gate.py にあるコンフォーミティゲートは、15 バーの事前出力ゲート
(M1-M15)のうち機械的に判定される部分を、オペレーターが作成するすべてのアーティファクトに
対して実行します。
このページのコマンドは Apothem のチェックアウトを前提としているため、実行するコマンド
それぞれの先頭に PYTHONPATH=src を付けてください。スクリプトでインストールした後は、
PYTHONPATH=src の代わりに PYTHONPATH="$HOME/.apothem/src" を使います。
ゲートの実行
ゲートはデフォルトでは助言的です。検出事項を報告して 0 で終了するため、ローカルでの
実行があなたの作業を妨げることはありません。ブロッキングの検出事項があるときに非ゼロで
終了させるには、--strict を追加します(または APOTHEM_CONFORMITY_STRICT=1 を設定します)。
これは、CI と pre-commit が、違反している変更を失敗させるために使うモードです。
# Advisory: report every validator's findings across the repo, exit 0
PYTHONPATH=src python -m apothem.conformity.gate --all .
# Strict: exit non-zero (code 2) when a blocking finding is present
PYTHONPATH=src python -m apothem.conformity.gate --all --strict .終了コード: 0 はクリーン(または助言モード)、2 は strict モードでの検出事項によるブロック、
3 は使用法エラー(未知のフラグまたはバリデーター名、存在しないファイル、存在しない
ルートディレクトリ)です。--help は完全な使用方法を表示して 0 で終了します。すべての
スタンドアロンバリデーターは同じ --help を受け付け、未知のフラグまたはルートの欠落に対して
3 で終了します。
. のような相対ルートは、どのバリデーターも実行される前に絶対パスへ解決されるため、
--all . と --all "$PWD" は同じツリーを検査します。各バリデーターは inspected
(検査した対象の数)を報告し、--all はその数をすべての結果エントリにコピーします。何も
検査しなかったバリデーターは passed: false を報告するため、誤った作業ディレクトリでも無言の
まま合格することはありません。2 つのプランスイートバリデーターは、その例外の 1 つです。
プランスイートは gitignore 対象の .apothem/plans/ ツリーに置かれるため、これらはクリーンな
チェックアウトでは empty_scope_expected: true を報告し、それでも合格します。ワークフロー
バリデーターも、プロジェクトにまだ .github/workflows/ ディレクトリがない場合に同じ動作を
し、コミットサブジェクトバリデーターは、ルートにコミット履歴がない場合に同じ動作をします。
6 つのバリデーターは、リポジトリのルートから開始し、チェック対象のファイルをツリー全体から 探します。
agents-md-coverage-grep
agnosticism-grep
dynamism-grep
freshness-token-grep
plain-language-grep
reference-token-grepこれらは、ワークツリー、サブモジュール、入れ子のクローンなど、入れ子になった git チェック
アウトをスキップし、node_modules、venv、dist など、依存関係、仮想環境、キャッシュ、
ビルド出力を保持するディレクトリもスキップします。no-global-plans-grep の迷子プランの
チェックも、入れ子のチェックアウトで止まります。これらのいずれかの実行は、指定された
チェックアウトについてのみ報告し、それ以外については何も報告しません。src/apothem/ の下を
読む naming-grep のように、1 つの固定フォルダーを読むバリデーターは、そのフォルダーの下の
すべてを読みます。
ゲートのバー
| バー | チェック | 種別 |
|---|---|---|
| M1 | ホストプロジェクト非依存 | 推論型 |
| M2 | 編集上の開示 | 推論型 |
| M3 | 10 の品質次元 | 機械型 + 推論型 |
| M4 | 自己適用 | 推論型 |
| M5 | 権威(捏造されたアイデンティティ / エンドポイント / シークレットがない) | 機械型 |
| M6 | 専門知識の取り込み | 推論型 |
| M7 | 選択肢の注釈 | 機械型 |
| M8 | 確定性 | 機械型 |
| M9 | 視覚的レバレッジ | 機械型 + 推論型 |
| M10 | 双方向バインディング | 機械型 |
| M11 | アジャイルスプリント | 推論型 |
| M12 | フェーズ報告と正規レイアウト | 機械型 + 推論型 |
| M13 | コードクラフト | 機械型 |
| M14 | システム性 | 機械型 + 推論型 |
| M15 | 本番対応 | 機械型 + 推論型 |
対象を絞ったチェック
# List every registered validator
PYTHONPATH=src python -m apothem.conformity.gate --list
# Run one per-write validator against one file
PYTHONPATH=src python -m apothem.conformity.gate --check multi-surface-coherence src/apothem/rules/my-rule.md
# Run one standalone validator over a root directory
PYTHONPATH=src python -m apothem.conformity.gate --check naming-grep .
# Run every per-write validator against one file
PYTHONPATH=src python -m apothem.conformity.gate src/apothem/rules/my-rule.md書き込みごとのバリデーターは、チェック対象のファイルを受け取るか、--stdin で標準入力から
内容を読み取ります。どちらも指定しない場合は標準入力からの入力を待つため、ターミナルから
実行するときはファイルを渡してください。スタンドアロンバリデーターは、ルートディレクトリを
受け取ります(省略した場合はカレントディレクトリ)。--list は、各バリデーターがどちらの
グループに属するかを示します。
--hook モード(python -m apothem.conformity.gate --hook)は、ハーネスからディスパッチ
されるエントリーポイントです。標準入力からツール入力の JSON ペイロードを読み取り、保留中の
書き込みに対して、書き込みごとのマッチャーチェーンを実行します。これはデプロイされた
PreToolUse フックが呼び出す形式であり、手動で呼び出すことはほとんどありません。
フックモードは一連のディレクトリにスコープされます。マッチャーチェーンは、ターゲットが それらのいずれかの配下にある書き込みに対してのみ実行されます。どのスコープにも含まれない 書き込みは短絡され、無言で合格となります。デフォルトは次の 2 つのルートです。
~/.claude Claude Code
$CODEX_HOME Codex (~/.codex when CODEX_HOME is not set)それらを置き換えるには、APOTHEM_CONFORMITY_SCOPE にディレクトリを設定します。
# Run the per-write matcher chain against one project tree instead
export APOTHEM_CONFORMITY_SCOPE=/path/to/project何もしていないように見えるフックは、通常は失敗ではなくスコープの不一致です。まず、書き込みの ターゲットを上記のスコープと照らし合わせて確認してください。
CI 統合
.github/workflows/ci.yml の品質ジョブは、main へのプッシュ時と、main へのプルリクエストのうちそのジョブが監視するパスに触れるものに対して、ゲートを strict モード(python -m apothem.conformity.gate --all . --strict)で実行します。別のワークフロー .github/workflows/conformity.yml は、フィクスチャのスイープ(tests/conformity-scenarios/verify.py --strict)を実行します。