task-pipeline-skill 1.24.0 → 1.25.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 +62 -0
- package/CONTRIBUTING.md +23 -5
- package/SKILL-CARD.md +1 -1
- package/package.json +1 -1
- package/plugins/task-pipeline/.claude-plugin/plugin.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,67 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.25.0
|
|
4
|
+
|
|
5
|
+
### One check over one number, made into a registry over the class
|
|
6
|
+
|
|
7
|
+
The "compute, never restate" guard has existed since v1.5.0 and covered exactly one
|
|
8
|
+
number: the count of negative self-tests, added because two living documents claimed 46
|
|
9
|
+
after the suite reached 50. It stayed one check while the same class went stale in five
|
|
10
|
+
more places, each fixed as an instance and none of them gating the shape:
|
|
11
|
+
|
|
12
|
+
- `README.md` and `SKILL.md` described `learned.md` as *"fifteen rules"* against a table
|
|
13
|
+
of twenty-one;
|
|
14
|
+
- `evals/RESULTS.md` ratcheted zero dated runs directly above a dated run, and directly
|
|
15
|
+
on top of `evals/run.py`, which computes one and had been printing it for five releases;
|
|
16
|
+
- `docs/DOCMAP.md` claimed two standing instructions against the retro's four;
|
|
17
|
+
- the version invariant was **named** *four-way* on four surfaces while `test/validate.py`
|
|
18
|
+
enforced five;
|
|
19
|
+
- `SKILL-CARD.md` counted "the 26 files under `references/`" against a directory of 28.
|
|
20
|
+
|
|
21
|
+
`audit.md` says a class seen twice belongs in a script. Six instances later, the file that
|
|
22
|
+
enforces that rule had not applied it to itself.
|
|
23
|
+
|
|
24
|
+
**The check is now a registry.** One row per claim class, each naming the pattern that
|
|
25
|
+
recognises the claim in prose, the command that computes the truth, and the incident that
|
|
26
|
+
earned the row. Adding a class costs one line instead of one more bespoke block nobody
|
|
27
|
+
generalises.
|
|
28
|
+
|
|
29
|
+
Two limits are stated rather than implied, because both were learned the hard way this
|
|
30
|
+
release:
|
|
31
|
+
|
|
32
|
+
- **A quoted number is a citation, not a claim.** `evals/RESULTS.md` narrates its own
|
|
33
|
+
stale `"Dated runs recorded 0"` while explaining the incident, and the first version of
|
|
34
|
+
the registry rejected it. The exemption is a quoted span — deterministic, with no marker
|
|
35
|
+
vocabulary to grow per incident, which is the same drift this release is about.
|
|
36
|
+
- **A count of an enumeration inside one sentence is not computable from outside it.**
|
|
37
|
+
`CLAUDE.md` said *"the stage list lives on nine surfaces"* above a list of ten. There is
|
|
38
|
+
no command that can check that, so it is **deleted** rather than gated, and the line now
|
|
39
|
+
says why.
|
|
40
|
+
|
|
41
|
+
**Numbers are read as digits and as words.** The incident that named the second row was a
|
|
42
|
+
word — `README.md` said *"fifteen rules"*, not *"15 rules"* — so a digit-only registry could
|
|
43
|
+
not have caught the defect it is named after. Adding word forms immediately found **four
|
|
44
|
+
live claims** the patterns had been skipping in silence: *"the ten canons"*, on four
|
|
45
|
+
surfaces. All four are correct, and none of them was being checked.
|
|
46
|
+
|
|
47
|
+
That correction matters more than the fix, because the first draft of this entry claimed
|
|
48
|
+
every dormant class was dormant *because the number had been deleted*. For the canons class
|
|
49
|
+
that was simply untrue: it was dormant because the check could not see the form the claim
|
|
50
|
+
was written in. **A dormant state is a claim about the corpus, and it needs the same
|
|
51
|
+
evidence as any other** — this one was plausible, unverified, and wrong.
|
|
52
|
+
|
|
53
|
+
**Every class reports `ok` or `dormant` beside the verdict.** Four of six are dormant now,
|
|
54
|
+
and that is measured rather than assumed: v1.23.1 and v1.24.0 deleted those numbers rather
|
|
55
|
+
than correcting them, which git history confirms. A registry reporting green over classes
|
|
56
|
+
it never looked at would be precisely the false success it exists to catch. It is a ratchet
|
|
57
|
+
against re-introduction more than a finder of present drift, and the verdict line says so
|
|
58
|
+
every run.
|
|
59
|
+
|
|
60
|
+
One false positive was measured and removed before shipping: `CONTRIBUTING.md` narrates
|
|
61
|
+
that its invariant list *"was eight guards behind"*, which is a **lag**, not a count of the
|
|
62
|
+
suite. The pattern excludes it explicitly rather than tolerating a noisy check — a gate that
|
|
63
|
+
cries wolf is switched off by the third person who hits it.
|
|
64
|
+
|
|
3
65
|
## v1.24.0
|
|
4
66
|
|
|
5
67
|
### A rule that reached one file, and the guard shape that let it
|
package/CONTRIBUTING.md
CHANGED
|
@@ -143,10 +143,11 @@ list is a second source that goes stale on the next heading.
|
|
|
143
143
|
A citation of the form `file.md → *Section*` is checked against the target's headings. The
|
|
144
144
|
link checker proves the file resolves; only this proves the pointer is not false.
|
|
145
145
|
|
|
146
|
-
**13. Numbers stated in living documents are computed, not restated.**
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
**13. Numbers stated in living documents are computed, not restated.** Superseded in
|
|
147
|
+
substance by **invariant 35**, which turns this single guard-count comparison into a
|
|
148
|
+
registry over the class. Kept as the entry point because it is the shorter statement of
|
|
149
|
+
the law and the one people look for; the mechanism, the exemptions and the scope live in
|
|
150
|
+
35, and this text names no surfaces of its own so the two cannot disagree.
|
|
150
151
|
|
|
151
152
|
**14. Every relative link in `README.md` resolves inside the published package.**
|
|
152
153
|
`package.json` → `files[]` must ship whatever the README points at, or the link
|
|
@@ -279,7 +280,24 @@ A paragraph that narrates the old order as the defect is exempt by an explicit m
|
|
|
279
280
|
list, not by a heuristic.
|
|
280
281
|
*(guard: `enumerates the retro's acts as`)*
|
|
281
282
|
|
|
282
|
-
**35.
|
|
283
|
+
**35. A number a living document states is compared against the command that computes
|
|
284
|
+
it — from a registry, not a bespoke check.** This began as one check over one number, and
|
|
285
|
+
stayed one check while the same class went stale in five more places: `learned.md`
|
|
286
|
+
described as *"fifteen rules"* against a table of twenty-one, `evals/RESULTS.md` ratcheting
|
|
287
|
+
zero dated runs directly above a dated run and directly on top of a tool computing one,
|
|
288
|
+
`docs/DOCMAP.md` claiming two standing instructions against four, and the version invariant
|
|
289
|
+
**named** *four-way* while five surfaces were enforced. Each was fixed as an instance; the
|
|
290
|
+
class was never gated — `audit.md`'s own rule, unapplied to the file that enforces it.
|
|
291
|
+
Adding a class is now **a row**, naming the claim pattern, the computing command and the
|
|
292
|
+
incident that earned it. Two things are stated rather than implied: a **quoted** number is a
|
|
293
|
+
citation of what a document said and is exempt, so a register can narrate its own drift;
|
|
294
|
+
and a count of an enumeration inside one sentence is not computable from outside it, so
|
|
295
|
+
those are **deleted** instead — `CLAUDE.md`'s stage-list line says so where it used to carry
|
|
296
|
+
one. Every class prints `ok`/`dormant` beside the verdict, because a registry reporting
|
|
297
|
+
green over classes it never looked at is the false success it exists to catch.
|
|
298
|
+
*(guard: `— derive the number or delete it. This class is registered `)*
|
|
299
|
+
|
|
300
|
+
**36. Every invariant above names the guard that enforces it, and that guard exists.**This list claims to be *what the validator enforces*; it was eight guards behind when
|
|
283
301
|
an audit measured it. A claim of enforcement is now checked like any other claim.
|
|
284
302
|
*(guard: `whose message does not appear in`)* — and a cited literal must lie inside
|
|
285
303
|
a **single** string in `test/validate.py`: the check reads that file as text, so a
|
package/SKILL-CARD.md
CHANGED
|
@@ -12,7 +12,7 @@ harmless.
|
|
|
12
12
|
|---|---|
|
|
13
13
|
| **Purpose** | Runs a substantial task through ten gated delivery stages — intake grill, docs study, brainstorm, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs+registers, acceptance — refusing to advance until each gate passes |
|
|
14
14
|
| **Owner** | ssheleg ([github.com/ssheleg/task-pipeline](https://github.com/ssheleg/task-pipeline)) |
|
|
15
|
-
| **Version** | 1.
|
|
15
|
+
| **Version** | 1.25.0 |
|
|
16
16
|
| **Surface** | Claude Code (filesystem skill + plugin) and the vercel `skills` CLI. **Not** uploaded to the Skills API; custom Skills do not sync across surfaces |
|
|
17
17
|
| **Dependencies** | None required. Optional: `context7` (MCP), `figma` (MCP), super-ux, agent-sync, graphify, obsidian-wiki. Every stage's doctrine ships in-repo; the one conditional requirement is super-ux for the stage-3 UX track on a user-facing task |
|
|
18
18
|
| **Evaluation status** | Suite authored, 5 categories. One recorded run, **self-observed by the author**; **zero blind runs on zero of three models** — the split, and the numbers, live in [`evals/RESULTS.md`](evals/RESULTS.md) and are computed by `evals/run.py` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline-skill",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0",
|
|
4
4
|
"description": "Full-cycle delivery pipeline for coding agents: a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine ships inside the skill — no companion plugin required. This package is the installer CLI.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"task-pipeline": "bin/task-pipeline.js"
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "task-pipeline",
|
|
3
3
|
"displayName": "Task Pipeline",
|
|
4
4
|
"description": "Runs a substantial task through a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine is built into the skill — no companion plugin required — with typed auto/manual gates, a frozen requirement spine that must close with evidence, a loop guard that breaks churn, one provider-agnostic model confirmed up front, and an optional super-ux UX track for user-facing work.",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.25.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "ssheleg",
|
|
8
8
|
"url": "https://x.com/sshlg93"
|