82cd9eafb2
The fence-label -> parser fact, the specify/grounding-check/planner parse gates, the parse-trace attestation, and all their cross-references served a single real user (ailang). Convention over configuration: the generic machinery is removed plugin-wide; the one consumer carries an equivalent project-local directive in its own CLAUDE.md. Archive under docs/plans and docs/specs left intact as time documents.
157 lines
8.3 KiB
Markdown
157 lines
8.3 KiB
Markdown
# skills
|
|
|
|
A self-contained set of development-cycle skills and agents for
|
|
Claude Code. Originally distilled from the AILang project's
|
|
in-tree `skills/` directory and generalised so it can carry the
|
|
same discipline across any project.
|
|
|
|
The plugin is **mechanics**: pipeline shape, hard-gates, TDD,
|
|
RED-first bug fixing, agent-template, working-tree-as-quarantine,
|
|
status protocol. It does **not** know your project's paths,
|
|
build commands, or domain-specific contracts. Those few facts live
|
|
in the project's own `CLAUDE.md` under a `## Skills plugin: project
|
|
facts` heading; everything else is a fixed convention (see
|
|
`docs/conventions.md`). There is no separate profile file.
|
|
|
|
## What's in the box
|
|
|
|
The pipeline skills, each with the agents it primarily dispatches:
|
|
|
|
| Skill | Trigger | Output | Mandatory? |
|
|
|-------|---------|--------|------------|
|
|
| `brainstorm` | New cycle with an open design | ratified design handed to `specify` (writes no spec itself) | Optional discovery front-end |
|
|
| `specify` | Design settled in sources, or handed over by `brainstorm` | spec under `docs/specs` | Hard-gate before plan |
|
|
| `planner` | New iteration within an open cycle | plan under `docs/plans` | Hard-gate before implement |
|
|
| `implement` | Plan exists | code + tests, uncommitted in working tree | Standard iteration path |
|
|
| `audit` | Cycle closing OR baseline drift suspected | drift report + regression report | Mandatory at cycle close |
|
|
| `debug` | Bug observed | RED test in working tree + cause analysis | Mandatory RED-first for any bug |
|
|
| `tdd` | Test-specifiable feature / issue (third entry path, alongside `brainstorm` and `specify`) | RED executable-spec in working tree → `implement` mini-mode | Standard entry path; bounces to `brainstorm` on a design fork |
|
|
| `fieldtest` | Orchestrator-dispatched post-audit | example fixtures + friction spec | Per-cycle optional; milestone fieldtest is the closing gate for a surface-touching milestone |
|
|
| `docwriter` | API surface stable across N cycles | rustdoc / docstring sweep | Optional |
|
|
| `boss` | User types `/boss` | autonomous-orchestrator session — dispatches the other skills until done-state or bounce-back; can optionally sign specs in the user's place (opt-in, see below) | User-invoked, never auto-dispatched |
|
|
|
|
Two further **utility skills** are invoked on demand rather than as
|
|
pipeline phases: `issue` (file or update a tracker item) and `glossary`
|
|
(build or maintain the project glossary — see `docs/glossary-convention.md`).
|
|
|
|
One **conversational skill** stands outside the pipeline entirely:
|
|
`pseudo` (typed `/pseudo`) switches replies into commented,
|
|
human-readable pseudocode for explaining code — each answer opens
|
|
with a source-file-and-line anchor, marks notable steps with
|
|
reference markers that are pointing handles for the user (not
|
|
footnotes — explanations stay inline at the code, never in a
|
|
legend below), sketches the layout of the data structures the
|
|
code touches alongside the
|
|
flow, reduces the irrelevant to stubs, and omits low-level
|
|
mechanics. The pseudocode leans on the source language's idiom
|
|
in a language-tagged fence so it renders with syntax
|
|
highlighting, and keeps comments sparse — on their own line and
|
|
only where the code is not self-explanatory. Prose is allowed
|
|
only in a supporting role — the pseudocode block stays the
|
|
centre of every answer. It dispatches no agents.
|
|
|
|
The vocabulary is fixed. A **cycle** is one round in the
|
|
pipeline graph, and its sub-unit is an **iteration**. A
|
|
**milestone** is a distinct, higher axis — a Gitea milestone
|
|
that spans potentially many cycles and closes only when
|
|
the work it promised is complete *and* functional (see
|
|
`docs/pipeline.md` § Milestone-close gate). A cycle close is a
|
|
loop step; it is never a milestone close. A single design-ledger
|
|
entry is a **contract**. (A project with a glossary may pin
|
|
different domain nomenclature — see `docs/glossary-convention.md`.)
|
|
|
|
## The two-layer split
|
|
|
|
This repo (the **plugin**) carries everything that is universal:
|
|
|
|
- Pipeline form: `design → plan → execute → review → close`
|
|
- Hard-gates between phases
|
|
- TDD as an independent inner-loop discipline
|
|
- RED-first bug fixes
|
|
- Agent template (frontmatter / Iron Law / standing reading /
|
|
process / status / output / rationalisations / red flags)
|
|
- Status protocol: `DONE / DONE_WITH_CONCERNS / PARTIAL / BLOCKED
|
|
/ NEEDS_CONTEXT`
|
|
- Working-tree-as-quarantine and only-orchestrator-commits
|
|
- main HEAD sacrosanct
|
|
- No nested subagent dispatch (Claude Code platform constraint;
|
|
Opus 4.8 Workflows fan out at the top level but do not lift it)
|
|
- No orphan agents
|
|
|
|
The constants that used to be configurable but were the same in
|
|
every project are now **fixed conventions** — named directly in the
|
|
skills and documented once in `docs/conventions.md`: spec dir
|
|
`docs/specs`, plan dir `docs/plans`, 4-digit per-directory naming,
|
|
the vocabulary above, standing reading (`CLAUDE.md` + `git log -10`),
|
|
git discipline, Gitea + `closes #N`, and the whole pipeline graph.
|
|
|
|
The handful of facts that genuinely vary per project live in the
|
|
project's own `CLAUDE.md` under `## Skills plugin: project facts`:
|
|
|
|
- Code roots; build / test / lint / doc-build commands
|
|
- Regression scripts; architect sweeps
|
|
- Design ledger / glossary / contracts / models / bench / public
|
|
interface / fieldtest-examples paths
|
|
- Per-role standing reading
|
|
- Issue-tracker repo slug + list / show commands
|
|
- Spec auto-sign (off by default)
|
|
|
|
The per-fact reference is the table in `docs/conventions.md`; the
|
|
copy-and-fill template is `templates/CLAUDE.md.fragment`. There is no
|
|
profile file and no parser — the skills read these facts from the
|
|
project's `CLAUDE.md`, which is standing reading on every dispatch.
|
|
|
|
### Spec auto-sign (opt-in)
|
|
|
|
By default a `specify` dispatch in a `/boss` session pauses at its
|
|
user-review gate for the user's signature — the human approves every
|
|
spec before any plan is built. A project that wants `/boss` to run
|
|
unattended across spec boundaries can opt in by enabling spec
|
|
auto-sign in its CLAUDE.md project facts.
|
|
|
|
With it on, the orchestrator may sign a spec in the user's place, but
|
|
never on its own confidence. Signing requires two stages to clear:
|
|
|
|
- **Objective gates** — the precondition gate and a `grounding-check`
|
|
`PASS` with no human override.
|
|
- **A unanimous adversarial panel** — the `spec-skeptic` agent
|
|
dispatched five times in parallel, one per lens (`criterion`,
|
|
`grounding`, `scope-fork`, `ambiguity`, `plan-readiness`), each
|
|
trying to *refute* the spec. All five must return `SOUND`.
|
|
|
|
A `BLOCK` is never signed over. The five lenses split by what a `BLOCK`
|
|
means: an *editorial* one (`criterion`, `ambiguity`, `plan-readiness` —
|
|
the spec is under-articulated) the orchestrator repairs in a bounded
|
|
loop (edit, re-run the objective gates, re-dispatch all five lenses, up
|
|
to 2 rounds); a *design* one (`scope-fork`, `grounding` — the ground is
|
|
not settled), an `INFRA_ERROR`, any objective gate not green, or an
|
|
exhausted budget falls back to the human sign-off pause the spec would
|
|
have hit anyway. Re-dispatching all five lenses every round is the
|
|
backstop that stops an editorial repair from quietly settling a design
|
|
question. When a fork was settled in-context but the seeding issue still
|
|
lists it open, `specify` records the resolution as a provenance-bearing
|
|
reconciliation comment on the issue (Step 1.5), which the `scope-fork`
|
|
juror reads via the project's issue show command — closing the blind spot where
|
|
the in-context entry path could otherwise never clear that lens. On a
|
|
clean sign the orchestrator commits the spec
|
|
(`(boss-signed)` in the subject), sends a mandatory informational notify
|
|
that names the signed capability and invites a veto, and continues to
|
|
`planner` without stopping. A later veto is a forward correction, never
|
|
a history rewind. See `specify/SKILL.md` Step 6,
|
|
`specify/agents/spec-skeptic.md`, and `boss/SKILL.md` §"Spec auto-sign".
|
|
|
|
## Install
|
|
|
|
See `INSTALL.md`. In short: clone, run `install.sh`, then add a
|
|
`## Skills plugin: project facts` section to each project's
|
|
`CLAUDE.md` (template in `templates/CLAUDE.md.fragment`).
|
|
|
|
## Status
|
|
|
|
The migration from AILang's in-tree `~/dev/ailang/skills/` into
|
|
this plugin is complete — the pipeline skills, the `specify` and
|
|
`tdd` entry paths, the `boss` orchestrator, and the utility and
|
|
conversational skills documented above have all landed.
|
|
`docs/migration.md` records the repo-layout convention and the
|
|
per-skill and per-agent authoring checklists.
|