diff --git a/SKILLS.md b/SKILLS.md index 0eef819..bf083b5 100644 --- a/SKILLS.md +++ b/SKILLS.md @@ -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/.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/.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//` (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/` symlinks to `.agents/skills/`. - 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:` gets that route's skills inlined into the seat's prompt.