Agent skill

Posterly

by Chenruishuo in Chenruishuo/posterly

Create or revise academic conference posters in HTML/CSS and export print-ready PDFs.

AGPL-3.0Auto-check: notesMedia & Creative

Install Posterly

skills CLI
$ npx skills add Chenruishuo/posterly --skill posterly -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Chenruishuo/posterly posterly --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
posterly
GitHub stars
415
Token cost
~4.6k tokens
SKILL.md length
1,926 words
Files
146 (incl. references, assets)
Skills in repo
1
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Create or revise academic conference posters in HTML/CSS and export print-ready PDFs.

  • Works in 9 steps: Step 0.5 / Step 1 — Venue, discovery,… → Image preprocessing → 5 — Compose, show, and lock the design… → …
  • Tasks that involve Generative and creative coding
  • SKILL.md covers Mental model, Canvas constants, Python environment and Reading contract and execution…, plus 2 more sections
  • Runs JavaScript scripts from its folder; calls python and conda

What it does

Posterly is an agent skill from Chenruishuo/posterly. Create or revise academic conference posters in HTML/CSS and export print-ready PDFs. Use for poster design, layout edits, and print export.

Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 152 other files, including reference files and assets (for example `.github/workflows/star-history.yml`, `NOTICE.md` and `README.md`).

It sits in Media & Creative, covering Generative and creative coding. It works with Python and Playwright. The repository describes itself as: Build academic conference posters as a single HTML/CSS file, rendered to print-ready PDF via headless Chromium. A coding-agent skill. The licence is AGPL-3.0.

When your agent uses it

  • Tasks that involve Generative and creative coding

Example prompts

  • “/posterly”

Requirements

  • Python 3
  • Node.js
  • Pre-approved tools (allowed-tools): Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, WebFetch, WebSearch

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. Step 0.5 / Step 1 — Venue, discovery, and source content
  2. Image preprocessing
  3. 5 — Compose, show, and lock the design (new posters / redesigns)
  4. Scaffold, content, and identity
  5. 5 — Content audit
  6. Budgeted layout loop
  7. Step 6 — Render, inspect, and polish
  8. 5 — Final review (cross-model strongly recommended)
  9. Verification and handover

What it can do on your machine

Read from SKILL.md and the folder at commit 09c8afd. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(*)
    • Read
    • Write
    • Edit
    • Grep
    • Glob
    • Agent
    • AskUserQuestion
    • WebFetch
    • WebSearch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (JavaScript, from the files we listed), which the agent can run.

    Shell commands in SKILL.md call:

    • python
    • conda

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Posterly loads about 4.6k tokens when it runs, and up to ~44k if it reads all its reference files. Until then it costs about 37 tokens; SKILL.md has 1,926 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~37
When it runs · the whole SKILL.md, loaded when a task matches
~4.6k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~44k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, WebFetch, WebSearch

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Chenruishuo/posterly at commit 09c8afd, republished under its AGPL-3.0 licence (© Chenruishuo). 1,926 words, ~4,609 tokens.

