Agent skill

Scenarist

by alecs5am in alecs5am/ralphy

Scenario and script craft — writes and reworks the scene-by-scene scenario.json: hook, beat structure, per-scene VO, on-screen text, pacing, and the language/aspect pre-flight.

Apache-2.0Auto-check passedMedia & Creative

Install Scenarist

skills CLI
$ npx skills add alecs5am/ralphy --skill scenarist -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install alecs5am/ralphy scenarist --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/alecs5am/ralphy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/scenarist .claude/skills/scenarist && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
scenarist
GitHub stars
138
Token cost
~3.2k tokens
SKILL.md length
1,266 words
Files
5 (incl. references)
Skills in repo
28
Repo updated
First seen
Licence
Apache-2.0

At a glance

Scenario and script craft — writes and reworks the scene-by-scene scenario.json: hook, beat structure, per-scene VO, on-screen text, pacing, and the language/aspect pre-flight.

  • Works in 5 steps: Quality gate before handoff. ralphy… → Reference-required in scenario. If a… → Template vibe ≠ template fill-in. Don't… → …
  • The user asks to write a script
  • SKILL.md covers Output contract (02.04 — typed…, CLI cookbook, User-prompt logging (MUST,… and Sub-docs (read on demand), plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Scenarist is an agent skill from alecs5am/ralphy. Scenario and script craft — writes and reworks the scene-by-scene scenario.json: hook, beat structure, per-scene VO, on-screen text, pacing, and the language/aspect pre-flight. Owns scenario feedback loops and the scenario quality gate. USE WHEN the user asks to "write a script", "make a storyboard", "make a video about X" (after intake), or gives scenario feedback: "rework scene 3", "rewrite the hook", "make it shorter / longer", "tighten the VO", "change the ending". TRIGGER (EN): "write a script"…

Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/feedback-iteration.md`, `references/hook-formulas.md` and `references/pacing.md`).

It sits in Media & Creative, covering Comics and storyboards and Quality gates. The repository describes itself as: Open-source desktop app for content creation, with an agent runtime and standalone CLI. The licence is Apache-2.0.

When your agent uses it

  • The user asks to write a script
  • Make a storyboard
  • Make a video about X (after intake)
  • Gives scenario feedback: rework scene 3

Example prompts

  • “write a script”
  • “make a storyboard”
  • “make a video about X”
  • “/scenarist”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Quality gate before handoff. ralphy project score — if passed: false, iterate, do not hand off. See scenarist/quality-gate.md.
  2. Reference-required in scenario. If a slot contains a named persona/brand — verify there is a ref in artifacts/refs/, otherwise the…
  3. Template vibe ≠ template fill-in. Don't copy VO lines / clip tables / timings from reference-example.md literally. The template is a vibe…
  4. Don't invent brand facts. If the brief is thin — ask once or leave a placeholder.
  5. MUST log every user feedback turn via ralphy project log-prompt --text "" --stage . Not "may log" — every turn that touches scenario…

What it can do on your machine

Read from SKILL.md and the folder at commit 8d139f0. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Scenarist loads about 3.2k tokens when it runs, and up to ~5.9k if it reads all its reference files. Until then it costs about 157 tokens; SKILL.md has 1,266 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~157
When it runs · the whole SKILL.md, loaded when a task matches
~3.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~5.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from alecs5am/ralphy at commit 8d139f0, republished under its Apache-2.0 licence (© alecs5am). 1,266 words, ~3,163 tokens.

Download SKILL.mdSave it as .claude/skills/scenarist/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
scenarist
description
Scenario and script craft — writes and reworks the scene-by-scene scenario.json: hook, beat structure, per-scene VO, on-screen text, pacing, and the language/aspect pre-flight. Owns scenario feedback loops and the scenario quality gate. USE WHEN the user asks to "write a script", "make a storyboard", "make a video about X" (after intake), or gives scenario feedback: "rework scene 3", "rewrite the hook", "make it shorter / longer", "tighten the VO", "change the ending". TRIGGER (EN): "write a script", "storyboard", "rework scene", "rewrite the hook", "shorten it", "lengthen it", "tighten VO", "scenario feedback".
namespace
user

Scenarist playbook

Read this when: "write a script", "make a video about X", "make a storyboard", "rework scene 3", "change the hook", "rewrite VO", "make it shorter / longer", scenario feedback.

Pre-flight (every new project): before drafting scenes, confirm with the user:

  1. Target audience language (EN / RU / KR / other). Drives the entire audio pipeline — Kling --audio for EN, ElevenLabs for everything else. Chat language ≠ video language; noski-people-001 wasted 10 min + a memory write on a default-Russian assumption that the user had to override.
  2. Aspect / platform (9:16 TikTok / 16:9 YouTube / 1:1 broadcast realism). Square for caught-on-TV trends, never portrait.
  3. Hard "no"s — banned words, no-music policy (Kling auto-bakes ambient music unless explicitly banned in the prompt), brand colors, etc.
  4. Format / template fit — match the brief to a media format / template first (ralphy template suggest "<brief>" --format <f>; formats in ralphy template suggest --help), then load any matching content-niche craft-overlay skill (ugc-*, poster, …) on top as a supplement. A style template enters as a remix target only on an explicit pointer. Full discipline in the intake playbook's "Cold-start format / template match" section + docs/skills-vs-templates.md.
  5. Storyboard lock — produce STORYBOARD.md (scene table) and get explicit user "go" BEFORE handing to art-director. Skipping the lock cost ~$3-4 across glitter-cream / flipper / appstore (anchors regen'd because the storyboard was "drafty").

See .agents/skills/intake/SKILL.md for the full intake protocol that fires before this playbook.

Narrative owner. I write the first-draft scenario.json from brief + references, and iterate on feedback (hook, pacing, VO, scene count, transitions as narrative beats). Model prompts and assets are not my zone — that's the art director. My output is a self-consistent scenario that downstream roles can fan out from.

Output contract (02.04 — typed Scene[])

The scenario the scenarist emits MUST conform to cli/lib/schemas/scene.ts (ScenarioSchema). The scenarist LLM uses Zod response_format to enforce this — never free-prose, never JSON without the schema in the call.

Scene shape:

ts
{
  id: "scene-NN",           // two-digit zero-padded
  role: "hook" | "body" | "cta",
  vo_text: string,          // empty string is legal for B-roll
  target_duration_s: number,
  camera: string,           // one-line, required
  lighting?: string,
  gesture?: Gesture,        // finite enum from cli/lib/schemas/gestures.ts
  broll?: string,
  refs: string[],           // flat list for v1.0
  notes?: string            // free-text escape hatch — see below
}

notes is reserved for what the schema can't express. Per 02-D-01 the field exists for the 5% of director-intent that the struct misses — e.g. "this scene needs a slightly hesitant pause before the punchline", or a one-off body-language cue that's not in the gesture enum. It is not a dumping ground for prose that should be split into proper fields. Adapters read notes as a final "director intent" paragraph appended to the model-specific prompt body; abuse it and every downstream prompt gets junk.

Gesture vocabulary — per 02-D-06, gesture is a finite enum (12 named gestures: point-camera, nod, head-shake, laugh, shrug, lean-in, hand-product-reveal, eye-roll, facepalm, thumbs-up, palm-open, pause-still). One-off / niche gestures go in notes. Per-model adapters silently omit unknown enum values rather than error — so unknown-future-PR-gesture appearing in an older binary degrades gracefully.

Hook / Body / CTA shape — per 02.08.01, the scenario top-level carries hook: SceneRef, body: SceneRef[], cta: SceneRef pointing at scenes in the scenes{} map. This typed primitive is what ralphy batch --vary <axis> uses to swap one axis cleanly during variation runs.

STOP rule. Don't read scenario.json with cat and don't append to log files by hand. Every action below is a ralphy verb that keeps the gen-log honest. AGENTS invariant #2.

CLI cookbook

Use these for every project-level inspection / mutation. Don't read scenario.json with cat and don't append to log files by hand — every action below is a ralphy verb that also keeps the gen-log honest.

bash
# Read the current scenario / template / persona context
ralphy project show <id> --scenario      # scenario.json
ralphy project show <id> --status        # which pipeline steps are done
ralphy template suggest "<utterance>"    # remix-shopping ONLY — never on cold start (see skills-vs-templates.md)
ralphy template show <id> -p             # inspect a template the user pointed at for remix
ralphy persona show <id> -p              # voice + tone + archetype
ralphy ref show <id>                     # cited reference details

# Quality gate (run before every handoff to art-director)
ralphy project score <id>                # virality rubric, pass/fail JSON
ralphy project score <id> --strict       # exit 1 on failure (CI-friendly)

# Length / word-budget sanity (re-transcribe an existing VO if scenes drifted)
ralphy project transcribe <id> --audio <vo.mp3>   # ElevenLabs Scribe v1 default

# Log EVERY user feedback turn — both directions (see "User-prompt logging" rule below)
ralphy project log-prompt <id> --text "<original brief>"          --stage brief
ralphy project log-prompt <id> --text "<rework scene 3>"          --stage feedback
ralphy project log-prompt <id> --text "<looks great, ship it>"    --stage approval
ralphy project log-prompt <id> --text "<too AI-slop in scene 2>"  --stage critique
ralphy project log-prompt <id> --text "<no, kill this whole arc>" --stage rejection
ralphy project log-asset  <id> --kind doc --source <path> --purpose brief
ralphy project timeline   <id>           # who said what, when, in chronological order

User-prompt logging (MUST, every turn)

user-prompts.jsonl is the only durable record of user intent across sessions. Sparse logs make the postmortem layer unreliable — noski-people-001 shipped with 1 logged prompt across 18 user-feedback turns and the postmortem had to guess at intent from chat scroll. That is a defect class this playbook now closes.

The rule: every time the user sends a message that changes scenario direction — brief, feedback, approval, critique, or rejection — the scenarist MUST call ralphy project log-prompt <id> --text "<verbatim user words>" --stage <stage> BEFORE drafting the response. Not "may log". Not "log the important ones". Every turn.

Named stages (use one):

--stageWhenExample user utterance
briefThe original ask that created the project, or any later message that reframes the project goal"make a 15s unboxing for my coffee grinder"
feedbackUser asks for a change to an existing artifact (scenario / scene / hook / VO)"shorten scene 2", "rewrite the hook punchier", "swap the CTA"
approvalUser signs off on a draft / variant — locks the artifact for the next stage"looks good, ship it", "approved", "go with v2"
critiqueUser flags a problem but doesn't yet say how to fix it (you need to propose options)"scene 3 feels AI-slop", "the pacing is off", "this doesn't match the ref"
rejectionUser kills an entire direction / asks to start over on a scope chunk"scrap the whole CTA arc", "no — different aesthetic entirely", "throw out v3"

When the user message contains multiple stages (e.g. "approve scene 1 BUT rework scene 3"), log it twice — once per stage. The CLI is cheap; the postmortem layer is not.

Out of scope as user-prompt turns (do NOT log these, they are agent-internal):

  • Your own clarifying questions back to the user.
  • Status pings ("ok", "thanks", "yes") with no scenario impact.
  • Automatic --no-ref-consent overrides (the CLI logs those itself with stage: "no-ref-consent").

Cross-link: the editor and art-director playbooks inherit this same MUST-log rule for feedback on renders and anchors. See editor and art-director.

If the scenario references a creator / TikTok / IG handle and there's no .ralphy/references/<slug>/, handback to researcher — don't invent the reference (ralphy ref pull <url> is a one-liner there).

Show full SKILL.md (359 more words)Show less

Sub-docs (read on demand)

FileWhen to read it
scenarist/hook-formulas.mdWriting or rewriting the hook (scene-01)
scenarist/pacing.mdChoosing scene count, durations, VO word budget
scenarist/feedback-iteration.mdUser has scenario.json + a feedback message
scenarist/quality-gate.mdBefore handoff — ralphy project score <id> gate

Sub-tasks

Sub-taskWhenSub-docs
new-scenariobrief exists, no scenario.json yethook-formulas + pacing
iterate-scenarioscenario.json exists + user feedbackfeedback-iteration
quality-gatebefore handoff (auto)quality-gate

What I read on start

  • AGENTS.md — invariants.
  • docs/creative-library/hooks/HOOK_LIBRARY.md — formulas, 5 formats, 4 angles, word-budget, banlist. Before every new scenario.
  • docs/virality-rubric.md — quality criteria + scoreScenario() gate.
  • docs/green-zone.md — text positioning inside the 1080×1920 safe zone.
  • .ralphy/workspaces/<ws>/projects/<id>/BRIEF.md — original ask.
  • .ralphy/workspaces/<ws>/projects/<id>/TEMPLATE_ORIGIN.md if present — which template's vibe.
  • .ralphy/references/<site-or-handle>/ if mentioned — design tokens / blueprints.
  • Existing scenario.json if this is an iterate.
  • Template files (TEMPLATE.md, reference-example.md, fragments.md) if scaffolded.

Hard rules (inherited from AGENTS.md)

  1. Quality gate before handoff. ralphy project score <id> — if passed: false, iterate, do not hand off. See scenarist/quality-gate.md.
  2. Reference-required in scenario. If a slot contains a named persona/brand — verify there is a ref in artifacts/refs/, otherwise the scenario must either require a reference (refuse) or use an archetype.
  3. Template vibe ≠ template fill-in. Don't copy VO lines / clip tables / timings from reference-example.md literally. The template is a vibe anchor; the scenario is written from scratch.
  4. Don't invent brand facts. If the brief is thin — ask once or leave a <FILL> placeholder.
  5. MUST log every user feedback turn via ralphy project log-prompt <id> --text "<verbatim>" --stage <brief|feedback|approval|critique|rejection>. Not "may log" — every turn that touches scenario direction, before you draft the response. See the "User-prompt logging" section above for stage definitions. Sparse logs are the documented cause of unreliable postmortems (issue 044).

Conventions

  • Scene IDs: scene-NN (two-digit zero-padded).
  • Asset slot IDs: {scene-id}-{type}-{descriptor} (e.g. scene-01-bg-image, scene-03-vo-primary).
  • Hook lives in scene-01 unless the format explicitly requires a cold-open before it.
  • Default 9:16 TikTok, ≤15s, RU.

Handoff

  • After new-scenario → art-director playbook (prompts + assets for all slots).
  • After iterate-scenario with visual changes → art-director target regen of affected slots.
  • After iterate-scenario with VO-only changes → art-director with an explicit note "only voiceover slots need regen" (saves $).
  • If the scenario is locked and the user wants to compose → editor playbook (but art direction usually comes first).

© alecs5am, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in .agents/skills/scenarist of alecs5am/ralphy.

  • SKILL.md
  • references/feedback-iteration.md
  • references/hook-formulas.md
  • references/pacing.md
  • references/quality-gate.md

Open the folder on GitHubat commit 8d139f0

Compare with similar skills

Scenarist next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Scenarist compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Scenarist this skillalecs5am/ralphy138—~3.2kAutomated safety check: PassApache-2.0
Content To Videoarchitectds/modeldock117—~2.4kAutomated safety check: PassApache-2.0
Canghe Comicfreestylefly/canghe-skills4618 repos~3.2kAutomated safety check: PassNone
Tutti UI Systemtutti-os/tutti3.8k—~2.7kAutomated safety check: PassApache-2.0
3D Animation Short Generatortl2012tl/comfyUI-llama-TE2414 repos~3.7kAutomated safety check: PassNone
Text to PNG Card Casterlijigang/ljg-skills7.5k—~1.9kAutomated safety check: PassMIT

Similar skills

  • Content To Video

    architectds/modeldock

    Turn arbitrary source content (README, article, story, slides, deck, data/report, product description, tutorial text, audio/transcript, or a bare topic) into a finished, high-quality MP4 video.

    117 GitHub stars~2.4k tokensUpdated today
    Media & CreativeAuto-check passed
  • Canghe Comic

    freestylefly/canghe-skills

    Knowledge comic creator supporting multiple art styles and tones.

    461 GitHub starsUsed in 8 repos~3.2k tokens
    Media & CreativeAuto-check passed
  • Tutti UI System

    tutti-os/tutti

    A skill your agent uses when working with @tutti-os/ui-system components, replacing local UI with shared components, querying component ids or metadata, promoting UI into shared base or business…

    3.8k GitHub stars~2.7k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • 3D Animation Short Generator

    tl2012tl/comfyUI-llama-TE

    Create complete stylized 3D animated shorts from a story idea through an ordered production workflow covering project brief, story outline, character and environment cards, standardized shot…

    241 GitHub starsUsed in 4 repos~3.7k tokens
    Media & CreativeAuto-check passed
  • Text to PNG Card Caster

    lijigang/ljg-skills

    Turns text, URLs or local files into tall PNG cards through HTML typography, with four modes: long reading card, full-text layout, comic and whiteboard.

    7.5k GitHub stars~1.9k tokensUpdated 2 days ago
    Media & CreativeAuto-check passed
  • H3 Cinematic Director

    jtydhr88/ComfyTV

    Convert approved scripts, shot briefs, storyboards, keyframes, character sheets, scene assets, prop sheets, and sound briefs into director-level storyboards and production-ready MiniMax H3 prompts.

    1.1k GitHub stars~2.7k tokensUpdated 4 days ago
    Media & CreativeAuto-check passed

More from alecs5am/ralphy

All 28 skills in this repo
  • Gsap

    alecs5am/ralphy

    GSAP animation reference for HyperFrames. An agent skill from alecs5am/ralphy.

    138 GitHub stars~2.4k tokensUpdated 18 days ago
    Auto-check passed
  • Researcher

    alecs5am/ralphy

    Deep-research workflow for UGC reference material — turns one or more URLs / handles / trend queries into a single cited research report (report.md + sources.json) that a scenarist or art-director…

    138 GitHub stars~1.9k tokensUpdated 18 days ago
    Auto-check passed
  • Editor

    alecs5am/ralphy

    Composition and render craft — assembles scenario.json plus asset-manifest.json into a HyperFrames HTML composition and renders the mp4.

    138 GitHub stars~3.6k tokensUpdated 18 days ago
    Auto-check passed
  • Evaluator

    alecs5am/ralphy

    Quality evaluation of rendered UGC mp4s — scene segmentation, audio loudness / dead-air, caption density, and per-scene visual analysis.

    138 GitHub stars~3.6k tokensUpdated 18 days ago
    Auto-check passed
  • Producer

    alecs5am/ralphy

    End-to-end orchestration — the wrapper that drives the whole production contract across roles, plus batch production.

    138 GitHub stars~4.7k tokensUpdated 18 days ago
    Auto-check passed
  • Troubleshooting

    alecs5am/ralphy

    Ralphy CLI operations and repair — environment setup, API keys and connectors, ralphy doctor, reading logs, diagnosing a failed generation or render, and the CLI cookbook for verbs other roles call.

    138 GitHub stars~1.4k tokensUpdated 18 days ago
    Auto-check passed

Questions about Scenarist

What does Scenarist do?

Scenario and script craft — writes and reworks the scene-by-scene scenario.json: hook, beat structure, per-scene VO, on-screen text, pacing, and the language/aspect pre-flight. Scenarist is an agent skill from alecs5am/ralphy.json: hook, beat structure, per-scene VO, on-screen text, pacing, and the language/aspect pre-flight.

When should I use Scenarist?

Scenarist fits situations like: the user asks to write a script; make a storyboard; make a video about X (after intake); gives scenario feedback: rework scene 3.

How do I install Scenarist in Claude Code?

Run `npx skills add alecs5am/ralphy --skill scenarist -a claude-code`. Or copy the skill folder (.agents/skills/scenarist in alecs5am/ralphy) into .claude/skills/scenarist in your project. Claude Code loads it when a task matches its description.

How do I install Scenarist in Codex?

Run `npx skills add alecs5am/ralphy --skill scenarist -a codex`. Or copy the skill folder (.agents/skills/scenarist in alecs5am/ralphy) into .agents/skills/scenarist in your project. Codex loads it when a task matches its description.

Can I use Scenarist in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add alecs5am/ralphy --skill scenarist -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scenarist, .gemini/skills/scenarist, .github/skills/scenarist and .opencode/skills/scenarist in your project.

What does Scenarist need to run?

SKILL.md names no scripts, command-line tools or credentials: Scenarist is instructions for the agent only.

Does Scenarist access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Scenarist safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Scenarist use?

Scenarist is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Scenarist use?

About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.8k tokens, read only when the agent opens those files.

What are the alternatives to Scenarist?

Skills that share tags, products or a category with Scenarist: Content To Video (architectds/modeldock, 117 stars), Canghe Comic (freestylefly/canghe-skills, 461 stars), Tutti UI System (tutti-os/tutti, 3.8k stars) and 3D Animation Short Generator (tl2012tl/comfyUI-llama-TE, 241 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Scenarist?

alecs5am (a GitHub user) maintains it in alecs5am/ralphy, which has 138 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on September 22, 2026.

Source: alecs5am/ralphy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.