Agent skill

Create Story YAML

by dylanhogg in dylanhogg/gptauthor

Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and…

MITAuto-check passedWriting & Content

Install Create Story YAML

skills CLI
$ npx skills add dylanhogg/gptauthor --skill create-story-yaml -a claude-code

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

GitHub CLI
$ gh skill install dylanhogg/gptauthor create-story-yaml --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/dylanhogg/gptauthor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/create-story-yaml .claude/skills/create-story-yaml && 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
create-story-yaml
GitHub stars
116
Token cost
~2.3k tokens
SKILL.md length
1,285 words
Files
4 (incl. scripts, assets)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and…

  • Works in 6 steps: Read the user's short story text and… → Ask the user about the style with a… → Pick the output path (see Filename and… → …
  • The user wants a new gptauthor story
  • SKILL.md covers Workflow, Asking about style, Required schema and Placeholders, plus 4 more sections
  • Runs Python scripts from its folder; calls python3; needs OPENAI_API_KEY

What it does

Create Story YAML is an agent skill from dylanhogg/gptauthor. Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and expand-chapter-next sections, then validate it. Use when the user wants a new gptauthor story, a new story prompt file, or a yaml like prompts-openai-drama.yaml / prompts-scifi-simulation.yaml / prompts-gptauthor-usage.yaml.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and assets (for example `assets/template.yaml`, `reference.md` and `scripts/validate_story_yaml.py`).

It sits in Writing & Content, covering Creative writing and fiction. It works with OpenAI. The repository describes itself as: GPTAuthor is an AI tool for writing long form, multi-chapter stories given a story prompt. The licence is MIT.

When your agent uses it

  • The user wants a new gptauthor story
  • A new story prompt file
  • A yaml like prompts-openai-drama.yaml / prompts-scifi-simulation.yaml / prompts-gptauthor-usage.yaml

Example prompts

  • “/create-story-yaml”

Requirements

  • Python 3
  • A credential in OPENAI_API_KEY

Workflow steps

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

  1. Read the user's short story text and note which decisions it already settles.
  2. Ask the user about the style with a single AskUserQuestion call, before writing
  3. Pick the output path (see Filename and location).
  4. Copy assets/template.yaml and fill it in, applying the answers (see Writing the content).
  5. Validate: python3 .claude/skills/create-story-yaml/scripts/validate_story_yaml.py
  6. Report the path, how the answers shaped the file, and the run command.

What it can do on your machine

Read from SKILL.md and the folder at commit 8d190fd. 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

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    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 these keys or tokens, usually read from environment variables:

    • OPENAI_API_KEY

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

Context cost

Create Story YAML loads about 2.3k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 1,285 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~109
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

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); the scripts in this folder are not scanned.

SKILL.md

The full file from dylanhogg/gptauthor at commit 8d190fd, republished under its MIT licence (© dylanhogg). 1,285 words, ~2,349 tokens.

Download SKILL.mdSave it as .claude/skills/create-story-yaml/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
create-story-yaml
description
Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name>.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and expand-chapter-next sections, then validate it. Use when the user wants a new gptauthor story, a new story prompt file, or a yaml like prompts-openai-drama.yaml / prompts-scifi-simulation.yaml / prompts-gptauthor-usage.yaml.

Create a gptauthor story YAML

Expand a short story idea (a sentence, a paragraph, a premise) into a complete gptauthor story prompt file, then validate it so gptauthor --story <name> runs without errors.

The human writes the plot; gptauthor writes the prose. This file is the plot — it must contain the whole arc including the ending. Do not leave the ending for the LLM to invent.

Workflow

  1. Read the user's short story text and note which decisions it already settles.
  2. Ask the user about the style with a single AskUserQuestion call, before writing anything (see Asking about style).
  3. Pick the output path (see Filename and location).
  4. Copy assets/template.yaml and fill it in, applying the answers (see Writing the content).
  5. Validate: python3 .claude/skills/create-story-yaml/scripts/validate_story_yaml.py <path> Fix every ERROR; treat WARNs as a review checklist.
  6. Report the path, how the answers shaped the file, and the run command.

