概要
DoD フェーズを headful 検証のホスト引き継ぎ生成として autopilot に内製化する。コンテナ内 daemon は
headless でブラウザを動かせないため、ホスト側の Claude(headful Playwright)に渡す引き継ぎコメントを
daemon が生成・投稿する。手動実演済み: PR #818 の
コメント #818 (comment) を内製化する。
重要: 実装は daemon コード側で行う(.claude/ を編集しない)
verify スキル(.claude/skills/autopilot-verify/SKILL.md)の書き換えは .claude/ 編集となり、
autopilot 自身の implement が確認プロンプトで止まる(#820 で .claude/ の編集物は外へ出したが、
スキル本体は依然 .claude/)。そこで handoff 生成を daemon の JS(tools/autopilot/)側の
テンプレート生成として実装する。child Claude を起動せず、純粋な I/O + 文字列テンプレートで完結。
→ 実装が触るのは tools/autopilot/ + docs/autopilot/ + tests のみ= .claude/ 不触で無人完走できる。
(既存の autopilot-verify スキルは手動 inject 用に残してよい。自動経路はこの daemon 生成を使う。)
期待する振る舞い
トリガ: Review → DoD(board 移動)
人間が「コードはOK、次は DoD 検証」と判断して Status を Review→DoD にする。
daemon: DoD 引き継ぎ生成(tick ステップ・child Claude 不要)
Status=DoD かつ autopilot:dod-handoff コメントが未投稿 の leaf(Issue) について、daemon が:
- 連携 PR と Issue 本文の DoD チェックリスト を取得。
- プレビュー URL を PR の CI コメント(
https://smalruby.jp/smalruby3-editor/<branch>/)から拾う。
- CI 状態を確認。赤なら handoff を出さず HITL コメントで Review に戻す(任意)。
- テンプレートで引き継ぎ本文を生成して
autopilot:dod-handoff マーカー付きコメントを投稿:
- プレビュー URL(headful 確認先)
- Issue の DoD チェックリストをそのまま転記
- 定型の headful 手順雛形(
?no_beforeunload=1、スクショは tmp/→docs/<feature>/screenshots/、
秘密情報は本文に書かずローカル .env 参照、本番 Chrome で確認)
- 報告の出口(後述)
- sticky(
autopilot:sticky)には「DoD 引き継ぎあり(↑コメント)」の 1 行ポインタを足す。
🙋 HITL を維持(ホスト/人間の番)。冪等: 既に autopilot:dod-handoff があれば再投稿しない。
報告の出口(ホスト Claude → 人間)
- OK → 人間が merge → 既存 merge-progression が leaf を Close。
- NG → ホストが PR にコメントし
🙋 HITL を外す → DoD 解除 → address-review に差し戻し
(Review と対称。phaseForItem に DoD 解除パスを追加)。
変更対象(実装方針・すべて .claude/ の外)
tools/autopilot/src/phases.js
- 純粋関数
dodHandoffBody({issue, pr, previewUrl, dodChecklist})(テンプレート生成)。
- 純粋関数
needsDodHandoff(item, {hasHandoffComment})(DoD + 未生成 + PR あり → true)。
phaseForItem: DoD で 🙋 解除 → address-review(NG 差し戻し。OR セマンティクスは Review と同じ)。
tools/autopilot/src/project.js: PR の CI コメントからプレビュー URL を拾うヘルパー、
autopilot:dod-handoff コメントの有無検出(listIssueComments 流用)。
tools/autopilot/src/daemon.js: tick に applyDodHandoffs(items, cfg, state, log, deps) を追加
(injection 可能にして node:test で検証)。sticky に DoD ポインタ。
docs/autopilot/autonomous-contract.md / README.md: DoD 節を「daemon が headful 引き継ぎを生成」
「DoD 解除 → address-review」に更新。
- tests(node:test):
dodHandoffBody / needsDodHandoff / phaseForItem の DoD 解除分岐 / 冪等性。
DoD
備考
概要
DoD フェーズを headful 検証のホスト引き継ぎ生成として autopilot に内製化する。コンテナ内 daemon は
headless でブラウザを動かせないため、ホスト側の Claude(headful Playwright)に渡す引き継ぎコメントを
daemon が生成・投稿する。手動実演済み: PR #818 の
コメント #818 (comment) を内製化する。
重要: 実装は daemon コード側で行う(
.claude/を編集しない)verify スキル(
.claude/skills/autopilot-verify/SKILL.md)の書き換えは.claude/編集となり、autopilot 自身の implement が確認プロンプトで止まる(#820 で
.claude/の編集物は外へ出したが、スキル本体は依然
.claude/)。そこで handoff 生成を daemon の JS(tools/autopilot/)側のテンプレート生成として実装する。child Claude を起動せず、純粋な I/O + 文字列テンプレートで完結。
→ 実装が触るのは
tools/autopilot/+docs/autopilot/+ tests のみ=.claude/不触で無人完走できる。(既存の
autopilot-verifyスキルは手動 inject 用に残してよい。自動経路はこの daemon 生成を使う。)期待する振る舞い
トリガ: Review → DoD(board 移動)
人間が「コードはOK、次は DoD 検証」と判断して Status を Review→DoD にする。
daemon: DoD 引き継ぎ生成(tick ステップ・child Claude 不要)
Status=DoDかつautopilot:dod-handoffコメントが未投稿 の leaf(Issue) について、daemon が:https://smalruby.jp/smalruby3-editor/<branch>/)から拾う。autopilot:dod-handoffマーカー付きコメントを投稿:?no_beforeunload=1、スクショはtmp/→docs/<feature>/screenshots/、秘密情報は本文に書かずローカル
.env参照、本番 Chrome で確認)autopilot:sticky)には「DoD 引き継ぎあり(↑コメント)」の 1 行ポインタを足す。🙋 HITLを維持(ホスト/人間の番)。冪等: 既にautopilot:dod-handoffがあれば再投稿しない。報告の出口(ホスト Claude → 人間)
🙋 HITLを外す → DoD 解除 → address-review に差し戻し(Review と対称。
phaseForItemに DoD 解除パスを追加)。変更対象(実装方針・すべて
.claude/の外)tools/autopilot/src/phases.jsdodHandoffBody({issue, pr, previewUrl, dodChecklist})(テンプレート生成)。needsDodHandoff(item, {hasHandoffComment})(DoD + 未生成 + PR あり → true)。phaseForItem:DoDで 🙋 解除 →address-review(NG 差し戻し。OR セマンティクスは Review と同じ)。tools/autopilot/src/project.js: PR の CI コメントからプレビュー URL を拾うヘルパー、autopilot:dod-handoffコメントの有無検出(listIssueComments流用)。tools/autopilot/src/daemon.js: tick にapplyDodHandoffs(items, cfg, state, log, deps)を追加(injection 可能にして node:test で検証)。sticky に DoD ポインタ。
docs/autopilot/autonomous-contract.md/README.md: DoD 節を「daemon が headful 引き継ぎを生成」「DoD 解除 → address-review」に更新。
dodHandoffBody/needsDodHandoff/phaseForItemの DoD 解除分岐 / 冪等性。DoD
autopilot:dod-handoff引き継ぎコメントが 1 回だけ投稿されるcd tools/autopilot && node --test緑備考
.claude/非依存で実装可能(依存解消)。