task-pipeline-skill 0.17.1 → 1.1.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 (24) hide show
  1. package/CHANGELOG.md +244 -0
  2. package/README.md +314 -135
  3. package/cursor/rules/task-pipeline.mdc +91 -16
  4. package/package.json +7 -3
  5. package/plugins/task-pipeline/.claude-plugin/plugin.json +2 -2
  6. package/plugins/task-pipeline/commands/task-pipeline.md +16 -6
  7. package/plugins/task-pipeline/skills/task-pipeline/SKILL.md +39 -8
  8. package/plugins/task-pipeline/skills/task-pipeline/pipeline.example.json +9 -4
  9. package/plugins/task-pipeline/skills/task-pipeline/references/acceptance.md +40 -8
  10. package/plugins/task-pipeline/skills/task-pipeline/references/artifacts.md +23 -11
  11. package/plugins/task-pipeline/skills/task-pipeline/references/audit.md +224 -0
  12. package/plugins/task-pipeline/skills/task-pipeline/references/brainstorm.md +6 -4
  13. package/plugins/task-pipeline/skills/task-pipeline/references/build.md +8 -1
  14. package/plugins/task-pipeline/skills/task-pipeline/references/companion-skills.md +12 -2
  15. package/plugins/task-pipeline/skills/task-pipeline/references/conventions.md +17 -3
  16. package/plugins/task-pipeline/skills/task-pipeline/references/grill.md +37 -4
  17. package/plugins/task-pipeline/skills/task-pipeline/references/knowledge-sources.md +159 -0
  18. package/plugins/task-pipeline/skills/task-pipeline/references/loop-guard.md +8 -0
  19. package/plugins/task-pipeline/skills/task-pipeline/references/planning.md +5 -3
  20. package/plugins/task-pipeline/skills/task-pipeline/references/review.md +2 -1
  21. package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +73 -11
  22. package/plugins/task-pipeline/skills/task-pipeline/references/tdd.md +5 -0
  23. package/plugins/task-pipeline/skills/task-pipeline/templates/brief.md +24 -1
  24. package/plugins/task-pipeline/skills/task-pipeline/templates/carryover.md +23 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,249 @@
1
1
  # Changelog
2
2
 
