agentleFS
acprkacprk/crypto-research-agents/skills/paper-figures/SKILL.md

paper-figures

Skill15 starsChanged 9 days agoMITView on GitHub

Produce publication-quality figures for a cryptography paper in the house style (LNCS/ACM/IEEE sizes, Computer Modern or Times fonts, vector PDF, colour-blind-safe palette), starting from the pattern catalog and templates in figures/. Use when a paper needs a plot, a results table or a TikZ diagram, or when auditing existing figures before submission.

8 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.

  • 0

    Common

    Most of the 7 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    State the claim first: Write the one sentence the figure must prove.

    line 18
  2. Very specific:

    Size and font by venue: Call P.figure(venue, width="column"|"full"|fraction, aspect=...).

    line 39
  3. Distinctive:

    Every series gets a marker or dash in addition to its colour.

    line 47
  4. Distinctive:

    Link to evidence: Add the figure script path and the input data file to each EVIDENCE row whose number appears in the figure.

    line 59

“Common” is measured: kept by at least 6 in 10 of the 7 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

paper-figures

Make every figure at final size, in vector, from logged data, with a stated take-away. The toolkit lives in figures/: style sheets, palette.py, 16 matplotlib templates, 5 TikZ templates and PATTERNS.md.

When to use

  • Phase P7 (Writing + Figures): turning results/ and EVIDENCE rows into figures.
  • Phase P8 (camera-ready): re-rendering for a different venue class, or fixing reviewer complaints ("figure unreadable in print", "legend covers data").
  • Any time a figure is drafted with default matplotlib settings.

Procedure

  1. State the claim first. Write the one sentence the figure must prove. It becomes the first sentence of the caption. If no claim exists, the answer is probably a table (C16) or no figure at all.
  2. Pick the pattern from figures/PATTERNS.md:
    • ratio vs. a reference → C1
    • where the time goes → C2
    • asymptotics → C3
    • parameters → C4 or C14
    • two competing costs → C5
    • noise or depth → C6 or C7
    • S-box properties → C8
    • rounds and security margin → C9
    • failure probability → C10
    • approximation quality → C11
    • regime change → C12
    • linear-transform structure → C13
    • a speed-up claim a sceptic may doubt → add C15
    • a protocol or pipeline → D1 or D2
  3. Copy the template (figures/templates/pNN_*.py or tikz/*.tex) into the project's paper/figs/src/. Replace the synthetic arrays with loaders that read results/*.csv|json. Never type numbers by hand.
  4. Size and font by venue. Call P.figure(venue, width="column"|"full"|fraction, aspect=...).
    • LNCS: 4.80 in (12.2 cm), Computer Modern.
    • ACM: 3.33 / 7.00 in, Libertine or STIX.
    • IEEE: 3.50 / 7.16 in, Times or STIX.
    • In LaTeX, \includegraphics[width=\textwidth] (or \columnwidth) with no further scaling.
  5. Encode redundantly.
    • Ours is P.OURS and baselines use P.baseline_style(i).
    • Every series gets a marker or dash in addition to its colour.
    • Categorical colours go in fixed order and never cycle past 8.
    • Sequential data uses one hue. Diverging data is blue↔red with a grey midpoint.
  6. Label directly. End-of-line labels beat legends. Use one reference line with its name, not a bar. Print values only on the bars that carry the claim. Use a log axis once the range exceeds about 30×.
  7. Render and inspect. python3 paper/figs/src/fig_x.py, then open the PNG. Check for:
    • label collisions and clipped text
    • a legend covering data
    • greyscale readability (pdftoppm -gray -r 150 fig.pdf /tmp/g)
    • tick labels shown as 2^k for powers of two
  8. Link to evidence. Add the figure script path and the input data file to each EVIDENCE row whose number appears in the figure.
  9. Run the checklist at the end of PATTERNS.md, then commit the figure's PDF, its script and its data pointer.

Checklist (quick)

  • Vector PDF with fonts embedded (pdffonts fig.pdf shows no Type 3 fonts, unless usetex was used).
  • Final size, and 7–8 pt text that matches the caption font family.
  • One y-axis, with units in both axis labels.
  • Ours is blue, baselines are grey, and every series has a marker or dash.
  • Readable in greyscale and by colour-blind readers. The palette passes python3 figures/style/palette.py.
  • No pies, no 3-D, no rainbow colormaps, no coloured plot backgrounds, no titles inside the axes that duplicate the caption.
  • Every number traces to EVIDENCE, and synthetic or toy content is labelled as such.
  • The caption's first sentence is the take-away, and it defines all abbreviations.
  • Tables use booktabs, mark the best value in bold, and use consistent decimals.

Tools

  • figures/style/palette.py: use, figure, size, line_style, baseline_style, direct_label, save, check_palette.
  • figures/templates/run_all.py renders every template, which is useful as a smoke test after style edits.
  • make -C figures/templates/tikz builds the TikZ diagrams. crypto-tikz.sty can be \usepackaged in a paper.

Anti-patterns seen in published crypto papers (in the harvested corpus)

  • Pie charts used for stage breakdowns. Use C2 instead.
  • Coloured plot backgrounds, bold sans-serif titles inside the axes, and default-library colours.
  • Raster screenshots of plots that print at under 150 dpi.
  • Speed-up claims shown without any run-to-run spread. Add C15.
  • "Before" and "after" pipelines drawn with different layouts. Keep the layout identical and tint only the changed stage.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.