Asking about style

A short premise never settles audience, tone, focus, or ending, and every one of those changes the whole file. Ask once, up front, in one AskUserQuestion call — do not write a draft first and revise it afterwards.

Rules:

  • Skip anything the user already specified. If the premise says "a kids' book", don't ask about audience. Never ask a question the prompt already answers.
  • Four questions maximum per call. Pick the four most open dimensions from the table below; if fewer than four are open, ask fewer.
  • Put the option you'd recommend first and mark it (Recommended). The user always gets a free-text "Other", which is where the interesting answers usually come from.
  • If the user declines, answers "you choose", or is clearly in a hurry, pick sensible defaults, write the file, and state each choice you made in your reply.
DimensionheaderOptions to offer
Audience age bracketAudienceAdult (general) / Young adult (13-18) / Middle grade (8-12) / Early readers (5-8)
Tone and treatmentToneWarm and funny / Dark and tense / Literary and restrained / Fast-paced and plot-driven
Where the story's weight sits (multiSelect: true)FocusCharacters and relationships / Puzzle or mystery the reader can solve / World and atmosphere / Ideas and themes
How it endsEndingTwist that recasts the story / Earned happy resolution / Bittersweet or ambiguous / Bleak or tragic

Other dimensions worth a slot when they are the open ones: comparable authors to write toward, real people or events to stay faithful to, story length (a 3-chapter run wants ~8 beats, a 15-chapter run wants ~15), and anything the story must avoid.

The most valuable answer is usually free text on key story points to hit — the user's own beats. Invite it explicitly in the Focus question's phrasing, e.g. "Where should the story's weight sit? (Pick any, or use Other to list specific beats you want hit.)"

Then use the answers:

  • Audience sets vocabulary, sentence length, chapter length, and what content is on the table. Say it plainly in the style block, e.g. The book is written for readers aged 8 to 12: clear sentences, concrete images, no graphic violence.
  • Tone picks the comparable authors and the list of story devices.
  • Focus decides which beats get several lines and which get one.
  • Ending goes in the beats and, when it needs pinning down, a Final chapter: block.

Required schema

All five top-level keys are required, spelled exactly like this. Nothing else is read.

KeyShapeConsumed as
common-book-descriptionblock string |-{book_description} in all three prompts
common-book-charactersblock string |-{book_characters} in all three prompts
synopsismapping: system, promptone call, writes the chapter outline
expand-chapter-firstmapping: system, promptchapter 1
expand-chapter-nextmapping: system, promptchapters 2..N, one call each

system is a plain one-line string; prompt is a block string |-. A missing system or prompt key is an assertion failure at runtime.

Placeholders

prompt values go through Python str.format(). Only these names are supplied — anything else raises KeyError mid-run:

  • synopsis.prompt — {total_chapters} {book_description} {book_characters}
  • expand-chapter-first.prompt — the above plus {synopsis_response}
  • expand-chapter-next.prompt — the above plus {previous_chapter_number} {previous_chapter_text} {chapter_number}

Rules that follow from that:

  • Literal braces in a prompt must be doubled: {{ and }}.
  • system is never formatted. Placeholders there are passed to the model verbatim.
  • expand-chapter-next.system is dead — the engine uses expand-chapter-first.system for every chapter. Keep the two identical so a later edit isn't silently ignored.
  • Never write ${...} anywhere in the file; OmegaConf treats it as interpolation and the run dies on load.
  • Never hardcode a chapter count in prose — the count comes from --total-chapters. Always use {total_chapters}.

Keep the three prompt bodies close to the existing files (gptauthor/prompts-*.yaml); they are tuned to parse correctly. Vary the system line and the genre nouns to match the story, and leave the mechanics alone. assets/template.yaml already has working versions.

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

Writing the content

Every choice below traces back to an answer from Asking about style. If an answer had no visible effect on the file, it wasn't applied.

common-book-description

