@houseofwolvesllc/claude-scrum-skill 1.5.1 → 1.7.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.
@@ -9,16 +9,112 @@ Plan and populate the next sprint iteration for an existing GitHub Project.
9
9
 
10
10
  ## Before You Start
11
11
 
12
- 1. Read `../project-scaffold/references/CONVENTIONS.md` for all project management standards. Follow these conventions exactly.
13
- 2. **Terminology:** Always refer to milestones as **"epics"** in all user-facing text, summaries, and conversational output. The word "milestone" should only appear in GitHub API commands and code — never in communication with the user.
14
- 3. Confirm the `gh` CLI is authenticated by running `gh auth status`.
12
+ 1. Read `../shared/references/CONVENTIONS.md` for all project management standards. 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.
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`.
17
+ 6. **If `scaffolding: "jira"`:** Verify `JIRA_SITE`, `JIRA_EMAIL`, and `JIRA_API_TOKEN` env vars are set.
18
+ 7. **If `scaffolding: "trello"`:** Verify `TRELLO_API_KEY` and `TRELLO_TOKEN` env vars are set.
19
+ 8. **If `scaffolding: "local"`:** Skip authentication. The backlog is file-based.
15
20
 
16
21
  ## Input
17
22
 
18
- `$ARGUMENTS` should be the repo identifier and optionally the project number.
19
- If not provided, detect from the current git remote or ask the user.
23
+ **GitHub mode:** `$ARGUMENTS` should be the repo identifier and optionally the project number. If not provided, detect from the current git remote or ask the user.
20
24
 
21
- ## Planning Procedure
25
+ **Jira/Trello mode:** `$ARGUMENTS` is ignored. Project key or board ID is read from config.json. Use the provider-specific API commands from PROVIDERS.md to list stories, create sprints, and assign stories — following the same planning logic as GitHub mode.
26
+
27
+ **Local mode:** `$ARGUMENTS` is ignored. Stories are read from the configured backlog path.
28
+
29
+ ---
30
+
31
+ ## Local Planning Procedure
32
+
33
+ When `scaffolding: "local"`, plan sprints by reading and updating local
34
+ backlog files.
35
+
36
+ ### Local Step 1: Assess Current State
37
+
38
+ Read the backlog directory structure:
39
+
40
+ ```bash
41
+ # List all epics
42
+ ls <backlog-path>/*/_ epic.md
43
+
44
+ # Read PROJECT.md for sprint history
45
+ cat <backlog-path>/PROJECT.md
46
+ ```
47
+
48
+ For each epic directory, read `_epic.md` (status) and all story files
49
+ (frontmatter). Gather:
50
+ - Stories by status (`backlog`, `ready`, `in-progress`, `done`)
51
+ - Any stories with `rolled-over` in their labels
52
+ - Dependency chains from `blocked_by` fields
53
+
54
+ ### Local Step 2: Calculate Capacity
55
+
56
+ Same as GitHub mode — ask the user or use defaults (20 points/sprint).
57
+
58
+ ### Local Step 3: Select Stories for Sprint
59
+
60
+ Same priority order as GitHub mode (rolled-over → unblocked → P0 → P1 → P2 →
61
+ dependencies-first). Read story points and priorities from frontmatter.
62
+
63
+ Present the proposed sprint to the user for confirmation.
64
+
65
+ ### Persona Assignment
66
+
67
+ Same as GitHub mode — check for `persona` field in story frontmatter. If
68
+ missing, apply defaults based on labels:
69
+
70
+ | Story labels | Default persona |
71
+ |---|---|
72
+ | `scope:infra`, `scope:ci`, `scope:deploy`, `scope:migration` | `ops` |
73
+ | `needs:design`, `needs:spike` | `research` |
74
+ | All other stories | `impl` (no change needed) |
75
+
76
+ Update the story file's frontmatter `persona` field.
77
+
78
+ ### Local Step 4: Assign Sprint
79
+
80
+ Create a sprint file at `<backlog-path>/sprints/sprint-<N>.md`:
81
+
82
+ ```markdown
83
+ ---
84
+ number: <N>
85
+ status: active
86
+ start: <ISO date>
87
+ end: <ISO date>
88
+ velocity_target: <points>
89
+ velocity_actual: null
90
+ ---
91
+
92
+ # Sprint <N>
93
+
94
+ ## Stories
95
+ | File | Title | Executor | Persona | Points | Priority | Status |
96
+ |------|-------|----------|---------|--------|----------|--------|
97
+ | core-api/001-user-auth.md | User auth endpoint | claude | impl | 5 | P1-high | ready |
98
+ ...
99
+ ```
100
+
101
+ Update each selected story's frontmatter:
102
+ - Set `sprint: <N>`
103
+ - Set `status: ready` (or `backlog` if dependencies aren't met)
104
+
105
+ ### Local Step 5: Ensure Branch Exists
106
+
107
+ Same as GitHub mode — create release branches from `development` for each
108
+ active epic. Git operations work identically in local mode.
109
+
110
+ ### Local Step 6: Generate Sprint Kickoff Summary
111
+
112
+ Same format as GitHub mode, but reference story file paths instead of issue
113
+ numbers.
114
+
115
+ ---
116
+
117
+ ## GitHub Planning Procedure
22
118
 
23
119
  ### Step 1: Assess Current State
24
120
 
@@ -97,6 +193,28 @@ For each story in the sprint:
97
193
  - Set Status to "Ready" (or "Backlog" if dependencies aren't met yet)
98
194
  - Verify labels are correct
99
195
 
196
+ ### Persona Assignment
197
+
198
+ For each story assigned to the sprint, check for an existing `persona:*`
199
+ label. If none exists, apply a default based on the story's other labels:
200
+
201
+ | Story labels | Default persona |
202
+ |---|---|
203
+ | `scope:infra`, `scope:ci`, `scope:deploy`, `scope:migration` | `persona:ops` |
204
+ | `needs:design`, `needs:spike` | `persona:research` |
205
+ | All other stories | No label needed (implicit `impl`) |
206
+
207
+ Apply the label:
208
+
209
+ ```bash
210
+ # Only if the story doesn't already have a persona:* label
211
+ gh issue edit <number> --repo <owner/repo> --add-label "persona:ops"
212
+ ```
213
+
214
+ This is a default heuristic. Users can override by manually labeling stories
215
+ before planning. The orchestrator reads whatever label is present at
216
+ execution time.
217
+
100
218
  ### Step 5: Ensure Branch Exists
101
219
 
102
220
  ```bash
@@ -9,16 +9,128 @@ Close out a sprint: summarize work, handle incomplete stories, open the release
9
9
 
10
10
  ## Before You Start
11
11
 
12
- 1. Read `../project-scaffold/references/CONVENTIONS.md` for project management standards.
13
- 2. **Terminology:** Always refer to milestones as **"epics"** in all user-facing text, summaries, and conversational output. The word "milestone" should only appear in GitHub API commands and code — never in communication with the user.
14
- 3. Confirm the `gh` CLI is authenticated.
12
+ 1. Read `../shared/references/CONVENTIONS.md` for project management standards.
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.
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.
17
+ 6. **If `scaffolding: "jira"`:** Verify `JIRA_SITE`, `JIRA_EMAIL`, and `JIRA_API_TOKEN` env vars are set.
18
+ 7. **If `scaffolding: "trello"`:** Verify `TRELLO_API_KEY` and `TRELLO_TOKEN` env vars are set.
19
+ 8. **If `scaffolding: "local"`:** Skip authentication. Sprint data is in local files.
15
20
 
16
21
  ## Input
17
22
 
18
- `$ARGUMENTS` should be the repo identifier and optionally the project number.
19
- If not provided, detect from the current git remote or ask the user.
23
+ **GitHub mode:** `$ARGUMENTS` should be the repo identifier and optionally the project number. If not provided, detect from the current git remote or ask the user.
20
24
 
21
- ## Release Procedure
25
+ **Jira/Trello mode:** `$ARGUMENTS` is ignored. Project key or board ID is read from config.json. Use the provider-specific API commands from PROVIDERS.md to update story status and close sprints — following the same release logic as GitHub mode. PRs are still created via `gh` if the git host is GitHub, otherwise direct git merges (see PROVIDERS.md, PR / Code Review Operations).
26
+
27
+ **Local mode:** `$ARGUMENTS` is ignored. Sprint data is read from the configured backlog path.
28
+
29
+ ---
30
+
31
+ ## Local Release Procedure
32
+
33
+ When `scaffolding: "local"`, release sprints by updating local backlog files
34
+ and performing git operations directly (no PRs, no GitHub issues).
35
+
36
+ ### Local Step 1: Sprint Inventory
37
+
38
+ Find the active sprint and read all its stories:
39
+
40
+ ```bash
41
+ # Find active sprint
42
+ grep -l 'status: active' <backlog-path>/sprints/sprint-*.md
43
+ ```
44
+
45
+ Read each story file referenced in the sprint. Categorize as done,
46
+ in-progress, ready, or blocked based on frontmatter `status`.
47
+
48
+ Also check git branch state:
49
+ ```bash
50
+ git fetch origin
51
+ # Story branches merged into release branch
52
+ git branch -r --merged origin/release/<epic-slug> | grep 'origin/story/'
53
+ # Unmerged story branches
54
+ git branch -r --no-merged origin/release/<epic-slug> | grep 'origin/story/'
55
+ ```
56
+
57
+ ### Local Step 2: Handle Incomplete Stories
58
+
59
+ For stories still open:
60
+
61
+ 1. **In Progress:** Ask the user — merge the story branch now, or roll over?
62
+ 2. **Ready (never started):** Update frontmatter: add `rolled-over` to labels,
63
+ set `sprint: null` (will be picked up by next sprint plan).
64
+ 3. **Blocked:** Update frontmatter: set `sprint: null`, keep `blocked` status.
65
+
66
+ ### Local Step 3: Merge Release Branch to Development
67
+
68
+ In local mode, merge directly instead of opening a PR:
69
+
70
+ ```bash
71
+ # Ensure release branch is up to date
72
+ git checkout release/<epic-slug> && git pull
73
+
74
+ # Merge to development
75
+ git checkout development && git pull
76
+ git merge release/<epic-slug> --no-ff -m "Release: Sprint <N> — <Epic Name>"
77
+ git push origin development
78
+ ```
79
+
80
+ If merge conflicts exist:
81
+ - Attempt automatic resolution
82
+ - If auto-resolution fails, pause and escalate to the user
83
+
84
+ ### Local Step 4: Clean Up Merged Branches
85
+
86
+ Same git operations as GitHub mode — delete merged story and release branches.
87
+
88
+ ### Local Step 5: Update Local State
89
+
90
+ Update the sprint file frontmatter:
91
+ ```yaml
92
+ status: completed
93
+ velocity_actual: <points completed>
94
+ ```
95
+
96
+ Update completed story files:
97
+ ```yaml
98
+ status: done
99
+ ```
100
+
101
+ If all stories in an epic are done, update `_epic.md`:
102
+ ```yaml
103
+ status: closed
104
+ ```
105
+
106
+ ### Local Step 6: Generate Release Report
107
+
108
+ Same format as GitHub mode, but without PR links. Instead report:
109
+
110
+ ```
111
+ ## Sprint <N> Release Complete (Local Mode)
112
+
113
+ **Merge:** release/<epic-slug> → development (direct merge)
114
+ **Commit:** <merge commit SHA>
115
+
116
+ ### Sprint Scorecard
117
+ <same as GitHub mode>
118
+
119
+ ### Epic Progress
120
+ <same as GitHub mode>
121
+
122
+ ### Cleanup
123
+ <same as GitHub mode>
124
+
125
+ ### Next Steps
126
+ 1. Review changes on development branch
127
+ 2. Run `/sprint-plan` to plan Sprint <N+1>
128
+ 3. When ready for production, merge development → main manually
129
+ ```
130
+
131
+ ---
132
+
133
+ ## GitHub Release Procedure
22
134
 
23
135
  ### Step 1: Sprint Inventory
24
136
 
@@ -9,16 +9,70 @@ Generate a comprehensive status report for the active sprint.
9
9
 
10
10
  ## Before You Start
11
11
 
12
- 1. Read `../project-scaffold/references/CONVENTIONS.md` for project management standards.
13
- 2. **Terminology:** Always refer to milestones as **"epics"** in all user-facing text, summaries, and conversational output. The word "milestone" should only appear in GitHub API commands and code — never in communication with the user.
14
- 3. Confirm the `gh` CLI is authenticated.
12
+ 1. Read `../shared/references/CONVENTIONS.md` for project management standards.
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.
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.
17
+ 6. **If `scaffolding: "jira"`:** Verify `JIRA_SITE`, `JIRA_EMAIL`, and `JIRA_API_TOKEN` env vars are set.
18
+ 7. **If `scaffolding: "trello"`:** Verify `TRELLO_API_KEY` and `TRELLO_TOKEN` env vars are set.
19
+ 8. **If `scaffolding: "local"`:** Skip authentication. Status is read from local files.
15
20
 
16
21
  ## Input
17
22
 
18
- `$ARGUMENTS` should be the repo identifier and optionally the project number.
19
- If not provided, detect from the current git remote or ask the user.
23
+ **GitHub mode:** `$ARGUMENTS` should be the repo identifier and optionally the project number. If not provided, detect from the current git remote or ask the user.
20
24
 
21
- ## Status Report Procedure
25
+ **Jira/Trello mode:** `$ARGUMENTS` is ignored. Project key or board ID is read from config.json. Use the provider-specific API commands from PROVIDERS.md to query story status — following the same reporting logic as GitHub mode.
26
+
27
+ **Local mode:** `$ARGUMENTS` is ignored. Status is read from the configured backlog path.
28
+
29
+ ---
30
+
31
+ ## Local Status Report Procedure
32
+
33
+ When `scaffolding: "local"`, generate the status report from local backlog
34
+ files.
35
+
36
+ ### Local Step 1: Gather Data
37
+
38
+ Find the active sprint:
39
+
40
+ ```bash
41
+ # Find the active sprint file
42
+ grep -l 'status: active' <backlog-path>/sprints/sprint-*.md
43
+ ```
44
+
45
+ Read the active sprint file to get the story list. Then read each referenced
46
+ story file's frontmatter for current status, executor, points, persona,
47
+ and labels.
48
+
49
+ Also check git state for additional signals:
50
+ ```bash
51
+ # Recent commits on release branches
52
+ git log --oneline --since="1 week ago" --all --grep="story/"
53
+
54
+ # Open local branches (proxy for in-progress work)
55
+ git branch --list 'story/*'
56
+ ```
57
+
58
+ ### Local Step 2: Categorize Stories
59
+
60
+ Same categories as GitHub mode — group stories by their frontmatter
61
+ `status` field: `done`, `in-progress`, `ready`, `blocked`, `needs-context`.
62
+
63
+ ### Local Step 3: Generate Report
64
+
65
+ Same report format as GitHub mode. Use story file paths instead of issue
66
+ numbers. For "Release Branch Health", check git branch state directly
67
+ instead of via `gh`.
68
+
69
+ ### Local Step 4: Actionable Recommendations
70
+
71
+ Same as GitHub mode.
72
+
73
+ ---
74
+
75
+ ## GitHub Status Report Procedure
22
76
 
23
77
  ### Step 1: Gather Data
24
78