Docs/Skills and code/skill video-script-production

.claude/skills/video-script-production/references/launch-prompt.md

Markdown99 lines15.3 KBSkill: video-script-production

What the file says about itself

The launch prompt: A prompt that makes a fresh Claude session (including a small model such as Haiku) run the whole pipeline for one topic, faithfully, from "given X" to a hand-off at the v6 bar.

Mentioned on: page 06, page 12, page in

The launch prompt

A prompt that makes a fresh Claude session (including a small model such as Haiku) run the whole pipeline for one topic, faithfully, from "given X" to a hand-off at the v6 bar. Paste it as the first message of a new session started in the repository root. The session reads CLAUDE.md on its own; the prompt does not rely on that.

What to change for another topic (everything else stays): TOPIC, ENTITY, SLUG (the topic lower-cased with dashes, e.g. the-fall-of-<name>), the --also queries, the "Topic-specific care" paragraph, and the two switches SUBAGENTS and COMMIT.

The switches. Subagents are off by default, which makes S2 a lite teardown (option C) and the reader pass "skipped: not authorised". To authorise them, change the SUBAGENTS line to AUTHORISED: Sonnet analysts for S2 (option A) and two blind readers for S10.

Why it is written this way. It names the files to read and the commands to run, so nothing depends on the model remembering; it keeps state in a progress file, so a long run survives a context reset; it forbids the shortcuts that would fake a pass (editing the rules, inventing quotes, claiming a gate that did not print); and it says what to do when stuck, so the result is an honest partial rather than a bluff.


The prompt (Cafe Coffee Day)

You are running a documented, tested pipeline in this repository. Follow the written procedure exactly; do not invent a different one. Your job: produce a finished video-script package about the topic below, at the quality bar of an approved example (Moser Baer v6), and report honestly what you reached.

TOPIC: the fall of Cafe Coffee Day
ENTITY (the name a video title must contain): Coffee Day
SLUG: the-fall-of-cafe-coffee-day      (work in research/the-fall-of-cafe-coffee-day/)
VERSION: v1
LANGUAGE: English
SUBAGENTS: NOT AUTHORISED. Do not spawn any agent. Use S2 option C. Record "Reader pass: skipped: not authorised".
COMMIT / PUSH: NOT AUTHORISED. Never run git commit, git push, or any command that changes git history.

== STEP 0: READ FIRST (do not skip; do not skim) ==
Read these files completely, in this order, before doing anything else:
1. CLAUDE.md
2. .claude/skills/video-script-production/SKILL.md
3. .claude/skills/video-script-production/references/runbook.md
4. .claude/skills/video-script-production/references/quality-bar.md
5. .claude/skills/video-script-production/references/learnings.md   (apply the [method] and [measure] bullets)
6. .claude/skills/video-script-production/examples/moser-baer-v6/README.md
Then open .claude/skills/video-script-production/examples/moser-baer-v6/SCRIPT-v6.md (section 3, the voice-over) and chain-v6.json. They are your model for FORM. Copy the structure and the way each declared field appears in the text. Never copy its sentences or facts.

Run `date -u +%Y-%m-%dT%H:%M:%SZ` now and write the result at the top of research/the-fall-of-cafe-coffee-day/script/PROGRESS.md as "START (UTC): ..." (create the folders). You will need it for session-log.js at the end. After EVERY stage, append: the stage, what you produced (file paths), the gate result, and the next action. If you ever lose context, re-read CLAUDE.md, runbook.md and PROGRESS.md, then run:
node .claude/skills/video-script-production/scripts/check.js --dir research/the-fall-of-cafe-coffee-day/script --version v1 --no-selftest
It tells you which stage the files show and what to do next.

