skills/propose-counterfactual/SKILL.md
--- name: propose-counterfactual description: Produces the counterfactual framing in an Intuition Builder 5-set — "what if this component were not here?" Reveals the function of a technical element by subtracting it and observing what breaks. Uses Pearl's causal ladder (counterfactual = level 3) as the theoretical spine. Use as the 5th archetype slot of generate-analogy-set, or invoked standalone when the writer wants to build intuition for why a specific element exists. Trigger keywords: counte
npx skillsauth add lyndonkl/claude skills/propose-counterfactualInstall 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: One of the 5 archetypes in generate-analogy-set. Can also be invoked standalone when the writer specifically wants the counterfactual angle without the full 5-set.
For topic T:
- [ ] Step 1: Identify the component / mechanism whose function the writer wants to illuminate
- [ ] Step 2: Propose the subtraction — what if this component were absent?
- [ ] Step 3: Describe the concrete system that results (what you'd have instead)
- [ ] Step 4: Describe what breaks — performance, correctness, expressivity, efficiency
- [ ] Step 5: Return the counterfactual framing statement
Three sub-archetypes, pick whichever fits best:
Topic: Attention (in Transformers).
Ablation: "Remove attention from a transformer and you have a stack of residual MLPs per token — no information ever flows between token positions within a layer. The model can still transform each token independently, but 'context' is gone. That absence is what attention is 'doing.'"
Substitution: "Replace attention with fixed convolutions (the RNN/CNN alternative). You get locality — each token sees its neighbors — but the model can't arbitrarily connect token 1 to token 500. Attention's gift is not the operation, it's the arbitrary-range addressing."
Inversion: "Invert attention: instead of softmax-weighted averaging, what if the model picked exactly one token to copy from? That's hard-attention, and it turns out to be worse for training — soft interpolation makes the loss surface navigable. Attention is soft by gradient-descent necessity, not by design choice."
Pick one (usually ablation for a 5-framing set). The others can become a standalone post later.
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.