jpskill.com
📦 その他 コミュニティ

lark-whiteboard-cli

ユーザーが飛書ホワイトボードで、構成図やフローチャートなどの図表作成を希望した際に、whiteboard-cli を活用して図表のレイアウト設計をサポートするSkill。

📜 元の英語説明(参考)

当用户要求或使用飞书画板绘制架构图、流程图、思维导图、时序图或其他可视化图表时使用此 skill,作为使用 whiteboard-cli 设计图表布局的指南

🇯🇵 日本人クリエイター向け解説

一言でいうと

ユーザーが飛書ホワイトボードで、構成図やフローチャートなどの図表作成を希望した際に、whiteboard-cli を活用して図表のレイアウト設計をサポートするSkill。

※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。

⚡ おすすめ: コマンド1行でインストール(60秒)

下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。

🍎 Mac / 🐧 Linux
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o lark-whiteboard-cli.zip https://jpskill.com/download/19593.zip && unzip -o lark-whiteboard-cli.zip && rm lark-whiteboard-cli.zip
🪟 Windows (PowerShell)
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/19593.zip -OutFile "$d\lark-whiteboard-cli.zip"; Expand-Archive "$d\lark-whiteboard-cli.zip" -DestinationPath $d -Force; ri "$d\lark-whiteboard-cli.zip"

完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。

💾 手動でダウンロードしたい(コマンドが難しい人向け)
  1. 1. 下の青いボタンを押して lark-whiteboard-cli.zip をダウンロード
  2. 2. ZIPファイルをダブルクリックで解凍 → lark-whiteboard-cli フォルダができる
  3. 3. そのフォルダを C:\Users\あなたの名前\.claude\skills\(Win)または ~/.claude/skills/(Mac)へ移動
  4. 4. Claude Code を再起動

⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。

🎯 このSkillでできること

下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。

📦 インストール方法 (3ステップ)

  1. 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
  2. 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
  3. 3. 展開してできたフォルダを、ホームフォルダの .claude/skills/ に置く
    • · macOS / Linux: ~/.claude/skills/
    • · Windows: %USERPROFILE%\.claude\skills\

Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。

詳しい使い方ガイドを見る →
最終更新
2026-05-18
取得日時
2026-05-18
同梱ファイル
7

📖 Skill本文(日本語訳)

※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。

[Skill 名] lark-whiteboard-cli

[!NOTE] 環境依存:ホワイトボードの描画には、@larksuite/whiteboard-cli(ホワイトボード Node.js CLI ツール)と lark-cli(LarkSuite CLI ツール)が必要です。 実行に失敗した場合は、手動でインストールしてから再試行してください:npm install -g @larksuite/whiteboard-cli@^0.2.0

[!IMPORTANT] npm install を実行して新しい依存関係をインストールする際は、必ずユーザーの同意を得てください!

Workflow

これはホワイトボードであり、ウェブページではありません。 ホワイトボードは無限のキャンバス上に要素を自由に配置するもので、Flex レイアウトはオプションの拡張機能です。

Step 1: ルーティング & 知識の読み込み
  - レンダリングパスを判断(ルーティングテーブル参照):Mermaid か DSL か?
  - 対応する scene ガイドを読み込む — 構造的特徴とレイアウト戦略を理解する
  - レイアウト戦略(以下のクイック判断参照)と構築方法を決定する
  - references/ コアモジュールを読み込む — 構文、レイアウト、配色、組版、コネクタ

