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 emaballarin/ccplugins --skill figure-composergit clone --depth 1 https://github.com/emaballarin/ccpluginsWrote 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/emaballarin/ccplugins/figure-composer)<a href="https://agentmods.dev/skills/emaballarin/ccplugins/figure-composer"><img src="https://agentmods.dev/badge/skills/emaballarin/ccplugins/figure-composer/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/emaballarin/ccplugins/figure-composer"><img src="https://agentmods.dev/badge/skills/emaballarin/ccplugins/figure-composer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.00159 | $0.02264 |
| Opus 5.5 | $0.00064 | $0.00906 |
| Sonnet 5.5 | $0.00032 | $0.00453 |
| Haiku 4.5 | $0.00016 | $0.00226 |
Grade A, and why
figure-composer 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 15d 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 — 196 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Figure Composer — narrative → panels → compose → adversarial loop
Step 0. Load figure-style alongside this skill — that is the design rules
(and apply_figure_style() + helpers). Each panel's subagent loads it
independently; you need it in context to write the outline and review the
composite.
Loading the kernel
The deterministic helpers live in kernel.py next to this file. It is not
auto-injected — import it in a Bash python heredoc (zero
import-time side effects; the only heavy import, PIL, is lazy inside
compose_figure):
python3 - <<'PY'
import importlib.util
K = "${CLAUDE_SKILL_DIR}/kernel.py"
spec = importlib.util.spec_from_file_location("fc_kernel", K)
k = importlib.util.module_from_spec(spec)
spec.loader.exec_module(k)
print([n for n in dir(k) if not n.startswith("_")])
PY
Every kernel call below assumes k is loaded this way. Each python invocation
is a fresh process, so re-import in each heredoc. compose_figure (and the
panel renders) need pip install pillow (+ matplotlib for the panels).
Inputs
- claim — one sentence the figure makes true to a reader who reads nothing else.
- data — CSV/parquet file paths (or data refs) that ground every panel.
- width_mm — target venue's column width (common: 85–89mm single, 174–183mm double; check the venue guide).
0. Where this sits
figure-composer is the outer tier: make ONE multi-panel figure good. The
inner tier is figure-style (loaded by every panel subagent — and
load it yourself if you draw anything locally). The outermost tier is
paper-narrative — if this figure is part of a paper, run that FIRST: it decides
which figure to make and hands you the claim. For a standalone figure, start at
step 1.
Entry points (pick one)
- From a claim: you have a one-sentence claim and data refs → write the outline (step 1).
- From an existing figure: copy it into the workspace and build the
extraction prompt with
derive_outline_task("figure.png"). Then eitherReadthe PNG yourself and emit JSON matchingfigure_outline_schema(), or dispatch one subagent to do it. Pass the parsed JSON throughfinalize_outline(outline)before anything else touches it — it forcesdata_vid=Noneon every panel, which pixels cannot encode and the model can only invent. The image is untrusted input and every string field is derived from it, so review and edit the outline, and fill in the real data refs, before step 2.
What ships with it
1 file 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.
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.
- 15d ago Changed · +1 lines · -1 tokens per session e98025d5feeb
- 1mo ago Changed · +2 lines · +3 tokens per session c4a563275f19
- 1mo ago First seen · 193 lines · 157 tokens per session scan A d7cf87e54d1f
figure-composer is a skill published in the GitHub repository emaballarin/ccplugins (4 stars, last pushed 9d ago), licensed MIT. It adds 159 tokens to every session and 2,264 once invoked, about $0.0006 per session on Opus 5.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-31.
Other skills, from other repositories
scientific-visualization
Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib/seaborn/plotly with publication styles. For quick…
scientific-schematics
Generates scientific diagram drafts using Nano Banana 2 AI with smart iterative refinement. Uses Gemini 3.7 Flash for quality review. Refines when the review requests improvement, with at most two generations. Specialized in neural network architectures, system diagrams, flowcharts, biological pathways, and complex…
sxo
Search Experience Optimization (SXO), the bridge between SEO and UX/CRO. Audits the journey from the SERP click to the on-page goal: click-through factors (title, meta, rich results), then post-click signals that keep users and drive conversions: above-the-fold relevance and intent match, page speed / Core Web Vitals…
presentation-design
Designs slide decks and one-pagers that carry an argument rather than decorate one — deck structure, headlines that state the takeaway, charts that make a single point, and the different rules board decks and conference talks follow. Use this to build or fix a pitch deck, board deck, or conference talk, to design a…
interface-craft
Raises the visual and interaction quality of an interface — layout, hierarchy, type, spacing, density, and the details that separate a considered product from a generic one. Use this when a screen works but looks unfinished or default, when a layout feels crowded or arbitrary, when a page has no clear focal point, or…
visual-content
Designs and directs the visual assets that carry content — carousels, infographics, quote graphics, diagrams, and social imagery — including the generation prompts where they are AI-produced. Use this to turn a written piece into a visual format, design a carousel or infographic, create social graphics, or fix visuals…