Build - Context-Isolated Feature Development
When this skill is invoked, IMMEDIATELY output the banner below before doing anything else. Pick ONE tagline at random — vary your choice each time. CRITICAL: Reproduce the banner EXACTLY character-for-character. The first line of the art has 4 leading spaces — you MUST preserve them.
{tagline}
⠀ ██╗██████╗ ██╗ ██╗██╗██╗ ██████╗
██╔╝██╔══██╗██║ ██║██║██║ ██╔══██╗
██╔╝ ██████╔╝██║ ██║██║██║ ██║ ██║
██╔╝ ██╔══██╗██║ ██║██║██║ ██║ ██║
██╔╝ ██████╔╝╚██████╔╝██║███████╗██████╔╝
╚═╝ ╚═════╝ ╚═════╝ ╚═╝╚══════╝╚═════╝Taglines:
- ⚙️ Compiling hopes and dreams...
- 🏗️ Bob the Builder has entered the chat!
- 🤖 Assembling the Voltron of code!
- 🏭 Feature factory: ONLINE
- ☕ Hold my coffee, I'm building!
- 📦 Some assembly required...
- 🧱 Bricks, mortar, and semicolons!
- 🏎️ Let's see what this baby can do!
Output Formatting
After the banner, display parsed input:
┌─ Input ────────────────────────────────────────
│ {Field}: {value}
│ Flags: {parsed flags or "none"}
└────────────────────────────────────────────────Pre-flight results:
── Pre-flight ───────────────────────────────────
✅ {dep} {version or "found"}
⚠️ {dep} not found → {fallback detail}
❌ {dep} missing → stopping
──────────────────────────────────────────────────Stage/phase headers: ━━ {N} · {Name} ━━━━━━━━━━━━━━━━━━━━━━━━━
Status icons: ✅ done · ❌ failed · ⚠️ degraded · ⏳ working · ⏭️ skipped
Execute a detailed design/plan through the full feature-dev lifecycle with maximum context isolation. Every heavy stage runs in a subagent so the primary conversation only accumulates structured reports.
Stage prompts: references/stage-prompts.md Report budgets: references/report-contracts.md Agent selection: references/architecture-notes.md Project detection: references/project-detection.md
Flags
Parse optional flags from the request:
--skip-questions: Skip Stage 2 (clarifying questions)--skip-review: Skip Stage 5 (code review)--no-ship: Stop after Stage 8 docs update--parallel-impl: Split implementation into parallel agents when independent
Pre-flight
Before starting, check all dependencies in this table:
| Dependency | Type | Check | Required | Resolution | Detail |
|---|---|---|---|---|---|
| ship | skill | ls.claude/skills/ship/SKILL.md ~/.claude/skills/ship/SKILL.md ~/.claude/plugins/marketplaces/slamb2k/skills/ship/SKILL.md 2>/dev/null | yes | stop | Install with: npx skills add slamb2k/mad-skills --skill ship |
| prime | skill | ls.claude/skills/prime/SKILL.md ~/.claude/skills/prime/SKILL.md ~/.claude/plugins/marketplaces/slamb2k/skills/prime/SKILL.md 2>/dev/null | no | fallback | Context loading; falls back to manual CLAUDE.md/goals scan |
| feature-dev:code-explorer | agent | — | no | fallback | Uses general-purpose agent |
| feature-dev:code-architect | agent | — | no | fallback | Uses general-purpose agent |
| feature-dev:code-reviewer | agent | — | no | fallback | Uses general-purpose agent |
For each row, in order:
- Run the Check command (for cli/npm) or test file existence (for agent/skill)
- If found: continue silently
- If missing: apply Resolution strategy
- stop: notify user with Detail, halt execution - url: notify user with Detail (install link), halt execution - install: notify user, run the command in Detail, continue if successful - ask: notify user, offer to run command in Detail, continue either way (or halt if required) - fallback: notify user with Detail, continue with degraded behavior
- After all checks: summarize what's available and what's degraded
- Capture PLAN (the user's argument) and FLAGS
- Load project context — invoke
/primeto load domain-specific context (CLAUDE.md, specs, memory). If /prime is unavailable, fall back to manually scanning CLAUDE.md and specs/ directory. - Detect project type using
references/project-detection.mdto populate PROJECT_CONFIG (language, test_runner, test_setup) - Check for outstanding items from previous work:
- Query persistent tasks via TaskList for incomplete items - Search CLAUDE.md for a "Known Issues" or "Open Questions" section - Search memory (if available) for recent unresolved items
- If outstanding items found, present via AskUserQuestion:
"Found {count} outstanding items from previous work:" {numbered list with summary of each} "Address any of these before starting the build?"Options:
- "Yes, let me choose which ones" → present each; options: "Incorporate into this build" / "Skip for now" / "Explain more" Items marked "incorporate" get appended to the PLAN as additional requirements for Stage 1 to explore. - "No, proceed with the build" → continue normally
Plan Resolution
Before Stage 1, resolve the PLAN argument into content:
- File detection — If the argument contains
/or ends with.md,.yaml,.json, or.txt, treat it as a file path:
- Try reading the path as-is - If not found, try specs/{arg} - If found, use file content as PLAN - If not found at any location, treat the original argument as free-form text
- Free-form text — If not a file path (or file not found), use the argument verbatim as PLAN
- Display — In the Input box, show the resolved source:
- File: Plan: {file path} ({line count} lines) - Text: Plan: inline ({word count} words)
Stage 1: Explore
Launch feature-dev:code-explorer (fallback: general-purpose):
Task(
subagent_type: "feature-dev:code-explorer",
description: "Explore codebase for build plan",
prompt: <read from references/stage-prompts.md#stage-1>
)Substitute {PLAN} into the prompt. Parse EXPLORE_REPORT. Extract questions for Stage 2.
Stage 2: Clarifying Questions
Skip if --skip-questions or no questions found.
Runs on the primary thread (requires user interaction).
- Review EXPLORE_REPORT
questionsandpotential_issues - Present questions to user via AskUserQuestion
- Store answers as CLARIFICATIONS
Stage 3: Architecture Design
Launch feature-dev:code-architect (fallback: general-purpose):
Task(
subagent_type: "feature-dev:code-architect",
description: "Design implementation architecture",
prompt: <read from references/stage-prompts.md#stage-3>
)Substitute {PLAN}, {EXPLORE_REPORT}, {CLARIFICATIONS}. Parse ARCH_REPORT. Present approach_summary to user for confirmation.
If rejected, incorporate feedback and re-run.
Stage 4: Implementation
If --parallel-impl and ARCH_REPORT has independent parallel_groups, launch multiple general-purpose subagents in parallel.
Otherwise launch one general-purpose subagent:
Task(
subagent_type: "general-purpose",
description: "Implement plan",
prompt: <read from references/stage-prompts.md#stage-4>
)Substitute {PLAN}, {ARCH_REPORT}, conventions, {PROJECT_CONFIG.test_runner}. Parse IMPL_REPORT(s). If any failed, assess retry or abort.
Stage 5: Code Review
Skip if --skip-review.
Launch 3 feature-dev:code-reviewer subagents in parallel (fallback: general-purpose):
- Simplicity & DRY
- Bugs & Correctness
- Conventions & Integration
Prompts in references/stage-prompts.md#stage-5.
Consolidate reports. Present only critical and high severity findings. Ask: "Fix these now, or proceed as-is?"
Stage 6: Fix Review Findings
Only if Stage 5 found issues AND user wants them fixed.
Launch general-purpose subagent:
Task(
subagent_type: "general-purpose",
description: "Fix review findings",
prompt: <read from references/stage-prompts.md#stage-6>
)Stage 7: Verify
Launch Bash subagent (haiku):
Task(
subagent_type: "Bash",
model: "haiku",
description: "Run verification tests",
prompt: <read from references/stage-prompts.md#stage-7>
)Substitute {PROJECT_CONFIG.test_runner} and {PROJECT_CONFIG.test_setup}.
If tests fail:
- First failure: launch general-purpose agent to fix, retry
- Second failure: report to user and stop
Stage 8: Update Progress Documentation
Skip if EXPLORE_REPORT has no source_docs.
Launch general-purpose subagent:
Task(
subagent_type: "general-purpose",
description: "Update progress documentation",
prompt: <read from references/stage-prompts.md#stage-8>
)If --no-ship: Stop here and present final summary.
Stage 9: Ship
Invoke the /ship skill:
/ship {approach_summary from ARCH_REPORT}. Files: {files from IMPL_REPORT}Stage 10: Debrief
Always runs on the primary thread (requires user interaction).
- Scan all stage reports for unresolved items:
- EXPLORE_REPORT: potential_issues not addressed by implementation - ARCH_REPORT: risks with deferred mitigations - REVIEW_REPORT: medium/low findings not fixed in Stage 6 - TEST_REPORT: warnings, skipped tests, flaky results - DOCS_REPORT: docs_skipped items - IMPL_REPORT: issues_encountered that were worked around
- Compile into DEBRIEF_ITEMS (see
references/stage-prompts.md#stage-10). Categorise each as: unresolved_risk, deferred_fix, open_question, assumption, or tech_debt. - If no items found, skip to Final Report.
- Present numbered summary via AskUserQuestion grouped by category. Each item shows:
[category] summary (effort). Options:
- "Fix now" → create a task list of resolution activities for each item; present for user confirmation, then work through them - "Create tasks for future sessions" → use TaskCreate for each item as a persistent task, with category as prefix and suggested action as description - "Note and continue" → acknowledge items without formal tracking; log to memory (if exists) or as source file comments. No further action. - "Let me choose per item" → present each individually with full description, evidence, and impact. Options per item: "Fix now" / "Create task" / "Explain more" / "Note and continue". "Explain more" reads source files cited in evidence, provides expanded context, then re-presents the item for decision.
- After resolution, include debrief summary in the Final Report.
Final Report
┌─ Build · Report ───────────────────────────────
│
│ ✅ Build complete
│
│ 📋 Plan: {first line of plan}
│ 🏗️ Approach: {approach_summary}
│
│ 📝 Changes
│ Files modified: {count}
│ Files created: {count}
│ Tests: {passed}/{total} ✅
│ Docs updated: {count or "none"}
│
│ 🔍 Review
│ Findings addressed: {count fixed} / {count found}
│
│ 📊 Debrief: {count resolved} / {count surfaced}
│ {list of created tasks}
│
│ 🔗 Links
│ PR: {pr_url}
│ CI: {merge_commit}
│
│ ⚡ Next steps
│ {debrief items or "none — all clear"}
│
└─────────────────────────────────────────────────If any stage failed, report the failure point and what was accomplished.
Rollback
If implementation succeeds but later stages fail:
- Tests fail: fix agent attempts repair, then reports to user
- Review critical: user decides fix or proceed
- Ship fails: code is still committed locally; user can manually push
- Never silently revert completed implementation work