@chris1807/claude-kit 2.1.33 → 2.1.35

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 CHANGED
@@ -277,6 +277,8 @@ Claude automatically:
277
277
  8. **Pauses for you to manually test**
278
278
  9. Creates the PR after you confirm
279
279
 
280
+ **Implementing a whole Feature:** point `/implement` at a Feature work item and it implements the child User Stories in waves driven by the `Custom.Order` field — stories with the same order value are implemented in parallel (one agent per story, each in an isolated git worktree), and the next order value starts only after the previous wave is merged and green. Everything lands on one `feature/` branch with a single review, UAT pass, and PR that links every story.
281
+
280
282
  ### Review a Pull Request
281
283
 
282
284
  ```
@@ -630,7 +632,7 @@ Claude reviews for:
630
632
 
631
633
  | Command | Usage | What It Does |
632
634
  |---------|-------|-------------|
633
- | `/implement` | `/implement AB#1234` | Read work item → summarize → approve plan → implement → quality checks → UAT → PR |
635
+ | `/implement` | `/implement AB#1234` | Read work item → summarize → approve plan → implement → quality checks → UAT → PR. On a Feature: implements child stories in `Custom.Order` waves, same-order stories in parallel |
634
636
  | `/review` | `/review 142` | Full code review on a PR with inline comments |
635
637
  | `/deep-review` | `/deep-review 142` | Deep, Ultracode-orchestrated review: checks out the branch, builds/tests it, verifies every requirement, checks for regressions, flags out-of-scope changes, then comments + votes |
636
638
  | `/resolve-feedback` | `/resolve-feedback 142` | Address unresolved PR comment threads, push fixes, reply + resolve threads |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chris1807/claude-kit",
3
- "version": "2.1.33",
3
+ "version": "2.1.35",
4
4
  "description": "Claude Code starter kit for Azure DevOps teams — agents, hooks, MCP servers, slash commands, and end-to-end work item → PR → release → deploy workflow automation",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,6 +40,26 @@ Unlike `/review`, this command works against the real working tree so it can bui
40
40
 
41
41
  If checkout fails (branch deleted after merge, etc.), tell the user and offer to fall back to a diff-only review (the `/review` behavior) instead.
42
42
 
43
+ ### Effort gate — before the deep analysis (Steps 3–8)
44
+
45
+ Reasoning effort is a harness setting the user controls; this command cannot change it. `/deep-review` is the exhaustive, checkout-based review, so its analysis is heavy by nature — bias the recommendation upward. Rubric:
46
+
47
+ | Effort | When |
48
+ |--------|------|
49
+ | `high` | A focused PR — small diff, few subsystems, straightforward acceptance criteria. The floor for this command. |
50
+ | `xhigh` | The common case for a deep review — a real feature diff, several subsystems or acceptance criteria, regressions to reason about. Recommend this by default. |
51
+ | `max` | Large, security-critical, or architecturally risky PRs where you want maximum scrutiny. Session-only. |
52
+
53
+ Signals: files changed (from the confirmation above), acceptance-criteria count, number of subsystems touched, and whether the code is security- or data-integrity-sensitive. Present:
54
+
55
+ ```
56
+ Suggested reasoning effort for this deep review: **{level}** — {one-line justification}.
57
+ Effort is set by you, not me. Run `/effort` to adjust if needed, then reply **ready** —
58
+ or reply **go** to proceed at your current level.
59
+ ```
60
+
61
+ **Wait for `ready` or `go` before launching the Step 3 workflow.** Never try to set the effort level yourself; only recommend it.
62
+
43
63
  ## Step 3: Detect Rework Context — do this BEFORE judging acceptance criteria
44
64
 
45
65
  A small diff does not mean a small feature. The PR you are reviewing may be a rework that only addresses targeted feedback, while the bulk of the implementation already shipped in earlier PRs. Judging acceptance criteria against the current diff alone will produce false "not met" findings.
@@ -41,6 +41,27 @@ For each flagged item, capture:
41
41
 
42
42
  If there are zero qualifying threads, tell the user `No open reviewer feedback on PR #{id}.` and stop.
43
43
 
