Specification Proposal Creation
Creates comprehensive change proposals following spec-driven development methodology.
Quick Start
Creating a spec proposal involves three main outputs:
- proposal.md - Why, what, and impact summary
- tasks.md - Numbered implementation checklist
- spec-delta.md - Formal requirement changes (ADDED/MODIFIED/REMOVED)
Basic workflow: Generate change ID → scaffold directories → draft proposal → create spec deltas → validate structure
Workflow
Copy this checklist and track progress:
Proposal Progress:
- [ ] Step 1: Review existing specifications
- [ ] Step 2: Generate unique change ID
- [ ] Step 3: Scaffold directory structure
- [ ] Step 4: Draft proposal.md (Why/What/Impact)
- [ ] Step 5: Create tasks.md implementation checklist
- [ ] Step 6: Write spec deltas with EARS format
- [ ] Step 7: Validate proposal structure
- [ ] Step 8: Present for user approval
Step 1: Review existing specifications
Before creating a proposal, understand the current state:
# List all existing specs
find spec/specs -name "spec.md" -type f
# List active changes to avoid conflicts
find spec/changes -maxdepth 1 -type d -not -path "*/archive"
# Search for related requirements
grep -r "### Requirement:" spec/specs/
Step 2: Generate unique change ID
Choose a descriptive, URL-safe identifier:
Format: add-<feature>, fix-<issue>, update-<component>, remove-<feature>
Examples:
add-user-authenticationfix-payment-validationupdate-api-rate-limitsremove-legacy-endpoints
Validation: Check for conflicts:
ls spec/changes/ | grep -i "<proposed-id>"
Step 3: Scaffold directory structure
Create the change folder with standard structure:
# Replace {change-id} with actual ID
mkdir -p spec/changes/{change-id}/specs/{capability-name}
Example:
mkdir -p spec/changes/add-user-auth/specs/authentication
Step 4: Draft proposal.md
Use the template at templates/proposal.md as starting point.
Required sections:
- Why: Problem or opportunity driving this change
- What Changes: Bullet list of modifications
- Impact: Affected specs, code, APIs, users
Tone: Clear, concise, decision-focused. Avoid unnecessary background.
Step 5: Create tasks.md implementation checklist
Break implementation into concrete, testable tasks. Use the template at templates/tasks.md.
Format:
# Implementation Tasks
1. [First concrete task]
2. [Second concrete task]
3. [Test task]
4. [Documentation task]
Best practices:
- Each task is independently completable
- Include testing and validation tasks
- Order by dependencies (database before API, etc.)
- 5-15 tasks is typical; split if more needed
Step 6: Write spec deltas with EARS format
This is the most critical step. Spec deltas use EARS format (Easy Approach to Requirements Syntax).
For complete EARS guidelines, see reference/EARS_FORMAT.md
Delta operations:
## ADDED Requirements- New capabilities## MODIFIED Requirements- Changed behavior (include full updated text)## REMOVED Requirements- Deprecated features
Basic requirement structure:
## ADDED Requirements
### Requirement: User Login
WHEN a user submits valid credentials,
the system SHALL authenticate the user and create a session.
#### Scenario: Successful Login
GIVEN a user with email "user@example.com" and password "correct123"
WHEN the user submits the login form
THEN the system creates an authenticated session
AND redirects to the dashboard
For validation patterns, see reference/VALIDATION_PATTERNS.md
Step 7: Validate proposal structure
Run these checks before presenting to user:
Structure Checklist:
- [ ] Directory exists: `spec/changes/{change-id}/`
- [ ] proposal.md has Why/What/Impact sections
- [ ] tasks.md has numbered task list (5-15 items)
- [ ] Spec deltas have operation headers (ADDED/MODIFIED/REMOVED)
- [ ] Requirements follow `### Requirement: <name>` format
- [ ] Scenarios use `#### Scenario:` format (4 hashtags)
Automated checks:
# Count delta operations (should be > 0)
grep -c "## ADDED\|MODIFIED\|REMOVED" spec/changes/{change-id}/specs/**/*.md
# Verify scenario format (should show line numbers)
grep -n "#### Scenario:" spec/changes/{change-id}/specs/**/*.md
# Check requirement headers
grep -n "### Requirement:" spec/changes/{change-id}/specs/**/*.md
Step 8: Present for user approval
Summarize the proposal clearly:
## Proposal Summary
**Change ID**: {change-id}
**Scope**: {brief description}
**Files created**:
- spec/changes/{change-id}/proposal.md
- spec/changes/{change-id}/tasks.md
- spec/changes/{change-id}/specs/{capability}/spec-delta.md
**Next steps**:
Review the proposal. If approved, say "openspec implement" or "apply the change" to begin implementation.
Advanced Topics
EARS format details: See reference/EARS_FORMAT.md Validation patterns: See reference/VALIDATION_PATTERNS.md Complete examples: See reference/EXAMPLES.md
Common Patterns
Pattern 1: New feature proposal
When adding net-new capability:
- Use
ADDED Requirementsdelta - Include positive scenarios AND error handling
- Consider edge cases in scenarios
Pattern 2: Breaking change proposal
When changing existing behavior:
- Use
MODIFIED Requirementsdelta - Include complete updated requirement text
- Document what changes and why in proposal.md
- Consider migration tasks in tasks.md
Pattern 3: Deprecation proposal
When removing features:
- Use
REMOVED Requirementsdelta - Document removal rationale in proposal.md
- Include cleanup tasks in tasks.md
- Consider user migration in impact section
Anti-Patterns to Avoid
Don't:
- Skip validation checks (always run grep patterns)
- Create proposals without reviewing existing specs first
- Use vague task descriptions ("Fix the thing")
- Write requirements without scenarios
- Forget error handling scenarios
- Mix multiple unrelated changes in one proposal
Do:
- Check for conflicts before creating change ID
- Write concrete, testable tasks
- Include positive AND negative scenarios
- Keep one concern per proposal
- Validate structure before presenting
File Templates
All templates are in the templates/ directory:
- proposal.md - Proposal structure
- tasks.md - Task checklist format
- spec-delta.md - Spec delta template
Reference Materials
- EARS_FORMAT.md - Complete EARS syntax guide
- VALIDATION_PATTERNS.md - Grep/bash validation
- EXAMPLES.md - Real-world proposal examples
Token budget: This SKILL.md is approximately 450 lines, under the 500-line recommended limit. Reference files load only when needed for progressive disclosure.