Skip to content
Agentmart
Submit a tool

paper-poster-html

DEFAULT poster pipeline — build an academic conference poster (ICML/NeurIPS/ICLR/CVPR/...) as a single HTML/CSS file with measurement-driven hard gates, real…

Skill by wanshuiyin

IndexedMIT★ 18,007
Write a review

Install

Works with Claude Code. Read the repository before you give any tool access to your data.

npx agentmarket install skill/wanshuiyin-paper-poster-html

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

DEFAULT poster pipeline — build an academic conference poster (ICML/NeurIPS/ICLR/CVPR/...) as a single HTML/CSS file with measurement-driven hard gates, real paper figures, a two-hue design-token system, and print-ready PDF via headless Chromium. Use when the user says "做海报", "poster", "conference poster", "paper poster", or asks to design/redo a research poster. Supersedes the retired LaTeX /paper-poster.

Use cases: documents, design, frontend, data

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. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/paper-poster-html

Tools it pre-approves 19

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Bash(*),
  • Read,
  • Write,
  • Edit,
  • Grep,
  • Glob,
  • WebFetch,
  • WebSearch,
  • AskUserQuestion,
  • mcp__codex__codex,
  • mcp__antigravity__antigravity,
  • mcp__antigravity__antigravity-reply,
Show 7 more
  • mcp__grok__grok,
  • mcp__grok__grok-reply,
  • mcp__claude-review__review,
  • mcp__claude-review__review_reply,
  • mcp__claude-review__review_start,
  • mcp__claude-review__review_reply_start,
  • mcp__claude-review__review_status

What's inside

Skill name
paper-poster-html
Description
DEFAULT poster pipeline — build an academic conference poster (ICML/NeurIPS/ICLR/CVPR/...) as a single HTML/CSS file with measurement-driven hard gates, real paper figures, a two-hue design-token system, and print-ready PDF via headless Chromium. Use when the user says "做海报", "poster", "conference poster", "paper poster", or asks to design/redo a research poster. Supersedes the retired LaTeX /paper-poster.
License
MIT
Allowed tools
Bash(*),, Read,, Write,, Edit,, Grep,, Glob,, WebFetch,, WebSearch,, AskUserQuestion,, mcp__codex__codex,, mcp__antigravity__antigravity,, mcp__antigravity__antigravity-reply,, mcp__grok__grok,, mcp__grok__grok-reply,, mcp__claude-review__review,, mcp__claude-review__review_reply,, mcp__claude-review__review_start,, mcp__claude-review__review_reply_start,, mcp__claude-review__review_status
Instructions
329 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts
  • Pre-approves some shell commands

Files (31)

  • DESIGN_FINAL.md
  • IMPLEMENTATION_CONVENTIONS.md
  • posterly-MIT.txt · LICENSES/
  • NOTICE.md
  • SKILL.md
  • __init__.py · scripts/_posterly/
  • canvas.py · scripts/_posterly/
  • measure.py · scripts/_posterly/
  • polish.py · scripts/_posterly/
  • preflight.py · scripts/_posterly/
  • render.py · scripts/_posterly/
  • textutil.py · scripts/_posterly/
  • verify_final.py · scripts/_posterly/
  • asset_check.py · scripts/
  • extract_pdf_figures.py · scripts/
  • poster_check.py · scripts/
  • preprocess_figures.py · scripts/
  • render_preview.py · scripts/
  • run_gates.py · scripts/
  • style_check.py · scripts/
  • COMPONENTS.md · templates/
  • README.md · templates/
  • landscape_4col.html · templates/
  • landscape_hero.html · templates/
  • portrait_2col.html · templates/
  • acl.json · templates/tokens/
  • cvpr.json · templates/tokens/
  • generic.json · templates/tokens/
  • iclr.json · templates/tokens/
  • icml.json · templates/tokens/
  • neurips.json · templates/tokens/

SKILL.md (first lines)

# Paper Poster (HTML): measurement-gated poster generation

> **Before each reviewer slot**, follow [Selectable Reviewers](../shared-references/reviewer-backends.md):
> resolve invocation → `.aris/reviewer.json` → Claude Code default (Codex MCP)
> with `reviewer_route.py` through the canonical helper resolver, preserving this
> slot's tier, fresh contexts, source/image inputs and deterministic gates.
> Codex examples/pins below apply only to `backend=codex`; other routes use their
> own first-call/reply contract. Save the route and actual returned identity;
> unavailable selections are `REVIEW_UNAVAILABLE`. Classify acceptance from actual
> families/completion/scope. Forward invocation reviewer/model/effort overrides
> to reviewer-bearing children. Generation workers are unchanged.


One HTML file styled for an exact print canvas (`@page { size: W H }`), rendered to PDF
via Playwright print emulation. **Iterate by measuring, not eyeballing** — the screen
preview lies; only print emulation at the correct viewport tells the truth. Core gate
machinery is adapted from [posterly](https://github.com/Chenruishuo/posterly) (MIT, ©
2026 Ruishuo Chen — see `NOTICE.md` and `LICENSES/posterly-MIT.txt`); ARIS adds style
discipline gates, figure-provenance gates, the cross-model review loop, and the
anti-patch-loop fix vocabulary.

## Why this skill exists (the failure it prevents)

A predecessor pipeline produced a poster with **30+ colors, zero real paper figures, a
screen-pixel canvas, and tiny formulas floating in oversized boxes**, then spent 12+
review rounds making it *worse* — each round added a new badge color or bespoke SVG
patch. The cure is structural, not exhortative:

