Codex compatibility note:
- Invoke repository skills with
$skill-name in Codex; this mirrored copy rewrites legacy Claude /skill-name references.
- Task tracker mandate: BEFORE executing any workflow or skill step, create/update task tracking for all steps and keep it synchronized as progress changes.
- User-question prompts mean to ask the user directly in Codex.
- Ignore Claude-specific mode-switch instructions when they appear.
- Strict execution contract: when a user explicitly invokes a skill, execute that skill protocol as written.
- Subagent authorization: when a skill is user-invoked or AI-detected and its protocol requires subagents, that skill activation authorizes use of the required
spawn_agent subagent(s) for that task.
- Do not skip, reorder, or merge protocol steps unless the user explicitly approves the deviation first.
- For workflow skills, execute each listed child-skill step explicitly and report step-by-step evidence.
- If a required step/tool cannot run in this environment, stop and ask the user before adapting.
Codex Project-Reference Loading (No Hooks)
Codex uses static project-reference loading instead of runtime-injected project docs.
When coding, planning, debugging, testing, or reviewing, open project docs explicitly using this routing.
Always read:
docs/project-config.json (project-specific paths, commands, modules, and workflow/test settings)
docs/project-reference/docs-index-reference.md (routes to the full docs/project-reference/* catalog)
docs/project-reference/lessons.md (always-on guardrails and anti-patterns)
Missing/stale context route: If docs/project-config.json, the docs index, lessons.md, CLAUDE.md, AGENTS.md, or any task-required reference doc is missing or stale, auto-run $project-init or the narrow setup route ($project-config, $docs-init, $scan-all, $scan --target=<key>, $claude-md-init) before ordinary project-specific work. If Codex mirrors or AGENTS.md are missing/stale, ask the user to run $sync-codex; do not auto-run it.
Situation-based docs:
- Project structure/architecture/tech-stack/deployment/setup (any layer — backend, frontend, or infra):
project-structure-reference.md
- Backend/CQRS/API/domain/entity changes:
backend-patterns-reference.md, domain-entities-reference.md
- Frontend/UI/styling/design-system:
frontend-patterns-reference.md, scss-styling-guide.md, design-system/README.md
- Spec authoring,
docs/specs/ pathing, or TC format: feature-spec-reference.md, spec-system-reference.md, spec-principles.md
- Behavior/public-contract changes or spec-test-code sync:
workflow-spec-test-code-cycle-reference.md plus the spec docs above
- Derived spec indexes/ERDs/reimplementation guides:
spec-system-reference.md and source Feature Specs under docs/specs/
- Integration test implementation/review:
integration-test-reference.md
- E2E test implementation/review:
e2e-test-reference.md
- Code review/audit work:
code-review-rules.md plus domain docs above based on changed files
Do not read all docs blindly. Start from docs-index-reference.md, then open only relevant files for the task.
[BLOCKING] Execute skill steps in declared order. NEVER skip, reorder, merge steps without explicit user approval.
[BLOCKING] Before each step or sub-skill call, update task tracking: in_progress on start, completed on end.
[BLOCKING] Every completed/skipped step MUST include evidence or explicit skip reason.
[BLOCKING] If Task tools unavailable, maintain equivalent step-by-step plan tracker with same status transitions.
Quick Summary
Goal: Research the codebase and collaborate with the user to deliver a validated, implementation-ready phased plan — every phase startable immediately (exact file paths, zero open decisions, mapped TC IDs) — so coding proceeds without rework at minimum future change cost.
Summary:
- PLANNING ONLY — NEVER implement/execute code; produce
plan.md + per-phase phase-XX files + a goal.md Goal Contract, then hand off.
- Main pipeline (the steps AI keeps forgetting): pre-check active/suggested plan → bootstrap Goal Contract (
goal.md) → ONE research wave (researcher + scout subagents, spawned together, barrier before synthesis) → codebase + project-reference analysis (scout if docs absent) → planner subagent writes plan.md + phase-XX files (Alternatives, Rationale, UI Layout, Test Specs) → parallelism pass (tag every phase PAR/SEQ + write set + ## Execution Waves) → post-plan granularity self-check → mandatory final tasks.
- The plan output itself carries parallelism metadata — every phase tagged
PAR/SEQ with the write set it owns, every SEQ naming its forcing dependency (see Plan Parallelism Metadata). Omitting it is a defect of THIS skill: $plan-execute fans out only on what the plan declares.
--mode={ci|cro} routing: ci plans a fix from a GitHub Actions run/log (loads references/mode-ci.md); cro plans conversion-rate optimization (25-item framework, references/mode-cro.md); default (no flag) = standard flow. Mode only ADDS a reference payload — SAME engine, SAME $plan-review gate, SAME planner agent.
- Default mode HARD (parallel subagents, project-reference docs, the
$plan-review convergence loop under its 3-round ceiling); fast mode ONLY when EVERY trivial-task condition holds. Every phase passes the 5-point granularity check ("Can I start coding RIGHT NOW?"), carries ## Test Specifications with TC IDs, uses bottom-up estimation (phase-hours drive man-days; SP DERIVED).
- Mandatory final tasks + gates: write Test Specs per phase →
$plan-validate → $plan-review (convergence loop, 3-round ceiling) → $why-review (standalone) → re-estimate vs finalized phases; New Tech/Lib gate before approval; Domain Entity Gate (MANDATORY when the plan touches an entity/VO/aggregate) — apply SYNC:domain-entity-change-gate so the plan DECIDES classification, invariant ownership, aggregate boundary, concurrency, construction, events, and the test obligation (each naming its owning file) instead of deferring them to implementation; ask the user directly confirm before any next step.
Workflow:
- Pre-Check — Detect active/suggested plan or create new directory
- Research wave — All independent research threads spawned in ONE message (researcher + scout subagents, max 5 tool calls each), then a barrier before synthesis
- Codebase Analysis — Search for project reference docs (patterns-reference, project-structure, architecture, adr); scout if not found
- Plan Creation — Planner subagent creates plan.md + phase-XX files with full sections
- Parallelism pass — Tag every phase PAR/SEQ with its write set; declare
## Execution Waves in plan.md
- Post-Validation — Optionally interview user to confirm decisions via $plan-validate
Key Rules:
- PLANNING ONLY: do NOT implement or execute code changes
- Always run $plan-review after plan creation
- Ask user to confirm before any next step
- MANDATORY IMPORTANT MUST ATTENTION detect new tech/lib in plan and create validation task (see New Tech/Lib Gate below)
- MANDATORY IMPORTANT MUST ATTENTION when the plan touches an entity, value object, or aggregate, run the Domain Entity Gate below — state paradigm + subdomain fit BEFORE any entity task, and answer every triggered decision row with its OWNING FILE; "discover during implementation" is not an answer. Record
No domain-entity surface — gate N/A when it does not fire
First Principle — Easy to Change
Success metric of every coding decision: future change cost.
DRY, SRP, abstraction, design patterns, naming, layering, tests — every
technique serves one goal: making next change cheaper.
Evaluating code, refactor, test, abstraction, ask:
does this make next change cheaper or more expensive?
- Reject "best practices" raising change cost (premature abstraction,
speculative generality, leaky indirection, ceremony without payoff).
- Name real enemies in findings: coupling, hidden state, duplicated
knowledge, unclear intent, irreversible decisions exposed too early.
- Simpler design easy to change beats sophisticated design that isn't.
Apply this lens before invoking any rule, pattern, or checklist
below — if a downstream rule raises change cost, this principle wins.
Default Mode Policy
Default mode HARD (full rigor). Every section below — parallel researcher subagents, the full $plan-review convergence loop (3-round ceiling), base-class greps, microservices/event-driven analysis, mandatory user approval — applies by default.
Opt out to fast mode ONLY when ALL true (task genuinely trivial):
- Single-file edit, ≤30 lines changed
- No design choice (only one reasonable approach)
- No cross-service impact, no contract change, no new dependency
- No new pattern — follows existing codebase pattern
- User explicitly asked for a quick change
Any condition fails → use full protocol below. When in doubt, default hard — skipping rigor on a non-trivial task wastes more rework than rigor saves.
Fast mode skips (and only skips): parallel researcher subagents (direct grep instead), the $plan-review re-review loop (single round, no fresh re-review even when findings remain), $plan-validate interview (inline confirm only), New Tech/Lib Gate (only if truly no new deps).
New Tech/Lib Gate (MANDATORY for all plans)
MANDATORY IMPORTANT MUST ATTENTION after plan creation, detect new tech/packages/libraries not in project. If found: task tracking per lib → WebSearch top 3 alternatives → compare (fit, size, community, learning curve, license) → recommend with confidence % → ask the user directly to confirm. Skip if plan uses only existing dependencies.
Domain Entity Gate (MANDATORY when the plan touches an entity, VO, or aggregate)
Apply SYNC:domain-entity-change-gate (inlined below) — the SAME protocol $plan-review and $changes-review read, and whose A–P checklist $domain-entities-review owns. — why: a plan that leaves aggregate boundary, invariant ownership, or concurrency to "discover during implementation" ships a design review will reject, and the rework is paid twice.
Fires when the plan introduces or changes a domain entity / value object / aggregate root, its fields, invariants, relationships, or state transitions; an aggregate boundary, repository, or cross-aggregate reference; a domain event; or a concurrency/reconstitution concern. Otherwise record No domain-entity surface — gate N/A.
The plan MUST name the decision AND the owning file for every triggered row — an unanswered row is a plan that is not executable:
- Classification — entity vs value object vs aggregate root (swap test applied).
- Invariant ownership — which rules the entity enforces vs which the boundary validates; failure signalling (throw vs
Result) consistent with the project convention.
- Aggregate boundary + concurrency — what shares a transaction and why; cross-aggregate refs by ID; concurrency token on the ROOT; enforcing mechanism for any set-based invariant.
- Construction vs reconstitution — separate creation and load paths; load raises no events.
- Events — what is raised, when it dispatches (after commit / outbox), domain vs integration contract.
- Test obligation — each invariant gets a property TC + boundary counter-case as a planned task, NEVER left implicit.
MUST ATTENTION state paradigm (OO-mutable / type-driven-immutable / event-sourced) and subdomain fit (core / supporting / generic / CRUD) BEFORE planning entity tasks — NEVER plan a rich domain model for a CRUD subdomain, and NEVER plan setter/mutability tasks against an immutable or event-sourced model.
Greenfield Mode
Auto-detected: No existing codebase found (no discovered source directories, no manifest files, no populated project-config.json) → skill auto-switches to greenfield mode. Planning artifacts (docs/, plans/, .claude/) don't count — repository must have actual code directories with content.
When greenfield detected:
- Skip codebase analysis phase (researcher subagents grepping code)
- Replace with: market research + business evaluation via WebSearch + WebFetch
- Delegate architecture decisions to
solution-architect agent
- Output:
plans/{id}/plan.md with greenfield-specific phases (domain model, tech stack, project structure)
- Skip reading project reference docs (won't exist in greenfield)
- Enable broad web research: tech landscape, best practices, framework comparisons
- Every decision point requires ask the user directly with 2-4 options + confidence %
- [CRITICAL] Business-First Protocol: Tech stack decisions come AFTER full business analysis. Do NOT ask user to pick tech stack upfront. Instead: complete business evaluation → derive technical requirements → research current market options → produce comparison report → present to user. See
solution-architect agent for full tech stack research methodology.
- Research reports <=150 lines; plan.md <=80 lines
- External Memory: Write all research/analysis to
.ai/workspace/analysis/{task-name}.analysis.md. Re-read ENTIRE analysis file before generating plan.
Run the planning methodology engine. Load the relevant references/engine-*.md for each phase (skip a phase per its own skip rule):
references/engine-research.md — Research & Analysis (skip if given researcher reports)
references/engine-figma.md — Design Context Extraction (skip if no Figma URLs / backend-only)
references/engine-codebase-understanding.md — Codebase Understanding (skip if given scout reports)
references/engine-solution-design.md — Solution Design (trade-offs, security, performance, edge cases, architecture)
references/engine-plan-organization.md — Plan Creation, Organization & Output Standards
Mode Dispatch (--mode={ci|cro})
Default (no --mode flag): IGNORE this section — run the standard plan flow below, byte-for-byte unchanged. --mode only adds a domain-specific reference load + intake convention on top of the SAME engine, the SAME mandatory $plan-review gate, and the SAME planner agent. It never replaces the engine.
| Flag |
Positional $ARGUMENTS |
Load before planning |
Plan frontmatter overrides |
--mode=ci |
a GitHub Actions run/log URL |
references/mode-ci.md (CI failure classes: build/test/env/Docker/dependencies) |
priority: P1, tags: [ci, bugfix] |
--mode=cro |
content/issues to optimize (optional screenshots/URL) |
references/mode-cro.md (25-item CRO framework + multimodal intake) |
priority: P2, tags: [cro, conversion] |
When a --mode is present: (1) read the matching references/mode-*.md; (2) apply its intake + domain focus to $ARGUMENTS; (3) run the standard plan workflow below — same planner subagent, same phase-file structure, same mandatory $plan-review. The mode adds a reference payload only.
Scaffolding-First Protocol (Conditional)
Activation conditions (ALL must be true):
- Active workflow is
workflow-greenfield-init OR workflow-big-feature
- AI MUST ATTENTION self-investigate for existing base/foundational abstractions using these patterns:
- Abstract/base classes:
abstract class.*Base|Base[A-Z]\w+|Abstract[A-Z]\w+
- Generic interfaces:
interface I\w+<|IGeneric|IBase
- Infrastructure abstractions:
IRepository|IUnitOfWork|IService|IHandler
- Utility/extension layers:
Extensions|Helpers|Utils|Common (directories or classes)
- Frontend foundations:
base.*component|base.*service|base.*store|abstract.*component (if frontend present)
- DI/IoC registration: search for DI registration patterns idiomatic to project's framework
- If existing scaffolding found → SKIP. Log: "Existing scaffolding detected at {file:line}. Skipping Phase 1 scaffolding."
- If NO foundational abstractions found → PROCEED with scaffolding phase.
When activated:
Phase 1 of plan MUST ATTENTION be Architecture Scaffolding — all base abstract classes, generic interfaces, infrastructure abstractions, DI registration with OOP/SOLID principles. Runs BEFORE feature stories. AI self-investigates what base classes the tech stack needs. All infrastructure behind interfaces with ≥1 concrete implementation (Dependency Inversion). Phase 1's deliverable MUST ATTENTION also include the golden-path example set $scaffold emits — one worked, compile-checked *.example.* per applicable pattern (backend: command · query · handler · entity-with-invariants · value-object · repository · domain event + event handler; frontend-if-UI: form · list · store · API service; tests: one integration test on happy + failure path) in an isolated, production-excluded examples/ tree using the scaffolded base abstractions, so post-scaffold $architecture-review-full gate has real, gradeable code before any feature work.
When skipped: Plan proceeds normally — feature stories build on existing base classes.
PLANNING-ONLY — Collaboration Required
DO NOT use the manual plan-mode switching tool — already in a planning workflow.
DO NOT implement or execute any code changes.
COLLABORATE with user: ask decision questions, present options with recommendations.
After plan creation, ALWAYS run $plan-review to validate plan.
ASK user to confirm plan before any next step.
Your mission
Pre-Creation Check (Active vs Suggested Plan)
Check ## Plan Context section in injected context:
- If "Plan:" shows a path → Active plan exists. Ask user: "Continue with this? [Y/n]"
- If "Suggested:" shows a path → Branch-matched hint only. Ask if user wants to activate or create new.
- If "Plan: none" → Create new plan using naming from
## Naming section.
Workflow
- If creating new: create directory using
Plan dir: from ## Naming section, then run node .claude/scripts/set-active-plan.cjs {plan-dir}. If reusing: use active plan path from Plan Context. Pass directory path to every subagent.
- Goal Contract bootstrap (BEFORE investigation and phase writing): resolve active goal per
SYNC:goal-contract-satisfaction-loop — create/update {plan-dir}/goal.md from .claude/templates/goal-contract-template.md, recording original request, purpose, success criteria, constraints, required evidence. Every phase's success criteria maps to a saved goal criterion. Redact secrets.
- Follow strictly the "Plan Creation & Organization" rules in
references/engine-plan-organization.md.
- Project-reference preflight — BEFORE dispatch. Resolve and read the required project-reference documents first. Record missing or stale references as scoped research inputs; never discover the governing conventions only after workers have already started.
- Research wave — ONE message, ONE barrier. Enumerate the independent research threads this task needs — per-module code investigation, pattern discovery, dependency mapping, prior-art/library search — then tag each
PAR/SEQ and declare Parallel plan: wave 1 = [...] · SEQ = [...] (reason) before dispatch. Research is read-only, so a thread is PAR unless it consumes another thread's output (name that output). Spawn the whole wave in ONE message: researcher agents (max 2) for external/prior-art threads, max 5 tool calls per agent; scout agents for codebase threads, one per module/area with a disjoint read scope. Give each agent its own report path under {plan-dir}/research/ or {plan-dir}/scout/ so no two agents write the same file.
- Analyze codebase against the preflight references. ONLY IF a required reference is missing or older than 3 days: include a scoped
$scout <instructions> member in the research wave to gather the missing evidence; do not launch an unplanned later round trip.
- Barrier, then synthesize. Advance only after EVERY wave member returns (a skipped thread counts as returned). Read the report FILES (not memory), reconcile conflicting findings, and record unresolved gaps — a second wave is dispatched only for gaps the first wave exposed.
- Main agent gathers research/scout report filepaths; pass to
planner subagent with prompt to create implementation plan.
- Parallelism pass (MANDATORY before handoff). Validate each phase's Mode, Wave, write set, and SEQ dependency, then write the
## Execution Waves line — see Plan Parallelism Metadata. This is what lets $plan-execute fan out; an untagged plan executes strictly sequentially.
- Main agent receives implementation plan from
planner; ask user to review.
Post-Plan Validation (Optional)
After plan creation, offer validation interview to confirm decisions before implementation.
Check ## Plan Context → Validation: mode=X, questions=MIN-MAX:
| Mode |
Behavior |
prompt |
Ask user: "Validate this plan with a brief interview?" → Yes (Recommended) / No |
auto |
Automatically execute $plan-validate {plan-path} |
off |
Skip validation step entirely |
If mode is prompt: Use ask the user directly tool with options above.
If user chooses validation or mode is auto: Execute $plan-validate {plan-path} SlashCommand.
Output Requirements
Plan Directory Structure (use Plan dir: from ## Naming section)
{plan-dir}/
├── research/
│ ├── researcher-XX-report.md
│ └── ...
├── reports/
│ ├── XX-report.md
│ └── ...
├── scout/
│ ├── scout-XX-report.md
│ └── ...
├── plan.md
├── phase-XX-phase-name-here.md
└── ...
Research Output Requirements
- Research markdown reports concise (<=150 lines); cover all topics + citations.
Plan File Specification
Every plan.md MUST ATTENTION start with YAML frontmatter:
---
title: '{Brief title}'
description: '{One sentence for card preview}'
status: pending
priority: P2
effort: { sum of phases, e.g., 4h }
story_points: { sum of phase SPs, e.g., 8 }
man_days_traditional: '{ total e.g., 6d (4d code + 2d test) }'
man_days_ai: '{ total with AI e.g., 3d (2d code + 1d test) }'
branch: { current git branch }
tags: [relevant, tags]
created: { YYYY-MM-DD }
---
Save overview at {plan-dir}/plan.md (<80 lines): list each phase with status, progress, Mode (PAR/SEQ), links to phase files; add the ## Execution Waves line below the phases table.
For each phase, create {plan-dir}/phase-XX-phase-name-here.md with sections: Context links, Overview, Key Insights, Requirements, Alternatives Considered (minimum 2 approaches with pros/cons), Design Rationale (WHY chosen approach), Architecture, UI Layout (see below), Related code files, Parallel Execution (Mode PAR/SEQ · Write set · SEQ dependency — see below), Implementation Steps, Todo list, Success Criteria, Risk Assessment, Security Considerations, Next steps.
UI Layout: For frontend-facing phases, include ASCII wireframe. Classify components by tier (common/domain-shared/page-app). For backend-only phases: ## UI Layout → N/A — Backend-only change.
Plan Parallelism Metadata (MANDATORY — every plan output)
$plan-execute fans out ONLY on what the plan declares. An untagged plan forces sequential execution, so omitting this metadata is a defect of THIS skill, not of the executor.
Tag every phase PAR or SEQ — in the plan.md phases table (Mode column) and in each phase file's ## Parallel Execution section. PAR = its inputs contain no pending phase's output AND its write set is disjoint from every other PAR phase.
Declare the write set per phase — the exact file paths the phase creates / modifies / deletes (globs only when their members are enumerable from the plan). Two PAR phases MUST have disjoint write sets; any overlap → merge the phases, or demote the later one to SEQ and name the shared file.
Every SEQ names its forcing dependency — SEQ — needs phase-02's {migration | generated type | contract | file}. "Feels sequential", "safer in order", or an unnamed dependency is not a reason: retag it PAR.
Group PAR phases into waves in a ## Execution Waves line in plan.md:
Execution waves: wave 1 = [phase-01, phase-03] · wave 2 = [phase-04] · SEQ = [phase-02 (needs phase-01 schema), phase-06 (approval gate)].
Gates and reviews are SEQ boundaries — a user-approval, review, verification, or migration phase never shares a wave with the phases it gates; it runs after that wave's barrier.
Phase-file block format (copy verbatim into each phase file):
## Parallel Execution
- Mode: PAR | SEQ
- Write set: `src/a/x.ts`, `src/a/x.spec.ts`
- Wave: 1
- SEQ dependency: {name the phase + the exact artifact it produces — omit when Mode: PAR}
Behavior/Sync Planning Checks
- For behavior-changing work, every phase should name changed behavior, unchanged behavior to preserve, TC/test proof, and docs/spec sync action.
- For AI-extracted specs/TCs, plan must mark them reference-only until canonical acceptance.
- For
.claude skills/hooks/workflows/sync tooling, plan must include generated mirror sync or explicit no-sync evidence.
IMPORTANT Task Planning Notes (MUST ATTENTION FOLLOW)
- Always break work into many small todo tasks via task tracking
- Always add a final review todo task to verify work quality and identify fixes/enhancements
- MANDATORY FINAL TASKS: After all planning todos, ALWAYS add these final tasks:
- Task: "Write test specifications for each phase" — Add
## Test Specifications with TC-{FEATURE}-{NNN} IDs to every phase file. Use $spec [mode=tests] if feature docs exist; Evidence: TBD for TDD-first mode.
- Task: "Run $plan-validate" —
$plan-validate skill interviews user with critical questions, validates plan assumptions.
- Task: "Run $plan-review" —
$plan-review skill, convergence loop (review → validate findings → fix → fresh full re-review) bounded by a 3-round ceiling, NEVER a target: a clean pass ENDS the loop at ANY round, round 1 included; round 3 completing with CRITICAL/HIGH/MEDIUM still open escalates by asking the user directly, never a silent PASS. SP raises the RIGOR of each round, never a round floor: ≤3 → checklist + code-proof trace; 4-8 → + adversarial simulation; >8 → code-proof trace mandatory in every round.
- Task: "Run $why-review (standalone only)" — If NOT inside a workflow,
$why-review validates design rationale, alternatives considered, risk assessment. Skip if a workflow already includes $why-review.
- Task: "Re-evaluate estimation against finalized plan" — Pre-completion estimates anchor on scope guesses; finalized phases reveal true cost. After phases/TCs/decisions locked: (a) re-derive
bottom_up_hours = Σ phase_hours from finalized phase files; (b) recompute likely_days, risk_margin_pct, min-max range per SYNC:estimation-framework; (c) compare to current frontmatter man_days_traditional / story_points. If |delta| > 20% → UPDATE frontmatter, add reestimate_delta_pct: <signed> + 1-line reestimate_reason. If |delta| > 50% → flag SHOULD-RESCOPE and surface to user by asking the user directly before implementation.
Important Notes
- Activate needed skills from catalog during process.
- Token efficiency without sacrificing quality. Sacrifice grammar for concision in reports.
- Unresolved questions → list at end of report.
Standalone Review Gate (Non-Workflow Only)
MANDATORY IMPORTANT MUST ATTENTION: If skill is called outside a workflow (standalone $plan), generated plan MUST ATTENTION include $changes-review as a final phase/task in plan. Ensures all implementation changes get reviewed before commit even without a workflow enforcing it.
If already running inside a workflow (e.g., workflow-feature, workflow-bugfix), skip this — workflow sequence handles $changes-review at appropriate step.
Next Steps (Standalone: MUST ATTENTION ask user by asking the user directly. Skip if inside workflow.)
MANDATORY IMPORTANT MUST ATTENTION — NO EXCEPTIONS after completing this skill, MUST ATTENTION use ask the user directly to present these options. Do NOT skip because task seems "simple" or "obvious" — user decides:
- "Proceed with full workflow (Recommended)" — Detect best workflow to continue (plan created). Ensures review, validation, implementation, testing not skipped.
- "$why-review" — Validate design rationale before implementation (standalone only — skipped when workflow includes it)
- "$plan-review" — Validate plan before implementation
- "$plan-validate" — Interview user to confirm plan decisions
- "$plan-execute" — Start coding & testing the finalized plan. Recommended implementation route after plan validated.
- "Skip, continue manually" — user decides
Post-Plan Granularity Self-Check (MANDATORY)
After creating all phase files, run recursive decomposition loop:
- Score each phase against 5-point criteria (file paths, no planning verbs, ≤30min steps, ≤5 files, no open decisions)
- Each FAILING phase → create task to decompose into sub-plan (with own $plan → $plan-review → $plan-validate → fix cycle)
- Re-score new phases. Repeat until ALL leaf phases pass (max depth: 3)
- Self-question: "For each phase, can I start coding RIGHT NOW? If any needs 'figuring out' → sub-plan it."
Preservation Inventory (MANDATORY for bugfixes)
[IMPORTANT] Use task tracking to break ALL work into small tasks BEFORE starting — including tasks for each file read. Prevents context loss from long files. For simple tasks, MUST ATTENTION ask user whether to skip.
docs/project-reference/domain-entities-reference.md — Domain entity catalog, relationships, cross-service sync (read when task involves business entities/models)
docs/specs/ — Test specifications by module (read existing TCs to include test strategy in plan)
Each phase file MUST ATTENTION satisfy: <=5 files per phase, <=3h effort, clear success criteria, mapped test cases.
Evidence Gate: MANDATORY IMPORTANT MUST ATTENTION — every claim, finding, recommendation requires file:line proof or traced evidence with confidence percentage (>80% to act, <80% must verify first).
External Memory: For complex or lengthy work (research, analysis, scan, review), write intermediate findings and final results to a report file in plans/reports/ — prevents context loss and serves as deliverable.
Plan Granularity — Every phase must pass 5-point check before implementation:
- Lists exact file paths to modify (not generic "implement X")
- No planning verbs (research, investigate, analyze, determine, figure out)
- Steps ≤30min each, phase total ≤3h
- ≤5 files per phase
- No open decisions or TBDs in approach
Failing phases → create sub-plan. Repeat until ALL leaf phases pass (max depth: 3).
Self-question: "Can I start coding RIGHT NOW? If any step needs 'figuring out' → sub-plan it."
Preservation Inventory — MANDATORY for bugfix plans. Trigger keywords in plan title/frontmatter: fix, bug, regression, broken, defect. Author MUST produce this table BEFORE writing implementation steps.
Columns: Invariant | file:line | Why (data consequence if broken) | Verification (TC-ID or grep)
BLOCKED until: ≥3 rows · every File cell has file:line · every Verification cell has TC-ID or grep (not "manually verify")
Nested Task Expansion Contract — For workflow-step invocation, the [Workflow] ... row is only a parent container; the child skill still creates visible phase tasks.
- Call the current task list first. If a matching active parent workflow row exists, set
nested=true and record parentTaskId; otherwise run standalone.
- Create one task per declared phase before phase work. When nested, prefix subjects
[N.M] $skill-name — phase.
- When nested, link the parent with
TaskUpdate(parentTaskId, addBlockedBy: [childIds]).
- Orchestrators must pre-expand a child skill's phase list and link the workflow row before invoking that child skill or sub-agent.
- Mark exactly one child
in_progress before work and completed immediately after evidence is written.
- Complete the parent only after all child tasks are completed or explicitly cancelled with reason.
Blocked until: the current task list done, child phases created, parent linked when nested, first child marked in_progress.
Project Reference Docs Gate — Run after task-tracking bootstrap and before target/source file reads, grep, edits, or analysis. Project docs override generic framework assumptions.
- Identify scope: file types, domain area, and operation.
- Read
docs/project-config.json first — the project's machine-readable map. It is the single source of truth for THIS repo (modules/paths, framework + search keywords, test/E2E/integration run-commands, design system, architecture rules, workflow patterns); ground exact paths, run-commands, and conventions on it before investigating, planning, or coding — never assume framework defaults (CLAUDE.md + reference docs are derived from it). If it — or the docs index, lessons.md, CLAUDE.md, AGENTS.md, or any required reference doc — is missing or stale, auto-run $project-init or the narrow route ($project-config, $docs-init, $scan-all, $scan --target=<key>, $claude-md-init) first; if Codex mirrors or AGENTS.md are stale, ask the user to run $sync-codex (never auto-run it).
- Required docs by trigger: always
docs/project-reference/lessons.md; doc lookup docs-index-reference.md; review code-review-rules.md; backend/CQRS/API backend-patterns-reference.md; domain/entity domain-entities-reference.md; frontend/UI frontend-patterns-reference.md; styles/design scss-styling-guide.md + design-system/design-system-canonical.md; integration tests integration-test-reference.md; E2E e2e-test-reference.md; feature docs/specs feature-spec-reference.md + spec-system-reference.md + spec-principles.md; behavior/public-contract/spec-test-code sync workflow-spec-test-code-cycle-reference.md; derived spec index/ERD/reimplementation guides spec-system-reference.md + source Feature Specs under docs/specs/; architecture/new area project-structure-reference.md.
- Read every required doc, then before target work state:
Reference docs read: ... | Not applicable: ....
Ready when: scope evaluated, docs/project-config.json consulted, required docs checked/read or setup route completed, lessons.md confirmed, citation emitted.
Task Tracking & External Report Persistence — Bootstrap this before execution; then run project-reference doc prefetch before target/source work.
- Create a small task breakdown before target file reads, grep, edits, or analysis. On context loss, inspect the current task list first.
- Mark one task
in_progress before work and completed immediately after evidence; never batch transitions.
- For plan/review work, create
plans/reports/{skill}-{YYMMDD}-{HHmm}-{slug}.md before first finding.
- Append findings after each file/section/decision and synthesize from the report file at the end.
- Final output cites
Full report: plans/reports/{filename}.
Blocked until: task breakdown exists, report path declared for plan/review work, first finding persisted before the next finding.
Critical Thinking Mindset — Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence >80% to act.
Anti-hallucination: Never present guess as fact — cite sources for every claim, admit uncertainty freely, self-check output for errors, cross-reference independently, stay skeptical of own confidence — certainty without evidence root of all hallucination.
Sequential Thinking Protocol — Structured multi-step reasoning for complex/ambiguous work. Use when planning, reviewing, debugging, or refining ideas where one-shot reasoning is unsafe.
Trigger when: complex problem decomposition · adaptive plans needing revision · analysis with course correction · unclear/emerging scope · multi-step solutions · hypothesis-driven debugging · cross-cutting trade-off evaluation.
Format (explicit mode — visible thought trail):
Thought N/M: [aspect] — one aspect per thought, state assumptions/uncertainty
Thought N/M [REVISION of Thought K]: ... — when prior reasoning invalidated; state Original / Why revised / Impact
Thought N/M [BRANCH A from Thought K]: ... — explore alternative; converge with decision rationale
Thought N/M [HYPOTHESIS]: ... then [VERIFICATION]: ... — test before acting
Thought N/N [FINAL] — only when verified, all critical aspects addressed, confidence >80%
Mandatory closers: Confidence % stated · Assumptions listed · Open questions surfaced · Next action concrete.
Stop conditions: confidence <80% on any critical decision → escalate by asking the user directly · ≥3 revisions on same thought → re-frame the problem · branch count >3 → split into sub-task.
Implicit mode: apply methodology internally without visible markers when adding markers would clutter the response (routine work where reasoning aids accuracy).
Deep-dive: see $sequential-thinking skill (.claude/skills/sequential-thinking/SKILL.md) for worked examples (API design, debugging, architecture), advanced techniques (spiral refinement, hypothesis testing, convergence), and meta-strategies (uncertainty handling, revision cascades).
Understand Code First — HARD-GATE: Do NOT write, plan, or fix until you READ existing code.
- Search 3+ similar patterns (
grep/glob) — cite file:line evidence
- Read existing files in target area — understand structure, base classes, conventions
- Run
python .claude/scripts/code_graph trace <file> --direction both --json when .code-graph/graph.db exists
- Map dependencies via
connections or callers_of — know what depends on your target
- Write investigation to `
…(truncated)
1---2name: plan-23description: [Planning] Use when you need intelligent plan creation with prompt enhancement. Flag: --mode={ci|cro} (default none — standard planning); --mode=ci plans a fix from a GitHub Actions CI run/log, --mode=cro plans conversion-rate optimization (25-item CRO framework).4---56> Codex compatibility note:7>8> - Invoke repository skills with `$skill-name` in Codex; this mirrored copy rewrites legacy Claude `/skill-name` references.9> - Task tracker mandate: BEFORE executing any workflow or skill step, create/update task tracking for all steps and keep it synchronized as progress changes.10> - User-question prompts mean to ask the user directly in Codex.11> - Ignore Claude-specific mode-switch instructions when they appear.12> - Strict execution contract: when a user explicitly invokes a skill, execute that skill protocol as written.13> - Subagent authorization: when a skill is user-invoked or AI-detected and its protocol requires subagents, that skill activation authorizes use of the required `spawn_agent` subagent(s) for that task.14> - Do not skip, reorder, or merge protocol steps unless the user explicitly approves the deviation first.15> - For workflow skills, execute each listed child-skill step explicitly and report step-by-step evidence.16> - If a required step/tool cannot run in this environment, stop and ask the user before adapting.1718<!-- CODEX:PROJECT-REFERENCE-LOADING:START -->1920## Codex Project-Reference Loading (No Hooks)2122Codex uses static project-reference loading instead of runtime-injected project docs.23When coding, planning, debugging, testing, or reviewing, open project docs explicitly using this routing.2425**Always read:**2627- `docs/project-config.json` (project-specific paths, commands, modules, and workflow/test settings)28- `docs/project-reference/docs-index-reference.md` (routes to the full `docs/project-reference/*` catalog)29- `docs/project-reference/lessons.md` (always-on guardrails and anti-patterns)3031**Missing/stale context route:** If `docs/project-config.json`, the docs index, `lessons.md`, `CLAUDE.md`, `AGENTS.md`, or any task-required reference doc is missing or stale, auto-run `$project-init` or the narrow setup route (`$project-config`, `$docs-init`, `$scan-all`, `$scan --target=<key>`, `$claude-md-init`) before ordinary project-specific work. If Codex mirrors or `AGENTS.md` are missing/stale, ask the user to run `$sync-codex`; do not auto-run it.3233**Situation-based docs:**3435- Project structure/architecture/tech-stack/deployment/setup (any layer — backend, frontend, or infra): `project-structure-reference.md`36- Backend/CQRS/API/domain/entity changes: `backend-patterns-reference.md`, `domain-entities-reference.md`37- Frontend/UI/styling/design-system: `frontend-patterns-reference.md`, `scss-styling-guide.md`, `design-system/README.md`38- Spec authoring, `docs/specs/` pathing, or TC format: `feature-spec-reference.md`, `spec-system-reference.md`, `spec-principles.md`39- Behavior/public-contract changes or spec-test-code sync: `workflow-spec-test-code-cycle-reference.md` plus the spec docs above40- Derived spec indexes/ERDs/reimplementation guides: `spec-system-reference.md` and source Feature Specs under `docs/specs/`41- Integration test implementation/review: `integration-test-reference.md`42- E2E test implementation/review: `e2e-test-reference.md`43- Code review/audit work: `code-review-rules.md` plus domain docs above based on changed files4445Do not read all docs blindly. Start from `docs-index-reference.md`, then open only relevant files for the task.4647<!-- CODEX:PROJECT-REFERENCE-LOADING:END -->4849<!-- PROMPT-ENHANCE:STEP-TASK-ANCHOR:START -->5051> **[BLOCKING]** Execute skill steps in declared order. NEVER skip, reorder, merge steps without explicit user approval.52> **[BLOCKING]** Before each step or sub-skill call, update task tracking: `in_progress` on start, `completed` on end.53> **[BLOCKING]** Every completed/skipped step MUST include evidence or explicit skip reason.54> **[BLOCKING]** If Task tools unavailable, maintain equivalent step-by-step plan tracker with same status transitions.5556<!-- PROMPT-ENHANCE:STEP-TASK-ANCHOR:END -->5758## Quick Summary5960**Goal:** Research the codebase and collaborate with the user to deliver a validated, implementation-ready phased plan — every phase startable immediately (exact file paths, zero open decisions, mapped TC IDs) — so coding proceeds without rework at minimum future change cost.6162**Summary:**6364- PLANNING ONLY — NEVER implement/execute code; produce `plan.md` + per-phase `phase-XX` files + a `goal.md` Goal Contract, then hand off.65- **Main pipeline (the steps AI keeps forgetting):** pre-check active/suggested plan → bootstrap Goal Contract (`goal.md`) → ONE research wave (`researcher` + `scout` subagents, spawned together, barrier before synthesis) → codebase + project-reference analysis (scout if docs absent) → `planner` subagent writes `plan.md` + `phase-XX` files (Alternatives, Rationale, UI Layout, Test Specs) → parallelism pass (tag every phase PAR/SEQ + write set + `## Execution Waves`) → post-plan granularity self-check → mandatory final tasks.66- **The plan output itself carries parallelism metadata** — every phase tagged `PAR`/`SEQ` with the write set it owns, every `SEQ` naming its forcing dependency (see [Plan Parallelism Metadata](#plan-parallelism-metadata-mandatory--every-plan-output)). Omitting it is a defect of THIS skill: `$plan-execute` fans out only on what the plan declares.67- **`--mode={ci|cro}` routing:** `ci` plans a fix from a GitHub Actions run/log (loads `references/mode-ci.md`); `cro` plans conversion-rate optimization (25-item framework, `references/mode-cro.md`); default (no flag) = standard flow. Mode only ADDS a reference payload — SAME engine, SAME `$plan-review` gate, SAME `planner` agent.68- Default mode HARD (parallel subagents, project-reference docs, the `$plan-review` convergence loop under its 3-round ceiling); fast mode ONLY when EVERY trivial-task condition holds. Every phase passes the 5-point granularity check ("Can I start coding RIGHT NOW?"), carries `## Test Specifications` with TC IDs, uses bottom-up estimation (phase-hours drive man-days; SP DERIVED).69- **Mandatory final tasks + gates:** write Test Specs per phase → `$plan-validate` → `$plan-review` (convergence loop, 3-round ceiling) → `$why-review` (standalone) → re-estimate vs finalized phases; New Tech/Lib gate before approval; **Domain Entity Gate (MANDATORY when the plan touches an entity/VO/aggregate)** — apply `SYNC:domain-entity-change-gate` so the plan DECIDES classification, invariant ownership, aggregate boundary, concurrency, construction, events, and the test obligation (each naming its owning file) instead of deferring them to implementation; ask the user directly confirm before any next step.7071**Workflow:**72731. **Pre-Check** — Detect active/suggested plan or create new directory742. **Research wave** — All independent research threads spawned in ONE message (researcher + scout subagents, max 5 tool calls each), then a barrier before synthesis753. **Codebase Analysis** — Search for project reference docs (patterns-reference, project-structure, architecture, adr); scout if not found764. **Plan Creation** — Planner subagent creates plan.md + phase-XX files with full sections775. **Parallelism pass** — Tag every phase PAR/SEQ with its write set; declare `## Execution Waves` in plan.md786. **Post-Validation** — Optionally interview user to confirm decisions via $plan-validate7980**Key Rules:**8182- PLANNING ONLY: do NOT implement or execute code changes83- Always run $plan-review after plan creation84- Ask user to confirm before any next step85- **MANDATORY IMPORTANT MUST ATTENTION** detect new tech/lib in plan and create validation task (see New Tech/Lib Gate below)86- **MANDATORY IMPORTANT MUST ATTENTION** when the plan touches an entity, value object, or aggregate, run the **Domain Entity Gate** below — state paradigm + subdomain fit BEFORE any entity task, and answer every triggered decision row with its OWNING FILE; "discover during implementation" is not an answer. Record `No domain-entity surface — gate N/A` when it does not fire8788## First Principle — Easy to Change8990> **Success metric of every coding decision: _future change cost_.**91> DRY, SRP, abstraction, design patterns, naming, layering, tests — every92> technique serves one goal: **making next change cheaper**.9394Evaluating code, refactor, test, abstraction, ask:95**does this make next change cheaper or more expensive?**9697- Reject "best practices" raising change cost (premature abstraction,98 speculative generality, leaky indirection, ceremony without payoff).99- Name real enemies in findings: **coupling, hidden state, duplicated100 knowledge, unclear intent, irreversible decisions exposed too early**.101- Simpler design easy to change beats sophisticated design that isn't.102103Apply this lens **before** invoking any rule, pattern, or checklist104below — if a downstream rule raises change cost, this principle wins.105106---107108## Default Mode Policy109110> **Default mode HARD (full rigor).** Every section below — parallel researcher subagents, the full `$plan-review` convergence loop (3-round ceiling), base-class greps, microservices/event-driven analysis, mandatory user approval — applies by default.111>112> **Opt out to fast mode ONLY when ALL true** (task genuinely trivial):113>114> - Single-file edit, ≤30 lines changed115> - No design choice (only one reasonable approach)116> - No cross-service impact, no contract change, no new dependency117> - No new pattern — follows existing codebase pattern118> - User explicitly asked for a quick change119>120> **Any condition fails → use full protocol below.** When in doubt, default hard — skipping rigor on a non-trivial task wastes more rework than rigor saves.121>122> **Fast mode skips (and only skips):** parallel researcher subagents (direct grep instead), the `$plan-review` re-review loop (single round, no fresh re-review even when findings remain), `$plan-validate` interview (inline confirm only), New Tech/Lib Gate (only if truly no new deps).123124## New Tech/Lib Gate (MANDATORY for all plans)125126**MANDATORY IMPORTANT MUST ATTENTION** after plan creation, detect new tech/packages/libraries not in project. If found: task tracking per lib → WebSearch top 3 alternatives → compare (fit, size, community, learning curve, license) → recommend with confidence % → ask the user directly to confirm. **Skip if** plan uses only existing dependencies.127128## Domain Entity Gate (MANDATORY when the plan touches an entity, VO, or aggregate)129130> Apply `SYNC:domain-entity-change-gate` (inlined below) — the SAME protocol `$plan-review` and `$changes-review` read, and whose A–P checklist `$domain-entities-review` owns. — why: a plan that leaves aggregate boundary, invariant ownership, or concurrency to "discover during implementation" ships a design review will reject, and the rework is paid twice.131132**Fires when** the plan introduces or changes a domain entity / value object / aggregate root, its fields, invariants, relationships, or state transitions; an aggregate boundary, repository, or cross-aggregate reference; a domain event; or a concurrency/reconstitution concern. Otherwise record `No domain-entity surface — gate N/A`.133134**The plan MUST name the decision AND the owning file for every triggered row** — an unanswered row is a plan that is not executable:1351361. **Classification** — entity vs value object vs aggregate root (swap test applied).1372. **Invariant ownership** — which rules the entity enforces vs which the boundary validates; failure signalling (throw vs `Result`) consistent with the project convention.1383. **Aggregate boundary + concurrency** — what shares a transaction and why; cross-aggregate refs by ID; concurrency token on the ROOT; enforcing mechanism for any set-based invariant.1394. **Construction vs reconstitution** — separate creation and load paths; load raises no events.1405. **Events** — what is raised, when it dispatches (after commit / outbox), domain vs integration contract.1416. **Test obligation** — each invariant gets a property TC + boundary counter-case as a planned task, NEVER left implicit.142143MUST ATTENTION state **paradigm** (OO-mutable / type-driven-immutable / event-sourced) and **subdomain fit** (core / supporting / generic / CRUD) BEFORE planning entity tasks — NEVER plan a rich domain model for a CRUD subdomain, and NEVER plan setter/mutability tasks against an immutable or event-sourced model.144145---146147## Greenfield Mode148149> **Auto-detected:** No existing codebase found (no discovered source directories, no manifest files, no populated `project-config.json`) → skill auto-switches to greenfield mode. Planning artifacts (docs/, plans/, .claude/) don't count — repository must have actual code directories with content.150151**When greenfield detected:**1521531. Skip codebase analysis phase (researcher subagents grepping code)1542. **Replace with:** market research + business evaluation via WebSearch + WebFetch1553. Delegate architecture decisions to `solution-architect` agent1564. Output: `plans/{id}/plan.md` with greenfield-specific phases (domain model, tech stack, project structure)1575. Skip reading project reference docs (won't exist in greenfield)1586. Enable broad web research: tech landscape, best practices, framework comparisons1597. Every decision point requires ask the user directly with 2-4 options + confidence %1608. **[CRITICAL] Business-First Protocol:** Tech stack decisions come AFTER full business analysis. Do NOT ask user to pick tech stack upfront. Instead: complete business evaluation → derive technical requirements → research current market options → produce comparison report → present to user. See `solution-architect` agent for full tech stack research methodology.161162- Research reports <=150 lines; plan.md <=80 lines163- **External Memory:** Write all research/analysis to `.ai/workspace/analysis/{task-name}.analysis.md`. Re-read ENTIRE analysis file before generating plan.164165Run the planning methodology engine. Load the relevant `references/engine-*.md` for each phase (skip a phase per its own skip rule):166167- `references/engine-research.md` — Research & Analysis (skip if given researcher reports)168- `references/engine-figma.md` — Design Context Extraction (skip if no Figma URLs / backend-only)169- `references/engine-codebase-understanding.md` — Codebase Understanding (skip if given scout reports)170- `references/engine-solution-design.md` — Solution Design (trade-offs, security, performance, edge cases, architecture)171- `references/engine-plan-organization.md` — Plan Creation, Organization & Output Standards172173## Mode Dispatch (`--mode={ci|cro}`)174175> **Default (no `--mode` flag): IGNORE this section — run the standard plan flow below, byte-for-byte unchanged.** `--mode` only adds a domain-specific reference load + intake convention on top of the SAME engine, the SAME mandatory `$plan-review` gate, and the SAME `planner` agent. It never replaces the engine.176177| Flag | Positional `$ARGUMENTS` | Load before planning | Plan frontmatter overrides |178| ------------ | ----------------------------------------------------- | -------------------------------------------------------------------------------- | ----------------------------------------- |179| `--mode=ci` | a GitHub Actions run/log URL | `references/mode-ci.md` (CI failure classes: build/test/env/Docker/dependencies) | `priority: P1`, `tags: [ci, bugfix]` |180| `--mode=cro` | content/issues to optimize (optional screenshots/URL) | `references/mode-cro.md` (25-item CRO framework + multimodal intake) | `priority: P2`, `tags: [cro, conversion]` |181182When a `--mode` is present: (1) read the matching `references/mode-*.md`; (2) apply its intake + domain focus to `$ARGUMENTS`; (3) run the standard plan workflow below — same `planner` subagent, same phase-file structure, same mandatory `$plan-review`. The mode adds a reference payload only.183184## Scaffolding-First Protocol (Conditional)185186**Activation conditions (ALL must be true):**1871881. Active workflow is `workflow-greenfield-init` OR `workflow-big-feature`1892. AI MUST ATTENTION self-investigate for existing base/foundational abstractions using these patterns:190 - Abstract/base classes: `abstract class.*Base|Base[A-Z]\w+|Abstract[A-Z]\w+`191 - Generic interfaces: `interface I\w+<|IGeneric|IBase`192 - Infrastructure abstractions: `IRepository|IUnitOfWork|IService|IHandler`193 - Utility/extension layers: `Extensions|Helpers|Utils|Common` (directories or classes)194 - Frontend foundations: `base.*component|base.*service|base.*store|abstract.*component` (if frontend present)195 - DI/IoC registration: search for DI registration patterns idiomatic to project's framework1963. If existing scaffolding found → **SKIP.** Log: "Existing scaffolding detected at {file:line}. Skipping Phase 1 scaffolding."1974. If NO foundational abstractions found → **PROCEED** with scaffolding phase.198199**When activated:**200201Phase 1 of plan MUST ATTENTION be **Architecture Scaffolding** — all base abstract classes, generic interfaces, infrastructure abstractions, DI registration with OOP/SOLID principles. Runs BEFORE feature stories. AI self-investigates what base classes the tech stack needs. All infrastructure behind interfaces with ≥1 concrete implementation (Dependency Inversion). Phase 1's deliverable MUST ATTENTION also include the **golden-path example set** `$scaffold` emits — one worked, compile-checked `*.example.*` per applicable pattern (backend: command · query · handler · entity-with-invariants · value-object · repository · domain event + event handler; frontend-if-UI: form · list · store · API service; tests: one integration test on happy + failure path) in an isolated, production-excluded `examples/` tree using the scaffolded base abstractions, so post-scaffold `$architecture-review-full` gate has real, gradeable code before any feature work.202203**When skipped:** Plan proceeds normally — feature stories build on existing base classes.204205## PLANNING-ONLY — Collaboration Required206207> **DO NOT** use the manual plan-mode switching tool — already in a planning workflow.208> **DO NOT** implement or execute any code changes.209> **COLLABORATE** with user: ask decision questions, present options with recommendations.210> After plan creation, ALWAYS run `$plan-review` to validate plan.211> ASK user to confirm plan before any next step.212213## Your mission214215<task>216$ARGUMENTS217</task>218219## Pre-Creation Check (Active vs Suggested Plan)220221Check `## Plan Context` section in injected context:222223- If "Plan:" shows a path → Active plan exists. Ask user: "Continue with this? [Y/n]"224- If "Suggested:" shows a path → Branch-matched hint only. Ask if user wants to activate or create new.225- If "Plan: none" → Create new plan using naming from `## Naming` section.226227## Workflow2282291. If creating new: create directory using `Plan dir:` from `## Naming` section, then run `node .claude/scripts/set-active-plan.cjs {plan-dir}`. If reusing: use active plan path from Plan Context. Pass directory path to every subagent.2302. **Goal Contract bootstrap (BEFORE investigation and phase writing):** resolve active goal per `SYNC:goal-contract-satisfaction-loop` — create/update `{plan-dir}/goal.md` from `.claude/templates/goal-contract-template.md`, recording original request, purpose, success criteria, constraints, required evidence. Every phase's success criteria maps to a saved goal criterion. Redact secrets.2313. Follow strictly the "Plan Creation & Organization" rules in `references/engine-plan-organization.md`.2324. **Project-reference preflight — BEFORE dispatch.** Resolve and read the required project-reference documents first. Record missing or stale references as scoped research inputs; never discover the governing conventions only after workers have already started.2335. **Research wave — ONE message, ONE barrier.** Enumerate the independent research threads this task needs — per-module code investigation, pattern discovery, dependency mapping, prior-art/library search — then tag each `PAR`/`SEQ` and declare `Parallel plan: wave 1 = [...] · SEQ = [...] (reason)` before dispatch. Research is read-only, so a thread is `PAR` unless it consumes another thread's output (name that output). Spawn the whole wave in ONE message: `researcher` agents (max 2) for external/prior-art threads, max 5 tool calls per agent; `scout` agents for codebase threads, one per module/area with a disjoint read scope. Give each agent its own report path under `{plan-dir}/research/` or `{plan-dir}/scout/` so no two agents write the same file.2346. Analyze codebase against the preflight references. **ONLY IF a required reference is missing or older than 3 days:** include a scoped `$scout <instructions>` member in the research wave to gather the missing evidence; do not launch an unplanned later round trip.2357. **Barrier, then synthesize.** Advance only after EVERY wave member returns (a skipped thread counts as returned). Read the report FILES (not memory), reconcile conflicting findings, and record unresolved gaps — a second wave is dispatched only for gaps the first wave exposed.2368. Main agent gathers research/scout report filepaths; pass to `planner` subagent with prompt to create implementation plan.2379. **Parallelism pass (MANDATORY before handoff).** Validate each phase's **Mode, Wave, write set, and SEQ dependency**, then write the `## Execution Waves` line — see [Plan Parallelism Metadata](#plan-parallelism-metadata-mandatory--every-plan-output). This is what lets `$plan-execute` fan out; an untagged plan executes strictly sequentially.23810. Main agent receives implementation plan from `planner`; ask user to review.239240## Post-Plan Validation (Optional)241242After plan creation, offer validation interview to confirm decisions before implementation.243244**Check `## Plan Context` → `Validation: mode=X, questions=MIN-MAX`:**245246| Mode | Behavior |247| -------- | ------------------------------------------------------------------------------- |248| `prompt` | Ask user: "Validate this plan with a brief interview?" → Yes (Recommended) / No |249| `auto` | Automatically execute `$plan-validate {plan-path}` |250| `off` | Skip validation step entirely |251252**If mode is `prompt`:** Use ask the user directly tool with options above.253**If user chooses validation or mode is `auto`:** Execute `$plan-validate {plan-path}` SlashCommand.254255## Output Requirements256257**Plan Directory Structure** (use `Plan dir:` from `## Naming` section)258259```260{plan-dir}/261├── research/262│ ├── researcher-XX-report.md263│ └── ...264├── reports/265│ ├── XX-report.md266│ └── ...267├── scout/268│ ├── scout-XX-report.md269│ └── ...270├── plan.md271├── phase-XX-phase-name-here.md272└── ...273```274275**Research Output Requirements**276277- Research markdown reports concise (<=150 lines); cover all topics + citations.278279**Plan File Specification**280281- Every `plan.md` MUST ATTENTION start with YAML frontmatter:282283 ```yaml284 ---285 title: '{Brief title}'286 description: '{One sentence for card preview}'287 status: pending288 priority: P2289 effort: { sum of phases, e.g., 4h }290 story_points: { sum of phase SPs, e.g., 8 }291 man_days_traditional: '{ total e.g., 6d (4d code + 2d test) }'292 man_days_ai: '{ total with AI e.g., 3d (2d code + 1d test) }'293 branch: { current git branch }294 tags: [relevant, tags]295 created: { YYYY-MM-DD }296 ---297 ```298299- Save overview at `{plan-dir}/plan.md` (<80 lines): list each phase with status, progress, **Mode (`PAR`/`SEQ`)**, links to phase files; add the `## Execution Waves` line below the phases table.300- For each phase, create `{plan-dir}/phase-XX-phase-name-here.md` with sections: Context links, Overview, Key Insights, Requirements, **Alternatives Considered** (minimum 2 approaches with pros/cons), **Design Rationale** (WHY chosen approach), Architecture, **UI Layout** (see below), Related code files, **Parallel Execution** (Mode `PAR`/`SEQ` · Write set · SEQ dependency — see below), Implementation Steps, Todo list, Success Criteria, Risk Assessment, Security Considerations, Next steps.301- **UI Layout:** For frontend-facing phases, include ASCII wireframe. Classify components by tier (common/domain-shared/page-app). For backend-only phases: `## UI Layout` → `N/A — Backend-only change.`302303## Plan Parallelism Metadata (MANDATORY — every plan output)304305`$plan-execute` fans out ONLY on what the plan declares. An untagged plan forces sequential execution, so omitting this metadata is a defect of THIS skill, not of the executor.3063071. **Tag every phase `PAR` or `SEQ`** — in the `plan.md` phases table (`Mode` column) and in each phase file's `## Parallel Execution` section. `PAR` = its inputs contain no pending phase's output AND its write set is disjoint from every other `PAR` phase.3082. **Declare the write set per phase** — the exact file paths the phase creates / modifies / deletes (globs only when their members are enumerable from the plan). Two `PAR` phases MUST have disjoint write sets; any overlap → merge the phases, or demote the later one to `SEQ` and name the shared file.3093. **Every `SEQ` names its forcing dependency** — `SEQ — needs phase-02's {migration | generated type | contract | file}`. "Feels sequential", "safer in order", or an unnamed dependency is not a reason: retag it `PAR`.3104. **Group `PAR` phases into waves** in a `## Execution Waves` line in `plan.md`:311 `Execution waves: wave 1 = [phase-01, phase-03] · wave 2 = [phase-04] · SEQ = [phase-02 (needs phase-01 schema), phase-06 (approval gate)]`.3125. **Gates and reviews are SEQ boundaries** — a user-approval, review, verification, or migration phase never shares a wave with the phases it gates; it runs after that wave's barrier.3136. **Phase-file block format** (copy verbatim into each phase file):314315 ```markdown316 ## Parallel Execution317318 - Mode: PAR | SEQ319 - Write set: `src/a/x.ts`, `src/a/x.spec.ts`320 - Wave: 1321 - SEQ dependency: {name the phase + the exact artifact it produces — omit when Mode: PAR}322 ```323324**Behavior/Sync Planning Checks**325326- For behavior-changing work, every phase should name changed behavior, unchanged behavior to preserve, TC/test proof, and docs/spec sync action.327- For AI-extracted specs/TCs, plan must mark them reference-only until canonical acceptance.328- For `.claude` skills/hooks/workflows/sync tooling, plan must include generated mirror sync or explicit no-sync evidence.329330## **IMPORTANT Task Planning Notes (MUST ATTENTION FOLLOW)**331332- Always break work into many small todo tasks via task tracking333- Always add a final review todo task to verify work quality and identify fixes/enhancements334- **MANDATORY FINAL TASKS:** After all planning todos, ALWAYS add these final tasks:335 1. **Task: "Write test specifications for each phase"** — Add `## Test Specifications` with TC-{FEATURE}-{NNN} IDs to every phase file. Use `$spec [mode=tests]` if feature docs exist; `Evidence: TBD` for TDD-first mode.336 2. **Task: "Run $plan-validate"** — `$plan-validate` skill interviews user with critical questions, validates plan assumptions.337 3. **Task: "Run $plan-review"** — `$plan-review` skill, convergence loop (review → validate findings → fix → fresh full re-review) bounded by a **3-round ceiling, NEVER a target**: a clean pass ENDS the loop at ANY round, round 1 included; round 3 completing with CRITICAL/HIGH/MEDIUM still open escalates by asking the user directly, never a silent PASS. SP raises the RIGOR of each round, never a round floor: ≤3 → checklist + code-proof trace; 4-8 → + adversarial simulation; >8 → code-proof trace mandatory in every round.338 4. **Task: "Run $why-review (standalone only)"** — If NOT inside a workflow, `$why-review` validates design rationale, alternatives considered, risk assessment. Skip if a workflow already includes `$why-review`.339 5. **Task: "Re-evaluate estimation against finalized plan"** — Pre-completion estimates anchor on scope guesses; finalized phases reveal true cost. After phases/TCs/decisions locked: (a) re-derive `bottom_up_hours = Σ phase_hours` from finalized phase files; (b) recompute `likely_days`, `risk_margin_pct`, `min-max range` per `SYNC:estimation-framework`; (c) compare to current frontmatter `man_days_traditional` / `story_points`. If `|delta| > 20%` → UPDATE frontmatter, add `reestimate_delta_pct: <signed>` + 1-line `reestimate_reason`. If `|delta| > 50%` → flag `SHOULD-RESCOPE` and surface to user by asking the user directly before implementation.340341## Important Notes342343- Activate needed skills from catalog during process.344- Token efficiency without sacrificing quality. Sacrifice grammar for concision in reports.345- Unresolved questions → list at end of report.346347---348349## Standalone Review Gate (Non-Workflow Only)350351> **MANDATORY IMPORTANT MUST ATTENTION:** If skill is called **outside a workflow** (standalone `$plan`), generated plan MUST ATTENTION include `$changes-review` as a **final phase/task** in plan. Ensures all implementation changes get reviewed before commit even without a workflow enforcing it.352>353> If already running inside a workflow (e.g., `workflow-feature`, `workflow-bugfix`), skip this — workflow sequence handles `$changes-review` at appropriate step.354355## Next Steps (Standalone: MUST ATTENTION ask user by asking the user directly. Skip if inside workflow.)356357**MANDATORY IMPORTANT MUST ATTENTION — NO EXCEPTIONS** after completing this skill, MUST ATTENTION use ask the user directly to present these options. Do NOT skip because task seems "simple" or "obvious" — user decides:358359- **"Proceed with full workflow (Recommended)"** — Detect best workflow to continue (plan created). Ensures review, validation, implementation, testing not skipped.360- **"$why-review"** — Validate design rationale before implementation (standalone only — skipped when workflow includes it)361- **"$plan-review"** — Validate plan before implementation362- **"$plan-validate"** — Interview user to confirm plan decisions363- **"$plan-execute"** — Start coding & testing the finalized plan. Recommended implementation route after plan validated.364- **"Skip, continue manually"** — user decides365366## Post-Plan Granularity Self-Check (MANDATORY)367368After creating all phase files, run **recursive decomposition loop**:3693701. Score each phase against 5-point criteria (file paths, no planning verbs, ≤30min steps, ≤5 files, no open decisions)3712. Each FAILING phase → create task to decompose into sub-plan (with own $plan → $plan-review → $plan-validate → fix cycle)3723. Re-score new phases. Repeat until ALL leaf phases pass (max depth: 3)3734. **Self-question:** "For each phase, can I start coding RIGHT NOW? If any needs 'figuring out' → sub-plan it."374375## Preservation Inventory (MANDATORY for bugfixes)376377> **[IMPORTANT]** Use task tracking to break ALL work into small tasks BEFORE starting — including tasks for each file read. Prevents context loss from long files. For simple tasks, MUST ATTENTION ask user whether to skip.378379- `docs/project-reference/domain-entities-reference.md` — Domain entity catalog, relationships, cross-service sync (read when task involves business entities/models)380- `docs/specs/` — Test specifications by module (read existing TCs to include test strategy in plan)381382> Each phase file MUST ATTENTION satisfy: <=5 files per phase, <=3h effort, clear success criteria, mapped test cases.383384> **Evidence Gate:** MANDATORY IMPORTANT MUST ATTENTION — every claim, finding, recommendation requires `file:line` proof or traced evidence with confidence percentage (>80% to act, <80% must verify first).385386> **External Memory:** For complex or lengthy work (research, analysis, scan, review), write intermediate findings and final results to a report file in `plans/reports/` — prevents context loss and serves as deliverable.387388<!-- SYNC:plan-granularity -->389390> **Plan Granularity** — Every phase must pass 5-point check before implementation:391>392> 1. Lists exact file paths to modify (not generic "implement X")393> 2. No planning verbs (research, investigate, analyze, determine, figure out)394> 3. Steps ≤30min each, phase total ≤3h395> 4. ≤5 files per phase396> 5. No open decisions or TBDs in approach397>398> **Failing phases →** create sub-plan. Repeat until ALL leaf phases pass (max depth: 3).399> **Self-question:** "Can I start coding RIGHT NOW? If any step needs 'figuring out' → sub-plan it."400401<!-- /SYNC:plan-granularity -->402403<!-- SYNC:preservation-inventory -->404405> **Preservation Inventory** — MANDATORY for bugfix plans. Trigger keywords in plan title/frontmatter: `fix`, `bug`, `regression`, `broken`, `defect`. Author MUST produce this table BEFORE writing implementation steps.406>407> **Columns:** `Invariant | file:line | Why (data consequence if broken) | Verification (TC-ID or grep)`408>409> **BLOCKED until:** ≥3 rows · every File cell has `file:line` · every Verification cell has TC-ID or grep (not "manually verify")410411<!-- /SYNC:preservation-inventory -->412413<!-- SYNC:nested-task-creation -->414415> **Nested Task Expansion Contract** — For workflow-step invocation, the `[Workflow] ...` row is only a parent container; the child skill still creates visible phase tasks.416>417> 1. Call the current task list first. If a matching active parent workflow row exists, set `nested=true` and record `parentTaskId`; otherwise run standalone.418> 2. Create one task per declared phase before phase work. When nested, prefix subjects `[N.M] $skill-name — phase`.419> 3. When nested, link the parent with `TaskUpdate(parentTaskId, addBlockedBy: [childIds])`.420> 4. Orchestrators must pre-expand a child skill's phase list and link the workflow row before invoking that child skill or sub-agent.421> 5. Mark exactly one child `in_progress` before work and `completed` immediately after evidence is written.422> 6. Complete the parent only after all child tasks are completed or explicitly cancelled with reason.423>424> **Blocked until:** the current task list done, child phases created, parent linked when nested, first child marked `in_progress`.425426<!-- /SYNC:nested-task-creation -->427428<!-- SYNC:project-reference-docs-guide -->429430> **Project Reference Docs Gate** — Run after task-tracking bootstrap and before target/source file reads, grep, edits, or analysis. Project docs override generic framework assumptions.431>432> 1. Identify scope: file types, domain area, and operation.433> 2. **Read `docs/project-config.json` first — the project's machine-readable map.** It is the single source of truth for THIS repo (modules/paths, framework + search keywords, test/E2E/integration run-commands, design system, architecture rules, workflow patterns); ground exact paths, run-commands, and conventions on it **before investigating, planning, or coding** — never assume framework defaults (`CLAUDE.md` + reference docs are derived from it). If it — or the docs index, `lessons.md`, `CLAUDE.md`, `AGENTS.md`, or any required reference doc — is missing or stale, auto-run `$project-init` or the narrow route (`$project-config`, `$docs-init`, `$scan-all`, `$scan --target=<key>`, `$claude-md-init`) first; if Codex mirrors or `AGENTS.md` are stale, ask the user to run `$sync-codex` (never auto-run it).434> 3. Required docs by trigger: always `docs/project-reference/lessons.md`; doc lookup `docs-index-reference.md`; review `code-review-rules.md`; backend/CQRS/API `backend-patterns-reference.md`; domain/entity `domain-entities-reference.md`; frontend/UI `frontend-patterns-reference.md`; styles/design `scss-styling-guide.md` + `design-system/design-system-canonical.md`; integration tests `integration-test-reference.md`; E2E `e2e-test-reference.md`; feature docs/specs `feature-spec-reference.md` + `spec-system-reference.md` + `spec-principles.md`; behavior/public-contract/spec-test-code sync `workflow-spec-test-code-cycle-reference.md`; derived spec index/ERD/reimplementation guides `spec-system-reference.md` + source Feature Specs under `docs/specs/`; architecture/new area `project-structure-reference.md`.435> 4. Read every required doc, then before target work state: `Reference docs read: ... | Not applicable: ...`.436>437> **Ready when:** scope evaluated, `docs/project-config.json` consulted, required docs checked/read or setup route completed, `lessons.md` confirmed, citation emitted.438439<!-- /SYNC:project-reference-docs-guide -->440441<!-- SYNC:task-tracking-external-report -->442443> **Task Tracking & External Report Persistence** — Bootstrap this before execution; then run project-reference doc prefetch before target/source work.444>445> 1. Create a small task breakdown before target file reads, grep, edits, or analysis. On context loss, inspect the current task list first.446> 2. Mark one task `in_progress` before work and `completed` immediately after evidence; never batch transitions.447> 3. For plan/review work, create `plans/reports/{skill}-{YYMMDD}-{HHmm}-{slug}.md` before first finding.448> 4. Append findings after each file/section/decision and synthesize from the report file at the end.449> 5. Final output cites `Full report: plans/reports/{filename}`.450>451> **Blocked until:** task breakdown exists, report path declared for plan/review work, first finding persisted before the next finding.452453<!-- /SYNC:task-tracking-external-report -->454455<!-- SYNC:critical-thinking-mindset -->456457> **Critical Thinking Mindset** — Apply critical thinking, sequential thinking. Every claim needs traced proof, confidence >80% to act.458> **Anti-hallucination:** Never present guess as fact — cite sources for every claim, admit uncertainty freely, self-check output for errors, cross-reference independently, stay skeptical of own confidence — certainty without evidence root of all hallucination.459460<!-- /SYNC:critical-thinking-mindset -->461462<!-- SYNC:sequential-thinking-protocol -->463464> **Sequential Thinking Protocol** — Structured multi-step reasoning for complex/ambiguous work. Use when planning, reviewing, debugging, or refining ideas where one-shot reasoning is unsafe.465>466> **Trigger when:** complex problem decomposition · adaptive plans needing revision · analysis with course correction · unclear/emerging scope · multi-step solutions · hypothesis-driven debugging · cross-cutting trade-off evaluation.467>468> **Format (explicit mode — visible thought trail):**469>470> 1. `Thought N/M: [aspect]` — one aspect per thought, state assumptions/uncertainty471> 2. `Thought N/M [REVISION of Thought K]: ...` — when prior reasoning invalidated; state Original / Why revised / Impact472> 3. `Thought N/M [BRANCH A from Thought K]: ...` — explore alternative; converge with decision rationale473> 4. `Thought N/M [HYPOTHESIS]: ...` then `[VERIFICATION]: ...` — test before acting474> 5. `Thought N/N [FINAL]` — only when verified, all critical aspects addressed, confidence >80%475>476> **Mandatory closers:** Confidence % stated · Assumptions listed · Open questions surfaced · Next action concrete.477>478> **Stop conditions:** confidence <80% on any critical decision → escalate by asking the user directly · ≥3 revisions on same thought → re-frame the problem · branch count >3 → split into sub-task.479>480> **Implicit mode:** apply methodology internally without visible markers when adding markers would clutter the response (routine work where reasoning aids accuracy).481>482> **Deep-dive:** see `$sequential-thinking` skill (`.claude/skills/sequential-thinking/SKILL.md`) for worked examples (API design, debugging, architecture), advanced techniques (spiral refinement, hypothesis testing, convergence), and meta-strategies (uncertainty handling, revision cascades).483484<!-- /SYNC:sequential-thinking-protocol -->485486<!-- SYNC:understand-code-first -->487488> **Understand Code First** — HARD-GATE: Do NOT write, plan, or fix until you READ existing code.489>490> 1. Search 3+ similar patterns (`grep`/`glob`) — cite `file:line` evidence491> 2. Read existing files in target area — understand structure, base classes, conventions492> 3. Run `python .claude/scripts/code_graph trace <file> --direction both --json` when `.code-graph/graph.db` exists493> 4. Map dependencies via `connections` or `callers_of` — know what depends on your target494> 5. Write investigation to `495496…(truncated)