--- name: sparc-spec description: Run the SPARC Specification phase — gather requirements, define acceptance criteria, identify constraints, and store the spec in memory argument-hint: "" allowed-tools: mcp__claude-flow__memory_store mcp__claude-flow__memory_search mcp__claude-flow__memory_retrieve mcp__claude-flow__task_create mcp__claude-flow__task_update mcp__claude-flow__task_complete mcp__claude-flow__hooks_intelligence_trajectory-start mcp__claude-flow__hooks_intelligence_trajectory-step mcp__claude-flow__neural_predict Bash Read Edit --- # SPARC Specification Phase Run Phase 1 of the SPARC methodology: define what must be built and how success is measured. ## When to use When starting a new feature or project that needs structured requirements gathering before any code is written. This phase produces the foundational specification that all subsequent phases (Pseudocode, Architecture, Refinement, Completion) build upon. ## Steps 1. **Initialize phase tracking** — call `mcp__claude-flow__hooks_intelligence_trajectory-start` with metadata `{ "phase": "specification", "feature": "$ARGUMENTS" }` 2. **Check for prior work** — call `mcp__claude-flow__memory_search` with namespace `sparc-state` and query for the feature to see if a SPARC workflow already exists. If it does, retrieve existing artifacts. If not, initialize state with phase 1. 3. **Search for similar patterns** — call `mcp__claude-flow__neural_predict` with the feature description to find relevant past specifications and learned patterns 4. **Gather requirements** — analyze the feature description and the codebase to identify: - **Functional requirements**: what the feature must do (user-facing behaviors) - **Non-functional requirements**: performance targets, security constraints, scalability needs - **Integration points**: what existing systems or APIs are affected - **Data requirements**: what data is created, read, updated, or deleted 5. **Define acceptance criteria** — write at least 3 concrete, testable acceptance criteria in Given/When/Then format: ``` AC-1: Given [precondition], when [action], then [expected result] AC-2: Given [precondition], when [action], then [expected result] AC-3: Given [precondition], when [action], then [expected result] ``` 6. **Identify constraints** — document: - Performance constraints (latency, throughput, resource limits) - Security constraints (authentication, authorization, data sensitivity) - Compatibility constraints (browser support, API versions, backward compatibility) - Infrastructure constraints (deployment environment, dependencies) 7. **Map edge cases** — list at least 3 edge cases or failure scenarios: - What happens with invalid input? - What happens under concurrent access? - What happens when external dependencies fail? 8. **Store specification** — call `mcp__claude-flow__memory_store` with: - Namespace: `sparc-phases` - Key: `spec-{feature-slug}` - Value: JSON with `{ status: "complete", requirements, acceptanceCriteria, constraints, edgeCases, integrationPoints }` 9. **Update phase state** — call `mcp__claude-flow__memory_store` with: - Namespace: `sparc-state` - Key: `current-phase-{feature-slug}` - Value: updated state with artifacts list including the spec key 10. **Record trajectory step** — call `mcp__claude-flow__hooks_intelligence_trajectory-step` with the specification summary 11. **Present specification** — display the full specification document to the user with a summary table and suggest running `/sparc advance` to pass the gate and move to the Pseudocode phase ## Output format ``` # Specification: {Feature Name} ## Requirements ### Functional - FR-1: ... - FR-2: ... ### Non-Functional - NFR-1: ... ## Acceptance Criteria - AC-1: Given ..., when ..., then ... - AC-2: Given ..., when ..., then ... - AC-3: Given ..., when ..., then ... ## Constraints - Performance: ... - Security: ... - Compatibility: ... ## Edge Cases - EC-1: ... - EC-2: ... - EC-3: ... ## Integration Points - IP-1: ... --- Phase 1 complete. Run `/sparc advance` to pass the gate check. ```