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…
Create or revise academic conference posters in HTML/CSS and export print-ready PDFs.
$ npx skills add Chenruishuo/posterly --skill posterly -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Chenruishuo/posterly posterly --agent claude-codeProject 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/
Install the "posterly" agent skill from https://github.com/Chenruishuo/posterly/tree/main into .claude/skills/posterly/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "posterly", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chenruishuo/posterly --skill posterly -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Chenruishuo/posterly posterly --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "posterly" agent skill from https://github.com/Chenruishuo/posterly/tree/main into .agents/skills/posterly/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "posterly", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chenruishuo/posterly --skill posterly -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Chenruishuo/posterly posterly --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "posterly" agent skill from https://github.com/Chenruishuo/posterly/tree/main into .cursor/skills/posterly/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "posterly", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chenruishuo/posterly --skill posterly -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Chenruishuo/posterly posterly --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "posterly" agent skill from https://github.com/Chenruishuo/posterly/tree/main into .gemini/skills/posterly/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "posterly", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Chenruishuo/posterly posterlyInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Chenruishuo/posterly --skill posterly -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "posterly" agent skill from https://github.com/Chenruishuo/posterly/tree/main into .github/skills/posterly/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "posterly", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Chenruishuo/posterly --skill posterly -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Chenruishuo/posterly posterly --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "posterly" agent skill from https://github.com/Chenruishuo/posterly/tree/main into .opencode/skills/posterly/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "posterly", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
posterlyCreate 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. 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.
9 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 09c8afd. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(*)ReadWriteEditGrepGlobAgentAskUserQuestionWebFetchWebSearchFrom allowed-tools in the SKILL.md frontmatter.
Ships script files (JavaScript, from the files we listed), which the agent can run.
Shell commands in SKILL.md call:
pythoncondaFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash(*), Read, Write, Edit, Grep, Glob, Agent, AskUserQuestion, WebFetch, WebSearchAutomated 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.
The full file from Chenruishuo/posterly at commit 09c8afd, republished under its AGPL-3.0 licence (© Chenruishuo). 1,926 words, ~4,609 tokens.
.claude/skills/posterly/SKILL.md (or your agent's skills folder). This skill also uses 145 other files; get the full folder from GitHub.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.
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.
| Constant | Value | Notes |
|---|---|---|
--u (CSS unit) | print = 1mm, screen = 1.6px | Use calc(N * var(--u)) for ALL sizing. |
| Print viewport (px) | W_in × 96 × H_in × 96 | Computed by poster_check/render_preview. |
| Body cols | 2 / 3 / 4, or 1 hero + 1 column | Per template. |
| Strict alignment | spread < 5 px (aim < 3) | Hard, non-negotiable gate. |
<a id="python-environment"></a>
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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>
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 term | Current home |
|---|---|
| Step 0; Step 0.5; Step 1 | Venue, discovery, content |
| Palette derivation | THEMES: original derivation |
| Step 2; image preprocessing; crop hygiene | Assets |
| Step 2.5; DESIGN DIRECTION; fonts/tokens; anti-convergence | Design direction |
| Step 3; BASE DEFENSES; microcopy; emphasis; theorem/equation sanity | Scaffold |
| Step 3.5; evidence pack; reviewer prompt | Content audit |
| Identity mark; anonymous submission | Identity |
| Step 4; fine-tuning; budget; safety nets; preflight | Measure loop |
| Step 5; crop inspection; DPI; identity paint | Visual inspection |
| Step 6; soft gate; text-wrap | Polish workflow |
| Step 6.5 | Final review and cross-model review recommendation |
| Step 7; PNG; bundle; upstream feedback | Final verification |
| Visual polish gates; Gate A; BANNER/IMAGE-SLOT | Visual rules, Gate A, banner scaffold rules |
| Gate B; WIDOW; ORPHAN; GLUE-CHAIN; timing rule | Typography |
| Gate C; CARD/TRAILING; CARD/INNER-VOID; CARD/TRACK-MISALIGN; TRACK/INNER-VOID; Fill means substance | Balance rules |
| Gate D; LAYOUT/FLEX-BR | Flex breaks |
| Gate E; Header logos; title squeeze; rails | Header rules |
| Gate G; CONTRAST; optional packing advisor | Composed contrast and advisor note |
| Universal / Layout-shared pitfalls | Universal, layout-shared |
| When to call an external LLM reviewer | Three checkpoints |
| Tools; pack; fit-logos; bundled MathJax | Tool contracts |
| Enhanced gates; One-shot gate runner; Style HARD gate | Enhanced, runner, style |
| Real-figure provenance gate | Asset contract |
| Fix discipline; escape hatch; round caps | Fix discipline |
| Cross-model final review | Cross-model review recommendation |
| Templates; adding a template | Template rules |
<a id="key-rules"></a>
<!-- preserved-source: SKILL.md lines 747-754 -->
.tex source. Bench numbers, datasets, model names — all verifiable.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.measure exit 3 means the loop is not converging — re-pack / rescope / escalate; don't --reset-budget to keep grinding.measure exits 0.✉ 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
SKILL.md and 145 other files (references, assets) in the repository root of Chenruishuo/posterly.
Open the folder on GitHubat commit 09c8afd
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Posterly this skillChenruishuo/posterly | 415 | — | ~4.6k | Automated safety check: Notes | AGPL-3.0 | |
| Drawing With Pycairooaustegard/claude-skills | 150 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Gflow CLIffroliva/gflow-cli | 264 | — | ~4.8k | Automated safety check: Notes | MIT | |
| Browser Video Recordingnirholas/three.ws | 227 | 1 repos | ~1.5k | Automated safety check: Pass | Apache-2.0 | |
| Poster Designeraipoch/medical-research-skills | 2k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Render Myth Vs Factgooseworks-ai/goose-skills | 1.2k | — | ~2.2k | Automated safety check: Pass | MIT |
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…
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…
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…
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.
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…
anthropics/skills
Tests local web applications with Python Playwright scripts, checking frontend behavior, capturing screenshots and reading browser console logs.
Works with
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.
Posterly fits situations like: tasks that involve Generative and creative coding.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.