PlanGate の exec フェーズを TDD で実行する。Use when: C-3 APPROVED 後にコード実装を開始したい時、workflow-conductor 配下で実装タスクを進めたい時。
Scanned 9/5/2026
Install to Claude Code
npx -y skills add s977043/PlanGate --skill ai-dev-exec --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ai Dev Exec?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/s977043-ai-dev-exec-9e6327e7)More formats (shields.io, HTML) on the badges page.
---
name: ai-dev-exec
description: "PlanGate の exec フェーズを TDD で実行する。Use when: C-3 APPROVED 後にコード実装を開始したい時、workflow-conductor 配下で実装タスクを進めたい時。"
---
# AI-Driven Exec (PlanGate / Codex 共用)
PlanGate ワークフローの **exec フェーズ(WF-04 Build & Refine)** を Codex / Claude Code 両方で実行する skill。
> 本スキルは **bundled resources**(`references/`)で自己完結する。
>
> **パス表記の規約(重要)**: 本 SKILL.md 中の `references/…` は、すべて **本スキル
> ディレクトリからの相対パス**(= `<skill_dir>/…`)であって、導入先リポジトリのルートからの
> 相対パスではない。実行時はまず `<skill_dir>`(このファイルが置かれているディレクトリ)を
> 解決してから使う:
>
> | 環境 | `<skill_dir>` |
> | --- | --- |
> | plugin 導入先(Claude marketplace) | `<plugin_root>/skills/ai-dev-exec/` |
> | `install.sh --claude` 導入先 | `.claude/skills/ai-dev-exec/` |
> | Codex 導入先 | `.codex/skills/ai-dev-exec/` |
> | 上流リポジトリ(正本側) | `.agents/skills/ai-dev-exec/` |
>
> 導入先が独自の正本(上流リポジトリの `docs/` 配下に相当するもの)を別途保持している
> 場合は、そちらを優先すること。
## 前提条件(exec 開始ゲート)
1. `docs/working/TASK-XXXX/approvals/c3.json` が存在し、**その `approval_kind` に応じた承認条件**を
満たすこと。判別は **python3 の strict JSON** で行う(非アンカーな `grep`/`sed` は c3-prime で
誤動作する。契約 §5):
| record 種別 | 判別 | 承認済みと見なす条件 |
|------------|------|--------------------|
| **legacy** | `approval_kind` キー **なし** | `c3_status: APPROVED` |
| **c3-prime** | `approval_kind: "c3-prime"` | `decision: "AUTO_APPROVED"`(**`c3_status` は契約 §5 で明示禁止**。含まれていたら FAIL)**かつ** Plan Package 束縛の全数検証 PASS(`plan_hash` / `artifact_hashes` 6 要素 / `plan_package_hash` / `source_sha` / reviewer verdict 整合)。正本: 同梱 `references/c3-prime-contract.md` §2〜§5 |
| それ以外の値 | — | **受理拒否**(exec 不可) |
2. **validate 相当が PASS**(plan_hash 整合 / artifact 整合 / EH-3 整合)
3. **exec 入口も上記 1 と同じ分岐で承認済み record のみ受理する**(CLI がある環境では
CLI 側が機械チェック済み。CLI が無い環境では自分で確認する)
これらが満たされなければ exec を**開始しない**。実際のコマンド表記(`bin/plangate` /
`plangate` / CLI 不在)・`TASK-XXXX` の解決先・CLI が無い環境での代替手順は
「CLI 呼び出し」節を参照する(**CLI が無いことを理由にゲートを省略しない**)。
> **settings タスクロック** (`plangate doctor --check-settings`) は **V-1 / handoff 完了の前提条件**(`.claude/rules/working-context.md` → fallback `<plugin_root>/rules/working-context.md` が正本)。exec 入口では block しない。詳細は `ai-dev-verify` skill。
## Read First
### 参照解決順(導入先で必ずこの順に探す)
本 Skill は **上流リポジトリ基準の `docs/**` パスを直接参照しない**(#1232)。`docs/**` は
`install.sh --claude` / plugin(Claude marketplace)/ Codex の **3 経路とも配布対象外**であり、
書いた時点で導入先では必ず空振りするためである。参照の解決は次の順で行う:
1. **`<skill_dir>` 配下の同梱物(`references/`)を第一に読む** — 契約 doc は本スキルに
同梱されている(「同梱リファレンス」節の一覧)
2. 導入先リポジトリが独自の正本(上流の `docs/` 配下に相当するもの)を保持していれば、
そちらを優先する
3. **rules(`rules/*.md`)だけは配布経路によって着地が異なる**ため、次の順で探す:
1. 導入先リポジトリの相対パス(例: `.claude/rules/working-context.md`)
2. 無ければ plugin root 配下(例: `<plugin_root>/rules/working-context.md`)
- **`<plugin_root>` は Bash で `ls "${CLAUDE_PLUGIN_ROOT}/rules/"` を実行して得た絶対パス**。
Read ツールは絶対パスを要求し環境変数を展開しないため、`${CLAUDE_PLUGIN_ROOT}/...`
という文字列をそのまま Read しても必ず失敗する
- **変数が空・未設定なら glob(`~/.claude/plugins/cache/**` 等)で推測せず次へ進む**
4. いずれでも解決できなければ **「解決できなかった」と明示**し、同梱 `references/` と本 Skill の
記述を代替正本として扱い、推測で内容を補わない
**plugin root 直下に `docs/` を探しに行かないこと**: plugin が配布するのは
`agents` / `commands` / `skills` / `rules` 等の定義ディレクトリのみで `docs/` を配布対象として
認識せず、plugin root 配下に相当する配布物が存在しないため必ず空振りする。
| 参照 | `install.sh --claude` 経由 | plugin(Claude marketplace)経由 | Codex 経由 |
|------|---------------------------|----------------------------------|-----------|
| `rules/*.md`(下記 3〜5) | `.claude/rules/` に着地(解決可) | `<plugin_root>/rules/` で解決 | **未配置(解決不可 → 手順 4 へ)** |
| 契約 doc(c3-prime 契約・settings wiring 契約 等) | **`<skill_dir>/references/` に同梱(解決可)** | **`<skill_dir>/references/` に同梱(解決可)** | **`<skill_dir>/references/` に同梱(解決可)** |
| `bin/**`(CLI) | コピー対象外(解決不可) | バンドル対象外(解決不可) | 未配置(解決不可) |
| `scripts/**` | コピー対象外(解決不可) | `<plugin_root>/scripts/` は存在するが `install-plangate-skills.sh` のみ(`ai-dev-workflow` / `codex-guarded.sh` 等は解決不可) | 未配置(解決不可) |
> **例外(上流リポジトリ内のドッグフーディング経路 / #1249 MINOR-3)**: 上表「Codex 経由」の
> 「同梱(解決可)」が成立するのは **配布物経由**(`plugin/plangate/scripts/install-plangate-skills.sh`。
> source は `plugin/plangate/skills/`)に限る。上流リポジトリ自身が `.codex/skills/` を作る
> `scripts/install-plangate-skills-to-codex.sh` は source が `.agents/skills/` であり、そこには
> 本 skill の `references/` が **存在しない**(`references/` は `scripts/sync-plugin-plangate.sh` が
> `plugin/plangate/skills/**` にだけ生成する)。したがって上流 repo の
> `.codex/skills/<skill>/references/` は **構造上つねに不在**であり、この経路では契約 doc・
> テンプレートは手順 4(解決できなかったと明示)に落ちる。上流では `docs/**` の正本を直接
> 読めるため実害は無いが、上表の「解決可」を上流の `.codex/` にまで拡大解釈しないこと。
> 経路自体の是正(source の一本化)は #1086 の裁定待ち。
`docs/working/TASK-XXXX/*`(下記 6〜7)は**配布物ではなく導入先で作成する作業成果物**なので、
導入先リポジトリ内でそのまま解決する(存在しなければ plan フェーズが未完了)。
### 同梱リファレンス(`<skill_dir>/references/`)
| ファイル | 役割 |
|---------|------|
| `references/c3-prime-contract.md` | `approval_kind: "c3-prime"` の受理契約(§2〜§5)の正本 |
| `references/settings-wiring-contract.md` | settings wiring 契約(必要 hook の定義・Codex CLI parity) |
| `references/core-contract.md` | 実行契約(Iron Law / Stop rules / Output discipline)の正本 |
| `references/plangate.md` | PlanGate 概要ガイド |
### 読む順序
1. `CLAUDE.md`
2. `AGENTS.md`
3. `.claude/rules/working-context.md` → fallback `<plugin_root>/rules/working-context.md`(exec phase の出力規約)
4. `.claude/rules/hybrid-architecture.md` → fallback `<plugin_root>/rules/hybrid-architecture.md`(Rule 1〜5)
5. `.claude/rules/responsibility-classes.md` → fallback `<plugin_root>/rules/responsibility-classes.md`(AI-owned / Human-owned 境界)
6. `docs/working/TASK-XXXX/plan.md` / `todo.md` / `test-cases.md`
7. `docs/working/TASK-XXXX/current-state.md`
## Rules
- **TDD 厳守**: Red → Green → Refactor。test-cases.md の各 AC に対応するテストを先に書く。
- **todo.md 順守**: depends_on を尊重し、🚩 checkpoint ごとに current-state.md 更新。
- **計画逸脱の即時記録**: 計画外のリネーム / 削除 / 設計変更は status.md「計画からの変更点」に記録。
- **scope 越境禁止**: plan.md「Files / Components to Touch」外の変更は禁止。必要時は plan 再生成 + C-3 再承認。
- **L-0〜V-4 は workflow-conductor が自動制御**: 本 skill 範囲外。
- **AI 自己改変ガード尊重**: `.claude/settings*.json` / Hardening Override 対象は触らない(Human-owned)。
- **decision-log.jsonl 追記**: 主要判断は append-only で記録。
## Output
- 実装コード(plan.md「Files / Components to Touch」内)
- テストコード(test-cases.md と 1:1 対応)
- `docs/working/TASK-XXXX/current-state.md` 更新
- `docs/working/TASK-XXXX/status.md` 追記
- `docs/working/TASK-XXXX/decision-log.jsonl` 追記
## CLI 呼び出し
> **前提(Human 決定 #1144)**: plugin / `install.sh --claude` / Codex が導入先へ配るのは
> **読み物層(`skills` / `rules` / `agents` / `commands`)だけ**であり、**CLI(PlanGate CLI 本体)も
> enforcement 層(`scripts/hooks/`)も配布物に含まれない**。したがって下表の「上流リポジトリの cwd」
> 列にしか成立しない手順は、導入先では **上流リポジトリ(`s977043/plangate`)の clone が無いかぎり
> 実行できない**。そこへ到達したら「CLI が無いため実行できない/上流リポジトリの clone が必要」と
> **明示して停止する**か、同表の代替手順へ置き換える。**CLI が無いことを理由に手順を黙って省略し、
> 実施済みと読める記録を残してはならない。**
**呼び出し表記は実行環境で変わる**。相対パス形式(`bin/plangate` / `./scripts/...`)が成立するのは
**上流リポジトリ(`s977043/plangate`)を clone した cwd に居るときだけ**で、導入先には `bin/` も
`scripts/`(の CLI 本体)も配置されない。導入先で PATH を通した場合のコマンド名は
**`plangate`**(`bin/plangate` ではない)。どちらの環境かを確定してから使う。
| 用途 | 上流リポジトリの cwd | 導入先 + PATH に `plangate` あり | 導入先 + PATH に無い(**既定**) |
|------|---------------------|----------------------------------|--------------------------------|
| exec dispatch | `bin/plangate exec TASK-XXXX [--mode <mode>]` | `plangate exec TASK-XXXX` は**実在するが対象が CLI 側**(下記注意)→ 導入先の TASK には使えず手動で TDD 実行 | 手動で TDD 実行 |
| plan_hash / artifact 機械検証 | `bin/plangate validate TASK-XXXX` | `plangate validate --dir docs/working/TASK-XXXX` | 次節のフォールバック(sha256 突合) |
> **注意: `TASK-XXXX` 位置引数は cwd ではなく CLI 本体の位置を基準に解決される。**
> `bin/plangate` は自身のパスから `plangate_root`(= `bin/` の親)を求め、
> `<CLI の repo root>/docs/working/TASK-XXXX` を読み書きする。`bin/` は導入先に配置されない
> ため、PATH 上の `plangate` は必ず**別の場所にある上流 clone** の実体を指す。つまり導入先で
> `plangate exec TASK-XXXX` を実行しても、対象は導入先の `docs/working/` ではなく
> **その clone 側の `docs/working/`** になる。cwd 非依存でパスを明示できる `--dir` を持つのは
> `validate` / `validate-schemas` **だけ**で、`exec` / `resume` / `status` / `review` / `eval` /
> `metrics` / `context` / `render` / `approve` に相当オプションは無い。
- 並行で `./scripts/ai-dev-workflow TASK-XXXX exec` も利用可(**上流リポジトリの cwd のみ**。`scripts/ai-dev-workflow` は配布対象外)
- **Codex CLI 経由の場合は `scripts/codex-guarded.sh --task TASK-XXXX exec --full-auto` を推奨**(**上流リポジトリの cwd のみ**。pre-flight で validate + doctor --check-settings 実行、post-flight で plan.md drift 検知)
> ❌ ~~**Codex CLI 物理 hook 等価達成 (PR #347)**~~ **未達成(2026-08-13 実測)**: `.codex/hooks.json` は設定ファイル全体が parse 拒否されており、**hook は 1 件も登録されていない**。**EH-1/2/3/6/9 は Codex session で一度も発火していない**。`scripts/codex-guarded.sh` の session 前後検知は正規入口を経由した場合のみ機能する(入口を強制する機械ゲートは無い)。**Codex session 中の write は物理 block されないものとして扱い、ゲートは人手で維持すること。** 詳細は同梱 `references/settings-wiring-contract.md` §Codex CLI parity を参照。**これらは配布対象外**でもあるため、導入先では下記フォールバックでゲートを人手維持する。
### CLI 不在時のフォールバック(導入先では既定)
上表の「導入先 + PATH に無い(既定)」に該当する場合は次に従う:
1. **exec 本体は手動で TDD 実行する** — Red → Green → Refactor の順序と「Output」の出力契約は
**CLI の有無に関わらず不変**
2. **exec 入口ゲート(前提条件)は自分で確認する** — まず `approvals/c3.json` に
`approval_kind` キーがあるかを strict JSON で読んで**経路を分ける**
(`python3 -c 'import json,sys; d=json.load(open(sys.argv[1])); print("approval_kind" in d)' <path>`)。
**(a) legacy c3.json(`approval_kind` キー無し)の場合** — `c3_status` が
`APPROVED` であることを読んで確認し、続けて plan_hash を突合する。`plangate validate` の
plan_hash 検査は **`plan.md` の素の sha256**(正規化・前処理なし)と `c3.json` の `plan_hash`
から `sha256:` prefix を除いた値の単純比較なので、CLI 無しで再現できる:
```sh
# 算出(sha256sum → shasum -a 256 → openssl → python3 の順に、あるものを使う)
sha256sum docs/working/TASK-XXXX/plan.md | awk '{print $1}'
shasum -a 256 docs/working/TASK-XXXX/plan.md | awk '{print $1}'
openssl dgst -sha256 docs/working/TASK-XXXX/plan.md | awk '{print $NF}'
python3 -c 'import hashlib,sys; print(hashlib.sha256(open(sys.argv[1],"rb").read()).hexdigest())' docs/working/TASK-XXXX/plan.md
# 突合先: docs/working/TASK-XXXX/approvals/c3.json の "plan_hash": "sha256:<この値>"
```
**不一致なら C-3 承認後に plan が改変されている** → exec に進まず、再承認(`c3.json` の
`plan_hash` 更新)または plan の revert を行う。上記 **4 手段がすべて無い場合に限り**
スキップし、その事実を `decision-log.jsonl` に記録して **「機械検証済み」と書かない**
(python3 は PlanGate ツールチェーンの事実上の必須依存なので、実際にはほぼ到達しない)
**(b) `approval_kind: "c3-prime"` の record の場合** — 上記 (a) の手順は**使えない**。
c3-prime は `c3_status` を持たず(契約 §5 で明示禁止)、`plan_hash` は legacy と同じ
`sha256:<64hex>` 形式だが top-level と reviewer snapshot に**複数回出現**するため、
非アンカーな `grep`/`sed` 抽出は多行マッチして誤動作する(契約 §5。読むなら python3 の
strict JSON のみ)。さらに受理には **Plan Package 6 要素(`pbi-input.md` / `plan.md` /
`todo.md` / `test-cases.md` / `review-self.md` / `review-external.md`)の `artifact_hashes`
全数照合 + `plan_package_hash` + `source_sha`(検証時点の対象 SHA と一致)+ reviewer
snapshot の三つ組一致 + `decision=AUTO_APPROVED`** までの束縛検証が必要
(正本: 同梱 `references/c3-prime-contract.md` §3〜§5)。
**c3-prime を手動 sha256 のみで代替してはならない** — `plan.md` 単体の hash 一致だけで
入口ゲート確認済みとして exec に進むと、残り 5 artifact と `source_sha` の stale を見逃す。
この場合は item 4 の上流 clone 経由 `plangate validate --dir` で機械検証するか、
機械検証できない旨を `decision-log.jsonl` に記録して **exec を保留する**
3. **hook も配布されない前提で運用する** — plan_hash を照合する hook(EH-3)は導入先には配線され
ないため、item 2 の突合は **exec 開始前に自分で実行する**。CLI が無いことを理由に C-3 を省略しない
4. CLI による機械検証が必要なら、上流リポジトリを clone して
`bin/plangate validate --dir <導入先の TASK ディレクトリの絶対パス>` を実行する。
**位置引数形式(`validate TASK-XXXX`)は使わない** — 上表の注意のとおり clone 側の
`docs/working/TASK-XXXX` を見に行ってしまい、導入先の TASK は検査されない
## 次フェーズへ
exec 完了後は `ai-dev-verify` skill で V-1〜V-4 + handoff.md 発行。L-0〜V-4 は workflow-conductor が自動進行。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!