penpot-selfhost-mcp: Agent for Claude Code

.claude/agents/penpot-mcp.md

penpot-mcp is an agent for Claude Code from tkhr-sait/penpot-selfhost-mcp. It costs 80 tokens per session (2,691 once invoked), scanned A, original, MIT.

An agent that carries out multi-step Penpot design operations through Penpot's integration tools. Penpot is a collaborative application for creating interface designs.

In plain words
What is it for?
Use it to create boards, place text, apply styles, manage design tokens, build screens, and verify designs after the Penpot skill has been loaded.
Why use it?
It groups related design actions into larger operations instead of requiring every board, text, style, or token change to be handled separately.

Agent for Claude Code

Written for Claude Code: installed under .claude/. Also seen: model in frontmatter; reads .claude/ paths; mentions Claude Code.

This is tkhr-sait/penpot-selfhost-mcp's own configuration. It tells Claude Code how to work on penpot-selfhost-mcp itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything penpot-selfhost-mcp configures →

Reuse

Borrowing it

Nothing to install: this file belongs to tkhr-sait/penpot-selfhost-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.

Copy the file
curl -O https://raw.githubusercontent.com/tkhr-sait/penpot-selfhost-mcp/main/.claude/agents/penpot-mcp.md
Clone the repo
git clone --depth 1 https://github.com/tkhr-sait/penpot-selfhost-mcp

Made for: Claude Code.

Wrote 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.

agentmods badge for penpot-mcp

