本文へ移動
cccskills
無料GitHub で公開日本語紹介

Excalidraw

アイデアや構成を、手描き風のExcalidraw図としてライブキャンバスに描き、既存の図の整理やMermaidからの変換も行います。

原文原文の説明を見る

Sketches ideas as hand-drawn Excalidraw diagrams on a live local canvas via the pinned mcp-excalidraw-server CLI, with mermaid conversion, file I/O, and share links. USE WHEN excalidraw, whiteboard, canvas, sketch a diagram, draw this on a canvas, hand-drawn diagram, draw my idea, architecture sketch, live canvas, put this on the whiteboard, read my canvas, organize my whiteboard, .excalidraw file, mermaid to excalidraw. NOT FOR polished images (Art), web UI (Webdesign), video (HyperFrames).

danielmiessler/LifeOSスター 19,635(GitHub 19,635 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • アイデアを手描き風の図にしたいとき
  • ラフなホワイトボードを整理したいとき
  • Mermaid図をExcalidrawに変換したいとき
  • 画像付きの図を書き出したいとき

日本語での紹介

できること

アイデアや構成を、手描き風の図としてExcalidrawのライブキャンバスに描きます。既存のキャンバスや.excalidrawファイルを読み取り、要素を整理したり、Mermaid記法の図を変換したりできます。図はファイルへ書き出せるほか、画像を含まない場合は共有リンクを作成できます。画像を含む図は、画像データを保てる.excalidrawファイルなどで受け渡します。

こんなときに便利

考えをホワイトボード上で整理したいときや、システム構成・手順をラフな図にしたいときに使えます。すでにある図を読み取って、まとまりや関係が分かるように整えたい場合にも向いています。

使い方の例

  • 「この3段階の流れを図にして」
  • 「キャンバスに書いたアイデアを整理して」
  • 「このMermaid図をExcalidrawに変換して」

注意点

mcp-excalidraw-serverを利用するCLIが必要です。ライブキャンバスはローカルで動作し、表示にはブラウザーでキャンバスを開きます。画像を含む図は共有リンクではなく、.excalidrawファイルなどで渡します。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

資料チェック

SKILL.md の記述から、注意が要る操作と導入の前提を AI が確認しました。点数は実際に動かした結果(実行検証)だけで付けています。

安全面送信・削除・コマンド実行などの扱いが明示されているか
B一部不足既存図の変更前のスナップショットや空キャンバスへの注意がありますが、操作に伴う危険も記載されています。
導入のしやすさ必要なツールや API キーが少ないか、書かれているか
B一部不足bun、固定版CLI、ブラウザータブが必要ですが、詳細な導入手順は示されていません。

点数には入れていません。 2026年10月28日 時点で AI(OpenAI Codex)が判定しました。目安なので、入れる前に原文も確認してください。

評価が違うと思ったら、見直しを依頼する

どの項目が、なぜ違うと思うかを書いてください。ログインは不要です。内容を SKILL.md と照らし合わせて評価を作り直し、この欄に反映します。

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

含まれるファイル(8)

  • SKILL.md9.7 KB
  • Intents/RefineDiagram.md2.2 KB
  • Intents/SketchDiagram.md3.7 KB
  • References/Cheatsheet.md5.9 KB
  • Tools/AddImage.ts6.2 KB
  • Tools/Canvas.ts765 B
  • Tools/ContrastCheck.ts4.3 KB
  • Tools/Share.ts2.8 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Excalidraw

Drives a live Excalidraw canvas from the command line via the community mcp-excalidraw-server package (MIT), version-pinned through Tools/Canvas.ts. The canvas runs locally; the user watches the diagram draw itself at the canvas URL and can hand-edit the moment the model stops. Two directions: model → canvas (sketch ideas) and canvas → model (describe reads a human's rough canvas back as structured data).

Ideal State

  • Every diagram left behind is readable by the person it is for: no truncated or overlapping text, label style set at creation, and Tools/ContrastCheck.ts exiting 0 against the real ground, which holds in light and dark themes alike.
  • What leaves the machine is the form that renders correctly: a link from Tools/Share.ts for a scene without images, the exported .excalidraw file (or a PNG flattened from it) for a scene carrying screenshots, and never a local canvas screenshot as final art.
  • The canvas is driven only through Tools/Canvas.ts, so the pinned package version and port hold, and the skill registers no MCP server.
  • A human's canvas is read back faithfully and nothing they drew is lost: risky changes are snapshotted first, and the detached server is stopped when the drawing work is done unless the user keeps using it.

Intent Routing

IntentTriggerFile
SketchDiagram"sketch a diagram", "draw this", "put this on a canvas"Intents/SketchDiagram.md
RefineDiagram"refine the diagram", "read my canvas", "organize my whiteboard", edit an existing .excalidrawIntents/RefineDiagram.md
FileRead when
References/Cheatsheet.mdwriting element JSON or using a command the intents do not show: full command list, element format, palette and sizing, layout anti-patterns, quality checklist, error recovery, raw REST API

Data & Config

User customizations live at <configRoot>/LIFEOS/USER/CUSTOMIZATIONS/SKILLS/Excalidraw/ (configRoot is $CLAUDE_CONFIG_DIR when set, else ~/.claude). When the directory exists, its PREFERENCES.md (default export directory, preferred palette, canvas port override) applies; when it is absent, the defaults stand.

Quick Reference

  • Tool: bun ~/.claude/skills/Excalidraw/Tools/Canvas.ts <command> [...] — pins mcp-excalidraw-server@2.0.0 and port 3579; all commands pass through.
  • Canvas URL: http://127.0.0.1:3579 — the user opens this to watch live and hand-edit. Any canvas-touching command auto-starts the server.
  • Contrast gate: bun ~/.claude/skills/Excalidraw/Tools/ContrastCheck.ts [--bg <hex>] — deterministic WCAG check of every text element against its effective background; MUST exit 0 before any diagram is declared done.
  • Embed an image: bun ~/.claude/skills/Excalidraw/Tools/AddImage.ts <image> --x N --y N [--w N --h N] or --replace <shapeId> to fit a screenshot inside an existing box. Registers the bytes as a data-URL file and adds an image element; the file travels inside the exported .excalidraw. Use for real screenshots as diagram nodes (e.g. a dashboard capture as the "Agents Dashboard" node).
  • Black-canvas share: bun ~/.claude/skills/Excalidraw/Tools/Share.ts <scene.excalidraw> [--bg <hex>] — uploads to excalidraw.com with the canvas background baked in (default #111114). Use it, never the CLI share (which hardcodes a white canvas). The shared-link editor does not reliably honor the file's viewBackgroundColor alone, so a non-white scene also carries a backdrop rectangle (Gotchas).
  • Exit codes: 0 ok, 1 error, 2 usage, 3 canvas unreachable, 4 browser tab required.
  • Files: exported .excalidraw files open at excalidraw.com (File → Open) or in the Excalidraw VS Code extension. A .excalidraw.md export targets the Obsidian plugin's native format.

Gotchas

  • Label styling is set at CREATION, deterministically — the export/share expansion gives each bound label its shape's strokeColor and the shape's fontSize prop (default 16). So: put fontSize: 20 on labeled shapes, choose stroke colors that read on the fill, and give solid-color focal boxes a PALE fill with a saturated stroke (never saturated fill + dark stroke, which makes the label invisible). No post-add patching, no free-text label workaround — free labels detach from shapes and were retracted after live use (2026-08-26). The viewer's dark mode inverts the whole canvas, so colored text on colored fill can vanish even when a light-mode screenshot looks fine; run Tools/ContrastCheck.ts before declaring done. Inversion preserves contrast ratios, so a passing check holds in both themes.
  • Embedded images do NOT survive an anonymous excalidraw.com share LINK — they render as a broken-image placeholder. Excalidraw stores image bytes in a separate encrypted file backend that the #json= link path doesn't populate; only the scene travels. Images DO survive the exported .excalidraw FILE (open it via File→Open / the VS Code extension / desktop app and the picture renders). So a diagram carrying screenshots ships as the FILE, or as a flattened PNG rendered from the file — never as a share link.
  • Loading a share link on excalidraw.com shows a "Load from link" dialog — the user must click "Replace my content" (their previous excalidraw.com scene is overwritten; mention it when handing over a link).
  • The bundled live-canvas app mismeasures API-created text (upstream bug, v2.0.0) — the interactive layer renders text at ~2× its stored size, clipping bound AND free labels, and its screenshot/export renders can be mangled too. The scene DATA stays correct: excalidraw.com renders the same elements perfectly. Until fixed upstream: treat the local canvas as watch-it-draw preview only; the editing surface and any final render is excalidraw.com via Tools/Share.ts (or the exported .excalidraw file). Never ship a local screenshot as final art without eyeballing it.
  • Fresh browser tabs race the initial scene load and can show an EMPTY canvas while the server holds the full scene. Repaint every connected tab with export + import --replace (full rebroadcast). Warn the user never to click the app's "Sync to Backend" button in a blank tab — it pushes the empty scene over the server (snapshot first regardless).
  • Always go through Tools/Canvas.ts, never bare bunx mcp-excalidraw-server — the wrapper pins version and port; a bare invocation on default port 3000 collides with dev servers and drifts on @latest.
  • Screenshots, mermaid, image export, and viewport need an open browser tab (exit code 4) — the rendering runs in the frontend. Element CRUD, describe, export/import work headless. For automated visual verification, open the canvas URL via the browser-automation skill; otherwise ask the user to open it.
  • The scene background is not controllable from the CLI — import does not apply appState.viewBackgroundColor (verified). For a non-white ground, draw an explicit locked backdrop rectangle first (created first = behind everything) and pass its color to ContrastCheck.ts --bg.
  • Never put text on a large background-zone rectangle — the bound label centers mid-zone, overlapping everything inside, and cannot be repositioned. Use a free-standing text element at the zone's top-left instead.
  • zsh echo mangles element JSON — it expands \n inside strings. Write specs to a file and pass the path, or pipe with printf '%s'.
  • Duplicate text elements after clear/re-add — the frontend auto-sync can re-inject cached bound labels. Find them with query --type text (look for containerId), delete, let sync settle.
  • fontFamily must be a string ("1"–"8" or a name like "helvetica"); a bare number fails.
  • Raw REST uses a stricter format than CLI (label: {text}, start/end: {id}) — only relevant when POSTing to the API directly.
  • stop when the session's drawing work is done if the user won't keep using the canvas — the server runs detached and survives the session.
  • This skill deliberately registers no MCP server — the same package ships one, but the LifeOS standard is CLI-first; don't add it to any mcpServers block, and never run the upstream install-skill command (it writes a non-canonical skill dir).

Examples

Example 1: Idea to diagram

User: "Sketch the three-stage pipeline as a diagram"
→ SketchDiagram intent
→ The live canvas URL with the pipeline drawn, ContrastCheck passing, and an exported .excalidraw file or verified share link

Example 2: Structure a rough canvas

User: "I dumped ideas on the canvas — organize them"
→ RefineDiagram intent
→ The user's own elements, clustered into labelled zones and connected with bound arrows, visible live on the canvas

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

AnnualReports

無料概要あり

複数ベンダーの年次サイバーセキュリティ報告書を探して取得し、脅威やランサムウェア、侵害統計の傾向を出典付きで比較・分析します。

  • 脅威レポートをカテゴリ別に探したいとき
  • 特定ベンダーの報告書を取得したいとき
  • ランサムウェア動向を複数社で比較したいとき
danielmiessler/LifeOS2万2026年10月28日 更新

ApertureOscillation

無料概要あり

個別の機能や部品の設計と、システム全体の目的を同じ問いで比較し、両者の食い違い、適切な実装範囲、全体との整合性を3段階で整理するスキルです。

  • サービスやライブラリの分割判断
  • 機能要求と製品方針を比較したいとき
  • 新しい部品と既存システムの整合性確認
danielmiessler/LifeOS2万2026年10月28日 更新

Aphorisms

無料概要あり

文章のテーマに合う格言や引用を探し、著者・出典と選定理由を添えて提案します。引用の追加、思想家の調査、利用履歴の管理を通じて、同じ引用の繰り返しも防ぎます。

  • ニュースレター向けの引用探し
  • 出典付きの引用を重複なく保存
  • 思想家の言葉をテーマ別に調査
danielmiessler/LifeOS2万2026年10月28日 更新

Art

無料概要あり

ブログの挿絵や技術図解、比較図、マンガ、アイコンなどを用途別の手順で制作します。形式に合う構図や配色を組み立て、確認用の画像を出力します。

  • ブログの見出し画像を作りたいとき
  • システムの仕組みを図解したいとき
  • 比較や時系列を可視化したいとき
danielmiessler/LifeOS2万2026年10月28日 更新

ArtDirection

無料概要あり

画像や映像、スライド、サイト画面の品質を複数の判定役で評価し、修正点の整理から基準を満たした成果物の引き渡しまで進めます。

  • 画像の修正点を優先順に整理したいとき
  • 映像やスライドを基準に沿って評価したいとき
  • 公開前に見た目が基準を満たすか確認したいとき
danielmiessler/LifeOS2万2026年10月28日 更新

ArXiv

無料概要あり

arXivの論文をテーマ・分野・論文IDで探し、著者や要旨、リンクをまとめます。新着論文の確認や、用意されている場合はAlphaXivのAI生成概要の取得にも対応します。

  • AI・機械学習の新着論文の確認
  • 特定テーマの論文を探したいとき
  • 論文IDやarXivのURLで照会
danielmiessler/LifeOS2万2026年10月28日 更新

danielmiessler のスキルをすべて見る

このスキルの問題を報告する