57%

create-plan-skill-surface

Deliver the /create-plan-side twin of skill-surface. This section wires the DECISION only — Existing Plan Mode’s add-sections/add-work-items machinery already implements the ‘enhance’ write path for a related_existing verdict, so no new write API is authored here, unlike the bug side’s enhance-wiring section.

Work Items

  • /create-plan/SKILL.md Phase 0 (run BEFORE references/phase-0-fork-decision.md §Phase 0.5 Plan Type Classification — distinct from SKILL.md’s own ## Phase 0.5 Feature-Plan Mode heading, which this gate does not touch): consume the plan-dedup verdict via gate_plan_dedup by name (cite the plan_dedup.py gate constants and exit_reason strings verbatim per LEAK:algorithmic-duplication + script-first.md §1.1; never restate the verdict algorithm, bands, or corpus-authoritative confirmation in prose) — exact_duplicate -> halt/refuse-scaffold surfacing the matched plan/bug (interactive: AskUserQuestion recommending the matched artifact, index-0 per ask-user-question.md; —called-by-orchestrator/autopilot: structured exit_reason, never a scaffold; under —autopilot WITHOUT —called-by-orchestrator, auto-select the recommended action per skill-control-contract.md rather than deadlocking); related_existing (matched_kind=plan) -> auto-redirect into Existing Plan Mode against the matched plan; related_existing (matched_kind=bug) -> surface the matched bug + recommend /fix-bug; new -> proceed normally. Dedup gates NEW-plan-mode proposals ONLY — explicitly carve out and NEVER fire the gate on: —inline (folding into an already-matched plan — itself dedup’s own OUTPUT), Existing Plan Mode (already targeting an existing plan dir), the BUG-XX-NNN bug-fast-path (scaffolding an already-tracked bug’s plan), —feature (approved-proposal scaffold), and —replace (re-authoring an existing plan).
  • /create-plan/SKILL.md: add exit_reasons duplicate_plan + redirected_existing_plan to the structured exit-state surface as BOTH SKILL.md frontmatter/prose AND a new skill_exit_reasons.create-plan entry in orchestration-rules.json with caller-handler rows for every skill that dispatches /create-plan (/continue-roadmap, /fix-next-bug, /review-plan, /add-bug’s needs_plan_escalation redirect) — mirroring the bug twin’s landed Decision-31 parity work (s-6924d386), not the prose-only shape. Add a plan-vs-bug/plan-vs-plan dedup section (consume gate_plan_dedup/compute_plan_dedup, never re-implement) mirroring /add-bug’s bug-vs-bug dedup section at add-bug/SKILL.md:55-68, including an explicit vocabulary block distinguishing duplicate_plan (exact-dup refusal) from DUPLICATE_PLAN_NAME (literal same-name-collision finding, plan_corpus/types.py:115), plan_exists/bug_plan_exists (scaffold verify-and-skip), dedup_into_section (bug subsumed by a plan), and needs_plan_escalation (add-bug’s plan-relatedness redirect).
  • Audit references/phase-0-fork-decision.md + references/existing-plan-mode.md for pre-scaffold-collision-check coverage: both files carry ZERO dedup/collision/scope_hash content today (an ABSENCE, not a false claim to correct) — ADD the real graph-driven plan-dedup gate description (gate_plan_dedup verdicts, non-fire carve-outs, redirect targets) to both, mirroring skill-surface’s w-ccc2162d precision-correction shape on the bug side. In the SAME audit pass, correct the adjacent drift found in-scope: .claude/skills/create-plan/SKILL.md:490 falsely claims existing-plan-mode.md covers ‘scope_hash Phase 0 reentry’ — the reference contains no scope_hash content at all; fix or remove that claim in SKILL.md as litter-pickup within this same file family.
  • Fold BUG-07-191 (open doc defect: references/phase-0-fork-decision.md’s Phase 0.5 reference mandates a plan_type: frontmatter the schema rejects — the SAME file w-a0f4e8f7 audits and edits) into this section via /create-plan —inline per this plan’s Execution rules plan-referenced-bug fold clause (content/overview/mission.md §Execution rules; a bug named in this section’s own intel dossier is a plan-referenced bug), then flip the tracker entry to obe via bug_tracker/api.py:reclassify_obe citing this section as the absorbing scope. A /fix-bug fork on this bug is BANNED for sessions executing this plan.

Fresh intel (regenerated)

{ “schema_version”: 1, “target”: { “kind”: “plan-section”, “ref”: “graph-native-bug-relatedness/s-0d66b1c0” }, “generated_at”: “2026-07-14T07:56:40.680735+00:00”, “graph_state”: { “head_sha”: “d281786e3”, “last_code_import_at”: “2026-07-14T07:24:06.622000000+00:00”, “embedding_stale”: false, “insights_stale”: false, “cpg_stale”: false }, “surfaces”: {}, “summary”: “intel-package[plan-section:graph-native-bug-relatedness/s-0d66b1c0] agent-authored dossier”, “degraded”: false, “dossier”: { “objective_symbols”: [], “tiers”: {}, “agent_authored”: true, “constrained_symbols”: [ “PLAN_DEDUP_RELATED_BAND”, “PLAN_DEDUP_EXACT_OVERLAP_MIN”, “PLAN_DEDUP_EXACT_MIN_TOKENS”, “BUG_DEDUP_RELATED_BAND”, “GRAPH_FIRED_THRESHOLD”, “GRAPH_COVERAGE_THRESHOLD”, “DUPLICATE_PLAN_NAME” ], “difficulty”: { “class”: “routine”, “research_online”: false, “research_mode”: “auto”, “signals”: [], “plan_dir”: “/home/eric/projects/ori_lang/plans/graph-native-bug-relatedness” } } }

(full dossier: create-plan-skill-surface—s-0d66b1c0.intel.json)