openspec-plugin/skills/openspec-workflow/SKILL.md
Use when implementing complex features requiring clear specifications before coding - creates spec-driven workflow with proposals, task breakdown, and delta documentation; works standalone or with OpenSpec CLI for enhanced features
npx skillsauth add petrogurcak/skills openspec-workflowInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill implements spec-driven development that creates structured alignment between humans and AI before implementation begins. It separates source-of-truth specifications from proposed changes, maintaining explicit and auditable scope throughout development.
Core principle: Align on specifications BEFORE writing any implementation code.
Announce: "I'm using the OpenSpec workflow to establish clear specifications before implementation."
This skill works in TWO modes:
openspec validate <change>openspec viewopenspec archive <change>You choose: Install OpenSpec CLI for bonus features, or skip it and use standalone mode.
Always use OpenSpec for:
Skip OpenSpec for:
Red flags that mean you SHOULD use OpenSpec:
# Already done if you're reading this!
# Skill is installed at: ~/.claude/skills/openspec-workflow/
Only install if you want validation, dashboard, and automated archiving:
# Check if you want the CLI
openspec --version
# If not installed and you want bonus features:
npm install -g @fission-ai/openspec@latest
# Verify
openspec --version
Note: You DON'T need to run openspec init in projects. This skill creates the structure for you.
This skill creates and manages:
openspec/
├── specs/ # Source of truth specifications
│ └── [feature-area]/
│ └── spec.md
└── changes/ # Proposed changes (active work)
└── [change-name]/
├── proposal.md # Why and what changes
├── tasks.md # Implementation checklist
├── design.md # Technical decisions (optional)
└── specs/
└── [feature-area]/
└── spec.md # Specification delta
What I do:
openspec/ exists, create if neededopenspec/changes/[change-name]/ directoryproposal.md with:
Commands I run:
mkdir -p openspec/specs
mkdir -p openspec/changes/[change-name]/specs
Then write openspec/changes/[change-name]/proposal.md:
# [Feature Name]
## Problem
[What issue does this solve?]
## Proposed Solution
[High-level approach]
## Scope
### Included
- [Item 1]
- [Item 2]
### Explicitly Excluded
- [Item 1]
- [Item 2]
## Success Criteria
1. [Criterion 1]
2. [Criterion 2]
Key principle: Proposal explains WHY. Specs explain WHAT. Tasks explain HOW.
What happens:
What I create:
openspec/changes/[change-name]/specs/[feature-area]/spec.md with delta formatBefore moving to Stage 3:
Red flag: Starting implementation without explicit approval means skipping alignment.
What I create:
openspec/changes/[change-name]/tasks.md with structured task listTask breakdown structure:
# Implementation Tasks
## Task 1: [Description]
**Status:** pending | in_progress | completed
**References:** specs/[feature-area]/spec.md - Requirement: [Name]
### Subtasks
- [ ] Subtask 1
- [ ] Subtask 2
Integration with Superpowers Skills:
For each task, I follow:
IMPORTANT: OpenSpec defines WHAT to build. TDD ensures HOW you build it is correct.
Standalone mode:
# I manually move:
mv openspec/changes/[change-name] openspec/changes/archive/[change-name]
With OpenSpec CLI (bonus):
# I run automated archiving:
openspec archive [change-name]
# This auto-merges specs and moves to archive
Before archiving:
What I do:
openspec/changes/archive/[change-name]/specs/openspec/specs/[feature-area]/spec.mdThis step ensures: Living documentation that evolves with the codebase.
All spec changes must use this format:
## ADDED Requirements
### Requirement: [Name]
The system SHALL [mandatory behavior using SHALL/MUST].
#### Scenario: [Name]
**Given:** [Initial state]
**When:** [Action]
**Then:** [Expected outcome]
## MODIFIED Requirements
### Requirement: [Name]
[Complete UPDATED requirement text - not just the diff]
#### Scenario: [Name]
**Given:** [Initial state]
**When:** [Action]
**Then:** [Expected outcome]
## REMOVED Requirements
### Requirement: [Name]
[Brief explanation of why removed]
Mandatory:
### Requirement: <name> headers#### Scenario: block per requirementFor MODIFIED requirements:
If OpenSpec CLI is installed, I can use these commands:
# Before I use:
test -f "$(which openspec)" && openspec validate [change-name]
# Checks:
# - All requirements have names
# - All requirements have scenarios
# - Scenarios have Given/When/Then
# - Delta sections present
# Interactive view:
openspec view
# List changes:
openspec list
# Display change details:
openspec show [change-name]
# Automated archiving with spec merge:
openspec archive [change-name]
How I check for CLI:
# Check if openspec command exists
if command -v openspec &> /dev/null; then
# CLI available - use bonus features
openspec validate [change-name]
else
# CLI not available - standalone mode
# Create structure manually
fi
You'll see me say:
OpenSpec works alongside existing superpowers skills:
When to use together:
Pattern:
1. User requests feature
2. Use brainstorming skill to explore approaches
3. Use OpenSpec to document chosen approach in proposal
4. Get alignment from stakeholders
5. Proceed to implementation
Mandatory integration: OpenSpec defines WHAT. TDD ensures correctness.
Pattern for Stage 3 (Implementation):
For each task in openspec/changes/[name]/tasks.md:
1. Reference the spec requirement
2. Write failing test based on spec scenario
3. Watch test fail (verify RED)
4. Write minimal code to pass (GREEN)
5. Refactor while staying green
6. Mark task complete
Use after: Completing logical chunks within Stage 3 (Implementation)
Pattern:
1. Complete 2-3 related tasks from tasks.md
2. Ensure all tests pass
3. Use code review skill to validate against spec
4. Address feedback
5. Continue with next tasks
Use when: Encountering bugs during Stage 3 (Implementation)
Pattern:
1. Bug found during implementation
2. Use systematic debugging to identify root cause
3. Write test reproducing bug (TDD)
4. Fix bug following TDD cycle
5. Update tasks.md if bug reveals missing task
Don't use OpenSpec for:
Rule of thumb: If it takes longer to write the spec than implement, skip OpenSpec.
| Excuse | Reality | |--------|---------| | "Specs will slow me down" | Specs catch misalignment before wasting implementation time | | "Requirements are clear in my head" | Head knowledge isn't shared, reviewable, or persistent | | "I'll document after implementation" | After = biased by what you built, not what's needed | | "This is too simple for specs" | Simple features have requirements too. Spec takes 5 minutes. | | "We can iterate after building" | Building wrong thing is slower than aligning first | | "The code is self-documenting" | Code shows HOW, not WHY or WHAT was intended |
All of these mean: Stop. Use OpenSpec. Get alignment.
User Request: "Add user authentication to the app"
I run:
mkdir -p openspec/specs
mkdir -p openspec/changes/user-authentication/specs/auth
I create openspec/changes/user-authentication/proposal.md:
# User Authentication
## Problem
Users can currently access all features without authentication, creating
security risks and preventing personalization.
## Proposed Solution
Implement JWT-based authentication with email/password login, registration,
and session management.
## Scope
**Included:**
- User registration with email/password
- Login with JWT token generation
- Protected route middleware
- Logout functionality
**Excluded:**
- Social login (OAuth)
- Password reset (separate change)
- Multi-factor authentication
## Success Criteria
- Users can register with email/password
- Users can login and receive JWT token
- Protected routes reject unauthenticated requests
- Users can logout and invalidate token
I ask: "Please review this proposal. Should I proceed with this approach?"
After your approval, I create openspec/changes/user-authentication/specs/auth/spec.md:
## ADDED Requirements
### Requirement: User Registration
The system SHALL allow new users to register with email and password.
#### Scenario: Successful Registration
**Given:** User provides valid email and password
**When:** User submits registration form
**Then:** System creates user account and returns success
### Requirement: User Login
The system SHALL authenticate users and issue JWT tokens.
#### Scenario: Valid Credentials
**Given:** User has registered account
**When:** User provides correct email and password
**Then:** System returns JWT token valid for 24 hours
I create openspec/changes/user-authentication/tasks.md and implement each task with TDD.
Standalone mode:
mkdir -p openspec/changes/archive
mv openspec/changes/user-authentication openspec/changes/archive/
I merge the delta into openspec/specs/auth/spec.md.
Before marking OpenSpec work complete:
Complex feature → Use OpenSpec first, then implement with TDD
Clear specs → Better implementation
Alignment first → Less rework
No exceptions without your human partner's explicit permission.
"I don't have OpenSpec CLI"
"Should I install OpenSpec CLI?"
"Skill created structure but validation failed"
This skill works immediately. OpenSpec CLI is a bonus, not a requirement.
development
Builds a pre-launch social proof strategy through structured beta programs using D'Souza Brain Audit interviews. Use when launching new products/services and need compelling testimonials, planning a beta cohort, designing interview questions to harvest objection-busting social proof, improving video testimonials for landing pages, or designing case studies with metrics. Trigger phrases include "beta tester program for testimonials", "pre-launch social proof", "Brain Audit testimonial framework", "case study harvest", "reverse testimonial", "video testimonial mechanics", "social proof landing page", "sběr referencí", "beta tester program", "testimonial pro landing page", "social proof před launchem", "rozhovor s klientem", "case study sběr", "reference před spuštěním". NOT for ongoing case study production (use growth-hacking case-study approach), offer design (use offer-creation), or conversion optimization (use ux-optimization).
development
Use when planning a product launch and the product type is unclear or could be either generic (SaaS/app/physical) or info-product. Routes between marketing:launch-strategy (generic launches) and marketing:info-product-launch (courses, memberships, ebooks, cohorts, communities). Trigger phrases - "launch", "spuštění", "go-to-market", "product launch", "release strategy", "uvedení na trh", "launch plan", "spuštění produktu", "launch sequence", "launch strategy". Do NOT trigger when product type is already clear (use specific skill directly).
testing
Specialized 8-week launch cadence for info-products — online courses, cohort programs, memberships, communities, ebooks, masterminds. Combines Jeff Walker's Product Launch Formula (Seed/Internal/JV variants, PLC sequence, open-cart day-by-day) with Stu McLaren's membership mechanics (closed cart, Success Path) and Hormozi Grand Slam Offer stacking. Use when planning "launch online kurzu", "info-product launch", "PLF launch", "course launch", "membership launch", "cohort launch", "ebook launch", "open cart close cart", "8-week launch of online course", "beta cohort to launch sequence", "spuštění kurzu", "launch členské sekce", "open cart strategie". Differentiates from marketing:launch-strategy (generic SaaS/app launches) — info-product-specific. NOT for SaaS launches, physical products, or services.
development
Use when releasing an Expo/React Native mobile app to App Store and Google Play - covers eas submit, ASC "Submit for Review", Play promote Internal→Production, OTA update, and decoding common silent failures (Apple agreement expiry, missing English locale, Background Location declaration, web bundle failure on react-native-maps).