figure-style
Publication-grade figure correctness and legibility rules. Load before drawing any plot and call `apply_figure_style()` — sets a role-mapped font-size ladder, outward ticks, frameless legends, and 300-dpi output. The skill is a checklist, not a house look: data fidelity (claim-titles tested against every row, excluded data never enters summaries), label economy (floor and ceiling), colour threading, chart-choice-by-data-shape, layout, and a render-then-verify QA loop (bbox collision + per-panel perceptual check). Ships helpers: focal_palette, bar_with_points, strip_with_median, end_of_line_labels, panel_letter, set_frame, panel_crops. For multi-panel figures load `figure-composer`; for whole-paper figure arc load `paper-narrative`.
git clone --depth 1 https://github.com/UnicomAI/wanwu /tmp/figure-style && cp -r /tmp/figure-style/configs/microservice/bff-service/configs/agent-skills/claude-science/figure-style ~/.claude/skills/figure-styleSKILL.md
# Publication-Grade Figure Rules
*A checklist for correct, legible, internally-consistent scientific figures. This
skill does not impose a visual house style — frame, font, and palette are
parameters. Load it and call `apply_figure_style()` before any plot.*
## §0 Scope
§1–§3, §8, and §9 are **correctness** — they apply to every plot, in every
context, and have no aesthetic content. §4–§7 are **guidance** — defaults that
produce a clean result but that a deliberate alternative can override
(individual rules inside §4–§7 that state a factual/perceptual invariant — e.g.
§4.4 semantic-zero centring, §4.5 CVD, §6.9 leader anchoring — still bind). On
its own, this skill is the inner tier (make one plot good); `figure-composer`
and `paper-narrative` supply multi-panel and whole-paper context.
---
## §1 Data fidelity & self-consistency
**1.1 Excluded rows.** A row marked excluded or flagged in the source data is
either omitted entirely or drawn with a visually distinct open/hatched marker
and named in the key. It **never** enters a summary statistic plotted alongside
the included rows.
**1.2 Comparable conditions only.** Arms measured under non-comparable
conditions (different N, epoch budget, initialisation, protocol) are not plotted
as visual peers. Separate them with a facet break or a marker on the label, and
state the difference once in the caption.
**1.3 Self-consistency.** Every key, threshold, and title inside the figure must
be satisfied by every plotted row. Before saving, walk each categorical outcome
label back to the rule that defines it; if a row's value contradicts its label
or the title, the figure is wrong, not the data.
**1.4 Claim-titles must be true.** A sentence-title (§5.1) is tested against
every category on the axis before rendering. If any contradicts it, qualify the
title ("on 3 of 4 pairs") or downgrade it to a description.
**1.5 State n and what was held fixed.** Every panel that draws a summary mark
states `n` and the unit of replication, and every small-multiple that holds a
variable fixed states the fixed value — in the panel or, when §2 budget is
tight, in the caption.
**1.6 Reference structure is reference.** A tree, ordering, or topology drawn as
*context* (a scale bar, a category strip) uses an established reference, not
one inferred from the plotted data. Infer the structure only when the structure
*is* the result.
**1.7 One number per claim.** A quantitative claim (runtime, accuracy, count)
has exactly one canonical value across every panel, caption, and the abstract.
Define what it measures and use that value everywhere.
---
## §2 Label economy — floor and ceiling
The figure shows the pattern; the **caption** carries the context. Design for a
general scientific reader, not the author.
**2.1 Floor (non-removable).** Every distinct mark, series, glyph, or comparator
must be identifiable from the figure alone. The caption explains *why it
matters*, not *what it is*. A label is non-removable if deleting it leaves a
reader asking "what is that?"; it is removable only if the question becomes "why
is that there?". Comparator labels name the thing ("prior method", "no joint
training"), never a bare role word ("baseline", "previous"). Any term a general
scientist can't parse gets a one-word gloss.
**2.2 Ceiling.** Per panel: title + axis labels + tick labels + series identity
(labelled once per row of small multiples) + at most 2–3 result annotations.
Count the strings; >6 beyond axes/ticks means you're over. The ceiling counts
*narrative* annotations (callouts, value labels, brackets) — identity labels are
floor, not budget.
**2.3 Move to the caption:** n=, what's-held-fixed, abbreviation expansions,
non-comparable footnotes, exclusion rationale, methodological caveats.
**2.4 Titles are takeaways.** A reader seeing only the title knows what the
panel shows. "Robust to gene dropout" passes; "Fewer genes" fails. Test: read it
aloud cold — if the listener asks "fewer genes *what*?", rewrite. For a row of
small multiples that vary one thing, drop per-panel titles for one row-header.
**2.5 Value-on-mark only for the headline number** — the one a reader would
quote. Everything else is read off the axis.
**2.6 When in doubt, delete the label and re-read.** If the message survives, it
stays deleted.
---
## §3 Axes, scales, small multiples
**3.1 Axis padding.** Axis limits clear the data by ≥ one marker radius on every
side; markers and text never touch a spine. `ax.margins(0.04)` after plotting,
or extend the limit past any annotation.
**3.2 Axis breaks over wasted range.** When data occupy <40 % of an axis, break
the axis or start it at the data floor with a clear non-zero tick. Never draw a
reference line, threshold, or annotation inside a broken-axis gap — the gap has
no coordinate.
**3.3 Log axes get human-readable ticks** — `10²`, `10³`, or `1k / 10k / 100k`,
not raw exponents. **Never** draw filled bars on a log-scaled value axis (bar
length encodes ratio to an arbitrary floor); use points + median tick instead.
**3.4 Shared axes across small multiples.** A row or column of small multiples
shows tick labels once (leftmost / bottommost panel); interior panels keep ticks
but drop labels. When the panels share a y-axis and differ only by x-variable,
render them as abutting subplots (`wspace≤0.06`) with one row-header title.
**3.5 Fill the box.** A panel's data envelope occupies ≥75 % of its allotted
rectangle. If a panel's natural aspect leaves dead bands, reshape the grid
(rowspan, stacked complementary panels) — don't pad the panel.
**3.6 Direction of goodness.** When higher- or lower-is-better is not obvious
from the axis label, place a small upright cue ("higher = better") in the
margin — once per row of panels, never per panel, and never only in the caption.
A directional glyph embedded in rotated text rotates with it; set the cue
upright.
**3.7 Physical width.** A single-row figure at 300 dpi fits the venue's
double-column width. Ad万悟平台 SSE 子会话递归嵌套与三明治序列渲染架构指南。涵盖 parentId 领养、order 绝对排序、动静 Chunk 分层及 Vue 2 响应式引用协议。
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.
Build apps with the Claude API or Anthropic SDK. TRIGGER when: code imports `anthropic`/`@anthropic-ai/sdk`/`claude_agent_sdk`, or user asks to use Claude API, Anthropic SDKs, or Agent SDK. DO NOT TRIGGER when: code imports `openai`/other AI SDK, general programming, or ML/data-science tasks.
Guide users through a structured workflow for co-authoring documentation. Use when user wants to write documentation, proposals, technical specs, decision docs, or similar structured content. This workflow helps users efficiently transfer context, refine content through iteration, and verify the doc works for readers. Trigger when user mentions writing docs, creating proposals, drafting specs, or similar documentation tasks.
Use this skill whenever the user wants to create, read, edit, or manipulate Word documents (.docx files). Triggers include: any mention of 'Word doc', 'word document', '.docx', or requests to produce professional documents with formatting like tables of contents, headings, page numbers, or letterheads. Also use when extracting or reorganizing content from .docx files, inserting or replacing images in documents, performing find-and-replace in Word files, working with tracked changes or comments, or converting content into a polished Word document. If the user asks for a 'report', 'memo', 'letter', 'template', or similar deliverable as a Word or .docx file, use this skill. Do NOT use for PDFs, spreadsheets, Google Docs, or general coding tasks unrelated to document generation.
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, artifacts, posters, or applications (examples include websites, landing pages, dashboards, React components, HTML/CSS layouts, or when styling/beautifying any web UI). Generates creative, polished code and UI design that avoids generic AI aesthetics.