@nklisch/pi-agile-workflow 0.15.3 → 0.16.1

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.
@@ -2,20 +2,19 @@
2
2
  name: fix
3
3
  description: >
4
4
  ALWAYS invoke this skill when the user asks to fix a specific verified bug — do not just edit code
5
- inline. Diagnoses and repairs a specific bug as a single-stride substrate story. Reproduces the
6
- issue, identifies the root cause, writes a failing test, applies the minimal fix, confirms, and
7
- creates a story item under .work/active/stories/ at stage:review capturing the work. Use when
8
- something is verifiably broken — not for unverified hunches, refactors, or feature additions.
9
- Triggers on "fix bug X", "fix the typo in", "fix this issue", "this is broken — fix it", and "patch
10
- this item".
5
+ inline. Diagnoses and repairs the bug as a focused substrate story: reproduces it, identifies the
6
+ root cause, writes a failing test, applies the minimal fix, verifies it, and continues through
7
+ review to done unless the caller requests stop-at-review. Use when something is verifiably broken,
8
+ not for unverified hunches, refactors, feature additions, or architectural work. Triggers on "fix
9
+ bug X", "fix the typo in", "fix this issue", "this is broken — fix it", and "patch this item".
11
10
  ---
12
11
 
13
12
  # Fix
14
13
 
15
- You diagnose and repair a specific reported bug, capturing the work as a single
16
- substrate story that lands at `stage: review`. The discipline is the same as a
17
- careful bug-fix workflow — reproduce, diagnose to root cause, write a regression
18
- test, apply the minimal fix, confirm but the artifact is a substrate item, not
14
+ You diagnose and repair a specific reported bug, capturing the work as a focused
15
+ substrate story that completes through its review lane by default. The discipline
16
+ is reproduce, diagnose to root cause, write a regression test, apply the minimal
17
+ fix, confirm, and honor review's verdict. The artifact is the substrate item, not
19
18
  a separate fix doc.
20
19
 
21
20
  ## When to invoke
@@ -128,46 +127,65 @@ for separate consideration — don't bundle.
128
127
 
129
128
  If any step fails, return to diagnosis. Do not ship a fix you can't confirm works.
130
129
 
131
- **Test integrity during Phase 6.** If running the full suite surfaces
132
- *other* failing tests:
130
+ **Test integrity during Phase 6.** Follow the project's test-integrity rules and
131
+ the worker posture in `../principles/references/subagents.md`: fix bad tests
132
+ in-session, park other production bugs rather than bundling them, and never game
133
+ a test to make it pass.
133
134
 
134
- - Bad tests (stale fixtures, drifted assertions, broken mocks) → fix
135
- in-session if the fix is small and scoped to this bug's surface area;
136
- otherwise park.
137
- - Pre-existing real production bugs → park via `/agile-workflow:park`.
138
- Do NOT bundle them into this fix's commit; this skill is for *one*
139
- bug.
140
- - NEVER make a test pass by weakening its assertion or silencing it
141
- without a documented reason. The regression test you wrote in Phase 3
142
- must verify behavior, not "whatever the code returns now".
135
+ ### Phase 7: Commit and complete the lifecycle
143
136
 
144
- ### Phase 7: Advance to review and commit
145
-
146
- 1. Update story stage: `implementing review`. The PostToolUse hook auto-bumps `updated:`.
147
- 2. Append an "Implementation notes" section to the story body capturing:
137
+ 1. Update the story stage: `implementing review`. The PostToolUse hook
138
+ auto-bumps `updated:`.
139
+ 2. Append an "Implementation notes" section capturing:
140
+ - Execution capability selected from risk and scope, plus the rationale
141
+ - Effective `review_weight` and its source
148
142
  - Files changed
149
143
  - Test added
150
- - Adjacent issues parked (with their backlog ids)
151
- 3. Commit:
144
+ - Adjacent issues parked (with backlog ids)
145
+
146
+ Choose capability without a routine model-tier question unless the caller or
147
+ project explicitly overrides it. Resolve review weight from an explicit caller
148
+ override, then project convention, otherwise `standard`; the principles and
149
+ review skills own the weight matrix.
150
+ 3. Commit the fix:
152
151
  ```bash
153
152
  git add .work/active/stories/<id>.md <changed-files> <test-file>
154
153
  git commit -m "fix: <short description> (<story-id>)"
155
154
  ```
