既存stepの仕事を具体化する
stepのsystem promptへMarkdownを追加し、そのstepが守る局所的な規律を増やします。
- 「実装時にこのAPIを使う」
- 「code-reviewでこの観点を必ず見る」
- 追加の判定・iteration budgetは不要
既存stepへ規律を足す方法と、独立したreview lensを追加する方法を、選択・定義・運用の順に説明します。
まずRulesで足りるかを確認します。Rulesは追加セッションを使いません。独立した合否判定と修正ループが必要な場合だけCustom reviewerにします。どちらも信頼できるrepository内の定義として管理し、最終判断はPull Requestで人間が行います。
stepのsystem promptへMarkdownを追加し、そのstepが守る局所的な規律を増やします。
目的・観点・判定基準を持つreviewerを追加し、固有の合否判定とcode-fixerループを動かします。
| 必要なこと | 選択 | 理由 |
|---|---|---|
| 既存stepへ禁止事項や作法を加える | Rules | 同じセッション内で完結 |
| 独立した承認・差し戻しが必要 | Reviewer | 専用のfindingsと収束ループを持つ |
| stepの順序や構成を変える | コード変更 | Pipeline shapeはregistryの責務 |
rules newはstep名を検証し、同じdirectoryの最大番号に1を足したMarkdownを生成します。実行時は数値prefixの昇順で読み込まれ、prefixなしのfileは末尾です。
npx specrunner rules new code-review no-unverified-auth-claim
# => specrunner/rules/code-review/01-no-unverified-auth-claim.md## やめてほしいこと
認証・認可の保証を、実装とtestの根拠なしに承認しない。
## こうしてほしいこと
境界条件と拒否経路を確認し、根拠のfile:lineをfindingへ含める。
## 例外
文言だけの変更で認証境界に触れない場合。agent sessionを持つ11 stepのみ指定できます。verificationとpr-createは対象外です。
生成される3見出しは推奨であり必須ではありません。CLIは本文の構造を解釈しません。
後ろのruleほどprompt末尾に近くなります。重要な規律を後段へ置く方針がscaffoldに示されています。
指定できるstep: request-review、design、spec-review、spec-fixer、test-case-gen、implementer、build-fixer、code-review、code-fixer、conformance、adr-gen
定義fileはfilename順で読み込まれます。nameはfilenameのstemと一致させ、目的・観点・判定基準を空にしないでください。
npx specrunner reviewers new security-boundary
# => specrunner/reviewers/security-boundary.md---
name: security-boundary
maxIterations: 2
model: claude-sonnet-4-6
paths:
- src/auth/**
- src/core/credentials/**
requestTypes:
- new-feature
- bug-fix
---
## 目的
認証情報と権限境界の退行を防ぐ。
## 観点
入力の信頼境界、credentialの保存先、拒否経路、testの根拠を確認する。
## 判定基準
境界違反または検証不能な保証があればneeds-fix。根拠をfile:lineで示す。| field / section | contract |
|---|---|
name | 小文字英数字で開始し、以降は小文字英数字・-・_。filenameと一致し、built-in step名と衝突しない |
maxIterations | 1〜10の整数。reviewerが収束しない場合の上限 |
model | 任意。省略時はclaude-sonnet-4-6 |
paths / requestTypes | 任意。指定する場合は空でない文字列配列 |
目的 / 観点 / 判定基準 | 3見出しすべて必須で、本文も必要 |
検証はjob開始前にまとめて行われます。 専用のreviewers validateコマンドはありません。runまたはjob startが全定義を読み込み、違反をまとめて表示し、state作成前に停止します。
条件はLLMではなくCLIが決定的に評価します。pathsはchanged fileのいずれか、requestTypesはrequest.mdのtypeと照合します。
| paths | requestTypes | 結果 |
|---|---|---|
| なし | なし | すべてのjobで実行 |
| match | なし | 実行 |
| なし | match | 実行 |
| match | match | 実行。両方ある場合はAND |
| no match | match | skip |
| 判定不能 | matchまたはなし | 実行。pathを検証できないときはfail-closed |
pathsはrepository相対pathのfull matchです。**、*、?を使用できます。
built-in reviewを実行
有効なreviewerを並列実行
必要なfindingを修正し再評価
修正済みfindingの再発を検査
Custom reviewerはlocal runtimeで使用します。 現在のmanaged runtimeではcustom reviewerのagent IDを解決できず、並列custom reviewerも未対応です。定義を追加するjobはlocal runtimeで実行してください。
既存stepの不足なら、追加sessionを持たないRulesで効果を確認します。
pathsとrequestTypesを狭くし、maxIterationsは2〜3から始めます。
local runtimeでnpx specrunner run <slug>を実行し、activationとfindingsを確認します。
npx specrunner job statsで追加session、iteration、時間を確認します。
自動reviewの承認をmerge判断に置き換えず、差分と判定根拠を確認します。
src/core/command/rules-new.tsRules scaffoldsrc/core/step/rules-resolve.tsRulesの読込順src/core/command/reviewers-new.tsReviewer scaffoldsrc/core/reviewers/validate.tsReviewer定義の検証src/core/reviewers/activation.tsActivation判定src/core/pipeline/compose-reviewers.tsPipelineへの組み込みsrc/core/pipeline/parallel-review-round.ts並列review round