Pre-choice usable artifact execution
Purpose & Output Contractの最小の実成果物をmain contextで作成する。effect別のparse/open・secret・irreversible・corrupt guardだけを実行し、現物path・digest・開き方を提示してからaccept-as-is/light/standard/detailedを記録する。accept-as-isはその場でhandoff完了とし、後続sectionを実行しない。
Post-choice selected improvement execution
以下の既存workflow・goal-seek・評価・修正sectionはlight/standard/detailedが記録されてsemantic_evaluator_startedへ遷移した場合だけ実行する。release/exhaustiveは別の明示eventを必要とする。
run-intake-finalize
Runtime root contract
runtime_root_policy: host-skill-path を適用する。
- Claude Codeでは
CLAUDE_PLUGIN_ROOT をplugin rootとして使用する。
- Codexではホストが提示したこの
SKILL.md のabsolute pathから、plugin manifestを持つ祖先を上方探索して論理 PLUGIN_ROOT を解決する。
cwd からplugin rootを推測せず、literal placeholderをshellへ渡さない。各shell invocation内で解決済みabsolute pathを PLUGIN_ROOT に設定する。
prompts/ 配下はこのowner Skill契約を継承する。
Purpose & Output Contract
Phase 9 担当。Phase 1-8 で生成された全 JSON / sheet.md / visuals.json を統合し、最終成果物 intake.md (人間向け) と intake.json (harness-creator 入力) を 決定論的に生成する。render-intake-final.py (Jinja2) と quality_gate.py / cross_check.py を順に exec する。harness-creator 引き渡し用の next-action.json は Notion 公開後の Phase 11 で生成する。
入力: Phase 1-8 の全成果物 + intake-final-template.md.tmpl + intake-final-schema.json
出力:
output/<hint>/intake.md
output/<hint>/intake.json (schemas/output.schema.json 準拠、validation field 必須。procedure 拡張時は sections.6_five_axes_summary.procedure と validation.procedure_completeness を含む)
完了条件: procedure dual-gate PASS (procedure + true_purpose 両方存在 + as-is フィールドへの to-be 非混入) + render PASS + quality_gate PASS (--require-procedure) + cross_check PASS。FAIL 時は validation.failures[].retry_phase を埋めて orchestrator へ返却 (procedure/purpose 欠落・to-be 混入は Phase4 へ差し戻し)。
Key Rules
- LLM は呼ばない: render は Jinja2、検証は決定論 script のみ。
- schema/template の正本: 旧 aggregator references を参照。Phase C で物理移管予定。
- 失敗時の戻り先明示: render fail → 該当 Phase へ、quality_gate fail → 該当軸の Phase へ、cross_check fail → 不整合元 Phase へ。
- 検証順序固定: render → quality_gate → cross_check の直列 (順序入替・並列起動禁止、atomic write 保証)。
- 日本語成果物: 本文・validation reason は日本語、schema key / CLI 引数 / path は英語。
- procedure dual-gate (purpose+procedure 両立): intake.json 生成前に
../../scripts/validate-procedure-completeness.py --interview <procedure を持つ入力> を実行し、procedure 完全性と as-is フィールドへの to-be 語彙非混入を確認する。exit0 のときのみ procedure を sections.6_five_axes_summary.procedure へ、その stdout を validation.procedure_completeness へ格納する。加えて ../../scripts/quality_gate.py --require-procedure で true_purpose と procedure の両方が非空であることを強制する。procedure/purpose 欠落または contamination 検出時は Phase4 へ差し戻す。contamination 差し戻しは同一 axis につき上限 2 回とし、超過時は contamination を warning へ降格して人間確認 1 回へ切り替え、ヒアリング全体を停止させない (goal-spec C2 の「停止しない」原則の escape)。
ゴールシーク実行
Goal
Phase 1-8 の全成果物を決定論的に統合し、schemas/output.schema.json 準拠の intake.md / intake.json を bit-identical な再現性で生成、validation.render / validation.quality_gate / validation.cross_check が全 PASS、または FAIL 時に failures[].retry_phase が必ず埋まり intake.json に validation サマリが書き戻されている状態。
Why
LLM 推論を混入させると同入力で差分が出て、後段 (run-notion-intake-publish 公開・diff 監査) が破綻する。検証 2 段 (quality_gate → cross_check) は順序固定でなければ偽陽性/偽陰性が混入する。固定手順を辿るのではなく、チェックリスト未充足を起点に必要 script をその都度起動して反復することで、入力欠落や中間生成物破損にも頑健になる。
完了チェックリスト (停止条件)
未充足項目を特定 → 必要 script (render-intake-final.py / convert_md_to_json.py / quality_gate.py / cross_check.py) を該当ステップから起動 → validation 更新 → 再度チェックリストで自己評価、を反復する。固定手順は持たない。
参考: 主要 script 起動例
# render: output/<hint>/ 直下の per-phase JSON (無ければ context.json) を集約し
# Jinja2 で intake-final.md を生成する (引数は output_dir 1 つ)。
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/scripts/render-intake-final.py output/<hint>/
cp output/<hint>/intake-final.md output/<hint>/intake.md
# intake.md → intake.json (front-matter + sections を JSON 化)
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/scripts/convert_md_to_json.py \
output/<hint>/intake.md output/<hint>/intake.json
# procedure dual-gate (intake.json 格納前): 完全性 + as-is フィールドへの to-be 非混入を
# 確認し、その stdout を validation.procedure_completeness へ格納する (C04 が再利用)。
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/scripts/validate-procedure-completeness.py \
--interview output/<hint>/interview.json
# 検証 2 段 (順序固定): quality_gate → cross_check
# cross_check の引数順は <intake.md> <intake.json> (md が先)。
# procedure 拡張 intake は --require-procedure で purpose+procedure 両立を強制する。
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/scripts/quality_gate.py --require-procedure output/<hint>/intake.json
python3 ${PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-plugins/skill-intake}}/scripts/cross_check.py output/<hint>/intake.md output/<hint>/intake.json
Step/Gate の機械可読定義は workflow-manifest.json (P1-collect / P2-render / P3-quality-gate / P4-cross-check) を参照。
Gotchas
- template / schema は移管前: 旧 aggregator references パスを直書きしている。Phase C で本 references 配下へ移管後にパス書き換える。
- render と quality_gate は単一発火点: 重複呼び出し禁止。orchestrator は本 Skill を 1 回だけ呼ぶ。単一発火点の SSOT 定義は
../run-skill-intake/SKILL.md 「単一発火点」項を参照。
- 並列起動禁止: 検証順序維持と atomic write 保証のため、本 Skill は直列・単発のみ。
- 欠落の推測補完禁止: Phase 1-9 成果物に欠けがある場合は FAIL として
retry_phase を埋めて返す (補完しない)。
Additional Resources
workflow-manifest.json — Phase (P1-P4) / Gate (C1-C4) / resource の機械可読定義
schemas/output.schema.json — intake.json 出力契約 (validation field 必須)
prompts/R1-main.md — R1 責務プロンプト (7 層 Markdown、決定論実行指示)
references/template-pointer.md — Jinja2 テンプレ / schema の正本パス案内
references/validation-flow.md — render → quality_gate → cross_check の順序と失敗戻り先表
../../scripts/validate-procedure-completeness.py — procedure 完全性 + as-is フィールドへの to-be 混入検出 (dual-gate 第一段, C02)
../../scripts/quality_gate.py — --require-procedure で true_purpose+procedure 両立を強制 (C04)
references/resource-map.yaml — リソース一覧 (machine-readable)