
spec
by rhuss
Specification-Driven Development with Process Discipline for Claude Code
SKILL.md
name: spec description: Create specifications directly from clear requirements - uses spec-kit tools to create formal, executable specs following WHAT/WHY principle (not HOW)
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.
Score
Total Score
Based on repository quality metrics
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
3ヶ月以内に更新がある
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
Reviews
Reviews coming soon