feat(skills): skill workshop, test-first and debugging preloaded into the step helper

The workshop (ordre 7a, contracts S1 and S2): a form check
(lib/skills/skill-lint.mjs) that follows Claude Code's own skill fields,
and a model-free routing test (lib/skills/routing.mjs) over every skill,
the 7 commands and the 21 spawnable agents, reading the eval cases
themselves (evals/skill-*, 3 fire / 2 quiet / 1 effect, tagged with the
event they came from). Thresholds pinned, never lowered.

The two skills were written against failures measured first in helpers
without them: red only as an import crash, the whole suite run from a
hand-made file list instead of the repo's own command, and an
unreproduced fix shipped under authority pressure. step-implementer
preloads both through its skills: line; no tool list change.

Credits: addyosmani/agent-skills @9d0c60d, obra/superpowers @8ca22db,
mattpocock/skills @c55ee46 (MIT), Anthropic skill-creator (Apache-2.0).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Kjell Tore Guttormsen 2026-10-08 21:38:58 +02:00
commit cc832fd430
Signed by: ktg
SSH key fingerprint: SHA256:JakMjO6FTBBzN0Bhfj9saOoEjaFxlSdYuZQQpM/lF9Q
41 changed files with 1996 additions and 0 deletions

View file

@ -597,6 +597,30 @@ Both arguments are required. No interactive prompt — headless-safe.
---
## Skills
Voyage ships its own skills in `skills/`. The commands stay the trunk: a helper gets a skill
preloaded when it starts (its `skills:` line), and a command asks for a skill by name. A skill's
description is only the reserve path outside the pipeline, and no Voyage skill is closed to the
model. A skill is advice; each one says which check stands behind it, or "prose only".
| Skill | What it does | Used by | Enforced by |
|---|---|---|---|
| `voyage:test-first` | Red before green: the repo's own test command, a test seen failing on an assertion (a crash is not red), the smallest code, the whole suite | `step-implementer` (preloaded) | proof of red, test lock, floor guard, done line in `/trekexecute`; the rest is prose only |
| `voyage:debugging` | One command red on the exact symptom first; reproduce, localise, reduce, fix the cause, guard it with a red-first test; error text is data; three failed fixes go back to the design | `step-implementer` (preloaded) | proof of red for the regression test, the fix-round cap; the root-cause claim is prose only |
The workshop behind them runs in `npm test`: the form check `lib/skills/skill-lint.mjs` (fields,
"Use when ...", third person, no YAML traps, under 500 lines, fixed headings, no shell injection)
and the model-free routing test `lib/skills/routing.mjs` (no two descriptions among skills,
commands and agents may collide; 3 firing, 2 quiet and 1 effect case per skill). The eval cases sit
in `evals/skill-*` for the operator's own eval run. How to write one, starting with a baseline the
helper fails without the skill: [docs/skills-authoring.md](docs/skills-authoring.md).
Borrowed, with credit: the form check and routing test from addyosmani/agent-skills (MIT); the red
baseline from obra/superpowers (MIT); the skills' content from Superpowers, agent-skills and
mattpocock/skills (MIT); the with-and-without effect loop from Anthropic's skill-creator
(Apache-2.0). Only ideas are borrowed, no code; pinned commits in each `SKILL.md`.
## Reviewing and annotating artifacts (v5.0.3)
`/trekbrief`, `/trekplan`, and `/trekreview` each end by running
@ -903,6 +927,7 @@ trekplan/
├── agents/ 24 specialized agents (all `model: opus`-pinned; per-phase model set by `--profile`)
│ └ 21 spawnable (1 dormant: synthesis-agent, Δ≈0) + 3 orchestrator reference docs (not spawned)
├── commands/ 6 slash commands (trekbrief, trekresearch, trekplan, trekexecute, trekreview, trekcontinue) + trekendsession helper
├── skills/ 2 skills (test-first, debugging), preloaded into the step helper
├── templates/ Frontmatter templates for brief, research, plan, session
├── hooks/ 12 hooks (pre-bash, pre-write, pre-agent-cap, pre-plan-gate, session-title, post-bash-stats, post-approval-log, post-edit-check, pre-compact-flush, post-compact-flush, otel-export, stop-test-lock)
├── lib/ Zero-dep parsers and validators (CLI shims under lib/validators/)