== HARD RULES ==
- Never edit these files: scripts/rules.json, lint.js, selftest.js, check.js, ledger-check.js, voice-patterns.json (all under .claude/skills/video-script-production/scripts/). Fix the SCRIPT, never the rules.
- Never invent a source, a quote, a figure or a date. Every fact gets a status in the fact base: [V] you opened the page and read it; [V-search] you only saw a search-result summary; [CHECK] unverified; derived (show the arithmetic); analysis (your reasoning, and the script says so aloud). A figure with no source does not go in the script.
- Every quote you declare in the chain must be words that really occur in the script text (ignoring case and punctuation). Draft the voice-over first, then copy quotes out of it.
- Write code and regexes with the Write or Edit tool. Never use shell heredocs or sed for code: they swallow backslashes.
- Do not run topic-research with --refresh. Do not delete any folder under research/.
- Do not say a gate passed unless the tool printed it. Paste the real output line. Never claim BAR MET unless check.js printed "BAR MET".
- If a hard gate still fails after 5 honest attempts, STOP, write exactly what fails and why in HANDOFF-v1.md, and report the stage you reached. A truthful partial result is the correct outcome; a faked pass is the worst one.

== THE STAGES (the full detail is in the files named; open each file at the start of its stage) ==

S0 SET UP.
node .claude/skills/video-script-production/scripts/scaffold.js --dir research/the-fall-of-cafe-coffee-day/script --version v1 --beats 13 --title "Cafe Coffee Day"
This writes SCRIPT-v1.md, chain-v1.json, FACTS.md and HANDOFF-v1.md. Run check.js once (it will fail; that proves it runs).

S1 RIVAL-VIDEO BRIEF. Read references/s1-rival-brief.md fully. Then run it in the BACKGROUND using the Bash tool's run_in_background option (it takes roughly 20 to 30 minutes; you will be notified when it ends; do not poll it in a loop):
node src/topic-research/cli.js "the fall of cafe coffee day" --entity="Coffee Day" --max=8 --also="cafe coffee day siddhartha" --also="cafe coffee day kaise doob gaya" --also="coffee day enterprises debt"
While it runs, start S3 on the people (below). When it finishes, FIRST open research/the-fall-of-cafe-coffee-day/search.json and check the 8 "selected" videos are about the COLLAPSE or the story (not "National Coffee Day", recipes, franchise-opening advice, stock tips, or other companies). If some are wrong, edit "selected" in search.json (copy entries from "candidates"), re-run the same command without --refresh, and write the swap and the reason in PROGRESS.md. If fewer than 4 on-topic videos remain, look in "candidates" for videos whose reject_reason is entity_not_in_title_or_channel (for example titles that only say "CCD") and copy the good ones into "selected". Then mine report.md into FACTS.md as [CHECK] rows exactly as the table in section 4 of the S1 file says. Gate: the checklist in section 5 of the S1 file.

