penpot-mcp-operator
Use when working with Penpot through MCP, including remote or local Penpot MCP setup, reading or modifying active Penpot design files, creating pages, boards…
Skill by TheAngryPit
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/theangrypit-penpot-mcp-operator
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: design, backend, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/penpot-mcp-operator
What's inside
- Skill name
penpot-mcp-operator- Description
- Use when working with Penpot through MCP, including remote or local Penpot MCP setup, reading or modifying active Penpot design files, creating pages, boards, shapes, text, tokens, components, exports, imports, or diagnosing Penpot MCP API behavior. USE FOR "work in Penpot", "create a Penpot board", "use Penpot MCP", "upload images to Penpot", "inspect this Penpot file", and "fix Penpot MCP API guessing".
- License
- MIT
- Instructions
- 133 lines in SKILL.md · view on GitHub
Files (4)
- SKILL.md
- openai.yaml · agents/
- penpot-mcp-api-map.md · references/
- upstream-penpot-ai-kit.md · references/
SKILL.md (first lines)
# Penpot MCP Operator
Use this skill to operate Penpot through MCP without guessing the API.
## Operating Rule
Penpot MCP acts on the currently focused Penpot file and page. Always inspect before writing.
1. Confirm whether the available server is remote or local.
2. Read the Penpot high-level overview once per session if it has not already been read.
3. Use `penpot_api_info` for every object type and member you plan to rely on before write operations.
4. Run a read-only probe with `execute_code`.
5. Make the smallest requested mutation.
6. Verify with a structural readback and, when possible, `export_shape`.
7. Report exact proof level and limitations.
## Remote Versus Local
Remote MCP is simplest for Penpot Cloud and usually exposes:
- `execute_code`
- `high_level_overview`
- `penpot_api_info`
- `export_shape`
Remote MCP does not provide full local filesystem access. Do not assume local-path image import or local export writes work.
For remote MCP image upload, local asset import, file picker work, plugin UI work, or drag-and-drop style workflows, use browser control with Chrome or computer-use. Remote MCP alone should not be treated as a local asset bridge.
For PDF/image-heavy workflows, check the Penpot plugin path before rebuilding assets manually. The Penpot plugin hub includes plugins such as Import PDF, bitmap vectorization, design token management, color export and HTML-to-design. Use Chrome or computer-use for plugin install/UI steps when MCP remote cannot perform the browser interaction.
For brand typography, use Penpot custom fonts before approximating with system fonts. Custom fonts are uploaded at team/dashboard level, then become available inside files for that team. Supported formats include TTF, OTF, WOFF and WOFF2. Use Chrome or computer-use for the dashboard upload flow when MCP cannot operate that UI.
Local MCP requires a running local server and Penpot plugin connection. It can expose local-resource workflows such as local image import and stronger export paths, depending on configuration.
Never paste, log, commit, or screenshot a remote MCP `userToken`.
## Illustrator Source Reconstructions
When the Penpot task is a 1:1 recreation of an Illustrator file, brandbook, logo sheet, or layered `.ai` source, use this skill together with `adobe-illustrator-operator`.
Penpot MCP is the execution surface. Illustrator remains the canonical source for artboards, visual stacking, layer order, object names, text and export references.
Before writing Penpot objects:
1. read the Illustrator tree through the Illustrator workflow;
2. create or select the matching Penpot file;
3. recreate boards in Illustrator artboard order;
4. import or recreate child objects in Illustrator tree order;
5. recreate Illustrator TextFrames as Penpot text wherever technically possible;
6. replace generic imported names with semantic names tied to the Illustrator tree;
7. verify each board visually and structurally before moving to the next board.
Do not use a flattened page SVG as final proof for a 1:1 reconstruction.
## Required Read Probe
Start with:
```js
return {
page: penpot.currentPage ? {
id: penpot.currentPage.id,
name: penpot.currentPage.name,
keys: Object.keys(penpot.currentPage)
} : null,
root: penpot.root ? {
id: penpot.root.id,
name: penpot.root.name,
type: penpot.root.type,
keys: Object.keys(penpot.root)
} : null
};
```
If the task needs child traversal, query the specific container type and member first. Do not assume `children`, `remove`, or `findShapes` exist globally.
## API-First Write Workflow
Before writing a board, text, token, image, or component:
1. Ask `penpot_api_info` for the creator method, such as `Penpot.createBoard`.
2. Ask `penpot_api_info` for the concrete shape type methods you will use, such as `Board.resize`, `Rectangle.resize`, `Text.growType`, `Group.appendChild`.
3. Use only confirmed members.
4. Keep code idempotent by naming generated nodes clearly.
5. If deletion or replacement is needed, confirm the delete/remove API exists before using it.
## Safe Creation Pattern
Use append-only creation when the delete API is not confirmed.
```js
const board = penpot.createBoard();
board.name = "REVIEW__Example";
board.x = 0;
board.y = 0;
board.resize(1440, 900);
board.fills = [{ fillColor: "#050505", fillOpacity: 1 }];
penpot.root.appendChild(board);
const text = penpot.createText("Example Brand");
text.name = "TITLE__Example_Brand";
text.x = 80;
text.y = 80;
text.resize(600, 90);
text.growType = "fixed";
text.fontSize = "72";
text.fills = [{ fillColor: "#FFDF00", fillOpacity: 1 }];
board.appendChild(text);
penpot.viewport.zoomIntoView([board]);
return { ok: true, boardId: board.id, boardName: board.name };
```
## Verification
After mutation, run a structural readback that returns:
- active page nameFrom TheAngryPit/TheAngrySkills, MIT.
More from TheAngryPit/TheAngrySkills
- 0.570score
openclaw-debugging
TheAngryPit
Use when diagnosing OpenClaw provider, tool-surface, code-mode, streaming, transcript, worker or package-runtime failures.
SkillAFreshness: AClaude Code +9 - 0.570score
openclaw-node-connect
TheAngryPit
Use when explicitly asked to repair one exact OpenClaw browser or native-node connection, including auth, Tailscale routing or pairing.
SkillAFreshness: AClaude Code +9 - 0.570score
model-capability-router
TheAngryPit
Use when the operator explicitly asks for native Codex model or reasoning-effort routing, including an active standing request.
SkillAFreshness: AClaude Code +9 - 0.570score
openclaw-control-ui-e2e
TheAngryPit
Use when changing or proving OpenClaw Control UI behavior with deterministic Gateway fixtures, browser flows, rendered evidence or interaction profiling.
SkillAFreshness: AClaude Code +9 - 0.569score
openclaw-node-inspect-debugger
TheAngryPit
Use when debugging Node.js breakpoints, async hangs, hidden locals, heap retention or CPU hot paths with the inspector.
SkillAFreshness: AClaude Code +9 - 0.569score
openclaw-diagnose-gateway
TheAngryPit
Use when diagnosing OpenClaw Gateway, config, channel, model, SecretRef or listener failures without changing state.
SkillAFreshness: AClaude Code +9 - 0.559score
model-routing-preset-builder
TheAngryPit
Use when the operator explicitly wants to customise the native Codex model-capability-router policy.
SkillAFreshness: AClaude Code +9 - 0.533score
ask-pit
TheAngryPit
Ask which skill or flow fits your situation.
SkillAFreshness: AClaude Code +9 - 0.529score
continuity-handoff
TheAngryPit
Create a compact fresh-task continuity packet that preserves goals, decisions, proof, protected state, and a bounded read-only handle to legacy Codex history.
SkillBFreshness: BClaude Code +9 - 0.479score
karpathy-agentic-guidelines-q8
TheAngryPit
Compact q8 Karpathy-inspired agentic coding guidance.
SkillCFreshness: CClaude Code +9 - 0.479score
adobe-illustrator-operator
TheAngryPit
Use when working with Adobe Illustrator files, .ai brand assets, artboards, layers, vector exports, SVG/PDF/PNG rendering, Illustrator scripting…
SkillCFreshness: CClaude Code +9 - 0.474score
aegis-communication-discipline
TheAngryPit
Use when project execution is drifting into noisy chat.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 1
- Open issues
- 0
- Last commit (this folder)
- Jul 3, 2026 (3 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/TheAngryPit/TheAngrySkills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from TheAngryPit
- 0.570score
model-capability-router
TheAngryPit
Use when the operator explicitly asks for native Codex model or reasoning-effort routing, including an active standing request.
SkillAFreshness: AClaude Code +9 - 0.570score
openclaw-control-ui-e2e
TheAngryPit
Use when changing or proving OpenClaw Control UI behavior with deterministic Gateway fixtures, browser flows, rendered evidence or interaction profiling.
SkillAFreshness: AClaude Code +9 - 0.570score
openclaw-debugging
TheAngryPit
Use when diagnosing OpenClaw provider, tool-surface, code-mode, streaming, transcript, worker or package-runtime failures.
SkillAFreshness: AClaude Code +9 - 0.570score
openclaw-node-connect
TheAngryPit
Use when explicitly asked to repair one exact OpenClaw browser or native-node connection, including auth, Tailscale routing or pairing.
SkillAFreshness: AClaude Code +9 - 0.569score
openclaw-diagnose-gateway
TheAngryPit
Use when diagnosing OpenClaw Gateway, config, channel, model, SecretRef or listener failures without changing state.
SkillAFreshness: AClaude Code +9 - 0.569score
openclaw-node-inspect-debugger
TheAngryPit
Use when debugging Node.js breakpoints, async hangs, hidden locals, heap retention or CPU hot paths with the inspector.
SkillAFreshness: AClaude Code +9
Cite this page
penpot-mcp-operator skill. Agent Mart. https://agentmart.dev/skills/theangrypit-penpot-mcp-operator (last updated 2026-10-24)