/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 \"做海报\",
$ npx -y skills add wanshuiyin/Auto-claude-code-research-in-sleep --skill paper-poster-html --agent claude-codeHow 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.mdname: 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.jsonConstants
- **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
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.jsonConstants
- **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
· · · · · · -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
Other skills on auto-claude-code-research-in-sleep.
- /ablation-planner
Use when main results pass result-to-claim (claim_supported=yes or partial) and ablation studies are needed for paper submission.
Open skill - /alphaxiv
Quick single-paper lookup via AlphaXiv LLM-optimized summaries with tiered source fallback. Use when user says "explain this paper", "summarize paper", pastes an arXiv/AlphaXiv URL, or provides a bare arXiv ID for quick understanding - not for broad literature search.
Open skill - /analyze-results
Analyze ML experiment results, compute statistics, generate comparison tables and insights. Use when user says "analyze results", "compare", or needs to interpret experimental data.
Open skill - /arxiv
Search, download, and summarize academic papers from arXiv. Use when user says "search arxiv", "download paper", "fetch arxiv", "arxiv search", "get paper pdf", or wants to find and save papers from arXiv to the local paper library.
Open skill - /auto-paper-improvement-loop
Autonomously improve a generated paper via GPT-5.6-Sol xhigh review → implement fixes → recompile, for 2 rounds. Use when user says \"改论文\", \"improve paper\", \"论文润色循环\", \"auto improve\", or wants to iteratively polish a generated paper.
Open skill - /auto-review-loop-llm
Autonomous research review loop using any OpenAI-compatible LLM API. Configure via llm-chat MCP server or environment variables. Trigger with "auto review loop llm" or "llm review".
Open skill

