task-pipeline-skill 1.48.0 → 1.49.2
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
CHANGED
|
@@ -1,5 +1,94 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.49.2 — four stray table rows, and a list that promised three and delivered two
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- **The body shipped a rendering defect.** Four rows of the built-in-doctrine
|
|
8
|
+
index — `artifacts.md`, `companion-skills.md`, `conventions.md`,
|
|
9
|
+
`model-tiering.md` — sat between the grill's bullet list and `## How to run`
|
|
10
|
+
with no header row above them. GFM needs a delimiter row to open a table, so an
|
|
11
|
+
agent reading `SKILL.md` saw four lines of literal pipes. Moved back into the
|
|
12
|
+
index where their shape says they belong.
|
|
13
|
+
|
|
14
|
+
- **"Three things the grill does beyond clarifying the request" listed two.** The
|
|
15
|
+
displaced rows had taken the third with them. Restored from
|
|
16
|
+
`references/grill.md`, which still carries it in full: **the design
|
|
17
|
+
destination** — which Figma file, in which team, decided at stage 0 rather than
|
|
18
|
+
at drawing time. Restored rather than renumbered, because the reference proves
|
|
19
|
+
what was lost; renumbering to "two" would have made the body agree with itself
|
|
20
|
+
and disagree with the doctrine.
|
|
21
|
+
|
|
22
|
+
Guards: 309 → **309**. Property checks: 9 → 9. This release restores content and
|
|
23
|
+
adds no enforcement — the defect was structural markdown, which no guard here
|
|
24
|
+
reads, and the count is stated because two probes read the newest section.
|
|
25
|
+
|
|
26
|
+
### Note on the token budget
|
|
27
|
+
|
|
28
|
+
The body is **5969 tokens against a 5000 cap**, up 108: the restored bullet costs
|
|
29
|
+
more than the four moved rows save. Correctness first — a body promising three
|
|
30
|
+
items and delivering two, with four lines rendering as garbage, is worse than
|
|
31
|
+
being over a soft cap it was already over.
|
|
32
|
+
|
|
33
|
+
The gap is now measured rather than estimated, so it stops being re-litigated by
|
|
34
|
+
prose trims. Three attempts at trimming prose produced 35 tokens between them. The
|
|
35
|
+
whole doctrine index is 555 tokens — 320 in the descriptive column, 235 in the
|
|
36
|
+
reference names — so compressing every description to nothing closes at most **26%
|
|
37
|
+
of the 1219-token gap**, and less than that if the stage numbers stay, which are
|
|
38
|
+
the navigational value. The remainder lives in the Stages table's `Gate` column
|
|
39
|
+
(`grep -c '^\*\*Gate' references/stages.md` → **0**: the body is its only home)
|
|
40
|
+
and in the five-step operating procedure. Closing the gap therefore means moving
|
|
41
|
+
content into references — a restructuring of the skill, not a trim.
|
|
42
|
+
|
|
43
|
+
## v1.49.1 — the entry states the count its own guard reads
|
|
44
|
+
|
|
45
|
+
### Fixed
|
|
46
|
+
|
|
47
|
+
- **v1.49.0 tagged but never released.** Its CHANGELOG entry stated no
|
|
48
|
+
`Guards: N → **M**` count, so two of this repo's negative self-tests had
|
|
49
|
+
nothing to patch and reported `PLANT DID NOT LAND` — the release job failed
|
|
50
|
+
after the tag was already public. Same class as v1.45.0, and the guard worked
|
|
51
|
+
exactly as designed: a probe that cannot plant says so instead of passing.
|
|
52
|
+
|
|
53
|
+
The count is unchanged because v1.49.0 added a feature, not enforcement.
|
|
54
|
+
|
|
55
|
+
Guards: 309 → **309**. Property checks: 9 → 9. The installer change is
|
|
56
|
+
behavioural and carries no new guard; the count is stated because two probes read
|
|
57
|
+
the newest section and a count-shaped sentence with no count is the one case
|
|
58
|
+
where silence and agreement look the same.
|
|
59
|
+
|
|
60
|
+
### Changed
|
|
61
|
+
|
|
62
|
+
- Everything in v1.49.0, which never shipped: the installer now offers the
|
|
63
|
+
family's routing block via `npx sshlg-skills routers --member task-pipeline`,
|
|
64
|
+
scoped so it repairs only this skill's own section. See that entry below.
|
|
65
|
+
|
|
66
|
+
## v1.49.0 — the installer stops leaving the skill unrouted
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
|
|
70
|
+
- **The installer now offers the family's routing block** (closing B-06 in the
|
|
71
|
+
umbrella). Until now only `super-ux` delegated: install this skill on its own
|
|
72
|
+
and no router was written at all, so an agent had the skill and no rule saying
|
|
73
|
+
when to reach for it. The bundle installer wrote all eight, which is why
|
|
74
|
+
nothing looked broken — the gap only opened for someone installing one member.
|
|
75
|
+
|
|
76
|
+
Delegated to `npx sshlg-skills routers --member task-pipeline` rather than
|
|
77
|
+
reimplemented, for three reasons:
|
|
78
|
+
|
|
79
|
+
- The block describes what the machine actually has. A lone member rendering
|
|
80
|
+
the whole thing would print a table for routers nobody installed.
|
|
81
|
+
- `--member` scopes the write to this skill's own section. Verified by damaging
|
|
82
|
+
two sections of a real block and running this installer: its own was
|
|
83
|
+
repaired, the other left exactly as it was.
|
|
84
|
+
- The launcher is the only writer that copies the operator's global instruction
|
|
85
|
+
file before touching it. That file has no version control behind it.
|
|
86
|
+
|
|
87
|
+
`--no-install` keeps it from silently downloading a package nobody asked for.
|
|
88
|
+
When the launcher is absent the command is printed instead of failing: ending
|
|
89
|
+
an install in an error over an optional follow-up reads as a failed install.
|
|
90
|
+
Both paths were exercised.
|
|
91
|
+
|
|
3
92
|
## v1.48.0 — a screen is the frame implemented, and four mechanisms this project owed itself
|
|
4
93
|
|
|
5
94
|
**A screen is the frame, implemented.** Until now Figma was an address and a link: the
|
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.49.2 |
|
|
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/bin/task-pipeline.js
CHANGED
|
@@ -54,6 +54,39 @@ function installOne(label, src, dest, isDir, force) {
|
|
|
54
54
|
console.log(`Installed ${label} -> ${dest}`);
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
/**
|
|
58
|
+
* Ask the family launcher to write the routing block, for this member only.
|
|
59
|
+
*
|
|
60
|
+
* Delegated rather than reimplemented, for three reasons. The block describes
|
|
61
|
+
* what the machine actually has, so a lone member rendering the whole thing
|
|
62
|
+
* would produce a table for routers nobody installed. `--member` limits this to
|
|
63
|
+
* the `task-pipeline` section and leaves everyone else's alone, which is what
|
|
64
|
+
* lets the bundle and a single installer both write. And the launcher is the
|
|
65
|
+
* only writer that copies the operator's global instruction file before touching
|
|
66
|
+
* it — that file has no version control behind it, and two defects in this
|
|
67
|
+
* family's history destroyed it.
|
|
68
|
+
*
|
|
69
|
+
* `--no-install` keeps this from silently downloading a package the user did not
|
|
70
|
+
* ask for. When the launcher is absent, print the one command instead of
|
|
71
|
+
* failing: an installer that ends in an error because an OPTIONAL follow-up is
|
|
72
|
+
* missing reads as a failed install.
|
|
73
|
+
*/
|
|
74
|
+
function offerRouters() {
|
|
75
|
+
const { spawnSync } = require('child_process');
|
|
76
|
+
const r = spawnSync(
|
|
77
|
+
'npx',
|
|
78
|
+
['--no-install', 'sshlg-skills', 'routers', '--member', 'task-pipeline'],
|
|
79
|
+
{ stdio: 'inherit', shell: process.platform === 'win32' }
|
|
80
|
+
);
|
|
81
|
+
if (r.status !== 0) {
|
|
82
|
+
console.log(
|
|
83
|
+
'\nTo have this skill apply by default in every project, add the\n' +
|
|
84
|
+
"family's routing block to your agent's global instructions:\n\n" +
|
|
85
|
+
' npx --yes sshlg-skills routers --member task-pipeline\n'
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
57
90
|
function main(argv) {
|
|
58
91
|
const args = argv.slice(2);
|
|
59
92
|
if (args.includes('--help') || args.includes('-h')) {
|
|
@@ -115,6 +148,7 @@ Rerun with --force if you deliberately want the plain copy instead.`);
|
|
|
115
148
|
false,
|
|
116
149
|
force
|
|
117
150
|
);
|
|
151
|
+
offerRouters();
|
|
118
152
|
return 0;
|
|
119
153
|
}
|
|
120
154
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline-skill",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.49.2",
|
|
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 closes with evidence, a work board and a verification ledger that outlive a run, an exposure line naming what shipped unconfirmed, a progress rail computed from the project's own config, a loop guard whose review ceiling measures rather than stops, and stage-3 tracks for what a product does, how it sounds and how it looks. Two modes need no task: `checkup` (what is unverified) and `setup` (audit existing docs). Retro insights can publish upstream as issues, opt-in and redacted.",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.49.2",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "ssheleg",
|
|
8
8
|
"url": "https://x.com/sshlg93"
|
|
@@ -73,6 +73,10 @@ gate stops until it is installed.
|
|
|
73
73
|
| run-wide · the work-list **between** runs, and how its priority is computed | `references/backlog.md` |
|
|
74
74
|
| run-wide · whether a **human** ever confirmed what shipped, and when | `references/verification.md` |
|
|
75
75
|
| run-wide · how much unconfirmed work has piled up, and what to look at first | `references/exposure.md` |
|
|
76
|
+
| any stage · Where each artifact belongs | `references/artifacts.md` |
|
|
77
|
+
| preflight · Companion skills and their fallbacks | `references/companion-skills.md` |
|
|
78
|
+
| 6–10 · How the host project's CLAUDE.md is read | `references/conventions.md` |
|
|
79
|
+
| preflight · Model map, ids and the override | `references/model-tiering.md` |
|
|
76
80
|
|
|
77
81
|
**Optional bridge.** An equivalent skill set the operator already runs (e.g.
|
|
78
82
|
`superpowers:brainstorming` / `writing-plans` / `subagent-driven-development` /
|
|
@@ -152,10 +156,12 @@ Three things the grill does beyond clarifying the request:
|
|
|
152
156
|
mid-flight (test/lint/deploy commands, branch policy, log locations, docs
|
|
153
157
|
targets, the model decision, deploy authorization). Autonomy is bought here or
|
|
154
158
|
not at all — an unasked question is a scheduled interruption.
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
+
- **The design destination**, when the project designs in Figma: *which* file, in
|
|
160
|
+
which team — a stage-0 decision, never a stage-3 side effect. Left to drawing
|
|
161
|
+
time the question is answered by whoever is holding the brush, and the answer is
|
|
162
|
+
usually *create a new file* — which is how a project ends up with three files
|
|
163
|
+
called some variation of "Design", each with real work in it and no way to tell
|
|
164
|
+
which one the team opens.
|
|
159
165
|
|
|
160
166
|
## How to run
|
|
161
167
|
|