ワンクリックで
start-implement
計画書からタスクを選び、実装・レビュー・計画更新まで一貫して実行する。 トリガー: "実装開始", "タスク実行", "start implement"
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
計画書からタスクを選び、実装・レビュー・計画更新まで一貫して実行する。 トリガー: "実装開始", "タスク実行", "start implement"
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
msg-sys 通信基盤(常駐 Codex セッションとの Stop フック経由の非同期往復)の上で、 Codex とのレビュー依頼・所見受領・修正・完了判定を駆動する。3モード(依頼/受信/再開)を持つ。 依頼モードのトリガー句: "msg-reviewでレビュー依頼", "Codexとレビュー往復したい", "常駐Codexにレビューを依頼", "msg-reviewを実行して", "Codexセッションにコードレビューを頼みたい"。 受信モードの起動契機(トリガー句ではなくメッセージ本文の形式で成立): Stop フックが差し戻した メッセージ本文の先頭が `[msg-review] <種別> review_id=<review_id> round=<n>` である。 再開モードのトリガー句: "msg-reviewを再開したい", "レビューの往復上限到達通知が来た、状況を確認して", "review_idの未解決所見を要約して", "msg-reviewの続きを確認したい"。
設計書から実装戦略を策定し、タスクを抽出して YAML 計画書を作成・更新する。レビュー+自動修正→commit まで一貫実行。 トリガー: "計画書作成", "計画開始", "start plan", "start planning"
コード・文書をレビューし、品質問題の発見から修正まで自動化できる。重大度 🔴🟡🟢 で分類。 --auto で修正まで一貫実行。code/requirement/design/plan/uxui/generic の6種別に対応。 トリガー: "レビュー", "review", "レビューして", "確認して"
GitHub Issue を軽量実装で進めるか forge の SDD フロー(start-requirements/start-design/start-plan)に委ねるかを判定するスキル。feature namespace の要否も判定する。トリガー:「このIssueをトリアージして」「Issueの進め方を判定して」「#N はどう進めるべきか判定して」
GitHub Issue の実装を準備から完了まで一貫して行う。triage の判定調査結果(仕様書・ルール・類似PR・既存コードの特定)を引き継ぎ、実装計画の策定・Issue への解決内容記載・実装・レビューまで進める。UI Issue の場合は Figma デザイン仕様書・実装設計書の作成、UI 実装、実装レビューまでカバーする。 `/anvil:triage-issue` が軽量実装と判定した Issue に対して Skill ツール経由でのみ起動される(ユーザーからの直接起動は不可)。
コミットメッセージを自動生成し、手間なく commit & push できる。 トリガー: "コミットして", "commit して", "push して", "commit & push"
| name | start-implement |
| description | 計画書からタスクを選び、実装・レビュー・計画更新まで一貫して実行する。 トリガー: "実装開始", "タスク実行", "start implement" |
| user-invocable | true |
| argument-hint | <feature> [--task TASK-ID[,TASK-ID,...]] [-n N] |
| allowed-tools | Bash, Read, Write, Edit, Glob, Grep, Agent, Skill, AskUserQuestion |
計画書({feature}_plan.yaml)からタスクを選択し、コンテキスト収集→実装→レビュー→計画書更新を実行する。
計画書から選択したタスクの実装・AIレビュー・計画書更新・完了案内まで完走すること。
Phase 完了後は立ち止まらず次の Phase に自動で進む。不明点がある場合のみ AskUserQuestion で確認する。
/forge:start-implement [feature] [--task TASK-ID[,TASK-ID,...]] [-n N]
| 引数 | 内容 |
|---|---|
| feature | Feature 名(省略時は対話で確定) |
| --task | 実行するタスクID(カンマ区切りで複数指定可。省略時は優先度順で自動選択) |
| -n | 優先度順で選択するタスク数(省略時は1件。依存関係に基づいて並列/ウェーブ実行を自動決定する) |
対象 Feature を確定し、計画書を特定する。Feature が決まらないと、どの計画書のタスクを実行するかが決まらない。
計画書のパスを解決する:
${CLAUDE_PLUGIN_ROOT}/skills/doc-structure/SKILL.md の「出力先ディレクトリの解決」手順に従い、
doc_type plan、feature {feature} でディレクトリを求め、その配下の {feature}_plan.yaml を
計画書パスとする。
plan に対応するエントリが無い、またはファイルが存在しない → specs/{feature}/plan/{feature}_plan.yaml をデフォルトとする計画書(YAML)を Read し、全タスクの状態を把握する。
Issue やバグ修正など計画書外のタスクを追加する場合:
--task 指定あり(単一):
--task 指定あり(複数: カンマ区切り):
--task TASK-001,TASK-003-n N 指定あり:
tasks 配列を priority 降順でソートstatus: pending のタスクから上位 N 件を選択するgroup_id が非 null のタスクが含まれる場合、同じ正規化グループキー(通し番号 "(1/7)" 等を除去したもの。Phase 5.1 で使う group_review_batch.py の normalize_group_key と同一の正規化)を持つ status: pending の他タスクを、優先度に関わらず選択に追加する。グループは常に全メンバーが揃った状態で選択する(一部だけを選択しない)。これにより Phase 5.1 のグループ単位バッチレビューが確実に機能する(-n が優先度上位 N 件を選ぶだけだとグループの一部だけを選びがちで、バッチ化が機能しないため)
group_id によるレビュー用グループとは別概念):
depends_on がないもの → 並列実行候補depends_on があるもの → 前グループ完了後に実行-n 未指定かつ --task 未指定:
tasks 配列を priority 降順でソートstatus: pending のタスクから最高優先度のものを1つ選択選択した全タスクについて以下を確認:
depends_on 配列の全タスクが status: completed か確認。未完了の依存がある場合は AskUserQuestion で確認design_id が null でない場合は対応する設計書が存在するか確認--task 複数指定時タスク間の相互依存を検証する:
-n N 指定時依存関係に基づきウェーブ単位で実行する:
depends_on がないもの)を特定するdepends_on が全て完了したタスクを次の実行可能グループとして Phase 2.3 に戻る以下の手順でタスクに必要な文書を特定する:
計画書の設計トレーサビリティマトリクスからタスクの設計IDに対応する設計書を特定する。
設計トレーサビリティマトリクスの要件IDから関連する要件定義書を特定する。
Agent ツール起動: 実装ルール収集
prompt:
タスク "{タスクのタイトル}" (feature: {feature}) の実装に適用するプロジェクト固有ルール (レイヤー固有ルール等) を検索する。
`/forge:query-db-rules {feature} {タスクのタイトル}` を呼ぶ。
return value として以下の markdown 形式で返す:
## 実装ルール (N 件)
- `path/to/rule.md` — 関連理由
Agent ツール起動: 既存コード収集
prompt:
タスク "{タスクのタイトル}" (feature: {feature}) に関連する既存コード (類似実装、参照コード) を探索する。
検索手順:
- 機能名・コンポーネント名で `Grep` / `Glob: **/*{キーワード}*`
- 同一ディレクトリ・import 元・類似命名・テストファイルを分類
return value として以下の markdown 形式で返す:
## 既存コード (N 件)
- `path/to/file.swift` — 関連理由
3.1.3 と 3.1.4 は Agent ツールで並列起動 する。エラー終了した場合は該当カテゴリなしで続行。各 agent の return value を main AI コンテキストに直接保持する。
required_reading フィールドの処理タスクの required_reading 配列が空配列 [] でない場合、記載された各ファイルパスを追加の必読文書として executor に渡す。required_reading は YAML のタスクフィールドであり、Markdown table の「列」ではない点に注意する。
{feature}_strategy.md が required_reading に含まれている場合は、戦略書として分類して executor に渡す。含まれていない場合でも、計画書と同じディレクトリに {feature}_strategy.md が存在するなら追加の必読文書として executor に渡す。executor は全体戦略・フェーズ意図・リスク対策を理解したうえで、指定された単一タスクだけを実装する。
全 agent 完了後、agent の return value (実装ルール / 既存コード) と直接特定した文書 (設計書 / 要件定義書) を統合して表示する:
### ✅ コンテキスト収集完了
**設計書**
- `specs/{feature}/design/xxx.md` — 対象設計書
**要件定義書**
- `specs/{feature}/requirements/xxx.md` — 関連要件
**rules (N件)**
- `rules/xxx.md` — 実装ルール
**code (N件)**
- `src/xxx/YYY.ts` — 既存実装
**戦略書**
- `specs/{feature}/plan/{feature}_strategy.md` — 実装戦略
**追加必読文書**
- `specs/{feature}/rules/extra_context.md` — 計画書 required_reading(戦略書以外)
5件以下は全件表示、6件以上は先頭3件+省略。
オーケストレーターが計画書({feature}_plan.yaml)を読み、タスクの YAML フィールド値から検証要件を判定する:
build_check フィールドの値による検証要件(build_check の値が最優先):
値 (plan_format.md の値域) | 検証要件 |
|---|---|
per_task(デフォルト) | タスク完了時にビルド確認必須 |
skip | ビルド確認スキップ(代替検証推奨) |
on_group_complete | グループ最終タスクでビルド確認必須 |
acceptance_criteria フィールドが null でない場合:
以下のテンプレートで executor への指示を構築する:
以下のタスクを実装してください。
## 実行ガイド
${CLAUDE_PLUGIN_ROOT}/docs/task_execution_spec.md を Read して手順に従うこと。
## タスク情報
- タスクID: {タスクID}
- タスク名: {タイトル}
- 優先度: {数値}
- 実装内容:
{やるべき内容の箇条書き}
## 必読文書(全文読み込み必須)
- 設計書:
- {設計書ファイルパス}
- 要件定義書:
- {関連する全ての要件定義書}
- 戦略書:
- {feature_strategy.md のパス}
- ルール文書:
- {関連する全てのルール文書}
- 参照コード:
- {関連する全ての既存実装}
- 追加必読文書:
- {required_reading に含まれる戦略書以外の文書}
## 実装指示
{タスク固有の実装指示}
## 検証要件
- ビルド確認: {必須 | スキップ}
- テスト実行: {必須 | 任意 | スキップ}
- スキップ理由: {理由 | -}
パラメータは AskUserQuestion で人間に確認してから実行する [MANDATORY]
Agent(subagent_type: general-purpose, prompt: {構築したパラメータ})
並列実行時: 独立タスクごとに別の executor を Agent ツールで同時起動する。
executor は以下のステータスで報告する:
| ステータス | 意味 | 次のアクション |
|---|---|---|
| SUCCESS | 実装完了 | Phase 5(AI レビュー)へ |
| FAILURE | 実装失敗 | Phase 6.5(エラー対応)へ |
executor は計画書や共有リソースに直接書き込まない。 各 executor は結果を return value として JSON で返す。orchestrator が全 executor 完了後に return value を収集して一括処理する。
各 executor の return value JSON:
{
"task_id": "TASK-001",
"status": "SUCCESS",
"files_modified": ["src/foo.py", "src/bar.py"],
"summary": "実装の要約"
}
| フィールド | 説明 |
|---|---|
task_id | タスクID |
status | SUCCESS / FAILURE |
files_modified | 変更したファイルパス一覧 |
summary | 実装の要約(1-2行) |
error | FAILURE 時のエラー内容(任意) |
全 executor 完了後、orchestrator が return value を集めて Phase 5-6 を逐次処理する。
単一タスク実行時、executor が FAILURE を報告した場合は本 Phase をスキップし Phase 6.5 へ進む。複数タスク実行時に一部が FAILURE の場合はスキップしない(5.1 のグループ判定に FAILURE 結果も必要なため)。
タスク数 = レビュー起動回数ではない。計画書 ({feature}_plan.yaml) の group_id が同一のタスク群は 1 回のレビューにまとめる(グループ単位バッチレビュー)。1 タスク = 1 レビュー起動だと、機械的に同型の編集をファイル数分繰り返すだけのグループ(例: 同一パターンの置換を N ファイルに適用する GROUP)でもレビュー往復が N 回発生し、タスク数に比例して所要時間が伸びるため。
group_id は通し番号付き("GROUP-001 (1/7)" 等)で記録されるため、単純な文字列一致では同一グループの各タスクが別グループとして扱われてしまう。この正規化・グループ完全性判定・部分失敗時の保留・ファイル順序の決定は決定論的な処理であり、SKILL.md にインライン記述せず専用スクリプトに委譲する(docs/rules/implementation_guidelines.md「SKILL.md にインラインスクリプトを書かない」):
echo '<input_json>' | python3 ${CLAUDE_SKILL_DIR}/scripts/group_review_batch.py
<input_json> は以下の 2 フィールドを持つ。tasks は計画書 tasks[] 全件から task_id/group_id のみを抽出したもの(Phase 1 で計画書を読み込み済みのため抽出は容易)、results は今回の実行で得た 全 executor 結果(SUCCESS/FAILURE 問わず):
{
"tasks": [{ "task_id": "TASK-001", "group_id": "GROUP-001 (1/7)" }, "..."],
"results": [
{ "task_id": "TASK-001", "status": "SUCCESS", "files_modified": ["..."] },
"..."
]
}
出力:
{
"status": "ok",
"review_batches": [
{ "kind": "individual", "task_ids": ["TASK-010"], "files": ["..."] },
{
"kind": "group",
"group_key": "GROUP-001",
"task_ids": ["TASK-001", "..."],
"files": ["..."]
}
],
"held_groups": [
{
"group_key": "GROUP-002",
"task_ids": ["..."],
"failed_task_ids": ["..."],
"reason": "partial_failure"
}
]
}
判定ロジックの要点(詳細はスクリプト実装を正とする):
group_id: null(独立タスク): 常に kind: "individual"(1 タスク = 1 レビュー、従来通り)kind: "group" として 1 回に合算(ファイルは重複除去・計画書順で決定論的に整列)--task で意図的に一部だけ指定した等): 揃っていない分は kind: "individual" にフォールバックする(累積グループ差分の追跡は複雑さに見合わないためスコープ外)。-n N 指定時は Phase 2.1「グループの原子的選択」により通常このケースは発生しない(グループが選択されれば必ず全メンバーが揃う)。発生しうるのは --task で明示的に一部タスクのみを指定した場合のみheld_groups へ回し、SUCCESS した同グループの他タスクも含めてレビュー対象にしない(中間状態の壊れたグループを合算レビューしたり、成功した一部だけを完了扱いにしたりしない)review_batches[] を順に処理する(グループ内部・グループ間ともに並列化しない。/forge:review 自体が内部で並列 agent を使用するため、レビューを更に並列化するとリソース競合が発生する):
kind: "individual" → 該当 files に対して Skill ツールで /forge:review code --files {files} --auto を実行するkind: "group" → 該当 files(グループ全メンバー合算・重複除去済み)に対して /forge:review code --files {files} --auto を 1 回だけ 実行する
/forge:review 側の絞り込みフロー(Phase 2 Step 3)に従う。1 回のレビュー呼び出しに固執せず、絞り込みの結果として複数回に分割されることを許容する# Skill ツールで起動する(kind 問わず同一構文)
/forge:review code --files {ファイル一覧(カンマ区切り)} --auto
held_groups[] は Phase 6.5(エラー対応)で扱う: グループ内の一部タスクが FAILURE の場合、SUCCESS した同グループの他タスクも含めてレビュー・完了マークを保留し、失敗タスクの解決後に同グループ全体を再実行・再レビューする。
/forge:review が利用できない場合は git diff で変更差分を人間に提示し、手動レビューを依頼する。
レビュー+自動修正が完了したら Phase 6 へ進む。
executor のステータスに基づいて分岐:
各 executor の return value JSON を収集し、SUCCESS / FAILURE を分類する:
held_groups[] に含まれる task_id は除外する(レビューが保留されており、まだ completed にしてはならない)held_groups[] に含まれる task_id(SUCCESS だが同グループの他タスクが FAILURE のため保留) → 6.5 で扱う(グループ全体として、失敗タスクの解決を待ってから再実行・再レビューする対象。status は pending/in_progress のまま据え置く)レビュー完了後、計画書(YAML)を更新する:
status: pending → status: completed(held_groups[] の task_id は対象外。レビュー未実施のため completed にしない)completed なら status: completed に更新複数タスク並列実行時:
held_groups[]を除いた全 SUCCESS タスクのステータスを1回の計画書更新で一括変更する。個別に更新しない。held_groups[]に含まれるタスクは実装(コード変更)自体は完了しているが、レビュー未実施のため今回の更新対象に含めない。
commit/push の確認フローを担うスキル(例: anvil:commit)が available-skills にあれば呼び出す。無ければ git add → git commit の手順を案内する(Issue #159)。
次タスクの判定:
全タスク完了時、計画書(および追加開発の場合は feature 仕様一式)の扱いをユーザーに確認する。 自動削除や自動統合は禁止。必ず AskUserQuestion で確認する。
機械的な名前一致では判定しない。AI が以下の観点で文脈判定する:
{plan_path} から {plan_dir}(plan ファイルの親)を取り、その親 {candidate_dir} を見る{candidate_dir} が {requirements,design,plan} を含むディレクトリであり、さらに その親(仕様棚)に他の兄弟仕様(別 feature ディレクトリや別の {requirements,design,plan} セット)が存在する → 追加開発の可能性が高い{candidate_dir} のみ → 基本仕様の修正である可能性が高い追加開発 / 基本仕様の修正ディレクトリ名(main 等)の固定形式は存在しないため、名前一致や深さの機械的ルールには依存しない。
AskUserQuestion:「追加開発の全タスクが完了しました。/forge:merge-specs を実行して本体仕様 DIR に統合しますか?(実行時は基本 DIR と追加 DIR の 2 引数が必要)」
/forge:merge-specs <base> {feature} を実行(<base> は本体仕様 DIR の短縮名 / 相対パス)→ 完了案内(merge 実行パターン)AskUserQuestion:「全タスクが完了しました。計画書(plan)を削除しますか?」
rm {plan_path} → 完了案内(plan 削除パターン)executor が FAILURE を報告した場合:
再実行上限: 1回(初回 + 再実行1回 = 最大2回)。上限に達した場合は人間にエスカレーションして終了する。
Phase 5.1 が held_groups[] を返した場合、FAILURE したタスクを 6.5 の通常フローで対応した後、同グループ全体を Phase 4 から再実行する(SUCCESS 済みメンバーも含めて再実行対象とする。差分がなければ executor は素通りで再度 SUCCESS を返す想定)。個別タスクの再実行上限(1回)とは別に、グループ再実行はグループ内 FAILURE タスクの再実行上限に従う。再実行後、Phase 5.1 のグループ判定を再度通し、全メンバー SUCCESS になった時点で初めてグループ合算レビューを実施する。
タスク実行が完了しました:
→ {タスクID}: {タイトル} ☑
残タスク: {未完了タスク数} / {全タスク数}
次のタスク候補: {次の最高優先度タスクID} — {タイトル}
次のステップ:
/forge:start-implement {feature} # 次のタスクを実行
/forge:start-implement {feature} -n 3 # 優先度順で3件を選択して実行
/forge:start-implement {feature} --task {TASK-ID} # 特定タスクを実行
/forge:start-implement {feature} --task {ID1},{ID2},{ID3} # 複数タスクを並列実行
全タスク完了時、6.4.1 の選択結果に応じて以下のいずれかを表示する。
{feature} の全タスクが完了し、本体仕様への統合を実行しました。
完了タスク: {完了タスク数} / {全タスク数}
統合: /forge:merge-specs <base> {feature} 完了
{feature} の全タスクが完了し、計画書を削除しました。
完了タスク: {完了タスク数} / {全タスク数}
削除: {plan_path}
{feature} の全タスクが完了しました。計画書は残しています。
完了タスク: {完了タスク数} / {全タスク数}
計画書: {plan_path}
追加開発で merge を後回しにした場合、必要なタイミングで /forge:merge-specs <base> {feature} を実行する(<base> は本体仕様 DIR の短縮名 / 相対パス)。