Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add wanshuiyin/ARIS-Movie-Director --skill method-figuregit clone --depth 1 https://github.com/wanshuiyin/ARIS-Movie-DirectorWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/wanshuiyin/aris-movie-director/method-figure)<a href="https://agentmods.dev/skills/wanshuiyin/aris-movie-director/method-figure"><img src="https://agentmods.dev/badge/skills/wanshuiyin/aris-movie-director/method-figure/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/wanshuiyin/aris-movie-director/method-figure"><img src="https://agentmods.dev/badge/skills/wanshuiyin/aris-movie-director/method-figure.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Rogue Agent · line 46 Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.Fix: Remove any persistence mechanisms (cron jobs, startup scripts, state files). Skills should not maintain state across sessions without explicit user consent.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00172 | $0.06453 |
| Opus 5 | $0.00086 | $0.03227 |
| Sonnet 5 | $0.00034 | $0.01291 |
| Haiku 4.5 | $0.00017 | $0.00645 |
Grade A, and why
method-figure scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 13d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 281 lines — stays where its author put it; the contents beside it link to each section on GitHub.
method-figure
Turn "draw our method figure" from a one-shot gamble into the same audited spiral the framework uses for comics: a blueprint is the source of truth, the image model bakes the look, a cross-model panel + a deterministic diff keep it honest, and the loop converges to a publication-grade figure that is reproducible (re-run the blueprint) and auditable (a trace of every round).
Two things are simultaneously true: (a) gpt-image-2 CAN render a clean Figure-1 with legible labels when conditioned on a labeled blueprint — do not assume it garbles text; (b) on a free prompt it DRIFTS (renames phases, invents nodes, garbles a token, leaves pasted-looking floating labels). The blueprint + blind-transcribe-then-hard-diff loop turns (a) into a reliable result and catches (b) every round.
system description ─▶ ① BLUEPRINT (JSON content-lock) ── validate_blueprint.py
▼
② CONDITION (white-bg labeled SVG → PNG) + identity sheet (real chibi, optional) ── render_condition.py --png
▼
③ BAKE — agent: mcp__codex__codex(prompt+abs ref paths+out_path, workspace-write, gpt-5.5, config{xhigh}) → gpt-image-2 native PNG ── pickup_image.py --out-existing (sig+size+dims, mtime-bound, HARD-VETO struct/zlib/PIL/SVG, fail-closed)
▼
④ PANEL — Gemini ‖ Codex BLIND-transcribe → content_diff.py (observed ⊖ blueprint) → Claude structural sign-off
▼
⑤ agent reads the diff + the panel blockers → re-bake re-asserting the locked labels
▼
converged? ─ no ─▶ ③ (bounded: max_rounds → escalate to human)
│ yes
▼
⑥ APPROVE → figure.png + blueprint.json + trace.jsonl
Constants
- GENERATOR = Codex
gpt-5.5,config: {model_reasoning_effort: xhigh, include_image_gen_tool: true}→ the nativeimage_generationtool (gpt-image-2). Thegpt-5.5pin is a single hardcoded COMPAT DEFAULT in the bake sidecar payload (run_spiral.pymirrorsrun_comic.py's canonical bake plan; a config-driven model override is PLANNED, not yet implemented). It pins the BAKE only — the panel's Codex reviewer is un-pinned (see PANEL below). CRITICAL: image_gen is produced ONLY viamcp__codex__codex(the agent tool), NOTcodex exec.codex exec/ over-specified / forbid-list prompts make Codex hand-draw a code fallback (struct+zlib PNG or SVG/matplotlib) — visually indistinguishable for trivial shapes, useless for a real method-figure. The working invocation ismcp__codex__codexwith a dead-simple prompt +sandbox: "workspace-write"(it must WRITE the out_path) +model: "gpt-5.5"+config: {model_reasoning_effort: "xhigh", include_image_gen_tool: true}(the schema has NO top-level effort param;config{xhigh}shorthand below ALWAYS expands to both these keys — withoutinclude_image_gen_toolcodex won't fire its native image tool, it falls back to descriptive text / an SVG renderer) +cwd: <project>. Reference images are passed by absolute file path inside the prompt (the schema has NO-i); the output path is a deterministic abs path in the prompt. Pick it up withpickup_image.py --out-existing(verifies the EXPLICIT out_path: PNG sig + size + dims,mtime >= request.created_at) which HARD-VETOES struct/zlib/PIL/<svg>/matplotlib markers in the agent transcript (fail-closed; there is no 'native sig wins' override). Honesty caveat: as of Jun 2026 native headless persistence is unreliable, so this fail-closed verifier — not anysandboxsetting — is the first guard against a non-native bake. But the HARD-VETO is a BEST-EFFORT denylist against the known codex-exec hand-draw fallback (struct/zlib/PIL/ SVG/matplotlib markers), NOT a complete security boundary — a novel fallback that emits a sig-valid PNG without those markers can slip past it. The load-bearing faithfulness gate is the cross-model blind-transcribe panel + the deterministiccontent_diff(the pixels are what reviewers transcribe), with this denylist as a cheap upstream filter. - PANEL (automated blind-transcribe) = the orchestrator SHELLS the
gemini+codexCLIs as subprocesses (both must be on PATH; MCP is ONLY the bake seam): Gemini =gemini --model auto-gemini-3; Codex =codex exec -i <png>with NO model pin (it follows the local codex config — currentlygpt-5.6-sol) at effortxhigh— so the reviewer model ≠ the bake's pinnedgpt-5.5. Plus the deterministiccontent_diff. Claude (this agent) is the post-pass STRUCTURAL sign-off, not a blind transcriber — the loop converges on Gemini-approve + Codex-approve + empty-diff, then Claude signs off. - CROSS-MODEL ACQUITTAL — Codex is the generation family, so a Codex
approvecan only diagnose/veto, never be the sole acquitter. ACCEPT requires Gemini approve + Claude structural approve + the hard-diff empty. - MAX_ROUNDS = 4, then escalate to human with best-so-far + open blockers.
- LABEL_POLICY =
bakedonly in v0 — the image model renders ALL text; nothing is hand-pasted. (hybrid/overlay— lock structure + vector-overlay the labels for paper zero-tolerance text — are on the v1 roadmap; do NOT use a vector overlay as an ad-hoc patch on a finished bake, it reads as pasted.) - OUTPUT_DIR =
figures/method_figure/<figure_id>/(figure.png, blueprint.json, condition.svg, trace.jsonl). - NATIVE-IMAGE FAIL-CLOSED — accept a bake ONLY if a real native PNG exists at the explicit out_path,
sha/size/dims check out and
mtime >= request.created_at, and the agent transcript shows no struct/zlib/ PIL/<svg>/matplotlib fallback (pickup_image.py --out-existing, HARD-VETO — a clean sig never overrides a fallback marker). This veto is a BEST-EFFORT denylist against the known codex-exec hand-draw fallback, NOT a complete security boundary (a novel marker-free fallback could evade it). The load-bearing faithfulness gate remains the cross-model blind-transcribe panel + the deterministiccontent_diff; the denylist is a cheap upstream filter that matters because native headless persistence is currently unreliable. - SERIALIZE BAKES — never run two image generations at once. The default
--bake-mode=agentwrites each native PNG to its explicit per-roundout_path(no shared dir), so concurrent agent bakes still risk a request/status sidecar race — keep one runner per figure. (The global~/.codex/generated_imagesdir + newest-after-marker pickup that could cross-pollinate concurrent bakes is a hazard of the LEGACY--bake-mode=execpath ONLY, which is retired for real bakes.)
What ships with it
19 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- examples/method_figure/blueprint.json 14 KB
- examples/method_figure/condition.svg 11 KB
- examples/method_figure/figure.png 132 B
- examples/method_figure/identity_sheet.png 50 B
- examples/method_figure/method_figure_brief.json 3.7 KB
- examples/method_figure/PROMPTS.md 22 KB
- examples/method_figure/trace.jsonl 2.0 KB
- references/blueprint_authoring.md 10 KB
- references/paper_to_brief.md 4.4 KB
- references/prompt_templates.md 3.9 KB
- references/reviewer_protocol.md 5.7 KB
- schemas/blueprint.schema.json 7.2 KB
- schemas/method_figure_brief.schema.json 4.1 KB
- scripts/compile_brief.py 29 KB runs code
- scripts/content_diff.py 6.9 KB runs code
- scripts/pickup_image.py 17 KB runs code
- scripts/render_condition.py 8.1 KB runs code
- scripts/run_spiral.py 30 KB runs code
- scripts/validate_blueprint.py 6.3 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 13d ago First seen · 281 lines · 172 tokens per session scan A e9ba36cc087a
method-figure is a skill published in the GitHub repository wanshuiyin/ARIS-Movie-Director (61 stars, last pushed 3d ago), licensed MIT. It adds 172 tokens to every session and 6,453 once invoked, about $0.0009 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
academic-poster
A guide for turning a research paper or abstract into a printable academic conference poster. It covers large single-page layouts, including traditional columns and a design that enlarges the main finding.
paper-framework-figure-studio-pro
Human-in-the-loop research-paper framework figure workflow from S0-PAPER-FOUNDATION through terminal S5-CANDIDATE-IMAGE. Use for paper-grounded architecture, pipeline, method overview, agent workflow, system/data-flow, and mechanism figures with generated raster first-round/formal candidates, reviewer-first-glance…
autofigure
Generate clean, EDITABLE vector figures (SVG + exact-size PDF) for research papers — method / architecture / pipeline / system-overview diagrams — with AutoFigure-Edit. Use whenever the user wants to create or vectorize a paper figure from a text description OR from a draft/screenshot/draw.io image: it generates a…
generative-design
Evolutionary algorithms, multi-objective optimization, design space exploration, fitness function design, population-based methods, and generative workflows for AEC computational design.
nature-figure
Submission-grade Nature/high-impact journal figure workflow for Python or R. Use whenever the user asks to create, revise, audit, or polish manuscript figures, multi-panel scientific plots, figures4papers-style matplotlib plots, or journal-ready SVG/PDF/TIFF outputs, especially for Nature-family or other high-impact…
drug-discovery
Drug discovery: ChEMBL search, drug-likeness, interactions.