Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ZSeven-W/openpencil-skill --skill openpencil-designgit clone --depth 1 https://github.com/ZSeven-W/openpencil-skillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/zseven-w/openpencil-skill/openpencil-design)<a href="https://agentmods.dev/skills/zseven-w/openpencil-skill/openpencil-design"><img src="https://agentmods.dev/badge/skills/zseven-w/openpencil-skill/openpencil-design/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/zseven-w/openpencil-skill/openpencil-design"><img src="https://agentmods.dev/badge/skills/zseven-w/openpencil-skill/openpencil-design.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Prompt Injection · line 344 Subtle instructions detected that may alter agent decision-making or introduce hidden biases.Fix: Review content for implicit steering or bias. Ensure instructions are explicit and align with the skill's stated purpose.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00052 | $0.10414 |
| Opus 5 | $0.00026 | $0.05207 |
| Sonnet 5 | $0.00010 | $0.02083 |
| Haiku 4.5 | $0.00005 | $0.01041 |
Grade A, and why
openpencil-design scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 700 lines — stays where its author put it; the contents beside it link to each section on GitHub.
OpenPencil Design
Generate production-quality vector designs by writing PenNode JSON trees. Use the op CLI or MCP tools to create, read, update, and delete nodes on the OpenPencil canvas.
When to Use
- Creating or modifying UI designs in
.opfiles - Using the
opCLI to script design operations - Designing via MCP tools (
batch_design,insert_node,design_skeleton) - Need reference for PenNode schema, roles, or layout rules
Quick Reference — op CLI
# App and server control
op start [--file path.op] # Launch the desktop editor and live MCP server
op start --web [--host H] [--file path.op] # Serve the browser editor and MCP
op start --headless [--file path.op] # Run a windowless file-backed MCP server
op stop # Stop the running editor / MCP server
op status # Check whether MCP HTTP is reachable
op tools # List every MCP tool and input schema
# Skill management
op install [--target T] # Install openpencil-skill for detected AI agents
op uninstall [--target T] # Uninstall openpencil-skill
op skill:export <skill> [--out DIR] # Export an embedded skill
# Document
op open [file.op] # Open file or connect to live canvas
op save <file.op> # Save current document
op get [--type T] [--name N] [--id ID] [--depth N] [--parent P]
op selection [--depth N] # Get current canvas selection
op read-nodes [ids] [--depth N] [--vars] # Read node subtree(s) with optional variable resolution
op layout [--parent P] [--depth N] # Snapshot layout tree with computed positions
op find-space [--direction D] [--width N] [--height N] # Find empty space on canvas
# Node operations
op insert '<json>' [--parent P] [--page PAGE] [--post-process]
op update <id> '<json>' [--page PAGE] [--post-process]
op delete <id> [--page PAGE]
op move <id> [--parent P] [--index N] [--page PAGE]
op copy <id> [--parent P] [--page PAGE]
op replace <id> '<json>' [--page PAGE] [--post-process]
# Batch design
op design '<dsl>' # Batch design DSL (inline, @file, or stdin) [--canvas-width N]
op design @ui.js # Sandboxed JS: I(parent, obj) + loops (.js/.mjs implies --script)
op design '<js>' --script # Same in inline/stdin form; flag follows payload
# Layered workflow
op design:skeleton '<json>' # Create section structure
op design:content <id> '<json>' # Populate section content
op design:refine --root-id <id> # Validate + auto-fix (resolves icons) [--canvas-width N]
# Design-as-code conversion
op design:upsert-vars --key K --file vars.json [--source P] [--hash H]
op design:upsert-component --key K --name N --file node.json [--source P] [--hash H]
op design:upsert-screen --key K --file node.json [--source P] [--hash H]
op design:status [--kind token|component|screen]
op design:lint [--node ID]
# Templates & style assets
op templates [--scene S] [--tag T] # List shipped scene templates (incl. 16:9 decks)
op use-template <id> # Start from a template: takes over a blank
# starter page, otherwise appends its boards
op styles [<id>] [--tag T] [--platform P] # List style guides: shipped corpus +
# your imported DESIGN.md files; a bare id
# prints that guide's markdown
# Export & delivery
op export [--item ID|--selection] --output PATH [--format png|jpeg|webp|pdf] [--scale N]
op export-deck --output PATH [--format pptx|html|pdf] # Active page's boards as a deck
op export-frames --output-dir DIR [--format png|jpeg|webp] # One image per top-level frame
# Import
op import:svg <file.svg> [--parent P] # Import SVG as editable nodes
op import:html <file.html|url> [--parent P] [--viewport-height N] [--out out.op]
# Import a page or live URL as nodes
op import:snapshot <snapshot.json> [--parent P] [--out out.op]
# Import a web-capture snapshot
op import:figma <file.fig> [--out out.op] # Convert Figma .fig to .op document
# Pages
op page list # List all pages
op page add [--name N] # Add a new page
op page remove <id> # Remove a page
op page rename <id> '<name>' # Rename a page
op page reorder <id> <index> # Move page to position
op page duplicate <id> # Clone page with new IDs
# Variables & Themes
op vars / op vars:set '<json>' # Variables (--replace to replace all)
op themes / op themes:set '<json>' # Themes (--replace to replace all)
op theme:save <file.optheme> # Save current theme as preset file
op theme:load <file.optheme> # Load a theme preset file
op theme:list <directory> # List .optheme presets in directory
# Codegen pipeline
op codegen:plan '<json>' # Submit plan (chunks, sharedStyles, rootLayout)
op codegen:submit <planId> '<json>' # Submit a code chunk for the plan
op codegen:assemble <planId> [--framework F] # Assemble final output
op codegen:clean <planId> # Clear codegen state for the plan
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 700 lines · 52 tokens per session scan A 6dda54060cfc
openpencil-design is a skill published in the GitHub repository ZSeven-W/openpencil-skill (54 stars, last pushed 1mo ago), licensed MIT. It adds 52 tokens to every session and 10,414 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
xxd-accessible-color
Check and repair Chinese traditional color combinations for readability and accessibility. Use when a user asks whether text, buttons, UI states, charts, light mode, dark mode, or traditional color palettes meet contrast and non-color-cue requirements.
gradient-text
Give one short headline quiet premium emphasis: a slow on-brand gradient drifts through the type. One phrase per view; never body copy (readability). Pure CSS; falls back to a solid brand color under prefers-reduced-motion.
magnetic-button
Make a primary button feel alive by gently pulling it toward the cursor as it approaches, then springing back. Keep it subtle and reserve it for one or two primary actions. Disabled on touch and under prefers-reduced-motion. Do not use it on dense UIs full of buttons.
ripple-press
Acknowledge a tap/click with a ripple that blooms from the exact press point. Fast and low-opacity so it reads as feedback, not decoration. No ripple under prefers-reduced-motion (native :active covers it). Avoid on destructive actions and text links.
scroll-reveal
Reveal content as it scrolls into view — a gentle rise + fade, once per element. Use to give a long page calm rhythm. Honors prefers-reduced-motion and supports staggering. Do not delay above-the-fold content, and keep at most a few elements animating at once.
cinematic-scroll
Design and build cinematic websites, 3D websites, interactive portfolios and product landing pages with scroll-driven storytelling, parallax, text animation and optional Three.js/WebGL scenes. Use for new experiences, motion improvements, scroll audits and storyboards in standalone HTML or an existing app. Includes…