個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Open-source online viewer & editor for Pencil.dev .pen files. Fully client-side, free to host.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A wireframe and spec workspace for Pencil.dev .pen files that lives in your own Git repository.
Runs entirely in the browser. No server required. Free to host.
Your designs stay in your repository. Connect a GitHub personal access token, browse your repos and branches, open a .pen, edit it, and commit it back — all from the browser.檢視完整 README ↗A wireframe and spec workspace for Pencil.dev
.penfiles that lives in your own Git repository.Runs entirely in the browser. No server required. Free to host.
Live Demo | Report Bug | Request Feature
.pen storageYour designs stay in your repository. Connect a GitHub personal access token, browse your repos and branches, open a
.pen, edit it, and commit it back — all from the browser.
| Where files live | Your own GitHub repository. This project stores nothing. |
| How it talks to GitHub | Directly from the browser to api.github.com over CORS. There is no backend. |
| Your token | Kept in this browser's localStorage only. It is never sent anywhere but GitHub. |
| History | Every save is a commit. Browse the log for a file, open an older version, restore it. |
| Conflicts | If the branch moved while you were editing, you choose between force-pushing or reloading the latest. |
| Cost | $0. Static files on GitHub Pages plus your own repo. There is no database to grow. |
How to use
.pen in that branch is listed..pen storage --- open, edit and commit .pen files in your own GitHub repository. Browser-only, no backend, token kept in localStorage.VITE_AI_REVIEW_URL is set.?src=<url> query, or bundled samples$token references in fills, strokes, radii and more are resolved from the document's variables blockfill_container, fit_contentJSON (.pen file)
-> parsePenText (zod validation) src/pen/parser.ts
-> substituteVariables ($token) src/pen/variables.ts
-> layoutDocument (flex 2-pass) src/pen/layout/flex.ts
-> PenViewer + renderers (SVG) src/pen/renderer/
npm install
npm run dev # http://localhost:5173
npm test # vitest
npm run build # production build -> dist/
Push to main triggers .github/workflows/deploy.yml automatically.
First-time setup: Repository Settings -> Pages -> Source = GitHub Actions.
Pencil Viewer can optionally generate shareable URLs for .pen files via a Cloudflare Workers + KV backend.
This feature is entirely optional --- the viewer works fully without it. If VITE_SHARE_API_URL is unset, the Share button simply hides itself.
If you want to enable it for your own fork:
workers/share-api/README.mdVITE_SHARE_API_URL to your deployed Worker URL before building the frontendFree tier covers 100k requests/day, which is more than enough for personal or small OSS usage.
| Status | Feature |
|---|---|
| :white_check_mark: | Core renderer (rect, ellipse, line, polygon, path, text, frame, group, icon_font, image) |
| :white_check_mark: | Flex layout (horizontal / vertical / justify / align / gap / padding) |
| :white_check_mark: | Gradient + blur + shadow via SVG <defs> |
| :white_check_mark: | Variable ($token) resolution |
| :white_check_mark: | File loading (D&D, URL, samples) |
| :white_check_mark: | Zoom / pan / frame navigation |
| :white_check_mark: | Responsive mobile layout |
| :white_check_mark: | GitHub Pages deployment (free) |
| :white_check_mark: | Theme switching (light / dark variables) |
| :white_check_mark: | ref (component instance) resolution |
| :white_check_mark: | connection / note node rendering |
| :white_check_mark: | Export to SVG / PNG |
| :white_check_mark: | Collaborative viewing via shared URL (Cloudflare Workers + KV) |
| :white_check_mark: | Vim mode editing |
| :white_check_mark: | Node selection & property editing |
| :white_check_mark: | P2P collaborative editing (WebRTC) |
| :white_check_mark: | MCP / REST API bridge (Claude Code) |
| :white_check_mark: | In-app documentation (i18n) |
| :white_check_mark: | Edit animation effects |
| :white_check_mark: | Layers panel & frame search with minimap |
| :white_check_mark: | Five UI States audit |
| :white_check_mark: | Design document export (Markdown) |
| :white_check_mark: | Vision & Use Cases page |
| :white_check_mark: | Undo / Redo (Figma-equivalent granularity) |
| :white_check_mark: | AI Design Review (Cloudflare Workers AI) |
| :white_check_mark: | Git-backed .pen storage (open / commit / history / restore) |
Pencil Viewer exposes a collab-bridge server that lets external tools --- including Claude Code and plain curl --- read and write nodes on the canvas in real time via WebRTC.
# Start the bridge (requires Node 18+)
cd tools/collab-bridge && npm start
Once running, Claude Code (or any HTTP client) can GET / POST against http://localhost:<port> to query nodes, push edits, and trigger edit animations. See tools/collab-bridge/README.md for the full API reference and setup instructions.
Optional. Pencil Viewer can call a Cloudflare Workers AI (Llama 3.3 70B) reviewer that analyzes your screens for missing UI states, accessibility issues and design consistency, and can generate the missing frames for you. The panel only appears when
VITE_AI_REVIEW_URLis set at build time.
.pen file (drag & drop, sample, or shared URL)Cmd + Shift + P to open the command palette| Mode | What it analyzes | Best for |
|---|---|---|
| Full Review | Layout, typography, color, consistency, navigation, missing screens | Comprehensive audit before handoff |
| Five UI States | Empty / Loading / Error / Partial / Ideal coverage per screen | Catching edge-case screens |
| Accessibility | Contrast, touch targets, text size, WCAG compliance | Inclusive design review |
| Quick Feedback | 3–5 actionable bullet points | Rapid iteration during early sketches |
When the Five UI States review finds a screen missing an Empty / Loading / Error / Partial state, the panel surfaces "🔧 Repair Candidates" — a row of one-click buttons. Click + Empty State on Home, and within seconds the AI generates a brand-new frame in the same visual style as the original (same colors, fonts, layout tokens) and drops it in your canvas right next to the source.
$bg, $primary, $text design tokensThis feature is entirely optional — the viewer works fully without it. The AI Review panel only appears when VITE_AI_REVIEW_URL is set at build time. To enable it on your fork:
# 1. Deploy the Worker
cd workers/ai-review
cp wrangler.toml.example wrangler.toml
npm install
npx wrangler login
npx wrangler deploy
# 2. Set the URL in your repo
gh variable set VITE_AI_REVIEW_URL --body "https://pencil-ai-review.YOUR.workers.dev"
# 3. Trigger a rebuild
git commit --allow-empty -m "ci: enable AI Review"
git push
| Item | Cost |
|---|---|
| Workers Plan | Free tier works (Workers Paid not required) |
| Free quota | 10,000 neurons / day (~50–125 reviews) |
| Beyond free | $0.293 / 1M input tokens · $2.253 / 1M output tokens |
| Typical monthly cost | $0 for personal use |
The version shown in the app header comes from package.json via __APP_VERSION__
(injected at build time by vite.config.ts). Keep it in sync with the git tag:
npm version <patch|minor|major> # bumps package.json and creates a vX.Y.Z tag
git push --follow-tags
gh release create vX.Y.Z --generate-notes
Pushing to main deploys to GitHub Pages automatically; tagging is only for
marking releases.
Pencil.dev の
.penを、自分の Git リポジトリに置いたまま扱うワイヤーフレーム/仕様ワークスペース。完全にブラウザ上で動作。サーバー不要。ホスティング無料。
.pen 保管庫デザインはあなたのリポジトリに置いたまま。 GitHub の Personal Access Token を登録すると、リポジトリとブランチを選び、
.penを開いて編集し、そのままコミットまでブラウザだけで完結します。
| ファイルの置き場所 | あなた自身の GitHub リポジトリ。このプロジェクトは 1 バイトも保管しません。 |
| 通信経路 | ブラウザから api.github.com へ CORS で直接。バックエンドはありません。 |
| トークンの扱い | このブラウザの localStorage にのみ保持。GitHub 以外へは送りません。 |
| 履歴 | 保存はコミット。ファイル単位のログを辿り、過去の版を開いて復元できます。 |
| 競合したとき | 編集中にブランチが進んでいた場合、force push するか最新を取り直すかを選べます。 |
| コスト | $0。GitHub Pages の静的ファイルとあなたの repo だけで動くため、増えるデータベースがありません。 |
使い方
.pen が一覧されます。.pen 保管庫 --- 自分の GitHub リポジトリの .pen を開き、編集し、コミットする。ブラウザ完結、バックエンド無し、トークンは localStorage のみ。VITE_AI_REVIEW_URL 未設定なら無効です。?src=<url> クエリ / バンドルサンプル$token 参照をドキュメントの variables ブロックから自動解決type は破線プレースホルダで表示、全体描画は止まらない.pen ファイルを短縮 URL で共有する機能を Cloudflare Workers + KV で追加できます。
この機能は完全に任意です --- 無効のままでもビューアはすべての機能が使えます。VITE_SHARE_API_URL が未設定ならば Share ボタンは自動的に非表示になります。
フォークした自分のインスタンスで有効化したい場合:
workers/share-api/README.md のセットアップ手順に従うVITE_SHARE_API_URL に設定してフロントエンドを再ビルド無料枠で 10 万リクエスト / 日まで使えるため、個人利用や小規模 OSS なら実質無料で運用できます。
| 状態 | 機能 |
|---|---|
| :white_check_mark: | コアレンダラ(全主要ノード型) |
| :white_check_mark: | Flex レイアウト |
| :white_check_mark: | グラデーション / ぼかし / シャドウ |
| :white_check_mark: | 変数($token)解決 |
| :white_check_mark: | ファイル読み込み(D&D / URL / サンプル) |
| :white_check_mark: | ズーム / パン / フレームナビゲーション |
| :white_check_mark: | レスポンシブモバイル対応 |
| :white_check_mark: | GitHub Pages デプロイ(無料) |
| :white_check_mark: | テーマ切替(light / dark 変数) |
| :white_check_mark: | ref(コンポーネントインスタンス)解決 |
| :white_check_mark: | connection / note ノード描画 |
| :white_check_mark: | SVG / PNG エクスポート |
| :white_check_mark: | URL 共有による共同閲覧(Cloudflare Workers + KV) |
| :white_check_mark: | Vim モード編集 |
| :white_check_mark: | ノード選択 & プロパティ編集 |
| :white_check_mark: | P2P 共同編集(WebRTC) |
| :white_check_mark: | MCP / REST API ブリッジ(Claude Code) |
| :white_check_mark: | アプリ内ドキュメント(i18n) |
| :white_check_mark: | 編集アニメーション |
| :white_check_mark: | レイヤーパネル & フレーム検索 + ミニマップ |
| :white_check_mark: | Five UI States 監査 |
| :white_check_mark: | デザインドキュメントエクスポート(Markdown) |
| :white_check_mark: | ビジョン & ユースケースページ |
| :white_check_mark: | Undo / Redo (Figma 同等の粒度) |
| :white_check_mark: | AI デザインレビュー (Cloudflare Workers AI) |
| :white_check_mark: | git-backed な .pen 保管庫 (開く / コミット / 履歴 / 復元) |
| :construction: | Notion API (ページ直接作成/更新) |
| :construction: | CI 連携 (GitHub Actions デザインレビュー) |
| :x: | Figma インポート (Figma API → .pen 変換) --- 予定なし |
Pencil Viewer は collab-bridge サーバーを提供しており、Claude Code や curl などの外部ツールから WebRTC 経由でキャンバス上のノードをリアルタイムに読み書きできます。
# ブリッジの起動(Node 18+ が必要)
cd tools/collab-bridge && npm start
起動後、Claude Code(または任意の HTTP クライアント)が http://localhost:<port> に対して GET / POST を実行し、ノードの取得・編集・編集アニメーションのトリガーが可能です。詳しい API リファレンスとセットアップ手順は tools/collab-bridge/README.md を参照してください。
Pencil Viewer は Cloudflare Workers AI(Llama 3.3 70B)と連携し、キャンバスから直接 AI によるデザイン分析を行えます。この機能は完全に任意です --- 無効でもビューアの全機能は使えます。
セットアップ:
cd workers/ai-review && cp wrangler.toml.example wrangler.toml && npm install && npx wrangler deploy
デプロイ後、VITE_AI_REVIEW_URL をリポジトリ変数(または .env)に設定してフロントエンドを再ビルドします。
レビューモード:
| モード | 説明 |
|---|---|
| フルレビュー | レイアウト、タイポグラフィ、色、一貫性を包括的に分析 |
| Five UI States | Empty / Loading / Error / Partial / Ideal 状態のカバレッジを確認 |
| アクセシビリティ | コントラスト、タッチターゲット、スクリーンリーダー対応、WCAG 準拠を評価 |
| クイックフィードバック | 素早い反復のための短く実用的なフィードバック |
注意: この機能は任意で、$0(Cloudflare Workers AI 無料枠)、完全にステートレスです --- デザインデータはサーバーに保存されません。
アプリのヘッダに出るバージョンは package.json の値で、vite.config.ts の
define がビルド時に __APP_VERSION__ へ埋め込んでいる。git タグと
ずれないよう npm version で一括更新する。
npm version <patch|minor|major> # package.json を更新して vX.Y.Z タグを作る
git push --follow-tags
gh release create vX.Y.Z --generate-notes
main への push で GitHub Pages へ自動デプロイされる。タグはリリースの
目印としてのみ使う。
把 Pencil.dev 的
.pen文件放在你自己的 Git 仓库里使用的线框图 / 规格工作区。完全在浏览器中运行。无需服务器。免费托管。
.pen 存储设计稿始终留在你自己的仓库里。 填入 GitHub 个人访问令牌后,就能选择仓库与分支、打开
.pen、编辑并直接提交,全程只在浏览器里完成。
| 文件存放位置 | 你自己的 GitHub 仓库。本项目不保存任何数据。 |
| 通信方式 | 浏览器通过 CORS 直连 api.github.com,没有后端。 |
| 令牌的处理 | 只保存在本浏览器的 localStorage,除 GitHub 外不会发往任何地方。 |
| 历史记录 | 每次保存都是一次提交。可按文件查看日志、打开旧版本并恢复。 |
| 发生冲突时 | 若编辑期间分支已更新,可选择强制推送或重新拉取最新版本。 |
| 成本 | $0。只有 GitHub Pages 上的静态文件和你自己的仓库,没有会不断变大的数据库。 |
使用步骤
.pen 都会列出。.pen 存储 --- 在你自己的 GitHub 仓库中打开、编辑并提交 .pen。纯浏览器实现,无后端,令牌只存在 localStorage。VITE_AI_REVIEW_URL 时不启用。?src=<url> 查询参数 / 内置示例variables 块中的 $token 引用(填充、描边、圆角等)可通过 Cloudflare Workers + KV 为 .pen 文件生成可共享的短链接。
此功能完全可选 --- 不启用也不影响查看器的任何功能。如未设置 VITE_SHARE_API_URL,Share 按钮会自动隐藏。
如果你 Fork 后想在自己的实例上启用:
workers/share-api/README.md 的步骤操作VITE_SHARE_API_URL,然后重新构建前端免费套餐每日 10 万请求,个人使用或小型 OSS 项目完全够用。
| 状态 | 功能 |
|---|---|
| :white_check_mark: | 核心渲染器(所有主要节点类型) |
| :white_check_mark: | Flex 布局 |
| :white_check_mark: | 渐变 / 模糊 / 阴影 |
| :white_check_mark: | 变量($token)解析 |
| :white_check_mark: | 文件加载(拖放 / URL / 示例) |
| :white_check_mark: | 缩放 / 平移 / 画框导航 |
| :white_check_mark: | 响应式移动端布局 |
| :white_check_mark: | GitHub Pages 部署(免费) |
| :white_check_mark: | 主题切换(亮色 / 暗色变量) |
| :white_check_mark: | ref(组件实例)解析 |
| :white_check_mark: | connection / note 节点渲染 |
| :white_check_mark: | SVG / PNG 导出 |
| :white_check_mark: | URL 共享协同查看(Cloudflare Workers + KV) |
| :white_check_mark: | Vim 模式编辑 |
| :white_check_mark: | 节点选择与属性编辑 |
| :white_check_mark: | P2P 协同编辑(WebRTC) |
| :white_check_mark: | MCP / REST API 桥接(Claude Code) |
| :white_check_mark: | 应用内文档(i18n) |
| :white_check_mark: | 编辑动画效果 |
| :white_check_mark: | 图层面板与画框搜索 + 小地图 |
| :white_check_mark: | Five UI States 审计 |
| :white_check_mark: | 设计文档导出(Markdown) |
| :white_check_mark: | 愿景与用例页面 |
| :white_check_mark: | 撤销 / 重做(Figma 等效粒度) |
| :white_check_mark: | AI 设计审查(Cloudflare Workers AI) |
| :white_check_mark: | 基于 Git 的 .pen 存储(打开 / 提交 / 历史 / 恢复) |
| :construction: | Notion API(直接创建/更新页面) |
| :construction: | CI 集成(GitHub Actions 设计审查) |
| :x: | Figma 导入(Figma API → .pen 转换) --- 暂无计划 |
Pencil Viewer 提供 collab-bridge 服务器,允许 Claude Code 和 curl 等外部工具通过 WebRTC 实时读写画布上的节点。
# 启动桥接(需要 Node 18+)
cd tools/collab-bridge && npm start
启动后,Claude Code(或任意 HTTP 客户端)可对 http://localhost:<port> 发送 GET / POST 请求,查询节点、推送编辑、触发编辑动画。完整的 API 参考和配置说明请参阅 tools/collab-bridge/README.md。
Pencil Viewer 集成了 Cloudflare Workers AI(Llama 3.3 70B),可直接从画布进行 AI 驱动的设计分析。此功能完全可选 --- 不启用也不影响查看器的任何功能。
设置:
cd workers/ai-review && cp wrangler.toml.example wrangler.toml && npm install && npx wrangler deploy
部署后,在仓库变量(或 .env)中设置 VITE_AI_REVIEW_URL,然后重新构建前端。
审查模式:
| 模式 | 说明 |
|---|---|
| 全面审查 | 涵盖布局、排版、颜色和一致性的综合设计分析 |
| Five UI States | 检查 Empty / Loading / Error / Partial / Ideal 状态的覆盖情况 |
| 无障碍性 | 评估对比度、触摸目标、屏幕阅读器友好性和 WCAG 合规性 |
| 快速反馈 | 用于快速迭代的简短可操作反馈 |
注意: 此功能可选,$0 成本(Cloudflare Workers AI 免费套餐),完全无状态 --- 不会在服务器上存储任何设计数据。
| :construction: | Notion API (direct page creation / update) |
| :construction: | CI Integration (GitHub Actions design review) |
| :x: | Figma Import (Figma API → .pen conversion) --- not planned |