skills/update-analogy-catalog/SKILL.md
--- name: update-analogy-catalog description: Appends an entry to substacker shared-context/analogy-catalog.md when the writer PUBLISHES a post that uses a new analogy. Not invoked on seed or draft — only on publish. Records source, target, post, freshness, mapping, where-it-breaks, and why-it-worked. Prevents silent recycling in future Intuition Builder runs. Use at publish time for any post that contains a non-trivial analogy. Trigger keywords: catalog, analogy catalog, update catalog, publish
npx skillsauth add lyndonkl/claude skills/update-analogy-catalogInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Related skills: Called at publish time after Distribution Translator runs (or on manual trigger). Reads the published post to extract used analogies; writes to shared-context/analogy-catalog.md. Does NOT fire on seed or draft creation.
corpus/published/{section}/).update-analogy-catalog explicitly on a published post.For a newly published post:
- [ ] Step 1: Read the published post file
- [ ] Step 2: Extract non-trivial analogies (present a source-target mapping with mechanical weight)
- [ ] Step 3: For each, determine freshness (new / reused / borrowed)
- [ ] Step 4: For each, extract where-it-breaks if named
- [ ] Step 5: Write one entry per analogy to analogy-catalog.md
- [ ] Step 6: Commit ledger-style entry with date + post reference
Trivial similes don't count ("fast as lightning"). An analogy is non-trivial if:
The writer can manually annotate analogy: true in a post's frontmatter to force inclusion, or analogy: skip to exclude.
fresh: the writer's own analogy, first use. Default.reused: the writer used this analogy in a prior published post. Auto-detected by cross-checking the catalog.borrowed: the analogy came from a named source (Hofstadter, a cited paper). Writer annotates.Append to analogy-catalog.md under the table:
| {source} | {target} | {post-title} | {fresh|reused|borrowed} | {note} |
Also in the "notes" section at the bottom:
## {post-slug} — YYYY-MM-DD
- analogy: {source} → {target}
- freshness: fresh|reused|borrowed
- why it worked: {one-sentence note from the writer or inferred from post context}
- breaks at: {the boundary the writer named in the post, if any}
Event: Writer publishes "Why your embedding search melted at 10pm" on 2026-05-20. The post uses two analogies:
2026-03-03-rag-as-prosthetic-memory (already in corpus/seeds/ earlier).Detection:
thermometer, target retrieval quality metric. Not in catalog. Freshness: fresh.prosthetic memory, target RAG. Already in catalog from a prior post. Freshness: reused. Cross-reference to the prior entry.Catalog update:
| source | target | post | freshness | note | |---|---|---|---|---| | thermometer | retrieval quality metric | Why your embedding search melted at 10pm | fresh | "you need to sense before you can steer" — operational framing | | prosthetic memory (reused) | RAG | Why your embedding search melted at 10pm | reused | sibling to 2026-03-03 post; same frame, new context |
freshness: fresh but flag for writer review.analogy: skip in post frontmatter, respect it.development
--- name: zettel-note description: The note-writing discipline for this vault's evergreen knowledge graph, modeled on a Zettelkasten reading companion and governed by the vault conventions. Enforces declarative-claim titles, one claim per note (atomicity), own-words prose with no block quotes, the piped [[slug|Title]] link form, the labeled link-relationship vocabulary (Confirms/Contradicts/Extends/Context/Prerequisite/Builds-on/Applies/Example-of/Contrasts-with), 3-6 links per note, and search-
development
Plans between-round FIFA World Cup Fantasy transfers — budgets the round's free transfer(s), forces out players whose nation has been eliminated, chases fixture-swing drops, upgrades on value, and decides when a rebuild is large enough to fire the Wildcard instead of spending free transfers one at a time. Ranks candidate in/out pairs by EV gain over each player's remaining survival horizon (delta xEV weighted by progression_carry) MINUS transfer cost (a free transfer is cheap, a points hit is real, churning the squad for marginal swings is a critic flag), and tags forced/fixture/upgrade priority. Emits a `transfer-plan` signal. Use when called by wc-squad-architect (whose transfer work this skill is the engine for) and by the strategists in the populate stage when their candidate is transfer-adjacent rather than a full rebuild.
testing
Reads and updates the FIFA World Cup Fantasy tournament state machine (footballfantasy/context/tournament-state.md) — the temporal backbone tracking phase (pre-tournament → group MD1-3 → R32 → R16 → QF → SF → final), budget ($100m group / $105m knockouts), nation cap (3 group, loosening in knockouts), chips remaining, surviving nations, each owned player's elimination-risk horizon, and deadlines. Validates state on load (count/feasibility checks), applies phase transitions, and appends to the append-only state log (never silent overwrite). Use to load state at the start of a run and to commit state changes after the manager makes a move.
development
Validates and persists FIFA World Cup Fantasy signal files to signals/YYYY-MM-DD-<type>.md. Checks the required frontmatter (type, round, date, emitted_by, confidence, source_urls), range-checks declared numeric signals, confirms every factual claim carries a source URL or "manager-provided", rejects unknown signal types, and refuses to persist a signal that fails validation (logging the failure instead). Keeps the inter-agent signal layer auditable so downstream agents can trust what they read and never re-derive it. Use whenever an agent or skill writes a signal.