spec
About
The spec skill creates formal, executable specifications directly from clear, well-defined requirements using spec-kit tools. It focuses on defining the WHAT and WHY, not the HOW, and is ideal when detailed requirements are provided upfront. Use this skill to skip exploratory dialogue when the feature scope is already well-defined.
Documentation
Direct Specification Creation
Overview
Create formal specifications directly when requirements are clear and well-defined.
Use this instead of brainstorm when:
- Requirements are already clear
- User provides detailed description
- Feature scope is well-defined
- No exploratory dialogue needed
This skill creates specs using spec-kit tools and ensures WHAT/WHY focus (not HOW).
When to Use
Use this skill when:
- User provides clear, detailed requirements
- Feature scope is well-defined
- User wants to skip exploratory dialogue
- Requirements come from external source (PRD, ticket, etc.)
Don't use this skill when:
- Requirements are vague or exploratory → Use
sdd:brainstorm - Spec already exists → Use
sdd:implementorsdd:evolve - Making changes to existing spec → Use
sdd:spec-refactoring
Prerequisites
Ensure spec-kit is initialized:
{Skill: spec-kit}
If spec-kit prompts for restart, pause this workflow and resume after restart.
Critical: Specifications are WHAT and WHY, NOT HOW
Specs define contracts and requirements, not implementation.
✅ Specs SHOULD include:
- Requirements: What the feature must do
- Behaviors: How the feature should behave (user-observable)
- Contracts: API structures, file formats, data schemas
- Error handling rules: What errors must be handled and how they should appear to users
- Success criteria: Measurable outcomes
- Constraints: Limitations and restrictions
- User-visible paths: File locations, environment variables users interact with
❌ Specs should NOT include:
- Implementation algorithms: Specific sorting algorithms, data structure choices
- Code: Function signatures, class hierarchies, pseudocode
- Technology choices: "Use Redis", "Use React hooks", "Use Python asyncio"
- Internal architecture: How components communicate internally
- Optimization strategies: Caching mechanisms, performance tuning
📋 Example: What belongs where
SPEC (WHAT/WHY):
## Requirements
- FR-001: System MUST validate email addresses before storing
- FR-002: System MUST return validation errors within 200ms
- FR-003: Invalid emails MUST return 422 status with error details
## Error Handling
- Invalid format: Return `{"error": "Invalid email format", "field": "email"}`
- Duplicate email: Return `{"error": "Email already exists"}`
PLAN (HOW):
## Validation Implementation
- Use regex pattern: `^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`
- Cache validation results in Redis (TTL: 5 min)
- Database query: `SELECT COUNT(*) FROM users WHERE email = ?`
Why this matters:
- Specs remain stable - Implementation details change, requirements don't
- Implementation flexibility - Can change HOW without changing WHAT
- Clearer reviews - Easy to see if requirements are met vs implementation quality
- Better evolution - When code diverges from spec, know which to update
The Process
1. Gather Requirements
Extract from user input:
- What needs to be built
- Why it's needed (purpose/problem)
- Success criteria
- Constraints and dependencies
- Error cases and edge conditions
Ask clarifying questions (brief, targeted):
- Only if critical information is missing
- Keep questions focused and specific
- Don't turn this into full brainstorming session
If requirements are vague:
Stop and use sdd:brainstorm instead.
2. Check Project Context
Review existing specs:
ls -la specs/features/
# Or: ls -la specs/[NNNN]-*/
Check for constitution:
cat .specify/memory/constitution.md
Look for related features:
- Similar functionality already specced
- Integration points
- Shared components
3. Create Specification
Use spec-kit tools:
# Interactive spec creation using spec-kit template
speckit specify "[feature description]"
# Or use spec-kit scripts directly
.specify/scripts/bash/create-new-feature.sh --json "[feature description]"
This will:
- Create feature directory (e.g.,
specs/0001-feature-name/) - Initialize spec.md from template
- Set up directory structure (docs/, checklists/, contracts/)
Fill in the spec following template structure:
- Purpose - WHY this feature exists
- Functional Requirements - WHAT it must do
- Non-Functional Requirements - Performance, security, etc.
- Success Criteria - Measurable outcomes
- Error Handling - What can go wrong
- Edge Cases - Boundary conditions
- Constraints - Limitations
- Dependencies - What this relies on
- Out of Scope - What this doesn't do
Follow WHAT/WHY principle:
- Focus on observable behavior
- Avoid implementation details
- Use user/system perspective
- Keep technology-agnostic where possible
4. Validate Against Constitution
If constitution exists:
cat .specify/memory/constitution.md
Check alignment:
- Does spec follow project principles?
- Are patterns consistent with constitution?
- Does error handling match standards?
- Are architectural decisions aligned?
Note any deviations and justify them in spec.
5. Review Spec Soundness
Before finishing, validate:
Use sdd:review-spec skill to check:
- Completeness (all sections filled)
- Clarity (no ambiguous language)
- Implementability (can generate plan from this)
- Testability (success criteria measurable)
If review finds issues:
- Fix critical issues before proceeding
- Document any known gaps
- Mark unclear areas for clarification
6. Commit Spec
Create git commit:
git add specs/[feature-dir]/
git commit -m "Add spec for [feature-name]"
Spec is now source of truth for this feature.
Next Steps
After spec creation:
-
Review spec soundness (if not already done):
Use sdd:review-spec -
Implement the feature:
Use sdd:implement -
Or refine spec further if issues found
Remember
Spec is contract, not design doc:
- Defines WHAT and WHY
- Defers HOW to implementation
- Remains stable as code evolves
- Is source of truth for compliance
Keep specs:**
- Technology-agnostic
- User-focused
- Measurable
- Implementable
The goal: A clear, unambiguous specification that serves as the single source of truth for implementation and validation.
Quick Install
/plugin add https://github.com/rhuss/cc-superpowers-sdd/tree/main/specCopy and paste this command in Claude Code to install this skill
GitHub 仓库
Related Skills
langchain
MetaLangChain is a framework for building LLM applications using agents, chains, and RAG pipelines. It supports multiple LLM providers, offers 500+ integrations, and includes features like tool calling and memory management. Use it for rapid prototyping and deploying production systems like chatbots, autonomous agents, and question-answering services.
webapp-testing
TestingThis Claude Skill provides a Playwright-based toolkit for testing local web applications through Python scripts. It enables frontend verification, UI debugging, screenshot capture, and log viewing while managing server lifecycles. Use it for browser automation tasks but run scripts directly rather than reading their source code to avoid context pollution.
business-rule-documentation
MetaThis skill provides standardized templates for systematically documenting business logic and domain knowledge following Domain-Driven Design principles. It helps developers capture business rules, process flows, decision trees, and terminology glossaries to maintain consistency between requirements and implementation. Use it when documenting domain models, creating business rule repositories, or bridging communication between business and technical teams.
csv-data-summarizer
MetaThis skill automatically analyzes CSV files to generate comprehensive statistical summaries and visualizations using Python's pandas and matplotlib/seaborn. It should be triggered whenever a user uploads or references CSV data without prompting for analysis preferences. The tool provides immediate insights into data structure, quality, and patterns through automated analysis and visualization.