155
+ 4. Unless the caller explicitly requested `stop-at-review` (including "stop at
156
+ review", "leave at review", or "hand off for review") or a project convention
157
+ sets that boundary, invoke `/agile-workflow:review <id>` in the same invocation
158
+ and forward the effective `review_weight`. The review lane owns its required
159
+ context and verdict:
160
+ - approve: advance and commit `review → done`
161
+ - bounce: append `## Review findings`, return the story to `implementing`, and
162
+ report the bounce
163
+ - blocker: append `## Blocker` and report it without claiming completion
164
+
165
+ A weight of `none` skips independent review, but the review lane still requires
166
+ the same green verification and acceptance evidence before administrative
167
+ closure. Review remains a real lifecycle act, not silent self-approval. With
168
+ `stop-at-review`, leave the committed story at `review` and report the explicit
169
+ boundary.
156
170
 
157
171
  ## Output
158
172
 
159
173
  Brief report in conversation:
160
- - **Story**: `<id>` at `stage: review`
174
+ - **Story**: `<id>` at `stage: done`, `stage: review` by explicit override, or
175
+ `stage: implementing` after a documented bounce
176
+ - **Review**: lane verdict, limitation, or blocker
161
177
  - **Root cause**: one sentence
162
178
  - **Fix**: file(s) changed
163
- - **Test**: file path, what it asserts
164
- - **Parked for separate consideration**: any adjacent issues you noticed but didn't bundle
179
+ - **Test**: file path and behavior asserted
180
+ - **Execution capability**: choice and rationale
181
+ - **Review weight**: effective value and source
182
+ - **Parked for separate consideration**: adjacent issues not bundled
165
183
 
166
184
  ## Guardrails
167
185
 
168
186
  - Do NOT skip the test (Phase 3). Fixes without tests recur.
169
187
  - Do NOT bundle refactoring or unrelated improvements into the fix's commit.
170
- - Do NOT advance the story past `review` the user reviews and runs
171
- `/agile-workflow:review` to advance to `done`.
172
- - If the fix would touch > 5 files or change a public interface, stop. This isn't a
173
- fix; it's a feature with refactor implications. Use `/agile-workflow:scope` instead.
188
+ - Do not self-approve at `review`; invoke the review lane and honor its verdict.
189
+ - Broad scope (for example, many files, a public-interface change, or multiple
190
+ subsystems) is a signal that this is a feature rather than a targeted fix, not
191
+ a review-stop rule. Route it through `/agile-workflow:scope`.
@@ -1,14 +1,14 @@
1
1
  ---
2
2
  name: implement
3
3
  description: >
4
- ALWAYS invoke this skill when the user explicitly asks to implement a substrate item inline OR the
5
- delivery is tiny (about 50 LoC or less, two files or fewer, no coordination) OR the deliverable is no-code prose (a
6
- [prose] item any size, as long as it needs no coordination) for any larger or default *code*
7
- work prefer /agile-workflow:implement-orchestrator. Inline single-stride implementation of a
8
- substrate item at stage:implementing. Reads the design embedded in the item body, writes code per
9
- the spec, runs build+tests, advances stage implementing to review, and updates the item body with
10
- implementation notes. Triggers on "implement this inline", "implement this item inline", "just do it
11
- inline", or a very small explicit delivery.
4
+ ALWAYS invoke this skill when the user explicitly asks to implement a substrate item inline, when
5
+ the work is cohesive enough for one owner, or when the deliverable is no-code prose (a [prose]
6
+ item of any size that needs no coordination). Inline implementation of an item at
7
+ stage:implementing. Reads the design in the item body, implements and verifies it, records the
8
+ chosen execution capability, and continues through review to done unless the caller requests
9
+ stop-at-review. Prefer /agile-workflow:implement-orchestrator when ownership, sequencing, or
10
+ uncertainty makes delegated coordination useful. Triggers on "implement this inline", "implement
11
+ this item inline", "just do it inline", or a focused explicit delivery.
12
12
  ---
13
13
 
14
14
  # Implement
@@ -20,24 +20,21 @@ notes there as you work.
20
20
 
21
21
  ## Trigger
22
22
 
23
- `/agile-workflow:implement-orchestrator` is the default routing for implementing
24
- work, including lone stories. This skill is the **inline alternative** — same
25
- work, no sub-agent fan-out and it's the right call when:
26
-
27
- - The delivery is small and focused (a tiny tweak, a single-file change, a
28
- flag flip, landing code already in the working tree)
29
- - The deliverable is **no-code prose** (a `[prose]` feature docs, a
30
- convention / rule, research write-up, copy). The ≤50 LoC / ≤2 files cap is a
31
- *code-coordination* proxy; it does not apply to prose, which qualifies on
32
- **no-coordination** alone regardless of length. A 600-line convention rewrite
33
- is one authoring stride, not an orchestrated fan-out.
34
- - The user explicitly asks to implement inline / "do it yourself"
35
- - You're already mid-flow on this item and a hand-off would lose context
36
-
37
- When the work is multi-unit *code*, spans several files, or has sibling stories
38
- that could run in parallel, prefer the orchestrator. When in doubt on code work
39
- and nothing strongly points either way, the orchestrator is the safer default.
40
- Prose work is never a reason to reach for the orchestrator.
23
+ `/agile-workflow:implement-orchestrator` is the default routing for implementation
24
+ that benefits from coordination. This skill is the **inline alternative** — the
25
+ same lifecycle, owned by the current agent without implementation fan-out.
26
+ Choose between them from cohesion, ownership, sequencing, and uncertainty:
27
+
28
+ - Prefer inline when one owner can carry a cohesive change end to end, a handoff
29
+ would lose useful context, or the caller explicitly requests inline execution.
30
+ - Prefer the orchestrator when work has independent ownership surfaces,
31
+ dependency-driven sequencing, useful parallelism, or enough uncertainty that
32
+ isolated workers improve delivery.
33
+ - Tiny changes (roughly tens of lines or a couple of files) are a useful hint
34
+ toward inline execution, never a routing gate.
35
+ - **No-code prose** (`[prose]`) qualifies for inline execution on
36
+ **no-coordination** grounds regardless of length. Prose is never routed to the
37
+ orchestrator merely because it is long.
41
38
 
42
39
  Common phrases:
43
40
  - "implement story X", "implement this feature"
@@ -87,7 +84,7 @@ Autopilot pre-filters via `work-view --ready` so this should rarely fire under
87
84
  autopilot. Interactive callers will see the note and can choose to fix the
88
85
  dep or remove it.
89
86
 
90
- ### Phase 2.5: Choose delivery mode
87
+ ### Phase 2.5: Choose delivery mode and capability
91
88
 
92
89
  If the item carries `tags: [prose]`, use **prose mode** for the rest of this skill:
93
90
 
@@ -100,6 +97,13 @@ If the item carries `tags: [prose]`, use **prose mode** for the rest of this ski
100
97
 
101
98
  For non-prose items, continue in code mode.
102
99
 
100
+ For either mode, select execution capability from the item's risk and scope
101
+ unless the caller, a stable project convention, or an autopilot caller note
102
+ overrides it. Do not ask a routine model-tier question. Also resolve the
103
+ effective `review_weight`: explicit caller override, then project convention,
104
+ otherwise `standard`. Record both choices in Phase 7; the principles and review
105
+ skills own the weight matrix.
106
+
103
107
  ### Phase 3: Map integration points
104
108
 
105
109
  For `[prose]` items, map prose integration points instead:
@@ -206,6 +210,8 @@ Append (or update) an "Implementation notes" section in the item's body:
206
210
 
207
211
  ```markdown
208
212
  ## Implementation notes
213
+ - Execution capability: <choice and brief risk/scope rationale>
214
+ - Review weight: <effective value and source: caller, project, or default>
209
215
  - Files changed: <list>
210
216
  - Tests added: <list>
211
217
  - Discrepancies from design: <list with one-line explanation each, or "none">
@@ -234,42 +240,47 @@ Don't claim done if tests don't pass. A known gap reported is better than a hidd
234
240
 
235
241
  #### Test integrity
236
242
 
237
- When tests fail during verification, classify each failure before reacting:
238
-
239
- - **Bad test** (stale fixture, drifted assertion, broken mock, outdated
240
- snapshot) → fix in-session. Repairing the suite is part of the stride.
241
- - **Real production bug** surfaced by the test → park it via
242
- `/agile-workflow:park` with a short repro. Do NOT silently fix mid-pass.
243
- Once the suite is green, if the parked bug is small enough for a single
244
- stride, pick it up immediately with `/agile-workflow:scope` → design →
245
- implement. Larger bugs stay in backlog for prioritization.
246
- - **Pre-existing flake or unrelated regression** → park it. Don't bundle.
247
-
248
- NEVER game a test to make it pass. A failing test that documents *why* it
249
- fails (inline comment, `skip` linked to a backlog id, `xfail` with reason)
250
- is more honest than a green test that lies. No `expect(true).toBe(true)`,
251
- no asserting on whatever the code happens to return, no deleting a test
252
- as "flaky" without root-causing first.
243
+ Follow the project's test-integrity rules and the worker posture in
244
+ `../principles/references/subagents.md`: fix bad tests in-session, park real
245
+ production bugs, and never game a test to make it pass.
253
246
 
254
- ### Phase 9: Advance stage and commit
247
+ ### Phase 9: Commit and complete the lifecycle
255
248
 
256
249
  1. Edit the item's frontmatter: `stage: implementing → review`. PostToolUse hook
257
250
  bumps `updated:`.
258
- 2. Commit:
251
+ 2. Commit the implementation:
259
252
  ```bash
260
253
  git add <changed-files> <test-files> .work/active/<kind>s/<id>.md
261
254
  git commit -m "implement: <id>"
262
255
  ```
256
+ 3. Unless the caller explicitly requested `stop-at-review` (including "stop at
257
+ review", "leave at review", or "hand off for review") or a project convention
258
+ sets that boundary, invoke `/agile-workflow:review <id>` in the same invocation
259
+ and forward the effective `review_weight`. The review lane owns its required
260
+ context and verdict:
261
+ - approve: advance and commit `review → done`
262
+ - bounce: record `## Review findings`, return the item to `implementing`, and
263
+ report the bounce
264
+ - blocker: record `## Blocker` and report it without claiming completion
265
+
266
+ A weight of `none` skips independent review, but the review lane still requires
267
+ the same green verification and acceptance evidence before administrative
268
+ closure. Reaching `review` remains a real lifecycle transition; continuing
269
+ through it never means silently self-approving. With `stop-at-review`, finish
270
+ Phase 9 after the implementation commit and report that explicit boundary.
263
271
 
264
272
  ## Output
265
273
 
266
274
  In conversation:
267
- - **Implemented**: `<id>` advanced to `stage: review`
275
+ - **Implemented**: `<id>` advanced to `stage: done`, `stage: review` by explicit
276
+ override, or `stage: implementing` after a documented bounce
277
+ - **Review**: lane verdict, limitation, or blocker
268
278
  - **Files changed**: list
269
279
  - **Tests added**: list
280
+ - **Execution capability**: choice and rationale
281
+ - **Review weight**: effective value and source
270
282
  - **Discrepancies from design**: list (or "none")
271
283
  - **Adjacent issues parked**: backlog ids (or "none")
272
- - **Next**: `/agile-workflow:review <id>` to evaluate the change
273
284
 
274
285
  ## Guardrails
275
286
 
@@ -279,10 +290,10 @@ In conversation:
279
290
  When they disagree, adapt the implementation, document the why.
280
291
  - Implement fully or report a blocker. NEVER leave TODO comments or `unimplemented!`.
281
292
  - Don't add unrequested features. Adapt to repo reality freely; expand scope never.
282
- - Don't advance past `review` that's `/agile-workflow:review`'s job.
293
+ - Do not self-approve at `review`; invoke the review lane and honor its verdict.
283
294
  - If you discover a genuine design flaw, don't muscle through. Append a
284
295
  `## Implementation discovery` section, set stage back to `drafting`, and
285
296
  return. The design family will pick it up on the next pass.
286
297
  - Adjacent issues you notice get parked via `/agile-workflow:park`, not bundled.
287
- - Test integrity is non-negotiable. Fix bad tests in-session; park real
288
- production bugs; never make a test pass just to make it pass.
298
+ - Test integrity is non-negotiable: follow the project rules and worker posture;
299
+ fix bad tests, park real production bugs, and never game tests.