Agent skill

Figure Drawing

by iancooper in iancooper/practical-messaging

Draw or edit a Practical Messaging figure with tools/diagram.py — the element vocabulary, the legibility arithmetic (compact, readsat, the 18pt floor, aspect), what lintfigures.py cannot see, the…

No licenceAuto-check passedDevelopment

Install Figure Drawing

skills CLI
$ npx skills add iancooper/practical-messaging --skill figure-drawing -a claude-code

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

GitHub CLI
$ gh skill install iancooper/practical-messaging figure-drawing --agent claude-code

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

Manual copy
$ git clone --depth 1 https://github.com/iancooper/practical-messaging.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/figure-drawing .claude/skills/figure-drawing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

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

Facts

Skill name
figure-drawing
GitHub stars
101
Token cost
~4.8k tokens
SKILL.md length
2,971 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
None found

At a glance

Draw or edit a Practical Messaging figure with tools/diagram.py — the element vocabulary, the legibility arithmetic (compact, readsat, the 18pt floor, aspect), what lintfigures.py cannot see, the…

  • Works in 12 steps: A floor in canvas units is not a… → Aspect is the other half. A 16:9 slide… → ⚑ On a height-fitted figure, width is… → …
  • Changing any figure in the twelve families
  • SKILL.md covers ⚑ Rule zero: look at the PNG, What the checkers each measure…, The legibility arithmetic and Colour, and what a label is, plus 6 more sections
  • Calls git, python3 and kind

What it does

Figure Drawing is an agent skill from iancooper/practical-messaging. Draw or edit a Practical Messaging figure with tools/diagram.py — the element vocabulary, the legibility arithmetic (compact, readsat, the 18pt floor, aspect), what lintfigures.py cannot see, the composition test, and the defects that have shipped invisible in the source. Use when adding or changing any figure in the twelve families or the reference cards, editing tools/diagram.py, or acting on a readsat / lint finding.

Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Linting and formatting.

When your agent uses it

  • Changing any figure in the twelve families
  • The reference cards
  • Editing tools/diagram.py
  • Acting on a readsat / lint finding

Example prompts

  • “/figure-drawing”

Workflow steps

12 steps, taken from the first numbered list in SKILL.md.

  1. A floor in canvas units is not a legibility guarantee. A figure is scaled to fit its
  2. Aspect is the other half. A 16:9 slide leaves about 2.2 : 1 of usable area. Wider than
  3. ⚑ On a height-fitted figure, width is FREE. Widening costs no legibility at all, so
  4. ⚑ But width is free and size is not: they are different questions. A figure-slide stage
  5. compact(target) means max(w, 2.2 × h) and shrinks the geometry, leaving the type
  6. Call compact() from the family's figure decorator, not from main() — otherwise the
  7. ⚑ K_FLOOR = 0.55 fails silently. A figure drawn one row taller than it needs can want a
  8. The label-fit clamp is (advance + 12) / w, so w is the lever, not the word. Widen the
  9. ⚑ The floor is per-face. Plex Sans's x-height is 0.516em against Caveat's 0.400, so
  10. lx / ly are text-space and do not scale, so they are the only nudge that means the
  11. ⚑ Two pieces of text cannot be spaced in raw units. Their positions scale and their
  12. A harder compact target is a licence to spend width, not to shorten labels.

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • python3
    • kind

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

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    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

Figure Drawing loads about 4.8k tokens when it runs. Until then it costs about 110 tokens; SKILL.md has 2,971 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~110
When it runs · the whole SKILL.md, loaded when a task matches
~4.8k

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 passed

The automated check found no risky patterns in SKILL.md.

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

Without a licence we can't republish the file, so here is its outline and opening line. It has 2,971 words (~4,763 tokens).

“tools/diagram.py emits both the editable .drawio and the .png from one definition, so they cannot drift. tools/README.md has the full API and a per-family note; this is the judgement that goes with it.”

— opening of SKILL.md by iancooper
name
figure-drawing

Read the full SKILL.md on GitHub

Files

Just SKILL.md in .claude/skills/figure-drawing of iancooper/practical-messaging.

Open the folder on GitHubat commit 5d0ea23

Compare with similar skills

Figure Drawing 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.

