@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.
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +8 -0
- package/docs/ARCHITECTURE.md +97 -57
- package/docs/SPEC.md +53 -2
- package/docs/VISION.md +24 -8
- package/package.json +1 -1
- package/scripts/tests/convert-content-integrity.test.sh +4 -4
- package/scripts/tests/convert-review-weight.test.sh +61 -0
- package/scripts/work-view.sh +1 -1
- package/skills/autopilot/SKILL.md +103 -71
- package/skills/convert/SKILL.md +28 -8
- package/skills/epic-design/SKILL.md +19 -70
- package/skills/feature-design/SKILL.md +18 -57
- package/skills/fix/SKILL.md +52 -34
- package/skills/implement/SKILL.md +61 -50
- package/skills/implement-orchestrator/SKILL.md +274 -587
- package/skills/perf-design/SKILL.md +11 -12
- package/skills/principles/SKILL.md +120 -378
- package/skills/principles/references/advisory-review.md +69 -0
- package/skills/principles/references/code-design.md +107 -0
- package/skills/principles/references/models.md +42 -63
- package/skills/prose-author/SKILL.md +9 -4
- package/skills/refactor-design/SKILL.md +3 -4
- package/skills/review/SKILL.md +132 -46
- package/work-view/crates/cli/.work-view-version +1 -1
- package/work-view/dist/aarch64-apple-darwin/work-view +0 -0
- package/work-view/dist/aarch64-unknown-linux-musl/work-view +0 -0
- package/work-view/dist/x86_64-apple-darwin/work-view +0 -0
- package/work-view/dist/x86_64-unknown-linux-musl/work-view +0 -0
package/skills/fix/SKILL.md
CHANGED
|
@@ -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
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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
|
|
16
|
-
substrate story that
|
|
17
|
-
|
|
18
|
-
|
|
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.**
|
|
132
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
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
|
|
151
|
-
|
|
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
|
|
164
|
-
- **
|
|
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
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
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
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
inline", or a
|
|
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
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
238
|
-
|
|
239
|
-
|
|
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:
|
|
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
|
-
-
|
|
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
|
|
288
|
-
|
|
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.
|