task-pipeline-skill 1.10.2 → 1.10.3
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 +39 -0
- package/CONTRIBUTING.md +8 -0
- package/SKILL-CARD.md +3 -3
- package/cursor/rules/task-pipeline.mdc +14 -0
- package/evals/RESULTS.md +2 -2
- package/package.json +1 -1
- package/plugins/task-pipeline/.claude-plugin/plugin.json +1 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/documentation.md +8 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/setup.md +3 -1
- package/plugins/task-pipeline/skills/task-pipeline/templates/docmap.md +4 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,44 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.10.3 — 2026-08-03
|
|
4
|
+
|
|
5
|
+
### Fixed — the cause behind five audits, rather than a sixth symptom
|
|
6
|
+
|
|
7
|
+
Five audit passes produced roughly thirty findings. Grouped by shape, **nine of them
|
|
8
|
+
were one missing row**: this repository ships a propagation matrix to every project it
|
|
9
|
+
touches and its own had no row for *adding a document*.
|
|
10
|
+
|
|
11
|
+
`adoption.md`, `setup.md`, `portability.md` and `learned.md` never reached the README
|
|
12
|
+
map · the manifest covered 14 of 26 references · the Cursor rule ran two releases
|
|
13
|
+
stale · `CONTRIBUTING.md` ran eight guards behind · `agent-sync` was doctrine in four
|
|
14
|
+
files and absent from the companion matrix · `templates/README.md` went stale. One
|
|
15
|
+
cause, nine symptoms, five audits — and **every check was green throughout**, because
|
|
16
|
+
a check can only walk the list it was given.
|
|
17
|
+
|
|
18
|
+
**The meta-row.** The most frequent change in any documented project is adding a
|
|
19
|
+
document, and it is the row nobody writes — so the matrix ends up unable to catch the
|
|
20
|
+
class it will meet most often. It is now:
|
|
21
|
+
|
|
22
|
+
- **step 0** of the matrix-building procedure in `references/documentation.md`, with
|
|
23
|
+
the measurement attached;
|
|
24
|
+
- a row in this repository's own `docs/DOCMAP.md`, first;
|
|
25
|
+
- a row in the seeded `templates/docmap.md`, guarded — a seeded matrix without it
|
|
26
|
+
fails the build;
|
|
27
|
+
- pass 4 of the entry audit in `references/setup.md`;
|
|
28
|
+
- a named step before the tag in `CONTRIBUTING.md` → *Releasing*, where the one cell
|
|
29
|
+
that is `review` — the Cursor rule — is called out, because no check can decide
|
|
30
|
+
whether a change alters how an agent behaves in a **foreign** project. That cell was
|
|
31
|
+
skipped twice, and the rule shipped two versions stale.
|
|
32
|
+
|
|
33
|
+
### The two causes no row can fix, stated rather than left implied
|
|
34
|
+
|
|
35
|
+
**Guards are written after a finding.** The doctrine's own rule — a class seen twice
|
|
36
|
+
becomes a script — is by construction one instance late, and twice a fix was scoped to
|
|
37
|
+
its instance rather than its class.
|
|
38
|
+
|
|
39
|
+
**Author and reviewer are the same person**, which `SKILL-CARD.md` already discloses.
|
|
40
|
+
Five audits are what a review would have been.
|
|
41
|
+
|
|
3
42
|
## v1.10.2 — 2026-08-03
|
|
4
43
|
|
|
5
44
|
### Fixed — the list of invariants was eight guards behind, and now checks itself
|
package/CONTRIBUTING.md
CHANGED
|
@@ -206,6 +206,14 @@ quote straddling a line-continuation is a citation nothing can find.
|
|
|
206
206
|
|
|
207
207
|
## Releasing (maintainers)
|
|
208
208
|
|
|
209
|
+
**Before the tag, walk `docs/DOCMAP.md`'s propagation matrix — starting at its first
|
|
210
|
+
row.** The guards cover most of it; the one cell that is `review` is
|
|
211
|
+
`cursor/rules/task-pipeline.mdc`, because no check can decide whether a change alters
|
|
212
|
+
how an agent behaves in a *foreign* project. That cell was skipped for two releases
|
|
213
|
+
and the rule shipped two versions stale. If the change would make an agent act
|
|
214
|
+
differently somewhere else, the Cursor rule is part of the change.
|
|
215
|
+
|
|
216
|
+
|
|
209
217
|
1. Bump the version in **all four** places (see invariant 1) and write the
|
|
210
218
|
`CHANGELOG.md` section — what changed and *why it mattered*, not a diff summary.
|
|
211
219
|
2. `npm test` green, commit, push.
|
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.10.
|
|
15
|
+
| **Version** | 1.10.3 |
|
|
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 (15 evals, 5 categories). **Never executed** — see [`evals/RESULTS.md`](evals/RESULTS.md) |
|
|
@@ -38,7 +38,7 @@ apply.
|
|
|
38
38
|
instruction surface, and every one is linked directly from `SKILL.md`.
|
|
39
39
|
2. Read `templates/docgate.sh` before seeding it; it is the only shipped script a
|
|
40
40
|
host project will run on its own repository.
|
|
41
|
-
3. Run `npm run test:all` —
|
|
41
|
+
3. Run `npm run test:all` — 63 guards, each with a negative self-test that plants a
|
|
42
42
|
defect and requires rejection.
|
|
43
43
|
4. Run `python3 evals/run.py` for the behavioural protocol, and read
|
|
44
44
|
`evals/RESULTS.md` for what has actually been observed.
|
|
@@ -54,7 +54,7 @@ apply.
|
|
|
54
54
|
- **Versions are pinned by git tag** and mirrored into `sshlg-skills`'s catalogue.
|
|
55
55
|
Rollback is `git checkout v<previous>` or pinning the previous plugin version;
|
|
56
56
|
the previous version is never deleted.
|
|
57
|
-
- **Behavioural evidence is missing, not merely thin.**
|
|
57
|
+
- **Behavioural evidence is missing, not merely thin.** 63 structural guards prove
|
|
58
58
|
the skill is well-formed. Until `evals/RESULTS.md` carries a dated run, nothing in
|
|
59
59
|
this repository proves it *behaves* — triggers correctly, stays quiet on a
|
|
60
60
|
question, or performs the steps it documents.
|
|
@@ -465,3 +465,17 @@ contradict it.
|
|
|
465
465
|
decision about what this project decided belongs in the project. The test for a rule
|
|
466
466
|
you are about to write down: does it name a path, a command or a person? If not, it is
|
|
467
467
|
the pipeline's, and leaving it in one repository is a fork nobody named.
|
|
468
|
+
|
|
469
|
+
## Writing a propagation matrix — start with the row nobody writes
|
|
470
|
+
|
|
471
|
+
The most frequent change in any documented project is **adding a document**, and that
|
|
472
|
+
is the row people leave out — so the matrix ends up unable to catch the class it will
|
|
473
|
+
meet most often. Write it first, before the change types you can think of:
|
|
474
|
+
|
|
475
|
+
> **A new document or rule** → every surface that must *learn it exists*: the index a
|
|
476
|
+
> reader opens, the map, any manifest, the agent-facing rules file. Checked by:
|
|
477
|
+
> whatever check can resolve those, or `review` with the reason none can.
|
|
478
|
+
|
|
479
|
+
Measured on the project this pipeline comes from: nine findings across five audits
|
|
480
|
+
were that one missing row, with every check green throughout — a check only walks the
|
|
481
|
+
list it was given.
|
package/evals/RESULTS.md
CHANGED
|
@@ -37,9 +37,9 @@ or it belongs in a check.
|
|
|
37
37
|
| Dated runs recorded | **0** | 2026-08-03 |
|
|
38
38
|
|
|
39
39
|
The bottom two numbers are the honest state of this skill's behavioural evidence.
|
|
40
|
-
Everything else in this repository is proven by
|
|
40
|
+
Everything else in this repository is proven by 63 structural guards that check the
|
|
41
41
|
*form*; these are the only checks that would speak to the *behaviour*, and they have
|
|
42
|
-
not been run yet. Printed here so "
|
|
42
|
+
not been run yet. Printed here so "63 of 63 green" is never read as "the skill is
|
|
43
43
|
known to work".
|
|
44
44
|
|
|
45
45
|
## Runs
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline-skill",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.3",
|
|
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.10.
|
|
5
|
+
"version": "1.10.3",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "ssheleg",
|
|
8
8
|
"url": "https://x.com/sshlg93"
|
|
@@ -195,6 +195,14 @@ nobody read is exactly the document nobody updated.
|
|
|
195
195
|
|
|
196
196
|
**Build it in five steps** (stage 0; extend it whenever a new doc class appears):
|
|
197
197
|
|
|
198
|
+
0. **Write the meta-row first: *a new document or rule*.** The most frequent change
|
|
199
|
+
in any documented project is adding a document, and it is the row nobody writes —
|
|
200
|
+
so the matrix ends up unable to catch the class it will meet most often. Its
|
|
201
|
+
*Update these* column is every surface that must **learn the thing exists**: the
|
|
202
|
+
index a reader opens, the map, any manifest, the agent-facing rules file.
|
|
203
|
+
Measured on the project this practice comes from: **nine findings across five
|
|
204
|
+
audits were that one missing row**, and the checks were green throughout, because
|
|
205
|
+
a check can only walk the list it was given.
|
|
198
206
|
1. List the project's doc classes — one line each: what is this the home of?
|
|
199
207
|
2. For each **change type** the project can undergo, name every document that must
|
|
200
208
|
move.
|
|
@@ -43,7 +43,9 @@ Seven passes, cheapest first. Each either reports `ok`, a finding, or **`skipped
|
|
|
43
43
|
3. **Propagation.** Every document named in an entry's `Consequences / affects:` line
|
|
44
44
|
cites that entry — ratcheted, so history is a printed number and not a wall of
|
|
45
45
|
failures ([`adoption.md`](adoption.md) → *Baseline the ratchets*).
|
|
46
|
-
4. **The matrix.**
|
|
46
|
+
4. **The matrix.** It contains the **meta-row** — *a new document or rule* — without
|
|
47
|
+
which it cannot catch the change type the project makes most often. Every row has
|
|
48
|
+
a *Checked by* cell — a check, or `review` **with the
|
|
47
49
|
reason no check can decide it**. An empty cell is a finding, not a blank.
|
|
48
50
|
5. **Terms.** Every term the doc map declares resolves to exactly one definition, and
|
|
49
51
|
the definition's home actually contains it. **Only declared terms are checked** —
|
|
@@ -62,6 +62,7 @@ column is a finding, not a blank.
|
|
|
62
62
|
|
|
63
63
|
| Change type | Update these | Checked by |
|
|
64
64
|
|---|---|---|
|
|
65
|
+
| **A new document or rule** — start with this row | every surface that must *learn* it exists: the index a reader opens, the map, any manifest, the agent-facing rules file | `<the check, or `review` with its reason>` |
|
|
65
66
|
| New/changed **decision** | `docs/DECISIONS.md` + every doc in its `Consequences / affects:` line | gate §5 propagation |
|
|
66
67
|
| Question **resolved** | `docs/OPEN_QUESTIONS.md` → `Resolved→DEC-####`, the owning topic doc | gate §2 ids · gate §8 status vocabulary |
|
|
67
68
|
| **Scope** change | `<roadmap>`, `<mvp>`, the register | review — scope is a judgement, not a shape |
|
|
@@ -69,6 +70,9 @@ column is a finding, not a blank.
|
|
|
69
70
|
| `<user-facing behaviour>` | `<scenarios>` + `<flows>` + `<screens>`, same change | `<ux linter>` |
|
|
70
71
|
| `<fill me>` | … | … |
|
|
71
72
|
|
|
73
|
+
|
|
74
|
+
**Start with the row above.** The most frequent change in any documented project is *adding a document*, and it is the row nobody writes — so the matrix ends up unable to catch the class it will meet most. On the project this practice comes from, nine findings across five audits were that one missing row.
|
|
75
|
+
|
|
72
76
|
## Gates
|
|
73
77
|
|
|
74
78
|
| Gate | Command | When | Blocking? |
|