Agent skill

Character Sheet Builder

by UfukNode in UfukNode/Noustiny

Produce a cast sheet of 1–4 named characters from a story seed.

MITAuto-check passedMedia & Creative

Install Character Sheet Builder

skills CLI
$ npx skills add UfukNode/Noustiny --skill character-sheet-builder -a claude-code

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

GitHub CLI
$ gh skill install UfukNode/Noustiny character-sheet-builder --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/UfukNode/Noustiny.git skills-src && mkdir -p .claude/skills && cp -r skills-src/hermes-additions/skills/creative/character-sheet-builder .claude/skills/character-sheet-builder && 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
character-sheet-builder
GitHub stars
181
Token cost
~2.1k tokens
SKILL.md length
570 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Produce a cast sheet of 1–4 named characters from a story seed.

  • Tasks that involve Diffusion and image models
  • SKILL.md covers When to use, Input shape, Output contract and Rules, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • Tasks that involve Comics and storyboards

What it does

Character Sheet Builder is an agent skill from UfukNode/Noustiny. Produce a cast sheet of 1–4 named characters from a story seed. Each entry has a canonical-but-IP-free visual description and a hero-portrait prompt ready to drop into a text-to-image model. Downstream: portraits become the reference frames every subsequent beat image will condition on, locking character consistency across the whole storyboard. Fires once per story at canvas-enter, after story-copyright-detector.

Its SKILL.md is about 2.1k 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 Media & Creative, covering Diffusion and image models and Comics and storyboards. The repository describes itself as: An agent native video creation pipeline that runs on top of Hermes Agent. The licence is MIT.

When your agent uses it

  • Tasks that involve Diffusion and image models
  • Tasks that involve Comics and storyboards

Example prompts

  • “/character-sheet-builder”

What it can do on your machine

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

  • Tool permissions

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

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

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

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

  • Network

    No URLs in SKILL.md.

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

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Character Sheet Builder loads about 2.1k tokens when it runs. Until then it costs about 111 tokens; SKILL.md has 570 words of instructions outside code blocks.

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

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

Safety

Auto-check passed

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

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

SKILL.md

The full file from UfukNode/Noustiny at commit 09a0c82, republished under its MIT licence (© UfukNode). 570 words, ~2,149 tokens.

