Agent skill

Narrative Scene QA

by UfukNode in UfukNode/Noustiny

Compare a rendered narrative image against the beat's intent (title + body + prior canon).

MITAuto-check passed

Install Narrative Scene QA

skills CLI
$ npx skills add UfukNode/Noustiny --skill narrative-scene-qa -a claude-code

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

GitHub CLI
$ gh skill install UfukNode/Noustiny narrative-scene-qa --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/narrative-scene-qa .claude/skills/narrative-scene-qa && 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
narrative-scene-qa
GitHub stars
181
Token cost
~1.6k tokens
SKILL.md length
687 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Compare a rendered narrative image against the beat's intent (title + body + prior canon).

  • SKILL.md covers Input, What to flag (verdict:…, What NOT to flag (approved:… and Output contract, plus 2 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Narrative Scene QA is an agent skill from UfukNode/Noustiny. Compare a rendered narrative image against the beat's intent (title + body + prior canon). Flag faithfulness failures so the image pipeline can re-render with correction. Returns strict JSON {approved, score, issues, fixhint}. No prose, no tool calls.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: An agent native video creation pipeline that runs on top of Hermes Agent. The licence is MIT.

Example prompts

  • “/narrative-scene-qa”

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

Narrative Scene QA loads about 1.6k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 687 words of instructions outside code blocks.

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

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). 687 words, ~1,623 tokens.

Download SKILL.mdSave it as .claude/skills/narrative-scene-qa/SKILL.md (or your agent's skills folder).
name
narrative-scene-qa
description
Compare a rendered narrative image against the beat's intent (title + body + prior canon). Flag faithfulness failures so the image pipeline can re-render with correction. Returns strict JSON {approved, score, issues, fix_hint}. No prose, no tool calls.
version
1.0.0
author
Noustiny
license
MIT

Narrative Scene QA

Post-render verification pass. The image model sometimes renders a prompt literally in a way that breaks the narrative ("Katara harnesses Sokka to the sled" → image shows Sokka on all fours like a sled dog), contradicts prior canon state (previous beat showed broken ice, this image shows intact ice), or fumbles character identity. You are the check that catches those failures.

Input

A JSON object containing:

FieldTypePurpose
imageUrlstringFull URL to the rendered image (sent as a multimodal image_url message part — you actually see the pixels)
nodeTitlestringBeat label this image was supposed to depict
nodeBodystringProse describing what should be happening in the image
canonContextarrayPrior canon beats as {title, body, imagePrompt} so you know the state that must carry forward

What to flag (verdict: approved: false, score < 0.6)

Catastrophic content failures only — stylistic judgment is not your job.

  • Character posture mismatch — a named HUMAN character rendered in an animal/object pose (all fours, harnessed as a beast, hovering like a ghost when the body doesn't say so).
  • Wrong character count — body names two people but the image shows one; image adds a third who wasn't named.
  • Prior-state reset — prior canon visibly changed the world (broken ice, freed prisoner, destroyed object, lit fire) and this image silently reverts to the pristine state.
  • Setting drift — body places the beat in location X but the image invents a different location (South Pole iceberg replaced by desert ruins, spaceship corridor turned into a forest).
  • Object state wrong — a named object is in the wrong condition (full cup that the body says was emptied, intact sword that was broken two beats ago).
  • Character identity drift — a named character has the wrong race / age / gender / signature clothing from the established registry.

What NOT to flag (approved: true)

  • Minor stylistic choices (palette variations, framing, depth of field).
  • Emotional intensity off by a notch (a "hopeful" scene that feels slightly tense is fine).
  • Background decor variations — icicles patterned differently, different rock shapes.
  • Exact clothing pattern differences when the overall silhouette and color are right.

Output contract

Return exactly one JSON object. First character {, last character }. No preamble, no markdown fence, no XML, no reasoning prose outside the object.

json
{
  "approved": true,
  "score": 0.87,
  "issues": "",
  "fix_hint": ""
}
json
{
  "approved": false,
  "score": 0.22,
  "issues": "Sokka is depicted on all fours, being harnessed as a sled-pulling animal. Named human characters must not be rendered in animal pose.",
  "fix_hint": "Render two human characters standing upright side by side, each gripping a rope attached to the wooden sled, walking across the snow. Both figures are fully upright, on two legs. No animal-pose rendering."
}

Rules for each field:

  • approved — true iff score >= 0.6 AND no catastrophic failure from the flag list.
  • score — float 0.0..1.0. How well the image depicts the intent. 0.0 = hallucinated something unrelated, 1.0 = faithful render.
  • issues — one sentence, ≤180 chars. Empty string when approved. State the visible problem plainly ("Sokka is on all fours being harnessed as a sled dog"), not the cause ("the prompt used 'harness Sokka'").
  • fix_hint — actionable visual guidance for the image prompt builder, ≤240 chars. Empty string when approved. Specific: "render both characters standing upright and pulling the sled side by side". NOT vague: "make it better", "fix the composition", "make Sokka look right".
Show full SKILL.md (211 more words)Show less

Anti-patterns

  • Do not emit <tool_call>, <think>, or XML tags.
  • Do not call any tool.
  • Do not wrap output in a ```json code fence.
  • Do not explain your reasoning in prose before or after the JSON.
  • Do not flag stylistic choices — aesthetics are subjective and not your job.
  • Do not approve an image just because it looks pretty — if the narrative intent is wrong, say so.
  • Do not return score as a string.
  • Do not mix languages — English only in issues and fix_hint.

Examples

Example 1 — catastrophic literal-render (flagged)

Input body: "Katara harnesses Sokka to the sled. They begin to follow Aang's faint trail." Image shows: Sokka on all fours being strapped into the sled's harness like a sled dog; Katara standing behind holding the reins.

json
{
  "approved": false,
  "score": 0.18,
  "issues": "Sokka is rendered on all fours in a sled-dog harness position. Named human characters must be in standing human posture unless the body explicitly says otherwise.",
  "fix_hint": "Render Sokka and Katara both standing upright, side by side, each holding a rope or handle attached to the sled as they pull it together across the snow. Neither character on all fours."
}
Example 2 — state reset (flagged)

Prior canon: "Katara shatters the ice around Aang, pulling him free." This body: "Aang catches his breath in the cold air." Image shows: Aang still encased inside an intact iceberg; Katara outside looking in.

json
{
  "approved": false,
  "score": 0.25,
  "issues": "The ice around Aang is shown intact, but prior canon established the ice was shattered. The image silently reverts the world state.",
  "fix_hint": "Render Aang standing outdoors amid broken ice shards on the cavern floor, breathing in the cold air. The iceberg around him must be visibly shattered, not sealed."
}
Example 3 — faithful render (approved)

Body: "Aang stands amid broken ice, looking back at Katara and Sokka." Image shows: Aang in the foreground on cracked ice, head turned toward two figures in blue parkas behind him.

json
{
  "approved": true,
  "score": 0.88,
  "issues": "",
  "fix_hint": ""
}

Those are the target patterns. Faithful or plain-wrong — no middle-ground guessing.

© 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/narrative-scene-qa of UfukNode/Noustiny.

Open the folder on GitHubat commit 09a0c82

Compare with similar skills

Narrative Scene QA 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.

Narrative Scene QA compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Narrative Scene QA this skillUfukNode/Noustiny181—~1.6kAutomated safety check: PassMIT
Render Blockingthedaviddias/Front-End-Checklist74k—~430Automated safety check: PassMIT
Intent Requirements IntakeYeachan-Heo/oh-my-claudecode40k—~1.5kAutomated safety check: PassMIT
Team NarrativeDonchitos/Claude-Code-Game-Studios26k—~4.5kAutomated safety check: PassMIT
RenderLeoYeAI/openclaw-master-skills2.2k—~4.8kAutomated safety check: PassMIT
Compare Renderhbmartin/graphviz2drawio275—~1.2kAutomated safety check: PassGPL-3.0

Similar skills

  • Render Blocking

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing slow page loads, heavy assets, or rendering delays related to Eliminate render-blocking resources.

    74k GitHub stars~430 tokensUpdated yesterday
    Frontend & DesignAuto-check passed
  • Intent Requirements Intake

    Yeachan-Heo/oh-my-claudecode

    Turns a pasted chat log or spoken problem report from support or ops staff into a reviewed five-section intent.md through numbered batches of questions.

    40k GitHub stars~1.5k tokensUpdated today
    Product & Project ManagementAuto-check passed
  • Team Narrative

    Donchitos/Claude-Code-Game-Studios

    Orchestrate the narrative team — narrative-director, writer, world-builder, level-designer — for story, world lore, narrative-driven levels.

    26k GitHub stars~4.5k tokensUpdated 8 days ago
    Game DevelopmentAuto-check passed
  • Render

    LeoYeAI/openclaw-master-skills

    Deploy and operate apps on Render (Blueprint + one-click Dashboard deeplink, same flow as Codex render-deploy).

    2.2k GitHub stars~4.8k tokensUpdated 2 mo ago
    Productivity & AutomationAuto-check passed
  • Compare Render

    hbmartin/graphviz2drawio

    Visually verify graphviz2drawio conversion fidelity by rendering a graphviz source side-by-side as a native graphviz PNG and a converted draw.io PNG, then reading both images to compare.

    275 GitHub stars~1.2k tokensUpdated 2 mo ago
    Testing & QAAuto-check passed
  • Browser Intent

    ruvnet/ruflo

    Execute a natural-language browser intent via page-agent (browseract) when the target is easier to describe than to select — degrades gracefully when page-agent or an OpenAI-compatible LLM provider…

    74k GitHub stars~1.2k tokensUpdated today
    Productivity & AutomationAuto-check: notes

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 Narrative Scene QA

What does Narrative Scene QA do?

Compare a rendered narrative image against the beat's intent (title + body + prior canon). Narrative Scene QA is an agent skill from UfukNode/Noustiny. Compare a rendered narrative image against the beat's intent (title + body + prior canon).

How do I install Narrative Scene QA in Claude Code?

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

How do I install Narrative Scene QA in Codex?

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

Can I use Narrative Scene QA 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 narrative-scene-qa -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/narrative-scene-qa, .gemini/skills/narrative-scene-qa, .github/skills/narrative-scene-qa and .opencode/skills/narrative-scene-qa in your project.

What does Narrative Scene QA need to run?

SKILL.md names no scripts, command-line tools or credentials: Narrative Scene QA is instructions for the agent only.

Does Narrative Scene QA 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 Narrative Scene QA 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 Narrative Scene QA use?

Narrative Scene QA 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 Narrative Scene QA use?

About 1.6k tokens (SKILL.md is roughly 6.5k 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 Narrative Scene QA?

Skills that share tags, products or a category with Narrative Scene QA: Render Blocking (thedaviddias/Front-End-Checklist, 74k stars), Intent Requirements Intake (Yeachan-Heo/oh-my-claudecode, 40k stars), Team Narrative (Donchitos/Claude-Code-Game-Studios, 26k stars) and Render (LeoYeAI/openclaw-master-skills, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Narrative Scene QA?

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.