Skip to content
Back to skills

Image Analyser

ASecurity

Use to analyse a character image down to the smallest mole and diff against a canon — per-feature spec, OCR-reads tattoo text, flags drift. Triggers 'analyse this image', 'match the canon'.

  • 10 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agentsrustgobackenddocumentation

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 2, 2026

npx -y skills add event4u-app/agent-config --skill image-analyser --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Image Analyser?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Image Analyser
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/event4u-app-image-analyser-agent-config/badge)](https://www.skillsdirectory.com/skills/event4u-app-image-analyser-agent-config)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
model_tier: high
name: image-analyser
description: "Use to analyse a character image down to the smallest mole and diff against a canon — per-feature spec, OCR-reads tattoo text, flags drift. Triggers 'analyse this image', 'match the canon'."
personas:
  - hollywood-director
domain: product
workspaces:
  - small-business
packs:
  - ai-video
lifecycle: experimental
trust:
  level: experimental
install:
  default: false
  removable: true
---

# image-analyser

> Read a character image, extract **every** feature (face marks, per-location
> tattoos incl. lettered text, exact hair split, per-eye colour, jewelry,
> asymmetry), and diff it against the character's canon so drift is caught
> **before** it ships. Output feeds [`image-creator`](../image-creator/SKILL.md)
> and the fidelity loop. Schema + rubric + loop: [`canon-spec.md`](canon-spec.md).

## When to use

- "Analyse this image / character", "does this match the canon", "check
  character accuracy", "find what's wrong with this render".
- As the verify step of the fidelity loop (after `image-creator` generates).
- To bootstrap a Canon Spec from an authoritative portrait (the *image wins
  over the text*).

NOT for: scene/motion review (→ `video-director`), non-character art
(→ `canvas-design`), cross-scene token locking (→ `character-consistency`,
which consumes this skill's output).

## Input

- Image **path or public URL** (per the `vision-analyze` shape).
- Optional: a reference Canon Spec / character id (e.g.
  `agents/reference/ai-video/<project>/characters/<id>.json`) to diff against.
- **Input gate** (per the `image-ocr` contract): refuse blurry / sub-resolution
  / unreadable inputs with a clear reason rather than guessing.

## Procedure

1. **Read the image.** A vision-capable model views it directly. No new
   dependency; if a cloud-vision/OCR backend is wanted, ask first
   (`missing-tool-handling`).
2. **Section-by-section extraction** (the "down to the smallest mole" pass) —
   one pass per section: `physique`, `face` (+ marks/scars/moles), `hair`
   (colour, split line, length, braids, shaved areas), `eyes` (per-eye colour,
   heterochromia, ring, kohl), `tattoos` (per body location: motif, style,
   and **text** if lettered), `jewelry`, `outfit`, cross-feature `asymmetry`.
3. **OCR sub-pass for lettered tattoos** — read runic/block text exactly
   (knuckle runes, `S-U-S-I`, scalp runes, mic glyph), never approximate.
4. **Hard-feature enhancement** — for a faint mole, an unclear hair-split line,
   or heterochromia in shadow: re-pass on a crop/zoom of that region **before**
   marking it. Only then mark genuinely unresolvable features `unverifiable`.
5. **Emit the `observation` layer** (Layer 2 in `canon-spec.md`): observed value
   + `confidence` (high|medium|low) per feature + `unverifiable[]`. Confidence
   lives here, **never** written back onto the canon (Layer 1).
6. **If a reference is given — diff + score** per the rubric: per-feature
   `match|partial|miss`, the **canon-breaking hard gate**, per-section scores,
   advisory roll-up, and `low`-confidence misses flagged `needs-better-image`
   (not a hard fail). Emit concrete correction directives per miss.

## The one rule that overrides everything

**The image wins over the text.** When extracting from an authoritative portrait
and the canon text disagrees, record what is *visible*. When verifying a
candidate against the canon, the canon's `identity` is the truth. Never invent a
feature the image does not show (per `direct-answers` — no invented facts); mark
it `unverifiable` instead.

## Output format

1. **Observation JSON** (Layer 2) — observed features + per-feature confidence + `unverifiable[]`.
2. **Diff table** (only if a reference was given): `feature · severity · expected · observed · verdict (match/partial/miss) · confidence · fix`.
3. **Verdict line:** `GATE: pass|FAIL (canon-breaking misses: …)` + per-section scores + advisory roll-up.

## Example (safe vs unsafe)

- Safe: `eyes — canon-breaking — expected blue-left/green-right — observed both blue — MISS (high) — fix: regenerate with heterochromia anchor front-loaded`.
- Unsafe: reporting `eyes — match` when the green eye is out of frame. If unseen → `unverifiable`, not `match`.

## Gotchas

- Hands/knuckles often out of frame → tattoo text `unverifiable`, not a miss.
- A strong face must not mask a broken hair split — that is why scores are
  per-section, not one number.
- Symmetric characters (Sigrún, Bjørn) vs the asymmetric one (Veikko): check
  the left/right invariant explicitly for the Loki-marked character.

## Do NOT

- Do NOT score an unseen feature as `match` — if it is out of frame or
  unresolvable, mark it `unverifiable` (per `direct-answers`, no invented facts).
- Do NOT write `confidence` / `unverifiable` back onto the canon (Layer 1) — they
  are the analyser's epistemic state (Layer 2) and never mutate the truth layer.
- Do NOT collapse the rubric to a single number — a strong face must never mask a
  canon-breaking hair/eye miss; scores stay per-section with a hard gate.
- Do NOT approximate lettered tattoo text — OCR it exactly or mark it `unverifiable`.
- Do NOT analyse a real-person likeness without routing through
  `media-governance-routing` first.

## Policies

Character images can carry a real person's likeness. Before analysing a
real-person likeness, route through `media-governance-routing` and consult
`agents/settings/policies/media/likeness.md` + `public-figures.md`. Fictional
characters (e.g. the odins-beard trio) are exempt; the routing decision is the
agent's, in-session.

## Related skills

- [`image-creator`](../image-creator/SKILL.md) — consumes the diff; the loop partner.
- [`character-consistency`](../character-consistency/SKILL.md) — consumes the load-bearing token subset of the `identity` layer.
- [`canon-spec.md`](canon-spec.md) — schema, rubric, fidelity loop.
- [`screenshot-hygiene`](../screenshot-hygiene/SKILL.md) — reuses this skill's OCR text-read to detect sensitive data in a documentation screenshot before it ships.

Files in this skill

  • SKILL.md6 KB
  • canon-spec.md5.8 KB
  • evals/triggers.json1.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.