44
+ ### Effort gate — before planning and applying fixes (Steps 4–5)
45
+
46
+ Reasoning effort is a harness setting the user controls; this command cannot change it. Recommend a level based on the flagged items you just collected, then let the user set it. Rubric (the session default is usually `high`):
47
+
48
+ | Effort | When |
49
+ |--------|------|
50
+ | `medium` | A short list of low-severity, mechanical fixes (renames, nits, one or two obvious changes). |
51
+ | `high` | The common case — a mix of warnings and a few criticals across several files. Recommend this unless clearly lighter or heavier. |
52
+ | `xhigh` | Many findings, multiple critical issues, or fixes that touch subtle logic / span subsystems and risk regressions. |
53
+ | `max` | Exceptional: a critical finding that requires a genuine rethink or security-critical fix. Session-only. |
54
+
55
+ Signals: total flagged-item count and the severity mix (how many critical), plus whether the fixes concentrate in tricky code. Present:
56
+
57
+ ```
58
+ Suggested reasoning effort for these fixes: **{level}** — {one-line justification citing the counts}.
59
+ Effort is set by you, not me. Run `/effort` to adjust if needed, then reply **ready** —
60
+ or reply **go** to proceed at your current level.
61
+ ```
62
+
63
+ **Wait for `ready` or `go` before switching branches and planning.** Never try to set the effort level yourself; only recommend it.
64
+
44
65
  ## Step 3: Switch to the PR Branch
45
66
 
46
67
  Before reading code or proposing fixes, make sure local state matches the PR:
@@ -24,6 +24,8 @@ Read the work item from Azure DevOps via MCP. Extract:
24
24
 
25
25
  Handle `$ARGUMENTS` as either `1234` or `AB#1234` — strip the `AB#` prefix when calling the MCP API.
26
26
 