Two labelled parts, in this order:

  1. Style of the <adjectives> book: — 6-10 lines: genre, the audience bracket stated in plain terms, two or three comparable authors, narrative devices matching the chosen tone, a line requiring rich dialog, a line requiring per-character description, a line requiring that scene/timeline/travel logic be worked out, and You must not end a chapter with any variation of 'To be continued...'.
  2. Key points of the story: — the actual plot. 8-15 beats covering the full arc in order, naming characters and locations. Give the beats the user asked to focus on more room than the rest, and fold any beats they supplied as free text in verbatim in the right place. State the chosen ending explicitly, including any twist. A Final chapter: sub-block is a good way to pin down an unusual ending (see gptauthor/prompts-scifi-simulation.yaml).

Write beats, not prose — this is a brief for a writer, not a draft.

common-book-characters

One line per character: name, gender, role, appearance, personality, quirks. Include minor characters the beats depend on. Mark historical or offstage figures as such. Match the cast to the audience — a middle grade book wants a protagonist near the reader's own age.

system lines

One sentence naming the author persona for the genre, e.g. "You are a clever and creative hard science fiction book author. You are skilled at weaving stories that are coherent, logical, and thrilling to read. You are skilled at creating characters that are engaging and believable." Name the audience here too when it is not adult, e.g. "...a children's book author writing for readers aged 8 to 12." Use the same one in synopsis and both expand-chapter-* sections unless the outline genuinely needs a different persona from the prose.

Filename and location

prompts-<kebab-slug>.yaml, slug derived from the story (e.g. prompts-lighthouse-keeper.yaml).

  • A story for the user to run: write it to the current working directory. --story resolves a local file first, then the installed package's resources.
  • A story to ship with this repo: write it to gptauthor/, and note that pyproject.toml include lists the yaml files that get packaged — it currently ships only two, so a new file needs adding there if it is meant to be distributed.

Do not overwrite an existing file; if the path is taken, pick another slug and say so.

Reporting back

Give the path, one line per style answer showing where it landed in the file (and, for any dimension the user left to you, what you picked), and the run command with the name minus the .yaml extension:

bash
gptauthor --story prompts-lighthouse-keeper --total-chapters 5 --llm-model gpt-5.4-mini --llm-temperature 0.1

Mention that OPENAI_API_KEY must be set, and that the run pauses after the synopsis so the user can edit synopsis_response_user_edited.txt before the chapters are written.

Further detail

reference.md — the engine call sequence, every runtime failure mode with file:line citations, and a worked short-input-to-yaml example. Read it when a validation error is unclear or when deviating from the template.

© dylanhogg, MIT. 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 3 other files (scripts, assets) in .agents/skills/create-story-yaml of dylanhogg/gptauthor.

  • SKILL.md
  • assets/template.yaml
  • reference.md
  • scripts/validate_story_yaml.py

Open the folder on GitHubat commit 8d190fd

Compare with similar skills

Create Story YAML 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.

Create Story YAML compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Create Story YAML this skilldylanhogg/gptauthor116—~2.3kAutomated safety check: PassMIT
Novel Toolsuu201/character-arc5831 repos~574Automated safety check: PassMIT
InkosLeoYeAI/openclaw-master-skills2.2k—~5.5kAutomated safety check: PassMIT
Zy Cinematic Realismpopopo-99/zy-cinematic-realism570—~4.6kAutomated safety check: PassCC-BY-NC-4.0
Web Novel Cover Generatorzenstory-ai/oh-story-claudecode7.4k—~2.9kAutomated safety check: PassMIT
Character Refseternityspring/shuohao-skills4.3k—~1.7kAutomated safety check: WarnApache-2.0

