valent-pipeline 0.1.3 → 0.1.4
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/package.json +1 -1
- package/skills/v3-setup-backlog/SKILL.md +159 -0
package/package.json
CHANGED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: v3-setup-backlog
|
|
3
|
+
description: 'Convert epics and stories into pipeline-ready backlog and story input files. Use when the user says "setup backlog", "import stories", "v3 setup", "prepare stories", or provides an epics/stories document to load into the pipeline.'
|
|
4
|
+
argument-hint: '<path-to-epics-file or epic-id>'
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# v3 Backlog Setup
|
|
8
|
+
|
|
9
|
+
Convert an epics and stories document (any format — markdown, YAML, PRD extract, or pasted text) into the two things the pipeline needs:
|
|
10
|
+
|
|
11
|
+
1. **`pipeline-backlog.yaml`** — ordered priority queue of stories with dependencies
|
|
12
|
+
2. **`stories/{story-id}/story.md`** — individual story input files with ACs in Given-When-Then format
|
|
13
|
+
|
|
14
|
+
## Step 1: Find the Source
|
|
15
|
+
|
|
16
|
+
Check what the user provided:
|
|
17
|
+
- If they gave a file path, read it
|
|
18
|
+
- If they pasted text, use it directly
|
|
19
|
+
- If they gave an epic ID, ask where the epics/stories document is
|
|
20
|
+
|
|
21
|
+
The source can be in any format — a PRD, a BMAD epics file, a Jira export, a markdown list, a spreadsheet paste, etc. Your job is to extract stories from whatever they give you.
|
|
22
|
+
|
|
23
|
+
## Step 2: Read Pipeline Config
|
|
24
|
+
|
|
25
|
+
Read `v3/pipeline-config.yaml` to get:
|
|
26
|
+
- `project.story_directory` — where to create story folders (default: `./stories`)
|
|
27
|
+
- `project.backlog_path` — where to write the backlog (default: `./pipeline-backlog.yaml`)
|
|
28
|
+
- `project.type` — affects which testing profiles are relevant
|
|
29
|
+
|
|
30
|
+
## Step 3: Extract Stories
|
|
31
|
+
|
|
32
|
+
From the source document, identify each story and extract:
|
|
33
|
+
|
|
34
|
+
| Field | Required | Source |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| Story ID | Yes | Use existing IDs if present, or generate `{EPIC-PREFIX}-{NNN}` pattern |
|
|
37
|
+
| Epic | Yes | The epic this story belongs to |
|
|
38
|
+
| Title | Yes | One-line summary |
|
|
39
|
+
| User story | Yes | "As a [role] I want [capability] so that [benefit]" |
|
|
40
|
+
| Acceptance criteria | Yes | Testable conditions — convert to Given-When-Then if not already |
|
|
41
|
+
| Priority | Yes | Integer, lower = higher. Derive from epic order + story order within epic |
|
|
42
|
+
| Dependencies | No | Which stories must ship before this one can start (`depends_on`) |
|
|
43
|
+
| Optional inputs | No | UX spec, architecture notes, scenario outlines if mentioned |
|
|
44
|
+
|
|
45
|
+
**Priority assignment:** First story in first epic = 1, second story = 2, etc. Stories within the same epic are ordered by their natural sequence. Cross-epic dependencies use `depends_on`.
|
|
46
|
+
|
|
47
|
+
**Dependency detection:** Look for:
|
|
48
|
+
- Explicit "depends on" or "requires" references
|
|
49
|
+
- Implicit: "API endpoint" stories should ship before "UI that calls the API" stories
|
|
50
|
+
- Schema/migration stories should ship before stories that use those tables
|
|
51
|
+
- Ask the user to confirm any inferred dependencies
|
|
52
|
+
|
|
53
|
+
## Step 4: Present Summary for Approval
|
|
54
|
+
|
|
55
|
+
Before writing any files, show the user:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Epic: {EPIC-NAME}
|
|
59
|
+
{STORY-ID}: {title} [priority: {N}] {depends_on if any}
|
|
60
|
+
{STORY-ID}: {title} [priority: {N}]
|
|
61
|
+
...
|
|
62
|
+
|
|
63
|
+
Epic: {EPIC-NAME}
|
|
64
|
+
...
|
|
65
|
+
|
|
66
|
+
Total: {N} stories across {M} epics
|
|
67
|
+
Dependencies: {list any depends_on relationships}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Ask: "Does this look right? Any stories to add, remove, reorder, or re-prioritize?"
|
|
71
|
+
|
|
72
|
+
## Step 5: Write Backlog
|
|
73
|
+
|
|
74
|
+
Write `{backlog_path}` (default: `pipeline-backlog.yaml`):
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
# Pipeline Backlog
|
|
78
|
+
# Generated by v3-setup-backlog from {source document name}
|
|
79
|
+
# Priority: lower number = higher priority
|
|
80
|
+
|
|
81
|
+
items:
|
|
82
|
+
- id: "KANBAN-001"
|
|
83
|
+
type: story
|
|
84
|
+
status: pending
|
|
85
|
+
priority: 1
|
|
86
|
+
epic: "KANBAN-MVP"
|
|
87
|
+
title: "Create a new card via the API"
|
|
88
|
+
depends_on: []
|
|
89
|
+
|
|
90
|
+
- id: "KANBAN-002"
|
|
91
|
+
type: story
|
|
92
|
+
status: pending
|
|
93
|
+
priority: 2
|
|
94
|
+
epic: "KANBAN-MVP"
|
|
95
|
+
title: "Fetch all cards grouped by status"
|
|
96
|
+
depends_on: ["KANBAN-001"]
|
|
97
|
+
|
|
98
|
+
# ... more stories
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Step 6: Write Story Input Files
|
|
102
|
+
|
|
103
|
+
For each story, create `{story_directory}/{story-id}/story.md`:
|
|
104
|
+
|
|
105
|
+
```markdown
|
|
106
|
+
# {Story Title}
|
|
107
|
+
|
|
108
|
+
## User Story
|
|
109
|
+
|
|
110
|
+
As a {role} I want {capability} so that {benefit}.
|
|
111
|
+
|
|
112
|
+
## Acceptance Criteria
|
|
113
|
+
|
|
114
|
+
### AC-1: {short name}
|
|
115
|
+
**Given** {precondition}
|
|
116
|
+
**When** {action}
|
|
117
|
+
**Then** {expected outcome}
|
|
118
|
+
|
|
119
|
+
### AC-2: {short name}
|
|
120
|
+
**Given** {precondition}
|
|
121
|
+
**When** {action}
|
|
122
|
+
**Then** {expected outcome}
|
|
123
|
+
|
|
124
|
+
{additional ACs...}
|
|
125
|
+
|
|
126
|
+
## Notes
|
|
127
|
+
|
|
128
|
+
{Any architecture notes, UX references, or constraints from the source document}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**AC formatting rules:**
|
|
132
|
+
- Each AC gets an ID (`AC-1`, `AC-2`, ...) — the pipeline references these throughout
|
|
133
|
+
- Convert bullet-point ACs to Given-When-Then format
|
|
134
|
+
- Keep them testable — every AC must be verifiable by automated tests
|
|
135
|
+
- If an AC is vague ("the UI should look good"), flag it and ask the user to clarify or remove it
|
|
136
|
+
- Include error/edge cases as separate ACs, not just happy paths
|
|
137
|
+
|
|
138
|
+
## Step 7: Report
|
|
139
|
+
|
|
140
|
+
After writing all files, summarize:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Created:
|
|
144
|
+
- {backlog_path} ({N} stories)
|
|
145
|
+
- {N} story input files in {story_directory}/
|
|
146
|
+
|
|
147
|
+
Next steps:
|
|
148
|
+
- Review story files and refine ACs if needed
|
|
149
|
+
- Run /v3-run-story {first-story-id} to start
|
|
150
|
+
- Or run /v3-run-epic {epic-id} to run the whole epic
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
## Rules
|
|
154
|
+
|
|
155
|
+
- **Always ask for confirmation** before writing files (Step 4)
|
|
156
|
+
- **Preserve the user's story IDs** if they exist — don't rename them
|
|
157
|
+
- **Flag ambiguous ACs** — better to ask than to generate untestable criteria
|
|
158
|
+
- **Don't invent stories** — only create what's in the source document
|
|
159
|
+
- **Don't modify existing backlog entries** — if `pipeline-backlog.yaml` already has items, append new ones after the existing highest priority number
|