OpenPencil is an open-source design editor that opens and edits Figma and Pencil files, supports AI-assisted design changes, and includes a programmable headless Vue toolkit for custom editors. It is for designers and developers creating, inspecting, converting, and exporting interface designs, while the catalogue instructions help coding agents work with its capabilities.
Borrowing it
Nothing to install: this file belongs to open-pencil/open-pencil. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/open-pencil/open-pencil/master/AGENTS.mdgit clone --depth 1 https://github.com/open-pencil/open-pencilWrote 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/instructions/open-pencil/open-pencil/agents-md)<a href="https://agentmods.dev/instructions/open-pencil/open-pencil/agents-md"><img src="https://agentmods.dev/badge/instructions/open-pencil/open-pencil/agents-md/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/instructions/open-pencil/open-pencil/agents-md"><img src="https://agentmods.dev/badge/instructions/open-pencil/open-pencil/agents-md.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.05127 | $0.05127 |
| Opus 5.5 | $0.02051 | $0.02051 |
| Sonnet 5.5 | $0.01025 | $0.01025 |
| Haiku 4.5 | $0.00513 | $0.00513 |
Grade A, and why
open-pencil AGENTS.md 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 today.
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 — 140 lines — stays where its author put it; the contents beside it link to each section on GitHub.
OpenPencil
Vue 3 + CanvasKit (Skia WASM) + Yoga WASM design editor. Tauri v2 desktop, also runs in browser. Bun workspace monorepo.
This file holds the repository map and the rules that apply everywhere. Rules for one folder live in that folder's AGENTS.md. Before changing files under a mapped path, read this file and that path's guide. Paths in every guide are repository-relative. Process for humans (setup, PRs, commits) is in CONTRIBUTING.md; product direction and Figma gaps are in packages/docs/development/roadmap.md.
Map
| Path | Owns | Guide |
|---|---|---|
packages/scene-graph |
Framework-neutral graph, node types, geometry, copy/snap/undo, variables, instances, hit testing, plus the shared primitives formats need: color conversion and management, CSS value parsing, text/layout direction | packages/scene-graph/AGENTS.md |
packages/pen |
Pencil.dev .pen model, parser, SceneGraph adapter |
— |
packages/collab |
How a collaboration room's Yjs document maps to and from a SceneGraph: layers, the shared layer tree, variables, document data; depends on scene-graph and yjs, no Vue or app code, and takes the editor as CollabEditor |
packages/collab/AGENTS.md |
packages/drawio |
draw.io model, reader and writer for .drawio/.dio files and the diagrams draw.io PNG and SVG exports embed; no SceneGraph |
— |
packages/kiwi |
SceneGraph-independent Kiwi schema/runtime, codecs, containers, parse helpers | packages/fig/AGENTS.md |
packages/fig |
.fig archives, SceneGraph conversion, metadata policy, component/instance interpretation, Figma clipboard |
packages/fig/AGENTS.md |
packages/core |
Renderer, layout, editor, Figma API, tools, clipboard, vector conversion, document I/O; depends on scene-graph and the format packages (pen, drawio, kiwi, fig, dom-css, design-jsx, html-engine); no browser DOM | packages/core/AGENTS.md |
packages/html-engine |
Blitz (Stylo, Taffy, Parley) compiled to WebAssembly from the Rust crate in crate/, with a host that loads it, answers its requests, and turns its captures into styled DOM/CSS documents as a CSSRuntime; depends on dom-css |
packages/html-engine/AGENTS.md |
packages/dom-css |
DOM/CSS/HTML/JSX/Tailwind projection and browser/headless adapters; depends only on scene-graph and emit, and takes engine services such as web-font resolution as injected options | packages/dom-css/AGENTS.md |
packages/emit |
Source emission for exporters: ESTree and JSX builders, template filling, and esrap printing, with the literal rules that keep exported strings from being reinterpreted | — |
packages/oxlint-plugin |
Published Oxlint plugin with the conventions any TypeScript project can follow; this repository adds its own rules from tools/checks/lint through lint/plugin.js |
packages/oxlint-plugin/AGENTS.md |
packages/design-jsx |
OpenPencil design JSX: elements, paint/effect helpers, variables, schema and authoring reference, JSX export, and a renderer that takes icons, SVG, and layout as injected services | packages/design-jsx/AGENTS.md |
packages/vue |
Headless Vue 3 SDK primitives, composables, commands, i18n, menu model | packages/vue/AGENTS.md |
packages/test-support |
Private test helpers shared by more than one owner's tests (assertions, repository paths); owner-specific helpers stay in that owner's tests/helpers |
— |
packages/cli |
Headless .fig inspection, export, linting, eval |
packages/cli/AGENTS.md |
packages/mcp |
stdio and Hono HTTP MCP server reusing Core tools | packages/mcp/AGENTS.md |
packages/harness |
Optional Node companion for HarnessAgent sessions | packages/harness/AGENTS.md |
packages/feedback |
Cloudflare Worker at feedback.openpencil.dev: daily ping counts, opt-in usage stats proxied to PostHog, Cloud waitlist; its contract defines every field the app may send |
packages/feedback/AGENTS.md |
packages/cloud |
Optional self-hostable backend: contracts, typed client, Hono server, Node runtime, PostgreSQL migrations, transactional email | packages/cloud/AGENTS.md |
packages/docs |
Published VitePress site | packages/docs/AGENTS.md |
src |
Tauri/Vite app: services and state in src/app/**, views in src/views/**, UI in src/components/** |
src/AGENTS.md |
desktop |
Tauri v2 shell, capabilities, native credentials, menus | desktop/AGENTS.md |
vite |
The app's Vite plugins, aliases, and dev server; appSourceConfig() lends the aliases, icons, and build constants to the docs landing |
— |
tests |
Central app, integration, E2E, native, and Figma acceptance tests | tests/AGENTS.md |
tools, .github |
Private repo tooling, CI classification, releases, brand generation | tools/AGENTS.md |
skills/open-pencil |
Installable agent skill | packages/core/AGENTS.md (Tools) |
assets/brand |
Canonical brand artwork | assets/brand/README.md |
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.
- today Changed · +1 lines · +77 tokens per session 31bc4a5267aa
- yesterday Changed · +1 lines · +86 tokens per session 417dc85d3a70
- 2d ago Changed · +1 lines · +103 tokens per session af1c9705a2d2
- 3d ago Changed · +1 lines · +56 tokens per session 223bf8f0c453
- 5d ago Changed · +1 lines · +102 tokens per session e05b22bd33ef
- 11d ago Changed · +1 lines · +48 tokens per session e010d363b101
- 15d ago Changed · +2 lines · +182 tokens per session c30970de3fa5
- 17d ago Changed · +34 tokens per session b07bc86dcb0e
- 22d ago Changed · +1 lines · +53 tokens per session deed04b94e42
- 24d ago First seen · 131 lines · 4,386 tokens per session scan A 20a742b5a7a6
open-pencil AGENTS.md is an instructions file published in the GitHub repository open-pencil/open-pencil (9,639 stars, last pushed yesterday), licensed MIT. It adds 5,127 tokens to every session, about $0.0205 per session on Opus 5.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.
open-pencil AGENTS.md compared with instructions from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| open-pencil AGENTS.mdopen-pencil/open-pencil | Instructions file | 9.6k | yesterday | MIT | A | 5,127 | Codex, OpenCode |
| vscode buildNext.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 9,719 | GitHub Copilot |
| next.js AGENTS.mdvercel/next.js | Instructions file | 143k | today | MIT | A | 7,461 | Codex, OpenCode |
| langchain AGENTS.mdlangchain-ai/langchain | Instructions file | 149k | yesterday | MIT | A | 4,680 | Codex, OpenCode |
| vscode oss-third-party-notices.instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 5,516 | GitHub Copilot |
| vscode copilot-instructions.mdmicrosoft/vscode | Instructions file | 195k | yesterday | MIT | A | 3,093 | GitHub Copilot |
| deepseek-harness AGENTS.mddeepseek-ai/deepseek-harness | Instructions file | 274k | 2d ago | MIT | A | 4,313 | Codex, OpenCode |