S2 TEARDOWN (option C, no subagents). Read references/s2-teardown.md fully. Read the genre baseline in its section 7. Read the 2 or 3 biggest ON-TOPIC rival transcripts (research/the-fall-of-cafe-coffee-day/transcripts/*.txt) yourself, and write research/the-fall-of-cafe-coffee-day/teardown/SYNTHESIS.md from the template in section 6 of that file. Every claim in it needs a quote and a timestamp from the transcript. State at the top: "S2 option C". Gate: section 8 of the S2 file.

S3 FACT BASE. Read references/research-protocol.md fully, and use .claude/skills/video-script-production/references/research-log.md as a pattern for the searches. Use WebSearch and WebFetch. Work in the order in section 2 of the protocol: the person and the early company first; the rise; the turn; the responses; the debt and its dates; the end; the people who paid; the blame question; then the rival claims you will refute. Prefer rating-agency notes, regulator and court or tribunal orders, company filings and results as reported by wires, and business magazines (Business Today, Outlook Business, Business Standard, Economic Times, Mint, Moneylife, The Hindu BusinessLine). Wikipedia is a map to find cited pages, not a source. Fill FACTS.md: facts, causal claims (find a source for the LINK, not just the numbers), magnitude cross-check (every key figure in two independent sources), people, do-not-use claims. Gate: runbook S3 line. If a causal claim has no source, weaken the thesis; do not invent support.
Threads to investigate (leads only; none of this is verified; do not assume any of it): the founder, his background, the family and the plantation roots; the growth of the cafe chain and the group structure and its listed company; how the company was funded and how much debt, to whom, on what dates; any stake sales; what the founder wrote or said before his death; the regulator and tax findings; closures and competition; what happened to employees, lenders and franchisees; what rival videos claim that you cannot find in any record.

Topic-specific care. The founder's death in 2019 is public record but it is a person's death and a family's grief. Treat it with restraint: state only what national outlets and official findings state, in one or two plain sentences, no detail of how, no speculation about why, no dramatisation, and no claim taken from a rival video alone. Put it in the hand-off under "Decisions for the user" so a human decides how much to say. Named living people (family, executives, lenders) are named only if on the record in a national outlet; any allegation is stated as an allegation with the agency and the outcome (charged, found, discharged, appealed); never use "scam", "fraud", "villain" or "criminal" without a conviction or a final finding. Say aloud in the script what you could not find.

S4 THESIS AND PACKAGING. Read references/opening-protocol.md fully. Write 4 scored candidates for the core driving loop (one chosen), the destination hint (under 20 words, no route terms), the withheld list, the one-line thesis, the named idea / governing metaphor, the promise ladder (3 rungs and 1 unannounced bonus), and 3 title options with any word that outruns the evidence flagged. Do not pick the final title for the user: give the working title and alternates.

S5 CHAIN AND TEXTURE PLAN. Read references/chain-schema.md, references/texture.md, references/implicit-pull.md, references/beat-contract.md, references/stakes-and-load.md. Plan in PROGRESS.md as a table, one row per beat: story part (origin, rise, turn, response, fall, people, blame, lesson), opening move (person / scene / viewer / parable), claim, number and its landing, figure, which line is earnest and which aloof, the junction to the next beat (THEREFORE or BUT with a reason, never "and then"). Required: a protagonist with a want, a counterpart, a witness who pays (a real, on-the-record person), the viewer addressed as "you" in the hook, the middle and the close, one governing metaphor with its limit stated aloud, a gloss by analogy for each hard term, one or two parables with NO figures inside, at most 7 hero numbers each followed by a landing sentence with no figure, at least 4 pulls of at least 3 kinds, a hook of 60 to 110 seconds that carries a named person with a want, the rise, the fall, a stake for "you", two moments to look forward to, and the learning. Fill chain-v1.json structure now; leave quotes empty until S6. Then declare the clarity plan (SKILL.md Step 3 item 8; references/principles.md lessons K, L, M; chain-schema.md): tags for every person (role or relation, to be said where they arrive and where they return), the witness cost_quote, audience.known_terms, counted_sets for every spoken count, concepts for every named idea, one_off_names with reasons, a headline_quote for each dense beat, and turn_quote, tease_quote and takeaway_quote in cdl.hook_elements.

S6 DRAFT THE VOICE-OVER. Read SKILL.md Step 4. Write SCRIPT-v1.md section 3: beat by beat, HOOK LAST, one **VO:** line per paragraph. Each beat: a person or a picture, then the claim, then the number, then a landing. Care line before the beat's first figure. Name a person before any "he" or "she". Contractions; sentences you can say in one breath. Hedge what you cannot show, aloud. Also fill the other sections of SCRIPT-v1.md: packaging, spine, what changed (say "first version"), the fact ledger (every row with its status and source URL), the illustrations table, the do-not-use table, the open items. Then fill every quote in chain-v1.json by copying words out of the script.

S7 TWO PASSES. Texture pass (SKILL.md Step 4a): answer each question there and fix. Then voice pass (references/voice.md): remove staged run-ups, "not X, it is Y", stock phrases, written-English sentences. Add, then subtract. Then the clarity pass (SKILL.md Step 4c; read-aloud-checklist.md items 20 to 26): tag every person, cut or tie any name that appears once, back every count, define each named idea once, speak every BUT, say the cost where a person pays, give each dense beat its headline.

S8 GATE LOOP. Run:
node .claude/skills/video-script-production/scripts/check.js --dir research/the-fall-of-cafe-coffee-day/script --version v1 --fix
Fix the FAILs and WARNs in the script using references/lint-fixes.md (it lists each rule and the fix that worked). Re-run until the hard gates pass and the warnings are zero. Use --no-selftest while drafting; run the full command (without it) before you stop.

S9 READ-ALOUD PASS. node .claude/skills/video-script-production/scripts/extract-vo.js --script research/the-fall-of-cafe-coffee-day/script/SCRIPT-v1.md --mode timed, then answer every item of references/read-aloud-checklist.md. Fix, re-run S8, and write in HANDOFF-v1.md: "Read-aloud pass: done (date; what you found)".

S10 READERS. Not authorised. Write in HANDOFF-v1.md: "Reader pass: skipped: not authorised".

S11 HAND-OFF. Fill HANDOFF-v1.md: the line "Unproven: <one sentence>" on the same line, the decisions for the user (title; naming private people; the founder's death; reader pass; commit/push), the open items (every [CHECK] and [V-search] row, plus the "I" claims the presenter must be able to make truthfully), what changed. Then run:
node .claude/skills/video-script-production/scripts/session-log.js --since <the START (UTC) value from PROGRESS.md> --out research/the-fall-of-cafe-coffee-day/script/RESEARCH-LOG-v1.md
Append what you learned to .claude/skills/video-script-production/references/learnings.md as [method] / [measure] / [content] bullets headed "Cafe Coffee Day v1". Run check.js one last time (the full command, with the damage test).

== YOUR FINAL MESSAGE ==
Follow references/handoff-template.md. Use plain words. State: the exact last line check.js printed (BAR MET / HARD GATES PASS, BAR NOT YET MET / HARD GATES FAILING) and the stage you reached; the files you produced with paths; the thesis in one line; the number of facts verified [V] versus [V-search] versus [CHECK]; what is unproven (the linter proves only that the declared structure matches the text; nothing was tested on viewers; no blind reader ran); every correction or surprise you found; and the decisions for the user. Do not claim more than the tools showed.

Notes for whoever launches it

Show the raw text
# The launch prompt

A prompt that makes a fresh Claude session (including a small model such as Haiku) run the whole pipeline for one topic, faithfully, from "given X" to a hand-off at the v6 bar. Paste it as the first message of a new session started in the **repository root**. The session reads `CLAUDE.md` on its own; the prompt does not rely on that.

**What to change for another topic** (everything else stays): `TOPIC`, `ENTITY`, `SLUG` (the topic lower-cased with dashes, e.g. `the-fall-of-<name>`), the `--also` queries, the "Topic-specific care" paragraph, and the two switches `SUBAGENTS` and `COMMIT`.

**The switches.** Subagents are off by default, which makes S2 a lite teardown (option C) and the reader pass "skipped: not authorised". To authorise them, change the SUBAGENTS line to `AUTHORISED: Sonnet analysts for S2 (option A) and two blind readers for S10`.

**Why it is written this way.** It names the files to read and the commands to run, so nothing depends on the model remembering; it keeps state in a progress file, so a long run survives a context reset; it forbids the shortcuts that would fake a pass (editing the rules, inventing quotes, claiming a gate that did not print); and it says what to do when stuck, so the result is an honest partial rather than a bluff.

---

## The prompt (Cafe Coffee Day)

```
You are running a documented, tested pipeline in this repository. Follow the written procedure exactly; do not invent a different one. Your job: produce a finished video-script package about the topic below, at the quality bar of an approved example (Moser Baer v6), and report honestly what you reached.

TOPIC: the fall of Cafe Coffee Day
ENTITY (the name a video title must contain): Coffee Day
SLUG: the-fall-of-cafe-coffee-day      (work in research/the-fall-of-cafe-coffee-day/)
VERSION: v1
LANGUAGE: English
SUBAGENTS: NOT AUTHORISED. Do not spawn any agent. Use S2 option C. Record "Reader pass: skipped: not authorised".
COMMIT / PUSH: NOT AUTHORISED. Never run git commit, git push, or any command that changes git history.

== STEP 0: READ FIRST (do not skip; do not skim) ==
Read these files completely, in this order, before doing anything else:
1. CLAUDE.md
2. .claude/skills/video-script-production/SKILL.md
3. .claude/skills/video-script-production/references/runbook.md
4. .claude/skills/video-script-production/references/quality-bar.md
5. .claude/skills/video-script-production/references/learnings.md   (apply the [method] and [measure] bullets)
6. .claude/skills/video-script-production/examples/moser-baer-v6/README.md
Then open .claude/skills/video-script-production/examples/moser-baer-v6/SCRIPT-v6.md (section 3, the voice-over) and chain-v6.json. They are your model for FORM. Copy the structure and the way each declared field appears in the text. Never copy its sentences or facts.

Run `date -u +%Y-%m-%dT%H:%M:%SZ` now and write the result at the top of research/the-fall-of-cafe-coffee-day/script/PROGRESS.md as "START (UTC): ..." (create the folders). You will need it for session-log.js at the end. After EVERY stage, append: the stage, what you produced (file paths), the gate result, and the next action. If you ever lose context, re-read CLAUDE.md, runbook.md and PROGRESS.md, then run:
node .claude/skills/video-script-production/scripts/check.js --dir research/the-fall-of-cafe-coffee-day/script --version v1 --no-selftest
It tells you which stage the files show and what to do next.

== HARD RULES ==
- Never edit these files: scripts/rules.json, lint.js, selftest.js, check.js, ledger-check.js, voice-patterns.json (all under .claude/skills/video-script-production/scripts/). Fix the SCRIPT, never the rules.
- Never invent a source, a quote, a figure or a date. Every fact gets a status in the fact base: [V] you opened the page and read it; [V-search] you only saw a search-result summary; [CHECK] unverified; derived (show the arithmetic); analysis (your reasoning, and the script says so aloud). A figure with no source does not go in the script.
- Every quote you declare in the chain must be words that really occur in the script text (ignoring case and punctuation). Draft the voice-over first, then copy quotes out of it.
- Write code and regexes with the Write or Edit tool. Never use shell heredocs or sed for code: they swallow backslashes.
- Do not run topic-research with --refresh. Do not delete any folder under research/.
- Do not say a gate passed unless the tool printed it. Paste the real output line. Never claim BAR MET unless check.js printed "BAR MET".
- If a hard gate still fails after 5 honest attempts, STOP, write exactly what fails and why in HANDOFF-v1.md, and report the stage you reached. A truthful partial result is the correct outcome; a faked pass is the worst one.

== THE STAGES (the full detail is in the files named; open each file at the start of its stage) ==

S0 SET UP.
node .claude/skills/video-script-production/scripts/scaffold.js --dir research/the-fall-of-cafe-coffee-day/script --version v1 --beats 13 --title "Cafe Coffee Day"
This writes SCRIPT-v1.md, chain-v1.json, FACTS.md and HANDOFF-v1.md. Run check.js once (it will fail; that proves it runs).

S1 RIVAL-VIDEO BRIEF. Read references/s1-rival-brief.md fully. Then run it in the BACKGROUND using the Bash tool's run_in_background option (it takes roughly 20 to 30 minutes; you will be notified when it ends; do not poll it in a loop):
node src/topic-research/cli.js "the fall of cafe coffee day" --entity="Coffee Day" --max=8 --also="cafe coffee day siddhartha" --also="cafe coffee day kaise doob gaya" --also="coffee day enterprises debt"
While it runs, start S3 on the people (below). When it finishes, FIRST open research/the-fall-of-cafe-coffee-day/search.json and check the 8 "selected" videos are about the COLLAPSE or the story (not "National Coffee Day", recipes, franchise-opening advice, stock tips, or other companies). If some are wrong, edit "selected" in search.json (copy entries from "candidates"), re-run the same command without --refresh, and write the swap and the reason in PROGRESS.md. If fewer than 4 on-topic videos remain, look in "candidates" for videos whose reject_reason is entity_not_in_title_or_channel (for example titles that only say "CCD") and copy the good ones into "selected". Then mine report.md into FACTS.md as [CHECK] rows exactly as the table in section 4 of the S1 file says. Gate: the checklist in section 5 of the S1 file.

S2 TEARDOWN (option C, no subagents). Read references/s2-teardown.md fully. Read the genre baseline in its section 7. Read the 2 or 3 biggest ON-TOPIC rival transcripts (research/the-fall-of-cafe-coffee-day/transcripts/*.txt) yourself, and write research/the-fall-of-cafe-coffee-day/teardown/SYNTHESIS.md from the template in section 6 of that file. Every claim in it needs a quote and a timestamp from the transcript. State at the top: "S2 option C". Gate: section 8 of the S2 file.

S3 FACT BASE. Read references/research-protocol.md fully, and use .claude/skills/video-script-production/references/research-log.md as a pattern for the searches. Use WebSearch and WebFetch. Work in the order in section 2 of the protocol: the person and the early company first; the rise; the turn; the responses; the debt and its dates; the end; the people who paid; the blame question; then the rival claims you will refute. Prefer rating-agency notes, regulator and court or tribunal orders, company filings and results as reported by wires, and business magazines (Business Today, Outlook Business, Business Standard, Economic Times, Mint, Moneylife, The Hindu BusinessLine). Wikipedia is a map to find cited pages, not a source. Fill FACTS.md: facts, causal claims (find a source for the LINK, not just the numbers), magnitude cross-check (every key figure in two independent sources), people, do-not-use claims. Gate: runbook S3 line. If a causal claim has no source, weaken the thesis; do not invent support.
Threads to investigate (leads only; none of this is verified; do not assume any of it): the founder, his background, the family and the plantation roots; the growth of the cafe chain and the group structure and its listed company; how the company was funded and how much debt, to whom, on what dates; any stake sales; what the founder wrote or said before his death; the regulator and tax findings; closures and competition; what happened to employees, lenders and franchisees; what rival videos claim that you cannot find in any record.

Topic-specific care. The founder's death in 2019 is public record but it is a person's death and a family's grief. Treat it with restraint: state only what national outlets and official findings state, in one or two plain sentences, no detail of how, no speculation about why, no dramatisation, and no claim taken from a rival video alone. Put it in the hand-off under "Decisions for the user" so a human decides how much to say. Named living people (family, executives, lenders) are named only if on the record in a national outlet; any allegation is stated as an allegation with the agency and the outcome (charged, found, discharged, appealed); never use "scam", "fraud", "villain" or "criminal" without a conviction or a final finding. Say aloud in the script what you could not find.

S4 THESIS AND PACKAGING. Read references/opening-protocol.md fully. Write 4 scored candidates for the core driving loop (one chosen), the destination hint (under 20 words, no route terms), the withheld list, the one-line thesis, the named idea / governing metaphor, the promise ladder (3 rungs and 1 unannounced bonus), and 3 title options with any word that outruns the evidence flagged. Do not pick the final title for the user: give the working title and alternates.

S5 CHAIN AND TEXTURE PLAN. Read references/chain-schema.md, references/texture.md, references/implicit-pull.md, references/beat-contract.md, references/stakes-and-load.md. Plan in PROGRESS.md as a table, one row per beat: story part (origin, rise, turn, response, fall, people, blame, lesson), opening move (person / scene / viewer / parable), claim, number and its landing, figure, which line is earnest and which aloof, the junction to the next beat (THEREFORE or BUT with a reason, never "and then"). Required: a protagonist with a want, a counterpart, a witness who pays (a real, on-the-record person), the viewer addressed as "you" in the hook, the middle and the close, one governing metaphor with its limit stated aloud, a gloss by analogy for each hard term, one or two parables with NO figures inside, at most 7 hero numbers each followed by a landing sentence with no figure, at least 4 pulls of at least 3 kinds, a hook of 60 to 110 seconds that carries a named person with a want, the rise, the fall, a stake for "you", two moments to look forward to, and the learning. Fill chain-v1.json structure now; leave quotes empty until S6. Then declare the clarity plan (SKILL.md Step 3 item 8; references/principles.md lessons K, L, M; chain-schema.md): tags for every person (role or relation, to be said where they arrive and where they return), the witness cost_quote, audience.known_terms, counted_sets for every spoken count, concepts for every named idea, one_off_names with reasons, a headline_quote for each dense beat, and turn_quote, tease_quote and takeaway_quote in cdl.hook_elements.

S6 DRAFT THE VOICE-OVER. Read SKILL.md Step 4. Write SCRIPT-v1.md section 3: beat by beat, HOOK LAST, one **VO:** line per paragraph. Each beat: a person or a picture, then the claim, then the number, then a landing. Care line before the beat's first figure. Name a person before any "he" or "she". Contractions; sentences you can say in one breath. Hedge what you cannot show, aloud. Also fill the other sections of SCRIPT-v1.md: packaging, spine, what changed (say "first version"), the fact ledger (every row with its status and source URL), the illustrations table, the do-not-use table, the open items. Then fill every quote in chain-v1.json by copying words out of the script.

S7 TWO PASSES. Texture pass (SKILL.md Step 4a): answer each question there and fix. Then voice pass (references/voice.md): remove staged run-ups, "not X, it is Y", stock phrases, written-English sentences. Add, then subtract. Then the clarity pass (SKILL.md Step 4c; read-aloud-checklist.md items 20 to 26): tag every person, cut or tie any name that appears once, back every count, define each named idea once, speak every BUT, say the cost where a person pays, give each dense beat its headline.

S8 GATE LOOP. Run:
node .claude/skills/video-script-production/scripts/check.js --dir research/the-fall-of-cafe-coffee-day/script --version v1 --fix
Fix the FAILs and WARNs in the script using references/lint-fixes.md (it lists each rule and the fix that worked). Re-run until the hard gates pass and the warnings are zero. Use --no-selftest while drafting; run the full command (without it) before you stop.

S9 READ-ALOUD PASS. node .claude/skills/video-script-production/scripts/extract-vo.js --script research/the-fall-of-cafe-coffee-day/script/SCRIPT-v1.md --mode timed, then answer every item of references/read-aloud-checklist.md. Fix, re-run S8, and write in HANDOFF-v1.md: "Read-aloud pass: done (date; what you found)".

S10 READERS. Not authorised. Write in HANDOFF-v1.md: "Reader pass: skipped: not authorised".

S11 HAND-OFF. Fill HANDOFF-v1.md: the line "Unproven: <one sentence>" on the same line, the decisions for the user (title; naming private people; the founder's death; reader pass; commit/push), the open items (every [CHECK] and [V-search] row, plus the "I" claims the presenter must be able to make truthfully), what changed. Then run:
node .claude/skills/video-script-production/scripts/session-log.js --since <the START (UTC) value from PROGRESS.md> --out research/the-fall-of-cafe-coffee-day/script/RESEARCH-LOG-v1.md
Append what you learned to .claude/skills/video-script-production/references/learnings.md as [method] / [measure] / [content] bullets headed "Cafe Coffee Day v1". Run check.js one last time (the full command, with the damage test).

== YOUR FINAL MESSAGE ==
Follow references/handoff-template.md. Use plain words. State: the exact last line check.js printed (BAR MET / HARD GATES PASS, BAR NOT YET MET / HARD GATES FAILING) and the stage you reached; the files you produced with paths; the thesis in one line; the number of facts verified [V] versus [V-search] versus [CHECK]; what is unproven (the linter proves only that the declared structure matches the text; nothing was tested on viewers; no blind reader ran); every correction or surprise you found; and the decisions for the user. Do not claim more than the tools showed.
```

---

## Notes for whoever launches it

- Start the session with the repo root as the working directory. A new session loads `CLAUDE.md` by itself.
- Expect a long run: S1 alone is 20 to 30 minutes, and S3 is the longest part. If the session stops, start a new one with the same prompt; the first thing it does is run `check.js`, which reads the files and resumes.
- The result is judged by `check.js` and by the hand-off message. Open `STATUS-v1.md` and `HANDOFF-v1.md` first; then read `SCRIPT-v1.md` aloud before trusting it.
- Things this prompt cannot guarantee: that a small model writes a script that is likeable, that its sources are good, or that it resists shortcuts. The hard rules and the gates are the safeguard; the read-aloud pass and a human read are the check.
- After the run, compare against the quality bar and add what it taught to `learnings.md`. The first run on a new topic is also the validation of the runbook.

Shown as it is in the repository at build time (2026-11-03); the home directory appears as <home>. If this page and the file differ, the file is right. Back to the catalogue.