age について
age は、マージ前や /press 後に差分または指定パスを根拠に基づいて確認するコードレビュー用スキルです。複数の観点と重大度で指摘を整理し、推奨する修正を /cure に引き渡せます。
主な機能
- 01差分や指定パスのレビュー
- 02複数のレビュー観点を確認
- 03指摘に重大度を設定
- 04Markdown と任意の HTML レポートを生成
- 05指摘を /cure に引き渡し
活用シーン
- 01マージ前の変更確認
- 02/press 後のパスのレビュー
- 03静的な HTML レポートの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ paulnsorensen/ easy-cheese --skill ageインストール後、Claude Code で/ageを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
wedge.tomlassets/review-flow.svgreferences/commands.mddeslop-go.mddeslop-python.mddeslop-rust.mddeslop-shell.mddeslop-typescript.mddimensions.mdfan-out.mdhandoff-detail.mdpacket.mdreport-example.mdsub-agent-gate.mdvoice.md詳細
/age
マージ前、または /press の後に、差分や対象を限定したパスをレビューします。承認の判定ではなく、根拠に基づく所見をユーザーが求めている場合は、このスキルを使用してください。
フェーズ開始
python3 skills/age/scripts/age.pyz wheypoint-resolve --ref <slug> を実行します。
authoritative はレコードを使用します。その working_context は、最初にまとめて実行する tilth_read です。
not-found の場合はコールド状態で続行し、legacy の場合はそのソースと slug を表示してから続行します。
gated、ambiguous、error の場合は停止し、ペイロードを表示します。
注意喚起として示される stale-commit と grounded-path-missing の指摘を表示します。
その record.revision_id を <base> として保持します(§ ベースリビジョン)。
入力
/age [<ref-or-range>] [--scope <path>]... [--slug <slug>] [--effort quick|normal|deep] [--overall] [--full] [--safe] [--open-pr] [--auto] [--hard] [--html]
/age <slug> [--effort quick|normal|deep] [--overall] [--full] [--safe] [--open-pr] [--auto] [--hard] [--html]
レビュー対象のパスごとに --scope <path> を繰り返し指定します。
すべてのレポートに slug が必要です。
<slug> 形式から slug を取得します。
対象を限定したレビューまたは範囲指定のレビューでは、--slug <slug> から取得します。
呼び出し元からどちらも指定されない場合に限り、slugify で生成します。
パイプライン内の呼び出し元は、必ずパイプラインの slug を渡します。
--full は、重大度の低い指摘が 10 件以上ある場合に ## Low セクションを展開します。
デフォルトのレポートでは、このセクションを 1 行の要約に折りたたみます。
--safe は、修正方法の選択を再び有効にします。
--open-pr は /cure を経由して、最終段階の /plate まで引き継がれます。
新しい PR は、/plate の明示的な選択とレビュー形式に関するポリシーに従います。
フェーズ開始後、存在する場合は .cheese/press/<slug>.md を Press のコンテキストとして使用します。
現在の作業ツリーの差分をレビューします。
<ref-or-range> が指定されている場合は、その範囲をレビューします。
ユーザーがどちらも指定しない場合は、現在の作業ツリーの差分をレビューします。
ベースブランチが不明な場合は、確認するか、リポジトリで文書化されているデフォルトを使用します。
--auto は /cook --auto から引き継がれる自律モードのフラグです。
上限ルールと一連の引き継ぎについては、## Handoff と references/handoff-detail.md の § Auto mode を参照してください。
handoff_context.wiki_hits は、/cheese から任意で渡されるルーティング済みの入力です。
各ヒットには page、line、why が含まれます。
有効なヒットはすべて、レビューを改めて根拠付ける前に再利用してください。
再利用したヒットは ## Wiki context に表示します。
--hard は /cure を経由して /plate まで引き継がれます。
Age がゲートを発動することはありません。
公開前に、/plate が最終確認済みの成果物の状態を /hard-cheese に渡します。
--html は .cheese/age/<slug>.md と並べて静的 HTML コピーを出力します。
先に Markdown を書き込みます。
次に python3 skills/age/scripts/age.pyz html-report --report .cheese/age/<slug>.md --slug <slug> を実行します。
返されたパスを表示します。
HTML では、共通の HTML シェル内で指摘を重大度別にまとめます。
出力はオフラインで動作し、CDN や JS は使用しません。
ヘルパーの解決、サブエージェントのディスパッチ、GitHub 操作、引き継ぎの遷移については、../cheese/references/harness-portability.md を参照してください。
同梱またはリポジトリ内のヘルパーを優先してください。
${CLAUDE_SKILL_DIR} は、ホストから任意で提供されるフォールバックとして扱います。
スラッシュコマンドはホスト側の表示形式であり、制御モデルではありません。
以下の引き継ぎブロックが、移植可能な契約を定義しています。
レビューの労力と範囲
--effort quick|normal|deep を使用します。デフォルトは normal です。
レビュー対象全体をすべての主題に展開するには、--overall を使用します。
--full が制御するのは指摘の表示方法であり、レビュー範囲ではありません。
レビューの観点
正確性、セキュリティ、カプセル化、仕様、複雑性、不要な記述の削減、アサーション、NIH、効率性、テレメトリー、規約、抽象度、再構成をレビューします。
各指摘には blocker、high、medium、low のいずれか 1 つの重大度を割り当てます。
重大度のルールと推奨事項の形式については、references/dimensions.md を使用してください。
このワークフローでは、Git 履歴/先例の観点を省略します。
フロー
- 差分、対象範囲、関連する仕様または課題を特定します。
コンテキストのチェックリストと決定論的な計画の契約については、
references/fan-out.mdを読みます。 指示ソースを収集し、コンテキストを構築して、バンドルパスを使ってscripts/age.pyz age-routeを実行します。 割り当て、作業量、ディスパッチバッチ、機能の制限に従います。 ロックする前に共有エビデンスと計画をまとめます。別の分類エージェントは起動しないでください。 パケットはレビューエビデンスであるため、ロックの対象に含まれます。 次に、python3 skills/age/scripts/age.pyz review-lock --slug <slug>を実行して、本番ツリーをロックします。## Inputsに記載された解決済みのスラッグを使います。 本番ファイルが変更されている場合、ステップ 5 でレポートは拒否されます。 - 差分、変更されたファイル、テスト、呼び出し元/インポートからエビデンスを収集します。
python3 skills/age/scripts/age.pyz artifact-path --phase press --slug <slug>を実行して、上流レポートを解決します。python3 skills/age/scripts/age.pyz read-handoff-slug --phase press --slug <slug>を実行して、そのプリアンブルを検証します。 このコマンドが返すのはプリアンブルのフィールドだけです。 解決されたファイル自体を読み、## Review follow-upsセクションと未解決項目をすべて確認します。 未解決項目をそれぞれ## Press findingsのサブセクションにコピーします。 ステップ 5 のために、そのプリアンブルのartifactとbaselineの値を保持します。/cureが読み取るのは.cheese/age/<slug>.mdのみです。
プレスレポートがなく、cook のハンドオフがある場合は、press: skipped と記録します(## Output を参照)。
ハンドオフ時に警告を出力します。
cook の成果物もない場合は、マーカーを省略して続行します。
.cheese/glossary/<slug>.md がある場合は読み込み、命名のずれを deslop の指摘として報告します。
3. すべての観点をレビューします。
指摘のない観点は省略します。
どんなに軽微なものでも、すべての欠陥を報告します。
重要度に対する主観的な判断で指摘を除外しないでください。
検証では、照合後に指摘をフィルタリングします。
差分に記録された baseline: ブロックと一致するゲート失敗は報告しないでください。
ベースラインのルールについては、../cook/references/quality-gates.md を読みます。
新規または変更された失敗のみを報告します。
4. 各指摘の重要度を算出します(基本値+場所による加算+複合による加算、上限は blocker)。
重要度ごとに指摘をグループ化します(## Blocker → ## High → ## Medium → ## Low)。
各重要度グループ内では、ファイル順に指摘を並べます。
書き込む前に、検証と深掘り専用のギャップ調査を行うため、references/fan-out.md に従います。
5. .cheese/age/<slug>-body.md にレポート本文を書き込みます。
本文のみを書き込みます。そのファイルにハンドオフのプリアンブルを書き込まないでください。
.cheese/age/<slug>.md は自分で書き込まないでください。ゲート付きライターが作成します。
まず推奨セットを算出します(## Handoff を参照)。
そのセットが空でない場合は、<next> を cure に設定します。
そのセットが空の場合は、<next> を done に設定します。
<artifact> はステップ 2 の上流レポートのパスに設定します。上流レポートがない場合に限り、"" を使います。
<baseline> は上流ハンドオフのベースラインブロックに設定します。上流ハンドオフにベースラインがない場合に限り、--baseline を省略します。
python3 skills/age/scripts/age.pyz write-handoff-artifact --phase age [--base <base>] --slug <slug> --status ok --next <next> --artifact "<artifact>" --orientation "<one-line orientation>" --durable-flags "<none | one line per flag>" --baseline "<baseline>" --grounded <path[#start-end]> --body-file ".cheese/age/<slug>-body.md" を実行します。
パスを出力します。
このスラッグの新しいパケットのみが復旧を可能にします。遅れて届いたエビデンスについては、references/packet.md § Late evidence に従います。
それ以外の変更には、新たなレビューが必要です。
6. ハンドオフします(以下の ## Handoff を参照)。
サブエージェントの並列実行
/age は、コンテキストに応じた age ルーター(src/easy_cheese/shared/fanout/age_route.py)を使用して、独立したレビュー対象を計画します。
仕組みについては、references/fan-out.md、references/packet.md、references/sub-agent-gate.md を参照してください。
各ソースコードバックエンドは、共通の code-intelligence-routing.md 契約を通じて呼び出してください。
出力
分野横断的なスタイルと引用形式については、../cheese/references/formatting.md を使用してください。
このセクションでは、指摘事項のレポート形式を定義します。
formatting.md では、文体のルールと脚注の基本形を定義します。
ゲート付きライターは .cheese/age/<slug>.md に書き込みます。
最小限の引き継ぎ用スラッグを先頭に配置します。
スラッグには status、next、artifact、durable_flags、baseline、および1行の概要を含めます。
各値はステップ5のコマンドで指定してください。
以下の本文は前置きなしで .cheese/age/<slug>-body.md に書き込みます。
セクションの順序、正確な指摘形式、完全なひな形は references/report-example.md § Body order で定義されています。本文を書く前に確認してください。
指摘ごとの confidence: には voice-kernel の尺度を使用してください(references/voice.md § Reasoning posture を参照)。
差分、コードの読み取り、コマンド出力から直接得られた証拠には certain を使用します。
間接的なシグナルからの推論には speculating を使用します。
don't know の評価を指摘行として出力しないでください。
不足している証拠を集めるか、その主張を削除してください。
don't know はレポート全体の ## Confidence 行にのみ使用します。
ユーザーが --full を指定した場合に限り、抑制された低重要度の項目を修正選択テーブルに追加します。
レビューが完了したら、status: ok を設定します。
証拠に到達できずレビューを続行できない場合は、status: halt: <reason> を設定します。
引き継ぎ契約に従ってください。
## Handoff が算出する推奨セットから next を導出します。
next の内容にかかわらず、すべての指摘をレポートに残します。
cook のゲートと同様に、デフォルトでは durable_flags: を none に設定します。
計画またはホストによって対象範囲が制限されている場合、規模だけに関する警告ではなく、実際の制限を durable_flags と ## Confidence に記録します。
本文の ## Agent resolution に、解決されたワーカーの種類を記録します。
すべてのトポロジーについて、ディスパッチのメタデータを記録します。report-example.md のフィールドを使用してください。
書き込む前に、提供されたディスパッチ観測情報を scripts/age.pyz review-plan-check で確認してください。観測情報がない場合は、未観測であることを明示します。
Age report: .cheese/age/<slug>.md を出力します。
press: skipped が設定されている場合は、次の警告を出力します。
Warning: no .cheese/press/<slug>.md. Re-run /cook or /press <slug>, or continue with /cure.
ユーザーが --html を指定した場合は、html-report が返す HTML パスを出力します。
レンダリングコマンドは ## Inputs の --html の下に記載されています。
引き継ぎ
パイプライン: culture → mold → cook (⇄ press) → [age] → cure → plate
推奨セットを計算します。 all-medium, cheap の複合条件を使用します。
medium の下限(blocker+high+medium)を含めます。
さらに、fix-cost-now: contained の Low をすべて含めます。
対応するか、確認するかを判断します。
この選択が唯一の選択です。## Output はここから next を導き出します。
contained の Low があり、medium の指摘がないレビューでは、セットは空ではありません。
そのレビューでは next: cure とし、すべての Low の指摘をレポートに残します。
- 空のセット —
next: doneを設定します。レポートのパスを出力します。終了します。 - 確認する理由がある場合 — セットのメンバーに
fix-cost-now: sprawlingまたはfix-cost-later: structuralがある場合は確認します。 また、2つの指摘が互いに矛盾する場合も確認します。 ユーザーが--safeを渡した場合も確認します。 先にreferences/handoff-detail.mdを読みます。../cheese/references/handoff-gate.mdに従ってゲートを表示します。 複合条件を事前選択します。各 heavy 行に印を付けます。 - それ以外 — 対応します。選択内容を伝えます。
references/handoff-detail.md§ Dispatch に従って/cureをディスパッチします。ゲートは表示しません。
--auto は、重要度の下限に基づく選択と専用のチェーンに置き換えます。
--auto を実行する前に、references/handoff-detail.md § Auto mode を読みます。
このファイルでは、/cook の fan 経路におけるチェーンなしの上書きも定義されています。
ルール
レビューは判定ではありません。
どこを、なぜ確認するべきかを説明します。
本番ファイルは編集しません。
ステップ1のレビュー用ロックによって、このルールが適用されます。
各修正は /cure が適用します。
記録された baseline: ブロックと一致するゲート失敗については、指摘を挙げないでください。
基本方針として対応します。
推奨セットを自動選択します。
ゲートを設けずに /cure をディスパッチします。
正当な理由がある場合、または --safe が有効な場合に限り、先に確認します。
推奨セットが空の場合は、質問ではなくクリーンな終了として扱います。
根拠を捏造しないでください。
ファイル、差分、コマンド、またはソースが利用できない旨の注記を引用します。
差分に問題がなければ、問題ないと判断します。
ディメンションが空であることは有効な結果であり、埋めるべき不足ではありません。
レポートと各指摘では、確信度を定性的に示します(certain | speculating | don't know)。
数値スコアは使用しません。
各指摘に場所と推奨事項を記載します。
references/report-example.md に従って recommendation: と、任意の invariants: を記載します。
JSON のサイドカーや、タグに紐づけた修正ペイロードは追加しないでください。
/cure は Markdown を直接読み取ります。
references/voice.md(出力規律、推論の姿勢、確信度の語彙)を適用します。
参考資料
- 生成されたコマンド一覧を
references/commands.mdで確認します。 - 指摘を評価する前に
references/dimensions.mdを読みます。 - 各レビューの前に
references/fan-out.mdを読みます。 - fan-out のコンテキストパケットを組み立てる前に
references/packet.mdを読みます。 - サブエージェントをディスパッチする前に
references/sub-agent-gate.mdを読みます。 - 選択ゲートまたは
/cureのディスパッチの前にreferences/handoff-detail.mdを読みます。 - レポート本文を記述する前に、
references/report-example.md§ Body order を読みます。 - 根拠を収集する前に、
references/packet.md§ Evidence tools and fallbacks を読みます。 --autoを実行する前に、references/handoff-detail.md§ Auto mode を読みます。- レポートを記述する前に
references/voice.mdを読みます。 deslopを評価する前に、該当する Rust、TypeScript、Python、Shell、または Go のカタログを読みます。
エージェントの解決
すべての担当者の作業と新しいコンテキストでのレビューは、../cheese/references/agent-resolution.md を通じて解決します。
| 作業 | 優先するタイプ | 権限/分離 | 最低限の能力 | 労力 | フォールバック |
|---|---|---|---|---|---|
| 差分または割り当てられた対象のレビュー | reviewer | 読み取り専用、新しいコンテキスト | 高性能 | 高 | 互換性のある reviewer、その後 general |
ルーターは各割り当ての effort を low、medium、または high に設定します。
計画の quick、normal、または deep のレビュー モードではなく、その割り当て値をワーカーに渡してください。
レポート本文には、## Agent resolution の下に共有の agent_resolution ブロックを含めます。