skills/write-weekly-report/SKILL.md
--- name: write-weekly-report description: Composes the substacker final ops/growth-analyst/YYYY-WW-report.md from ingest + baseline + attribute + per-section + public-page outputs. Enforces 400-800 word budget, YAML frontmatter schema, seven-section body structure. Truncates weakest sections first when over budget. Injects data-caveats from any degraded-mode flags upstream. Use as the final compose step of the weekly pipeline. Trigger keywords: weekly report, compose report, growth report, Mond
npx skillsauth add lyndonkl/claude skills/write-weekly-reportInstall 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.
Compose weekly report:
- [ ] Step 1: Receive outputs from all upstream skills
- [ ] Step 2: Draft YAML frontmatter (week, coverage, csv_source, subs, baselines, one_number_to_watch, confidence)
- [ ] Step 3: Draft body in 7 sections (see format)
- [ ] Step 4: Count words; if >800, truncate weakest sections first
- [ ] Step 5: Voice-check pass (no vanity phrases, no AI-slop openers)
- [ ] Step 6: Write file
---
week: YYYY-WW
reported_on: YYYY-MM-DD
coverage: YYYY-MM-DD to YYYY-MM-DD
publication: the-thinkers-notebook
csv_source: inbox/substack-stats/substack-stats-YYYY-MM-DD.csv
subscribers_start: N
subscribers_end: N
delta_subscribers: N
open_rate_week: 0.NN
open_rate_baseline_4w: 0.NN
click_rate_week: 0.NN
click_rate_baseline_4w: 0.NN
posts_sent_this_week: N
one_number_to_watch: subscribers
confidence: high | medium | low
---
## Headline
1-2 sentences. The single thing worth knowing.
## Numbers in context
Subs, delta, open rate, click rate paired with 4-week rolling. No external comparisons.
## What worked / what didn't
Per outlier post: plain-English attribution with confidence label.
## Per section
Only if sections populated. Table + 1-2 sentence narrative per section.
## Hypothesis for next week
1-2 specific, falsifiable things to test.
## Data caveats
Missing columns, low-N warnings. Mandatory — say "no caveats" if empty.
Target 400–800 words. Hard ceiling 800.
Truncation priority (drop first if over 800):
confidence: high is rare — earn it with ≥2 channels convergingdevelopment
--- 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.