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.
- package/CHANGELOG.md +79 -0
- package/CONTRIBUTING.md +3 -3
- package/HOW-IT-WORKS.md +1 -1
- package/README.md +15 -1
- package/SKILL-CARD.md +1 -1
- package/bin/lib/artifact-root.js +123 -0
- package/bin/lib/migrate-artifacts.js +221 -0
- package/bin/task-pipeline.js +58 -0
- package/cursor/rules/task-pipeline.mdc +5 -5
- package/package.json +4 -3
- package/plugins/task-pipeline/.claude-plugin/plugin.json +1 -1
- package/plugins/task-pipeline/commands/task-pipeline.md +3 -3
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.example.json +2 -2
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.schema.json +17 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/acceptance.md +3 -3
- package/plugins/task-pipeline/skills/task-pipeline/references/adoption.md +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/artifacts.md +43 -14
- package/plugins/task-pipeline/skills/task-pipeline/references/backlog.md +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/continuity.md +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/decomposition.md +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/grill.md +2 -2
- package/plugins/task-pipeline/skills/task-pipeline/references/knowledge-sources.md +4 -4
- package/plugins/task-pipeline/skills/task-pipeline/references/learned.md +2 -2
- package/plugins/task-pipeline/skills/task-pipeline/references/planning.md +2 -2
- package/plugins/task-pipeline/skills/task-pipeline/references/portability.md +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/progress.md +3 -3
- package/plugins/task-pipeline/skills/task-pipeline/references/retrospective.md +8 -8
- package/plugins/task-pipeline/skills/task-pipeline/references/setup.md +24 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/spec.md +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +11 -11
- package/plugins/task-pipeline/skills/task-pipeline/templates/README.md +6 -6
- package/plugins/task-pipeline/skills/task-pipeline/templates/backlog.md +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/templates/brief.md +4 -4
- package/plugins/task-pipeline/skills/task-pipeline/templates/carryover.md +2 -2
- package/plugins/task-pipeline/skills/task-pipeline/templates/retro-archive.md +1 -1
- 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** (
|
|
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
|
-
|
|
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.**
|
|
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.**
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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/
|
|
13
|
-
| `carryover.md` | `docs/
|
|
14
|
-
| `verification.md` | `docs/
|
|
15
|
-
| `backlog.md` | `docs/
|
|
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/
|
|
27
|
-
| `retro-archive.md` | `docs/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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/
|
|
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.
|