Agent SkillsUfukNode/Noustiny › narrative-scene-qa

narrative-scene-qa

GitHub

用于叙事图像生成后的质量验证,对比渲染图片与剧情意图及前文设定,检测角色姿态、数量、状态等严重偏差,确保内容一致性。

hermes-additions/skills/creative/narrative-scene-qa/SKILL.md UfukNode/Noustiny

Trigger Scenarios

需要验证生成的叙事图像是否符合剧情描述 检查图像是否违背既定世界观或角色设定

Install

npx skills add UfukNode/Noustiny --skill narrative-scene-qa -g -y
More Options

Non-standard path

npx skills add https://github.com/UfukNode/Noustiny/tree/main/hermes-additions/skills/creative/narrative-scene-qa -g -y

Use without installing

npx skills use UfukNode/Noustiny@narrative-scene-qa

指定 Agent (Claude Code)

npx skills add UfukNode/Noustiny --skill narrative-scene-qa -a claude-code -g -y

安装 repo 全部 skill

npx skills add UfukNode/Noustiny --all -g -y

预览 repo 内 skill

npx skills add UfukNode/Noustiny --list

SKILL.md

Frontmatter
{
    "name": "narrative-scene-qa",
    "author": "Noustiny",
    "license": "MIT",
    "version": "1.0.0",
    "metadata": {
        "hermes": {
            "tags": [
                "narrative",
                "vision",
                "qa",
                "image-eval",
                "continuity"
            ]
        }
    },
    "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."
}

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:

Field Type Purpose
imageUrl string Full URL to the rendered image (sent as a multimodal image_url message part — you actually see the pixels)
nodeTitle string Beat label this image was supposed to depict
nodeBody string Prose describing what should be happening in the image
canonContext array Prior 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.

{
  "approved": true,
  "score": 0.87,
  "issues": "",
  "fix_hint": ""
}
{
  "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:

  • approvedtrue 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".

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.

{
  "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.

{
  "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.

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

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

Version History

  • 09a0c82 Current 2026-07-24 16:25

Same Skill Collection

hermes-additions/skills/creative/character-sheet-builder/SKILL.md
hermes-additions/skills/creative/narrative-brainstorm/SKILL.md
hermes-additions/skills/creative/narrative-continuity-critic/SKILL.md
hermes-additions/skills/creative/narrative-judge/SKILL.md
hermes-additions/skills/creative/narrative-rewriter/SKILL.md
hermes-additions/skills/creative/narrative-writer-assist/SKILL.md
hermes-additions/skills/creative/narrative-writer/SKILL.md
hermes-additions/skills/creative/scene-composition/SKILL.md
hermes-additions/skills/creative/storybook-intro/SKILL.md
hermes-additions/skills/creative/visual-prompt-builder/SKILL.md
hermes-additions/skills/creative/narration-voice-director/SKILL.md
hermes-additions/skills/creative/story-copyright-detector/SKILL.md

Metadata

Files
0
Version
09a0c82
Hash
f5c63453
Indexed
2026-07-24 16:25

inicio - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-18 04:28
浙ICP备14020137号-1 $mapa de visitantes$