From ideation
Execute an implementation spec generated by ideation. Invokes Scout for codebase exploration, builds components with feedback loops, then runs a Verify-Review-Fix cycle with the Reviewer agent before committing.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ideation:execute-specThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Execute a spec file generated by the ideation skill.
Execute a spec file generated by the ideation skill.
Flags:
--parallel — dispatch subagents for independent components.--headless — auto-proceed through every confirmation (no AskUserQuestion). Used by /ideation:autopilot. Headless resolutions, by decision point: spec selection → first unblocked; scout HOLD → proceed anyway; review cycle 3 FAIL → report failure and stop (do not commit).Example: /ideation:execute-spec --parallel or /ideation:execute-spec --headless docs/ideation/foo/spec-phase-1.md
Resolve the spec in this order:
TaskList: a task with status: pending, empty blockedBy, and a subject starting with "Phase" or metadata containing specFile. Read its specFile (via TaskGet)../docs/ideation/*/spec-phase-*.md. Multiple matches → AskUserQuestion to pick (headless: first unblocked).Invoke the read-only Scout to map the codebase and assess readiness across 5 evidence gates — it replaces manual exploration and persists its findings.
The project directory is the spec's parent (spec docs/ideation/my-project/spec-phase-1.md → docs/ideation/my-project/).
Invoke Agent with subagent_type: ideation:scout. The prompt carries per-invocation inputs only: spec path, project directory, phase number, whether a prior context-map.md exists. Workflow, output format, and read-only tools come from the registered definition (the platform enforces tools; the scout cannot edit). It runs up to 2 internal rounds before a verdict — wait for the final output, do not re-invoke.
The scout returns the context map as text; Write it to {project-directory}/context-map.md (it cannot write files itself).
AskUserQuestion (headless: auto-select "Proceed anyway"):Question: "Scout reports {n}/5 readiness gates passed ({not-ready gates}). How to proceed?"
Options:
- "Proceed anyway" — Build with known gaps. May require more iteration.
- "Update spec" — The spec may be underspecified. Pause to revise.
- "Abort" — Stop execution for this phase.
After "Proceed anyway", treat missing context-map sections as unavailable (read those files directly) and watch the Risks section closely.
If ideation:scout is unregistered (older Claude Code, or plugin not installed): log a warning and explore inline — read the spec's "Pattern to follow" paths and all "Modified Files"; read analogues for new files; Grep the blast radius of modified files; read CLAUDE.md/README for conventions.
Extract: Technical Approach, File Changes, Implementation Details (per-component instructions + code patterns), Testing Requirements, Validation Commands, Feedback Strategy (inner-loop command + playground type, if present), per-component feedback loops (playground/experiment/check, if present).
Collect the pattern file list: scan every component's Implementation Details for "Pattern to follow" entries into one list. Retain it through build and review — it is passed to the reviewer.
Tasks already exist (from Step 1): skip creation; mark the phase task in_progress and proceed.
Fresh execution: TaskCreate one task per component (subject = component name, description = its Implementation Details, activeForm = "Implementing {name}"). Then wire dependencies with TaskUpdate addBlockedBy: components that share a file or that the spec orders are sequential; independent components have no blocker. Create two validation tasks blocked by all components: "Run validation commands" and "Verify acceptance criteria".
One-time setup before building. Read the spec's Feedback Strategy for the playground type and inner-loop command. Auto-detect infrastructure even when the spec omits it: package.json scripts (test/dev/start/storybook/typecheck), test-runner configs (jest/vitest/mocha/pytest/go.mod), dev-server configs (vite/next/webpack), .storybook/, and harnesses (scripts/, bin/, Makefile). Start whatever the playground needs (test runner, dev server, storybook) and run the inner-loop command once to confirm it works — this catches environment issues early. Fallback: no Feedback Strategy and no infrastructure detected → use Validation Commands as the post-implementation check.
Maintain {project-directory}/implementation-notes-phase-{n}.html — a running log of decisions not covered by the spec, for the human to review. Create the file lazily, on the first logged entry (not upfront): write the shell using Section 1 (Base Styles only) of ${CLAUDE_PLUGIN_ROOT}/skills/ideation/references/html-guide.md — title "Implementation Notes — Phase {N}" and a <main> holding the entry — then append subsequent entries. A clean phase with zero entries means no file ever exists, which avoids create-then-delete churn.
Log an entry for a spec gap (had to make a judgment call), spec deviation (and why), tradeoff (multiple valid approaches), codebase surprise, or dependency mismatch. Format:
<section class="note-entry">
<h3>{Component Name} — {short decision title}</h3>
<dl>
<dt>Context</dt>
<dd>{what the spec said, or didn't say}</dd>
<dt>Decision</dt>
<dd>{what you chose and why}</dd>
<dt>Alternative</dt>
<dd>{what you considered but rejected}</dd>
</dl>
</section>
Don't log routine implementation.
TaskList for current state; work tasks with status: pending and empty blockedBy, skip completed ones. Before reading pattern files, consult the scout's context map (key patterns, dependencies, conventions, risks) to avoid redundant exploration.
TaskUpdate status: in_progress).TaskUpdate status: completed), then TaskList for the next unblocked task. Report any issues before proceeding.No feedback loop → implement fully, then run validation commands. If validation fails: keep the task in_progress, report the error, fix, re-run; if still failing, pause and ask the user.
--parallel)Default is sequential. With --parallel, dispatch subagents wave by wave, with waves planned by the tested wave-planner CLI — not ad-hoc rules. Pattern: skills/autopilot/SKILL.md Step 3 (same { title, prereqs, files } manifest; skill prepares the manifest, tested code plans the waves).
Build a component manifest, one entry per component: title (matches the task subject), prereqs (titles it's blocked by), files (every path it touches from its File Changes rows). Unattributable files → give that component ALL declared files (serializes it against everything).
Plan the waves:
node ${CLAUDE_PLUGIN_ROOT}/workflows/wave-planner.mjs plan '<manifest-json>'
Payload { "phases": [ ...entries... ] }. The CLI prints a prereq-ordered string[][] of waves, with any file-sharing wave already split into sequential sub-waves. These waves are authoritative — no separate file-conflict rule.
Dispatch each wave as subagents (subagent_type: general-purpose, mode: default), prompt carrying the task ID, spec path, and technical-approach summary. Each subagent claims its task, implements following the per-component flow, and completes it. Wait for the whole wave before the next (wave barrier). On failure/stall: check TaskList, read the task, retry or ask the user.
CLI fails (node missing, malformed manifest, dependency cycle) → fall back to fully sequential execution and warn. Never fall back to unchecked parallelism — it could race two components on one file.
Subagents only build; they do not run review cycles. After all complete, the main session runs one verify-review-fix loop on the combined diff (git diff HEAD).
Code is not committed until review passes or the user accepts remaining issues. Do not stage files until after review passes — the reviewer reads git diff HEAD, so keep changes unstaged for a clean, complete diff. One exception: git diff HEAD is blind to untracked files, so first register every net-new file with git add -N <path> (intent-to-add — the file appears in the diff without its content being staged). Without this, a phase whose only output is new files produces an empty diff: review gets wrongly skipped and the work never commits.
Run all of the spec's Validation Commands (type check, lint, tests, build). Fix any failure before review — validation failures are mechanical errors, not review findings, and do not consume a review cycle.
Empty diff (after git add -N of new files) → skip review entirely; report the components as no-ops and go to the completion report.
Invoke Agent with subagent_type: ideation:reviewer. Per-invocation inputs only (workflow/format/tools come from the registered definition; tools is platform-enforced — Bash for git diff HEAD/git log only, never edits): spec path, the pattern file list (from Section 3), the cycle number, and — if cycle > 1 — the prior cycle's findings, including any the builder refuted (marked [REFUTED: evidence]) so the reviewer re-examines them.
Cycle counter: increments only when the reviewer is invoked. Verify failures and their fixes never count.
Parse the output: find **Verdict**: PASS/FAIL; count findings by severity prefix (critical/, high/, medium/, low/). Zero critical AND zero high → PASS; any critical or high → FAIL.
If the reviewer fails, returns empty, or has no verdict line: fall back to validation-only mode (validation results are sufficient), warn that review was skipped, and continue to commit.
Proceed to commit. Report medium/low findings for awareness — they do not block.
For each critical/high finding, verify before acting — read the target code, then:
→ action.[REFUTED: evidence] so the reviewer withdraws it or restates it as "Maintained despite refutation". Refute at most once per finding — a maintained refutation is real: fix it (or escalate at cycle 3). Never refute the same finding twice.After fixes (and any refutations logged), re-run Verify; if it passes, Review again (increment cycle, passing refuted findings); if verify fails, fix those errors first, then re-review.
Headless: a refuted-then-maintained finding counts as unresolved — cycle-3 FAIL semantics apply (report FAIL, stop, no commit).
The review has failed 3 times. Escalate via AskUserQuestion (headless: do not commit — report FAIL with findings and stop):
Question: "Review cycle 3 still has {N} critical/high findings. How to proceed?"
Options:
- "Fix manually" — You fix the remaining issues yourself. Re-run /ideation:execute-spec after fixing to re-enter the review cycle.
- "Accept with issues" — Commit with known issues. Findings included in completion report as acknowledged items.
- "Abort" — Do not commit. Leave changes unstaged for manual review.
Only after PASS or user acceptance: stage the phase's changed files by name (never git add -A), commit following the project's conventions, and include the cycle count in the body if review took multiple cycles. Process artifacts (context-map.md, implementation-notes-*.html) are working files, not phase deliverables — leave them out of the phase commit unless the project's conventions track docs/ideation/.
## Phase {N} Implementation Complete
### Implemented
- {List of components implemented}
### Files Changed
- {List of files created/modified}
### Implementation Notes
- {count} decisions logged → `implementation-notes-phase-{N}.html`
- {brief summary of most significant decisions, if any}
### Review Summary
- Cycles: {N} of 3 max
- Findings addressed: {count} ({critical} critical, {high} high auto-fixed)
- Remaining (non-blocking): {count} ({medium} medium, {low} low)
- Acknowledged issues: {count, if user accepted with issues}
### Validation Results
- Type check: PASS/FAIL
- Lint: PASS/FAIL
- Tests: PASS/FAIL
### Acceptance Criteria
- [x] {Met criteria}
- [ ] {Unmet criteria with notes}
### Next Steps
- Review implementation notes: `open docs/ideation/{project}/implementation-notes-phase-{N}.html`
- Review changes: `git log -1 --stat`
- For next phase: `/ideation:execute-spec spec-phase-{N+1}.md`
After the report, if implementation notes exist, open them: open {project-directory}/implementation-notes-phase-{N}.html.
npx claudepluginhub nicknisi/ideation --plugin ideationCreates bite-sized, testable implementation plans from specs or requirements, with file structure and task decomposition. Activates before coding multi-step tasks.