agentsclimarketplace

Spec leader

Skill gassn/my-workflows/skills/spec-leader

承認済み Spec ファイルを起点に、Isolate → Plan → Implement → Verify → Code Review → ship の 6 ステージ遷移を制御する skill。本ワークフロー (docs/workflow.md) の Spec Review 以降を担当します。 spec-review skill が verdict: pass を返した直後に自動起動します。 加えて「Isolate 開始して」「spec-leader 起動」「<spec-name> の実装を始めて」 等の明示フレーズでも起動します。 Phase 3 では main agent 内で単独動作可能に実装し、Phase 5 で追加する orchestrator から呼ばれる前提のインタフェース (入力: spec.md パス、 出力: progress / result ファイルパス) を確定済みのため、Phase 5 で本 skill の 改修は不要です。 ship ステージの実行はユーザー最終承認後に限定します。失敗時は全停止して ユーザーに相談します。From its SKILL.md

Install
npx -y skills add gassn/my-workflows --skill spec-leader

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

40.0 KB, ~13.8k tokens by cl100k_base, as published. Nobody here has run it

Spec Leader Skill

承認済み Spec ファイルを入力として、Isolate → Plan → Implement → Verify → Code Review → ship の 6 ステージ遷移を制御する skill です。本プロジェクトのワークフロー (docs/workflow.md) における Spec Review 後〜ship までの一連のステージを担当します。

用語: 「Project Phase」「Workflow Stage (ステージ)」「Release Phase」「Spec」の定義は docs/glossary.md を参照してください。

1. 役割と位置づけ

ワークフロー上の位置:

... → writing-spec → spec-review → (pass) → writing-plan (main 側) → [spec-leader (本 skill)] → Learn
                                                                        │
                                                                        ├─ Isolate (worktree 作成 + Spec/Plan コピー)
                                                                        ├─ Implement (developer + tdd-driver)
                                                                        ├─ Verify (verifier + verification-before-completion)
                                                                        ├─ Code Review (code-reviewer + security-reviewer + cross-model-reviewer)
                                                                        └─ ship (ユーザー承認後、main merge + worktree 削除 + Plan archive)

