Skip to content
Automation
Skill

/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 paper figures, a two-hue design-token system, and print-ready PDF via headless Chromium. Use when the user says \"做海报\",

From plugin
auto-claude-code-research-in-sleep
14k187 skills
Install
$ npx -y skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill paper-poster-html --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/paper-poster-html

Context preview

The summary Claude sees to decide when to auto-load this skill.

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 \"做海报\",

SKILL.md

paper-poster-html.SKILL.md
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."
argument-hint: "[paper-dir-or-pdf] [— venue: ICLR, canvas: 185x90cm landscape, venue-colors: true]"
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, WebFetch, WebSearch, AskUserQuestion, mcp__codex__codex

Paper Poster (HTML): measurement-gated poster generation

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-5.6-sol`, 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 re

Read more
Ships withauto-claude-code-research-in-sleep

· · · · · · -orange?style=flat) · · 💬 Join Community · 💡 Use ARIS as a skill-based workflow in Claude Code / Codex CLI / Cursor / Trae / Antigravity / GitHub Copilot CLI / OpenClaw, or get the full experience with the standalone ARIS-Code CLI — enjoy any

Get the whole plugin
Stats
14,445
Stars
1,280
Forks
Active
Maintenance
Python
Language
MIT
License
11h ago
Last commit
5mo ago
Created

Repo: wanshuiyin/Auto-claude-code-research-in-sleep