task-pipeline-skill 1.52.0 → 1.53.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.
Files changed (36) hide show
  1. package/CHANGELOG.md +79 -0
  2. package/CONTRIBUTING.md +3 -3
  3. package/HOW-IT-WORKS.md +1 -1
  4. package/README.md +15 -1
  5. package/SKILL-CARD.md +1 -1
  6. package/bin/lib/artifact-root.js +123 -0
  7. package/bin/lib/migrate-artifacts.js +221 -0
  8. package/bin/task-pipeline.js +58 -0
  9. package/cursor/rules/task-pipeline.mdc +5 -5
  10. package/package.json +4 -3
  11. package/plugins/task-pipeline/.claude-plugin/plugin.json +1 -1
  12. package/plugins/task-pipeline/commands/task-pipeline.md +3 -3
  13. package/plugins/task-pipeline/skills/task-pipeline/pipeline.example.json +2 -2
  14. package/plugins/task-pipeline/skills/task-pipeline/pipeline.schema.json +17 -1
  15. package/plugins/task-pipeline/skills/task-pipeline/references/acceptance.md +3 -3
  16. package/plugins/task-pipeline/skills/task-pipeline/references/adoption.md +1 -1
  17. package/plugins/task-pipeline/skills/task-pipeline/references/artifacts.md +43 -14
  18. package/plugins/task-pipeline/skills/task-pipeline/references/backlog.md +1 -1
  19. package/plugins/task-pipeline/skills/task-pipeline/references/continuity.md +1 -1
  20. package/plugins/task-pipeline/skills/task-pipeline/references/decomposition.md +1 -1
  21. package/plugins/task-pipeline/skills/task-pipeline/references/grill.md +2 -2
  22. package/plugins/task-pipeline/skills/task-pipeline/references/knowledge-sources.md +4 -4
  23. package/plugins/task-pipeline/skills/task-pipeline/references/learned.md +2 -2
  24. package/plugins/task-pipeline/skills/task-pipeline/references/planning.md +2 -2
  25. package/plugins/task-pipeline/skills/task-pipeline/references/portability.md +1 -1
  26. package/plugins/task-pipeline/skills/task-pipeline/references/progress.md +3 -3
  27. package/plugins/task-pipeline/skills/task-pipeline/references/retrospective.md +8 -8
  28. package/plugins/task-pipeline/skills/task-pipeline/references/setup.md +24 -1
  29. package/plugins/task-pipeline/skills/task-pipeline/references/spec.md +1 -1
  30. package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +11 -11
  31. package/plugins/task-pipeline/skills/task-pipeline/templates/README.md +6 -6
  32. package/plugins/task-pipeline/skills/task-pipeline/templates/backlog.md +1 -1
  33. package/plugins/task-pipeline/skills/task-pipeline/templates/brief.md +4 -4
  34. package/plugins/task-pipeline/skills/task-pipeline/templates/carryover.md +2 -2
  35. package/plugins/task-pipeline/skills/task-pipeline/templates/retro-archive.md +1 -1
  36. package/plugins/task-pipeline/skills/task-pipeline/templates/retro.md +2 -2
@@ -101,7 +101,7 @@ never that the work was skipped quietly.
101
101
  when one is built ([`knowledge-graph.md`](knowledge-graph.md): `graphify query` /
102
102
  `affected` / `god-nodes` answer *reach*, which is what grep cannot), `CLAUDE.md`,
103
103
  `CONTEXT.md`/ADRs, `docs/` + `docs/ux/`, past pipeline briefs and carry-over
104
- ledgers, **the retro's standing instructions and run stamps** (`docs/superpowers/retro.md`,
104
+ ledgers, **the retro's standing instructions and run stamps** (`<artifacts>/retro.md`,
105
105
  read **in full** — ten standing rows and ten stamps, both bounded **by a cap**, and they bind this
106
106
  run; stamp each instruction as it fires. Its *Recent log* is **queried** by the
107
107
  task's nouns, not read: uncapped narrative inside a binding source is what makes the
@@ -185,7 +185,7 @@ never that the work was skipped quietly.
185
185
  now (use it if installed; otherwise give the install line — see SKILL.md
186
186
  *Prerequisites*); this arms the stage-3 UX track.