Download SKILL.mdSave it as .claude/skills/posterly/SKILL.md (or your agent's skills folder). This skill also uses 145 other files; get the full folder from GitHub.
name
posterly
description
Create or revise academic conference posters in HTML/CSS and export print-ready PDFs. Use for poster design, layout edits, and print export.
allowed-tools
Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, WebFetch, WebSearch
disable-model-invocation
true

posterly — HTML/CSS Academic Poster Workflow

A poster is one HTML file styled for an exact print canvas, rendered to PDF via Playwright + Chromium. Iterate by measuring, not eyeballing — the screen preview lies; only emulate_media("print") at the correct viewport tells the truth.

Mental model

   HTML (with @page { size: W H })
     │
     ▼  print-emulate Chromium at W×96 × H×96 px viewport
     │
     ▼  data-measure-role tags identify columns/hero/footer-strip
     │
     ├──→ tools/poster_check.py measure  (HARD GATE — spread < 5 px,
     │                                    gap-to-strip ∈ [30,50] px,
     │                                    intercard gap ∈ [12,50] px,
     │                                    poster bbox aligns to page
     │                                    within ±2 px)
     ├──→ tools/poster_check.py preflight  (LaTeX residue, math `<`, missing imgs)
     ├──→ tools/render_preview.py  (PDF + thumbnail)
     └──→ tools/poster_check.py verify-final  (PDF page count / dims / size)

The skill is venue- and lab-neutral by default. Compose a design direction from templates/DESIGN-AXES.md (Step 2.5), scaffold from the nearest template in templates/README.md, edit :root design tokens to match the locked direction, fill TODO placeholders with your paper's content.

Canvas constants

ConstantValueNotes
--u (CSS unit)print = 1mm, screen = 1.6pxUse calc(N * var(--u)) for ALL sizing.
Print viewport (px)W_in × 96 × H_in × 96Computed by poster_check/render_preview.
Body cols2 / 3 / 4, or 1 hero + 1 columnPer template.
Strict alignmentspread < 5 px (aim < 3)Hard, non-negotiable gate.

<a id="python-environment"></a>

Python environment

Invoke Python by the full path of a dedicated, non-base environment. /absolute/path/to/dedicated-env/bin/python is a placeholder: replace it with the verified absolute interpreter path of the current machine's dedicated non-base environment for Posterly tools and Python snippets. Install missing Python dependencies with /absolute/path/to/dedicated-env/bin/python -m pip install ..., and run Playwright installation with the same interpreter's -m playwright. Never use bare python, python3, or pip, rely on conda activate, or install into base. A missing module must be resolved in the dedicated environment, not by falling back to base.

Tool help, diagnostics, and exported examples may use portable shorthand; before executing those commands, expand it to that full path. run_gates.py already launches its Python children through sys.executable, preserving the selected interpreter. Keep all existing command arguments, installation approval boundaries, and validation obligations.

Reading contract and execution boundaries

Before performing each stage, you must read and execute its linked applicable sections, including substeps, exceptions, examples, manual checks, and prerequisites. Read the required sections, not every referenced file in full. Mandatory instructions and checks remain mandatory; optional helpers remain optional. The routes below do not replace those instructions.

Paths: Markdown links are relative to the containing file. Command and inline paths such as tools/, templates/, assets/, specimens/, README, and <skill> are relative to the skill root (the directory containing SKILL.md); poster working paths retain their working-directory meaning.

<a id="task-modes"></a>

Choose the task path before starting.

  • New poster or overall redesign: follow the complete design workflow below, including Step 2.5's 2–3 rendered candidates and design lock. Reuse supplied answers under the confirmation policy.
  • Local edit to an existing poster: when the requested text, number, or asset changes preserve the canvas size/orientation and the accepted design direction, edit the existing working HTML directly. Reuse its current design, tokens, and recorded decisions; do not recompose or render 2–3 design candidates, ask for another design selection, or copy a fresh gallery scaffold over the poster. Read the relevant Step 3 authoring/component contracts and writing guidance for the edit, and Step 2 requirements for affected assets. Routine reflow/spacing repairs within the same direction remain local edits and still follow the existing style/fix rules.

Both paths retain source/venue verification, Step 3 authoring/copy/theorem obligations, the mandatory Step 3.5 content audit on the filled or updated poster, Step 4–6 checks and visual inspection, and Step 7 final-file verification/export. Existing unchanged-version preflight/polish reuse remains available; changing text, numbers, assets, or layout invalidates the corresponding old results. Step 6.5 cross-model final review remains strongly recommended. The local-edit path changes design preparation, not those quality requirements.

If the requested work requires a different canvas or design direction, follow the existing confirmation policy before applying the change and use the complete design workflow. Follow the confirmation, non-interactive, identity, system-extension, and upstream-feedback rules in the linked stages.

<a id="confirmation-policy"></a>

Reuse supplied answers and existing confirmations. For the same poster and unchanged decision, directly use information the user has already supplied or confirmed in the conversation or project notes: dimensions/orientation, palette, logos, QR target, density/block count, source paths, and content preferences. Explicit “none”, “no preference”, and “you choose” are answers within their stated scope, not missing information. Ask only about missing items or unresolved conflicts; do not repeat a question merely because another workflow stage mentions it. Record answers and keep required source/venue checks: reusing an answer does not waive verification. Do not transfer a choice from a different poster without evidence that it applies here.

Changes to locked choices still need confirmation. Before applying a proposed change to the locked canvas size/orientation or design direction, obtain confirmation for that change; an explicit user instruction authorizing that exact change already supplies it and must not be asked again. The existing non-interactive design-direction exception remains as documented. Reusing one preference does not authorize a different system extension, crop/waiver decision, or external action; retain those original approval boundaries and any approval already granted for the same action.

Read the universal pitfalls before authoring; read layout-specific pitfalls and all applicable visual rules before authoring/inspecting affected content. These contain preventive and manual obligations even when automated checks pass. During a fix, consult the relevant rule rather than reloading unrelated cases.

Style rules 4 and 5 are opt-in requirements. Enforce the two-hue-family limit (rule 4) and gradient restrictions (rule 5) only when the respective rule is explicitly enabled for the current poster. Otherwise ignore the corresponding requirements, including rules repeated as component anti-patterns or recommended catalog conventions; do not reduce palette breadth or remove gradients to satisfy a disabled rule. Other requirements remain in force. Keep tool flags consistent with that choice; see the style-rule switch contract.

Step 0 / Step 0.5 / Step 1 — Venue, discovery, and source content

At each stage, read and follow venue, discovery, and content. Apply the confirmation policy to missing or conflicting inputs; verify sources even when answers are already supplied.

For palette work, read palette derivation, including seed-independent rules when the user supplies colors and the theme mechanisms in that file.

Step 2 — Image preprocessing

Read and follow image preprocessing for the figures, QR codes, and logos used. Read Gate A before figure placement and Gate E before logo placement.

Read and execute the real-figure provenance contract only when adopting it. Otherwise asset verification is NOT_RUN, not verified; ordinary image-processing and fidelity requirements still apply.

Step 2.5 — Compose, show, and lock the design (new posters / redesigns)

For new posters or redesigns, read and follow design direction and DESIGN-AXES: compose and render 2–3 candidates, then lock the selection. Apply the documented batch and non-interactive rules. Local edits keep the accepted direction.

Before preparing fonts or tokens, read direction item 4. Always write design_tokens.json at design lock and pass it on every gate run.

Step 3 — Scaffold, content, and identity

For new scaffolds, read and follow scaffolding, template contracts, and gallery. Local edits apply the Step 3 authoring contracts to the existing HTML without copying a fresh scaffold. Both paths must follow identity and the COMPONENTS entries for every component used.

Before scaffolding, read the style gate; run it right after the scaffold and on every layout change within its documented scope.

Read and follow WRITING, perform its pre-loop sweep and Step 3's theorem/equation check. Do not try to make an unfilled scaffold pass filled-poster gates.

Show full SKILL.md (761 more words)Show less
Step 3.5 — Content audit

After filling or updating the poster, and before Step 4, read and execute the mandatory content audit and applicable review checkpoints. Proceed only after every finding is fixed or explicitly recorded as a user-acknowledged tradeoff.

Step 4 — Budgeted layout loop

Before the first loop, read and follow measurement, enhanced gates, runner, style gate, and fix discipline.

Use the complete run_gates.py sequence after each layout change under the documented template/fallback scope. Apply unchanged-version result reuse only when its conditions hold. Follow the hard thresholds and exit-3 circuit breaker; do not reset the budget just to continue grinding or bypass system-extension approval. Consult tool contracts for the commands used.

Step 5 / Step 6 — Render, inspect, and polish

Read and execute visual inspection, polish, and every applicable Gate A–G. Full standalone-polish coverage is required, with reuse only under the unchanged-version rule. Fix or explicitly accept each soft warning; hard gates remain mandatory. A green measurement does not replace visual inspection. While inspecting, also confirm every display equation is centred in its .eqn strip; a formula hugging the left edge with blank space to its right is a defect — diagnose the cause yourself, never ship it.

Final review is strongly recommended, preferably with a fresh reviewer from a different model family; it is not a delivery prerequisite. When performing it, read and execute final review, cross-model review, and applicable checkpoints, including evidence, finding resolution, and revalidation after fixes. Use the documented alternatives when cross-model review is unavailable.

Step 7 — Verification and handover

Read and execute final verification, exports, bundling, and reporting, including its upstream-feedback consent boundary.

Completion requires the Step 3.5 audit, all applicable hard gates, manual inspections, warning disposition, and Step 7 verification and deliverables. If final review is performed, resolve its findings and revalidate resulting fixes as required.

<a id="section-map"></a>

Complete section map (including legacy Step / § references)

Use this map for a global overview and legacy Step/Gate/section names; individual instructions link directly to their target sections. Sections were relocated from the original SKILL.md and include approved revisions. preserved-source comments identify historical source locations, not byte-for-byte equivalence. Style-rule 4/5 wording throughout follows the opt-in contract above. Any other unresolved pre-existing tensions remain 待确认 for a later content change; that label itself does not waive a rule.

Original section / lookup termCurrent home
Step 0; Step 0.5; Step 1Venue, discovery, content
Palette derivationTHEMES: original derivation
Step 2; image preprocessing; crop hygieneAssets
Step 2.5; DESIGN DIRECTION; fonts/tokens; anti-convergenceDesign direction
Step 3; BASE DEFENSES; microcopy; emphasis; theorem/equation sanityScaffold
Step 3.5; evidence pack; reviewer promptContent audit
Identity mark; anonymous submissionIdentity
Step 4; fine-tuning; budget; safety nets; preflightMeasure loop
Step 5; crop inspection; DPI; identity paintVisual inspection
Step 6; soft gate; text-wrapPolish workflow
Step 6.5Final review and cross-model review recommendation
Step 7; PNG; bundle; upstream feedbackFinal verification
Visual polish gates; Gate A; BANNER/IMAGE-SLOTVisual rules, Gate A, banner scaffold rules
Gate B; WIDOW; ORPHAN; GLUE-CHAIN; timing ruleTypography
Gate C; CARD/TRAILING; CARD/INNER-VOID; CARD/TRACK-MISALIGN; TRACK/INNER-VOID; Fill means substanceBalance rules
Gate D; LAYOUT/FLEX-BRFlex breaks
Gate E; Header logos; title squeeze; railsHeader rules
Gate G; CONTRAST; optional packing advisorComposed contrast and advisor note
Universal / Layout-shared pitfallsUniversal, layout-shared
When to call an external LLM reviewerThree checkpoints
Tools; pack; fit-logos; bundled MathJaxTool contracts
Enhanced gates; One-shot gate runner; Style HARD gateEnhanced, runner, style
Real-figure provenance gateAsset contract
Fix discipline; escape hatch; round capsFix discipline
Cross-model final reviewCross-model review recommendation
Templates; adding a templateTemplate rules

<a id="key-rules"></a>

<!-- preserved-source: SKILL.md lines 747-754 -->

Key rules

  • Never invent paper numbers. Read the .tex source. Bench numbers, datasets, model names — all verifiable.
  • Context discipline in the measure loop. Never emit the whole poster.html through your output (scaffold via cp, edit surgically); don't re-Read the full file each iteration — work from measure's edit-targets block (source line + anchor, then read just the surrounding block to confirm before editing). Full re-reads are for: an unfamiliar template, a cross-column re-pack, structural failures, a missing/ambiguous anchor, and the final audit.
  • Respect the circuit breaker. measure exit 3 means the loop is not converging — re-pack / rescope / escalate; don't --reset-budget to keep grinding.
  • Card-shadow visibility is non-negotiable. A poster looks cheap when shadows are clipped.
  • Strict alignment is non-negotiable. Spread < 5 px or it's not done — do not report success until measure exits 0.
  • Preserve user-judgment decisions across sessions. "Do not revert" notes (✉ stays on Author X, α-sensitivity card removed) — re-read the user's prior messages before "improving" a section.
<!-- end-preserved-source: 747-754 -->

© Chenruishuo, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 145 other files (references, assets) in the repository root of Chenruishuo/posterly.

  • SKILL.md
  • .github/workflows/star-history.yml
  • .gitignore
  • LICENSE
  • LICENSES/aris-MIT.txt
  • NOTICE.md
  • README.md
  • README.zh-CN.md
  • assets/mathjax/LICENSE
  • assets/mathjax/VERSION
  • assets/mathjax/tex-svg.js
  • docs/posterly-logo-dark.png
  • docs/posterly-logo-light.png
  • docs/showcase/directions
  • … and 132 more

Open the folder on GitHubat commit 09c8afd

Compare with similar skills

Posterly next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Posterly compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Posterly this skillChenruishuo/posterly415—~4.6kAutomated safety check: NotesAGPL-3.0
Drawing With Pycairooaustegard/claude-skills150—~1.9kAutomated safety check: PassMIT
Gflow CLIffroliva/gflow-cli264—~4.8kAutomated safety check: NotesMIT
Browser Video Recordingnirholas/three.ws2271 repos~1.5kAutomated safety check: PassApache-2.0
Poster Designeraipoch/medical-research-skills2k—~1.3kAutomated safety check: PassMIT
Render Myth Vs Factgooseworks-ai/goose-skills1.2k—~2.2kAutomated safety check: PassMIT

Similar skills

  • Drawing With Pycairo

    oaustegard/claude-skills

    Draws images, PDF/SVG vector files and animation frames with pycairo, and supplies what cairo lacks: shaped text for Arabic, Indic and other scripts, text along curves, blur/glow/drop shadows, path…

    150 GitHub stars~1.9k tokensUpdated today
    Media & CreativeAuto-check passed
  • Gflow CLI

    ffroliva/gflow-cli

    A skill your agent uses when the user wants to drive Google Flow (Veo image-to-video, Veo text-to-video, Imagen / Nano Banana image generation) from the terminal or a script — including…

    264 GitHub stars~4.8k tokensUpdated yesterday
    Media & CreativeAuto-check: notes
  • Browser Video Recording

    nirholas/three.ws

    Create polished 60 fps 4:3 4K browser screen-recording style videos from Codex in-app browser captures, with browser-only crop, natural macOS cursor styling, deliberate click choreography…

    227 GitHub starsUsed in 1 repo~1.5k tokens
    Media & CreativeAuto-check passed
  • Poster Designer

    aipoch/medical-research-skills

    Generate professional poster design concepts and optimized image-generation prompts, then automatically run a drawing script to produce the final poster image when a user needs a poster.

    2k GitHub stars~1.3k tokensUpdated 21 days ago
    Media & CreativeAuto-check passed
  • Render Myth Vs Fact

    gooseworks-ai/goose-skills

    Assemble a myth-vs-fact kinetic-typography explainer video ad (≈29.5s, 9:16) from N myth/fact pairs + hook / turn / punch copy + palette + a brand end-card PNG + a VO track — a hook, 3 red-strike…

    1.2k GitHub stars~2.2k tokensUpdated today
    Media & CreativeAuto-check passed
  • Web Application Testing

    anthropics/skills

    Official

    Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.

    180k GitHub starsUsed in 51 repos~966 tokens
    Testing & QAAuto-check passed

Questions about Posterly

What does Posterly do?

Create or revise academic conference posters in HTML/CSS and export print-ready PDFs. Posterly is an agent skill from Chenruishuo/posterly. Create or revise academic conference posters in HTML/CSS and export print-ready PDFs.

When should I use Posterly?

Posterly fits situations like: tasks that involve Generative and creative coding.

How do I install Posterly in Claude Code?

Run `npx skills add Chenruishuo/posterly --skill posterly -a claude-code`. Or copy the skill folder (the Chenruishuo/posterly repository) into .claude/skills/posterly in your project. Claude Code loads it when a task matches its description.

How do I install Posterly in Codex?

Run `npx skills add Chenruishuo/posterly --skill posterly -a codex`. Or copy the skill folder (the Chenruishuo/posterly repository) into .agents/skills/posterly in your project. Codex loads it when a task matches its description.

Can I use Posterly in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Chenruishuo/posterly --skill posterly -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/posterly, .gemini/skills/posterly, .github/skills/posterly and .opencode/skills/posterly in your project.

What does Posterly need to run?

Going by SKILL.md and its folder, Posterly needs JavaScript for the scripts in its folder and the command-line tools its instructions call (python and conda). Our summary lists: Python 3; Node.js. Its frontmatter pre-approves these tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, WebFetch, WebSearch.

Does Posterly access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Posterly safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Posterly use?

Posterly is published under the AGPL-3.0 licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Posterly use?

About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 39k tokens, read only when the agent opens those files.

What are the alternatives to Posterly?

Skills that share tags, products or a category with Posterly: Drawing With Pycairo (oaustegard/claude-skills, 150 stars), Gflow CLI (ffroliva/gflow-cli, 264 stars), Browser Video Recording (nirholas/three.ws, 227 stars) and Poster Designer (aipoch/medical-research-skills, 2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Posterly?

Chenruishuo (a GitHub user) maintains it in Chenruishuo/posterly, which has 415 GitHub stars. The repository was last updated on October 6, 2026.

Source: Chenruishuo/posterly on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.