superspecs 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.skills/execute-branch/SKILL.md +102 -0
- package/.skills/execute-pick-spec/SKILL.md +162 -0
- package/.skills/execute-review/SKILL.md +161 -0
- package/.skills/execute-subagent/SKILL.md +149 -0
- package/.skills/execute-tdd/SKILL.md +168 -0
- package/.skills/plan-discuss/SKILL.md +147 -0
- package/.skills/plan-spec/SKILL.md +193 -0
- package/.skills/ship/SKILL.md +150 -0
- package/.skills/skill-creator/SKILL.md +64 -0
- package/.skills/techstack/SKILL.md +522 -0
- package/.skills/verify-tests/SKILL.md +153 -0
- package/.skills/verify-wiki/SKILL.md +180 -0
- package/AGENTS.md +38 -0
- package/CLAUDE.md +44 -0
- package/GEMINI.md +9 -0
- package/HOWITWORKS.md +208 -0
- package/LICENSE +21 -0
- package/README.md +303 -0
- package/bin/superspecs.js +60 -0
- package/package.json +52 -0
- package/setup.sh +111 -0
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: execute-tdd
|
|
3
|
+
description: Enforce RED-GREEN-REFACTOR for every implementation task. Write failing test, watch it fail, write minimal code, watch it pass, commit. Delete code written before tests. Activates during implementation. Triggers on /tdd, when a task starts, or when code is being written without a test.
|
|
4
|
+
slash_command: tdd
|
|
5
|
+
phase: "2.4 — Execute › TDD"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skill: execute-tdd
|
|
9
|
+
|
|
10
|
+
You are enforcing test-driven development. This skill activates during every implementation task.
|
|
11
|
+
|
|
12
|
+
## The Law
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
RED → GREEN → REFACTOR
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
This is not a suggestion. It is the only permitted order of operations.
|
|
19
|
+
|
|
20
|
+
Code written before a failing test exists gets **deleted**.
|
|
21
|
+
|
|
22
|
+
## Steps
|
|
23
|
+
|
|
24
|
+
### RED Phase
|
|
25
|
+
|
|
26
|
+
#### 1. Read the task's test requirement
|
|
27
|
+
|
|
28
|
+
Every task in `tasks.md` has a `Test requirement:` field. Read it before touching any implementation file.
|
|
29
|
+
|
|
30
|
+
#### 2. Write the test
|
|
31
|
+
|
|
32
|
+
Write a test that:
|
|
33
|
+
- Tests the **behavior** described in the task (not implementation details)
|
|
34
|
+
- Is specific enough to fail for the right reason
|
|
35
|
+
- Uses the same test framework as the rest of the project (detect from existing test files)
|
|
36
|
+
|
|
37
|
+
The test should read like documentation: *given this setup, when I do this, I expect this outcome.*
|
|
38
|
+
|
|
39
|
+
#### 3. Run the test — confirm RED
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Run ONLY the new test (not the full suite)
|
|
43
|
+
<test-runner> <test-file> -t "<test-name>"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Expected: FAIL**
|
|
47
|
+
|
|
48
|
+
Check the failure reason:
|
|
49
|
+
- ✅ Right reason: the feature doesn't exist yet → proceed
|
|
50
|
+
- ❌ Wrong reason: import error, syntax error, test setup problem → fix the test, not the implementation
|
|
51
|
+
- ❌ Passes immediately: the test is wrong — it's not testing anything new → rewrite it
|
|
52
|
+
|
|
53
|
+
Do not proceed to GREEN until the test fails for the right reason.
|
|
54
|
+
|
|
55
|
+
### GREEN Phase
|
|
56
|
+
|
|
57
|
+
#### 4. Write the minimum implementation
|
|
58
|
+
|
|
59
|
+
Write the smallest amount of code that makes the test pass. That's it.
|
|
60
|
+
|
|
61
|
+
Rules:
|
|
62
|
+
- No code that isn't needed for this test
|
|
63
|
+
- No "I'll need this later" additions (YAGNI)
|
|
64
|
+
- No refactoring yet (that's REFACTOR phase)
|
|
65
|
+
- No changing the test to make it pass easier
|
|
66
|
+
|
|
67
|
+
#### 5. Run the test — confirm GREEN
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
<test-runner> <test-file> -t "<test-name>"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Expected: PASS**
|
|
74
|
+
|
|
75
|
+
If it fails, fix the implementation. Do not touch the test.
|
|
76
|
+
|
|
77
|
+
#### 6. Run the full suite — confirm no regressions
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
<test-runner>
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Expected: all previously-passing tests still pass**
|
|
84
|
+
|
|
85
|
+
If regressions exist: fix them before proceeding. A new feature that breaks existing behavior is not done.
|
|
86
|
+
|
|
87
|
+
### REFACTOR Phase
|
|
88
|
+
|
|
89
|
+
#### 7. Improve without changing behavior
|
|
90
|
+
|
|
91
|
+
Look for:
|
|
92
|
+
- Duplication (same logic in 2+ places) → extract
|
|
93
|
+
- Unclear naming → rename
|
|
94
|
+
- Unnecessary complexity → simplify
|
|
95
|
+
- Inconsistency with project patterns → align
|
|
96
|
+
|
|
97
|
+
Rules:
|
|
98
|
+
- Tests stay green throughout
|
|
99
|
+
- No new functionality
|
|
100
|
+
- No changes that aren't improvements
|
|
101
|
+
|
|
102
|
+
Run the full suite after each refactor step.
|
|
103
|
+
|
|
104
|
+
#### 8. Commit
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
git add <changed files>
|
|
108
|
+
git commit -m "task <task-id>: <description>
|
|
109
|
+
|
|
110
|
+
- test: <what the test verifies>
|
|
111
|
+
- impl: <what was implemented>
|
|
112
|
+
"
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Violations
|
|
116
|
+
|
|
117
|
+
### Code before test
|
|
118
|
+
|
|
119
|
+
If implementation code was written before the test:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
⚠️ Code found without test coverage.
|
|
123
|
+
|
|
124
|
+
Files affected: <list>
|
|
125
|
+
Action required: Delete implementation, write test first.
|
|
126
|
+
|
|
127
|
+
The RED-GREEN-REFACTOR cycle must start from RED.
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Delete the untested code. Start from RED.
|
|
131
|
+
|
|
132
|
+
### Skipped tests
|
|
133
|
+
|
|
134
|
+
If a test is skipped (`xit`, `skip`, `@pytest.mark.skip`, etc.):
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
⚠️ Skipped test found: <test name>
|
|
138
|
+
|
|
139
|
+
Skipped tests do not count. Either:
|
|
140
|
+
1. Remove the skip and make it pass
|
|
141
|
+
2. Delete the test if it's no longer relevant
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Pending tests (test written, no implementation)
|
|
145
|
+
|
|
146
|
+
This is acceptable as a planning step, but a task is not DONE until the test passes green.
|
|
147
|
+
|
|
148
|
+
## Progress Report Format
|
|
149
|
+
|
|
150
|
+
After each completed task:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
✅ Task <id> — RED-GREEN-REFACTOR complete
|
|
154
|
+
|
|
155
|
+
RED: <test name> — failed (reason: <right reason>)
|
|
156
|
+
GREEN: <test name> — passing
|
|
157
|
+
SUITE: X tests passing, 0 failing, 0 skipped
|
|
158
|
+
|
|
159
|
+
Commit: <short SHA> — "task <id>: <description>"
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## What NOT to do
|
|
163
|
+
|
|
164
|
+
- Do not write `// TODO: add test later`
|
|
165
|
+
- Do not mock away the behavior being tested
|
|
166
|
+
- Do not test implementation details (private methods, internal state)
|
|
167
|
+
- Do not mark a task done while any test is red or skipped
|
|
168
|
+
- Do not proceed to the next task before committing the current one
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-discuss
|
|
3
|
+
description: Capture implementation decisions BEFORE any spec is written. Triggers on /discuss, "what are we building", "let's plan", "I want to build X", "new feature". Always runs before /spec.
|
|
4
|
+
slash_command: discuss
|
|
5
|
+
phase: "1.1 — Plan › Discuss"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skill: plan-discuss
|
|
9
|
+
|
|
10
|
+
You are opening the discussion phase. This happens **before any spec is written**.
|
|
11
|
+
|
|
12
|
+
The goal is to capture every decision, assumption, constraint, and open question so the spec that follows is grounded — not guessed.
|
|
13
|
+
|
|
14
|
+
## Why this step exists
|
|
15
|
+
|
|
16
|
+
Decisions made during planning are cheap. Decisions discovered during implementation are expensive. This step makes the cheap ones explicit before they become expensive ones.
|
|
17
|
+
|
|
18
|
+
## Steps
|
|
19
|
+
|
|
20
|
+
### 1. Orient with the wiki
|
|
21
|
+
|
|
22
|
+
Before asking anything, check `superspec/wiki/`:
|
|
23
|
+
- Read `_index.md`
|
|
24
|
+
- Scan domain folders relevant to what's being described
|
|
25
|
+
- Note: existing patterns, past decisions, anything that should inform this discussion
|
|
26
|
+
|
|
27
|
+
Report what you found (or "wiki is empty / nothing relevant").
|
|
28
|
+
|
|
29
|
+
### 2. Understand the rough idea
|
|
30
|
+
|
|
31
|
+
Ask the user to describe what they want to build. Keep it conversational. One question at a time. Cover:
|
|
32
|
+
|
|
33
|
+
**What**
|
|
34
|
+
- What does this feature do from the user's perspective?
|
|
35
|
+
- What problem does it solve?
|
|
36
|
+
|
|
37
|
+
**Why now**
|
|
38
|
+
- What's the trigger for building this?
|
|
39
|
+
- What happens if we don't build it?
|
|
40
|
+
|
|
41
|
+
**Constraints**
|
|
42
|
+
- Technical constraints (existing stack, performance requirements, etc.)
|
|
43
|
+
- Scope constraints (what's explicitly NOT included?)
|
|
44
|
+
- Time or complexity constraints?
|
|
45
|
+
|
|
46
|
+
**Success**
|
|
47
|
+
- How do we know this is done?
|
|
48
|
+
- What does "working" look like?
|
|
49
|
+
|
|
50
|
+
**Risks**
|
|
51
|
+
- What could go wrong?
|
|
52
|
+
- What are we uncertain about?
|
|
53
|
+
|
|
54
|
+
Do not ask all questions at once. Read the answers and ask follow-ups. Stop when you have enough to write the discussion doc.
|
|
55
|
+
|
|
56
|
+
### 3. Write DISCUSS.md
|
|
57
|
+
|
|
58
|
+
Create `superspec/specs/<slug>/DISCUSS.md`:
|
|
59
|
+
|
|
60
|
+
```markdown
|
|
61
|
+
# Discussion: <Feature Name>
|
|
62
|
+
|
|
63
|
+
Date: <today>
|
|
64
|
+
Participants: human + AI
|
|
65
|
+
|
|
66
|
+
## What We're Building
|
|
67
|
+
|
|
68
|
+
<1-2 paragraph summary in plain language>
|
|
69
|
+
|
|
70
|
+
## Goals
|
|
71
|
+
- <Goal>
|
|
72
|
+
- <Goal>
|
|
73
|
+
|
|
74
|
+
## Non-Goals (explicitly out of scope)
|
|
75
|
+
- <Non-goal>
|
|
76
|
+
- <Non-goal>
|
|
77
|
+
|
|
78
|
+
## Constraints
|
|
79
|
+
- **Technical:** <constraint>
|
|
80
|
+
- **Scope:** <constraint>
|
|
81
|
+
- **Other:** <constraint>
|
|
82
|
+
|
|
83
|
+
## Key Decisions Made
|
|
84
|
+
|
|
85
|
+
### Decision: <Topic>
|
|
86
|
+
**We will:** <chosen approach>
|
|
87
|
+
**Because:** <reason>
|
|
88
|
+
**We won't:** <rejected alternative>
|
|
89
|
+
|
|
90
|
+
[Repeat for each significant decision]
|
|
91
|
+
|
|
92
|
+
## Open Questions
|
|
93
|
+
- [ ] <Question that needs resolution before or during implementation>
|
|
94
|
+
|
|
95
|
+
## Success Criteria
|
|
96
|
+
- [ ] <Measurable outcome>
|
|
97
|
+
- [ ] <Measurable outcome>
|
|
98
|
+
|
|
99
|
+
## Risks
|
|
100
|
+
- **<Risk>:** <Mitigation or acceptance>
|
|
101
|
+
|
|
102
|
+
## Wiki References
|
|
103
|
+
<Links to relevant existing wiki pages, or "None">
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 4. Create the spec directory and status file
|
|
107
|
+
|
|
108
|
+
Create `superspec/specs/<slug>/status.md`:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
# <Feature Name> — Status
|
|
112
|
+
|
|
113
|
+
## Phase
|
|
114
|
+
1.1 — Plan › Discuss ✅
|
|
115
|
+
|
|
116
|
+
## Checklist
|
|
117
|
+
- [x] Discussion complete (DISCUSS.md)
|
|
118
|
+
- [ ] Spec written
|
|
119
|
+
- [ ] Spec fits context window
|
|
120
|
+
- [ ] Branch created
|
|
121
|
+
- [ ] Subagent execution complete
|
|
122
|
+
- [ ] All tests passing
|
|
123
|
+
- [ ] Code review passed (no Critical findings)
|
|
124
|
+
- [ ] Wiki imported
|
|
125
|
+
- [ ] PR created
|
|
126
|
+
- [ ] Archived
|
|
127
|
+
|
|
128
|
+
## Slug
|
|
129
|
+
<slug>
|
|
130
|
+
|
|
131
|
+
## Started
|
|
132
|
+
<date>
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### 5. Confirm and hand off
|
|
136
|
+
|
|
137
|
+
Show the DISCUSS.md. Say:
|
|
138
|
+
|
|
139
|
+
> "Discussion captured. Ready to write the spec? → `/spec <slug>`"
|
|
140
|
+
|
|
141
|
+
Do not write the spec automatically. The user confirms first.
|
|
142
|
+
|
|
143
|
+
## Output
|
|
144
|
+
|
|
145
|
+
- `superspec/specs/<slug>/DISCUSS.md`
|
|
146
|
+
- `superspec/specs/<slug>/status.md`
|
|
147
|
+
- A clear handoff prompt to `/spec`
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: plan-spec
|
|
3
|
+
description: Write an OpenSpec-style spec from the discussion document. Triggers on /spec, "write the spec", "create spec". Requires DISCUSS.md to exist. The spec must fit a fresh 200k context window.
|
|
4
|
+
slash_command: spec
|
|
5
|
+
phase: "1.2 — Plan › Spec"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skill: plan-spec
|
|
9
|
+
|
|
10
|
+
You are writing the feature spec. This is the contract between planning and execution.
|
|
11
|
+
|
|
12
|
+
**Prerequisite:** `superspec/specs/<slug>/DISCUSS.md` must exist. If it doesn't, stop and say: *"Run `/discuss` first to capture decisions before writing the spec."*
|
|
13
|
+
|
|
14
|
+
## What a spec is
|
|
15
|
+
|
|
16
|
+
A spec is a precise description of system behavior — not implementation details. It answers: *what must the system do?* Not: *how does it do it?*
|
|
17
|
+
|
|
18
|
+
It uses SHALL for requirements. It uses GIVEN/WHEN/THEN for scenarios. Every requirement is testable.
|
|
19
|
+
|
|
20
|
+
## The 200k Context Window Constraint
|
|
21
|
+
|
|
22
|
+
The complete spec — plus the implementation context — must fit in a fresh 200k-token context window. This is not optional. It's what makes parallel execution possible: each executor starts clean.
|
|
23
|
+
|
|
24
|
+
**Target:** spec.md under ~3,000 words. If you find yourself writing more, the feature is too large. Decompose it.
|
|
25
|
+
|
|
26
|
+
## Steps
|
|
27
|
+
|
|
28
|
+
### 1. Read DISCUSS.md completely
|
|
29
|
+
|
|
30
|
+
Read `superspec/specs/<slug>/DISCUSS.md`. Do not proceed without understanding it fully.
|
|
31
|
+
|
|
32
|
+
### 2. Check for existing specs in this domain
|
|
33
|
+
|
|
34
|
+
Read `superspec/wiki/_index.md` and any related specs in `superspec/specs/`. Note:
|
|
35
|
+
- Patterns already established (naming, structure, error formats)
|
|
36
|
+
- Decisions already made that this spec should be consistent with
|
|
37
|
+
|
|
38
|
+
### 3. Write spec.md
|
|
39
|
+
|
|
40
|
+
Create `superspec/specs/<slug>/spec.md`:
|
|
41
|
+
|
|
42
|
+
```markdown
|
|
43
|
+
# <Feature Name> Specification
|
|
44
|
+
|
|
45
|
+
**Slug:** <slug>
|
|
46
|
+
**Status:** draft
|
|
47
|
+
**Depends on:** <other spec slugs, or "none">
|
|
48
|
+
|
|
49
|
+
## Purpose
|
|
50
|
+
|
|
51
|
+
One paragraph: what this feature does and why it exists. Written from the user/system perspective, not the implementation perspective.
|
|
52
|
+
|
|
53
|
+
## Requirements
|
|
54
|
+
|
|
55
|
+
### Requirement: <Requirement Name>
|
|
56
|
+
The system SHALL <behavior>.
|
|
57
|
+
|
|
58
|
+
#### Scenario: <Scenario Name>
|
|
59
|
+
- GIVEN <precondition>
|
|
60
|
+
- WHEN <action or event>
|
|
61
|
+
- THEN <expected outcome>
|
|
62
|
+
- AND <additional outcome> (if needed)
|
|
63
|
+
|
|
64
|
+
#### Scenario: <Edge case>
|
|
65
|
+
- GIVEN <setup>
|
|
66
|
+
- WHEN <unusual input or condition>
|
|
67
|
+
- THEN <expected safe behavior>
|
|
68
|
+
|
|
69
|
+
[Each requirement gets at least one happy-path scenario and at least one edge/error scenario]
|
|
70
|
+
|
|
71
|
+
## Error Behavior
|
|
72
|
+
|
|
73
|
+
Explicit SHALL statements for error cases:
|
|
74
|
+
- The system SHALL return <error format> when <condition>
|
|
75
|
+
- The system SHALL NOT <prohibited behavior>
|
|
76
|
+
|
|
77
|
+
## Non-Functional Requirements (if applicable)
|
|
78
|
+
- Performance: The system SHALL <behavior> within <timeframe>
|
|
79
|
+
- The system SHALL handle <load> without <failure mode>
|
|
80
|
+
|
|
81
|
+
## Out of Scope
|
|
82
|
+
- <Explicit exclusion>
|
|
83
|
+
- <Explicit exclusion>
|
|
84
|
+
|
|
85
|
+
## Glossary (if terms need definition)
|
|
86
|
+
- **<Term>:** <Definition>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 4. Write tasks.md
|
|
90
|
+
|
|
91
|
+
Decompose into concrete implementation tasks. Each task is small enough for one subagent with a fresh context.
|
|
92
|
+
|
|
93
|
+
Create `superspec/specs/<slug>/tasks.md`:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
# Implementation Tasks: <Feature Name>
|
|
97
|
+
|
|
98
|
+
## Context Window Budget
|
|
99
|
+
Estimated spec + task tokens: ~<N>k / 200k ✅
|
|
100
|
+
|
|
101
|
+
## Wave 1 — Foundation
|
|
102
|
+
Tasks that must complete before Wave 2 can start.
|
|
103
|
+
|
|
104
|
+
### Task 1.1: <Name>
|
|
105
|
+
**What:** <Precise description>
|
|
106
|
+
**Files to create/modify:** <list>
|
|
107
|
+
**Test requirement:** Write a test for <specific behavior> that fails before implementation
|
|
108
|
+
**Done when:** Test passes, no regressions
|
|
109
|
+
|
|
110
|
+
### Task 1.2: <Name>
|
|
111
|
+
**What:** <Precise description>
|
|
112
|
+
**Files to create/modify:** <list>
|
|
113
|
+
**Test requirement:** <behavior to test>
|
|
114
|
+
**Done when:** Test passes, no regressions
|
|
115
|
+
|
|
116
|
+
## Wave 2 — Core Logic
|
|
117
|
+
Tasks runnable in parallel once Wave 1 is complete.
|
|
118
|
+
|
|
119
|
+
### Task 2.1: <Name>
|
|
120
|
+
...
|
|
121
|
+
|
|
122
|
+
### Task 2.2: <Name>
|
|
123
|
+
...
|
|
124
|
+
|
|
125
|
+
## Wave 3 — Integration
|
|
126
|
+
Final integration tasks.
|
|
127
|
+
|
|
128
|
+
### Task 3.1: <Name>
|
|
129
|
+
...
|
|
130
|
+
|
|
131
|
+
## Done Criteria
|
|
132
|
+
The feature is DONE when:
|
|
133
|
+
- [ ] All tasks complete
|
|
134
|
+
- [ ] All tests passing (zero skipped, zero pending)
|
|
135
|
+
- [ ] Every scenario in spec.md has a corresponding passing test
|
|
136
|
+
- [ ] Code review passed with no Critical findings
|
|
137
|
+
- [ ] No regressions in unrelated tests
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 5. Context window check
|
|
141
|
+
|
|
142
|
+
Estimate the token count of spec.md + tasks.md combined.
|
|
143
|
+
|
|
144
|
+
- Under 50k tokens: ✅ Excellent
|
|
145
|
+
- 50k–100k tokens: ✅ Fine
|
|
146
|
+
- 100k–150k tokens: ⚠️ Consider trimming
|
|
147
|
+
- Over 150k tokens: ❌ Too large — decompose into sub-specs
|
|
148
|
+
|
|
149
|
+
Report: `Context estimate: ~Xk tokens / 200k window ✅`
|
|
150
|
+
|
|
151
|
+
If over 150k, stop and propose decomposition before proceeding.
|
|
152
|
+
|
|
153
|
+
### 6. Update status.md
|
|
154
|
+
|
|
155
|
+
```markdown
|
|
156
|
+
## Phase
|
|
157
|
+
1.2 — Plan › Spec ✅
|
|
158
|
+
|
|
159
|
+
## Checklist
|
|
160
|
+
- [x] Discussion complete (DISCUSS.md)
|
|
161
|
+
- [x] Spec written
|
|
162
|
+
- [x] Spec fits context window (~Xk / 200k)
|
|
163
|
+
- [ ] Branch created
|
|
164
|
+
...
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 7. Handoff
|
|
168
|
+
|
|
169
|
+
Show spec summary:
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
Spec ready: <slug>
|
|
173
|
+
|
|
174
|
+
Requirements: X
|
|
175
|
+
Scenarios: Y
|
|
176
|
+
Tasks: Z across W waves
|
|
177
|
+
Context estimate: ~Xk / 200k ✅
|
|
178
|
+
|
|
179
|
+
Next: /pick-spec <slug>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Output
|
|
183
|
+
|
|
184
|
+
- `superspec/specs/<slug>/spec.md`
|
|
185
|
+
- `superspec/specs/<slug>/tasks.md`
|
|
186
|
+
- Updated `superspec/specs/<slug>/status.md`
|
|
187
|
+
|
|
188
|
+
## What NOT to do
|
|
189
|
+
|
|
190
|
+
- Do not write implementation details in the spec (no code, no file paths, no library choices)
|
|
191
|
+
- Do not write spec.md without reading DISCUSS.md first
|
|
192
|
+
- Do not proceed if the spec exceeds the context window budget — decompose instead
|
|
193
|
+
- Do not invent requirements not discussed in DISCUSS.md
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ship
|
|
3
|
+
description: Create the PR, write the changelog entry, archive the phase directory, mark the spec complete, and trigger the next cycle. Triggers on /ship, "create PR", "ship it", "merge". Final step in the SuperSpecs lifecycle.
|
|
4
|
+
slash_command: ship
|
|
5
|
+
phase: "4 — Ship"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Skill: ship
|
|
9
|
+
|
|
10
|
+
You are shipping the feature. Final step.
|
|
11
|
+
|
|
12
|
+
**Preconditions — verify before proceeding:**
|
|
13
|
+
- [ ] All tests passing (Phase 3.1 complete)
|
|
14
|
+
- [ ] Wiki imported (Phase 3.2 complete)
|
|
15
|
+
- [ ] No open Critical review findings
|
|
16
|
+
- [ ] Branch is on `superspec/<slug>` with all commits
|
|
17
|
+
|
|
18
|
+
If any precondition fails, stop and name the missing step.
|
|
19
|
+
|
|
20
|
+
## Steps
|
|
21
|
+
|
|
22
|
+
### 1. Final diff review
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
git log main..superspec/<slug> --oneline
|
|
26
|
+
git diff main..superspec/<slug> --stat
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Show a summary: how many files changed, how many commits. No surprises.
|
|
30
|
+
|
|
31
|
+
### 2. Write the PR description
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
## <Feature Name>
|
|
35
|
+
|
|
36
|
+
### What
|
|
37
|
+
<1–2 paragraphs: what was built, from the user/system perspective>
|
|
38
|
+
|
|
39
|
+
### Why
|
|
40
|
+
<The problem this solves, from DISCUSS.md>
|
|
41
|
+
|
|
42
|
+
### How it works
|
|
43
|
+
<Brief technical summary — key decisions, architecture shape>
|
|
44
|
+
|
|
45
|
+
### Tests
|
|
46
|
+
- Suite: X tests, all passing
|
|
47
|
+
- New tests: Y (covering N spec scenarios)
|
|
48
|
+
|
|
49
|
+
### Spec
|
|
50
|
+
`superspec/specs/<slug>/spec.md`
|
|
51
|
+
|
|
52
|
+
### Wiki
|
|
53
|
+
<links to new wiki pages>
|
|
54
|
+
|
|
55
|
+
### Checklist
|
|
56
|
+
- [x] Tests passing
|
|
57
|
+
- [x] Spec scenarios covered
|
|
58
|
+
- [x] Code review passed
|
|
59
|
+
- [x] Wiki updated
|
|
60
|
+
- [x] No regressions
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### 3. Create the PR
|
|
64
|
+
|
|
65
|
+
Instruct the user (or if gh CLI is available):
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
gh pr create \
|
|
69
|
+
--base main \
|
|
70
|
+
--head superspec/<slug> \
|
|
71
|
+
--title "<Feature Name>" \
|
|
72
|
+
--body-file /tmp/pr-body.md
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Or: output the PR body and say *"Create the PR with this description."*
|
|
76
|
+
|
|
77
|
+
### 4. Write changelog entry
|
|
78
|
+
|
|
79
|
+
If the project has a `CHANGELOG.md`:
|
|
80
|
+
|
|
81
|
+
```markdown
|
|
82
|
+
## [Unreleased]
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
- <Feature description> (closes #<issue if applicable>)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 5. Archive the phase directory
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
mkdir -p superspec/archive
|
|
92
|
+
mv superspec/phases/<slug>-execute superspec/archive/<slug>-execute
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### 6. Mark spec complete
|
|
96
|
+
|
|
97
|
+
Update `superspec/specs/<slug>/status.md`:
|
|
98
|
+
|
|
99
|
+
```markdown
|
|
100
|
+
## Phase
|
|
101
|
+
4 — Shipped ✅
|
|
102
|
+
|
|
103
|
+
## Completed
|
|
104
|
+
<date>
|
|
105
|
+
|
|
106
|
+
## PR
|
|
107
|
+
<PR URL or number>
|
|
108
|
+
|
|
109
|
+
## Checklist
|
|
110
|
+
- [x] Discussion complete (DISCUSS.md)
|
|
111
|
+
- [x] Spec written
|
|
112
|
+
- [x] Spec fits context window
|
|
113
|
+
- [x] Branch created
|
|
114
|
+
- [x] Subagent execution complete
|
|
115
|
+
- [x] All tests passing
|
|
116
|
+
- [x] Code review passed (no Critical findings)
|
|
117
|
+
- [x] Wiki imported
|
|
118
|
+
- [x] PR created
|
|
119
|
+
- [x] Archived
|
|
120
|
+
|
|
121
|
+
## Wiki Pages
|
|
122
|
+
- [[superspec/wiki/<domain>/<page>]] — <description>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 7. Trigger next cycle
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Shipped: <slug> ✅
|
|
129
|
+
|
|
130
|
+
PR: <url or "ready to create">
|
|
131
|
+
Tests: X passing
|
|
132
|
+
Wiki: Y pages
|
|
133
|
+
Archive: superspec/archive/<slug>-execute/
|
|
134
|
+
|
|
135
|
+
─────────────────────────────────
|
|
136
|
+
What's next?
|
|
137
|
+
|
|
138
|
+
Available specs ready to execute:
|
|
139
|
+
<list specs in planning or proposed state>
|
|
140
|
+
|
|
141
|
+
Or start a new feature: /discuss
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
## Output
|
|
145
|
+
|
|
146
|
+
- PR created (or PR body ready)
|
|
147
|
+
- `CHANGELOG.md` updated
|
|
148
|
+
- `superspec/phases/<slug>-execute/` → `superspec/archive/<slug>-execute/`
|
|
149
|
+
- `superspec/specs/<slug>/status.md` marked complete
|
|
150
|
+
- Prompt to start next cycle
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-creator
|
|
3
|
+
description: Create a new SuperSpecs skill. Use when the user wants to extend the framework with a new workflow step or tool.
|
|
4
|
+
slash_command: skill-creator
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Skill: skill-creator
|
|
8
|
+
|
|
9
|
+
Create a new SuperSpecs skill.
|
|
10
|
+
|
|
11
|
+
## A skill is
|
|
12
|
+
|
|
13
|
+
A markdown file in `.skills/<skill-name>/SKILL.md` that an AI agent reads when triggered. Skills are instruction sets, not code.
|
|
14
|
+
|
|
15
|
+
## Structure
|
|
16
|
+
|
|
17
|
+
```markdown
|
|
18
|
+
---
|
|
19
|
+
name: <skill-name>
|
|
20
|
+
description: <One sentence: what this skill does and when it triggers. Include trigger phrases.>
|
|
21
|
+
slash_command: <command:name>
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Skill: <skill-name>
|
|
25
|
+
|
|
26
|
+
Brief intro: what you're doing in this phase.
|
|
27
|
+
|
|
28
|
+
## Inputs
|
|
29
|
+
What files or context the agent needs to read first.
|
|
30
|
+
|
|
31
|
+
## Steps
|
|
32
|
+
Numbered, concrete steps. Include:
|
|
33
|
+
- What to read
|
|
34
|
+
- What to write
|
|
35
|
+
- What to verify
|
|
36
|
+
- What to report to the user
|
|
37
|
+
|
|
38
|
+
## Output
|
|
39
|
+
What files are created/updated.
|
|
40
|
+
|
|
41
|
+
## What NOT to do
|
|
42
|
+
Explicit prohibitions.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Good skill design
|
|
46
|
+
|
|
47
|
+
- **Concrete steps, not vague instructions.** "Read `tasks.md` completely" not "understand the plan".
|
|
48
|
+
- **Explicit output.** List every file created or modified.
|
|
49
|
+
- **Stopping conditions.** When should the skill ask for input before proceeding?
|
|
50
|
+
- **Verification steps.** What does "done" look like?
|
|
51
|
+
- **Non-negotiables.** What must never be skipped?
|
|
52
|
+
|
|
53
|
+
## After creating
|
|
54
|
+
|
|
55
|
+
1. Place file in `.skills/<skill-name>/SKILL.md`
|
|
56
|
+
2. Run `setup.sh` to symlink into agent directories
|
|
57
|
+
3. Test: open your agent and say "tell me about <skill-name>"
|
|
58
|
+
|
|
59
|
+
## Integration with SuperSpecs lifecycle
|
|
60
|
+
|
|
61
|
+
If the new skill fits into the lifecycle, add it to:
|
|
62
|
+
- `README.md` skill reference table
|
|
63
|
+
- `CLAUDE.md` skills list
|
|
64
|
+
- `AGENTS.md` lifecycle overview
|