Data Storytelling
ynulihao/AgentSkillOS
Transform data into compelling narratives using visualization, context, and persuasive structure.
Structure, refine, or draft narrative content or storytelling for business communication such as slide decks, blog posts, pitches, reports.
$ npx skills add sammcj/agentic-coding --skill storytelling-narrative -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install sammcj/agentic-coding storytelling-narrative --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/sammcj/agentic-coding.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Skills_disabled/storytelling-narrative .claude/skills/storytelling-narrative && 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-narrative" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills_disabled/storytelling-narrative into .claude/skills/storytelling-narrative/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling-narrative", 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/sammcj/agentic-coding/tree/main/Skills_disabled/storytelling-narrativeType 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 sammcj/agentic-coding --skill storytelling-narrative -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install sammcj/agentic-coding storytelling-narrative --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .agents/skills && cp -r skills-src/Skills_disabled/storytelling-narrative .agents/skills/storytelling-narrative && 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-narrative" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills_disabled/storytelling-narrative into .agents/skills/storytelling-narrative/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling-narrative", 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 sammcj/agentic-coding --skill storytelling-narrative -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install sammcj/agentic-coding storytelling-narrative --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/Skills_disabled/storytelling-narrative .cursor/skills/storytelling-narrative && 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-narrative" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills_disabled/storytelling-narrative into .cursor/skills/storytelling-narrative/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling-narrative", 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/sammcj/agentic-coding.git --path Skills_disabled/storytelling-narrative--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 sammcj/agentic-coding --skill storytelling-narrative -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install sammcj/agentic-coding storytelling-narrative --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/Skills_disabled/storytelling-narrative .gemini/skills/storytelling-narrative && 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-narrative" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills_disabled/storytelling-narrative into .gemini/skills/storytelling-narrative/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling-narrative", 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 sammcj/agentic-coding storytelling-narrativeInstalls 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 sammcj/agentic-coding --skill storytelling-narrative -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .github/skills && cp -r skills-src/Skills_disabled/storytelling-narrative .github/skills/storytelling-narrative && 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-narrative" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills_disabled/storytelling-narrative into .github/skills/storytelling-narrative/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling-narrative", 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 sammcj/agentic-coding --skill storytelling-narrative -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install sammcj/agentic-coding storytelling-narrative --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/sammcj/agentic-coding.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/Skills_disabled/storytelling-narrative .opencode/skills/storytelling-narrative && 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-narrative" agent skill from https://github.com/sammcj/agentic-coding/tree/main/Skills_disabled/storytelling-narrative into .opencode/skills/storytelling-narrative/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "storytelling-narrative", 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.
storytelling-narrativeStructure, refine, or draft narrative content or storytelling for business communication such as slide decks, blog posts, pitches, reports.
Storytelling Narrative is an agent skill from sammcj/agentic-coding. Structure, refine, or draft narrative content or storytelling for business communication such as slide decks, blog posts, pitches, reports. Use when the user wants help building a narrative arc, find the through-line, sequence beats or refine existing content for flow and impact.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/critique.md`, `references/formats.md` and `references/hooks-and-moments.md`).
It sits in Writing & Content, covering Storytelling, Blog and article writing and Slides and decks. The repository describes itself as: Agentic Coding Rules, Templates etc... The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 2f25ced. 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 Narrative loads about 3.6k tokens when it runs, and up to ~14k if it reads all its reference files. Until then it costs about 76 tokens; SKILL.md has 2,027 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 sammcj/agentic-coding at commit 2f25ced, republished under its Apache-2.0 licence (© sammcj). 2,027 words, ~3,634 tokens.
.claude/skills/storytelling-narrative/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Help the user build, refine, or restructure a narrative for a business artefact: slide deck, blog post, pitch, exec memo, article, or report. The skill is format-agnostic at its core. Format-specific notes live in references/formats.md.
The user is a domain expert. They usually know the material deeply or have rough touchpoints in mind. What they're missing is structure, flow, and a clear through-line. Your job is to help them surface what's already there and shape it, not to invent narrative from nothing or layer marketing language on top.
Lenses, not templates. Storytelling frameworks (Pixar, ABT, Three-Act, StoryBrand, Hero's Journey, Golden Circle, SCQA, Pyramid Principle, Dykes Arc, Duarte Sparkline) are different surface arrangements of the same underlying primitives: status quo, tension, stakes, turn, resolution. Treat named frameworks as lenses to check a story against, not templates to fill in. Pick a lens when it fits the audience-goal-material combination - never force material into a framework that doesn't match.
Narrative comes from the material, not a script. Most business storytelling failures aren't structural - they're the result of not engaging with the material long enough to find what's actually there. Spend real time in Phase 2 (engaging the material) before reaching for any framework.
Anti-slop posture. No marketing adjectives, no hot takes, no cliche verbiage or buzzwords. Concrete nouns over abstract ones. Specific people, specific moments, specific numbers. If a sentence could appear in any company's blog post, rewrite it.
Pause when there's a real fork; proceed when there isn't. Use multi-choice questions (the AskUserQuestion tool) when the user genuinely needs to steer - multiple plausible spines, multiple framework lenses, multiple orderings, output-mode choice. Don't pause on small calls or things you can infer with confidence. The user has explicitly said: increase autonomy when you have understanding, ask when you don't.
Every narrative - regardless of framework - is built from these. Find them in the material before structuring anything.
references/hooks-and-moments.md.The shape is always: old understanding → tension → new understanding → new action. Different frameworks just arrange this differently.
This is a phased flow, not a rigid sequence. Skip phases the user has already done; double back when new information surfaces. The pause points below are where multi-choice user input genuinely steers the work.
Don't start structuring until you understand audience, goal, material state, and format. This isn't a "quick diagnostic" - these answers shape everything downstream. Ask substantively, but with focus.
Things you need to know:
Use AskUserQuestion for things with discrete plausible answers (tone, audience type, format, material state). Use open prose questions when you need substance (audience-specific concerns, goal nuance).
If the user volunteered most of this in their initial prompt, don't re-ask - confirm what you understood and ask only what's missing.
This is the most undervalued phase. Skip it and you'll produce a structure that doesn't fit what the user actually has to say.
Branch by material state:
Raw knowledge / rough touchpoints - ask the user to talk through what they have. Don't summarise back yet - keep extracting. Probe for narrative substrate:
You're looking for moments, not abstractions. Concrete things - a meeting, a number, a customer, a failure, a near-miss - are the raw material narratives are built from.
Existing draft - read carefully. Find the implicit arc (or note its absence). Mark:
Read references/critique.md for the diagnostic checklist.
Existing data / deck - look for the transformation already present. The story is usually there waiting to be uncovered: a before-after, a problem-solution, a counterintuitive finding, a shift in trend. Resist the urge to invent a story; surface the one that's there.
Output of this phase: a list of raw narrative material - concrete moments, facts, characters, tensions, changes - not yet ordered.
Distill the raw material to:
If you can find more than one plausible spine, that's a fork - present 2-3 options to the user via AskUserQuestion and let them pick. Different spines lead to genuinely different narratives; this is one of the highest-impact decision points.
If there's only one spine that fits the material, propose it directly with rationale. Don't manufacture options for the sake of asking.
Match a framework lens to the audience-goal-material combination. See references/narrative-frameworks.md for the full catalogue and selection guidance. Quick orientation:
Lenses are not exclusive - a piece can use SCQA at the document level and ABT at the paragraph level. Present 2-3 lens options when more than one would work; explain the trade-offs briefly; let the user pick.
Arrange the material into the chosen structure. Three things to attend to:
Show the user the proposed ordering. Pause via AskUserQuestion only if there are multiple genuinely plausible orderings - otherwise propose and let them react.
Before drafting anything, ask the user what level of help they want. Use AskUserQuestion with options like:
This is non-negotiable as a pause point. Don't assume the level of involvement the user wants.
When drafting, hold to:
For format-specific drafting concerns (slide one-idea-per-slide rule, blog opener strength, pitch tightness), read references/formats.md.
Before returning the final output, run a critique pass against references/critique.md. Common failure patterns:
Fix these before delivering. If you find structural issues, surface them rather than silently rewriting - the user may have specific intent behind a choice that looks weak.
references/narrative-frameworks.md - when picking a lens, or when the user wants to commit to a specific framework. Selection guidance, per-framework failure modes, and detail on the lesser-known lenses.references/hooks-and-moments.md - when crafting a hook or sharpening a turn. Six hook types, the turn test, placement principles.references/formats.md - when format-specific concerns matter (slide deck rules, blog opener, pitch arc length, memo bottom-line-up-front).references/critique.md - when reviewing existing content, or running self-review on drafted output.The user has explicitly asked you to use AskUserQuestion where it earns its place. Heuristics for when to pause:
| Pause for | Don't pause for |
|---|---|
| Tone (visionary / pragmatic / urgent / credible) when not signalled | Word-level choices |
| Audience type when ambiguous | Tiny edits |
| Multiple plausible spines (genuine fork) | Obvious cuts |
| Framework lens with 2-3 viable fits | Single-fit lens |
| Ordering when multiple orderings are valid | Mechanical sequencing |
| Hook variant when 2-3 are equally plausible | When one hook clearly fits |
Always pause for output mode (structure-only / hook + key moments / full draft / refine existing draft) before drafting. Don't infer what level of help the user wants.
Ask 1-3 questions at a time, not 5+. Let the user steer; don't quiz them.
storytelling-with-data skill; otherwise stay on the narrative.© sammcj, 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
SKILL.md and 4 other files (references) in Skills_disabled/storytelling-narrative of sammcj/agentic-coding.
Open the folder on GitHubat commit 2f25ced
Storytelling Narrative 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 Narrative this skillsammcj/agentic-coding | 162 | — | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Data Storytellingynulihao/AgentSkillOS | 618 | 15 repos | ~2.8k | Automated safety check: Pass | None | |
| Reportmicrosoft/data-formulator | 18k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Blog Cover Posterdigoal/blog | 8.6k | — | ~1.4k | Automated safety check: Pass | GPL-2.0 | |
| Editorial Illustrationshuytieu/COG-second-brain | 1.3k | — | ~2.4k | Automated safety check: Pass | MIT | |
| Story Bank Builderaaron-he-zhu/aaron-marketing-skills | 2.9k | — | ~3.2k | Automated safety check: Pass | Apache-2.0 |
ynulihao/AgentSkillOS
Transform data into compelling narratives using visualization, context, and persuasive structure.
microsoft/data-formulator
Turn an exploration (threads, findings, charts) into a single Markdown report — note, blog post, executive summary, KPI dashboard, slide brief, or multi-section analytical report, with embedded…
digoal/blog
Turn a blog post, article, notes, or any source material into a set of vertical poster images — one cover plus several coherent content slides that explain the core points.
huytieu/COG-second-brain
Generate meaning-carrying editorial data-illustrations in the monotykamary / Linear aesthetic (near-black grayscale, Inter display + mono labels, hairline framed figures) with a single coral accent.
aaron-he-zhu/aaron-marketing-skills
A skill your agent uses when the user asks to "build a story bank", "collect our origin and customer stories", or "assemble reusable proof stories for the message"; assembles reusable narrative…
Varnan-Tech/opendirectory
Converts any content, blog post URL, pasted article, GitHub PR description, or a description of something built, into a formatted LinkedIn post with proper hook, story arc, and formatting.
sammcj/agentic-coding
A skill your agent uses when generating songs with YuE2, covering a recording via SheetSage2 audio-to-ABC, editing a score or lyrics with melody preservation, or building a reproducible listening…
sammcj/agentic-coding
A skill your agent uses when creating or editing Bento (.bento.html) slide decks, including any request for a single-file HTML slide deck.
sammcj/agentic-coding
A skill your agent uses whenever the user wants you to manage, discuss or diagnose iDrive Backup configuration on macOS
sammcj/agentic-coding
Train custom TTS voices for Piper (ONNX format) using fine-tuning or from-scratch approaches.
sammcj/agentic-coding
Convert a PPTX slide deck into per-slide markdown that preserves both the verbatim text and the meaning of embedded screenshots, diagrams and charts in their original layout positions.
sammcj/agentic-coding
You MUST load this skill before the skill-creator skill AND before making ANY change to, or conducting a review of ANY Agent Skill.
Categories
Structure, refine, or draft narrative content or storytelling for business communication such as slide decks, blog posts, pitches, reports. Storytelling Narrative is an agent skill from sammcj/agentic-coding. Structure, refine, or draft narrative content or storytelling for business communication such as slide decks, blog posts, pitches, reports.
Storytelling Narrative fits situations like: the user wants help building a narrative arc; find the through-line; refine existing content for flow and impact.
Run `npx skills add sammcj/agentic-coding --skill storytelling-narrative -a claude-code`. Or copy the skill folder (Skills_disabled/storytelling-narrative in sammcj/agentic-coding) into .claude/skills/storytelling-narrative in your project. Claude Code loads it when a task matches its description.
Run `npx skills add sammcj/agentic-coding --skill storytelling-narrative -a codex`. Or copy the skill folder (Skills_disabled/storytelling-narrative in sammcj/agentic-coding) into .agents/skills/storytelling-narrative 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 sammcj/agentic-coding --skill storytelling-narrative -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-narrative, .gemini/skills/storytelling-narrative, .github/skills/storytelling-narrative and .opencode/skills/storytelling-narrative in your project.
SKILL.md names no scripts, command-line tools or credentials: Storytelling Narrative 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 Narrative 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.
About 3.6k tokens (SKILL.md is roughly 15k 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 10k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Storytelling Narrative: Data Storytelling (ynulihao/AgentSkillOS, 618 stars), Report (microsoft/data-formulator, 18k stars), Blog Cover Poster (digoal/blog, 8.6k stars) and Editorial Illustrations (huytieu/COG-second-brain, 1.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
sammcj (a GitHub user) maintains it in sammcj/agentic-coding, which has 162 GitHub stars. The repository holds 64 skills in this directory. The repository was last updated on October 9, 2026.
Source: sammcj/agentic-coding on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.