Step 2: 完全な DSL を生成(色を含む)
  - content.md に従って情報量とグループ化を計画する
  - layout.md に従ってレイアウトモードと間隔を選択する
  - 図をより直感的にするためにアイコンの使用を推奨します。`npx -y @larksuite/whiteboard-cli@^0.2.0 --icons` を実行して利用可能なアイコンを確認し、適切なアイコンを選択してください。ただし、過度に使用したり、すべての図にアイコンを使用したりせず、図の種類と内容に応じてアイコンを使用するかどうかを選択してください。
  - style.md に従って色付けする(ユーザーが指定しない場合はデフォルトのクラシックカラーパレットを使用)
  - schema.md 構文に従って完全な JSON を出力する
  - コネクタは connectors.md を、組版は typography.md を参照する

  注意:一部の図形(フィッシュボーン/フライホイール/棒グラフ/折れ線グラフなど)は、scene ガイドのスクリプトテンプレートに従って .js スクリプトを記述し、JSON を生成する必要があります:
    1. 成果物ディレクトリ ./diagrams/YYYY-MM-DDTHHMMSS/ を作成する
    2. スクリプトを diagram.gen.js として保存し、node diagram.gen.js を実行して diagram.json を出力する
    3. 出力された diagram.json を使用して Step 3 に進む

Step 3: レンダリング & レビュー → 納品
  - レンダリング前に自己チェック(以下のチェックリスト参照)
  - PNG をレンダリングし、以下を確認する:
    ・情報が完全か?レイアウトは適切か?配色は調和しているか?
    ・テキストは途切れていないか?コネクタは交差していないか?
  - 問題がある場合 → 症状表に従って修正 → 再レンダリング(最大 2 ラウンド)
  - 2 ラウンド後も深刻な問題がある場合 → Mermaid パスをフォールバックとして検討する
  - 問題がない場合 → 納品:
    ・ユーザーが飛書へのアップロードを要求した場合 → 以下の「飛書ホワイトボードへのアップロード」セクションの説明を参照
    ・ユーザーが指定しない場合 → PNG 画像をユーザーに表示

レイアウト戦略のクイック判断(詳細は references/layout.md を参照):

まずメインレイアウトを決定し、次にサブレイアウトを決定します。構造化情報には Flex を優先し、関係リンクには Dagre を優先し、柔軟な配置には絶対配置を使用します。

Dagre / Flex の具体的な境界、危険なパターン、混合レイアウトの原則については、references/layout.md を統一的な基準とします。scene ファイルはシーンの違いのみを記述し、一般的なレイアウトルールを重複して定義しません。

構築方法は強い制約です:scene ガイドが「スクリプト生成」を要求する場合、まずスクリプト(.js)を記述し、node を実行して JSON ファイルを出力する必要があります。絶対配置のシナリオ(フィッシュボーン図、フライホイール図、棒グラフ、折れ線グラフなど)の座標は数学的計算が必要であり、JSON を直接手書きするとノードの重なりやコネクタの貫通が非常に発生しやすくなります。

レンダリングパスの選択(DSL or Mermaid)

図表タイプ パス 理由
マインドマップ Mermaid 放射状構造の自動レイアウト
シーケンス図 Mermaid 参加者+メッセージの自動配置
クラス図 Mermaid クラス関係の自動レイアウト
円グラフ Mermaid Mermaid のネイティブサポート
その他すべてのタイプ DSL スタイルとレイアウトの正確な制御

ルーティングルール

  1. 自動 Mermaid:マインドマップ、シーケンス図、クラス図、円グラフ → デフォルトで Mermaid パス
  2. 明示的な Mermaid:ユーザー入力に Mermaid 構文が含まれる → Mermaid パス
  3. DSL パス:その他すべてのタイプ → まずコアモジュールを読み込み、次に対応するシーンガイドを読み込む

Mermaid パスscenes/mermaid.md を参照して .mmd ファイルを記述し、DSL モジュールはスキップします。 DSL パス:Workflow の 3 ステップに従って実行します。


モジュールインデックス

コア参照(DSL パスでは必読)

モジュール ファイル 説明
DSL 構文 references/schema.md ノードタイプ、属性、サイズ値
コンテンツ計画 references/content.md 情報抽出、密度決定、コネクタの事前判断
レイアウトシステム references/layout.md グリッド方法論、Flex マッピング、間隔ルール
組版ルール references/typography.md フォントサイズ階層、配置、行間
コネクタシステム references/connectors.md トポロジー計画、アンカーポイントの選択
配色システム references/style.md マルチカラーパレット、視覚階層

シーンガイド(タイプ別に1つ選択して読む)