Plan は spec-leader の前 (main 側で writing-plan が実行) です。Phase 5 並列化時に他 Spec の Plan (specs/*.plan.md) を参照可能にするための構造 (2026-04-22 改修)。

本 skill は ステージ遷移制御 に専念します。各ステージ内部の具体的処理は下位 skill / agent に委譲します。本 skill の価値は下記 3 点です。

  1. 単独動作可能: orchestrator 不在の Phase 3 でも、ユーザーが手動起動すれば spec.md からの一連の流れを完走できる
  2. Phase 5 改修不要インタフェース: 入力 = spec.md パス / 出力 = progress + result ファイルパス、の契約を固定。Phase 5 で orchestrator が本 skill を呼ぶ際、改修は不要
  3. 進捗の可視化と再現性: 各ステージの開始・完了・失敗を progress ファイルに機械可読形式で記録、中断・再開時の状態を一意に特定可能

2. 起動トリガー

2.1 自動起動 (第一トリガー)

spec-review skill が verdict pass を返した直後、本 skill を自動起動 します。

  • 入力: specs/<spec-name>.md (status: spec-complete)
  • 前提: specs/<spec-name>.review.md の verdict が pass

spec-review §9.2 で「spec-leader 実装後に自動起動」とされていた TODO は、本 skill 実装によって解消されます。spec-review 側の改修は必要ありません (本 skill が存在すれば自動呼び出し)。

2.2 明示フレーズ起動 (第二トリガー)

以下の発話で起動してください。

  • 「Isolate 開始して」「worktree 作って <spec-name> の実装始めて」
  • 「spec-leader 起動」「<spec-name> のステージ遷移開始」
  • <spec-name> 実装フェーズへ」

2.3 Phase 5 での起動経路

Phase 5 では orchestrator skill が本 skill を呼び出します。orchestrator は複数 Spec を並列処理する際、各 Spec について本 skill を起動します。本 skill 側は「誰に呼ばれたか」を意識する必要はありません (入力 spec.md パスが与えられれば同一の動作)。

3. 前提条件の確認

skill 起動直後、以下を必ず確認してください。

  • 入力 Spec ファイル (specs/<spec-name>.md) の存在
  • frontmatter status: spec-complete
  • specs/<spec-name>.review.md の存在と verdict が pass
  • specs/<spec-name>.plan.md の存在と frontmatter status: plan-complete or plan-revised (2026-04-22 改修: Plan が本 skill の前提条件に昇格)
  • プロジェクトルートが git リポジトリであること (git rev-parse --is-inside-work-tree)
  • 対応する worktree (worktrees/<spec-name>/) が未作成であること (再開時は §14 参照)

前提条件を満たさない場合の対応:

状況対応
Spec ファイル未存在「対象 Spec が見つかりません」と返して終了
status が spec-complete でない現在の status を表示、writing-spec または spec-review への差戻しを提案
review.md が存在しない「Spec Review が未実施です。spec-review を先に起動してください」と返して終了
review.md の verdict が pass でない「verdict が <verdict> です。writing-spec レビュー指摘対応モードで修正してください」と返して終了
Plan ファイル未存在「Plan が未作成です。先に writing-plan skill で specs/<spec-name>.plan.md を生成してください」と返して終了 (verdict: precondition-failed、precondition_violation: plan_missing)
Plan status が plan-complete / plan-revised でない現在の status (plan-writing / plan-draft 等) を表示、writing-plan の継続を促す
git リポジトリでない「worktree は git リポジトリ内でのみ動作します」と返して終了
worktree が既に存在「再開モード」として §14 の手順を実行

3.1 前提条件違反時の result.json 生成 (2026-04-22 iter-1 改修)

上記のいずれかで早期停止する場合、Phase 5 orchestrator が「なぜ処理されなかったか」を機械可読で取得できるよう、停止時点で specs/<spec-name>.result.json を以下で生成してください。

{
  "spec": "<spec-name>",
  "verdict": "precondition-failed",
  "started_at": "<skill 起動時刻>",
  "ended_at": "<停止時刻>",
  "final_commit": null,
  "stages_completed": [],
  "stages_failed": [],
  "stages_blocked": [],
  "user_action_required": "<解消手順、上の対応列と同等の文言>",
  "precondition_violation": "<違反した前提条件の識別子、例: 'review_verdict_not_pass'>",
  "notes": "前提条件違反で処理未開始"
}
  • progress.json は生成しない (処理が始まっていない = 進捗がないため)
  • worktree / progress.md も生成しない
  • result.json は再開モード / 次回起動判定のシグナルとしても利用される

これにより、orchestrator は result.json のみで「この Spec は次サイクルで何をすれば開始可能になるか」を判定できます。

4. インタフェース定義 (Phase 5 改修不要の契約)

Phase 3 時点で orchestrator 連携用インタフェースを固定します。Phase 5 で orchestrator を実装する際、本 skill の改修を不要とするための契約です。

4.1 入力

項目説明
spec_pathstring (相対パス)specs/<spec-name>.md
options (任意)object実行オプション ({"skip_ship": true} 等)

4.2 出力

項目説明
progress_pathstringspecs/<spec-name>.progress.json
progress_md_pathstringworktrees/<spec-name>/progress.md (Isolate 完了後に生成)
result_pathstringspecs/<spec-name>.result.json (終了時に生成、shipped / aborted / paused)

4.3 状態遷移の原則

  • 各ステージは pending → in_progress → (completed | failed | blocked) の 4 状態
  • ステージ完了時に progress ファイルを更新 (原子的に書き込み、中断時は前回状態が残る)
  • 失敗時は failed / 下位 skill 未実装時は blocked / 中断時は状態維持 (in_progress)

4.4 Phase 5 での呼び出し方法

orchestrator 側は本 skill を以下のように呼び出す想定です (本 skill は変更不要)。

spec-leader skill を起動 (入力: spec_path, options)
  → progress_path を監視 (poll or watch)
  → result_path の生成を待つ
  → 結果を集約して次 Spec へ進む

5. ステージ遷移の全体フロー

本 skill は 5 ステージ (Isolate / Implement / Verify / Code Review / ship) を制御します。Plan ステージは本 skill の前に main agent + writing-plan skill で実行済 の前提 (2026-04-22 改修、Phase 5 並列化準備)。

[Plan 完了済] → [本 skill 起動] → Isolate → Implement → Verify → Code Review → (ユーザー承認) → ship → [終了]
                                     │         │           │            │                          │
                                     └─────────┴───────────┴────────────┴──────── 失敗時 ────────→ [停止 + ユーザー相談]

5.1 Phase 3 時点の自動遷移範囲

  • Isolate → Implement → Verify → Code Review まで自動遷移
  • Code Review 完了 → ship はユーザー承認を必須 (Q5 確定)
  • ship 完了後、Learn ステージは main agent + ユーザーの領域のため本 skill は起動せず、結果ファイルの生成と「Learn を実施してください」の提案に留める

5.1.1 複数 Spec の DAG 順起動 (2026-04-22 改修)

specs/dag.md は単一 / 複数 Spec にかかわらず常に存在 (spec-dag-builder が 1 ノード DAG も生成) します。本 skill は writing-plan skill から 1 Spec 単位で起動される想定で、本 skill 自体は 1 Spec を処理 します。

複数 Spec を扱う場合の起動制御は以下:

  • Phase 3: writing-plan が DAG の parallel_group 順に 1 Spec ずつ Plan 生成 → 各 Plan 完了後に spec-leader を順次起動 (writing-plan SKILL.md §8.2 準拠)。本 skill は単純に呼ばれた Spec を処理するだけで、DAG を意識する必要はない
  • Phase 5: orchestrator skill が DAG の parallel_group 内で複数 spec-leader を並列起動。本 skill のインタフェース (入力: spec_path / 出力: progress.json + result.json) は変更不要で、orchestrator が他 Spec の result.json を監視して依存解決

本 skill の責務はあくまで 1 Spec の Isolate〜ship 遷移制御です。DAG 解析や複数 Spec 協調は writing-plan / orchestrator の責務となります。

5.2 進捗ファイルの更新タイミング

タイミング更新内容
skill 起動時progress.json / progress.md を初期化 (すべてのステージを pending)、updated_at を設定
ステージ開始時前ステージの status が completed / failed / blocked のいずれかで確定している ことを検証した上で、current_stage を当該ステージ、stages.<stage>.statusin_progress に、started_at を記録、updated_at を更新
ステージ完了時stages.<stage>.statuscompletedcompleted_atoutputs を記録、updated_at を更新
ステージ失敗時stages.<stage>.statusfailederror を記録、updated_at を更新、全停止
下位 skill 未実装時stages.<stage>.statusblockedmissing_skill を記録、updated_at を更新、全停止
iteration ループ時 (2026-04-20 tmux-dashboard-mvp learn §5.3)receiving-code-review → Implement 再 → Verify 再 → Code Review 再 の各再ステージ 開始時 / 完了時にも main 側 progress.json を更新stages.<stage>.outputs.iteration_N に各 iteration の started_at / completed_at / 結果サマリを追記。frontmatter の review_iteration も合わせて更新
skill 終了時result.json を生成 (§7 整合性チェックを通過後のみ)

5.2.1 更新契約の強化 (2026-04-22 iter-3 改修)

iter-3 統合テストで progress.json の plan.status: in_progress が未更新のまま result.json が verdict: shipped となる不整合が発生しました。再発防止のため以下を必須化:

  1. atomic write: progress.json の書き換えは <path>.tmp に全文書き込み → rename で置換。部分書き込み状態を中断で生じさせない
  2. ステージ遷移時の二段検証: 次ステージ開始前に「前ステージの status が pending のままでないこと」「前ステージの started_at が記録済であれば completed_at または failed_at / エラー記録が揃っていること」を検証。検証失敗時は progress の破損として停止 + ユーザー相談
  3. updated_at の厳守: いかなる更新でも updated_at の更新を忘れない。古い updated_at のまま次操作を行うと stalled とみなされる
  4. ステージ飛ばし禁止: pendingin_progress を経由せず直接 completed にしない。また blocked / failed のステージがあるまま後続を開始しない
  5. iteration トレーサビリティの厳守 (2026-04-20 tmux-dashboard-mvp learn §5.3): receiving-code-review による再 Implement → 再 Verify → 再 Code Review ループ中も main 側 progress.json を更新し続ける。iteration 番号は frontmatter review_iteration に記録し、各再ステージの実施記録は stages.<stage>.outputs.iteration_N (N=1, 2, ...) として追記する。iteration 完了時に stages.<stage>.completed_at を最新 iteration の終了時刻で更新する。これを怠ると、ship 直前にユーザー / orchestrator が古い状態 (iteration 1 時点) を見て「ステージが止まっている」と誤認する事故が起こる (tmux-dashboard-mvp サイクルで実際に発生)

6. 進捗ファイル仕様

6.1 progress.json (機械可読、main 側)

パス: specs/<spec-name>.progress.json

{
  "spec": "<spec-name>",
  "spec_path": "specs/<spec-name>.md",
  "review_path": "specs/<spec-name>.review.md",
  "plan_path": "specs/<spec-name>.plan.md",
  "started_at": "2026-04-20T22:30:00Z",
  "updated_at": "2026-04-20T22:45:00Z",
  "current_stage": "isolate",
  "stages": {
    "isolate": {
      "status": "in_progress",
      "started_at": "2026-04-20T22:30:00Z",
      "completed_at": null,
      "outputs": null
    },
    "implement": {"status": "pending", "started_at": null, "completed_at": null, "outputs": null},
    "verify": {"status": "pending", "started_at": null, "completed_at": null, "outputs": null},
    "code_review": {"status": "pending", "started_at": null, "completed_at": null, "outputs": null},
    "ship": {"status": "pending", "started_at": null, "completed_at": null, "outputs": null}
  }
}

Plan は main 側で事前に完了している前提のため、stages には含めません。plan_path を frontmatter 相当のメタとして記録し、Isolate ステージで worktree にコピーします。

6.2 progress.md (人間可読、worktree 内)

パス: worktrees/<spec-name>/progress.md (Isolate 完了後に生成)

---
spec: <spec-name>
started: 2026-04-20T22:30:00Z
updated: 2026-04-20T22:45:00Z
current_stage: plan
---

# Progress: <spec-name>

## Stages

- [x] **Isolate** (2026-04-20T22:30:00Z → 22:30:15Z)
  - worktree: `worktrees/<spec-name>/`
  - branch: `spec/<spec-name>`
  - Spec / Plan / Review を worktree 内にコピー済
- [ ] **Implement** (進行中)
- [ ] **Verify**
- [ ] **Code Review**
- [ ] **ship** (ユーザー承認後)

(※ Plan ステージは本 skill の前に main 側で完了済、stages に含めない)

## ログ

2026-04-20T22:30:00Z [isolate] worktree 作成開始
2026-04-20T22:30:15Z [isolate] 完了 (branch: spec/<spec-name>)
2026-04-20T22:30:20Z [plan] writing-plan 起動
...

7. 結果ファイル仕様

パス: specs/<spec-name>.result.json (終了時に生成)

{
  "spec": "<spec-name>",
  "verdict": "shipped | shipped-manual | aborted | aborted-on-resume | paused | precondition-failed",
  "started_at": "2026-04-20T22:30:00Z",
  "ended_at": "2026-04-20T23:45:00Z",
  "final_commit": "abc123def...",
  "stages_completed": ["isolate", "plan", "implement", "verify", "code_review", "ship"],
  "stages_failed": [],
  "stages_blocked": [],
  "user_action_required": null,
  "integrity_warnings": [],
  "notes": "全ステージ正常完了、main にマージ済"
}

7.1 verdict 種別

verdict意味条件
shipped正常完了 (全ステージ機械的に整合)ship ステージ成功 + 整合性チェック pass + cross-model-reviewer 実施済 (verdict: pass)
shipped-manual正常完了だが手動介入あり (2026-04-22 新設、iter-3 知見)ship ステージ成功 + 整合性チェックで警告あり、integrity_warnings に記録
shipped-cross-model-pending正常完了だが cross-model-reviewer が PENDING のまま (2026-04-22 新設、iter-4 知見)ship ステージ成功 + code / security reviewer は pass + cross-model は PENDING placeholder (Phase 3 手動依頼運用)。将来外部モデル呼び出し実装後は区別可能に
aborted失敗で終了どこかのステージで failedstages_failed に記録
aborted-on-resume再開モードで中止選択 (2026-04-22 新設、iter-2 知見)§14 再開モードで「中止」ユーザー選択
paused下位 skill 未実装で停止ステージが blockedstages_blocked / user_action_required に指示
precondition-failed前提条件違反で停止 (2026-04-22 新設、iter-1 知見)§3 前提条件チェックで NG、user_action_required に修正手順

7.2 integrity_warnings (2026-04-22 iter-3 改修)

result.json 生成時に progress.json との整合性チェックを行い、不一致があれば integrity_warnings 配列に記録します。verdict は手動介入を含む派生値 (shipped-manual) に切り替え、隠蔽を防ぎます。

整合性チェック項目

  • stages_completed の各要素について、progress.json stages.<name>.status == "completed" であること
  • stages_failed / stages_blocked の各要素について、progress.json と status が一致すること
  • started_at / ended_at のタイムスタンプが progress.json の最古 started_at / 最新 updated_at と整合すること
  • progress.json に in_progress のまま残っているステージがないこと (handoff 漏れの検出)

警告の記録形式

"integrity_warnings": [
  {
    "kind": "stage_status_mismatch",
    "stage": "plan",
    "progress_status": "in_progress",
    "result_declared": "completed",
    "note": "手動介入で completed 扱いに補完された可能性"
  }
]

影響

  • 警告がある場合、verdict が shippedshipped-manual に自動切替
  • learn skill が integrity_warnings を受けて Try 提案として具体化 (spec-leader の progress 更新漏れとして)
  • orchestrator (Phase 5) は shipped-manual を手動介入の必要があった Spec として分類、類似ケースの再発時に早期警告

8. Isolate ステージ

目的: Plan が確定した Spec について git worktree を作成し、main 側の Spec / Plan / Review ファイルを worktree 内にコピーして実装の作業環境を整える (2026-04-22 改修)。

8.1 処理手順

  1. worktrees/ ディレクトリが存在しなければ作成
  2. git worktree add worktrees/<spec-name> -b spec/<spec-name> 実行 (新規ブランチで worktree 作成)
  3. main 側の 3 ファイルを worktree 内にコピー (cp のみ使用、mv は厳禁、2026-04-22 iter-5 改修):
    • specs/<spec-name>.mdcpworktrees/<spec-name>/specs/<spec-name>.md
    • specs/<spec-name>.plan.mdcpworktrees/<spec-name>/plans/<spec-name>.md へ (worktree 側では従来通り plans/ サブディレクトリ命名)
    • specs/<spec-name>.review.mdcpworktrees/<spec-name>/specs/<spec-name>.review.md へ (参考情報)
    • git mv や shell の mv は使わない: worktree は master と同一 git 空間のため、rename 操作が commit に乗ると master 側ファイルが merge で消失する (iter-5 で実測された事故)
  4. references_other_plans の処理 (2026-04-24 Phase 6 バッチ 2 (c) learn Try 6.1 改修、依存 Spec がある場合のみ実行): specs/<spec-name>.plan.md の frontmatter から references_other_plans を読み、各エントリに対して以下を実行:
    • 対象は specs/archive/<ref-spec>.plan.md (ship 済の先行 Spec Plan、本 skill は depends_on 違反時は §3 前提条件で既に停止している前提)
    • cp のみ使用 (mv は厳禁、理由は 3 と同じ) で worktrees/<spec-name>/plans/<ref-spec>.md にコピー
    • コピー失敗時は references_other_plans に記載された先行 Spec が未 ship の可能性、stages.isolatefailed に記録して停止 (§3 前提条件の強化として機能)
    • コピー完了した先行 Plan のパスを stages.isolate.outputs.referenced_plans 配列に記録
    • 効果: Implement ステージで developer agent / main agent が先行 Spec の API 契約 (関数シグネチャ / 公開変数 / 定数定義) を worktree 内で直接参照できるようになり、依存 Spec 実装時の「先行 API との整合性」を machine-readable に担保 (Phase 6 バッチ 2 (c) の実運用で成立確認済)
  5. worktrees/<spec-name>/progress.md を生成
  6. progress.json の stages.isolatecompleted に更新 (outputs に worktree / branch / 各コピー先パス / referenced_plans を記録)

8.2 品質ゲート

  • worktree ディレクトリが存在すること
  • worktrees/<spec-name>/specs/<spec-name>.md が読めること
  • worktrees/<spec-name>/plans/<spec-name>.md が読めること (Implement ステージで developer agent が参照する)
  • references_other_plans があれば、対応する worktrees/<spec-name>/plans/<ref-spec>.md が全て読めること (2026-04-24 Try 6.1 追加、依存 Spec の archive plan.md が worktree にコピー済かを確認)
  • git worktree list に当該 worktree が表示されること

8.3 失敗時

  • worktree 作成コマンドが失敗した場合、エラーメッセージを progress に記録して全停止
  • 主な失敗原因: ブランチ名重複、ディスク容量不足、git config 問題
  • Plan ファイルコピー失敗時も同様に failed として停止 (Plan は Implement の前提のため skip 不可)

8.4 main 側 Plan の扱い

Isolate はコピーのみで main 側の specs/<spec-name>.plan.md削除しません。Phase 5 の並列 spec-leader が他 Spec の Plan を参照できるよう、ship ステージまで main 側に保持します。

10. Implement ステージ

目的: Plan ファイルのタスクを TDD で実装する。並列実行時は git index 競合を物理的に排除する sub-worktree 方式を採用する (2026-04-22 iter-3 改修)。

10.1 処理手順

  1. tdd-driver skill を起動 (テスト先行強制モード)
  2. Plan §5.2 の並列判定ロジック (依存 DAG + files_touched 積集合空) から並列実行可能なタスクグループを抽出
  3. 並列グループ内の各タスクについて sub-worktree を作成: git worktree add worktrees/<spec>/sub-<task-id> spec/<spec-name> (親 worktree の HEAD から分岐、独立 index)
  4. 各 developer agent を allowed_files = Plan の files_touched を渡して起動、sub-worktree 内で作業
  5. 全 developer 完了後、親 worktree で git cherry-pick <各 sub-worktree の commit> で順次統合 (逐次実行、index 競合を親で起こさせない)
  6. 全タスク完了で sub-worktree を削除 (git worktree remove --force worktrees/<spec>/sub-<task-id>)
  7. progress.json の stages.implementcompleted に更新 (outputs に各 T-N の commit SHA を記録)

10.2 並列実行の具体的フロー

並列グループ: [T-1, T-2] (files_touched 積集合空)
逐次: [T-integrate]

1. sub-worktree 作成:
   git worktree add worktrees/calculator/sub-T-1 spec/calculator
   git worktree add worktrees/calculator/sub-T-2 spec/calculator
2. developer agent 並列起動:
   developer (T-1, allowed_files=[calculator/add.py, tests/test_add.py], cwd=sub-T-1)
   developer (T-2, allowed_files=[calculator/subtract.py, tests/test_subtract.py], cwd=sub-T-2)
3. 各 developer が独立 index で commit 作成 (競合一切なし)
4. 親 worktree で cherry-pick 統合:
   cd worktrees/calculator
   git cherry-pick <T-1 の sub-worktree 最終 commit>
   git cherry-pick <T-2 の sub-worktree 最終 commit>
5. T-integrate は親 worktree で逐次実行 (__init__.py 等の共通ファイル編集)
6. sub-worktree クリーンアップ

10.3 品質ゲート

  • Plan ファイルの全タスク (チェックボックス) が完了済 ([x]) であること
  • 新規コミットが親 worktree 内 (spec/<spec-name> ブランチ) に作成されていること
  • cherry-pick 時にコンフリクトが発生していないこと (発生時は stages.implement を failed に記録して停止、ユーザーに手動解消を依頼)
  • sub-worktree がすべて削除されていること

10.4 下位 skill / agent 未実装時

  • tdd-driver skill 未実装 → blocked
  • developer agent 未実装 → blocked
  • いずれの場合も progress に missing を記録して全停止

10.5 Phase 3 移行措置 (並列実行未使用)

Phase 3 初期は Agent Teams の多階層 subagent 動作が未検証のため、sub-worktree 方式は任意 です。順次実行 (全タスクを直列、親 worktree で 1 つずつ実装) でも本 skill は動作します。ただし Plan の files_touched は必須 (Phase 5 並列化の準備として記録される)。

実運用で並列化を有効にする場合は、spec-leader 起動時に options.parallel_implement: true を渡して sub-worktree 方式を有効化します。

11. Verify ステージ

目的: 全テスト / lint / 型チェックを実行し、全項目 pass を確認する。

11.1 処理手順

  1. verification-before-completion skill を起動
  2. verifier agent を呼び出し、以下を並列実行:
    • 全テスト (npm test / pytest / go test 等)
    • lint (eslint / ruff / golangci-lint 等)
    • 型チェック (tsc --noEmit / mypy / go vet 等)
  3. 検証レポートを progress.md に追記
  4. 全項目 pass で stages.verifycompleted に更新

11.2 品質ゲート

  • 全検証項目が pass
  • 失敗項目があれば Implement ステージに戻って修正 (Phase 3 では手動介入、Phase 5 で自動 rollback 検討)

11.3 下位 skill / agent 未実装時

  • verification-before-completion / verifier いずれか未実装 → blocked

12. Code Review ステージ

目的: code / security / cross-model の独立レビューを並列実行する。

12.1 処理手順

  1. 以下の 3 agent を並列起動:
    • code-reviewer: コード品質観点 (可読性 / 設計 / 単純性)
    • security-reviewer: セキュリティ観点 (OWASP Top 10 / 認証認可 / 入力検証)
    • cross-model-reviewer: 他モデル (Codex 等) による独立審査
  2. 各 reviewer の結果を worktrees/<spec-name>/reviews/code.md / security.md / cross-model.md に保存
  3. 全 reviewer の verdict を統合し、1 つでも reject があれば stages.code_reviewfailed

12.2 差戻し時の対応

  • receiving-code-review skill を起動し、レビュー指摘を spec-leader 配下の Implement ステージに戻して対応
  • Implement → Verify → Code Review の再実行ループ (最大 3 回、超えたらユーザー相談)

12.3 下位 skill / agent 未実装時

  • code-reviewer / security-reviewer / cross-model-reviewer / receiving-code-review / cross-model-review のいずれか未実装 → blocked

13. ship ステージ (ユーザー承認後)

目的: worktree を main にマージし、worktree を削除する。

13.1 ユーザー承認の取得

Code Review 完了後、以下をユーザーに提示して承認を求めます。

  • Code Review 結果サマリ (全 reviewer pass)
  • 変更差分のサマリ (git diff spec/<spec-name> main の概要)
  • merge コマンド (通常は git merge --no-ff spec/<spec-name>)

承認を得てから ship を実行します。承認前に自動 merge してはいけません。

13.2 処理手順

  1. worktree 内の一時ファイルをクリーン (2026-04-22 iter-5 改修、merge コンフリクト予防):
    • __pycache__/.pytest_cache/node_modules/dist/build/.venv/ 等の生成物を削除
    • 実装言語に応じた clean ターゲット (npm run clean / make clean 等) を実行
    • これにより merge 時に未追跡ファイル / index 競合による Aborting を予防 (iter-5 で __pycache__ 競合が発生した事例あり)
  2. main ブランチに切り替え (git checkout main)
  3. spec/<spec-name> を merge (git merge --no-ff spec/<spec-name>)
  4. merge 後 main で再度テスト実行 (品質ゲート)
  5. worktree 削除 (git worktree remove worktrees/<spec-name>)
  6. spec/<spec-name> ブランチ削除 (任意、ユーザー確認)
  7. Spec / Plan / Review / Code Review 結果を archive 移動 + worktree 作業ファイルの main 掃除 (2026-04-22 iter-4 + 2026-04-20 tmux-dashboard-mvp learn §5.4 改修):
    • archive 移動 (frontmatter status: archived に更新):
      • specs/<spec-name>.mdspecs/archive/<spec-name>.md
      • specs/<spec-name>.plan.mdspecs/archive/<spec-name>.plan.md
      • specs/<spec-name>.plan.meta.jsonspecs/archive/<spec-name>.plan.meta.json
      • specs/<spec-name>.review.mdspecs/archive/<spec-name>.review.md
      • specs/dag.mdspecs/archive/<spec-name>.dag.md (単一 Spec の 1 ノード DAG も将来の設計判断参照用に保持)
      • specs/<spec-name>.progress.jsonspecs/archive/<spec-name>.progress.json
      • worktrees/<spec-name>/reviews/consolidated.mdspecs/archive/<spec-name>.consolidated.md (iter-4 改修、受信 review の長期保存。worktree 削除前に cp でコピーしておき、ship ステップ 6 で archive 確定)
    • worktree 作業ファイルの main 掃除 (2026-04-20 追加): merge 時に main に流入する以下のファイルは、spec-leader §4.1 の成果物ではない ため ship commit で git rm する:
      • plans/<spec-name>.md (worktree 側の Plan コピー、main 側は archive に残す)
      • progress.md (worktree 側の人間可読進捗、archive には JSON のみで十分)
      • reviews/code.md / reviews/security.md / reviews/cross-model.md (consolidated.md を archive に残せば個別 reviewer の生ログは main 不要)
      • verify-report.md (Verify 結果は progress.json stages.verify.outputs に構造化済)
    • 上記削除の根拠: worktree は作業空間であり、main は「プロダクトコード + archive」のみで保たれるべき。git rm 漏れがあると main の history に作業ログが残り続け、リポジトリ成長率が無意味に増える (tmux-dashboard-mvp サイクルで 1309 行 → ship 掃除で 752 行削減の実績)
    • archive 移動と worktree 掃除は同一 ship commit 内で行う (部分的に残すと整合性警告の原因になる)
  8. progress.json の stages.shipcompleted、最終的に result.json を生成

13.3 品質ゲート

  • main での再テストが pass
  • worktree が正常に削除されている
  • spec.md / plan.md / review.md の 3 ファイルが archive に移動されている

13.4 失敗時

  • merge コンフリクト → 「コンフリクト解消後に spec-leader 再開モードで起動してください」と停止
  • main 再テスト fail → 直前の merge を revert (git revert HEAD) して停止

14. 再開モード (中断からの復旧)

worktree が既に存在する状態で本 skill が起動された場合、再開モード として処理します。

14.1 判定

  • worktrees/<spec-name>/ が存在
  • specs/<spec-name>.progress.json が存在

14.2 処理

  1. progress.json を読み込み、最終状態を特定
  2. current_stagestatus を確認:
    • in_progress → 中断した可能性。ユーザーに確認後、当該ステージを再実行 or 完了扱いに
    • failed / blocked → 原因解消後にユーザー承認で当該ステージを再実行
    • completed → 次ステージから再開
  3. 再開ステージから通常フローに合流

14.3 ユーザー確認の必須化

再開モードでは、どのステージから再開するかを必ずユーザーに確認 してから処理を進めます。自動判断による意図しない再実行を防止します。

14.4 ユーザーが「中止」選択時の挙動 (2026-04-22 iter-2 改修)

再開モードでユーザーが「中止」を選択した場合、現在の progress.json 状態を変更せずに、以下で result.json を生成して終了します。

{
  "spec": "<spec-name>",
  "verdict": "aborted-on-resume",
  "started_at": "<progress.json の started_at を引き継ぎ>",
  "ended_at": "<中止時刻>",
  "final_commit": null,
  "stages_completed": ["<completed だったステージを列挙>"],
  "stages_failed": [],
  "stages_blocked": ["<blocked だったステージを列挙>"],
  "user_action_required": "ユーザー中止。worktree / progress.json は保持、後日 spec-leader 再起動で再開モードに再入場可能",
  "resume_point_at_abort": "<current_stage の値>",
  "notes": "再開モードで中止選択"
}

14.4.1 保持されるもの / 破棄されるもの

対象挙動
worktrees/<spec-name>/保持 (再開用)
specs/<spec-name>.progress.json保持
worktrees/<spec-name>/progress.md保持
specs/<spec-name>.result.json上記 JSON で生成

14.4.2 再再開の可能性

aborted-on-resume は回復可能な状態です。後日 spec-leader を再起動すると再び再開モードに入り、§14.2 手順に従って状態確認からやり直します。完全な破棄が必要な場合は、ユーザーが明示的に worktrees/<spec-name>/ を削除 + progress.json / result.json を削除してから新規に spec-leader を起動します。

15. 失敗時の全停止 + ユーザー相談

どのステージでも失敗が発生した場合、全停止 + ユーザー相談 に移行します (Q6 確定)。

15.1 全停止の手順

  1. 失敗したステージの progress を failed に更新、error に原因を記録
  2. 後続ステージは pending のまま (飛ばさない)
  3. result.jsonverdict: aborted で生成
  4. ユーザーに以下を報告:
    • 失敗ステージ
    • 失敗原因
    • 再開手順 (「原因解消後、spec-leader を再起動すると再開モードで復旧します」)

15.2 自動リトライの方針

Phase 3 では自動リトライを行いません (Q6 = (a) 全停止)。下位 skill / agent が独自にリトライする場合は本 skill は関与しません。

16. 未実装下位 skill / agent の扱い (Phase 3 初期)

Phase 3 時点では下位 skill / agent の多くが未実装です。本 skill は以下のように扱います。

16.1 検出方法

各ステージ開始時、必要な skill が ~/.claude/skills/<skill-name>/SKILL.md として存在するかを確認します。agent についても同様に agents/ ディレクトリ or 設定を参照します。

16.2 未実装時の挙動 (Q3 確定: 呼び出し定義のみ)

  • stages.<stage>.statusblocked
  • stages.<stage>.missing_skill / missing_agent に不足を列挙
  • 全停止 + ユーザー報告
  • result.jsonverdictpaused

16.3 実装状況の表 (2026-04-22 時点、Plan と Isolate 順序反転後)

Plan は本 skill の前提条件 (main 側で writing-plan 事前実行済) として扱うため、本表の対象外 (前提チェックは §3 参照)。本 skill が制御する 5 ステージ:

ステージ必要 skill必要 agent実装状況
Isolate(本 skill で直接 git worktree + ファイルコピー実行)
Implementtdd-driverdeveloper ○ (2026-04-21 実装)
Verifyverification-before-completionverifier ○ (2026-04-21 実装)
Code Reviewreceiving-code-review ○ / cross-model-review3 reviewer agent ○ (2026-04-21 実装)
ship(本 skill で直接 git merge + archive 移動実行)

2026-04-22 時点で Phase 3 の全 skill (11 種) + agent (5 種) が実装完了し、iter-3 統合完走テスト (verdict: shipped) で全 5 ステージ通過を確認済み。Phase 5 対応の残 agent (investigator / spec-reviewer / orchestrator) は本 skill の動作に影響しない。

17. Phase 5 改修不要性の保証

本 skill は Phase 5 で orchestrator が追加された際に改修不要であるよう、以下を担保しています。

観点担保
呼び出し元の抽象化本 skill は「誰に呼ばれたか」を意識しない (入力 spec_path のみに依存)
状態の外部化内部状態を持たず、すべての進捗を progress.json に記録 (orchestrator からも参照可能)
結果の機械可読化result.json で終了状態を表現 (orchestrator が次 Spec へ進む判断に使用可能)
並列呼び出し安全性worktree 単位で動作、他 Spec との状態共有なし (orchestrator が本 skill を並列起動しても衝突しない)
下位 skill の入出力契約writing-plan は plan.md、verifier は検証レポート、等、下位との契約はファイルベース (変更不要)

18. 失敗・アンチパターン

以下を行ってはいけません。

  • ❌ Spec ファイルを読まずにステージ遷移を開始する
  • ❌ spec-review の verdict が pass でない Spec を処理する
  • ❌ worktree 作成を省略して main で直接実装する
  • ❌ Code Review 完了後、ユーザー承認なしに ship を実行する
  • ❌ 失敗時に progress を更新せず終了する (後の再開モードが破綻する)
  • ❌ 下位 skill 未実装時に「代わりに本 skill で処理する」と判断する (責務逸脱、呼び出し定義に留める)
  • ❌ progress.json / progress.md のどちらか一方だけ更新する (両方を一貫性をもって更新)
  • ❌ main ブランチで本 skill を起動する (main 汚染防止、必ず worktree で作業)
  • ❌ 再開モードでステージ状態をユーザー確認なしに変更する
  • ❌ result.json 生成を飛ばしてして終了する (Phase 5 orchestrator が結果取得できなくなる)
  • iteration ループ中に main 側 progress.json を更新しない (2026-04-20 tmux-dashboard-mvp learn §5.3、ship 直前の状態誤認事故の原因)
  • worktree 側作業ファイル (plans/ / progress.md / reviews/*.md / verify-report.md) を main に残したまま ship する (2026-04-20 tmux-dashboard-mvp learn §5.4、§13.2 の 6 項目で明示的 git rm が必要)

What ships with it: 10 files

32.5 KB alongside SKILL.md, 1 of them executable

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.