Specification Creator
Systematically gather client requirements and transform them into comprehensive, development-ready specifications.
Core Specification Types
Product Specifications (PRD)
User-facing features, business goals, and product requirements
Technical Specifications
Architecture, implementation details, technology stack, and system design
Design Specifications
UI/UX requirements, visual design guidelines, interaction patterns, and accessibility
API Specifications
Endpoint definitions, request/response schemas, authentication, and integration details
Specification Creation Workflow
Follow this systematic process for gathering requirements and creating specs:
Specification Progress: - [ ] Step 1: Identify specification type and scope - [ ] Step 2: Gather requirements through structured questions - [ ] Step 3: Organize and structure collected information - [ ] Step 4: Create specification document - [ ] Step 5: Validate for completeness and clarity - [ ] Step 6: Review and finalize
Step 1: Identify Specification Type and Scope
Determine what type of specification is needed:
Questions to ask:
- •What is the primary purpose of this specification?
- •Who is the intended audience (developers, designers, stakeholders)?
- •What is the project scope (new feature, entire system, integration)?
- •What are the deliverables and success criteria?
Step 2: Gather Requirements Through Structured Questions
Use targeted questions based on specification type:
For Product Specifications:
- •What problem does this solve for users?
- •Who are the target users and what are their needs?
- •What are the core features and functionality?
- •What are the business goals and success metrics?
- •What are the constraints (timeline, budget, resources)?
- •What are the dependencies on other systems or features?
For Technical Specifications:
- •What is the current system architecture?
- •What are the technical requirements and constraints?
- •What technologies and frameworks will be used?
- •What are the performance requirements?
- •What are the security and compliance needs?
- •How will the system scale?
- •What are the data storage and processing requirements?
For Design Specifications:
- •What is the desired user experience?
- •What are the visual design requirements (branding, style guide)?
- •What are the interaction patterns and user flows?
- •What are the accessibility requirements (WCAG compliance)?
- •What are the responsive design requirements?
- •What components and design patterns should be used?
For API Specifications:
- •What are the API endpoints and their purposes?
- •What are the request and response formats?
- •What authentication and authorization are required?
- •What are the rate limits and quotas?
- •What error handling is needed?
- •What are the versioning requirements?
- •What documentation format should be used (OpenAPI, etc.)?
Step 3: Organize and Structure Information
Group related requirements:
- •Categorize by feature, component, or functional area
- •Identify dependencies between requirements
- •Prioritize requirements (must-have, should-have, nice-to-have)
- •Note any conflicts or ambiguities that need resolution
Create initial outline:
- •Executive summary or overview
- •Core requirements sections
- •Technical details
- •Success criteria and acceptance criteria
- •Timeline and milestones (if applicable)
Step 4: Create Specification Document
Use the appropriate template based on specification type. See reference files for detailed templates:
Product Specs: See PRODUCT-TEMPLATE.md Technical Specs: See TECHNICAL-TEMPLATE.md Design Specs: See DESIGN-TEMPLATE.md API Specs: See API-TEMPLATE.md
Step 5: Validate for Completeness
Run through the validation checklist:
// Validation Checklist
const validation = {
clarity: [
'Are all technical terms defined?',
'Are requirements specific and measurable?',
'Is the language clear and unambiguous?',
],
completeness: [
'Are all sections filled out?',
'Are dependencies identified?',
'Are edge cases addressed?',
'Are acceptance criteria defined?',
],
consistency: [
'Do different sections align with each other?',
'Are naming conventions consistent?',
'Are similar requirements handled similarly?',
],
feasibility: [
'Are requirements technically achievable?',
'Are timelines realistic?',
'Are resources adequate?',
],
};
If validation fails:
- •Note specific gaps or issues
- •Gather additional information
- •Revise the specification
- •Run validation again
Only proceed when validation passes
Step 6: Review and Finalize
Final review process:
- •Read through entire specification end-to-end
- •Verify all cross-references are correct
- •Ensure consistent formatting and structure
- •Add table of contents if document is long
- •Include version number and last updated date
- •List all stakeholders and reviewers
- •Save in appropriate format (Markdown, PDF, etc.)
Question Patterns for Requirement Gathering
Discovery Questions
Uncover hidden requirements and constraints:
- •"What happens when [edge case]?"
- •"How should the system handle [error condition]?"
- •"What are the performance expectations for [scenario]?"
- •"Who needs to be notified when [event occurs]?"
- •"What data needs to be tracked for [feature]?"
Clarification Questions
Eliminate ambiguity:
- •"When you say [term], do you mean [interpretation A] or [interpretation B]?"
- •"Can you provide an example of [requirement]?"
- •"What does success look like for [feature]?"
- •"What are the specific metrics for [goal]?"
Constraint Questions
Identify limitations:
- •"What are the technical constraints?"
- •"What is the timeline for delivery?"
- •"What is the budget?"
- •"What compliance requirements must be met?"
- •"What are the integration requirements?"
Prioritization Questions
Determine what matters most:
- •"If you could only have three features, which would they be?"
- •"What is absolutely required for launch vs. what can wait?"
- •"What would cause the most user pain if missing?"
Specification Quality Guidelines
Good Specifications
Characteristics:
- •Specific and measurable acceptance criteria
- •Clear user stories or use cases
- •Concrete examples with input/output
- •Well-defined edge cases and error handling
- •Explicit dependencies and assumptions
- •Quantified performance requirements
- •Structured and easy to navigate
Example - Good Requirement:
Requirement: User Authentication
The system shall implement JWT-based authentication with the following requirements:
1. Login endpoint: POST /api/auth/login
- Input: { email: string, password: string }
- Output: { token: string, expiresIn: number, user: UserObject }
- Response time: < 200ms (p95)
2. Token expiration: 24 hours
3. Password requirements:
- Minimum 8 characters
- Must contain: uppercase, lowercase, number, special character
4. Rate limiting: 5 failed attempts per email per 15 minutes
5. Security: Passwords hashed with bcrypt (cost factor: 12)
Acceptance Criteria:
- User can log in with valid credentials
- Invalid credentials return 401 with error message
- Expired tokens are rejected with 401
- Rate limit blocks after 5 failed attempts
Bad Specifications
Avoid:
- •Vague requirements ("fast", "user-friendly", "secure")
- •Missing acceptance criteria
- •Implementation details in product specs
- •Conflicting requirements
- •Undefined technical terms without context
- •No prioritization
- •Missing error handling
Example - Bad Requirement:
Requirement: User Login Users should be able to log in to the system. The login should be secure and fast. Use industry best practices. // Problems: // - "secure" is vague // - "fast" is not quantified // - "best practices" is undefined // - No acceptance criteria // - No error handling specified // - No technical details
Common Patterns by Specification Type
Product Specification Pattern
# [Feature Name] - Product Specification ## Overview [One-paragraph summary of what this feature does and why it matters] ## Problem Statement [What user problem does this solve?] ## User Stories As a [user type], I want to [action] so that [benefit] ## Requirements ### Must Have (P0) - [Critical requirement 1] - [Critical requirement 2] ### Should Have (P1) - [Important requirement 1] ### Nice to Have (P2) - [Optional enhancement 1] ## User Flows [Step-by-step user interactions] ## Success Metrics [How will we measure success?] ## Out of Scope [What this does NOT include]
Technical Specification Pattern
# [System/Feature Name] - Technical Specification ## Architecture Overview [High-level system design] ## Components ### Component A - Responsibility: [What it does] - Technology: [Stack used] - Dependencies: [What it depends on] - API: [Interfaces it exposes] ## Data Models [Database schemas, entities] ## API Endpoints [If applicable] ## Security Considerations [Authentication, authorization, data protection] ## Performance Requirements [Latency, throughput, scalability targets] ## Error Handling [How errors are handled and reported] ## Testing Strategy [Unit, integration, e2e testing approach] ## Deployment [How it will be deployed and configured]
Design Specification Pattern
# [Feature Name] - Design Specification ## Design Goals [What experience are we creating?] ## User Personas [Who are we designing for?] ## User Flows [Visual or text-based flow diagrams] ## Component Library [What UI components are used?] ## Visual Design - Colors: [Palette] - Typography: [Font families, sizes] - Spacing: [Grid system] - Icons: [Icon set] ## Interaction Patterns [How users interact with elements] ## Responsive Behavior [Mobile, tablet, desktop breakpoints] ## Accessibility - WCAG Level: [A, AA, AAA] - Keyboard navigation: [Requirements] - Screen reader support: [Requirements] - Color contrast: [Ratios] ## States [Default, hover, active, disabled, error states]
API Specification Pattern
# [API Name] - API Specification ## Base URL https://api.example.com/v1 ## Authentication [OAuth 2.0, API Key, JWT, etc.] ## Endpoints ### GET /resource **Description:** [What this endpoint does] **Request:** - Headers: [Required headers] - Query params: [Parameters] - Example:
GET /resource?filter=value Authorization: Bearer {token}
**Response:**
- Status codes: [200, 400, 401, 404, 500]
- Body schema:
```json
{
"id": "string",
"name": "string",
"created_at": "ISO8601 timestamp"
}
Rate Limiting: [Limits]
Errors:
- •400: [What causes this]
- •401: [What causes this]
## Gap Identification
When reviewing requirements, actively look for:
**Missing Information:**
- Undefined error scenarios
- Unspecified performance requirements
- Missing user flows or interaction details
- Unclear data ownership
- Undefined integration points
**Ambiguities:**
- Subjective terms without definitions ("fast", "easy", "secure")
- Conflicting requirements
- Unclear priorities
- Vague success criteria
**Inconsistencies:**
- Different terminology for same concept
- Conflicting timelines
- Contradictory requirements
**When gaps are found:**
1. Document the gap clearly
2. Formulate specific questions to fill the gap
3. Get answers from stakeholders
4. Update specification
5. Re-validate
## Specification Formats
### Markdown Format
Best for: Internal documentation, version control, developer-focused specs
**Advantages:**
- Easy to read and write
- Version control friendly
- Supports code blocks and tables
- Can be rendered as HTML
### PDF Format
Best for: Client deliverables, formal sign-off, presentations
**Advantages:**
- Professional appearance
- Consistent rendering across platforms
- Can include rich graphics
### OpenAPI/Swagger Format
Best for: API specifications
**Advantages:**
- Machine-readable
- Auto-generates documentation
- Supports testing tools
- Industry standard
### Confluence/Notion Format
Best for: Team collaboration, living documents
**Advantages:**
- Real-time collaboration
- Rich media support
- Comments and discussions
- Easy to organize
## Tips for Effective Specification Creation
1. **Start with the problem, not the solution**
- Understand the "why" before the "what"
- Validate the problem exists
2. **Use concrete examples**
- Include actual data samples
- Show input/output examples
- Demonstrate edge cases
3. **Define acceptance criteria upfront**
- Make success measurable
- Use specific, testable criteria
4. **Iterate early and often**
- Share drafts for feedback
- Validate assumptions
- Refine based on questions
5. **Keep stakeholders aligned**
- Regular check-ins during creation
- Document decisions and rationale
- Get sign-off on major decisions
6. **Version your specifications**
- Track changes over time
- Document what changed and why
- Maintain history
7. **Link related specifications**
- Reference dependencies
- Cross-link related features
- Maintain traceability
## When to Use This Skill
Use specification creation when:
- Starting a new project or feature
- Converting client conversations into formal requirements
- Documenting an existing system
- Preparing for development handoff
- Resolving ambiguous or conflicting requirements
- Creating API or integration documentation
- Defining design systems or component libraries
Specifications are especially valuable for:
- Complex features with multiple stakeholders
- Projects requiring formal approval or sign-off
- Systems with compliance requirements
- Features requiring cross-team coordination
- Long-term projects needing documentation