3
+ ## v1.1.0 — 2026-07-29
4
+
5
+ **The pipeline could find a requirement that was named and lost. It could not find
6
+ one that was never named.** Every gate compares two things — and a contradiction has
7
+ two sides while **an absence has one**. Nothing in a diff between spec and plan
8
+ reveals the error path nobody specified, the entity nobody gave an owner, the
9
+ failure mode nobody thought of. This release adds the pass that can.
10
+
11
+ ### Added
12
+ - **`references/audit.md` — the audit ladder, cross-cutting.** Eight rungs of one
13
+ deliverable (requirement → decision → spec section → contract **and its failure
14
+ behavior** → plan task → change → **executed** test → surface/docs) and, more
15
+ importantly, the **seam between each pair**, each with its own question: did the
16
+ decision reach the spec; does the section say what happens when the contract
17
+ fails; does every contract have a task (stage 4's set-equality covers REQ→task and
18
+ nothing covers contract→task); did the DoD land in the diff; would this test still
19
+ pass with the production code deleted; can a user reach it and does a doc say so;
20
+ and finally — does what shipped satisfy the requirement's own *statement* rather
21
+ than the task's instructions.
22
+ - **Stage 10 now opens with the ladder walk, before the coverage table.** An absence
23
+ found there becomes a **new REQ row with its check**, and *then* the table is
24
+ written. Appending after the table is exactly how acceptance goes green over a
25
+ gap. Findings that belong to a lower layer go back to that layer (spec → stage 3,
26
+ plan → stage 4) instead of being patched in place at the last stage.
27
+ - **Findings are ordered by seam, never by file.** A file-ordered list reads as
28
+ noise; a seam-ordered one names *which layer of your own process is leaking*,
29
+ which is the part worth knowing.
30
+ - **Bottom-up, and that is not taste.** A missing artefact low on the ladder makes
31
+ everything above it meaningless — top-down you spend the pass polishing a surface
32
+ for a contract that does not exist. Bottom-up, the absence is finding #1 and the
33
+ six findings above it collapse into it.
34
+
35
+ ### Added — three rules that stop the audit becoming another loop
36
+ - **Every pass changes the axis, not the effort.** A searching loop does not
37
+ oscillate the way an editing loop does — it **converges**, because each pass edits
38
+ the corpus the next pass reads, so the newest edits are always the
39
+ least-reviewed text present and are what the next pass finds. Measured over seven
40
+ passes on a production repository: by pass six, ten of thirteen findings were
41
+ caused by pass five's own fixes, while the raw count still looked healthy. So the
42
+ doctrine requires **two counts per pass** — new findings, and self-inflicted ones —
43
+ and names the crossover as the signal to **rotate the axis**: seams down one
44
+ deliverable, then invariants across deliverables, then one class swept end to end.
45
+ - **A class that repeats twice becomes a gate, not a note.** Once is an incident;
46
+ twice is a category, and a category belongs in the host's lint or CI where nobody
47
+ has to remember it. Writing the third instance into the ledger is how a
48
+ mechanical defect class becomes permanent. Wired into the stage-5 fix loop too.
49
+ - **What can't be fixed now becomes a ratchet, never a TODO.** The carry-over ledger
50
+ is now defined as a *named, counted set that may only shrink, printed beside every
51
+ gate verdict* — `carry-over: 4 open (was 6) · unresolved: 0`. A TODO is invisible
52
+ until somebody opens the file; a ratchet sits next to the word `PASS` on every
53
+ run, so **"green" never reads as "verified"** — it reads as *"green, and here is
54
+ exactly what was not looked at"*. A ratchet that grew needs one sentence saying
55
+ why.
56
+
57
+ ### Added — the exit criterion that is usually skipped
58
+ - **A green result from an unproven check is worth nothing.** A deliverable is not
59
+ audited when somebody has read it; it is audited when every rung has its artefact
60
+ **and every check being relied on has fired at least once against a planted
61
+ defect.** This is `tdd.md`'s iron law — *if you didn't watch it fail, you don't
62
+ know it tests the right thing* — raised from one test to every gate, linter and
63
+ script in the run, and it is now part of the stage-10 gate. Checks written under
64
+ pressure lie in ways that read as success: a predicate that inspects the wrong
65
+ shape, a probe that reads its own over-deletion as a pass, a regex that misses the
66
+ word it searches for. All three pass loudly.
67
+
68
+ ### Changed
69
+ - `loop-guard.md` and `audit.md` now state their seam explicitly in both files: the
70
+ loop guard governs loops that **change** things and trips on oscillation; the
71
+ audit governs loops that **look** for things and trips on convergence. Different
72
+ failure, different exit, and an agent reading either one now learns when the other
73
+ applies.
74
+ - `tdd.md` names the generalisation of its own iron law; `build.md`'s fix loop gains
75
+ the repeats-twice rule; `templates/carryover.md` documents the ratchet contract.
76
+
77
+ ### Validator
78
+ - `references/audit.md` joins the built-in-doctrine set (must exist, must not be a
79
+ stub, must be reachable from `SKILL.md`).
80
+ - The shipped acceptance gate must require the ladder walk **and** say that an
81
+ absence becomes a new REQ row — a config where stage 10 only compares the REQ list
82
+ now fails.
83
+ - Both guards ship with CI negative self-tests, and both were proven the way this
84
+ release demands: defect planted, check watched failing, defect removed.
85
+
86
+ ## v1.0.0 — 2026-07-28
87
+
88
+ **1.0.** Eighteen releases in ten days added a stage, a requirement spine, a
89
+ decomposition pass and a loop guard; this one adds nothing and instead makes the
90
+ whole thing coherent enough to depend on. Every file was read against every other
91
+ file, the contradictions between them are fixed, and the repo now carries the
92
+ surface a stranger needs before they trust it.
93
+
94
+ What 1.0 promises: the stage flow (0 intake + 1→10), `pipeline.schema.json`, the
95
+ artifact layout in `references/artifacts.md`, and the two install paths are stable.
96
+ Breaking any of them means a 2.0.
97
+
98
+ ### Fixed — contradictions between doctrine files
99
+ - **Two names for one idea.** `brainstorm.md` told the agent to split an oversized
100
+ task into "sub-projects", each with its own spec→plan→build cycle;
101
+ `decomposition.md` — the file that actually owns the procedure — calls them
102
+ **modules**, cuts them at the end of stage 2, and runs stages 3→10 per module
103
+ against a committed module map. An agent that read the first file ran a
104
+ decomposition the second file's gate could not check. Brainstorm now hands off to
105
+ `decomposition.md` by name.
106
+ - **The same split, invented twice.** `planning.md` independently told stage 4 to
107
+ "split the spec into one plan per subsystem" — a second, unrecorded decomposition
108
+ two stages after the one with the gate and the map. A plan now covers exactly one
109
+ spec; a multi-subsystem spec arriving at stage 4 is a missed stage-2
110
+ decomposition and goes back there.
111
+ - **A hardcoded `main`.** `build.md` and `review.md` both built the final
112
+ whole-branch review package with `git merge-base main HEAD`, in a pipeline whose
113
+ stage-0 brief records the base branch precisely because it is not always `main`.
114
+ On any repo with a `master`, a `develop` or a stacked base, the final review saw
115
+ the wrong diff. Both now read the brief's base.
116
+ - **A five-status set that claimed to have four.** `acceptance.md` listed four
117
+ statuses, declared "there is no fifth status", then named `unknown` in the next
118
+ clause. Reworded so the mechanism is legible: four ways to close, and anything
119
+ that fits none of them is `unknown`, which fails the gate.
120
+ - **A version pin on someone else's contract.** The README and `stages.md` both
121
+ pinned super-ux's scenario format at "ux-contract v4" — the exact cross-repo
122
+ version skew this project ported its own doctrine in-house to avoid. Both now
123
+ point at the contract super-ux itself ships, with no version named here.
124
+ - **A blockquote where a sentence should be.** In `knowledge-sources.md` the
125
+ precedence chain `code > host docs and ADRs > the wiki > memory` wrapped so the
126
+ second line *began* with `>`, which Markdown renders as a block quote —
127
+ the rule about which source wins was visually broken in the file that defines it.
128
+ - **`skills[]` entries that resolve to nothing.** `pipeline.example.json` names
129
+ `task-pipeline:grill` and `host:lint` beside real skills, with no key anywhere for
130
+ the two prefixes. A host copying the example had no way to tell a notional label
131
+ from an installable skill. The convention is now stated in the config and in
132
+ `SKILL.md`: `task-pipeline:<name>` is this skill's own `references/<name>.md`,
133
+ `host:<name>` is the host project's command per `conventions.md`, everything else
134
+ is a real skill. Stage 3 also gained the `/ux` entry point and `/ux-lint`, which
135
+ the doctrine mandates and the config had omitted.
136
+ - **A repo tree that had drifted.** `references/artifacts.md`'s map of this
137
+ repository listed `templates/` outside the tree and missed several files.
138
+ - A broken ordered list in the Cursor rule (`3a.` is not a list marker) and a
139
+ `references/` index in `SKILL.md` that never mentioned `templates/`.
140
+
141
+ ### Added — the open-source surface
142
+ - `CONTRIBUTING.md` — dev setup, the repository layout, and **the nine invariants**
143
+ written out with the failure each one prevents: four-way version sync, the stage
144
+ list living on three machine-checked surfaces, every human-facing description
145
+ having to name the flow's final stage last, no hardcoded vendor model ids, no
146
+ unreachable reference file, no external provider in the default flow, stage 0 and
147
+ stage 10 staying manual, the frontmatter budget, and resolving links.
148
+ - `SECURITY.md` — what the executable surface actually is (two installers, a
149
+ validator, two workflows), private reporting with a 72-hour acknowledgement, and
150
+ an explicit scope: doctrine that would lead an agent to exfiltrate secrets, push
151
+ to an unnamed repo or deploy without a go **is** a security bug here.
152
+ - `CODE_OF_CONDUCT.md`, GitHub issue forms (bug / doctrine change, with routing to
153
+ super-ux and obsidian-wiki), and a pull-request template whose checklist is the
154
+ list of surfaces that drift.
155
+ - `CLAUDE.md` — house rules for any agent working in this repo, which is also what
156
+ this pipeline's own stage-0 harvest reads first: the commands, the branch and
157
+ commit policy, the invariants, and the docs that must be updated in the same
158
+ change. The project now dogfoods the convention it asks of every host.
159
+ - **Two validator guards, each with a CI negative self-test:** the open-source root
160
+ files must exist, and `npm test` must actually run the validator. A documented
161
+ check nobody can run is a check nobody runs.
162
+
163
+ ### Changed
164
+ - **README rewritten.** Same substance, ordered so it can be read: a one-paragraph
165
+ statement of the problem, a Mermaid diagram of the flow with gate types coloured,
166
+ the gate table, *what you get*, then a quickstart — before the deep sections.
167
+ Configuration, install/update and a documentation map now live in their own
168
+ places instead of interleaved with doctrine.
169
+ - Package, marketplace and plugin descriptions rewritten — shorter, and all three
170
+ now say the same thing about the same ten stages.
171
+ - npm metadata: a `test` script (`npm test`), a `bugs` URL, `homepage` at the README.
172
+ - `.worktrees/` is git-ignored — stage 5 creates them.
173
+
174
+ > The open-source surface above shipped in v0.18.1, hours earlier the same day;
175
+ > it is restated here because it is part of what 1.0 means.
176
+
177
+ ## v0.18.1 — 2026-07-28
178
+
179
+ Open-source hygiene pass — the repo is public, so the files a first-time
180
+ contributor looks for now exist, and the validator keeps them there.
181
+
182
+ ### Added
183
+ - `CONTRIBUTING.md`, `SECURITY.md`, `CODE_OF_CONDUCT.md`, issue forms and a
184
+ pull-request template.
185
+ - `CLAUDE.md` — house rules for any agent working in this repo: the commands, the
186
+ branch and commit policy, and the invariants that drift most often.
187
+ - The validator now requires the open-source root files, with a CI negative
188
+ self-test that deletes `CONTRIBUTING.md` and proves the check fails.
189
+
190
+ ### Changed
191
+ - npm metadata: a `test` script, a `bugs` URL, and `homepage` pointing at the
192
+ README. Package, marketplace and plugin descriptions rewritten so all three say
193
+ the same thing about the ten stages.
194
+ - `.worktrees/` is ignored — the pipeline creates them during stage 5.
195
+
196
+ ## v0.18.0 — 2026-07-28
197
+
198
+ The grill stops opening cold. Stage 0 now reads what the project already knows
199
+ about the task **before** the first question, checks every answer against it, and
200
+ stage 9 updates the same list at the end — the loop the pipeline was missing.
201
+
202
+ ### Added
203
+ - **Stage 0 phase 1: the knowledge harvest** (`references/knowledge-sources.md`).
204
+ Before question one, query what the project already knows about *this* task —
205
+ the code, `CLAUDE.md`/`AGENTS.md`, `CONTEXT.md` + `docs/adr/`, `docs/` and
206
+ `docs/ux/`, previous pipeline briefs and their carry-over ledgers, **the
207
+ knowledge wiki when one is installed**, and **any other repository or hosted doc
208
+ system the project names as its docs**. It is retrieval scoped by the task's own
209
+ nouns, not a read of everything: query, follow one hop, stop when the terms
210
+ return nothing new. Nothing is ever fetched on a guess — a doc repo is in scope
211
+ because the project names it.
212
+ - **The source ledger** — a required `## Knowledge sources` section in the brief
213
+ (source, what it says about this task, freshness, authority, "stale after this
214
+ run?"). `none found` is a valid, useful row: it tells the next run the search
215
+ happened and came back empty. Silence doesn't.
216
+ - **Answers are validated against the harvest** (`grill.md` → *Domain awareness*).
217
+ The cheap win is not re-asking what an ADR already answers. The one that matters:
218
+ **an answer nobody can check is a recollection** — people answer from memory
219
+ about systems they wrote a year ago, and a false premise adopted at stage 0 makes
220
+ every later gate pass honestly on it. So the grill quotes the source instead:
221
+ *"the March ADR says X, you just described Y — has it changed?"* The operator
222
+ **outranks every document, but only out loud** — an override quoted against its
223
+ source is a recorded decision, an unquoted one is an undetected divergence.
224
+ Precedence when sources disagree: **code > host docs/ADRs > wiki > memory.**
225
+ - **obsidian-wiki is the recommended knowledge base**
226
+ (https://github.com/ar9av/obsidian-wiki — Karpathy's LLM-wiki pattern), detected
227
+ via `~/.obsidian-wiki/config` or a resolving `wiki-query`/`wiki-update`.
228
+ Installed → queried in the harvest, synced with `wiki-update` at stage 9. Absent
229
+ → the preflight prints `pip install obsidian-wiki` / `obsidian-wiki setup --vault
230
+ <path>` **once** and the run continues. A recommendation, never a gate; a project
231
+ whose `CLAUDE.md` names a different knowledge base wins.
232
+ - **Stage 9 closes the loop:** the stage-0 ledger *is* its work list. Every source
233
+ the harvest read gets updated if this run changed or disproved it — including the
234
+ docs the grill already proved stale, which is why those conflicts are logged in
235
+ phase 2 instead of only being settled out loud. Docs living in **another
236
+ repository** are outward: propose the edit and get an explicit go, or carry it
237
+ over with the exact change written down. Never a direct push to a repo the task
238
+ didn't name.
239
+ - **Autonomy-sweep row** for doc sources beyond this repo, and whether stage 9 may
240
+ write to them — decided at intake, like every other outward action.
241
+ - **Three validator guards, each with a CI negative self-test:** the brief template
242
+ must keep its `## Knowledge sources` section; the stage-0 gate must require the
243
+ harvest *and* its ledger before the interview; the stage-9 gate must name that
244
+ ledger as its work list. A harvest with nowhere to land degrades silently back
245
+ into asking from memory, which is precisely the failure it exists to stop.
246
+
3
247
  ## v0.17.1 — 2026-07-28
4
248
 
5
249
  A full-repo consistency audit. v0.16.0 added a third review verdict and a tenth