refactor: drop dev-cycle-profile.yml for conventions + CLAUDE.md facts

The profile was never parsed — it was prose the skill bodies told the model to read, so most slots were dead, constant across every project, or fiction (the whole pipeline block, including the "tdd is opt-in" claim, was enforced by nothing).

Split it in two: constants become fixed conventions named directly by the skills (new docs/conventions.md), and the few genuinely per-project facts move to each project's CLAUDE.md under '## Skills plugin: project facts'. tdd/fieldtest/docwriter are now always available; the only behavioural toggle left is spec auto-sign.

Delete docs/profile-schema.md and templates/project-profile.yml; add docs/conventions.md and a project-facts section to templates/CLAUDE.md.fragment; rewrite all SKILL/agent prose and the pipeline/design/migration/README/INSTALL docs accordingly.
This commit is contained in:
2026-06-13 16:30:02 +02:00
parent 268ee705f4
commit 26e9630496
40 changed files with 752 additions and 894 deletions
+25 -22
View File
@@ -30,15 +30,15 @@ Triggers:
- **maintain** — a term is to be added, changed, or removed in an
existing glossary, by the user any time, or by boss to record reality
(a term already in consistent use, or a drift boss just resolved).
- **bootstrap** — a project has terminology to pin but no glossary
(`paths.glossary` unset, or naming an empty file), and the user invokes
the build.
- **bootstrap** — a project has terminology to pin but no glossary (no
glossary path in its CLAUDE.md project facts, or the named file is
empty), and the user invokes the build.
Skip or refuse:
- maintain asked with no `paths.glossary` slot set: there is nowhere to
write. Stop and instruct the user to set `paths.glossary` (see
`../docs/profile-schema.md` § `paths`) first.
- maintain asked when the project's CLAUDE.md project facts name no
glossary path: there is nowhere to write. Stop and instruct the user to
record the glossary path in the project's CLAUDE.md first.
- bootstrap asked on a glossary that already has entries: do not clobber.
Stop with the entry count and recommend maintain.
- bootstrap asked in a boss (autonomous) session: refuse. bootstrap is
@@ -68,9 +68,10 @@ If the mode is ambiguous, ask once; do not guess.
## The maintain procedure
1. **Read the glossary and the convention.** Read the file named by
`paths.glossary` and `../docs/glossary-convention.md`. If
`paths.glossary` is unset, stop (see When to Use / Skipping).
1. **Read the glossary and the convention.** Read the glossary file the
project's CLAUDE.md project facts name, plus
`../docs/glossary-convention.md`. If the project facts name no glossary
path, stop (see When to Use / Skipping).
2. **Take the proposed entry.** A canonical-term heading, an `**Avoid:**`
line, and a definition — the user's, or (in a boss session bound by
record-reality) the term already in consistent use.
@@ -96,14 +97,15 @@ If the mode is ambiguous, ask once; do not guess.
## The bootstrap procedure (user-only)
1. **Guard.** Read `paths.glossary`. If it names a file that already has
entries, stop with the count and recommend maintain. If the slot is
unset, continue, and note the build will also propose setting the slot
(see `../docs/profile-schema.md` § `paths`).
1. **Guard.** Read the glossary path from the project's CLAUDE.md project
facts. If it names a file that already has entries, stop with the count
and recommend maintain. If the project facts name no glossary path,
continue, and note the build will also propose recording one in the
project's CLAUDE.md.
2. **Partition the prose surface into slices** — the readable prose of
the project: `docs/`, `README.md`, the design ledger (if
`paths.design_ledger` is set), the spec directory. One slice per
coherent group, sized so a single agent can sweep it.
the project: `docs/`, `README.md`, the project's design ledger, if it
has one (its CLAUDE.md project facts), the spec directory `docs/specs`.
One slice per coherent group, sized so a single agent can sweep it.
3. **Fan out one `glossary-extractor` per slice.** Dispatch the read-only
agent (`agents/glossary-extractor.md`) with the carrier: the slice and
the extraction task. Agents do not nest; the skill curates each
@@ -121,9 +123,10 @@ If the mode is ambiguous, ask once; do not guess.
6. **Handle the unresolved.** A contested cluster the user does not
resolve is left OUT of the glossary and noted as deferred. Never coin a
term to fill a gap.
7. **Assemble UNSTAGED.** Write the conforming glossary to
`paths.glossary` (proposing the slot value if it was unset), in the
convention's flat per-term-block format. Leave it unstaged for review.
7. **Assemble UNSTAGED.** Write the conforming glossary to the path the
project's CLAUDE.md project facts name (proposing one if none is
recorded yet), in the convention's flat per-term-block format. Leave it
unstaged for review.
## Iron Law
@@ -167,9 +170,9 @@ BOOTSTRAP IS USER-ONLY. NEVER COIN A TERM — RECORD REALITY.
- **Rules (the single source):** `../docs/glossary-convention.md`
format, reading obligation, write-rule, glossary-as-SoT. This skill
applies these; it restates none.
- **Slot semantics:** `../docs/profile-schema.md` § `paths` the
`paths.glossary` slot (set ⇒ standing reading for every role; unset ⇒
no-op).
- **Glossary path:** the project's CLAUDE.md project facts — when they
name a glossary path it is standing reading for every role; when they
name none, this skill has nowhere to write and bootstrap proposes one.
- **Agent dispatched:** `agents/glossary-extractor.md` — read-only
per-slice prose extraction, fanned out in bootstrap.
- **Glossary instance (dogfood):** `../docs/glossary.md` — this plugin's
+5 -4
View File
@@ -19,10 +19,11 @@ slice and merges their reports.
## Standing reading list
Read everything in the standing reading list passed in the carrier before
doing anything else. A set `paths.glossary` is part of every role's
standing reading, and `docs/glossary-convention.md` defines what a
glossary-worthy concept term is versus incidental vocabulary — consult it
so you report concepts, not every capitalised word.
doing anything else. When the project's CLAUDE.md project facts name a
glossary path, that glossary is standing reading for every role, and
`docs/glossary-convention.md` defines what a glossary-worthy concept term
is versus incidental vocabulary — consult it so you report concepts, not
every capitalised word.
## Carrier contract