27
+ **If `System.WorkItemType` is `Feature`, switch to the [Feature Workflow](#feature-workflow-ordered-story-waves) at the bottom of this document.** Steps 2–10 below describe the single-work-item flow; the Feature Workflow reuses them per child User Story.
28
+
27
29
  ### Embedded Images
28
30
 
29
31
  The description and acceptance criteria fields may contain embedded images (screenshots, mockups, diagrams). These are typically `<img>` tags with `src` URLs pointing to Azure DevOps attachments. **Download and view every embedded image** using WebFetch — they often contain critical visual requirements (UI layouts, expected behavior, error states) that are not described in the text.
@@ -34,6 +36,19 @@ Read the work item comments via `wit_list_work_item_comments`. Comments often co
34
36
 
35
37
  ## Step 2: Summarize and Confirm
36
38
 
39
+ ### Assess reasoning effort
40
+
41
+ Reasoning effort is a **harness setting the user controls** — this command cannot change it, and no prompt or hook can. Your job is to *recommend* a level; the user applies it (via `/effort`) before the heavy work in Steps 3–8 runs. Base the recommendation on the work item's scope using this rubric (the session default is usually `high`):
42
+
43
+ | Effort | When |
44
+ |--------|------|
45
+ | `medium` | Trivial / mechanical: single-file or config change, copy tweak, one obvious fix. |
46
+ | `high` | Standard work: cross-layer change, a handful of files, normal test + review load. Recommend this unless the work is clearly lighter or heavier. |
47
+ | `xhigh` | Heavy: multi-subsystem or full-stack change, many acceptance criteria, subtle logic, tricky regressions, or ambiguous requirements. |
48
+ | `max` | Exceptional: genuinely novel design, security-critical, or high-uncertainty work. Session-only. |
49
+
50
+ Concrete signals for this command: number of subsystems/layers touched, acceptance-criteria count, and how much is net-new logic vs. following an existing pattern.
51
+
37
52
  Present a summary of the work item to the user:
38
53
 
39
54
  ```
@@ -51,10 +66,15 @@ Present a summary of the work item to the user:
51
66
 
52
67
  Does this look correct? Do you have any additional context or requirements?
53
68
 
69
+ **Suggested reasoning effort: {level}** — {one-line justification citing the signals above}.
70
+ Effort is set by you, not me. If your current level differs, run `/effort` to adjust before replying.
71
+
54
72
  Use **Ultracode effort** for this run? Ultracode fans out exploration, AC-coverage checks, and code review across parallel agents — more thorough, but slower and more token-hungry. (yes / no — suggested: {yes for multi-subsystem / multi-AC work, no for trivial changes})
73
+
74
+ Reply with your Ultracode choice (and any added context). Say **ready** once your effort level is set, or **go** to proceed at your current level.
55
75
  ```
56
76
 
57
- **Wait for the user to respond.** Do NOT proceed until the user confirms or provides additional context. If they add context, incorporate it into the plan. Record the Ultracode answer — it governs whether the `Workflow` fan-outs in Steps 3, 7, and 8 run at all.
77
+ **Wait for the user to respond.** Do NOT proceed until the user confirms or replies `ready`/`go`. If they add context, incorporate it into the plan. Record the Ultracode answer — it governs whether the `Workflow` fan-outs in Steps 3, 7, and 8 run at all. Never try to set the effort level yourself; only recommend it.
58
78
 
59
79
  ## Step 3: Explore & Plan
60
80
 
@@ -308,3 +328,89 @@ Once the user has answered, update each task via `wit_update_work_item`:
308
328
  - `System.State` → `Closed` (fall back to `Done` if the project's task template uses Agile; warn if neither is valid)
309
329
 
310
330
  Confirm with a summary line per task: `Closed AB#xxxx — {hours}h logged`.
331
+
332
+ ## Feature Workflow (ordered story waves)
333
+
334
+ Used when the work item passed to `/implement` is a **Feature**. The Feature's child User Stories are implemented in **waves** driven by the custom order field (`Custom.Order`): all stories sharing the same order value run **in parallel** (one implementation agent each), and waves run sequentially in ascending order — wave 2 starts only after wave 1 is merged, built, and green, so later stories can build on earlier ones.
335
+
336
+ The single-work-item gates still exist, but they are **batched per wave** so parallel agents never have to prompt the user: one confirmation for the whole feature, one plan approval per wave, one review/UAT/PR cycle for the feature.
337
+
338
+ ### F1: Load Child Stories and Build Waves
339
+
340
+ 1. Fetch the Feature with `expand: Relations` (Step 1 rules apply — description, embedded images, comments).
341
+ 2. Collect children (`System.LinkTypes.Hierarchy-Forward`) and fetch them via `wit_work_item` `get_batch` with fields: `System.Id`, `System.Title`, `System.State`, `System.WorkItemType`, `System.AssignedTo`, `Custom.Order`, `Microsoft.VSTS.Scheduling.StoryPoints`.
342
+ 3. Keep children of type **User Story** or **Bug** that are not already `Closed`, `Resolved`, or `Removed`. List anything skipped (and why) in the F2 summary.
343
+ 4. Group the remaining stories by `Custom.Order` ascending — each distinct value is one **wave**. Stories with equal order values share a wave and run in parallel.
344
+ 5. Stories with **no** `Custom.Order` value form a final catch-all wave — flag them in F2 so the user can either accept that placement or set order values in Azure DevOps and re-run.
345
+ 6. Read each story fully per Step 1 (description, acceptance criteria, embedded images, comments).
346
+
347
+ If the Feature has **no** implementable child stories, stop and tell the user; offer to implement the Feature itself via the standard single-work-item flow (Steps 2–10) if its own description/AC support that.
348
+
349
+ ### F2: Summarize and Confirm (one gate for the whole Feature)
350
+
351
+ Present the Feature summary plus the wave plan:
352
+
353
+ ```
354
+ ## AB#{feature-id}: {feature title} (Feature)
355
+
356
+ **State:** {state} **Child stories:** {n} implementable ({m} skipped: {ids + reason})
357
+
358
+ ### Description
359
+ {feature description summary}
360
+
361
+ ### Execution Waves (Custom.Order)
362
+
363
+ | Wave | Order | Story | Title | Points | State |
364
+ |------|-------|-------|-------|--------|-------|
365
+ | 1 | 1 | AB#6242 | ... | 3 | Dev Ready |
366
+ | 1 | 1 | AB#6243 | ... | 2 | Dev Ready |
367
+ | 2 | 2 | AB#6244 | ... | 5 | Dev Ready |
368
+ | 3 | — | AB#6245 | ... | 3 | Dev Ready | ← no Custom.Order set; runs last
369
+
370
+ Stories in the same wave are implemented in parallel; waves run in order.
371
+
372
+ Does this look correct? Any stories to skip, reorder, or context to add?
373
+ ```
374
+
375
+ Include the Step 2 reasoning-effort recommendation (a multi-story Feature is almost always `xhigh`) and the **single** Ultracode question — the answer applies to every story in the run. **Wait for the user** exactly as in Step 2.
376
+
377
+ ### F3: Create the Feature Branch
378
+
379
+ Capture `BASE_BRANCH` and create `feature/AB#{feature-id}-{sanitized-title}` per Step 4 rules. All story work merges into this branch; the single PR in F7 targets `BASE_BRANCH`.
380
+
381
+ ### F4: Execute Waves
382
+
383
+ For each wave in ascending order:
384
+
385
+ 1. **Explore & plan** each story in the wave (Step 3 rules; Ultracode fan-outs apply per story if opted in). Present **one combined plan** with a section per story — each section covering approach, files, unit tests, and agents — plus a note on any files touched by more than one story in the wave (a conflict warning). **One approval gate per wave**; wait for the user.
386
+ 2. **Implement:**
387
+ - **Single-story wave** → implement directly on the feature branch in the main loop (Step 5).
388
+ - **Multi-story wave** → isolate each story in its own worktree so parallel agents never clobber each other:
389
+
390
+ ```bash
391
+ git worktree add "{scratchpad}/wt-{story-id}" -b "story/AB#{story-id}-{sanitized-title}" "{feature-branch}"
392
+ ```
393
+
394
+ Launch **one implementation agent per story, all in a single message** so they run concurrently (`backend`/`frontend`/`general-purpose` per the approved plan; if a story needs both backend and frontend work, give one agent the whole story rather than splitting it). Each agent's prompt must include: the approved plan for its story, the story's full AC, its worktree path, and these rules — work **only** inside your worktree, implement the plan plus its unit tests, run the tests you added, commit to the story branch, and report what you changed. Agents never push, never create PRs, never touch work items, and never ask the user anything.
395
+ - **Merge back (main loop):** merge each story branch into the feature branch (`git merge --no-ff`), resolving conflicts yourself using both stories' plans as the guide. Then `git worktree remove` and delete the story branch. Merge in `Custom.Order`-then-ID order so conflict resolution is deterministic.
396
+ 3. **Wave gate:** run Step 6 (build validation) and Step 7.1–7.2 (full test suite + lint) on the merged feature branch. Fix failures before starting the next wave — the next wave branches from this merged, green state.
397
+
398
+ ### F5: Feature-Level Quality and Review
399
+
400
+ After the last wave:
401
+
402
+ 1. **Environment config parity** (Step 7.3) across the whole feature diff vs `BASE_BRANCH`.
403
+ 2. **Acceptance Criteria check** (Step 7.4) for **every AC of every implemented story** — do not proceed with any AC unverified.
404
+ 3. **Code review** (Step 8, including the Ultracode find → verify pipeline if opted in) over the entire feature diff, with the same must-fix loop.
405
+
406
+ ### F6: UAT Gate
407
+
408
+ Present **one combined UAT checklist grouped by story** (Step 9 rules). Wait for `testing passed` before creating the PR.
409
+
410
+ ### F7: PR and Work Item Updates
411
+
412
+ 1. Push the feature branch and create **one PR**: title `AB#{feature-id}: {feature title}`, source `feature/...`, target `BASE_BRANCH`.
413
+ 2. Link the **Feature and every implemented story** to the PR.
414
+ 3. Run **Closing Related Tasks** (Step 10) once, covering the child Tasks of every implemented story — one combined table, then the usual per-task hour prompts.
415
+ 4. Move each implemented story **and** the Feature to `Code Review` (same fallback rules as Step 10).
416
+ 5. The Step 10 PR-completion rule applies unchanged: when the PR merges, only child **Tasks** may be closed — never the stories or the Feature.
@@ -1,6 +1,6 @@
1
- Sweep an Azure DevOps backlog for Dev Ready user stories without child tasks and propose a per-story task breakdown with hour estimates. Usage: `/plan-backlog [project]`
1
+ Sweep an Azure DevOps backlog for Dev Ready user stories without child tasks and propose a single implementation task per story with an hour estimate. Usage: `/plan-backlog [project]`
2
2
 
3
- This command walks the **backlog** of a chosen Azure DevOps project (work items not assigned to any sprint), finds user stories that are **Dev Ready**, **have Story Points**, and **have no child tasks yet**, and — story by story — proposes a tailored Task breakdown with hour estimates for the user to approve before any work items are created.
3
+ This command walks the **backlog** of a chosen Azure DevOps project (work items not assigned to any sprint), finds user stories that are **Dev Ready**, **have Story Points**, and **have no child tasks yet**, and — story by story — proposes **one child Task** with an hour estimate for the user to approve before any work items are created. Exactly one task per story — never a multi-task breakdown.
4
4
 
5
5
  Treat `$ARGUMENTS` as an optional project name (e.g. `/plan-backlog CSI Development`). If provided, skip the project prompt in Step 1.
6
6
 
@@ -81,8 +81,8 @@ Found {n} Dev Ready stories with Story Points and no child tasks on the {project
81
81
  | 3 | AB#4530 | COM - Dashboard trend graphs | 3 |
82
82
  | .. | ... | ... | ... |
83
83
 
84
- I'll walk through each one. For each story you'll see a proposed task list
85
- with hours; you can approve, edit, or skip per story.
84
+ I'll walk through each one. For each story you'll see one proposed task
85
+ with an hour estimate; you can approve, edit, or skip per story.
86
86
 
87
87
  Continue? (yes / cancel)
88
88
  ```
@@ -93,18 +93,18 @@ Continue? (yes / cancel)
93
93
 
94
94
  Only when **ultracode is on** (a system-reminder confirms it, or the user typed `ultracode`): the analysis in 5a–5c is independent per story, so pre-compute all proposals in parallel with the `Workflow` tool instead of analyzing one story at a time.
95
95
 
96
- - Fan out **one agent per story** that does 5a–5c — re-read the story, map points → budget, tailor the task list — and returns a structured proposal (story id, points, budget, and the list of `{title, hours}` tasks). Use a `schema` so each agent returns validated JSON.
97
- - Then run Step 5's loop **using the pre-computed proposals** — but keep 5d (approval) and 5e (creation) exactly as written: present each proposal, wait for `yes / edit / skip / cancel-all`, and create tasks only after approval. **Never fan out the approval or the work-item creation** — those stay sequential and interactive.
96
+ - Fan out **one agent per story** that does 5a–5c — re-read the story, map points → budget, draft the single task — and returns a structured proposal (story id, points, budget, and one `{title, hours}` task). Use a `schema` so each agent returns validated JSON.
97
+ - Then run Step 5's loop **using the pre-computed proposals** — but keep 5d (approval) and 5e (creation) exactly as written: present each proposal, wait for `yes / edit / skip / cancel-all`, and create the task only after approval. **Never fan out the approval or the work-item creation** — those stay sequential and interactive.
98
98
 
99
99
  If ultracode is off, ignore this and run Step 5 the normal sequential way. The output is identical either way; ultracode only makes the analysis faster for large backlogs.
100
100
 
101
- ## Step 5: Per-Story Task Breakdown (loop)
101
+ ## Step 5: Per-Story Task (loop)
102
102
 
103
103
  For each remaining story, in order:
104
104
 
105
105
  ### 5a. Re-read the story in full
106
106
 
107
- Fetch the work item again (Description and Acceptance Criteria fields) if not already cached. You need the AC text to tailor the task list.
107
+ Fetch the work item again (Description and Acceptance Criteria fields) if not already cached. You need the AC text to write an accurate task title.
108
108
 
109
109
  ### 5b. Map Story Points → total hour budget
110
110
 
@@ -124,64 +124,39 @@ Use this mapping (calibrated for a senior developer at ~6 productive hours per d
124
124
 
125
125
  If the points value isn't on the Fibonacci scale, round to the nearest entry above. If the story has tags like `spike`, `research`, or `unknown-stack`, add 20–30% on top — those are the cases where seniority doesn't help.
126
126
 
127
- ### 5c. Tailor the task list (hybrid template)
127
+ ### 5c. Draft the single task
128
128
 
129
- Start from this template, then **add, remove, or rename** tasks based on what the AC actually describes:
129
+ Create **exactly one task** covering all the work for the story — implementation, tests, code review revisions, and UAT support are all rolled into it. Do not split the story into design/backend/frontend/test tasks.
130
130
 
131
- | Default task | When to include |
132
- |------------------------|----------------------------------------------------------|
133
- | Design / Spike | AC has open questions or the implementation isn't obvious |
134
- | Backend implementation | AC mentions API, service, job, persistence, or data flow |
135
- | Frontend implementation| AC mentions UI, screen, form, button, or workflow |
136
- | Database / migration | AC requires schema changes or data backfill |
137
- | Automated tests | Always include unless the story is purely a config tweak |
138
- | Code review revisions | Always include |
139
- | UAT support | Always include unless explicitly out of scope |
140
-
141
- Distribute the hour budget across the chosen tasks. Reasonable defaults:
142
-
143
- - Code review revisions: ~10% of budget (min 1 hr)
144
- - UAT support: ~10% of budget (min 1 hr)
145
- - Automated tests: ~15–25% of budget
146
- - Design / Spike (if present): ~10–20% of budget
147
- - Remaining hours split across implementation tasks based on the AC
148
-
149
- Round each task to a whole hour. Final total should equal the budget (give or take 1 hr from rounding).
131
+ - **Title**: `{Prefix} - Implement: {short summary of the story}` — use the same product prefix as the parent (e.g. `COM`, `PAY`, `CDA`), extracted from the parent's title.
132
+ - **Hours**: the full hour budget from 5b, rounded to a whole hour.
150
133
 
151
134
  ### 5d. Show the proposal
152
135
 
153
136
  ```
154
137
  ─────────────────────────────────────────────────────────────
155
- AB#{id}: {title} ({points} pts → {budget} hrs total)
138
+ AB#{id}: {title} ({points} pts → {budget} hrs)
156
139
  ─────────────────────────────────────────────────────────────
157
140
 
158
- Proposed child tasks:
141
+ Proposed child task:
159
142
 
160
- | # | Task title | Hours |
161
- |---|-----------------------------------------------|-------|
162
- | 1 | {Prefix} - Design: clarify export field set | 3 |
163
- | 2 | {Prefix} - Backend: CSV export endpoint | 8 |
164
- | 3 | {Prefix} - Frontend: export button + download | 6 |
165
- | 4 | {Prefix} - Tests: export endpoint + UI | 4 |
166
- | 5 | {Prefix} - Code review revisions | 2 |
167
- | 6 | {Prefix} - UAT support | 1 |
168
- | | **Total** | **24**|
143
+ | Task title | Hours |
144
+ |------------------------------------------------|-------|
145
+ | {Prefix} - Implement: payments CSV export | 24 |
169
146
 
170
147
  Approve? (yes / edit / skip / cancel-all)
171
148
  ```
172
149
 
173
- Task titles use the same product prefix as the parent (e.g. `COM`, `PAY`, `CDA`) — extract it from the parent's title. Use the format `{Prefix} - {what the task does}`.
174
-
175
150
  **Wait for the user.**
176
151
 
177
- - `yes` → proceed to 5e (create the tasks)
178
- - `edit` → ask which row to change (title or hours), revise, re-show the table, ask again
152
+ - `yes` → proceed to 5e (create the task)
153
+ - `edit` → ask what to change (title or hours), revise, re-show, ask again
179
154
  - `skip` → skip this story, move to the next; record it as skipped
180
155
  - `cancel-all` → stop the entire loop with no further changes. Report what was already created.
181
156
 
182
- ### 5e. Create the child tasks
157
+ ### 5e. Create the child task
183
158
 
184
- For each approved task, call `mcp__azure-devops__wit_create_work_item` with:
159
+ Create the approved task with `mcp__azure-devops__wit_create_work_item`:
185
160
 
186
161
  - **project**: the chosen project
187
162
  - **workItemType**: `Task`
@@ -195,12 +170,12 @@ For each approved task, call `mcp__azure-devops__wit_create_work_item` with:
195
170
 
196
171
  Then link the new task as a child of the parent with `mcp__azure-devops__wit_add_child_work_items` (or fall back to `wit_work_items_link` with link type `System.LinkTypes.Hierarchy-Forward` from parent → task).
197
172
 
198
- If any create or link call fails, report the failure for that task, stop creating tasks for this story, and ask the user whether to continue with the next story or abort the loop.
173
+ If the create or link call fails, report the failure and ask the user whether to continue with the next story or abort the loop.
199
174
 
200
175
  ### 5f. Confirm per-story result
201
176
 
202
177
  ```
203
- ✓ AB#{id}: created {k} child tasks ({budget} hrs total)
178
+ ✓ AB#{id}: created 1 child task ({budget} hrs)
204
179
  ```
205
180
 
206
181
  Then move to the next story.
@@ -213,14 +188,14 @@ Once the loop ends (all stories handled, or user said `cancel-all`):
213
188
  ## Backlog Planning Complete — {project}
214
189
 
215
190
  Stories planned: {n_planned}
216
- ✓ Tasks created: {n_tasks_total} ({hours_total} hrs)
191
+ ✓ Tasks created: {n_tasks_total} — one per story ({hours_total} hrs)
217
192
  Stories skipped: {n_skipped}
218
193
  - already had tasks: {n_existing}
219
194
  - user skipped: {n_user_skipped}
220
195
 
221
196
  Planned stories:
222
- - AB#4521: 6 tasks, 24 hrs
223
- - AB#4530: 4 tasks, 14 hrs
197
+ - AB#4521: 1 task, 24 hrs
198
+ - AB#4530: 1 task, 14 hrs
224
199
  - ...
225
200
 
226
201
  Next steps:
@@ -4,6 +4,25 @@ Review PR #$ARGUMENTS in the current project. Automatically:
4
4
 
5
5
  2. **Read the linked work item** and gather the full acceptance criteria.
6
6
 
7
+ **Effort gate — do this before the review reasoning (steps 3+).** Reasoning effort is a harness setting the user controls; this command cannot change it. Recommend a level based on the diff you just read, then let the user set it. Rubric (the session default is usually `high`):
8
+
9
+ | Effort | When |
10
+ |--------|------|
11
+ | `medium` | Small diff — a few files, mechanical or well-scoped change, short AC list. |
12
+ | `high` | Standard PR — cross-layer diff, a handful of files, a normal AC set. Recommend this unless clearly lighter or heavier. |
13
+ | `xhigh` | Large or subtle diff — many files/subsystems, many acceptance criteria, security-sensitive or concurrency-heavy code. |
14
+ | `max` | Exceptional: security-critical or architecturally risky change where you want maximum scrutiny. Session-only. |
15
+
16
+ Signals: files changed, additions/deletions, acceptance-criteria count, and whether the diff touches security- or data-integrity-sensitive code. Present:
17
+
18
+ ```
19
+ Suggested reasoning effort for this review: **{level}** — {one-line justification}.
20
+ Effort is set by you, not me. Run `/effort` to adjust if needed, then reply **ready** —
21
+ or reply **go** to review at your current level.
22
+ ```
23
+
24
+ **Wait for `ready` or `go` before continuing.** Never try to set the effort level yourself; only recommend it.
25
+
7
26
  3. **Detect rework context — do this BEFORE judging acceptance criteria.**
8
27
 
9
28
  A small diff does not mean a small feature. The PR you are reviewing may be a rework that only addresses targeted feedback, while the bulk of the implementation already shipped in earlier PRs. Judging acceptance criteria against the current diff alone will produce false "not met" findings.
@@ -53,6 +53,19 @@ Regardless of whether description/acceptance criteria changed, **always read the
53
53
 
54
54
  ## Step 3: Summarize Rework and Confirm
55
55
 
56
+ ### Assess reasoning effort
57
+
58
+ Reasoning effort is a **harness setting the user controls** — this command cannot change it, and no prompt or hook can. Recommend a level; the user applies it (via `/effort`) before the rework in Steps 4–10 runs. Base it on the rework's scope using this rubric (the session default is usually `high`):
59
+
60
+ | Effort | When |
61
+ |--------|------|
62
+ | `medium` | A small targeted fix: one or two files, a single low-risk feedback item. |
63
+ | `high` | Standard rework: a handful of files, a few feedback items across a layer or two. Recommend this unless clearly lighter or heavier. |
64
+ | `xhigh` | Heavy rework: multi-subsystem changes, many feedback items / ACs, subtle regressions, or ambiguous feedback. |
65
+ | `max` | Exceptional: the feedback exposes a design flaw needing a rethink, or security-critical work. Session-only. |
66
+
67
+ Concrete signals for this command: number of feedback items, how many ACs they map to, and how many subsystems the fixes touch.
68
+
56
69
  Present a summary of the rework feedback to the user. **Every feedback item must be mapped to an Acceptance Criterion** — if a feedback item doesn't map to any AC, flag it explicitly as either (a) implied by an AC that's worded too loosely or (b) scope-creep that should be a separate work item.
57
70
 
58
71
  ```
@@ -78,10 +91,15 @@ Present a summary of the rework feedback to the user. **Every feedback item must
78
91
 
79
92
  Does this capture the rework correctly? Any feedback items that should be flagged as scope-creep (separate work item) instead of being addressed here?
80
93
 
94
+ **Suggested reasoning effort: {level}** — {one-line justification citing the signals above}.
95
+ Effort is set by you, not me. If your current level differs, run `/effort` to adjust before replying.
96
+
81
97
  Use **Ultracode effort** for this rework? Ultracode fans out exploration, AC-coverage checks, and code review across parallel agents — more thorough, but slower and more token-hungry. (yes / no — suggested: {yes for multi-file / multi-AC rework, no for a small targeted fix})
98
+
99
+ Reply with your Ultracode choice (and any reclassifications or context). Say **ready** once your effort level is set, or **go** to proceed at your current level.
82
100
  ```
83
101
 
84
- **Wait for the user to respond.** Do NOT proceed until the user confirms the AC mapping. Record the Ultracode answer — it governs whether the `Workflow` fan-outs in Steps 4, 9, and 10 run at all. If they reclassify any item as scope-creep, drop it from the plan and note it in the final summary. If they add context, incorporate it.
102
+ **Wait for the user to respond.** Do NOT proceed until the user confirms the AC mapping and replies `ready`/`go`. Record the Ultracode answer — it governs whether the `Workflow` fan-outs in Steps 4, 9, and 10 run at all. If they reclassify any item as scope-creep, drop it from the plan and note it in the final summary. If they add context, incorporate it. Never try to set the effort level yourself; only recommend it.
85
103
 
86
104
  ## Step 4: Explore & Plan
87
105
 
@@ -217,13 +217,17 @@ PRs always target the branch you were on when `/implement` was invoked. The base
217
217
 
218
218
  Hot Fix work items follow the same automated checks (build, lint, tests, review) but skip manual UAT. An abbreviated confirmation is shown instead. Hot Fix PRs get a `hotfix` label. Hot Fixes target the current branch (which should be the project's production branch for production hot fixes).
219
219
 
220
+ #### Feature Workflow (ordered story waves)
221
+
222
+ Running `/implement` on a **Feature** implements its child User Stories in **waves** driven by the `Custom.Order` field: stories sharing the same order value are implemented **in parallel** (one agent per story, each in an isolated git worktree), and waves run sequentially in ascending order so later stories build on earlier ones. All work merges into a single `feature/AB#<id>-...` branch; quality checks, code review, UAT, and one PR happen at the feature level, and every implemented story is linked to that PR. Stories without a `Custom.Order` value run in a final catch-all wave (flagged for confirmation first).
223
+
220
224
  #### Slash Commands Reference
221
225
 
222
226
  All deployment and release operations are available as slash commands:
223
227
 
224
228
  | Command | Usage | What It Does |
225
229
  |---|---|---|
226
- | `/implement` | `/implement AB#1234` | Summarize work item → approve plan → implement → PR |
230
+ | `/implement` | `/implement AB#1234` | Summarize work item → approve plan → implement → PR. On a Feature: child stories in `Custom.Order` waves, same-order stories in parallel |
227
231
  | `/review` | `/review 142` | Automated code review on a PR |
228
232
  | `/resolve-feedback` | `/resolve-feedback 142` | Address unresolved PR comment threads, push fixes, reply + resolve threads |
229
233
  | `/deploy` | `/deploy "commit message"` | Commit, push, trigger pipeline |