@houseofwolvesllc/claude-scrum-skill 1.5.0 → 1.6.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/README.md +277 -236
- package/bin/install.js +31 -0
- package/package.json +1 -1
- package/skills/project-cleanup/SKILL.md +32 -59
- package/skills/project-emulate/SKILL.md +1 -1
- package/skills/project-orchestrate/SKILL.md +257 -58
- package/skills/project-scaffold/SKILL.md +364 -4
- package/skills/project-spec/SKILL.md +60 -0
- package/skills/project-spec/templates/spec-template.md +63 -0
- package/skills/shared/config.json +14 -0
- package/skills/{project-scaffold → shared}/references/CONVENTIONS.md +16 -0
- package/skills/shared/references/PERSONAS.md +270 -0
- package/skills/shared/references/PROVIDERS.md +471 -0
- package/skills/sprint-plan/SKILL.md +124 -6
- package/skills/sprint-release/SKILL.md +118 -6
- package/skills/sprint-status/SKILL.md +60 -6
|
@@ -9,10 +9,14 @@ Scaffold a complete GitHub Project from one or more PRD or spec documents, or ad
|
|
|
9
9
|
|
|
10
10
|
## Before You Start
|
|
11
11
|
|
|
12
|
-
1. Read
|
|
13
|
-
2.
|
|
14
|
-
3.
|
|
15
|
-
4.
|
|
12
|
+
1. Read `../shared/references/CONVENTIONS.md` for all project management standards including label taxonomy, branch strategy, issue templates, custom fields, and executor assignment guidelines. Follow these conventions exactly.
|
|
13
|
+
2. Read `../shared/config.json` to determine the scaffolding mode (`scaffolding` key: `"local"`, `"github"`, `"jira"`, or `"trello"`, default: `"local"`). If `"local"`, also read the `paths.backlog` value (default: `.claude-scrum-skill/backlog`).
|
|
14
|
+
3. Read `../shared/references/PROVIDERS.md` for provider-specific API commands when operating in remote mode (GitHub, Jira, or Trello).
|
|
15
|
+
4. **Terminology:** Always refer to milestones as **"epics"** in all user-facing text, summaries, and conversational output. The word "milestone" should only appear in API commands and code — never in communication with the user.
|
|
16
|
+
5. **If `scaffolding: "github"`:** Confirm the `gh` CLI is authenticated by running `gh auth status`. Identify the target repository. If the user doesn't specify, ask which repo to use.
|
|
17
|
+
6. **If `scaffolding: "jira"`:** Verify `JIRA_SITE`, `JIRA_EMAIL`, and `JIRA_API_TOKEN` environment variables are set. Read `jira.project_key` from config.json. Verify auth per PROVIDERS.md.
|
|
18
|
+
7. **If `scaffolding: "trello"`:** Verify `TRELLO_API_KEY` and `TRELLO_TOKEN` environment variables are set. Read `trello.board_id` from config.json. Verify auth per PROVIDERS.md.
|
|
19
|
+
8. **If `scaffolding: "local"`:** Skip authentication. No external service required — the backlog is file-based.
|
|
16
20
|
|
|
17
21
|
## Input
|
|
18
22
|
|
|
@@ -22,6 +26,357 @@ Read all provided documents thoroughly before proceeding.
|
|
|
22
26
|
|
|
23
27
|
## Scaffold Procedure
|
|
24
28
|
|
|
29
|
+
Read `../shared/config.json` to determine mode. If `scaffolding` is `"local"`,
|
|
30
|
+
follow the **Local Scaffold Procedure** below. Otherwise follow the
|
|
31
|
+
**GitHub Scaffold Procedure**.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Local Scaffold Procedure
|
|
36
|
+
|
|
37
|
+
When `scaffolding: "local"`, create the entire backlog as local markdown files
|
|
38
|
+
instead of GitHub issues, milestones, and project boards.
|
|
39
|
+
|
|
40
|
+
### Local Step 1: Parse the PRD
|
|
41
|
+
|
|
42
|
+
Same as GitHub Step 1 — extract project name, epics, stories, dependencies,
|
|
43
|
+
and technical context. Present the summary and ask the user to confirm.
|
|
44
|
+
|
|
45
|
+
### Local Step 2: Detect Existing Backlog
|
|
46
|
+
|
|
47
|
+
Check if the configured backlog directory already exists:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
ls <backlog-path>/PROJECT.md 2>/dev/null
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**If found**, read `PROJECT.md` and list existing epic directories. Present
|
|
54
|
+
options (same as GitHub mode):
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
Existing local backlog detected:
|
|
58
|
+
Project: <name>
|
|
59
|
+
Epics:
|
|
60
|
+
- <epic-slug>/ (N stories)
|
|
61
|
+
...
|
|
62
|
+
|
|
63
|
+
How should the PRD stories be added?
|
|
64
|
+
1. Create new epic(s) from this PRD
|
|
65
|
+
2. Add stories to an existing epic
|
|
66
|
+
3. Mix — map each PRD section to a new or existing epic
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**If not found**, proceed with full scaffold.
|
|
70
|
+
|
|
71
|
+
### Local Step 3: Create Project File
|
|
72
|
+
|
|
73
|
+
Create `<backlog-path>/PROJECT.md`:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
---
|
|
77
|
+
name: <Project Name>
|
|
78
|
+
created: <ISO timestamp>
|
|
79
|
+
sprints: []
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
# <Project Name>
|
|
83
|
+
|
|
84
|
+
<Project description from PRD>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Local Step 4: Create Epic Directories
|
|
88
|
+
|
|
89
|
+
For each epic, create `<backlog-path>/<epic-slug>/`:
|
|
90
|
+
|
|
91
|
+
```markdown
|
|
92
|
+
<!-- <backlog-path>/<epic-slug>/_epic.md -->
|
|
93
|
+
---
|
|
94
|
+
title: <Epic Name>
|
|
95
|
+
slug: <epic-slug>
|
|
96
|
+
status: open
|
|
97
|
+
created: <ISO timestamp>
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
# <Epic Name>
|
|
101
|
+
|
|
102
|
+
<Epic description from PRD>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Local Step 5: Create Story Files
|
|
106
|
+
|
|
107
|
+
For each story, create a numbered file in the epic directory. Use sequential
|
|
108
|
+
numbering within each epic: `001-<story-slug>.md`, `002-<story-slug>.md`, etc.
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
<!-- <backlog-path>/<epic-slug>/001-<story-slug>.md -->
|
|
112
|
+
---
|
|
113
|
+
title: <Story title>
|
|
114
|
+
epic: <epic-slug>
|
|
115
|
+
status: backlog
|
|
116
|
+
executor: claude | human | cowork
|
|
117
|
+
priority: P0-critical | P1-high | P2-medium | P3-low
|
|
118
|
+
points: <fibonacci estimate>
|
|
119
|
+
labels:
|
|
120
|
+
- type:story
|
|
121
|
+
- executor:<type>
|
|
122
|
+
- <priority>
|
|
123
|
+
- epic:<epic-slug>
|
|
124
|
+
- ready-for-work
|
|
125
|
+
persona: impl | ops | research
|
|
126
|
+
blocked_by: []
|
|
127
|
+
blocks: []
|
|
128
|
+
sprint: null
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## Objective
|
|
132
|
+
|
|
133
|
+
<What this accomplishes — one clear sentence>
|
|
134
|
+
|
|
135
|
+
## Acceptance Criteria
|
|
136
|
+
|
|
137
|
+
- [ ] <Specific, testable criterion>
|
|
138
|
+
- [ ] <Specific, testable criterion>
|
|
139
|
+
|
|
140
|
+
## Technical Context
|
|
141
|
+
|
|
142
|
+
<Architecture notes, relevant files, approach guidance>
|
|
143
|
+
|
|
144
|
+
## Dependencies
|
|
145
|
+
|
|
146
|
+
- **Blocked by:** <epic-slug>/NNN-slug or "none">
|
|
147
|
+
- **Blocks:** <epic-slug>/NNN-slug or "none">
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Use the same executor assignment and story point guidelines from
|
|
151
|
+
CONVENTIONS.md as in GitHub mode.
|
|
152
|
+
|
|
153
|
+
### Local Step 6: Generate Summary
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
## Project Scaffold Complete (Local Mode)
|
|
157
|
+
|
|
158
|
+
**Project:** <name>
|
|
159
|
+
**Backlog path:** <backlog-path>/
|
|
160
|
+
**Mode:** Local file-based backlog
|
|
161
|
+
|
|
162
|
+
### Epics
|
|
163
|
+
- <epic-slug>/ — <N> stories, <total points> points
|
|
164
|
+
...
|
|
165
|
+
|
|
166
|
+
### Story Breakdown by Executor
|
|
167
|
+
- executor:claude — <N> stories (<points> points)
|
|
168
|
+
- executor:human — <N> stories (<points> points)
|
|
169
|
+
- executor:cowork — <N> stories (<points> points)
|
|
170
|
+
|
|
171
|
+
### Next Steps
|
|
172
|
+
1. Review stories in <backlog-path>/
|
|
173
|
+
2. Adjust priorities, executors, or points by editing frontmatter
|
|
174
|
+
3. Note: Sprint planning, status tracking, and orchestration currently
|
|
175
|
+
require `scaffolding: "github"`. Set that in config.json and run
|
|
176
|
+
`/project-scaffold` again to push the backlog to GitHub when ready.
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**No branches, labels, or GitHub Project are created in local mode.**
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Jira Scaffold Procedure
|
|
184
|
+
|
|
185
|
+
When `scaffolding: "jira"`, use the Jira REST API to create epics, stories,
|
|
186
|
+
and sprints. Refer to `../shared/references/PROVIDERS.md` for all API calls.
|
|
187
|
+
|
|
188
|
+
### Jira Step 1: Parse the PRD
|
|
189
|
+
|
|
190
|
+
Same as Local Step 1 / GitHub Step 1.
|
|
191
|
+
|
|
192
|
+
### Jira Step 2: Ensure Project Exists
|
|
193
|
+
|
|
194
|
+
Read `jira.project_key` from `../shared/config.json`.
|
|
195
|
+
|
|
196
|
+
**If the key is empty or not set**, create the project:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
# Get the current user's account ID for project lead
|
|
200
|
+
ACCOUNT_ID=$(curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
|
|
201
|
+
"$JIRA_SITE/rest/api/3/myself" | jq -r '.accountId')
|
|
202
|
+
|
|
203
|
+
# Derive a project key from the PRD project name (uppercase, max 10 chars)
|
|
204
|
+
PROJECT_KEY=$(echo "<Project Name>" | tr '[:lower:]' '[:upper:]' | tr -cd 'A-Z' | head -c 10)
|
|
205
|
+
|
|
206
|
+
# Create a Scrum software project
|
|
207
|
+
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
|
|
208
|
+
-H "Content-Type: application/json" \
|
|
209
|
+
-X POST "$JIRA_SITE/rest/api/3/project" \
|
|
210
|
+
-d '{
|
|
211
|
+
"key": "'$PROJECT_KEY'",
|
|
212
|
+
"name": "<Project Name>",
|
|
213
|
+
"projectTypeKey": "software",
|
|
214
|
+
"projectTemplateKey": "com.pyxis.greenhopper.jira:gh-scrum-template",
|
|
215
|
+
"leadAccountId": "'$ACCOUNT_ID'"
|
|
216
|
+
}'
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
After creation, save the key back to `../shared/config.json` under
|
|
220
|
+
`jira.project_key` so subsequent skills don't need to create it again.
|
|
221
|
+
|
|
222
|
+
**If the key is set**, verify the project exists and check for existing epics:
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
|
|
226
|
+
"$JIRA_SITE/rest/api/3/search?jql=project=<PROJECT_KEY>+AND+issuetype=Epic+AND+status!=Done&fields=summary,status"
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
If epics exist, present options to add to existing or create new (same UX as
|
|
230
|
+
GitHub mode).
|
|
231
|
+
|
|
232
|
+
### Jira Step 3: Create Epics
|
|
233
|
+
|
|
234
|
+
Create an Epic issue for each epic in the PRD. Capture the epic key returned.
|
|
235
|
+
|
|
236
|
+
### Jira Step 4: Create Stories
|
|
237
|
+
|
|
238
|
+
Create Story issues linked to their parent epic. Apply labels for executor,
|
|
239
|
+
priority, and persona. Set story points via the appropriate custom field.
|
|
240
|
+
|
|
241
|
+
Note: Discover the epic link field ID and story points field ID at runtime:
|
|
242
|
+
```bash
|
|
243
|
+
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" "$JIRA_SITE/rest/api/3/field" \
|
|
244
|
+
| jq '.[] | select(.name=="Epic Link" or .name=="Story Points")'
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### Jira Step 5: Create Sprint
|
|
248
|
+
|
|
249
|
+
```bash
|
|
250
|
+
# Find the Scrum board for this project
|
|
251
|
+
BOARD_ID=$(curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
|
|
252
|
+
"$JIRA_SITE/rest/agile/1.0/board?projectKeyOrId=<PROJECT_KEY>" \
|
|
253
|
+
| jq '.values[] | select(.type=="scrum") | .id')
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
If a Scrum board exists, use it. If the project was just created with the
|
|
257
|
+
Scrum template, the board is created automatically.
|
|
258
|
+
|
|
259
|
+
Create the first sprint on the board:
|
|
260
|
+
|
|
261
|
+
```bash
|
|
262
|
+
curl -s -u "$JIRA_EMAIL:$JIRA_API_TOKEN" \
|
|
263
|
+
-H "Content-Type: application/json" \
|
|
264
|
+
-X POST "$JIRA_SITE/rest/agile/1.0/sprint" \
|
|
265
|
+
-d '{
|
|
266
|
+
"name": "Sprint 1",
|
|
267
|
+
"originBoardId": '$BOARD_ID',
|
|
268
|
+
"goal": "<sprint goal from PRD>"
|
|
269
|
+
}'
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### Jira Step 6: Create Branch Structure
|
|
273
|
+
|
|
274
|
+
Same as GitHub mode — git operations are independent of the issue tracker.
|
|
275
|
+
Create `development` and `release/<epic-slug>` branches.
|
|
276
|
+
|
|
277
|
+
### Jira Step 7: Generate Summary
|
|
278
|
+
|
|
279
|
+
Same format as GitHub mode, replacing GitHub-specific links with Jira URLs:
|
|
280
|
+
- Project board: `$JIRA_SITE/jira/software/projects/<KEY>/boards/<id>`
|
|
281
|
+
- Epics: `$JIRA_SITE/browse/<EPIC-KEY>`
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Trello Scaffold Procedure
|
|
286
|
+
|
|
287
|
+
When `scaffolding: "trello"`, use the Trello REST API to create lists (epics),
|
|
288
|
+
cards (stories), and labels. Refer to `../shared/references/PROVIDERS.md` for
|
|
289
|
+
all API calls.
|
|
290
|
+
|
|
291
|
+
### Trello Step 1: Parse the PRD
|
|
292
|
+
|
|
293
|
+
Same as Local Step 1 / GitHub Step 1.
|
|
294
|
+
|
|
295
|
+
### Trello Step 2: Ensure Board Exists
|
|
296
|
+
|
|
297
|
+
Read `trello.board_id` from `../shared/config.json`.
|
|
298
|
+
|
|
299
|
+
**If the ID is empty or not set**, create the board:
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# Create a new board with no default lists (we'll create our own)
|
|
303
|
+
BOARD_ID=$(curl -s -X POST "https://api.trello.com/1/boards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
304
|
+
-d "name=<Project Name>&defaultLists=false" | jq -r '.id')
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
After creation, save the board ID back to `../shared/config.json` under
|
|
308
|
+
`trello.board_id` so subsequent skills don't need to create it again.
|
|
309
|
+
|
|
310
|
+
**If the ID is set**, check for existing lists:
|
|
311
|
+
|
|
312
|
+
```bash
|
|
313
|
+
curl -s "https://api.trello.com/1/boards/<board-id>/lists?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN&filter=open"
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
If lists exist, present options to add to existing or create new (same UX as
|
|
317
|
+
GitHub mode).
|
|
318
|
+
|
|
319
|
+
### Trello Step 3: Create Labels
|
|
320
|
+
|
|
321
|
+
Trello has a fixed color palette. Map priority and executor labels:
|
|
322
|
+
|
|
323
|
+
```bash
|
|
324
|
+
# Create labels on the board
|
|
325
|
+
curl -s -X POST "https://api.trello.com/1/boards/<board-id>/labels?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
326
|
+
-d "name=executor:claude&color=blue"
|
|
327
|
+
curl -s -X POST "https://api.trello.com/1/boards/<board-id>/labels?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
328
|
+
-d "name=executor:human&color=yellow"
|
|
329
|
+
curl -s -X POST "https://api.trello.com/1/boards/<board-id>/labels?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
330
|
+
-d "name=P0-critical&color=red"
|
|
331
|
+
curl -s -X POST "https://api.trello.com/1/boards/<board-id>/labels?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
332
|
+
-d "name=P1-high&color=orange"
|
|
333
|
+
# ... etc
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
### Trello Step 4: Create Epic Lists
|
|
337
|
+
|
|
338
|
+
Create one list per epic. Position Backlog and Done lists at the edges:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
curl -s -X POST "https://api.trello.com/1/lists?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
342
|
+
-d "name=<Epic Name>&idBoard=<board-id>&pos=bottom"
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Trello Step 5: Create Story Cards
|
|
346
|
+
|
|
347
|
+
Create a card per story in the appropriate epic list:
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
curl -s -X POST "https://api.trello.com/1/cards?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
351
|
+
-d "name=<title>&desc=<body with acceptance criteria>&idList=<epic-list-id>&idLabels=<label-ids>"
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
Story points: If custom fields power-up is enabled, set via:
|
|
355
|
+
```bash
|
|
356
|
+
curl -s -X PUT "https://api.trello.com/1/cards/<card-id>/customField/<field-id>/item?key=$TRELLO_API_KEY&token=$TRELLO_TOKEN" \
|
|
357
|
+
-H "Content-Type: application/json" \
|
|
358
|
+
-d '{"value":{"number":"<points>"}}'
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
Otherwise, prefix the card title: `[5] <Story title>`.
|
|
362
|
+
|
|
363
|
+
### Trello Step 6: Create Branch Structure
|
|
364
|
+
|
|
365
|
+
Same as GitHub mode — git operations are independent of the issue tracker.
|
|
366
|
+
|
|
367
|
+
### Trello Step 7: Generate Summary
|
|
368
|
+
|
|
369
|
+
Same format as GitHub mode, replacing links with Trello URLs.
|
|
370
|
+
|
|
371
|
+
**Trello limitations note:** Trello has no native sprints, dependencies, or
|
|
372
|
+
milestone progress tracking. These are managed via list naming conventions
|
|
373
|
+
and card descriptions. For full sprint lifecycle support, consider GitHub or
|
|
374
|
+
Jira mode.
|
|
375
|
+
|
|
376
|
+
---
|
|
377
|
+
|
|
378
|
+
## GitHub Scaffold Procedure
|
|
379
|
+
|
|
25
380
|
Execute these steps in order:
|
|
26
381
|
|
|
27
382
|
### Step 0: Detect Existing Project Context
|
|
@@ -109,6 +464,11 @@ gh label create "P0-critical" --color "b60205" --repo <owner/repo>
|
|
|
109
464
|
gh label create "P1-high" --color "d93f0b" --repo <owner/repo>
|
|
110
465
|
gh label create "P2-medium" --color "fbca04" --repo <owner/repo>
|
|
111
466
|
gh label create "P3-low" --color "0e8a16" --repo <owner/repo>
|
|
467
|
+
|
|
468
|
+
# Persona labels
|
|
469
|
+
gh label create "persona:ops" --color "1D76DB" --description "Ops/infra posture — idempotency, rollback, least privilege" --repo <owner/repo> 2>/dev/null
|
|
470
|
+
gh label create "persona:research" --color "D4C5F9" --description "Research posture — produce a document, not code" --repo <owner/repo> 2>/dev/null
|
|
471
|
+
gh label create "source:review" --color "BFDADC" --description "Issue created from automated review findings" --repo <owner/repo> 2>/dev/null
|
|
112
472
|
```
|
|
113
473
|
|
|
114
474
|
### Step 3: Create Epics (Milestones + Labels)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec
|
|
3
|
+
description: Transform a rough prompt into a comprehensive specification document. Analyzes requirements, extracts key information, and produces a structured spec saved to .claude-scrum-skill/specs/. Use when planning a new feature or task before implementation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec Sheet Creator
|
|
7
|
+
|
|
8
|
+
This skill takes a user's rough prompt and transforms it into a comprehensive specification document following best practices for Claude Code development. ultrathink
|
|
9
|
+
|
|
10
|
+
## Input
|
|
11
|
+
|
|
12
|
+
The following user input will be processed:
|
|
13
|
+
|
|
14
|
+
$ARGUMENTS
|
|
15
|
+
|
|
16
|
+
## Instructions
|
|
17
|
+
|
|
18
|
+
As Claude Code, your task is to transform the user's rough prompt into a comprehensive and well-structured specification document. Follow these steps:
|
|
19
|
+
|
|
20
|
+
1. **Analyze the Prompt**: Carefully examine the user's input to understand the core requirements, constraints, and goals.
|
|
21
|
+
|
|
22
|
+
2. **Extract Key Information**:
|
|
23
|
+
- Core functionality/features
|
|
24
|
+
- User requirements and expectations
|
|
25
|
+
- Technical constraints or requirements
|
|
26
|
+
- Success criteria or acceptance criteria
|
|
27
|
+
- Potential edge cases or challenges
|
|
28
|
+
|
|
29
|
+
3. **Structure the Specification**: Create a comprehensive spec sheet using the template in `templates/spec-template.md` in this skill's directory.
|
|
30
|
+
|
|
31
|
+
4. **Enhance Clarity**: For each section:
|
|
32
|
+
- Use clear, specific language
|
|
33
|
+
- Prioritize requirements when possible
|
|
34
|
+
- Provide examples to illustrate complex points
|
|
35
|
+
- Highlight potential challenges or decisions needing attention
|
|
36
|
+
|
|
37
|
+
5. **Format for Comprehension**:
|
|
38
|
+
- Use markdown formatting for readability
|
|
39
|
+
- Include tables and lists where appropriate
|
|
40
|
+
- Add code examples if they help illustrate requirements
|
|
41
|
+
- Structure the document with clear headings and subheadings
|
|
42
|
+
|
|
43
|
+
## Filename Convention
|
|
44
|
+
|
|
45
|
+
Read the specs output path from `../shared/config.json` (key: `paths.specs`,
|
|
46
|
+
default: `.claude-scrum-skill/specs`).
|
|
47
|
+
|
|
48
|
+
Save the output spec to `<specs-path>/YYYYMMDD_hhmmss_{name}.md` where the timestamp is in YYYYMMDD*hhmmss format in **US Pacific Time (PST/PDT)** and `{name}` is a snake_case name that succinctly describes the feature or project. To get the current Pacific time, run `TZ='America/Los_Angeles' date '+%Y%m%d*%H%M%S'` via the Bash tool.
|
|
49
|
+
|
|
50
|
+
## Guidelines for Success
|
|
51
|
+
|
|
52
|
+
1. **Be Specific**: Avoid vague requirements; provide concrete details.
|
|
53
|
+
2. **Be Comprehensive**: Cover all aspects of the feature without assuming implicit knowledge.
|
|
54
|
+
3. **Be Practical**: Ensure the spec is implementable with the existing codebase.
|
|
55
|
+
4. **Be Forward-Thinking**: Consider future extensions and maintenance.
|
|
56
|
+
5. **Be Clear**: Use unambiguous language that prevents misinterpretation.
|
|
57
|
+
|
|
58
|
+
The goal is to produce a specification document that serves as a complete blueprint for implementing the requested feature with minimal ambiguity or need for clarification.
|
|
59
|
+
|
|
60
|
+
Do not modify any files in the codebase other than creating the specification document.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# [Feature/Project Name] Specification
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
[Brief summary of what we're building]
|
|
6
|
+
|
|
7
|
+
## Objectives
|
|
8
|
+
|
|
9
|
+
- [Primary objective]
|
|
10
|
+
- [Secondary objectives]
|
|
11
|
+
|
|
12
|
+
## Requirements
|
|
13
|
+
|
|
14
|
+
### Functional Requirements
|
|
15
|
+
|
|
16
|
+
- [Requirement 1]
|
|
17
|
+
- [Requirement 2]
|
|
18
|
+
...
|
|
19
|
+
|
|
20
|
+
### Non-Functional Requirements
|
|
21
|
+
|
|
22
|
+
- [Performance requirement]
|
|
23
|
+
- [Security requirement]
|
|
24
|
+
...
|
|
25
|
+
|
|
26
|
+
## Technical Specifications
|
|
27
|
+
|
|
28
|
+
- **Language/Framework**: [Specified technology]
|
|
29
|
+
- **Dependencies**: [Required libraries/tools]
|
|
30
|
+
- **Key Components**: [Major code components]
|
|
31
|
+
- **Data Structures**: [Important data structures]
|
|
32
|
+
- **APIs/Interfaces**: [External or internal APIs]
|
|
33
|
+
|
|
34
|
+
## User Experience
|
|
35
|
+
|
|
36
|
+
- [Description of user interactions]
|
|
37
|
+
- [Behavior specifications]
|
|
38
|
+
- [UI/UX guidelines if applicable]
|
|
39
|
+
|
|
40
|
+
## Architecture
|
|
41
|
+
|
|
42
|
+
- [Component diagram or description]
|
|
43
|
+
- [Data flow]
|
|
44
|
+
- [System boundaries]
|
|
45
|
+
- [Integration points]
|
|
46
|
+
|
|
47
|
+
## Implementation Plan
|
|
48
|
+
|
|
49
|
+
1. [Step 1]
|
|
50
|
+
2. [Step 2]
|
|
51
|
+
...
|
|
52
|
+
|
|
53
|
+
## Testing Strategy
|
|
54
|
+
|
|
55
|
+
- [Unit test approach]
|
|
56
|
+
- [Integration test approach]
|
|
57
|
+
- [Test cases for key functionality]
|
|
58
|
+
|
|
59
|
+
## Future Considerations
|
|
60
|
+
|
|
61
|
+
- [Potential extensions]
|
|
62
|
+
- [Scalability considerations]
|
|
63
|
+
- [Long-term maintenance notes]
|
|
@@ -66,6 +66,22 @@ Create these views on every project board:
|
|
|
66
66
|
- `P2-medium` — Important but not blocking
|
|
67
67
|
- `P3-low` — Nice-to-have, polish, optimization
|
|
68
68
|
|
|
69
|
+
### Persona Labels
|
|
70
|
+
|
|
71
|
+
Persona labels control the posture of the subagent that executes the story
|
|
72
|
+
during orchestration. See `PERSONAS.md` for full preamble definitions.
|
|
73
|
+
|
|
74
|
+
| Label | Color | Meaning |
|
|
75
|
+
|---|---|---|
|
|
76
|
+
| *(no persona label)* | — | Default `impl` — standard implementation posture |
|
|
77
|
+
| `persona:ops` | `#1D76DB` | Ops/infra — emphasizes idempotency, rollback, blast radius |
|
|
78
|
+
| `persona:research` | `#D4C5F9` | Research — output is a document (ADR/RFC), not code |
|
|
79
|
+
| `source:review` | `#BFDADC` | Issue was created from automated review findings |
|
|
80
|
+
|
|
81
|
+
Persona labels are optional. Stories without a persona label use the `impl`
|
|
82
|
+
posture. The `review` persona is not assigned to stories — it runs
|
|
83
|
+
automatically as a release gate.
|
|
84
|
+
|
|
69
85
|
## Branch Strategy
|
|
70
86
|
|
|
71
87
|
### Branch Naming
|