1. **Hard gates run before any aesthetic opinion** (alignment, style, assets must PASS
   first — a reviewer never sees an unmeasured poster).
2. **A closed fix vocabulary** — visual-review fixes can only touch design tokens,
   whole catalogued components, content rebalance, assets, or canvas choice. New inline
   styles / new hex values / bespoke decorations are structurally forbidden.
3. **Two-hue discipline as a machine check**, not a style suggestion.
4. **Real paper figures with provenance manifest**, or the gate fails.

## Mental model

```
paper (.tex / PDF) ──► content plan + claim→evidence audit (codex, fresh)
                              │
   figures extracted ─────────┤  FIGURE_MANIFEST.json (provenance, sha256)
   (real paper figures ONLY)  ▼
   template scaffold ──► fill ──► run_gates.py            ◄─── HARD, loop here
                                  preflight → style → asset → measure → polish
                              │ all hard gates PASS
                              ▼
                    Claude visual review (≤3 issues × ≤3 rounds, fix-vocabulary only)
                              │ score ≥ 9
                              ▼
                    codex final cross-model review (fresh thread, full HTML+PDF)
                              │ pass
                              ▼
                    verify-final → poster.pdf + GATE_REPORT.json
```

## Constants

- **SKILL_SCRIPTS** = `${CLAUDE_SKILL_DIR}/scripts` — all helpers are single-owner and
  ship inside this skill (Arch C). If the directory is missing the install is broken:
  abort and tell the user to re-install the skill (Policy A — the gates ARE the skill;
  never improvise replacements).
- **REVIEWER_MODEL** = `gpt-6-astra`, reasoning `xhigh`, **fresh thread per review call**
  (`mcp__codex__codex`, never `codex-reply` across review boundaries).
- **CANVAS** — from the venue's official spec, looked up live in Phase 0. Never assume.
  (Known anchor: ICLR 2026 main = 185×90 cm landscape per its official printing
  service; ICML/NeurIPS commonly 60×36 in landscape; workshop posters often 61×91 cm
  portrait. Specs change yearly — verify.)
- **PALETTE** — default = `templates/tokens/generic.json` (slate-blue `#2D5F8B` accent
  + gold `#C9A24A` highlight + neutrals) for **all** venues. Venue packs are opt-in via
  `— venue-colors: true`. Purple-dominant accents (hue 250–285) are banned unless the
  user passes `— allow-purple: true`.
- **AUTO_PROCEED = false** — wait for explicit confirmation at every 🚦 checkpoint.
- **OUTPUT_DIR** = `poster_html/` in the working directory.

## Workflow

### Phase 0 — Resume, dependencies, venue spec

1. **Resume**: if `poster_html/POSTER_STATE.json` exists with `status: in_progress`
   (< 24 h), resume from the saved phase.
2. **Dependencies** (degradation chain, in order):
   - Playwright + bundled Chromium → if missing, `python3 -m playwright install
     chromium` → if install fails but system Chrome exists, scripts fall back to
     `channel="chrome"` → if all fail: you may produce the content plan and scaffold
     only, label everything **"not print verified"**, and must NOT emit a final PDF.
   - `pdfinfo` missing → PyMuPDF reads PDF dimensions. At least one of
     pdftoppm / PyMuPDF must exist for PNG review renders.
   - MathJax: download `tex-svg.js` once into `poster_html/assets/mathjax/` and
     reference it locally in the HTML. CDN is acceptable only for drafts; the measure
     gate hard-fails on unrendered MathJax either way.
3. **Venue spec lookup (live)**: consult the venue's official poster-instructions page
   (search + fetch). Extract dimensions, orientation, font floor, logo policy,
   anonymity rules, file format. Record `{spec, source_url, retrieved}` into
   `POSTER_STATE.json` — specs change yearly; never reuse a cached spec silently.

**🚦 Checkpoint**: echo the venue spec table (canvas, orientation, source URL) and the
chosen template. Wait.

### Phase 0.5 — Design discovery (one AskUserQuestion batch)

Ask once, ≤4 questions: layout template (from `templates/README.md`), palette
(default generic pack / venue pack / custom within constraints), logos + venue mark
(paths or "none" — never fabricate; check the venue's logo policy), QR target (paper /
code / project page / none — generate **offline** with `qrencode` or python-`qrcode`;
never a remote QR-service URL). Persist answers in `POSTER_STATE.json` as
`design_decisions` — re-read before any later "improvement" so deliberate choices are
never reverted.

### Phase 1 — Paper ingest, content plan, claim audit

1. Read the paper source (`.tex` ideal; PDF otherwise). Extract: title/authors/affils,
   the 3–5 headline numbers, core method (equations verbatim), main results
   (tables/figures and what they show), takeaways. Build
   `poster_html/POSTER_CONTENT_PLAN.md` — what goes in which column, word budget per
   card. **Target density** (excluding table cells, captions, author line, footer):
   standard poster **550–850 words**; dense theory+empirical poster **750–1050 words**,
   allowed only when ≥2 compact components are used (`eqn-anatomy`, `flow-strip`,
   `derived-col`, `claim-pills`, `keybox--4`). Warn yourself below 500 words on a

From wanshuiyin/Auto-claude-code-research-in-sleep, MIT.

More from wanshuiyin/Auto-claude-code-research-in-sleep

Signals

Stars
18,007
Forks
1,488
Open issues
58
Last commit (this folder)
Oct 19, 2026 (9 days ago)
Last release
Sep 28, 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 wanshuiyin

Cite this page

paper-poster-html skill. Agent Mart. https://agentmart.dev/skills/wanshuiyin-paper-poster-html (last updated 2026-10-24)