Skip to content
Agentmart
Submit a tool

figure-harvest

Harvest figures from a local corpus of public crypto papers (PDF), classify them by type, score their quality, and browse them in a local HTML contact sheet…

Skill by Noi1r

IndexedMIT★ 3
Write a review

Chalk Labs

Need help deploying figure-harvest?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/noi1r-figure-harvest

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Harvest figures from a local corpus of public crypto papers (PDF), classify them by type, score their quality, and browse them in a local HTML contact sheet to learn which figure patterns work for a topic. Use before designing figures for a new paper or when extending .paper-writing/figures/PATTERNS.md. Output is local-only (copyright).

Use cases: documents, spreadsheets, frontend, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/figure-harvest

What's inside

Skill name
figure-harvest
Description
Harvest figures from a local corpus of public crypto papers (PDF), classify them by type, score their quality, and browse them in a local HTML contact sheet to learn which figure patterns work for a topic. Use before designing figures for a new paper or when extending .paper-writing/figures/PATTERNS.md. Output is local-only (copyright).
License
MIT
Instructions
83 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# figure-harvest

Learn figure patterns from the papers closest to yours: related work,
same-venue papers, or the baseline papers. The distilled lessons go into
words. The harvested images are never committed.

## When to use
* When planning figures, on the related-work PDFs gathered for the manuscript.
* When the target venue or sub-field has conventions you do not know yet.
  Examples: symmetric papers use trail tables and round diagrams, FHE
  papers use bit layouts and pipelines, MPC papers use functionality boxes.
* When extending `.paper-writing/figures/PATTERNS.md` with a new pattern.

## Procedure
1. **Assemble the corpus.** Use a directory of *public* PDFs, such as ePrint
   downloads of the related-work list. Exclude your own drafts and anything
   under embargo:
   ```bash
   python3 .paper-writing/figures/harvester/harvest.py related_work/papers \
       --out /tmp/fig_gallery --exclude drafts --exclude ours --exclude '.zip' \
       --jobs 8 --timeout 90 --max-pages 60
   ```
   * `--exclude` takes a substring glob, or `re:REGEX` for a regular expression.
   * Directories are searched recursively.
   * Duplicate PDFs are skipped, detected by hash or by first-page text.
2. **Browse.** Run `python3 .paper-writing/figures/harvester/gallery.py /tmp/fig_gallery` and
   open `index.html`. The page groups figures by type and sorts them by
   quality. It has a type filter and a minimum-quality slider.
3. **Inspect the best 10–20** for your planned figure types. For each one, note in words:
   * what makes it readable
   * which encodings it uses
   * how it handles baselines, units and log axes
   * what you would not copy
4. **Distil.** Update the project's `paper/figs/NOTES.md`, or
   `.paper-writing/figures/PATTERNS.md` if the pattern is new. Follow
   `.paper-writing/figures/gallery_index.template.md`:
   * pattern name
   * public ePrint ID and figure number ("see e.g.")
   * what works
   * pitfalls
   * the template that implements it (create one if missing: synthetic data,
     plus a PDF+PNG in `.paper-writing/figures/examples/`)
5. **Discard.** Delete the gallery, or keep it outside the repository.
   Never `git add` a harvested PNG.

## How it works (so you can trust or tune it)
* **Captions.** A text block counts as a caption if its first line matches
  `Fig.|Figure|图 <n>` followed by punctuation, or starts with a bold label.
  Running-text mentions such as "Fig. 3 shows…" are rejected.
* **Clip.** The clip is seeded with drawings or images that lie within
  40 pt above the caption (then below, as a fallback). It then grows through
  vertically adjacent graphics with gaps under 14 pt. Growth stops at
  paragraphs of running text (wide, multi-line, not overlapping graphics) and
  at other captions. Nearby label text is absorbed, and the clip is padded
  by 4 pt. Figures made only of text, such as unframed algorithms, fall back
  to the band between the preceding paragraph and the caption.
* **Statistics:**
  * path item counts (lines, curves, rects, filled rects)
  * horizontal and vertical ticks (an axis needs both)
  * arrowheads and XOR glyphs
  * grid detection
  * vector colour count and rendered-pixel colour count
  * whitespace fraction and words per square inch
  * effective raster dpi
* **Type:** the classifier combines caption-keyword scores with statistic rules.
* **Quality:** the score starts at 50.
  * Vector content: +20.
  * Rasters: from +15 down to −15, depending on dpi.
  * Colours: +10 for 2–7 colours, −10 for more than 14.
  * Whitespace: +10 for 45–90%.
  * Very small crops and very dense text are penalised.
* **Robustness:** each PDF runs in a forked process with a timeout, and
  per-page exceptions are recorded without stopping the run.
  `--selftest` builds a synthetic PDF and checks the full pipeline.

## Known limitations
* Classification is about 70% accurate. Plots whose text was converted to
  outlines, and figures that are only rasters, rely on caption keywords.
* Multi-panel figures that sit side by side with separate captions can merge
  into one crop.
* Two-column layouts (ACM/IEEE) sometimes pull in the neighbouring column's
  graphics. Check the crops.

From Noi1r/crypto-paper-writing, MIT.

More from Noi1r/crypto-paper-writing

Signals

Stars
3
Forks
0
Open issues
0
Last commit (this folder)
Sep 29, 2026 (1 month ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from Noi1r

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get figure-harvest running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying figure-harvest?

CallGet help
Cite this page

figure-harvest skill. Agent Mart. https://agentmart.dev/skills/noi1r-figure-harvest (last updated 2026-10-24)