README.md
[![agentmods](https://agentmods.dev/badge/agents/tkhr-sait/penpot-selfhost-mcp/penpot-mcp/github.svg)](https://agentmods.dev/agents/tkhr-sait/penpot-selfhost-mcp/penpot-mcp)
Your own site
<a href="https://agentmods.dev/agents/tkhr-sait/penpot-selfhost-mcp/penpot-mcp"><img src="https://agentmods.dev/badge/agents/tkhr-sait/penpot-selfhost-mcp/penpot-mcp/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.

agentmods 80×15 button for penpot-mcp

Your own site · 80×15
<a href="https://agentmods.dev/agents/tkhr-sait/penpot-selfhost-mcp/penpot-mcp"><img src="https://agentmods.dev/badge/agents/tkhr-sait/penpot-selfhost-mcp/penpot-mcp.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 80 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,691 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00080 $0.02691
Opus 5 $0.00040 $0.01345
Sonnet 5 $0.00016 $0.00538
Haiku 4.5 $0.00008 $0.00269

Measured 12d ago against content hash 10671ea2e9cc, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

penpot-mcp 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 12d 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.

.claude/agents/penpot-mcp.md · 146 lines

How it starts

The opening of the file, as written. The whole thing — 146 lines — stays where its author put it; the contents beside it link to each section on GitHub.

ツール名について: 上記 tools: 一覧は Claude Code の命名形式。プラットフォームごとにプレフィックスが異なる(opencode: penpot-official_<tool> 等)。リファレンス・本文中は短縮名(activate, execute_code 等)で参照する。

Penpot MCP 操作の実行エージェント。

前提条件(ランタイムガード)

このエージェントは penpot スキル(SKILL.md)のロード後にのみ使用すること。

呼び出し元のプロンプトに以下が含まれていない場合、作業を開始せずエラーサマリを返すこと:

  • デザイン仕様(カラー、レイアウト、テキスト内容など)
  • 具体的な成果物定義(何を作るか)

スキル未ロードと判断した場合のレスポンス:

  • エラー: スキル未ロード検出。penpot スキルをロードし、SKILL.md のルーティングマップに従ってリファレンスを Read してから再呼び出ししてください。

初期化

必須(毎回)

  1. activate を呼び出してセッション開始(storage ラッパー自動初期化)
  2. .claude/skills/penpot/reference/core/mcp-api.md を Read(API制約・よくあるハマりポイント)

呼び出し元から渡された参考リファレンス

呼び出し元のプロンプトに「参考リファレンス」としてファイルパスが列挙されている場合、それらも Read する。これらはエラー発生時の参照先としても使用する。

Glob で .claude/skills/penpot/reference/{core,howto}/*.md を一覧取得し、ファイル名から作業内容に関連するものを選んで Read する。

実行パターン

画面構築の基本フロー

セクション単位で分割して構築する。複雑画面は骨格→中身→トークン適用と分ける。 1操作1呼び出しの細切れ実行は避けつつ、巨大スクリプトも WebSocket 切断リスクがあるため適度に分割。

呼び出し回数の現実的な目安(WebSocket 切断リトライ含まず):

  • 単一シンプル画面: 1〜3回
  • 単一複雑画面(繰り返し要素あり): 3〜5回
  • 複数画面プロトタイプ(N画面+トークン+テーマ+インタラクション): N×3 + 3〜5回
  • トークン定義のみ: 1〜2回

※ WebSocket 切断リトライで +20〜50% を見込むこと

ヘルパー関数パターン

繰り返すUIパターン(カード、ボタン、リスト項目等)は最初に storage にヘルパー関数として登録し再利用:

storage.createButton = async (label, variant) => { ... };
storage.createCard = async (title, body) => { ... };

ヘルパーは必ず async にする(後述の layoutChild 問題のため)。

テキストスタイルの明示指定(必須): storage.createText() 呼び出し時、fontWeighttextAlign は委譲仕様のテキストコンテンツ一覧・共通構造定義に記載された値を必ず明示的に渡すこと。省略するとデフォルト(regular / left)が適用され、意図した boldsemiboldcenterright 等が反映されない。

// ✕ fontWeight 省略 → regular になる
await storage.createText('MyAccount', { fontSize: 32 });
// ○ 仕様通り明示指定
await storage.createText('MyAccount', { fontSize: 32, fontWeight: 'bold', textAlign: 'center' });

ヘルパー消失対策: WebSocket 切断→自動復帰時、storage のカスタムヘルパーは消失する(ビルトインラッパーは activate 再実行で復元される)。冪等ガード(if (!storage.__myHelpers) { ... storage.__myHelpers = true; })付きでヘルパー登録を独立した execute_code にまとめ、切断後は再実行すること。

Read the full file on GitHub · 146 lines

Changes

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.

  1. 12d ago First seen · 146 lines · 80 tokens per session scan A 10671ea2e9cc

Subscribe to this mod's changes

penpot-mcp is an agent published in the GitHub repository tkhr-sait/penpot-selfhost-mcp (5 stars, last pushed 4mo ago), licensed MIT. It adds 80 tokens to every session and 2,691 once invoked, about $0.0004 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-31.

Related

Other agents, from other repositories

ux-flow-auditor

Use this agent when the user mentions UX flow issues, dead-end views, dismiss traps, missing empty states, broken user journeys, or wants a UX audit of their iOS app. Automatically scans SwiftUI and UIKit code for user journey defects - detects dead ends, dismiss traps, buried CTAs, missing loading/error/empty states…

CharlesWiltgen/Axiom · 190 tokens

ijfw-accessibility-reviewer

Design-phase WCAG 2.1 AA review of UI artefacts: contrast, semantics, focus, ARIA. Trigger per design review pass.

FerroxLabs/ijfw · 37 tokens

Design System Auditor

Design system accessibility auditor. Validates color tokens, CSS custom properties, Tailwind config, and design token files (Style Dictionary, tokens.json) for WCAG AA/AAA contrast compliance. Catches contrast failures at the token source before they reach deployed UI. Also validates focus ring tokens (WCAG 2.4.13…

Community-Access/accessibility-agents · 109 tokens

design

Design system generator — maps product domain to style, palette, typography, anti-patterns. Creates .rune/design-system.md. Use BEFORE any frontend code generation.

Rune-kit/rune · 35 tokens

mobile-ux-optimizer

Use this agent when you need to optimize UI/UX components or interfaces for mobile-first experiences, analyze existing design themes, or ensure mobile usability standards are met. Examples: Context: User has created a desktop-focused component and needs it optimized for mobile. user: 'I've built this navigation…

xbim08/awesome-claude-code-plugins · 0 tokens

frontend-reviewer

Reviews interface, branding and copy. Always verifies against a screenshot and the rendered DOM, never by reading CSS or HTML.

everywan-dev/claude-code-engineering · 28 tokens