Story Multi-Perspective Review
zenstory-ai/oh-story-claudecode
Reviews Chinese web-novel text with several reviewer agents in parallel, falling back to a single-agent pass, and reports structure, character, prose and setting problems with fixes.
This skill should be used when the user asks to "create a style sheet", "style guide", "house style", "keep the voice consistent", "voice drift", "British or American spelling", "character voices"…
$ npx skills add danjdewhurst/story-skills --skill voice-style -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install danjdewhurst/story-skills voice-style --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/danjdewhurst/story-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/voice-style .claude/skills/voice-style && 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 "voice-style" agent skill from https://github.com/danjdewhurst/story-skills/tree/main/skills/voice-style into .claude/skills/voice-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voice-style", 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/danjdewhurst/story-skills/tree/main/skills/voice-styleType 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 danjdewhurst/story-skills --skill voice-style -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install danjdewhurst/story-skills voice-style --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danjdewhurst/story-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/voice-style .agents/skills/voice-style && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "voice-style" agent skill from https://github.com/danjdewhurst/story-skills/tree/main/skills/voice-style into .agents/skills/voice-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voice-style", 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 danjdewhurst/story-skills --skill voice-style -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install danjdewhurst/story-skills voice-style --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danjdewhurst/story-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/voice-style .cursor/skills/voice-style && 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 "voice-style" agent skill from https://github.com/danjdewhurst/story-skills/tree/main/skills/voice-style into .cursor/skills/voice-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voice-style", 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/danjdewhurst/story-skills.git --path skills/voice-style--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 danjdewhurst/story-skills --skill voice-style -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install danjdewhurst/story-skills voice-style --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danjdewhurst/story-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/voice-style .gemini/skills/voice-style && 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 "voice-style" agent skill from https://github.com/danjdewhurst/story-skills/tree/main/skills/voice-style into .gemini/skills/voice-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voice-style", 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 danjdewhurst/story-skills voice-styleInstalls 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 danjdewhurst/story-skills --skill voice-style -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/danjdewhurst/story-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/voice-style .github/skills/voice-style && 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 "voice-style" agent skill from https://github.com/danjdewhurst/story-skills/tree/main/skills/voice-style into .github/skills/voice-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voice-style", 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 danjdewhurst/story-skills --skill voice-style -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install danjdewhurst/story-skills voice-style --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/danjdewhurst/story-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/voice-style .opencode/skills/voice-style && 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 "voice-style" agent skill from https://github.com/danjdewhurst/story-skills/tree/main/skills/voice-style into .opencode/skills/voice-style/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "voice-style", 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.
voice-styleThis skill should be used when the user asks to "create a style sheet", "style guide", "house style", "keep the voice consistent", "voice drift", "British or American spelling", "character voices"…
Voice Style is an agent skill from danjdewhurst/story-skills. This skill should be used when the user asks to "create a style sheet", "style guide", "house style", "keep the voice consistent", "voice drift", "British or American spelling", "character voices", "lint the prose", "prose check", "filter words", "said-bookisms", "overused words", "repeated phrases", "similar character names", "voice fingerprints", or wants to record and enforce the voice and surface conventions of a story project. NOT for rewriting dialogue to make the voices distinct when everyone sounds the…
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/prose-checks.md` and `references/style-sheet-guide.md`).
It sits in Writing & Content, covering Copy editing and proofreading and Creative writing and fiction. The repository describes itself as: Agent Skills for end-to-end story writing in markdown, packaged as Codex and Claude Code plugins. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c46163b. 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.
Shell commands in SKILL.md call:
nodeFrom 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.
Voice Style loads about 3k tokens when it runs, and up to ~5.8k if it reads all its reference files. Until then it costs about 153 tokens; SKILL.md has 1,647 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 noted patterns worth knowing about, such as sudo or a known installer.
`.env`, and a package script runs from the checkout's root. If no CLI isAutomated 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 danjdewhurst/story-skills at commit c46163b, republished under its MIT licence (© danjdewhurst). 1,647 words, ~3,019 tokens.
.claude/skills/voice-style/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.Record the book's voice and surface conventions in style-sheet.md, then
enforce them. The style sheet is the copyeditor's record: dialect and
spelling choices, capitalisation, hyphenation, numbers, dialogue
punctuation, a one-line voice summary per major speaker, and a watch list.
Its frontmatter is machine-readable, and story prose counts violations
and prose tics in every chapter. Use this skill so voice stays the same
across chapters, drafting sessions, and agents.
A story project with story.md in the root. story init scaffolds
style-sheet.md; older projects can add it with story init '<title>' --dir . --force, which only adds missing files, or by copying
references/style-sheet-guide.md's frontmatter block by hand.
Read language in story.md (a BCP 47 tag; a missing field means en).
The style sheet records the conventions of that language, and the voice
description is written about prose in it. dialect: british and
american and the built-in word lists behind filter words, -ly adverbs,
and said-bookisms are English. For another language, set
dialect: unspecified, record spelling variants as preferred entries,
and settle dialogue and punctuation with
../line-editing/references/language-conventions.md. When story prose
or story voices reports a check skipped for the book's language, do that
pass by reading (see references/prose-checks.md, Other languages).
line-editing skill, which reads this file)voice-words, voice-avoid) and checking it with story voicescharacter-management)scene-craft)line-editing skill, which reads this style sheet and runs these checksline-editing skill's voice differentiation pass, which follows the voices recorded herestory.md (genre, POV, tense, Tone & Style), style-sheet.md,
and two or three drafted chapters or a sample the user supplies. If
there is no prose yet, ask the user for a paragraph that sounds right or
three published books whose voice is close.style-sheet.md following
references/style-sheet-guide.md. Record decisions the prose already
makes; do not invent new ones silently. When the draft is inconsistent
(both grey and gray), ask the user which form wins.dialect: british | american | unspecified (unspecified for a
book not in English)preferred entry per variant: use is the house form, avoid
the form to flag. Repeat entries for several variants of one word.watch-words: words or phrases this book overusesallow-words: built-in filter words, adverbs, or dialect spellings
this book uses on purpose (a proper noun like Harbor Street in a
British book)samples: files or folders of the author's own prose that sound right,
relative to the project folder: an earlier book (../book-one) or
chapters the author has approved, each file named on its own
(chapters/chapter-01.md, never chapters/, which warns
style-sample-own-chapters). A listed chapter is the measure, so
story prose does not compare it. Ask the user which; never list prose
the agent drafted and the author has not approved, or the profile
measures the agent's voice. With at least 2,000 words of narration,
story prose compares each chapter with the samples instead of fixed
limitsvoice-words list and words they
would never say in voice-avoid, so story voices can check them. The character file is
canon; if the two disagree, fix the style sheet, or ask the user before
changing the character.chapter-writing and discovery-drafting read style-sheet.md before
drafting. Write in the recorded voice, use the house spellings, and give
each speaker the recorded patterns.story prose .The report lists, per chapter: sentence count, average and longest length,
and spread; filter words and -ly adverbs per 1,000 narration words
(dialogue is excluded); plain and said-bookism dialogue tags; words echoed
within 30 words; watch-word counts; and avoided spellings. Across the
manuscript it lists repeated 4-word phrases and character first names that
readers could confuse. Warnings are advisory. The command exits 0 unless a
file cannot be read, a story.md severity entry promotes a warning to an
error, or the command line is wrong, such as --baseline with no samples
(exit 2). See references/prose-checks.md for what each count means and how
to respond.
When the style sheet lists samples, the report opens with a profile of
the author's own prose, and chapters that drift from it warn
(prose-baseline-sentences, -paragraphs, -dialogue, -filter-words,
-adverbs) in place of the fixed filter-word and adverb limits. Treat a
drift as a prompt to reread the chapter, not a rule. Tell the user where
it drifts and ask whether it is deliberate: a fight scene runs short, a
quiet chapter long. Never rewrite a chapter just to move a number back
inside its tolerance.
To lint a passage that is not in a chapter file yet (a draft scene, a
proposed rewrite), pipe it in with - in place of the path:
story prose - < draft-scene.md. Run it from the project folder, or add
--path <project>, so the style sheet applies. story voices - does the
same for dialogue.
story voices .story voices fingerprints each character's attributed dialogue and
warns about a voice-avoid word said, a voice-words entry never said,
and two characters who may sound alike. A line counts only when the
narration names its speaker by a speech verb, or names one character in
the paragraph. Pronoun tags (she said) are never attributed, so in
close third person the POV character is often under-counted; when that
matters, name the tags in a sample chapter and rerun.
story voices --help describes the command and, when story-maintenance
is installed, the voices section of
../story-maintenance/references/continuity-checks.md
gives the full attribution rules and thresholds.
When two voices blur, differentiate them on more than one axis (sentence
length, contractions, vocabulary, what they ask about) and see
dialogue-subtext.md in the scene-craft skill for the tag-swap test.
Attribution and contraction rates are built around English quote marks, speech verbs, and contractions. For a book in another language, if the report attributes few or none of the lines the book has, or skips the check for the language, compare the voices by reading: the levers are the same (sentence length, vocabulary, forms of address, what each avoids saying).
allow-words when the book uses it deliberately.story names '<Candidate>'. Preview the rename with
story rename character <id> '<New Name>' --prose --dry-run, show the
user the replacements, then run it without --dry-run, so the chapter
text follows as well as the references. Without --prose the prose
keeps the old name. Check the matches it leaves as written as the
character-management skill's rename steps describe.story voices warnings, revise the dialogue or update the
character's voice-words/voice-avoid when the draft has found a
better voice; ask the user before changing canon.line-editing skill.Use the Story CLI when it is available. If story is not installed, use the
bundled fallback node ../story-maintenance/scripts/story.js with the same
arguments. Use node <checkout>/bin/story.js instead only when the user
names a Story Skills repository checkout or you are working in one. Write
the script as an absolute path (resolve the fallback relative to this skill
folder) and run it from the folder you would run story from, so . and
other relative paths keep their meaning. Use Node, not Bun or a package
script: Bun would load that folder's bunfig.toml (which can run code) and
.env, and a package script runs from the checkout's root. If no CLI is
available, apply the checks in references/prose-checks.md by reading.
After editing the style sheet or revising prose:
story reindex .
story wordcount . --write
story check .
story prose .
story voices .references/style-sheet-guide.md - What goes in each style-sheet section, the frontmatter format, and how to extract a voice description from sample prosereferences/prose-checks.md - What each story prose count measures, its threshold, when to keep the flagged text, and what to do for a book not in English../line-editing/references/language-conventions.md - Dialogue and punctuation conventions by language, for the style sheet's Dialogue And Punctuation sectionEvery story skill follows the shared conventions in ../story-maintenance/references/conventions.md, resolved relative to this skill folder. Read it before creating, renaming, or linking story files. If that file is missing because this skill was installed without story-maintenance, the essentials are: kebab-case ids and filenames, YAML frontmatter on every story-project file, _index.md registry tables that story reindex rebuilds (never edit them by hand), bidirectional links between entities, characters for who is on the page and mentions for who is only referred to, status: deceased plus died-in: chapter-{NN} for deaths, and no project-local generator or build scripts (run only the installed or bundled Story CLI).
© danjdewhurst, MIT. 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 2 other files (references) in skills/voice-style of danjdewhurst/story-skills.
Open the folder on GitHubat commit c46163b
We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in danjdewhurst/story-skills, which our catalogue first saw on October 7, 2026.
Voice Style 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 |
|---|---|---|---|---|---|---|
| Voice Style this skilldanjdewhurst/story-skills | 283 | 1 repos | ~3k | Automated safety check: Notes | MIT | |
| Story Multi-Perspective Reviewzenstory-ai/oh-story-claudecode | 7.4k | 3 repos | ~3k | Automated safety check: Pass | MIT | |
| Web Novel AI-Trace Removerzenstory-ai/oh-story-claudecode | 7.4k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| InkOS Story ReviewNarcooo/inkos | 10k | — | ~450 | Automated safety check: Pass | AGPL-3.0 | |
| Web Novel AI-Flavor Removeruu201/character-arc | 581 | — | ~2.3k | Automated safety check: Pass | MIT | |
| Web Novel Polishing and De-AIuu201/character-arc | 581 | 1 repos | ~508 | Automated safety check: Pass | MIT |
zenstory-ai/oh-story-claudecode
Reviews Chinese web-novel text with several reviewer agents in parallel, falling back to a single-agent pass, and reports structure, character, prose and setting problems with fixes.
zenstory-ai/oh-story-claudecode
Rewrites AI-sounding Chinese web novel text so it reads naturally, changing as little as possible and keeping plot, names and numbers intact.
Narcooo/inkos
Reviews chapters or manuscripts against the standard that fits their genre, audience and your own criteria, showing concrete issues and revising only when asked.
uu201/character-arc
Finds and rewrites AI-sounding passages in Chinese web novel text, changing as few words as possible while keeping plot, characters and names intact.
uu201/character-arc
Polishes AI-generated web novel text to remove machine-sounding patterns, with rewriting strategies, instruction templates, style techniques and before-and-after examples.
BingHanOfUESTC/open_agent_team
Calibrate Chinese genre-fiction prose against Boss-provided high-quality novel examples without copying source text, names, settings, or plot chains.
danjdewhurst/story-skills
This skill should be used when the user asks to "validate", "reindex", "repair registries", "check links", "run the continuity, pacing, clue, voice, or name checks", "count words", "summarize a…
danjdewhurst/story-skills
This skill should be used when the user asks to "make an audiobook", "narration script", "narrator", "ACX", "Findaway", "pronunciation guide", "how long is the audiobook", "adapt to a screenplay"…
danjdewhurst/story-skills
This skill should be used when the user asks to "write a chapter", "next chapter", "chapter outline", "draft chapter", "continue the story", "write a scene", "outline a chapter", or wants to write…
danjdewhurst/story-skills
This skill should be used when the user asks to "create a character", "update a character", "add a character", "build a family tree", "character relationships", "character timeline", "character…
danjdewhurst/story-skills
This skill should be used when the user asks about "pantsing", "discovery write", "write without an outline", "discovery draft", "write into the dark", "story kernel", "reconcile a chapter", "dead…
danjdewhurst/story-skills
This skill should be used when the user asks for a "sensitivity reader", "authenticity reader", "cultural review", "is this portrayal okay", "real people in my novel", "defamation", "can I use song…
Categories
This skill should be used when the user asks to "create a style sheet", "style guide", "house style", "keep the voice consistent", "voice drift", "British or American spelling", "character voices"…. Voice Style is an agent skill from danjdewhurst/story-skills. This skill should be used when the user asks to "create a style sheet", "style guide", "house style", "keep the voice consistent", "voice drift", "British or American spelling", "character voices", "lint the prose", "prose check", "filter words", "said-bookisms", "overused words", "repeated phrases", "similar character names", "voice fingerprints", or wants to record and enforce the voice and surface conventions of a story project.
Voice Style fits situations like: asks to create a style sheet; keep the voice consistent; american spelling; character voices.
Run `npx skills add danjdewhurst/story-skills --skill voice-style -a claude-code`. Or copy the skill folder (skills/voice-style in danjdewhurst/story-skills) into .claude/skills/voice-style in your project. Claude Code loads it when a task matches its description.
Run `npx skills add danjdewhurst/story-skills --skill voice-style -a codex`. Or copy the skill folder (skills/voice-style in danjdewhurst/story-skills) into .agents/skills/voice-style 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 danjdewhurst/story-skills --skill voice-style -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/voice-style, .gemini/skills/voice-style, .github/skills/voice-style and .opencode/skills/voice-style in your project.
Going by SKILL.md and its folder, Voice Style needs the command-line tools its instructions call (node).
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 notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Voice Style is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k 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.
Skills that share tags, products or a category with Voice Style: Story Multi-Perspective Review (zenstory-ai/oh-story-claudecode, 7.4k stars), Web Novel AI-Trace Remover (zenstory-ai/oh-story-claudecode, 7.4k stars), InkOS Story Review (Narcooo/inkos, 10k stars) and Web Novel AI-Flavor Remover (uu201/character-arc, 581 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
danjdewhurst (a GitHub user) maintains it in danjdewhurst/story-skills, which has 283 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 8, 2026.
Source: danjdewhurst/story-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.