SKILLS.md: belts per seat × skill; belts are badges (#8)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01H4upF5LVwmPDDqrhdUfnXh
This commit is contained in:
teahubxyzandClaude Opus 5.5 committed 2026-10-14 22:24:09 +00:00
1 parent 16bac3848e
commit b433a8220c
1 file changed
+17 -12
+17 -12
View File
@@ -45,25 +45,29 @@ Every marketing route reads `.agents/product-marketing.md` first; the skills do
## Ledger
All seven admitted 2026-10-14 by manual scan (no hidden Unicode, no HTML comments, no install or update steps, no
`allowed-tools`); CI lint pending. Upstream tree = the skill's folder upstream at that ref, `evals/` included (we keep
evals out of the skill folder). No belt evidence yet.
evals out of the skill folder). Belts are per seat (Luna · Sol · Astra); no evidence yet.
| Skill | Belt | Upstream @ ref → tree | Ver | Writes | Watch |
| Skill | Belts L·S·A | Upstream @ ref → tree | Ver | Writes | Watch |
|---|---|---|---|---|---|
| brag-slim | ⬜ | latent-spaces/brag@069432c → e87c5bb | — | `brag-output/` | Built for Opus 5.5; headless browser + render; downloads the target site's assets |
| product-marketing | ⬜ | coreyhaines31/marketingskills@c7d7dfb → 1bca9cf | 2.1.0 | `.agents/product-marketing.md` | The one product-truth file; don't start a second (e.g. `PRODUCT.md`) |
| launch | ⬜ | marketingskills@c7d7dfb → adfac43 | 2.2.0 | — | Points at unvendored `cro`, `emails`, `popups`, `signup`, `onboarding`, `video` |
| social | ⬜ | marketingskills@c7d7dfb → 2bde174 | 2.3.4 | `.agents/listening-sources.md` (setup) | Listening `curl`s Reddit, HN, Bluesky, YouTube: untrusted text (route `listen`) |
| content-strategy | ⬜ | marketingskills@c7d7dfb → 874a880 | 2.1.3 | — | Points at unvendored `seo-audit`, `ai-seo`, `programmatic-seo`, `site-architecture` |
| copywriting | ⬜ | marketingskills@c7d7dfb → 08b81e8 | 2.2.0 | — | Hands email and popup copy to unvendored `emails`, `popups` |
| marketing-loops | ⬜ | marketingskills@c7d7dfb → 8685f11 | 1.4.0 | `.agents/loops/<loop>.json`, `.log` | Loop-owned state; no PII in state or logs |
| brag-slim | — · — · ⬜ | latent-spaces/brag@069432c → e87c5bb | — | `brag-output/` | Built for Opus 5.5 (Astra only); headless browser + render; downloads the target site's assets |
| product-marketing | ⬜ ⬜ ⬜ | coreyhaines31/marketingskills@c7d7dfb → 1bca9cf | 2.1.0 | `.agents/product-marketing.md` | The one product-truth file; don't start a second (e.g. `PRODUCT.md`) |
| launch | ⬜ ⬜ ⬜ | marketingskills@c7d7dfb → adfac43 | 2.2.0 | — | Points at unvendored `cro`, `emails`, `popups`, `signup`, `onboarding`, `video` |
| social | ⬜ ⬜ ⬜ | marketingskills@c7d7dfb → 2bde174 | 2.3.4 | `.agents/listening-sources.md` (setup) | Listening `curl`s Reddit, HN, Bluesky, YouTube: untrusted text (route `listen`) |
| content-strategy | ⬜ ⬜ ⬜ | marketingskills@c7d7dfb → 874a880 | 2.1.3 | — | Points at unvendored `seo-audit`, `ai-seo`, `programmatic-seo`, `site-architecture` |
| copywriting | ⬜ ⬜ ⬜ | marketingskills@c7d7dfb → 08b81e8 | 2.2.0 | — | Hands email and popup copy to unvendored `emails`, `popups` |
| marketing-loops | ⬜ ⬜ ⬜ | marketingskills@c7d7dfb → 8685f11 | 1.4.0 | `.agents/loops/<loop>.json`, `.log` | Loop-owned state; no PII in state or logs |
## Belts
A belt is a badge, awarded to one seat for one skill: a skill can be 🟩 on Luna and ⬜ on Astra. Once seats have
lineage identities, belts are issued as badges to the seat's npub (`docs/lineage.md`); until then, they live in the
ledger above.
| Belt | Means | Gate |
|---|---|---|
| ⬜ white | admitted | Every file read. Lint clean: no hidden Unicode or HTML comments, no fetch-and-run, no `allowed-tools`, no `` !`cmd` `` lines, no binaries. Upstream ref and tree in the ledger. A line in `docs/decisions.md`. |
| 🟩 green | earns its keep | Its katas, run with and without it on a named seat, beat noise (10–20 prompts incl. near-misses, ≥3 trials each). Record the seat. Green on Luna is worth more than green on Astra: a skill that lets a cheaper seat do the job is a cost lever. |
| 🟩 green | earns its keep | Its katas, run with and without it on that seat, beat noise (10–20 prompts incl. near-misses, ≥3 trials each). Green on Luna is worth more than green on Astra: a skill that lets a cheaper seat do the job is a cost lever. |
| ⬛ black | ours | Grown or specialised from the factory's own traces; beats the current version on held-out katas; reviewed by a seat from another model family. Never merged by the seat that wrote it. |
| 💤 retired | absorbed | The seat passes the skill's katas without it. Drop the route; keep the ledger line. |
| 💤 retired | absorbed | The seat passes the skill's katas without it. Drop the route for that seat; keep the ledger line. |
Katas live in `.agents/katas/<skill>/` (CI-only; seats never load them). Upstream `evals/evals.json` files are the
seed katas. The dojo grades seats with katas, and the same katas grade skills: seat × skill is one matrix — rows rank
@@ -81,5 +85,6 @@ seats, column deltas rank skills.
- Claude Code view: generated `.claude/skills/<name>` symlinks to `.agents/skills/<name>`.
- CI lint on `.agents/**`: the white-belt checks.
- Weekly upstream diff: per ledger line, fetch upstream and open a PR when the tree or version moves.
- Kata runner: with/without runs per skill per seat; writes the result into the Belt column, with the seat.
- Kata runner: with/without runs per skill per seat; writes each seat's belt into the ledger (badges, once seats have
lineage identities).
- Time reads routes: an issue labelled `route:<name>` gets that route's skills inlined into the seat's prompt.