Download SKILL.mdSave it as .claude/skills/character-sheet-builder/SKILL.md (or your agent's skills folder).
name
character-sheet-builder
description
Produce a cast sheet of 1–4 named characters from a story seed. Each entry has a canonical-but-IP-free visual description and a hero-portrait prompt ready to drop into a text-to-image model. Downstream: portraits become the reference frames every subsequent beat image will condition on, locking character consistency across the whole storyboard. Fires once per story at canvas-enter, after story-copyright-detector.
author
Noustiny
license
MIT
version
1.0.0

Character Sheet Builder

Every text-to-image render reinvents the characters unless the model has a reference to condition on. This skill solves that by producing the character bible up front. One hero portrait per principal character → cached → passed as a reference to every later beat. Result: the same Aang face, the same Katara braid, the same Tony Stark armor, across every frame of the storyboard.

When to use

Fire exactly once when the canvas opens with a fresh seed, immediately after story-copyright-detector tells you the franchise. Never re-fire for the same story.

Input shape

json
{
  "seed": "Aang opens his eyes for the first time in a hundred years…",
  "franchise": "avatar-airbender",
  "storyRegister": "animated-feature, cel-shaded 2D animation, crisp ink outlines, vibrant saturated palette, Studio Mir-style atmospheric shading",
  "allow_ip_names": true
}
  • seed — the full logline
  • franchise — slug from the detector (marvel, avatar-airbender, lotr, null, …). null means original seed.
  • storyRegister — the visual register token set to append to every portrait_prompt so the character sheet's aesthetic matches the beat-level frames.
  • allow_ip_names — when true, the caller's image model accepts franchise IP tokens (typically Gemini / SeeDream on animated franchises). Portrait prompts MAY then include named characters ("Katara from Avatar: The Last Airbender…"). When false (FLUX path / strict-filter models), portrait prompts MUST stay IP-free (the existing "bald monk boy with blue arrow tattoo" sanitised form).

Output contract

Return exactly one JSON array, nothing else. First character [, last ].

json
[
  {
    "name": "Aang",
    "description": "twelve-year-old bald monk boy, blue arrow tattoo down the brow, wide silver-grey eyes, saffron-and-orange layered robes, slim athletic child frame, bare feet, ever-curious expression",
    "portrait_prompt": "hero portrait, full-body, twelve-year-old bald monk boy with a blue arrow tattoo on his brow, wide silver-grey eyes, saffron-and-orange layered robes, bare feet, light neutral studio backdrop, three-quarter pose, soft key light, animated-feature, cel-shaded 2D animation, crisp ink outlines, vibrant saturated palette"
  },
  {
    "name": "Katara",
    "description": "fourteen-year-old brown-skinned Water Tribe girl, cobalt fur-trimmed parka with ivory trim, dark hair in twin looped front braids, bright blue eyes, hopeful open face",
    "portrait_prompt": "hero portrait, full-body, fourteen-year-old brown-skinned teenage girl, cobalt blue fur-trimmed parka, ivory bone trim, dark hair styled in twin looped front braids, bright blue eyes, light neutral studio backdrop, three-quarter pose, soft key light, animated-feature, cel-shaded 2D animation, crisp ink outlines, vibrant saturated palette"
  },
  {
    "name": "Sokka",
    "description": "fifteen-year-old brown-skinned Water Tribe boy, cobalt fur-trimmed parka, high wolf-tail topknot, sharp jaw, wry skeptical expression, boomerang sheath at his back",
    "portrait_prompt": "hero portrait, full-body, fifteen-year-old brown-skinned teenage boy, cobalt blue fur-trimmed parka, dark hair pulled into a high wolf-tail topknot, wry skeptical expression, boomerang sheath at back, light neutral studio backdrop, three-quarter pose, soft key light, animated-feature, cel-shaded 2D animation, crisp ink outlines, vibrant saturated palette"
  }
]

Rules

  • 1 to 4 characters max. Focus on PRINCIPALS actually named or strongly implied in the seed. Skip incidental / unnamed bystanders.
  • name — the canonical short name used in the source (first-name only unless ambiguous). Used as the key in the downstream character registry, so it must match whatever the beat prose will reference.
  • description — rich physical detail, no IP names, no franchise terms. Thor → thunder-god warrior with blond beard and Norse-style plate armor with red cape, not "Thor". Every description must be reusable verbatim in every subsequent beat.
  • portrait_prompt — a full-body hero portrait prompt for a text-to-image model. Must end with the provided storyRegister string verbatim so every portrait and every beat share the same aesthetic grammar.
  • IP naming rule — conditional on allow_ip_names:
    • allow_ip_names: true → portrait_prompt MAY name the canonical character ("hero portrait of Katara from Avatar: The Last Airbender, cobalt fur-trimmed parka, twin looped front braids…"). Always follow the name with the rich physical description anyway — the image model gets the best of both if it recognises the name, and the description if it doesn't.
    • allow_ip_names: false → portrait_prompt MUST be fully sanitised (IP-free). "Katara" becomes "fourteen-year-old brown-skinned Water Tribe girl…" every time.
  • The description field is ALWAYS the IP-free version (downstream beats reuse it regardless of model). Only the portrait_prompt is conditional.
  • For original seeds (franchise: null): invent characters from what the seed implies. If the seed doesn't name anyone, produce one default protagonist + any strongly implied secondary. allow_ip_names is moot for originals — no IP to name anyway.
  • Output is strict JSON array. No markdown code fences. No preamble prose ("Here are the characters…"). No trailing notes. First char [, last ].
Show full SKILL.md (105 more words)Show less

Anti-patterns

  • Do not name an IP character in the portrait_prompt when allow_ip_names: false — that tells the caller the image model will reject named prompts.
  • When allow_ip_names: true, do not rely on the name alone — always include the rich physical description as well.
  • Do not invent characters not implied by seed or canon.
  • Do not exceed 4 entries. A bloated cast sheet wastes image-gen calls.
  • Do not output reasoning, step-by-step notes, or "here's my thinking" prose. JSON array only.
  • Do not wrap the portrait prompt in quotes or add "--style" flags. Plain prose only.

Worked examples

Marvel Endgame seed
json
{
  "seed": "Tony Stark holds the Infinity Gauntlet on the Avengers compound battlefield — every possible ending hangs on what he does next.",
  "franchise": "marvel",
  "storyRegister": "superhero-finale, operatic cosmic, IMAX 70mm color grade, high dynamic range, heroic silhouettes"
}

Correct output:

json
[
  {
    "name": "Tony Stark",
    "description": "lean mid-forties man, dark close-cropped hair, sharp goatee, sharp brown eyes, cracked and battle-worn red-and-gold articulated plate armor with a glowing chest core",
    "portrait_prompt": "hero portrait, full-body, lean mid-forties man with dark close-cropped hair and a sharp goatee, cracked red-and-gold articulated plate armor with a faintly glowing chest core, sharp brown eyes, three-quarter pose, soft key light on a neutral grey backdrop, superhero-finale, operatic cosmic, IMAX 70mm color grade, high dynamic range, heroic silhouettes"
  }
]
Grounded original seed
json
{
  "seed": "Walt is on the payphone outside the diner in New Hampshire. Everything he is considering would end something.",
  "franchise": null,
  "storyRegister": "quiet literary drama, natural window light, muted earth tones, medium-format stills"
}

Correct output:

json
[
  {
    "name": "Walt",
    "description": "bald late-fifties man, neat greying goatee, wire-frame glasses, heavy navy winter parka, tired grey-blue eyes, slight hunch at the shoulders",
    "portrait_prompt": "hero portrait, full-body, bald late-fifties man with a neat greying goatee, wire-frame glasses, heavy navy winter parka, tired grey-blue eyes, three-quarter pose, soft key light on a neutral grey backdrop, quiet literary drama, natural window light, muted earth tones, medium-format stills"
  }
]

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

Files

Just SKILL.md in hermes-additions/skills/creative/character-sheet-builder of UfukNode/Noustiny.

Open the folder on GitHubat commit 09a0c82

Compare with similar skills

Character Sheet Builder 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.

Character Sheet Builder compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Character Sheet Builder this skillUfukNode/Noustiny181—~2.1kAutomated safety check: PassMIT
Ernie Imageartokun/comfyui-mcp795—~4.5kAutomated safety check: PassMIT
Flux2 Klein PromptingAnastasiyaW/codex-claude-code-config154—~2.8kAutomated safety check: PassMIT
Anima Baseartokun/comfyui-mcp795—~4kAutomated safety check: PassMIT
Higgsfield CanvasOSideMedia/higgsfield-ai-prompt-skill701—~2.2kAutomated safety check: PassMIT
Music Videoguaardvark/guaardvark255—~774Automated safety check: PassMIT

Similar skills

  • Ernie Image

    artokun/comfyui-mcp

    Build Baidu ERNIE-Image / ERNIE-Image-Turbo workflows, primarily TEXT-TO-IMAGE.

    795 GitHub stars~4.5k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Flux2 Klein Prompting

    AnastasiyaW/codex-claude-code-config

    Expert prompt engineering for FLUX.2 [klein] image generation and editing model.

    154 GitHub stars~2.8k tokensUpdated today
    Media & CreativeAuto-check passed
  • Anima Base

    artokun/comfyui-mcp

    Anime/illustration text-to-image (ANIMA 1.0, ~2B Cosmos DiT).

    795 GitHub stars~4k tokensUpdated 3 days ago
    Media & CreativeAuto-check passed
  • Higgsfield Canvas

    OSideMedia/higgsfield-ai-prompt-skill

    A skill your agent uses when the user mentions Higgsfield Canvas, a node-based or node graph workspace, an infinite board/canvas, chaining generations into a pipeline, or wants to wire prompts →…

    701 GitHub stars~2.2k tokensUpdated 11 days ago
    Media & CreativeAuto-check passed
  • Music Video

    guaardvark/guaardvark

    Turn a song into a beat-synced music video with Guaardvark's Director: song analysis, per-cut shot prompts, storyboard keyframes, image-to-video renders, cuts on the beat.

    255 GitHub stars~774 tokensUpdated today
    Media & CreativeAuto-check passed
  • Canghe Comic

    freestylefly/canghe-skills

    Knowledge comic creator supporting multiple art styles and tones.

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

More from UfukNode/Noustiny

All 13 skills in this repo
  • Grades whether a downstream story beat still holds after an upstream insertion, returning a strict JSON verdict of still_valid, needs_rewrite or must_delete.

    181 GitHub stars~2.3k tokensUpdated 5 mo ago
    Auto-check passed
  • Narrative Writer

    UfukNode/Noustiny

    Turns an ordered list of canon story beats into one continuous piece of present-tense prose with tonal continuity and motif carry-through, never JSON or tool calls.

    181 GitHub stars~1.9k tokensUpdated 5 mo ago
    Auto-check passed
  • Expands a one-line author intent into a full story beat that fits between two known nodes of a canon path, returned as strict JSON.

    181 GitHub stars~3.1k tokensUpdated 5 mo ago
    Auto-check passed
  • Story Scene Composer

    UfukNode/Noustiny

    Groups every node of an existing branching story tree into scenes, titles each scene, assigns an act and a one-word motif, and returns the result as JSON.

    181 GitHub stars~2.3k tokensUpdated 5 mo ago
    Auto-check passed
  • Story Copyright Detector

    UfukNode/Noustiny

    Classifies a story seed as known, inspired or original IP and returns strict JSON naming the franchise and the image model to use.

    181 GitHub stars~1.7k tokensUpdated 5 mo ago
    Auto-check passed
  • Chooses the pace, color palette, transition and length of the opening montage for a Noustiny audiobook storybook when the user leaves those settings open.

    181 GitHub stars~3.2k tokensUpdated 5 mo ago
    Auto-check passed

Questions about Character Sheet Builder

What does Character Sheet Builder do?

Produce a cast sheet of 1–4 named characters from a story seed. Character Sheet Builder is an agent skill from UfukNode/Noustiny. Produce a cast sheet of 1–4 named characters from a story seed.

When should I use Character Sheet Builder?

Character Sheet Builder fits situations like: tasks that involve Diffusion and image models; tasks that involve Comics and storyboards.

How do I install Character Sheet Builder in Claude Code?

Run `npx skills add UfukNode/Noustiny --skill character-sheet-builder -a claude-code`. Or copy the skill folder (hermes-additions/skills/creative/character-sheet-builder in UfukNode/Noustiny) into .claude/skills/character-sheet-builder in your project. Claude Code loads it when a task matches its description.

How do I install Character Sheet Builder in Codex?

Run `npx skills add UfukNode/Noustiny --skill character-sheet-builder -a codex`. Or copy the skill folder (hermes-additions/skills/creative/character-sheet-builder in UfukNode/Noustiny) into .agents/skills/character-sheet-builder in your project. Codex loads it when a task matches its description.

Can I use Character Sheet Builder 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 UfukNode/Noustiny --skill character-sheet-builder -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/character-sheet-builder, .gemini/skills/character-sheet-builder, .github/skills/character-sheet-builder and .opencode/skills/character-sheet-builder in your project.

What does Character Sheet Builder need to run?

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

Does Character Sheet Builder 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 Character Sheet Builder safe to install?

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

What licence does Character Sheet Builder use?

Character Sheet Builder is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Character Sheet Builder use?

About 2.1k tokens (SKILL.md is roughly 8.6k 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 Character Sheet Builder?

Skills that share tags, products or a category with Character Sheet Builder: Ernie Image (artokun/comfyui-mcp, 795 stars), Flux2 Klein Prompting (AnastasiyaW/codex-claude-code-config, 154 stars), Anima Base (artokun/comfyui-mcp, 795 stars) and Higgsfield Canvas (OSideMedia/higgsfield-ai-prompt-skill, 701 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Character Sheet Builder?

UfukNode (a GitHub user) maintains it in UfukNode/Noustiny, which has 181 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on May 4, 2026.

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