図表タイプ ファイル 適用シーン
アーキテクチャ図 scenes/architecture.md 階層型アーキテクチャ、マイクロサービスアーキテクチャ
組織図 scenes/organization.md 会社組織、ツリー階層
スイムレーン図 scenes/swimlane.md 役割横断プロセス、システム間インタラクションプロセス、エンドツーエンドリンク
比較図 scenes/comparison.md 提案比較、機能マトリックス
フィッシュボーン図 scenes/fishbone.md 因果分析、根本原因分析
棒グラフ scenes/bar-chart.md 棒グラフ、横棒グラフ
折れ線グラフ scenes/line-chart.md 折れ線グラフ、トレンドグラフ
ツリーマップ scenes/treemap.md 矩形ツリーマップ、階層比率
ファネル図 scenes/funnel.md 変換ファネル、販売ファネル
ピラミッド図 scenes/pyramid.md 階層構造、ニーズ階層
循環/フライホイール図 scenes/flywheel.md 成長フライホイール、クローズドループリンク
マイルストーン scenes/milestone.md タイムライン、バージョン進化
フローチャート scenes/flowchart.md ビジネスフロー、ステートマシン、条件判断を含むリンク
Mermaid scenes/mermaid.md マインドマップ、シーケンス図、クラス図、円グラフ

ファイル成果物仕様

描画のたびに、./diagrams/ の下に現在の時刻(YYYY-MM-DDTHHMMSS 形式)でサブディレクトリを作成します。ディレクトリ内のファイル名は固定です。ユーザーが保存パスを指定した場合は、ユーザーの指定に従います。

./diagrams/
  2026-03-27T143000/      ← 時間に基づいて自動作成、命名不要
    diagram.json          ← DSL(CLI 入力)
    diagram.gen.js        ← 座標計算スクリプト(スクリプト構築方式のみ)
    diagram.png           ← 最終画像
    diagram.mmd           ← Mermaid ソースコード(Mermaid パスのみ)

CLI コマンド

利用可能なアイコンの表示

npx -y @larksuite/whiteboard-cli@^0.2.0 --icons

レンダリング

npx -y @larksuite/whiteboard-cli@^0.2.0 -i ./diagrams/2026-03-27T143000/diagram.json -o ./diagrams/2026-03-27T143000/diagram.png    # DSL
npx -y @larksuite/whiteboard-cli@^0.2.0 -i ./diagrams/2026-03-27T143000/diagram.mmd -o ./diagrams/2026-03-27T143000/diagram.png     # Mermaid

飛書ホワイトボードへのアップロード

アップロードには飛書認証が必要です。認証または権限エラーが発生した場合は、../lark-shared/SKILL.md を読んでログインと権限処理について理解してください。

ステップ1:ホワイトボードトークンの取得

