Spec-Driven Development: Specification Skill
Overview
Skill(foundry:foundry-spec) creates detailed JSON specifications before any code is written. It analyzes the codebase, designs a phased implementation approach, produces structured task hierarchies, and runs automatic quality checks including AI review.
Core capabilities:
- Analyze codebase structure using Explore agents and LSP
- Design phased implementation approaches
- Create JSON specifications with task hierarchies
- Define verification steps for each phase
- Automatic AI review of specifications
- Apply review feedback as modifications
- Validate and auto-fix specifications
Integrated Workflow
This skill follows a plan-first methodology. A markdown plan is MANDATORY before JSON spec creation, with human approval required after AI review.
┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 1. Analyze 2. Create Plan 3. Plan Review 4. APPROVAL 5. Create Spec 6. Spec Review 7. Validate │
│ ────────── ───────────── ──────────── ─────────── ───────────── ──────────── ────────── │
│ Explore/LSP → plan-create → plan-review → HUMAN GATE → spec-create → spec-review → validate-fix │
│ (understand) (MANDATORY) (AI feedback) (approve) (from plan) (MANDATORY) (auto-fix) │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
Flow
[x?]=decision ·(GATE)=user approval ·→=sequence ·↻=loop
- **Entry** → UnderstandIntent → Analyze[Explore|LSP]
- **Plan** (MANDATORY)
- `plan action="create"` → create markdown plan
- Fill in plan content with analysis results
- **Plan Review** → `plan action="review"`
- [critical/high?] → Revise plan, re-review
- ↻ Self-iterate until no critical/high issues remain
- Present final plan + review summary to user
- **(GATE: approve plan)**
- Present plan summary + AI review findings to user
- User must explicitly approve via AskUserQuestion
- [approved] → continue to spec creation
- [revise] → ↻ back to plan editing
- [abort] → **Exit** (no spec created)
- **Spec Creation** → `authoring action="spec-create"`
- `authoring action="phase-add-bulk"` ↻ per phase
- `authoring action="spec-update-frontmatter"` → mission/metadata
- **Spec Review** (MANDATORY) → `review action="spec"`
- [critical/high?] → `review action="parse-feedback"` → fix spec → re-review
- ↻ Self-iterate until no critical/high issues remain
- Present final spec + review summary to user
- (GATE: approve remaining modifications) → `spec action="apply-plan"`
- **Validate** → `spec action="validate"` ↻ [errors?] → `spec action="fix"`
- **Exit** → specs/pending/{spec-id}.json
When to Use This Skill
Use for:
- New features or significant functionality additions
- Complex refactoring across multiple files
- API integrations or external service connections
- Architecture changes or system redesigns
- Any task requiring precision and reliability
Do NOT use for:
- Simple one-file changes or bug fixes
- Trivial modifications or formatting changes
- Exploratory prototyping or spikes
- Finding next task or tracking progress (use
foundry-implement)
MCP Tooling
| Router | Key Actions |
|--------|-------------|
| authoring | spec-create, spec-update-frontmatter, phase-add-bulk, phase-move, phase-update-metadata, assumption-add, assumption-list, constraint-add, constraint-list, risk-add, risk-list, question-add, question-list, success-criterion-add, success-criteria-list |
| spec | validate, fix, apply-plan, completeness-check, duplicate-detection, stats, analyze-deps |
| review | spec, parse-feedback, list-tools |
| task | add, remove, move, update-metadata |
Critical Rule: NEVER read spec JSON files directly with Read() or shell commands.
Core Workflow
Step 1: Understand Intent
Before creating any plan:
- Core objective: What is the primary goal?
- Spec mission: Single-sentence mission for
metadata.mission - Success criteria: What defines "done"?
- Constraints: What limitations or requirements exist?
Step 2: Analyze Codebase
Use Explore subagents for large codebases (prevents context bloat), or Glob/Grep/Read for targeted lookups.
LSP-Enhanced Analysis for refactoring:
documentSymbol- Understand file structurefindReferences- Assess impact (count affected files)goToDefinition- Navigate to implementations
See
references/codebase-analysis.mdfor detailed patterns.
Step 3: Create Phase Plan (MANDATORY)
This step is REQUIRED. All specifications must begin as markdown plans before JSON conversion.
mcp__plugin_foundry_foundry-mcp__plan action="create" name="Feature Name"
The command creates a template at specs/.plans/feature-name-YYYY-MM-DD.md (date is auto-appended). Fill in all sections:
- Mission statement (becomes
metadata.mission) - Objectives and success criteria
- Assumptions and constraints
- Phase breakdown with tasks
- Risks, dependencies, and open questions
After completing the plan:
- Run AI review (Step 4)
- Obtain human approval (Step 5)
- Then proceed to JSON spec creation (Step 6)
See
references/phase-authoring.mdfor templates and bulk macros. Seereferences/phase-plan-template.mdfor the plan structure.
Step 4: Run AI Review on Plan
After completing the markdown plan, run AI review to catch issues before JSON conversion:
mcp__plugin_foundry_foundry-mcp__plan action="review" plan_path="specs/.plans/feature-name-YYYY-MM-DD.md"
Review output: Saved to specs/.plan-reviews/<plan-name-YYYY-MM-DD>-review.md
Important: Use the actual
plan_pathreturned by the create step — do not hardcode the path.
All 6 dimensions are always assessed: Completeness, Architecture, Sequencing, Feasibility, Risk, Clarity.
Self-iterate before presenting to user: Address all critical and high issues yourself:
- Read the review feedback
- Revise the plan to address critical/high findings
- Re-run review
- Repeat until no critical/high issues remain
- Then present the clean plan + review summary at the human approval gate
See
references/ai-review.mdfor review output format and iteration workflow.
Step 5: Human Approval Gate (MANDATORY)
Before creating the JSON spec, obtain explicit user approval.
Present to user:
- Plan summary (mission, phases, task count)
- What you fixed during self-iteration (critical/high issues resolved)
- Any remaining medium/low findings for awareness
- Any unresolved questions or risks
Use AskUserQuestion with options:
- "Approve & Create JSON Spec" - Proceed to Step 6
- "Revise Plan" - Return to Step 3 for modifications
- "Abort" - Exit without creating spec
CRITICAL: Do NOT proceed to JSON spec creation without explicit "Approve" response.
Step 6: Create JSON Specification (From Approved Plan)
mcp__plugin_foundry_foundry-mcp__authoring action="spec-create" name="feature-name" template="empty" plan_path="specs/.plans/feature-name-YYYY-MM-DD.md" plan_review_path="specs/.plan-reviews/feature-name-YYYY-MM-DD-review.md"
Important: Use the actual paths returned by the create and review steps. The date suffix is auto-generated.
Add phases with tasks:
mcp__plugin_foundry_foundry-mcp__authoring action="phase-add-bulk" spec_id="{spec-id}" phase='{"title": "Implementation", "description": "Core work"}' tasks='[{"type": "task", "title": "Build core logic", "task_category": "implementation", "file_path": "src/core.py", "acceptance_criteria": ["Workflow works"]}]'
Update metadata:
mcp__plugin_foundry_foundry-mcp__authoring action="spec-update-frontmatter" spec_id="{spec-id}" key="mission" value="Single-sentence objective"
Step 6a: Enrich Spec Metadata (From Approved Plan)
After creating the spec, populate structured metadata extracted from the approved plan:
# Add constraints from plan
mcp__plugin_foundry_foundry-mcp__authoring action="constraint-add" spec_id="{spec-id}" text="Must maintain backward compatibility with v2 API"
# Add risks from plan
mcp__plugin_foundry_foundry-mcp__authoring action="risk-add" spec_id="{spec-id}" description="OAuth provider rate limits" likelihood="medium" impact="high" mitigation="Implement token caching"
# Add open questions from plan
mcp__plugin_foundry_foundry-mcp__authoring action="question-add" spec_id="{spec-id}" text="Which OAuth scopes are required for the admin flow?"
# Add success criteria from plan
mcp__plugin_foundry_foundry-mcp__authoring action="success-criterion-add" spec_id="{spec-id}" text="All protected endpoints return 401 without valid token"
# Add assumptions
mcp__plugin_foundry_foundry-mcp__authoring action="assumption-add" spec_id="{spec-id}" text="Single GCP project for staging and production"
See
references/metadata-management.mdfor full action reference and workflow. Seereferences/json-spec.mdandreferences/task-hierarchy.mdfor structure details.
Step 7: Spec Review — Spec-vs-Plan Comparison (MANDATORY)
After spec creation, the spec review compares the JSON spec against its source plan:
mcp__plugin_foundry_foundry-mcp__review action="spec" spec_id="{spec-id}"
Action name: Use
action="spec"(canonical). The alias"spec-review"also works but"spec"is preferred.
The spec review compares the JSON spec against its source plan to catch translation gaps — evaluating coverage, fidelity, success criteria mapping, and preservation of constraints, risks, and open questions. The response includes a verdict of aligned, deviation, or incomplete.
Prerequisites for spec review to succeed:
- The spec must already be saved to disk (completed by
spec-create+phase-add-bulk) - The spec's
metadata.plan_pathmust point to an existing plan file (set duringspec-create) - An AI provider must be available (configured in
foundry-mcp.tomlor environment)
If the review returns success: false:
- Check
error_codein the response — common causes:SPEC_NOT_FOUND: Verifyspec_idis correct viaspec action="list"AI_NO_PROVIDER: Check AI provider configurationAI_PROVIDER_TIMEOUT: Retry with a higherai_timeoutvalue
- Do NOT retry with a different action name —
"spec"and"spec-review"are identical
Self-iterate before presenting to user: Address all critical and high issues yourself:
- Parse review findings via
review action="parse-feedback" - Fix the spec to address critical/high findings (using authoring/task MCP tools)
- Re-run spec review
- Repeat until no critical/high issues remain
- Then present the clean spec + review summary to the user
See
references/plan-review-workflow.mdfor detailed review workflow. Seereferences/plan-review-dimensions.mdfor review dimensions. Seereferences/plan-review-consensus.mdfor interpreting results.
Step 8: Apply Modifications (If Needed)
If review finds issues, parse and apply feedback:
# Parse review feedback into modifications
mcp__plugin_foundry_foundry-mcp__review action="parse-feedback" spec_id="{spec-id}" review_path="path/to/review.md"
# Preview changes (always preview first!)
mcp__plugin_foundry_foundry-mcp__spec action="apply-plan" spec_id="{spec-id}" modifications_file="suggestions.json" dry_run=true
# Apply changes (backup created automatically)
mcp__plugin_foundry_foundry-mcp__spec action="apply-plan" spec_id="{spec-id}" modifications_file="suggestions.json"
See
references/modification-workflow.mdfor detailed workflow. Seereferences/modification-operations.mdfor operation formats.
Step 9: Validate Specification
Validate and auto-fix the specification:
# Validate
mcp__plugin_foundry_foundry-mcp__spec action="validate" spec_id="{spec-id}"
# Auto-fix common issues
mcp__plugin_foundry_foundry-mcp__spec action="fix" spec_id="{spec-id}"
# Re-validate until clean
mcp__plugin_foundry_foundry-mcp__spec action="validate" spec_id="{spec-id}"
Exit codes:
- 0: Valid (no errors)
- 1: Warnings only
- 2: Errors (run fix)
- 3: File error
See
references/validation-workflow.mdfor detailed workflow. Seereferences/validation-fixes.mdfor fix patterns. Seereferences/validation-issues.mdfor issue types.
Phase-First Authoring
Use this approach for efficient spec creation:
Step 1: Create spec from approved plan
mcp__plugin_foundry_foundry-mcp__authoring action="spec-create" name="my-feature" template="empty" plan_path="specs/.plans/my-feature-YYYY-MM-DD.md" plan_review_path="specs/.plan-reviews/my-feature-YYYY-MM-DD-review.md"
Both
plan_pathandplan_review_pathare required. Create these first viaplan action="create"andplan action="review". Use the actual paths returned by those steps.
Step 2: Add phases with bulk macro
mcp__plugin_foundry_foundry-mcp__authoring action="phase-add-bulk" spec_id="{spec-id}" phase='{"title": "Phase 1"}' tasks='[...]'
Step 3: Fine-tune tasks Use modification operations to adjust individual tasks.
Step 4: Update frontmatter
mcp__plugin_foundry_foundry-mcp__authoring action="spec-update-frontmatter" spec_id="{spec-id}" key="mission" value="..."
File Path Policy
For implementation or refactoring tasks, set metadata.file_path to a real repo-relative path. Do not guess or use placeholders. If unclear, use task_category: "investigation" first.
Valid Values Reference
Spec Templates
| Template | Use Case | Required Fields |
|----------|----------|-----------------|
| empty | All specs (blank with no phases) | Add phases via phase-add-bulk |
Task Categories
| Category | Requires file_path |
|----------|---------------------|
| investigation | No |
| implementation | Yes |
| refactoring | Yes |
| decision | No |
| research | No |
Node Types
| Node Type | type Value | Key Fields |
|-----------|--------------|------------|
| Task | "task" | task_category, file_path |
| Research | "research" | research_type, blocking_mode, query |
| Verification | "verify" | verification_type |
See
references/task-hierarchy.mdfor research node patterns and blocking modes.
Verification Types
| Type | Purpose |
|------|---------|
| run-tests | Execute test suite |
| fidelity | Compare implementation to spec |
| manual | Manual testing checklist |
Best Practice: Every phase should end with a fidelity review task (
verification_type: "fidelity"). This ensures implementation matches the spec before moving to the next phase. Thefoundry-reviewskill performs this comparison.
Task Statuses
| Status | Description |
|--------|-------------|
| pending | Not yet started |
| in_progress | Currently being worked on |
| completed | Finished successfully |
| blocked | Cannot proceed |
Size Guidelines
If >6 phases or >50 tasks, recommend splitting into multiple specs.
Output Artifacts
- JSON spec file at
specs/pending/{spec-id}.json - Plan review report at
specs/.plan-reviews/{plan-name-YYYY-MM-DD}-review.md - Spec review report at
specs/.spec-reviews/{spec-id}-spec-review.md - Validation passed with no errors
Detailed Reference
Planning:
- Investigation strategies →
references/investigation.md - Phase authoring →
references/phase-authoring.md - Phase plan template →
references/phase-plan-template.md - JSON spec structure →
references/json-spec.md - Task hierarchy →
references/task-hierarchy.md - Metadata management →
references/metadata-management.md - Codebase analysis →
references/codebase-analysis.md
Review:
- Review workflow →
references/plan-review-workflow.md - Review dimensions →
references/plan-review-dimensions.md - Consensus interpretation →
references/plan-review-consensus.md
Modification:
- Modification workflow →
references/modification-workflow.md - Operation formats →
references/modification-operations.md
Validation:
- Validation workflow →
references/validation-workflow.md - Fix patterns →
references/validation-fixes.md - Issue types →
references/validation-issues.md
General:
- AI review →
references/ai-review.md - Troubleshooting →
references/troubleshooting.md