187
187
  - **Artifact:** lock the resolved decisions into a **task brief** committed at
188
- `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` (scope, users/UI verdict,
188
+ `<artifacts>/specs/YYYY-MM-DD-<topic>-brief.md` (scope, users/UI verdict,
189
189
  constraints, assumptions, explicitly-deferred items, done-criteria) **plus the
190
190
  autonomy sweep's per-stage answers and the model decision**. Seed it from
191
191
  the skill's `templates/brief.md` skeleton — but only when absent, never
@@ -213,7 +213,7 @@ never that the work was skipped quietly.
213
213
  confirms the brief. Stop when a
214
214
  re-scan surfaces no new branches (don't grill past diminishing returns;
215
215
  reversible calls can be deferred with a note). Only then start stage 1.
216
- - **The verification ledger is read.** `docs/superpowers/verification.md` — the harvest
216
+ - **The verification ledger is read.** `<artifacts>/verification.md` — the harvest
217
217
  quotes **how many rows sit at `never`**, because that is the project's standing
218
218
  exposure and stage 0 is where it is cheapest to look ([`verification.md`](verification.md)).
219
219
  - **The run ledger is seeded and the header block is printed** — in that order, before
@@ -224,7 +224,7 @@ never that the work was skipped quietly.
224
224
  [`progress.md`](progress.md) derives the rail and the iteration counter from the
225
225
  `stage:` and `iter:` lines. The header goes out before the interview because a run
226
226
  that announces its position only at the end announced it to nobody.
227
- - **The board is read, or seeded.** `docs/superpowers/backlog.md` ([`backlog.md`](backlog.md)) — its **open count is quoted in the brief**, measured by a command at the top of the run rather than inherited from the last run's report. Absent ⇒ seeded from the template and said so; an empty board and no board are the same thing to work on, and only one of them can be appended to.
227
+ - **The board is read, or seeded.** `<artifacts>/backlog.md` ([`backlog.md`](backlog.md)) — its **open count is quoted in the brief**, measured by a command at the top of the run rather than inherited from the last run's report. Absent ⇒ seeded from the template and said so; an empty board and no board are the same thing to work on, and only one of them can be appended to.
228
228
 
229
229
  ## 1 — Docs study
230
230
  - **Freedom: medium** — which sources to fetch is judgement; grounding contracts on fetched docs is not ([`gates.md`](gates.md) → *Axis C*).
@@ -339,7 +339,7 @@ never that the work was skipped quietly.
339
339
  so a run designed a flow, then wrote its strings by taste and picked its values at the
340
340
  keyboard — and every gate in the pipeline reported green over both.
341
341
  - **Spec:** write the approved design to
342
- `docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit it. Lock all
342
+ `<artifacts>/specs/YYYY-MM-DD-<topic>-design.md` and commit it. Lock all
343
343
  shared contracts (types, schemas, signatures, file layout). For UI tasks the
344
344
  spec **embeds the UX layer**: links the validated scenario IDs, the flows and
345
345
  `SCR-` screens, the CJM stages the feature serves, and the UX
@@ -366,7 +366,7 @@ never that the work was skipped quietly.
366
366
  ## 4 — Plan
367
367
  - **Freedom: low** — the task format is prescribed and the REQ set-comparison is mechanical ([`gates.md`](gates.md) → *Axis C*).
368
368
  - **How it runs: [`planning.md`](planning.md)** — built into this skill →
369
- `docs/superpowers/plans/YYYY-MM-DD-<topic>.md` (same slug as the brief and the
369
+ `<artifacts>/plans/YYYY-MM-DD-<topic>.md` (same slug as the brief and the
370
370
  spec). Zero-context tasks, exact
371
371
  paths, complete code in every step, TDD steps with expected output, DoD each,
372
372
  dependency graph + parallel groups, non-overlapping file ownership, and the
@@ -510,7 +510,7 @@ never that the work was skipped quietly.
510
510
  its run id** — "CI is green" written without a command behind it prints the same
511
511
  whether it looked or not ([`gates.md`](gates.md) → *False success*).
512
512
  - **Write the verification row.** One line per REQ this run shipped, into
513
- `docs/superpowers/verification.md` ([`verification.md`](verification.md)) — the run,
513
+ `<artifacts>/verification.md` ([`verification.md`](verification.md)) — the run,
514
514
  the tag or commit it went out in, what the gate said, and `Human: never` unless the
515
515
  operator confirmed during the run. The verification above already happened; this is
516
516
  the only step that makes it answerable **later**, and `never` is a fact rather than a
@@ -581,7 +581,7 @@ never that the work was skipped quietly.
581
581
  brief carries.** Both directions: a shipped feature that entered no ledger and a
582
582
  ledger row about nothing are different failures ([`verification.md`](verification.md)).
583
583
  - **The ledger's open rows are resolved onto the board.** Every carry-over row still
584
- `open` leaves with a `B-NNN` id on `docs/superpowers/backlog.md`, and the ledger row
584
+ `open` leaves with a `B-NNN` id on `<artifacts>/backlog.md`, and the ledger row
585
585
  is updated to name it ([`backlog.md`](backlog.md)). Both directions, because they are
586
586
  different failures: a ledger row pointing at an id nobody issued, and a board row
587
587
  traceable to nothing. Measured before this was built: across the ledgers in
@@ -613,7 +613,7 @@ never that the work was skipped quietly.
613
613
  - **How it runs:** built in. Read the brief's REQ table, the carry-over ledger in
614
614
  full, the plan's task statuses, git log, the final suite output, stage-8 notes and
615
615
  stage-9 doc changes (plus `docs/ux/scenarios.md` + `/ux-lint` for UI tasks). Write
616
- `docs/superpowers/specs/YYYY-MM-DD-<topic>-acceptance.md` — one row per REQ,
616
+ `<artifacts>/specs/YYYY-MM-DD-<topic>-acceptance.md` — one row per REQ,
617
617
  status `verified` / `partial` / `deferred` / `dropped`, each with **evidence** (a
618
618
  passing test name, `file:line`, a command and its output, or a scenario ID).
619
619
  "Done" without evidence is not done: downgrade to `partial` and say so rather
@@ -636,7 +636,7 @@ never that the work was skipped quietly.
636
636
  the forgotten one: `git -C <submodule> push`, then
637
637
  `git add <submodule> && git commit`.
638
638
  - **The retrospective is the run's last act** ([`retrospective.md`](retrospective.md)),
639
- written to `docs/superpowers/retro.md` — one file per project, not per run. The
639
+ written to `<artifacts>/retro.md` — one file per project, not per run. The
640
640
  pipeline's gates are good at *this* run and blind across runs: the same class of
641
641
  failure can be caught, fixed and forgotten five times and nothing in the flow
642
642
  notices it is the same one. So, in this order: **stamp the run first** (one line,
@@ -666,7 +666,7 @@ never that the work was skipped quietly.
666
666
  with a floor, neither ever a target ([`gates.md`](gates.md) → *Disclosures*); **the
667
667
  retrospective is written — stamped first, then pruned, then the entry; the
668
668
  list at or under its cap, every deletion logged in the archive with its commit,
669
- entries older than five run stamps rotated into `docs/superpowers/retro/` **and the
669
+ entries older than five run stamps rotated into `<artifacts>/retro/` **and the
670
670
  stamp table itself held to ten — at the eleventh the oldest stamp rotates whole into
671
671
  the same archive, and both counts print beside the verdict** (the stamp table is read
672
672
  in full at stage 0, so *one line per run* is a slope the prune has to stop), the run
@@ -9,10 +9,10 @@ from `super-ux`.
9
9
 
10
10
  | Template | Seeded to | Stage |
11
11
  |---|---|---|
12
- | `brief.md` | `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md` | 0 — intake grill |
13
- | `carryover.md` | `docs/superpowers/specs/YYYY-MM-DD-<topic>-carryover.md` | 0 seeds, all stages append, 10 reads |
14
- | `verification.md` | `docs/superpowers/verification.md` | 8 writes a row per shipped REQ, 10 requires it, a human fills `Human` |
15
- | `backlog.md` | `docs/superpowers/backlog.md` | 0 seeds when absent, any stage appends, 10 resolves and re-derives |
12
+ | `brief.md` | `docs/evidence/specs/YYYY-MM-DD-<topic>-brief.md` | 0 — intake grill |
13
+ | `carryover.md` | `docs/evidence/specs/YYYY-MM-DD-<topic>-carryover.md` | 0 seeds, all stages append, 10 reads |
14
+ | `verification.md` | `docs/evidence/verification.md` | 8 writes a row per shipped REQ, 10 requires it, a human fills `Human` |
15
+ | `backlog.md` | `docs/evidence/backlog.md` | 0 seeds when absent, any stage appends, 10 resolves and re-derives |
16
16
  | `run.md` | `.task-pipeline/run.md` — **git-ignored**, one per run | 0 seeds it, every gate appends a verdict, every repeating pass a `touch:` line |
17
17
  | `context.md` | `CONTEXT.md` at the repo root (or per context) | 0 — grill, domain awareness |
18
18
  | `adr.md` | `docs/adr/NNNN-<slug>.md` | 0 — grill, hard-to-reverse decisions |
@@ -23,8 +23,8 @@ from `super-ux`.
23
23
  | `hygiene.sh` | `scripts/check-hygiene.sh` | 0 seeds it · **5 runs it after every task** · 6 and 9 run it · 10 proves it |
24
24
  | `hooks.example.json` | the project's `.claude/settings.json` | 0 — offered, never installed silently |
25
25
  | `routing-rule.md` | the operator's `CLAUDE.md` — **offered by `setup`, never written silently** | 0 / `setup` |
26
- | `retro.md` | `docs/superpowers/retro.md` — **one per project, not per run** | 10 writes (stamp → prune → entry), 0 reads it in full |
27
- | `retro-archive.md` | `docs/superpowers/retro/YYYY-QN.md` | 10 rotates into it, 0 **queries** it |
26
+ | `retro.md` | `docs/evidence/retro.md` — **one per project, not per run** | 10 writes (stamp → prune → entry), 0 reads it in full |
27
+ | `retro-archive.md` | `docs/evidence/retro/YYYY-QN.md` | 10 rotates into it, 0 **queries** it |
28
28
 
29
29
  The documentation-track templates (`docmap.md`, `decisions.md`,
30
30
  `open-questions.md`, `docgate.sh`) are seeded **together**, and they are useful at
@@ -1,6 +1,6 @@
1
1
  # Backlog — <project>
2
2
 
3
- > **The board.** One per project, at `docs/superpowers/backlog.md`. Unlike the
3
+ > **The board.** One per project, at `docs/evidence/backlog.md`. Unlike the
4
4
  > carry-over ledger, this file is **mutable**: priority is re-derived, state changes,
5
5
  > rows close. What may never happen silently is a row *disappearing* — a closed row is
6
6
  > marked closed, with the commit that closed it.
@@ -1,7 +1,7 @@
1
1
  # Task brief — <topic>
2
2
 
3
3
  > Stage-0 intake artifact. The grill fills this in and the operator confirms it
4
- > before stage 1. Copy to `docs/superpowers/specs/YYYY-MM-DD-<topic>-brief.md`.
4
+ > before stage 1. Copy to `docs/evidence/specs/YYYY-MM-DD-<topic>-brief.md`.
5
5
  > Every field is a resolved decision or an explicit deferral — no open unknowns.
6
6
 
7
7
  - **Date:** YYYY-MM-DD
@@ -58,11 +58,11 @@ source is a recorded decision, an unquoted one is an undetected divergence.
58
58
  - **Doc repos / hosted doc systems this project names:** … (or `none`)
59
59
  - **Knowledge wiki:** installed / not installed
60
60
  ([obsidian-wiki](https://github.com/ar9av/obsidian-wiki); recommended, never a gate)
61
- - **Retro, in force:** `docs/superpowers/retro.md` — none / N standing instructions
61
+ - **Retro, in force:** `docs/evidence/retro.md` — none / N standing instructions
62
62
  (read **in full**, together with the run stamps and the recent-log window; list
63
63
  which ones bind this run, and stamp each as it fires **with the commit** — that
64
64
  stamp is the only evidence behind stage 10's cold-retirement rule)
65
- - **Retro archive:** `docs/superpowers/retro/` — **queried** by this task's nouns;
65
+ - **Retro archive:** `docs/evidence/retro/` — **queried** by this task's nouns;
66
66
  what it returned: … (or `nothing`)
67
67
  - **Code graph:** built / installed-not-built / not installed
68
68
  ([graphify](https://github.com/Graphify-Labs/graphify); recommended, never a gate —
@@ -139,7 +139,7 @@ is not neutral — it is a scheduled interruption.
139
139
  | 7 Deploy | **Authorization** — standing go, or ask every time? | … |
140
140
  | 8 Post-deploy | Where logs / health live (app name, endpoint, workflow) | … |
141
141
  | 9 Docs+wiki | Which module docs / runbooks this change updates; wiki sync yes/no; **code-graph refresh yes/no** (`/graphify . --update`); which stale ledger rows get fixed | … |
142
- | 10 Acceptance | Who signs off; where deferred REQs get tracked (issue tracker / backlog); **retro file** — `docs/superpowers/retro.md` present? which standing instructions bind this run? | … |
142
+ | 10 Acceptance | Who signs off; where deferred REQs get tracked (issue tracker / backlog); **retro file** — `docs/evidence/retro.md` present? which standing instructions bind this run? | … |
143
143
 
144
144
  > **Deploy authorization has a hard floor.** A standing go counts only if it is
145
145
  > **specific** — named target and named preconditions ("staging, once lint and the
@@ -1,7 +1,7 @@
1
1
  # Carry-over ledger — <topic>
2
2
 
3
3
  > **Append-only.** Any stage may add a row; nobody edits or deletes one. Committed
4
- > to `docs/superpowers/specs/YYYY-MM-DD-<topic>-carryover.md` beside the brief, and
4
+ > to `docs/evidence/specs/YYYY-MM-DD-<topic>-carryover.md` beside the brief, and
5
5
  > read in full by stage 10 (acceptance).
6
6
  >
7
7
  > **The rule: deferred out loud is forgotten.** If it isn't written here, it wasn't
@@ -24,7 +24,7 @@
24
24
  "Forgot" is a legitimate and useful answer here.
25
25
  - **REQ** — the requirement it belongs to, or `—` if it's outside the REQ spine.
26
26
  - **Where it lives now** — an issue id, a **board id** (`B-NNN` on
27
- `docs/superpowers/backlog.md`), or `dropped` with the operator's agreement. Those are
27
+ `docs/evidence/backlog.md`), or `dropped` with the operator's agreement. Those are
28
28
  the three ways a row is *settled*.
29
29
  **Three values are not settled and all three block the stage-10 gate:** `unresolved`,
30
30
  `open`, and a bare `backlog` — the last one because it names a place without naming a
@@ -1,7 +1,7 @@
1
1
  # Retro archive — <project> · <YYYY>-Q<N>
2
2
 
3
3
  **Append-only. Queried, never read in full.** The in-force list
4
- (`docs/superpowers/retro.md`) is capped at ten and read whole at stage 0; this file
4
+ (`docs/evidence/retro.md`) is capped at ten and read whole at stage 0; this file
5
5
  is where entries and retirements go when they age out, so pruning stops losing
6
6
  things. Doctrine: `references/retrospective.md`.
7
7
 
@@ -8,7 +8,7 @@ Doctrine: `references/retrospective.md`.
8
8
 
9
9
  **What stage 0 reads in full:** *Standing instructions*, *Run stamps* and *Recent
10
10
  log* — all three are bounded by construction, which is why the cap is not
11
- negotiable. The **archive** (`docs/superpowers/retro/YYYY-QN.md`) is *queried* by
11
+ negotiable. The **archive** (`docs/evidence/retro/YYYY-QN.md`) is *queried* by
12
12
  the task's nouns and never read end to end.
13
13
 
14
14
  ## Standing instructions (max 10 — in force right now)
@@ -33,7 +33,7 @@ row goes — the cap is not negotiable, ranking is.
33
33
 
34
34
  ## Recent log — entries from the last five run stamps (newest first)
35
35
 
36
- Older entries and every retirement **move** to `docs/superpowers/retro/YYYY-QN.md`
36
+ Older entries and every retirement **move** to `docs/evidence/retro/YYYY-QN.md`
37
37
  at the prune. Moving is not deleting: the archive is append-only and holds the
38
38
  incident forever, so pruning the in-force list costs no knowledge. This section
39
39
  stays short precisely so that reading it in full at stage 0 stays cheap.