Figure Drawing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Figure Drawing this skilliancooper/practical-messaging101—~4.8kAutomated safety check: PassNone
Minimizing Ty Ecosystem Changesastral-sh/ruff50k—~4.6kAutomated safety check: PassMIT
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.3k—~2.2kAutomated safety check: PassMIT
Babysit PR To Pass CIsgl-project/sglang37k2 repos~3kAutomated safety check: PassApache-2.0
Rust Best Practicesfarm-fe/farm5.6k3 repos~1.1kAutomated safety check: PassMIT
Summarise Ecosystem Resultsastral-sh/ruff50k—~2.2kAutomated safety check: PassMIT

Similar skills

  • Official

    A skill your agent uses when a user says "minimize this ty ecosystem change", "reproduce this ecosystem result", "investigate a primer difference", "investigate a mypyprimer difference"…

    50k GitHub stars~4.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.

    5.3k GitHub stars~2.2k tokensUpdated 29 days ago
    DevelopmentAuto-check passed
  • Babysit PR To Pass CI

    sgl-project/sglang

    Start and persistently pursue a goal to babysit an SGLang pull request until selected GitHub Actions workflows pass on the latest PR head.

    37k GitHub starsUsed in 2 repos~3k tokens
    DevelopmentAuto-check passed
  • Guide for writing idiomatic Rust code based on Apollo GraphQL's best practices handbook.

    5.6k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "summarise ecosystem results", "summarize this ty ecosystem report", "what changed in this ecosystem run?", or asks to summarise or summarize ty ecosystem…

    50k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Go Pedantry

    chromedp/chromedp

    This skill should be used when the user is writing Go code and needs guidance on Go-specific pedantry: error wrapping with fmt.Errorf and %w, interface design (accept interfaces return structs)…

    13k GitHub stars~3.7k tokensUpdated 3 days ago
    DevelopmentAuto-check passed

More from iancooper/practical-messaging

  • Review Sheet

    iancooper/practical-messaging

    Build and publish a Practical Messaging artwork review sheet — the page Ian reviews figures on, because he cannot see PNGs in a terminal.

    101 GitHub stars~2.8k tokensUpdated 25 days ago
    Auto-check passed
  • Deck Build

    iancooper/practical-messaging

    Build the Practical Messaging .pptx decks from outlines/ — the house Markdown grammar, what builddeck.py does with each block, how figures and photographs are laid out, and how to answer an overflow.

    101 GitHub stars~3.8k tokensUpdated 25 days ago
    Auto-check passed

Categories

Questions about Figure Drawing

What does Figure Drawing do?

Draw or edit a Practical Messaging figure with tools/diagram.py — the element vocabulary, the legibility arithmetic (compact, readsat, the 18pt floor, aspect), what lintfigures.py cannot see, the…. Figure Drawing is an agent skill from iancooper/practical-messaging.py cannot see, the composition test, and the defects that have shipped invisible in the source.

When should I use Figure Drawing?

Figure Drawing fits situations like: changing any figure in the twelve families; the reference cards; editing tools/diagram.py; acting on a readsat / lint finding.

How do I install Figure Drawing in Claude Code?

Run `npx skills add iancooper/practical-messaging --skill figure-drawing -a claude-code`. Or copy the skill folder (.claude/skills/figure-drawing in iancooper/practical-messaging) into .claude/skills/figure-drawing in your project. Claude Code loads it when a task matches its description.

How do I install Figure Drawing in Codex?

Run `npx skills add iancooper/practical-messaging --skill figure-drawing -a codex`. Or copy the skill folder (.claude/skills/figure-drawing in iancooper/practical-messaging) into .agents/skills/figure-drawing in your project. Codex loads it when a task matches its description.

Can I use Figure Drawing 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 iancooper/practical-messaging --skill figure-drawing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/figure-drawing, .gemini/skills/figure-drawing, .github/skills/figure-drawing and .opencode/skills/figure-drawing in your project.

What does Figure Drawing need to run?

Going by SKILL.md and its folder, Figure Drawing needs the command-line tools its instructions call (git, python3 and kind).

Does Figure Drawing access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Figure Drawing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Figure Drawing use?

No licence was found for Figure Drawing or its repository. Without one, default copyright applies: ask the author before reusing or redistributing it.

How many tokens does Figure Drawing use?

About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Figure Drawing?

Skills that share tags, products or a category with Figure Drawing: Minimizing Ty Ecosystem Changes (astral-sh/ruff, 50k stars), Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.3k stars), Babysit PR To Pass CI (sgl-project/sglang, 37k stars) and Rust Best Practices (farm-fe/farm, 5.6k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Figure Drawing?

iancooper (a GitHub user) maintains it in iancooper/practical-messaging, which has 101 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on September 13, 2026.

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