ユーザーが提供したもの トークンの取得方法
ホワイトボードトークン(XXX 直接使用
ドキュメント URL または doc_id、ドキュメント内に既存のホワイトボードがある場合 lark-cli docs +fetch --doc <URL> --as user を実行し、返された <whiteboard token=”XXX”/> からトークンを抽出します
ドキュメント URL または doc_id、新しいホワイトボードを作成する必要がある場合 lark-cli docs +update --doc <doc_id> --mode append --markdown '<whiteboard type=”blank”></whiteboard>' --as user を実行し、応答の data.board_tokens[0] からトークンを取得します

飛書ドキュメントの作成、読み取りなどの詳細な操作については、lark-doc skill ../lark-doc/SKILL.md を参照してください。

ステップ2:アップロード

[!CAUTION] MANDATORY PRE-FLIGHT CHECK (アップロード前の強制インターセプトチェック) 既存のホワイトボードトークンにコンテンツを書き込む場合、アップロードコマンドを直接実行することは絶対に禁止です!以下の2つのステップを厳守する必要があります: 強制的なドライランの実行(状態検出) まず、コマンドに --overwrite --dry-run パラメータを追加して、ホワイトボードの現在の状態を検出する必要があります。コマンド例:


npx -y @larksuite/whiteboard-cli@^0.2.0 --to openapi -i <入力ファイル> --format json | lark-cli
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開

[!NOTE] 环境依赖:绘制画板需要 @larksuite/whiteboard-cli(画板 Node.js CLI 工具),以及 lark-cli(LarkSuite CLI 工具)。 如果执行失败,手动安装后重试:npm install -g @larksuite/whiteboard-cli@^0.2.0

[!IMPORTANT] 执行 npm install 安装新的依赖前,务必征得用户同意!

Workflow

这是画板,不是网页。 画板是无限画布上自由放置元素,flex 布局是可选增强。

Step 1: 路由 & 读取知识
  - 判断渲染路径(见路由表):Mermaid 还是 DSL?
  - 读对应 scene 指南 — 了解结构特征和布局策略
  - 确定布局策略(见下方快速判断)和构建方式
  - 读 references/ 核心模块 — 语法、布局、配色、排版、连线

Step 2: 生成完整 DSL(含颜色)
  - 按 content.md 规划信息量和分组
  - 按 layout.md 选择布局模式和间距
  - 推荐使用图标让图表更直观,运行 `npx -y @larksuite/whiteboard-cli@^0.2.0 --icons` 查看可用图标,选取合适的图标, 但不要过度使用或者所有图表都用图标, 根据图表类型和内容选择是否使用图标
  - 按 style.md 上色(用户没指定时用默认经典色板)
  - 按 schema.md 语法输出完整 JSON
  - 连线参考 connectors.md,排版参考 typography.md

  注意:部分图形(鱼骨/飞轮/柱状/折线等)要按 scene 指南的脚本模板写 .js 脚本生成 JSON:
    1. 创建产物目录 ./diagrams/YYYY-MM-DDTHHMMSS/
    2. 将脚本保存为 diagram.gen.js,执行 node diagram.gen.js 产出 diagram.json
    3. 用产出的 diagram.json 进入 Step 3

Step 3: 渲染 & 审查 → 交付
  - 渲染前自查(见下方检查清单)
  - 渲染 PNG,检查:
    · 信息完整?布局合理?配色协调?
    · 文字无截断?连线无交叉?
  - 有问题 → 按症状表修复 → 重新渲染(最多 2 轮)
  - 2 轮后仍有严重问题 → 考虑走 Mermaid 路径兜底
  - 没问题 → 交付:
    · 用户要求上传飞书 → 见下方”上传飞书画板”章节中的说明
    · 用户未指定 → 展示 PNG 图片给用户

布局策略快速判断(详见 references/layout.md):

先定主布局,再定子布局:结构化信息优先用 Flex,关系链路优先用 Dagre,灵活定位用绝对布局。

涉及 Dagre / Flex 的具体边界、危险模式、混合布局原则,统一以 references/layout.md 为准;scene 文件只描述场景差异,不重复定义通用布局规则。

构建方式是强约束:当 scene 指南要求"脚本生成"时,必须先写脚本(.js)并用 node 执行来产出 JSON 文件。绝对定位场景(鱼骨图、飞轮图、柱状图、折线图等)的坐标需要数学计算,直接手写 JSON 极易导致节点重叠或连线穿模。

渲染路径选择(DSL or Mermaid)

图表类型 路径 理由
思维导图 Mermaid 辐射结构自动布局
时序图 Mermaid 参与方+消息自动排列
类图 Mermaid 类关系自动布局
饼图 Mermaid Mermaid 原生支持
其他所有类型 DSL 精确控制样式和布局

路由规则

  1. 自动 Mermaid:思维导图、时序图、类图、饼图 → 默认走 Mermaid
  2. 显式 Mermaid:用户输入包含 Mermaid 语法 → 走 Mermaid
  3. DSL 路径:其他所有类型 → 先读核心模块,再读对应场景指南

Mermaid 路径:参考 scenes/mermaid.md 编写 .mmd 文件,跳过 DSL 模块。 DSL 路径:按 Workflow 3 步执行。


模块索引

核心参考(DSL 路径必读)

模块 文件 说明
DSL 语法 references/schema.md 节点类型、属性、尺寸值
内容规划 references/content.md 信息提取、密度决策、连线预判
布局系统 references/layout.md 网格方法论、Flex 映射、间距规则
排版规则 references/typography.md 字号层级、对齐、行距
连线系统 references/connectors.md 拓扑规划、锚点选择
配色系统 references/style.md 多色板、视觉层级

场景指南(按类型选读一个)

图表类型 文件 适用场景
架构图 scenes/architecture.md 分层架构、微服务架构
组织架构图 scenes/organization.md 公司组织、树形层级
泳道图 scenes/swimlane.md 跨角色流程、跨系统交互流程、端到端链路
对比图 scenes/comparison.md 方案对比、功能矩阵
鱼骨图 scenes/fishbone.md 因果分析、根因分析
柱状图 scenes/bar-chart.md 柱状图、条形图
折线图 scenes/line-chart.md 折线图、趋势图
树状图 scenes/treemap.md 矩形树图、层级占比
漏斗图 scenes/funnel.md 转化漏斗、销售漏斗
金字塔图 scenes/pyramid.md 层级结构、需求层次
循环/飞轮图 scenes/flywheel.md 增长飞轮、闭环链路
里程碑 scenes/milestone.md 时间线、版本演进
流程图 scenes/flowchart.md 业务流、状态机、带条件判断的链路
Mermaid scenes/mermaid.md 思维导图、时序图、类图、饼图

文件产物规范

每次绘图在 ./diagrams/ 下按当前时间创建子目录(格式 YYYY-MM-DDTHHMMSS),目录内文件名固定。用户指定了保存路径时以用户为准。

./diagrams/
  2026-03-27T143000/      ← 自动按时间创建,无需起名
    diagram.json          ← DSL(CLI 输入)
    diagram.gen.js        ← 坐标计算脚本(仅脚本构建方式)
    diagram.png           ← 最终图片
    diagram.mmd           ← Mermaid 源码(仅 Mermaid 路径)

CLI 命令

查看可用图标

npx -y @larksuite/whiteboard-cli@^0.2.0 --icons

渲染

npx -y @larksuite/whiteboard-cli@^0.2.0 -i ./diagrams/2026-03-27T143000/diagram.json -o ./diagrams/2026-03-27T143000/diagram.png    # DSL
npx -y @larksuite/whiteboard-cli@^0.2.0 -i ./diagrams/2026-03-27T143000/diagram.mmd -o ./diagrams/2026-03-27T143000/diagram.png     # Mermaid

上传飞书画板

上传需要飞书认证。遇到认证或权限错误时,阅读 ../lark-shared/SKILL.md 了解登录和权限处理。

第一步:获取画板 Token

用户给了什么 怎么获取 Token
画板 Token(XXX 直接使用
文档 URL 或 doc_id,文档中已有画板 lark-cli docs +fetch --doc <URL> --as user,从返回的 <whiteboard token=”XXX”/> 中提取 token
文档 URL 或 doc_id,需要新建画板 lark-cli docs +update --doc <doc_id> --mode append --markdown '<whiteboard type=”blank”></whiteboard>' --as user,从响应的 data.board_tokens[0] 获取 token

关于飞书文档的创建,读取等更多操作,请参考 lark-doc skill ../lark-doc/SKILL.md

第二步:上传

[!CAUTION] MANDATORY PRE-FLIGHT CHECK (上传前强制拦截检查) 当你要向一个已存在的画板 Token 写入内容时,绝对禁止直接执行上传命令!你必须严格遵守以下两步: 强制执行 Dry Run(状态探测) 必须先在命令中添加 --overwrite --dry-run 参数来探测画板当前状态。示例命令:

npx -y @larksuite/whiteboard-cli@^0.2.0 --to openapi -i <输入文件> --format json | lark-cli whiteboard +update --whiteboard-token <Token> --source - --overwrite --dry-run --as user

解析结果并拦截

  • 仔细阅读 Dry Run 的输出日志。
  • 如果日志包含 XX whiteboard nodes will be deleted:这说明画板非空,当前操作会覆盖并摧毁用户的原有图表!
  • 你必须立即停止操作,并通过 AskUserQuestion 工具(或直接回复)向用户确认:”目标画板当前非空,继续更新将清空原有的 XX 个节点,是否确认覆盖?”
  • 只有在用户明确授权”同意覆盖”后,你才能移除 --dry-run 真正执行上传。
  • 用户可能会要求你不覆盖更新画板内容,在这种情况下,移除 --overwrite--dry-run 参数再上传。
npx -y @larksuite/whiteboard-cli@^0.2.0 --to openapi -i <输入文件> --format json | lark-cli whiteboard +update --whiteboard-token <画板Token> --source - --yes --as user

画板一经上传不可修改。如需应用身份上传,将 --as user 替换为 --as bot。 如果画板非空,先加 --overwrite --dry-run 检查待删除节点数,向用户确认后去掉 --dry-run 执行。

你也可以将布局输出为原生 OpenAPI json 格式,再通过 lark-cli 导入飞书画板。关于 lark-cli 操作画板的更多方式,请参照 ../lark-whiteboard/SKILL.md

症状→修复表(视觉审查发现问题时参照):

看到的问题 改什么
文字被截断 height 改为 fit-content
文字溢出容器右侧 增大 width,或缩短文字
节点重叠粘连 增大 gap
节点挤成一团 增大 padding 和 gap
连线穿过节点 调整 fromAnchor/toAnchor 或增大间距
大面积空白 缩小外层 frame 宽度
文字和背景色太接近 调整 fillColor 或 textColor
布局整体偏左/偏右 调整绝对定位的 x 坐标使内容居中

渲染前自查

生成 DSL 后、渲染前,快速检查:

  • [ ] 不同分组用了不同颜色?同组节点样式完全一致?
  • [ ] 外层浅色背景、内层白色节点?(外重内轻)
  • [ ] 所有节点有边框(borderWidth=2)?文字在背景上清晰可读?
  • [ ] 连线用灰色(#BBBFC4),不用彩色?
  • [ ] frame 都写了 layout 属性?gap 和 padding 都显式设置了?
  • [ ] 含文字节点 height 用 fit-content?connector 在顶层 nodes 数组?

关键约束速查

最高频出错的规则,即使不读子模块文件也必须遵守。

  1. 含文字节点的 height 必须用 'fit-content' — 写死数值会截断文字
  2. fill-container 仅在 flex 父容器中生效layout: 'none' 下宽度退化为 0
  3. layout: 'none' 的容器必须有固定宽高 — 不要写成 fit-content
  4. connector 必须放在顶层 nodes 数组 — 不能嵌套在 frame children 里
  5. 图层顺序 — 数组顺序 = 绘制顺序。后定义的元素层级越高,会覆盖先定义的。重叠/浮层/标注元素务必放在数组末尾。
  6. flex 容器内的 x/y 会被完全忽略 — 需要自由定位时用 layout: 'none' 或放在顶层 nodes
  7. Dagre 子容器默认为不透明节点 — 外层连线无法寻址其内部子节点(引擎会自动重定向至外壳)。需穿透时声明 layout: "dagre" + layoutOptions: { isCluster: true }

❌ 致命错误:flex 容器内设 x/y,坐标不生效,节点按顺序排列

{ "type": "frame", "layout": "vertical", "children": [
  { "type": "rect", "x": 100, "y": 0, "text": "成都" },
  { "type": "rect", "x": 540, "y": 0, "text": "康定" }
]}

✅ 正确:用 layout: "none" 或放在顶层 nodes 用 x/y 定位。

❌ 致命错误:layout: "none" 容器本身写 width: "fit-content", height: "fit-content",再在内部摆绝对坐标节点

✅ 正确:绝对定位容器先给固定宽高,再在内部用 x/y 放置子节点。

同梱ファイル

※ ZIPに含まれるファイル一覧。`SKILL.md` 本体に加え、参考資料・サンプル・スクリプトが入っている場合があります。