Similar skills

  • Novel Tools

    uu201/character-arc

    网文创作工具与生产流程。当用户需要使用AI辅助写作工具、设计提示词模板、规划写作工作流、选择码字工具、制定发布与数据分析策略时触发。覆盖DeepSeek/ChatGPT/Claude/豆包等AI工具应用、提示词工程、工作流设计、发布运营。

    583 GitHub starsUsed in 1 repo~574 tokens
    Writing & ContentAuto-check passed
  • Inkos

    LeoYeAI/openclaw-master-skills

    Autonomous novel writing CLI agent - use for creative fiction writing, novel generation, style imitation, chapter continuation/import, EPUB export, AIGC detection, and fan fiction.

    2.2k GitHub stars~5.5k tokensUpdated 2 mo ago
    Writing & ContentAuto-check passed
  • Zy Cinematic Realism

    popopo-99/zy-cinematic-realism

    Develop supplied scripts, short stories, or synopses into scene understanding, director-facing art concepts, and motivated narrative keyframes; compile scene ideas, visual references, or existing…

    570 GitHub stars~4.6k tokensUpdated 7 days ago
    Media & CreativeAuto-check passed
  • Web Novel Cover Generator

    zenstory-ai/oh-story-claudecode

    Generates a finished web novel cover with title and author name from a book title, inferring genre style and sizing the image for the target platform.

    7.4k GitHub stars~2.9k tokensUpdated today
    Media & CreativeAuto-check passed
  • Character Refs

    eternityspring/shuohao-skills

    给任何故事里的角色真出参考图(小说改编、自己原创的故事、单独设计一个角色都行,不需要小说原文): 一段话描述角色,拆成分层字段、补全后确认, 先出一张正面全身锚点,其余视图(大头照、90° 侧面、背面、细节、45° 大头照)都只参考这张锚点, 按需分档出图。每张图带标识、可单独重出,重出后自动标出哪些图过期。

    4.3k GitHub stars~1.7k tokensUpdated 2 days ago
    Media & CreativeAuto-check: warnings
  • 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.

    7.4k GitHub starsUsed in 3 repos~3k tokens
    Writing & ContentAuto-check passed

Works with

Questions about Create Story YAML

What does Create Story YAML do?

Turn a short story idea into a gptauthor story prompt YAML file (prompts-<name.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and…. Create Story YAML is an agent skill from dylanhogg/gptauthor.yaml) containing the required common-book-description, common-book-characters, synopsis, expand-chapter-first and expand-chapter-next sections, then validate it.

When should I use Create Story YAML?

Create Story YAML fits situations like: the user wants a new gptauthor story; A new story prompt file; A yaml like prompts-openai-drama.yaml / prompts-scifi-simulation.yaml / prompts-gptauthor-usage.yaml.

How do I install Create Story YAML in Claude Code?

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

How do I install Create Story YAML in Codex?

Run `npx skills add dylanhogg/gptauthor --skill create-story-yaml -a codex`. Or copy the skill folder (.agents/skills/create-story-yaml in dylanhogg/gptauthor) into .agents/skills/create-story-yaml in your project. Codex loads it when a task matches its description.

Can I use Create Story YAML 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 dylanhogg/gptauthor --skill create-story-yaml -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-story-yaml, .gemini/skills/create-story-yaml, .github/skills/create-story-yaml and .opencode/skills/create-story-yaml in your project.

What does Create Story YAML need to run?

Going by SKILL.md and its folder, Create Story YAML needs Python for the scripts in its folder, the command-line tools its instructions call (python3) and credentials named OPENAI_API_KEY. Our summary lists: Python 3; A credential in OPENAI_API_KEY.

Does Create Story YAML 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 Create Story YAML 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Create Story YAML use?

Create Story YAML is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Create Story YAML use?

About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Create Story YAML?

Skills that share tags, products or a category with Create Story YAML: Novel Tools (uu201/character-arc, 583 stars), Inkos (LeoYeAI/openclaw-master-skills, 2.2k stars), Zy Cinematic Realism (popopo-99/zy-cinematic-realism, 570 stars) and Web Novel Cover Generator (zenstory-ai/oh-story-claudecode, 7.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Create Story YAML?

dylanhogg (a GitHub user) maintains it in dylanhogg/gptauthor, which has 116 GitHub stars. The repository was last updated on August 15, 2026.

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