Skip to content
Apothem
使い方

コンフォーミティゲート

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編集上の開示推論型
M310 の品質次元機械型 + 推論型
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)を実行します。

On this page