Imported from h-mascot/weeklyclaw-ai (
episodes/28/model-context-dump/skill/SKILL.md). Install upstream withnpx skills add h-mascot/weeklyclaw-ai --skill skill. Copyright stays with the author.
WeeklyClaw Show Prep
Prepare a Friday WeeklyClaw episode as a reviewable, reversible draft. This skill covers discovery, source verification, story selection, agenda/deck/notes generation, validation, review-card delivery, refreshes, freeze, and handoff. It does not publish publicly or overwrite canonical episode files before approval.
Scope and boundaries
- Workspace:
~/weeklyclaw. - Work only under
episodes/<N>/showprep/until approval. Read prior episodes; never modify them. - Never touch the separate SuperAda/OpenClaw changelog workspace.
- No public YouTube, X, Bilibili, Discord (outside lifecycle authority), guest, sponsor, purchase, or production write without explicit approval.
- When Henry or Andy explicitly authorizes episode publication, completion covers the full episode on YouTube, native X video, and Bilibili. Follow
references/multi-platform-episode-publication.md; YouTube-only publication is partial progress. - Website draft publication is a standing authorized action: on every BUILD that produces a passing package, publish the deck draft to the WeeklyClaw website repo (
~/clawd/projects/weeklyclaw-ai) underepisodes/<N>/. This is an internal deploy to a site Henry controls, not an external publication. - Never modify the cron definition from the show-prep job.
Draft publication to weeklyclaw.ai (standing authority)
On every BUILD with a passing seven-artifact package:
- Create a clean git worktree off
origin/mainof the website repo. Before any build, staging, commit, or push, assert thatgit rev-parse --show-toplevelequals the new worktree path. Usegit -C "$worktree" ...orcd "$worktree"inside the same shell command; setting the tool's working directory to the canonical checkout is not enough. - Copy only the current deck revision, agenda, host docs, and referenced assets into
episodes/<N>/. Stage an explicit whitelist; never rungit add episodes/<N>/from a dirty canonical checkout, because it can publish the privateshowprep/tree and unrelated untracked files. - Generate both the canonical archive-compatible agenda page and a directly accessible draft route at
episodes/<N>/agenda-draft/index.html. The site's/episodes/<N>/agendaredirect points to the gallery, where an unapproved draft is intentionally absent, so it is not a discoverable draft-agenda link. - Run
npm run buildfrom the asserted worktree. - Commit and push to
origin/main. Vercel auto-deploys. - Verify the exact live deck, agenda-draft, host-cheat-sheet, and representative asset URLs with HTTP 200 plus decoded content canaries. For ordered content such as sponsor slots, prove both canaries and their byte/DOM order (record the byte offset of each sponsor's first occurrence; assert Herald byte offset < Heritage byte offset on a Herald-first week, the reverse on a Heritage-first week).
- Include clickable links for
https://weeklyclaw.ai/episodes/<N>/deck,https://weeklyclaw.ai/episodes/<N>/agenda-draft, andhttps://weeklyclaw.ai/episodes/<N>/host-cheat-sheetin the BUILD message to this Telegram topic. - HARD GATE (Henry, 2026-08-28): every weekly-content message — BUILD review card, material-rev report, FREEZE, HANDOFF, draft-publication report — MUST also include the WeeklyClaw Program Topics spreadsheet link (sync it first if the lineup changed: append candidates to
episodes/<N>/daily-topic-list.mdmatching the- **Score:**block format with^### Candidate \d+headings, runpython3 scripts/weeklyclaw-program-sheet.py, verify via the public CSV export). Sheet: https://docs.google.com/spreadsheets/d/16xAvCzRGA8XlWvihdSBcipw0wARzVZT9YysXzM0eFM8/edit . A content delivery without the sheet link is an incomplete delivery.
On material deck rebuilds (new revision from REFRESH/FREEZE), republish using the same route.
On Henry/Andy APPROVE, the publication runbook takes over: promote canonical root artifacts, update the episode gallery card from "Draft" to the final state, update the homepage featured episode, run the full sync script, and verify live URLs with content canaries.
Draft-publication self-check on every REFRESH tick after BUILD. Standing-authorized website publication is part of the BUILD contract, not optional. On the first REFRESH tick after a BUILD that produced a passing package, BEFORE claiming "no action," run this check:
for url in /deck /agenda-draft /host-cheat-sheet; do
code=$(curl -s -o /dev/null -w '%{http_code}' "https://weeklyclaw.ai/episodes/<N>$url")
if [ "$code" != "200" ]; then missing="$missing $url"; fi
done
If any URL is missing, the BUILD skipped the standing-authorized draft publication. Repair it during this REFRESH tick (worktree → whitelist copy → agenda/host page generation → npm run build → commit → push → live canary verification) and record the recovery in state.json.draft_publication and runlog.md. Do NOT silently emit "no action" when the standing-authorized draft is missing — that is a contract failure, not a clean tick. Verified on Episode 26 Thursday 14 ET REFRESH after the 12 ET BUILD shipped rev1 PASS without pushing.
Authoritative deck template (prior APPROVED episode)
- The canonical visual/layout template for a new episode is the prior APPROVED episode deck, discovered at BUILD by scanning
episodes/*/showprep/state.jsonfor the highest episode whoseapproval_stateisAPPROVEDwith a non-empty rootepisodes/<N>/deck.html. Record the authority path, episode number, and sha256 in evidence.md. As of this skill the authority is Episode 23:~/weeklyclaw/episodes/23/deck.html(sha2563548178052bb0c8e151b61ca230930885af8b7b3016072de1bfaa38aea598785). Henry may explicitly name a replacement; absent that instruction, use the prior APPROVED episode. - Copy the authority deck's full
<style>block,<script>block, SVG<symbol>/<defs>(including the real<symbol id="weeklyclaw-logo">), CSS custom properties, layout classes, and navigation/fullscreen JS verbatim. Replace episode-specific content only. Do not invent new CSS class systems, new SVG symbols, new brand marks, or new logo paths. - The WeeklyClaw logo is the
<symbol id="weeklyclaw-logo">SVG inside the authority deck, referenced via<use href="#weeklyclaw-logo"/>. Any<symbol>,<path>, or inline SVG that draws a claw/logo/brand mark not present in the authority deck is an invention and fails the build. - Do NOT use
~/clawd/projects/weeklyclaw-ai/episodes/22/deck-website-theme.htmlas a template. That file is the former dark/neon theme Henry explicitly rejected during Episode 23 prep. It is retained for history only. - Copy the prior episode's
assets/sponsors/directory into the new showprep asset tree verbatim. Every sponsor<img>srcmust resolve to a file on disk whose sha256 matches the prior-episode sponsor asset. Sponsor marks are real brand assets, not invented inline icons. - Theme traits inherited from Episode 23: light cream paper background (
--site-paper), fine grid, teal/cyan accents (--claw-red: #2a7e6b), Barlow Condensed display type, IBM Plex Mono utility type, rounded editorial cards, the realweeklyclaw-logoSVG symbol,claw-bgbackground watermark,glow-orbaccents, andpart-label/story-numsection markers. - Read
references/prior-episode-template-authority.mdfor the full deterministic template-comparison and render-QA gate recipe before any BUILD or material deck rebuild.
Time gate and roles
Run the New York gate first:
TZ=America/New_York date '+%u %H %Y-%m-%d %Z'
Continue only on Thursday (4) or Friday (5) during hours 11–16 ET:
- Thursday 11: BUILD: discover the episode for TOMORROW's Friday show, research, select stories, build the full draft package a day early.
- Thursday 12–15: REFRESH: inspect only changes since the last successful tick and apply explicit feedback.
- Friday 11–14: REFRESH (late-news check): additive-first — verify developments since the last successful tick; prefer ADD (new segment, bench promotion, One To Watch upgrade) over rewriting the built lineup; never silently swap an approved or pinned story.
- Friday 15: FREEZE: final verification and lock current package; late stories become One To Watch unless exceptional.
- Friday 16: HANDOFF: read-only, maximum 12 lines, no regeneration.
Outside that window, return exactly NO_REPLY without taking a lock or changing files.
Episode discovery and locking
- Determine the active Friday episode from show dates, never by adding one to the highest existing directory. On the Thursday BUILD tick, the target show date is TOMORROW's New York Friday; on Friday ticks it is today. Inspect numeric episode
showprep/state.json,daily-topic-list.md, andagenda.mdforshow_date_nyorShow date. If an episode is dated for the target show date, resume it. Otherwise choose exactly one more than the highest episode whose show date is earlier than that Friday. A pre-existing directory created by daily intelligence is the upcoming episode intake, not evidence to skip another number. - If today's New York date already exists in
showprep/state.json, resume that episode. Never assign a second episode for the same show date. - Recovery bootstrap: any Thursday or Friday 11:00–14:00 tick without valid same-week state performs full BUILD. At Friday 15:00 without state, do a bounded abbreviated build-and-freeze only if it can pass; otherwise deliver BLOCKED. At Friday 16:00 without a usable package, deliver a read-only BLOCKED handoff.
- Cross-check the selected episode's intended show date and the prior agenda's stated next-show date. If evidence disagrees with today, record a concise BLOCKED card instead of guessing.
- Acquire
showprep/state.lockatomically before writes. Lock expiry must be shorter than the hourly cadence; heartbeat long Cursor runs so healthy work remains fresh. A fresh lock means quiet exit. Recover stale locks and record why. - Make reruns idempotent by using a tick ID
<episode>-<NY date>-<NY hour>and checking persisted state before duplicating artifacts or messages. - Remove the lock after the run, including blocked or failed paths where safe.
Research and story selection
- Before scoring the raw candidate pool, check the active episode for a finished, ordered host document: talking-points file, run-of-show, host agenda, or equivalent. If one exists, it is authoritative for selection, order, lines, questions, and ownership. Use it directly. Score the raw pool only to fill gaps the host did not cover, or when no finished host document exists. Record the authoritative path and any gap-filling decisions.
- Treat the week's verified daily program-intelligence output as a raw candidate pool subordinate to a finished host document. When no finished host document exists, prefer that pool and add only a focused gap sweep of primary sources and credible independent reporting.
- Before research or drafting, inspect the originating WeeklyClaw Telegram topic and active episode files for links, posts, videos, demos, screenshots, or documents shared by Henry or Andy. Host-shared resources are authoritative editorial inputs: preserve every exact URL in a dedicated
sources/host-shared-resources.mdledger, associate each with its segment, retrieve/read it where tooling permits, and carry it into the agenda'sSources and production notes, slide-by-slide speaker notes, and a clickable deck Sources/Host Resources appendix. Never silently replace, omit, or "improve away" a host-shared link. Host-shared resources do not waive fact-checking: classify official/primary sources separately from community commentary, corroborate material factual claims, and label unresolved claims. - For each selected topic, find equivalent presenter resources even when hosts supplied none: at least one primary/official receipt plus one useful visual, demo, video, or credible practitioner discussion when available. Record direct URL, creator/account, what it demonstrates, source tier, retrieval result, presenter use, cue/timestamp for video, and fallback. If no useful equivalent exists after materially different searches, record the failed searches rather than inventing one.
- Keep a source ledger per story with URL, retrieval time, source tier, claims, caveats, and verification status.
- Score candidates 0–10 using consequence/industry shift (25%), Henry/operator angle (20%), evidence quality (20%), novelty (15%), narrative connection (10%), and clip-ability (10%).
- Target up to five segments at >=8.5. Five is a target, not a padding quota. If only three or four qualify, select those, enlarge the bench, and state the shorter lineup on the review card. A lower-scoring story remains bench-only unless Henry explicitly promotes it.
- Henry's X signal is a NEWS FILTER first, a topic source second (Henry, 2026-08-21: "The idea is not to use all tweets but only breaking news topics for the week"). Before scoring, read the tweet backup at
~/weeklyclaw/sources/henry-tweets/(per-dayYYYY-MM-DD.jsonl, canonicalall.jsonl, refreshed every 4h by thehenry-tweets-daily-backupcron, job12c370604fd7). From his week's tweets, extract only launch-grade news (new model/chip/product releases, first-ever facts, confirmed deals) that broke inside the episode window; his topic volume, opinion posts, and engagement counts calibrate ordering and the Henry-section, but NEVER add a segment for a topic he tweeted heavily if the underlying launch is not this-week news (Qwen3.8-27B, Grok Bot, GLM-5.3, Ultrafast were all correctly excluded from Episode 26 despite heavy tweeting). Direct posts/quote commentary outrank bare reposts for ordering only. On backup staleness (>24h), fall back toBIRD_ACCOUNT=henry ~/clawd/scripts/bird-env.sh user-tweets iAmHenryMascot -n 40 --jsonand markHENRY_X_PULSE_INCOMPLETEon failure. - Episode news window = previous episode AIRTIME, not the last daily-intake completion (Henry, 2026-08-21: "did anything happen on it this week?"). A story qualifies for episode N only if its primary launch receipt landed AFTER episode N-1 aired (Friday 16:00 ET / 20:00 UTC). The daily-intelligence freshness cutoff is the Friday ~09:05 EDT intake completion, which finishes pre-show — so a Friday-morning launch (e.g. Qwen3.8-2.4T posted Aug 14 15:02 UTC, ~5h before Episode 25 aired) wrongly gets promoted as next-episode news. When scoring a candidate, compare its launch timestamp against the PRIOR EPISODE'S AIRTIME, not against the last intake cursor. Follow-on developments of an aired story (community quants, demand metrics, new variant routes) are supporting color at most, never a fresh segment.
- Deduplicate against the week's lists and the last three aired editions, INCLUDING Henry's tweeted topics already covered on a prior episode — a follow-on development is news, a re-tread of last week's release is not (e.g. Qwen3.8-27B weights aired on Episode 25; only a genuinely new release qualifies again). Merge related developments when they share an entity or causal thread and can land cleanly in about five minutes; each cluster names its umbrella thesis, sub-stories, narrative order, shared landing line, and one host question, rescored as one editorial unit while preserving constituent scores. Each constituent belongs to one selected cluster unless an explicit cross-reference explains the overlap.
- Treat release ecosystems as evidence layers, not separate filler stories: Hugging Face model cards, files, licenses, quantizations, demos, and deployment recipes should deepen the relevant model-launch cluster unless they create a materially different audience takeaway.
- Require two independent receipts for aired factual claims where possible. If the first corroboration search fails, retry with materially different terms, entity names, date ranges, and source types before excluding the claim; record the retries and result. Label vendor-reported figures. Never turn a secondary comparison into a primary receipt.
- For video/image launches, find official playable examples and record creator, direct URL, cue/timestamps, poster/fallback, provenance, and embedding/rights status. For language/reasoning model comparisons, build sourced tables covering architecture/active parameters, context, modality, license/weights, benchmark source, API price, quantization, hardware/runtime claims, and caveats; unknown cells stay unknown.
- Sequence by a named narrative arc, not raw score order. Mark the first optional cut.
Draft package
Create only under episodes/<N>/showprep/:
state.json,candidates.json,candidates.mdsources/<slug>.mdrevs/agenda.rev<N>.md,deck.rev<N>.html,talking-points.rev<N>.md,speaker-notes.rev<N>.md,henry-section.rev<N>.md,andy-section.rev<N>.md,host-cheat-sheet.rev<N>.mdassets/images/,assets/videos/,media-manifest.jsonworkflow-feedback.md,evidence.md, append-onlyrunlog.md- A concise review card with exact commands:
APPROVE,SWAP <slot> <candidate>,DROP <slot>,PIN <candidate>,ORDER ..., or free text.
Agenda talk-track contract
-
Standing ownership rule (Henry, 2026-08-20): What Happened This Week segments are ALWAYS Henry-led. Never assign Andy the lead on a news segment and never rotate/flip segment leads between rebuilds. Andy participates via caveat, support angle, or fallback prose only, unless Henry explicitly assigns him a lead for a specific segment in that episode. The rule is recorded in
template.md, the cron prompt, and here; a revision that marks a What Happened This Week segment "Andy lead" (Episode 26 rev1 did exactly this on S2/S4) fails host-format lint and must be reassigned at the next revision. -
Close recap rule (Andy, 2026-08-21): recap the episode exactly ONCE at the end of the show; never recap the recap. Applies to close scripts, host cheat sheets, and any end-of-show copy drafted from the show. A close section that re-summarizes items already covered in the recap, or a cheat sheet whose end-of-show block repeats the recap, fails host-format lint. Recorded in
template.md,templates/agenda-template.md, the cron prompt, and here. -
Read
~/weeklyclaw/template.mdbefore generating any agenda revision. The packaged baseline istemplates/agenda-template.md; if the workspace copy is absent or intentionally refreshed, seed/reconcile it from that template rather than inventing a new structure. -
Match each host's working style. Henry gets concise segment/talking-point bullets, an optional landing line, and a handoff cue. Never force a word-for-word Henry script.
-
Andy gets a complete natural fallback talk track wherever he participates, followed by the handoff cue. It is a safety net he may paraphrase, not a requirement to read verbatim.
-
General segment bullets may precede the host material. Do not duplicate them verbatim in Andy's fallback prose, and do not force rigid alternating-speaker dialogue where the run of show does not need it.
-
Integrate verified facts, caveats, transitions, host questions, landing lines, and video talk content into the appropriate bullets or Andy fallback prose.
-
Video research should contribute its talk content directly to the relevant section. If it lacks a usable talk-track, write one from verified evidence rather than assuming it exists.
-
Keep target runtime at 32–38 minutes and hard stop at 45 minutes. Signal From Outside is the permanent weekly video-review anchor; cut or compress the optional rotating block first.
Use the authoritative deck template described above (prior APPROVED episode). The default shape is cold open, first sponsor read, up to five story segments, Signal From Outside / weekly video review, one optional rotating block, hot take, second sponsor read, close, and a non-air build reference. Sponsor position is a weekly rotation, not a permanent Herald-first layout: inspect the prior aired/approved episode's two sponsor slots and invert them for the current episode unless Henry or Andy specifies a different order. Apply the same order to the deck, agenda, speaker notes, talking points, Henry view, Andy view, and host cheat sheet, while preserving the latest approved sponsor language until a host returns revised copy. Reserve Hot Take before drafting news and verify that its proposition, framing, and question do not repeat a news segment; replace or omit it if they do. Signal From Outside is a permanent weekly anchor, not part of the rotation. The optional rotating block may be Tool Fight, Builder Demo, or Audience Question. Target 32–38 minutes and a 45-minute hard stop; cut or compress the optional rotating block before cutting the video anchor.
Mandatory build route (Cursor) and the documented direct-Hermes alternative
The default route is to run Cursor on Enterprise, which derives the six presentation/host views from the immutable agenda revision. Stage a bounded run directory at:
~ent/Services/WeeklyClawDeckBuilder/runs/<show-date>-ep<N>/
Copy only the canonical agenda revision, source receipts, media manifest, authoritative theme, and required prior references into input/. Record the agenda revision/story-set hash before Cursor starts. Run non-interactively with:
--print --output-format json --model <exact-id> --force --trust
Try exactly this order:
kimi-k3-highclaude-opus-5-highgpt-5.6-sol-high
A model is not successful because Cursor exited 0. It must create every required derived artifact, produce valid HTML, preserve source/visual sections, and pass local readback/validation. If a model hangs or returns a partial set, record the attempted model, exit/timeout, produced artifact list, hashes when available, and precise fallback reason before moving to the next route. Never call partial output a success. If every route fails, deliver the verified agenda and any valid notes/cheat-sheet artifacts, mark the deck BLOCKED, preserve evidence, and name the exact missing contract instead of disappearing.
The complete package contract is seven artifacts: canonical agenda, deck, speaker notes, consolidated talking points, Henry view, Andy view, and host cheat sheet. Cursor must produce the six derived artifacts and a receipt binding them to the staged agenda revision/story-set hash. A route passes only when all seven exist, read back, and agree on revision/story identity; any missing or invalid artifact triggers fallback.
Direct-Hermes build path (documented alternative)
When ALL of these are true, the seven-artifact package can be authored directly in Hermes in a single 11:00 BUILD tick without invoking Cursor:
- The deck is ≤ 14 slides with a clear linear arc and uses the prior APPROVED episode's deck as the verbatim template (cream paper, teal-cyan, Barlow Condensed + IBM Plex Mono, real
weeklyclaw-logoSVG symbol). - The full package fits in one context window (deck HTML ≤ ~40 KB; total package ≤ ~140 KB across all seven files).
- No required visual asset is missing (posters retrievable via
yt-dlp --write-thumbnail --convert-thumbnails jpg; sponsor marks copyable from the prior episode'srevs/assets/sponsors/).
See references/direct-hermes-build-path.md for the full recipe, including
the dcg shell-parser workarounds and the validate_deck.py invocation. That
reference also documents the recovery BUILD pattern (verified on Episode 26
from a non-existent prior showprep/ directory), the Henry X pulse
placeholder when X CLIs lack cookies, and the render-script divergence between
the per-frame screenshot-only QA pass and the full Playwright overlap-detection
QA pass required before APPROVE-triggered publication.
Multimedia and notes contract
- What Happened This Week slides are visual prompts, not briefing documents. Use one dominant picture, video, demo, chart, or live webpage per story. On-slide copy is limited to a headline plus zero to two short context lines. No body paragraphs, bullet lists, comparison cards, metadata panels, evidence blocks, or talking points. Put details, caveats, citations, numbers, and presenter guidance in speaker notes.
- Every major story needs a verified visual cue where available: primary-source screenshot, official image, chart, UI, clip cue, or explicit fallback still.
- Live-artifact rule (EP24/EP25 aired-video review, corrected 2026-08-21): on air the deck is a beat marker; the show is the artifact, and the artifact must dominate the slide. Each news slide embeds a large real capture or playable video from the primary source plus a discreet
▶ LIVElink for on-air screen share. Do not put the artifact inside a small "ON-AIR LIVE ARTIFACT" card beside dense copy. Tag artifacttypeinmedia-manifest.json(LIVE_DEMO | LIVE_CHART | RECEIPT_PAGE | SCREEN_CAPTURE | VIDEO_CLIP); prefer live over static. Docs-page/text-only artifacts areWEAK-VISUAL: propose merge/swap. Capture provenance (URL, UTC time, title verified), use relative paths, no autoplay. - Launch-type-aware artifact matching (Henry, 2026-08-21: "if there is a video we should use that, or a demo or a benchmark"). Match the artifact to what the story IS: hardware/chip/product launch → the vendor's official launch video; model release → the benchmark (live leaderboard/chart where possible); feature/deal → live demo, receipt page only as fallback. A receipt-page screenshot is NOT acceptable when an official video, demo, or benchmark exists — search for them BEFORE defaulting to a page capture. Episode 26 rev3 shipped static screenshots on all five news segments and dropped the
▶ LIVElinks; both were violations. Seereferences/on-slide-live-artifacts.md§1 for the full preference order and the sourcing recipe (vendor launch videos often live only on the X launch post; launch-post images may BE the benchmark chart — OCR to verify). - Media selection hard gates (Henry, 2026-08-28, Ep27 rev3 review — "benchmarks are more important to us than news"). Priority order for every news-slide image: (1) benchmark/chart comparing the model or chip against peers — beats ANY article screenshot for model and chip launches, including Jalapeño-style chip launches ("there are some cool graphs of the chip vs others"); (2) magazine COVER page when the story involves one (TIME cover for Altman AGI: "pattern match for future, if it involves a cover, use that; if theres a high profile personality use them"); (3) collage of multiple high-profile tweets for funding/valuation/raise news — "multiple high profile tweets in a collage is prolly better than one screenshot of an article"; (4) official demo video/graphs. Article-headline screenshots are the LAST resort. For Chinese/open models, CHECK HENRY'S OWN TWEETS FIRST — he runs internal benchmarks and posts the charts (GLM-5.3 full results; "Deepseek v4 flash > Qwen 3.8 27b on my internal benchmark"); his benchmark artifact is a first-class slide asset when it covers the story. He explicitly flagged a missed instance: "I made a benchmark for this earlier in the week you should have used that."
- Vision-verify image CONTENT, not just presence (Henry, 2026-08-28: "the attached images in some of them is super weird.. nvidia acquisition is some weird sign, means you ddnt verify the content in each image"). Every slide image gets a vision check that names what is actually IN the image (headline text, chart axes, faces) and confirms it matches the story. A valid PNG of a "NotFound" JSON response, a consent-wall remnant, or an abstract sign/logo is a FAILURE even though the file is a well-formed image. Log per-image verdict in the runlog before publishing.
- Cluster same-entity / same-class news onto one slide (Henry, 2026-08-28). Two news items about the same entity (Jalapeño + Altman AGI claim, both OpenAI) go on ONE slide. Models launched close together in the same class (GLM-5.3-Flash + Qwen Flash-Next) go on ONE slide. Under the shorter-but-more-items format ("now that we are doing shorter but more items"), target 3-4 clustered news slides instead of 9-10 single-story slides — "cluster things that are related or easily transitionable per slide."
- Sponsor slots: beginning and end of show only (Henry, 2026-08-28: "for the sponsors, lets leave them in the beginning of the show and at the end"). No mid-show sponsor slides. The two reads stay first (after cold open) and last (before close). Rotation of WHICH sponsor leads still applies; the POSITION is fixed.
- No internal scaffolding labels on news slides (Henry, 2026-08-21, Ep26 rev8: "The titles of these aren't the way I talk"). What Happened This Week slides must NOT carry the
story-numkicker line (SEG 1 · SUPERVISORY JUDGEMENTetc.) or the owner segment tag (S1 · HENRY); replace theslide-tagcontent withWHAT HAPPENED THIS WEEKand delete the kicker div. The h2 headline IS the voice — anything that reads like run-of-show scaffolding (SEG N, S#, owner, theme codename) stays in speaker notes, not on the slide. Numbered tags on non-news slides (cold open,03 / SIGNAL FROM OUTSIDE, hot take, close) are unaffected. - News-slide h2 titles use plain launch phrasing, not editorial punchlines (Henry, 2026-08-21, Ep26 rev9→rev10: "The titles of these aren't the way I talk … keep it simple"). Two verified patterns: (a) launch pattern —
[Company] launches [their newest <thing>]: the [name]./DHH launches the Omacom Foundation with $8M.— subject-verb-object, the launch IS the headline; (b) statement pattern —Stripe buys OpenRouter, & the hot stealth model.— one plain sentence, may name two related entities. NEVER slogan/copywriter constructions ("the chart is the launch", "Agents can pay mid-task without ever holding your keys", "A 27B model is the boss of GPT-5.5 now"). Write titles the way Henry would SAY the first line of the segment. When a host tweets about the story, mirror his tweet's plain phrasing (his Faraday RT: "a 27B model can beat GPT-5.5 … by learning when and how to use GPT-5.5 as a tool"). - Henry-supplied artifact images (Telegram reply "Use this for X image"). The image lands at
~/.hermes/cache/images/img_*.jpg. Identify content via tesseract OCR when vision_analyze is unavailable (usage charts OCR cleanly: model names + token totals). Copy toassets/images/artifacts/sN-<slug>.<ext>as the canonical asset — never reference the cache path — then update slide src/alt/caption, bump rev, and record provenance inmedia-manifest.json(source = Henry-supplied Telegram image, verbatim instruction, OCR'd values; the chart data is the receipt). Publish asset + deck in the same commit and verify the live asset sha256 matches local. - Never fabricate screenshots, quotes, charts, or media. Video cues need source URL, start/end or cue, poster/fallback, clickable link, and no autoplay.
- Every story slide exposes a clickable source link. Add a final Sources/Links slide.
- Close-slide Discord QR (Henry, 2026-08-23): the LAST slide must include a QR code that leads to the WeeklyClaw Discord. Use the authority deck's
.discord-qrcard verbatim: local imageassets/socials/weeklyclaw-discord-qr.png(copy it from the prior episode's showprepassets/socials/), anchored tohttps://weeklyclaw.ai/discord— the rotating invite route, never a hardcodeddiscord.gg/<code>(invites expire ~30 days; see the invite-link publication gate).validate_deck.pycheck 5b fails the build if the QR card, link target, or image file is missing. - Store local media under the showprep asset directories and resolve every local path before promotion.
- Give slides stable IDs. Speaker notes must have exactly one entry per slide, and every entry must include owner, purpose, opening line or optional landing line, 3–5 talking points, evidence/caveat, question or handoff, visual cue, source links, target time, and cut contingency. Henry's view stays bullet-first; Andy's view carries complete fallback prose.
- Henry and Andy views contain only their sections plus shared transitions. Tag each host only where they have an actionable review.
Verification gates
Before reporting a draft as ready:
- Read back every required file and verify non-empty content.
- Parse JSON with
python3 -m json.tool. - Run
python3 scripts/validate_deck.py <deck.html> <speaker-notes.md> [authority-deck.html]. With no third argument it runs the base 8 checks: slide-ID parity, JS syntax vianode --check -, autoplay detection (allowing "do NOT autoplay" prose), ≥ 10 clickable source links, final Sources slide, canonical theme markers (now requiring the realweeklyclaw-logosymbol, not theclaw-markstring), local media resolution, and segment-ID discovery. When the authority deck is supplied as the third argument, 6 additional template-authority gates run: CSS custom-property parity, SVG symbol parity, invented-logo rejection, layout-class coverage, sponsor-asset provenance, and deck-size sanity. Always pass the prior APPROVED episode'sdeck.htmlas the third argument on BUILD and material rebuilds. Exit 0 = PASS. - Parse slide IDs from the deck and note headings; assert equal order, count, and uniqueness.
- Resolve every local media path and record external-link verification in
media-manifest.json. - Hash the candidate set and revision artifacts. Put hashes and model attempts in
state.json/evidence.md. - Record gate time, inputs, candidate/source counts, story hash, artifacts, validation, approval state, and delivery purpose in
evidence.mdandrunlog.md. - Run deterministic lints before review-card delivery and again before promotion: host-format structure (Henry bullets/optional line/handoff; Andy fallback prose/handoff); Hot Take/news non-duplication; cluster exclusivity/post-merge score; no staging
output/paths in promoted files; seven-artifact manifest and shared revision/story hash; deck/notes slide-ID parity; media/cue/fallback/no-autoplay; canonical theme markers/hash; runtime target 32–38 and hard stop under 45 minutes; template-authority comparison (the new deck's<style>block, SVG<symbol>/<defs>, CSS custom properties, layout classes, and JS must derive from the prior APPROVED episode deck, not be invented); invented-logo rejection (no<symbol>,<path>, or inline SVG drawing a claw/logo/brand mark absent from the authority deck); sponsor-asset provenance (everyassets/sponsors/file resolves and matches a prior-episode sponsor asset by sha256); and 1600x900 render QA (render both the authority deck and the new deck at 1600x900 via headless Chromium, confirm no text clipping, no element overlap, no report-like text density, and visual consistency with the authority deck's layout). Seereferences/prior-episode-template-authority.mdfor the exact gate recipe. - Treat any lint failure or missing evidence receipt as a failed package, not a warning.
- Do not promote to root
agenda.md,deck.html,henry-talking-points.md, orhost-cheat-sheet.mdunless state is explicitly approved by Henry or Andy. Back up existing root artifacts before promotion. - If an authorized instruction includes
publish, continue through website sync/deploy and live verification; changing approval state or promoting root files alone is not completion. - Before website publication, trace every deck-relative media path and include those files in the staged/public artifact set. A live deck with missing local media is a failed publication.
- After publication, verify the user-facing page with content canaries and representative local media URLs, not only deploy-command success.
- After any post-freeze fact-check or asset correction, search every public and host-facing artifact for superseded wording, compare canonical files with generator output byte-for-byte, copy in the authoritative direction, include newly referenced assets, recompute receipts/state hashes, and verify the exact public URLs return canonical bytes.
Refresh, freeze, authority, and handoff
Host-feedback delegation and thread availability
When Henry or Andy sends a screenshot/list of several independent review tasks and explicitly asks for subagents:
- Translate each item into one bounded worker brief with episode, current revision, source paths, read/write authority, and required receipts.
- Dispatch every requested worker in background mode. Keep the originating Telegram thread available for normal conversation; do not block, wait, or poll in-thread.
- If the user says all work should be handled by subagents, the coordinator must not begin a competing implementation. Coordinator only routes, resolves conflicts, verifies receipts, and synthesizes the final revision.
- Use read-only scouts for discovery/research/audit and exactly one implementation owner for artifact writes. Never let multiple workers edit the same revision files.
- If runtime concurrency is lower than requested worker count, queue remaining briefs or use an approved independent worker route. State the constraint plainly; do not silently reduce team size or make the coordinator an unrequested substitute worker.
- Treat reply-to text, attached documents, and screenshots as one instruction packet. Preserve supersession language such as “disregard the last talk track; use this instead.” Hermes session JSONL may retain only the reply caption while omitting the original message's file metadata. Before declaring the replacement payload missing, search the underlying Telegram/Beeper archive for the exact quoted phrase, inspect the original message object, resolve any
mxc://attachment through the supported asset API, and verify filename/size/hash. If the original channel archive and accessible asset stores still do not yield the replacement, stop that workstream as BLOCKED rather than retaining superseded copy. Use thecross-agent-memory-retrievalskill'sreferences/reply-linked-attachment-recovery.mdrecipe. - Worker completion is not package completion. Read back changes, reconcile all seven artifacts, validate, render-check, update state/evidence, and only then publish the standing-authorized website draft.
- If any worker exceeds five minutes, post one compact progress block per worker every five minutes until all finish. Use an ASCII bar, label percentages as estimated unless measured, and include
DoneplusLeft. Completed workers stay visible at 100% while others run. - Never use a progress card as the final delivery. A worker marked 100% is not delivered until the coordinator surfaces the requested payload in-thread: direct mobile-openable sheet/link, substantive answer, edited artifact, or explicit blocker. Do not make Henry or Andy ask “where is it?” after reporting completion.
- When a host supplies a replacement talk-track document, follow
references/host-supplied-talk-track-replacement.md: preserve the full script, close every stale-reference surface, rebuild, validate, render, republish the website draft, and deliver the actual links/results.
See references/host-feedback-parallel-execution.md for routing and receipt templates.
- Henry user ID
855505513and Andy user ID7615999206may each issue lineupAPPROVE,SWAP,DROP,PIN,ORDER, trigger root promotion, and authorize website publication. - Andy may also change workflow, production, video cues, ownership, and section content inside drafts; record changes in
workflow-feedback.md. Other senders cannot approve/promote; ignore and log those commands. - Refresh only developments since the last successful tick and explicit feedback. No-change refreshes return
NO_REPLYwhile still recording successful source cursor/tick evidence. - Refresh tick evidence path: on every REFRESH tick, append a
## YYYY-MM-DD HH:00 EDT — REFRESH tick (<tick-id>)block torunlog.mdthat records (1) gate time and tick ID, (2) lock state on entry, (3) inputs inspected since the last successful tick (showprep directory mtime, workflow-feedback.md, host Telegram topic), (4) story-set unchanged or swap proposed, (5) hash readback of all seven rev artifacts againststate.jsonartifact_hashes (no drift = no rebuild), (6) finding on any new >=9.0 candidate, (7) approval state, (8) pending human action. Treat the wire-output asOK · WeeklyClaw Episode <N> Friday show prep · no action (REFRESH tick HH:00 EDT, ...)so the cron output contract is satisfied without producing a fresh review card. - Two-hour reminder rule: the canonical cron prompt allows one reminder at 2 PM ET FRIDAY (= 14:00 ET / 14:00 EDT during summer) if the package is still UNVALIDATED. Thursday BUILD and Thursday refreshes do not send reminders. Do not repost the full review card; a single short pointer to the review-card artifact paths and the exact APPROVE/SWAP/DROP/PIN/ORDER commands is enough. Do not send a reminder at 12:00 — the BUILD review card is already in the same Telegram topic. Do not confuse "two hours after BUILD" with "2 PM ET": BUILD is at 11:00 ET, so the literal 2 PM ET reminder fires at 14:00 ET, not 13:00 ET. The 13:00 tick is a plain no-change REFRESH, not a reminder slot. Computing "BUILD + 2h = 13:00" is a common mistake — pin the reminder to the literal 14:00 ET hour. When in doubt, read the canonical cron prompt (
~/weeklyclaw/council/current-friday-cron-prompt.md) — the skill text and cron prompt are authoritative; ad-hoc interpretations of "two-hour reminder" are not. - Before 3 PM, propose a replacement only if it is verified, scores >=9.0, and beats the lowest unpinned story by >=0.5. Never silently swap an approved or pinned story.
- Standing interpretation: watch until showtime, mutate until 3 PM. At freeze, state APPROVED or UNVALIDATED, final revision, paths, verification time, unresolved claims, cut order, and remaining human actions. From freeze to handoff, exceptional news may trigger proposal-only alerts; do not mutate artifacts.
- Coverage-gap check at FREEZE (Henry-approved 2026-08-21). Before locking, match the episode window's Henry tweets (
sources/henry-tweets/all.jsonl, originals weighted over RTs, garble-variant regexes perreferences/tweet-vs-aired-overlap.md) against the selected lineup. Any breaking-news topic with >=5 tweets and zero segment presence gets one flag line in the FREEZE message for host decision — flagged, never auto-added. Apply the airtime news-window and launch filters first; tweet volume alone never qualifies a topic, and Henry's lived/first-hand material belongs in the Henry section, not the news rundown. Burn case: Episode 25's Grok Bot had 36 tweets (including Henry's top-engaged original of the window) and got one passing mention at 26:47. - If unvalidated at freeze, leave root artifacts byte-identical. Handoff names exact usable
revs/paths and labels them UNVALIDATED. - Handoff is read-only and maximum 12 lines: State, Done, Now, Blocker, Next, final paths, approval, late story.
Pre-show community promo (X + Discord)
Before each Friday show, post the promo with the Discord event link so viewers can join. The X post and Discord Beeper post are separate delivery paths with different blockers:
X post via Typefully
- Use the WeeklyClaw Typefully key (
~/clawd/secrets/typefully.json→weeklyclaw_key), social set 322715. - The
publish_at: "now"403 fires on any draft containing a URL. Workaround: create the draft (POST), then PATCH it with a future ISO timestamp 2-3 min ahead:PATCH /v2/social-sets/322715/drafts/{id}with{"publish_at": "2026-08-07T19:46:14Z"}. Typefully's internal scheduler publishes within ~4 min. - Poll
GET /v2/social-sets/322715/drafts/{id}untilpublish_stateis"finished"andx_published_urlis non-null. - Do NOT fall back to Bird CLI for WeeklyClaw (auth tokens are stale; Typefully is the sole write surface).
Discord via Beeper (multi-target broadcast)
- The Beeper skill is user-owned (
hermes curator adopt beeperto enable curation). Chat IDs for Friends of the Crustacean:#shell-society:!gXx0enjFRfVVGFs2JAat:beeper.local#general:!vY1OnTVkdVacHw6qAvsB:beeper.local
- POST to
/v1/chats/{chatID}/messageswith{"text": "..."}. The API returnspendingMessageIDonly. - Verify delivery by re-fetching recent messages after 3-5s and matching normalized text (Beeper stores messages as HTML:
\n→<br>, URLs→<a href>, entities escaped). See Beeper skill's HTML normalization section. - The recurring cron
weeklyclaw-beeper-community-promo(script:~/.hermes/scripts/weeklyclaw-beeper-promo.py) handles this deterministically every Friday, gated to show time, with date+content dedup. - Invite-link publication gate (SEV-2 recurrence, fixed 2026-08-21). NEVER hardcode a
discord.gg/<code>(or?event=) link in any promo/post script. Discord invites expire in ~30 days; the promo script shipped the dead Aug 7 invite (SPYQRuAdS, expired Aug 9) on Aug 14 AND Aug 21 even after the Aug 16 postmortem, because the fix landed in theweeklyclaw-discord-invite-rotationcron (which rotatesweeklyclaw.ai/discord) but never rewired the publishing script. Contract now embedded in the script and required for any future link-posting automation:- At runtime, resolve
https://weeklyclaw.ai/discordWITHOUT following redirects (customHTTPRedirectHandlerreturningNone, orcurl -sIand readLocation). Vercel serves a 307 to the current invite. - Validate the extracted code via
GET https://discord.com/api/v10/invites/<code>?with_expiration=true. Require HTTP 200 from the API — a 200 from thediscord.com/invitelanding page proves nothing (Discord serves the generic web shell for dead invites; this false-validation pattern caused the original SEV-2). - Assert
guild.id == 1532061180569587975(Weeklyclaw) and expiry >24h out. Any failure = fail closed, no fallback link, alert. - Discord's API 403s Python's default urllib User-Agent — send a custom UA on every request.
Caveat: this route loses the
?event=<id>deep-link (no event API hook). If the event link matters, an authorized person must supply the event ID weekly; do not synthesize one.
- At runtime, resolve
Structural mid-review edits (slide removal, reorder, layout rebuild)
Verified on Episode 26 rev5→rev6 (2026-08-21). Henry sends a slide screenshot plus terse multi-part commands: remove a slide, move Signal From Outside after all news segments, rebuild the Stripe slide as title-on-top with two artifact images side by side. Full recipe:
- Read the screenshot via tesseract OCR to identify which slide (image contains segment titles/headers). Do not guess from context.
- Write
revs/make_rev<N>.pyoperating on the previous deck with regex block moves:<div class="slide" id="X">.*?\n</div>\n\nspans are the unit of move/remove. Extract → remove → reinsert at the new anchor. - Speaker-notes parity: removing a slide requires deleting its
## s-xnotes section AND folding operational content (cut order, pin directives) into the cold-open notes section. - Regenerate all five derived md files (agenda, talking-points, henry-section, andy-section, host-cheat-sheet) from the prior rev even when unchanged, so the rev numbering stays coherent.
- Layout verification via Playwright
getBoundingClientRecton the rebuilt slide: title.y + title.height < each image.y (title on top), img[0].x + img[0].width < img[1].x (side by side), equal widths. - Republish the website draft; remember newly-referenced assets (a previously-unpublished artifact image must join the git whitelist).
- Deliver a rendered PNG of the rebuilt slide in the Telegram reply.
References
-
Read
references/host-supplied-talk-track-replacement.mdwhenever -
Read
references/host-supplied-talk-track-replacement.mdwhenever Henry or Andy supersedes an existing video/talk track with a document, attachment, or reply-linked script. It defines authority recovery, verbatim preservation, cross-artifact replacement closure, stale-reference checks, rebuild/render/publication gates, and actual-result delivery. -
Read
references/host-shared-resources.mdbefore drafting or when any host shares links, posts, videos, or demos in the WeeklyClaw Telegram topic. It defines the retrieval technique (bird/yt-dlp/curl), the three-tier classification (official/primary, practitioner/hands-on, community/discussion), the four output artifacts (source ledger, agenda production notes, deck Host Resources slide, speaker-notes appendix), the equivalent-resource finding workflow for topics where no host link was shared, and the reusable CSS/slide template for the resources card. -
Read
references/prior-episode-template-authority.mdbefore any BUILD or material deck rebuild. It defines how to discover the prior APPROVED episode as the verbatim visual template, the deterministic template-comparison gate (CSS/SVG/layout-marker parity), the invented-logo rejection rule, sponsor-asset provenance check, the 1600x900 headless-Chromium render-QA recipe, and — for rebuilds after a theme regression — the exact reference values (logo SVG paths, type scale, must-present/must-absent class lists, controls-parity greps) and the working CDP per-slide overflow measurement recipe. -
Read
references/cursor-deck-contract.mdfor the exact fallback evidence and validation recipe. -
Read
references/direct-hermes-build-path.mdfor the documented alternative to the mandatory Cursor route: when the package is small (≤ 14 slides, ≤ ~140 KB total) and the author can produce canonical-theme HTML by hand, the seven-artifact package can be authored in Hermes in a single 11:00 BUILD tick and pass every gate. Includes the dcg shell-parser gotchas,node --check -pattern, lock-release protocol, and the validate_deck.py script invocation. -
Read
references/friday-show-prep-control-plane.mdbefore changing scheduler behavior, recovery, authority, artifact contracts, freeze semantics, or validators. -
Read
references/schedule-change-runbook.mdwhenever the show-prep schedule itself changes (build day, tick hours, check frequency): the change must land in the cron registry, the canonical cron prompt, SKILL.md, and the support references together, or the gate and prompt drift apart. Covers BUILD-day vs show-day decoupling, reminder-slot pinning, and the verification checklist. -
Read
references/post-freeze-verification-and-handoff.mdafter late fact-checks, asset corrections, presenter-link requests, or reports of deck slowness. -
Read
references/handoff-tick-recipe.mdon the Friday 16:00 ET HANDOFF tick: read-only, no regeneration, no Telegram post, 12-line summary format, live SHA-equal re-check at showtime. -
Read
references/publication-runbook.mdwhenever Henry or Andy approves, requests canonical promotion, or says to publish; it defines authority, asset closure, live canaries, and completion evidence. -
Read
references/multi-platform-episode-publication.mdfor every authorized finished-episode release. It defines Geordi account-identity gates, the common release package, full native X upload and reply-chain pattern, Bilibili verification handling, per-platform retry states, deduplication, and the three-URL completion contract. -
Read
references/late-visual-asset-and-qr-edits.mdbefore post-freeze sponsor-logo, social-link, or QR-code edits; it covers concurrent-edit preservation, authoritative-direction sync, and rendered QR decode proof. -
Read
references/website-draft-publication.mdbefore any BUILD or first REFRESH after a BUILD. It defines the git worktree route, what to copy, what NOT to touch (gallery/homepage), thevalidate.mjsconstraints that block naive card additions, the sponsor-order byte-offset check, the missing-publication recovery recipe, and the full sync script path for APPROVE-triggered listing. This is the standing-authorized publication recipe, not a one-off. -
Read
references/draft-publication-recovery.mdwhen a BUILD passed locally but the standing-authorized draft is not live onweeklyclaw.ai(404 on/deck,/agenda-draft, or/host-cheat-sheet), or whenhermes sendto the WeeklyClaw Telegram topic is BLOCKED by dcg. It codifies the recovery recipe, the requiredstate.json.draft_publication+runlog.mdreceipts, thehermes send --fileworkaround for the dcgredirect-truncate-root-homefalse-positive, and the sponsor-order byte-offset check. -
Read
references/on-slide-live-artifacts.mdbefore any BUILD or material news-slide rebuild. It defines the corrected visual-first contract: one dominant picture/video/live artifact, headline, zero to two short context lines, details moved to speaker notes, source capture/provenance, sparse-layout recovery, DOM/render gates, and website asset verification. The former smallON-AIR LIVE ARTIFACTpanel beside dense copy is explicitly rejected. -
Read
references/cross-episode-segment-comparison.mdwhen Henry asks to compare news segments across episodes or screenshot specific slides from prior decks: latest-rev discovery, per-episode slide-ID variance, hash-targeted headless-Chrome screenshots at 1600x900, the vision-free slide-identity verification chain (<div>not<section>), PIL contact-sheet delivery, and the editorial-continuity comparison output. -
Read
references/aired-video-comparison.mdwhen Henry says "compare the slides in the video" (aired YouTube video, not the deck files) or asks to check a planned lineup against what actually aired. It defines the channel RSS discovery route, the yt-dlpplayer_client=android403 workaround, the OCR-based slide-identification pipeline (aHash dedupe → dense scan → tesseract, no vision model needed, never binarize the cream-on-teal theme), and the editorial pattern checks (mix balance, duplicate-thesis merge, category gaps). Aired video is the editorial ground truth: early agenda revisions do NOT match it (EP24 agenda rev1 ≠ final deck rev3 ≠ nothing), and on-air visuals often diverge from the deck even when segment identity matches. Henry's confirmed takeaway from the EP24/25 review (2026-08-20): "live artifact is the right insight" — when presenting comparison findings, lead with the live-artifact observation, not secondary pattern-gap observations. -
Read
references/host-triggered-rebuild.mdwhenever Henry or Andy explicitly commands a deck regeneration/material rebuild between scheduled ticks (or the Friday 11 ET REFRESH acts on deferred lint debt). It defines the authorized trigger classes, the rev-derivation-by-script sequence, the validator setup gotchas (copyqa/validate_deck.pyfrom the prior episode;revs/assetssymlink for relative media resolution), the two recurring slide-ID parity failure shapes (missings-title, duplicates-sources/s-outro), the regression-vs-prior-rev render-QA gate, and the republish + receipt contract. Verified on Episode 26 rev1 → rev2. -
Read
references/rolling-candidate-intake.mdfor the daily (non-Friday) candidate-intake cron: the multi-tool source-verification toolchain (bird → Exa → Jina Reader fallback → HF API → gh API), mandatory Henry X pulse calibration via@iAmHenryMascot, candidate-block structure, evidence-discipline labels, editorial-thread synthesis, explicit non-candidate ledger, and sheet-sync step. The Sheet is an audit ledger, not a voting gate; clear evidence-led selections proceed without asking Henry to vote. -
Read
references/guest-intelligence.mdwhen building or operating a news-triggered guest pipeline. It defines the weekly Chinese AI ecosystem scan, 10/15 scorecard, internal 2–5-speaker mapping, named-person/concrete-role requirement, Jim-owned Guests ledger schema, underlying-hook deduplication, evidence-only relationship notes, Sheets-only write path when Drive placement cannot be changed, authenticated row readback, and current Guests-tabgidverification. -
Read
references/no-change-refresh-recipe.mdon every REFRESH tick that finds no host feedback and no drift: it codifies the input-inspection list, therunlog.mdevidence block template, theOK · <job> · no actionwire output, and the 14:00 ET 2 PM reminder posting recipe (and the BUILD+2h vs. literal 2 PM ET trap). -
Read
references/weeklyclaw-x-news-drafts-notes.mdfor the parallel x-news-drafts cron (8db1b4ad59f7): Typefully v2 API gotchas, media-guard recipe, working non-Polymarket news sources, gap-priority override, and combined-queue dedup pattern. -
Read
references/henry-tweet-backup.mdfor the Henry tweet backup pipeline that feeds story selection: canonical~/weeklyclaw/sources/henry-tweets/store, thehenry-tweets-daily-backupscript-only cron (every 4h, silent on success), bird-CLI JSON parsing quirks (raw_decodefrom first[; info-line prefix; trailing data), cursor-pagination deep backfill when the 200-tweet window (~6 days at Henry's volume) doesn't reach the target episode, staleness fallback, the prior-episode tweet dedup rule, and the post-change verification recipe. -
Read
references/tweet-vs-aired-overlap.mdwhen Henry asks to compare his tweets against what actually aired on an episode: aired-transcript ground truth (yt-dlp channel discovery, auto-caption garble variants like "queen"=Qwen and "Glockbot"=Grok Bot), tweet-window construction (prior episode airtime boundary, 20:00 UTC), the topic-matrix + engagement method, the news-grade lineup filter, the FREEZE coverage-gap step, and the bidirectional coverage-gap findings from Ep24/Ep25. -
Use
templates/agenda-template.mdas the packaged agenda baseline; reconcile the workspacetemplate.mdagainst it. -
Read
references/beehiiv-newsletter.mdbefore any WeeklyClaw newsletter/Beehiiv work (Monday written-roundup edition): publication facts, credential location (Vaultwarden), sending-domain check, and the draft-then-approve send contract. -
Read
references/thumbnail-host-likeness-rules.mdbefore any WeeklyClaw thumbnail generation, QA, or regen request. It defines the verified Andy/Henry identity mapping and placement, the ground-truth card reference assets on Enterprise (card wins on any conflict), the "broad-but-generic chiselled bald podcast man" rejection criteria, Andy's positive soft-tissue likeness markers, the geometry+soft-tissue dual QA gate, and the Nano Banana Pro generation route. -
Read the existing
scheduled-intelligence-syncskill for source/date normalization, atomic state promotion, and artifact-hash discipline.
Pitfalls
- Artifact present is not artifact dominant. Do not treat a loaded image, screenshot thumbnail, or small labeled artifact card as compliance. For What Happened This Week, the picture/video/live artifact must visually dominate; on-slide copy stays at headline plus zero to two short lines. If layout pressure leads to shrinking the artifact or fitting dense prose, delete the prose and move it to speaker notes. Use
references/on-slide-live-artifacts.md. - Logged in somewhere is not logged in on the operable target. A user screenshot, cookie-domain presence, Chrome profile name, saved tab, or prior receipt cannot authorize a write from another browser instance. Immediately before X/Bilibili publication, prove the required account in the exact connected host + browser/profile that will perform the write. If identities differ, stop without posting, name both identities, and ask for the required accoun
Truncated - read the full file at https://github.com/h-mascot/weeklyclaw-ai/blob/b1b4bd62cbf59b2c0fa95a4d2d5165f181b5510c/episodes/28/model-context-dump/skill/SKILL.md.