Pitch Craft Timed Scripts
ooiyeefei/ccc
Writes or fixes spoken scripts that must fit a clock: demo voiceovers, deck narration and pitch speeches, with word budgets, storytelling rules and named trim points.
A skill your agent uses when writing or auditing talking-head / narrative / "yap" content — reel scripts, video scripts, story-driven posts, any piece where someone talks to camera or tells a story.
$ npx skills add artemnovitckii/content-skills --skill storytelling -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install artemnovitckii/content-skills storytelling --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/artemnovitckii/content-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/storytelling .claude/skills/storytelling && rm -rf skills-srcUse ~/.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/
Install the "storytelling" agent skill from https://github.com/artemnovitckii/content-skills/tree/master/storytelling into .claude/skills/storytelling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/artemnovitckii/content-skills/tree/master/storytellingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add artemnovitckii/content-skills --skill storytelling -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install artemnovitckii/content-skills storytelling --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/artemnovitckii/content-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/storytelling .agents/skills/storytelling && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "storytelling" agent skill from https://github.com/artemnovitckii/content-skills/tree/master/storytelling into .agents/skills/storytelling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add artemnovitckii/content-skills --skill storytelling -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install artemnovitckii/content-skills storytelling --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/artemnovitckii/content-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/storytelling .cursor/skills/storytelling && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "storytelling" agent skill from https://github.com/artemnovitckii/content-skills/tree/master/storytelling into .cursor/skills/storytelling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/artemnovitckii/content-skills.git --path storytelling--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add artemnovitckii/content-skills --skill storytelling -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install artemnovitckii/content-skills storytelling --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/artemnovitckii/content-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/storytelling .gemini/skills/storytelling && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "storytelling" agent skill from https://github.com/artemnovitckii/content-skills/tree/master/storytelling into .gemini/skills/storytelling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install artemnovitckii/content-skills storytellingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add artemnovitckii/content-skills --skill storytelling -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/artemnovitckii/content-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/storytelling .github/skills/storytelling && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "storytelling" agent skill from https://github.com/artemnovitckii/content-skills/tree/master/storytelling into .github/skills/storytelling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add artemnovitckii/content-skills --skill storytelling -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install artemnovitckii/content-skills storytelling --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/artemnovitckii/content-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/storytelling .opencode/skills/storytelling && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "storytelling" agent skill from https://github.com/artemnovitckii/content-skills/tree/master/storytelling into .opencode/skills/storytelling/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
storytellingA skill your agent uses when writing or auditing talking-head / narrative / "yap" content — reel scripts, video scripts, story-driven posts, any piece where someone talks to camera or tells a story.
Storytelling is an agent skill from artemnovitckii/content-skills. Use when writing or auditing talking-head / narrative / "yap" content — reel scripts, video scripts, story-driven posts, any piece where someone talks to camera or tells a story. The hook stops the scroll; storytelling holds the watch after it. Not for pure tactical demos or bare listicles with no through-line.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Writing & Content, covering Storytelling and Video scripts and shorts. The repository describes itself as: 5 Claude Code skills that fix Claude's writing: dumbify, storytelling, viral-hooks, anti-ai-writing, and a voice-dna build guide. MIT. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 1c6e909. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Storytelling loads about 2.6k tokens when it runs. Until then it costs about 81 tokens; SKILL.md has 1,643 words of instructions outside code blocks.
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.
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.
The full file from artemnovitckii/content-skills at commit 1c6e909, republished under its MIT licence (© artemnovitckii). 1,643 words, ~2,622 tokens.
.claude/skills/storytelling/SKILL.md (or your agent's skills folder).The hook earns the first 2 seconds. Storytelling earns every second after. This skill is the craft of holding attention across the body of a spoken or narrative piece — so the viewer who stopped scrolling actually finishes, and wants to share.
Six techniques. The first four do most of the work; the last two are delivery and handoff.
Pull the actual beats from your own real notes, or ask the person whose story it is. Never fabricate biography — invented founder stories, fake numbers, or imagined events on someone's real account destroy the exact trust this content is built to earn. If you don't have the real beats, get them first. Structure is this skill's job; the truth is yours.
Great stories alternate context (the character is doing something) and conflict (oh no, a complication). Conflict opens a loop in the brain; context closes it — then opens the next. That dance is what keeps a viewer locked in, in a feature film or a 30-second reel.
The tactical rule (from the South Park writers): between every beat, the connector should be BUT or THEREFORE — never "and then." "And then" piles detail on detail with no tension and the viewer leaves. "But/therefore" creates the open conflict loops.
Weak — "and then" piling:
My rent doubled and then enrollment dropped and then I almost closed and then I tried a free class and then it sold out and then I added more and then now I'm booked.
Strong — but/therefore loops:
My rent doubled. THEREFORE I was three months from closing. BUT I had all these empty evening slots. THEREFORE I tried one free date-night class — BUT I had no idea if a single person would show. (loop held open…) Twelve couples booked it in a day.
Stack several of these in the first 30 seconds. Each "but" is a head-fake that keeps the storyline moving. When you outline, literally write the beats and force a "but" or "therefore" between each — if "and then" fits, the beat is boring; rewrite it.
The best place to start a story is the end. Decide where you're taking the viewer, then work backward to build the dance in the middle.
The last line is the "last dab": make it so memorable that if someone heard only that line, they'd share it. In short-form the video loops, so the last line is secretly the setup for the first line on replay — write it to hand off into the hook.
Tactic: write the first line and the last line first. Leave the middle blank. Then fill it with but/therefore beats that earn that ending.
A topic isn't enough; dozens of people cover the same topic. The lens is your unique prism on it — the same white light, bent differently. Finding the uncommon lens is how you become a category of one instead of one more version of the same video.
For any topic, list the obvious lenses first, then push past them:
How to generate a non-obvious lens (the "push past" is the hard part — use these moves):
Pick the lens before writing — it changes every line after.
Sentences of the same length, in a row, drone. The ear gets bored and the viewer churns. Vary it: short. Then medium. Then, once in a while, a longer sentence that builds with energy and rolls to a close. That variation is what makes writing sing.
Tactic: write every sentence on its own line. Look straight down the left edge. If the line endings make a jagged edge, your lengths vary — good. If they all stop at about the same place, it's monotonous — break some up, run some together. (The jagged edge is a proxy for spoken rhythm — the real test is reading it aloud and hearing the variation in breath, not just counting words.)
It sold out. Couples loved it — two people, one wheel, clay everywhere, laughing. So I added more.
Short. Long. Short. That's the music.
The creators who feel like they're in the room with you win. The way to get there: write and film as if you're talking to one close friend, not "an audience." Type the script like a text or a voice note to that one person. (Tape their photo under the lens if it helps.)
Match this to your actual voice — if you have a voice file (see the voice-dna skill in this pack), read it for how you talk to a friend. Conversational, direct, no performing. If a line sounds like a speech, rewrite it as something you'd actually say.
The hook is left for last here on purpose: it's critical, but it's a separate skill. Use the viral-hooks skill to write/stop-test the opening line. Two things storytelling needs from the hook:
Don't duplicate hook mechanics here; call viral-hooks.
Founder / personal stories are sanctioned I-framed. The viral-hooks skill flags creator-POV "I" framing as a relevance killer — but a first-person founder story on the owner's own account is the exception it allows. Don't force an awkward "you" pivot the genre rejects. The relevance comes from universal resonance (the viewer recognizes their own situation in yours), not from literally saying "you." Make sure the I-story lands on a feeling or lesson the viewer shares.
Length budget (the one hard constraint): spoken delivery runs ~2 words/second. So a 30s reel ≈ 60-75 words, 45s ≈ 110-130 words, 60s ≈ 150-170 words. Write to the runtime you asked for — craft-per-line doesn't matter if the script runs 20 seconds long. Cut beats, not the lens or the last dab.
Score and flag with the specific offending line:
| Mistake | Why it fails |
|---|---|
| "And then… and then…" beats | No tension, no open loops — the viewer churns mid-body |
| Generic transformation arc | "I struggled, then I succeeded" is everyone's story; the lens is what makes it yours |
| Trailing-off ending / "follow for more" | Wastes the last dab — and in a loop, wastes the re-hook |
| Flat rhythm (all same-length sentences) | Drones; subconsciously pushes the viewer to the next video |
| Performing instead of talking | Breaks the in-the-room intimacy; people feel sold-to and leave |
| Inventing story details to fill the arc | Fabricated authenticity is the fastest way to lose a real audience |
© artemnovitckii, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in storytelling of artemnovitckii/content-skills.
Open the folder on GitHubat commit 1c6e909
Storytelling 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Storytelling this skillartemnovitckii/content-skills | 102 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Pitch Craft Timed Scriptsooiyeefei/ccc | 495 | — | ~1.7k | Automated safety check: Pass | MIT | |
| Script Writerailabs-393/ai-labs-claude-skills | 455 | — | ~4k | Automated safety check: Pass | MIT | |
| Evidence-Grounded Video Writerliuluhaixiu/DaVinci-AutoEdit-Agent | 484 | — | ~711 | Automated safety check: Pass | MIT | |
| Seedance Interview1370998960-del/https-github.com-Emily2040-seedance-2.0 | 241 | — | ~2.6k | Automated safety check: Pass | MIT | |
| 60-Second Cinematic Story Directorkaruvanan/MiniMax-H3-Director-Cut-Studio | 132 | — | ~1.8k | Automated safety check: Pass | Custom licence |
ooiyeefei/ccc
Writes or fixes spoken scripts that must fit a clock: demo voiceovers, deck narration and pitch speeches, with word budgets, storytelling rules and named trim points.
ailabs-393/ai-labs-claude-skills
This skill should be used whenever users need YouTube video scripts written.
liuluhaixiu/DaVinci-AutoEdit-Agent
Writes video scripts, narration, titles and hooks from an approved media review, offers story directions first, and never invents footage, quotes or facts.
1370998960-del/https-github.com-Emily2040-seedance-2.0
This skill should be used when the user has a vague Seedance 2.0 video idea and asks for creative guidance, story development, scene planning, a director interview, or help turning an undeveloped…
karuvanan/MiniMax-H3-Director-Cut-Studio
Adapts prose or rough story material into a roughly 60-second MiniMax H3 short with shot planning, Mandarin dialogue and voice-over, and a strong ending.
social-media-skills/skills
The teach-to-grow content type -- pick a genuinely useful topic, teach ONE thing completely, structure it as a clear lesson, keep it accurate, and route it to the right format.
artemnovitckii/content-skills
A skill your agent uses when writing or auditing any written content — captions, carousels, newsletters, threads, LinkedIn posts, long-form — and as the FINAL filter on every piece.
artemnovitckii/content-skills
A skill your agent uses when writing or auditing content that has to be easy to follow — explainer reels, teaching carousels, how-to scripts, any piece that teaches or explains something — or when a…
artemnovitckii/content-skills
A skill your agent uses when writing or auditing the opening lines of any content — reel hooks, carousel slide 1, video intros, newsletter subject lines, tweet openers — or when a draft's opener…
Categories
A skill your agent uses when writing or auditing talking-head / narrative / "yap" content — reel scripts, video scripts, story-driven posts, any piece where someone talks to camera or tells a story. Storytelling is an agent skill from artemnovitckii/content-skills. Use when writing or auditing talking-head / narrative / "yap" content — reel scripts, video scripts, story-driven posts, any piece where someone talks to camera or tells a story.
Storytelling fits situations like: auditing talking-head / narrative / yap content — reel scripts; story-driven posts; any piece where someone talks to camera.
Run `npx skills add artemnovitckii/content-skills --skill storytelling -a claude-code`. Or copy the skill folder (storytelling in artemnovitckii/content-skills) into .claude/skills/storytelling in your project. Claude Code loads it when a task matches its description.
Run `npx skills add artemnovitckii/content-skills --skill storytelling -a codex`. Or copy the skill folder (storytelling in artemnovitckii/content-skills) into .agents/skills/storytelling in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add artemnovitckii/content-skills --skill storytelling -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/storytelling, .gemini/skills/storytelling, .github/skills/storytelling and .opencode/skills/storytelling in your project.
SKILL.md names no scripts, command-line tools or credentials: Storytelling is instructions for the agent only.
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.
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.
Storytelling is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Storytelling: Pitch Craft Timed Scripts (ooiyeefei/ccc, 495 stars), Script Writer (ailabs-393/ai-labs-claude-skills, 455 stars), Evidence-Grounded Video Writer (liuluhaixiu/DaVinci-AutoEdit-Agent, 484 stars) and Seedance Interview (1370998960-del/https-github.com-Emily2040-seedance-2.0, 241 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
artemnovitckii (a GitHub user) maintains it in artemnovitckii/content-skills, which has 102 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on June 20, 2026.
Source: artemnovitckii/content-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.