by LcpMarvel
A Claude Code / agent skill for building genuinely designed, editable Feishu / Lark (飞书) whiteboards — deliberate composition, real hierarchy, a gated pipeline with pre-render fit-check and independent design critique.
# Add to your Claude Code skills
git clone https://github.com/LcpMarvel/feishu-whiteboard-proGuides for using ai agents skills like feishu-whiteboard-pro.
feishu-whiteboard-pro is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by LcpMarvel. A Claude Code / agent skill for building genuinely designed, editable Feishu / Lark (飞书) whiteboards — deliberate composition, real hierarchy, a gated pipeline with pre-render fit-check and independent design critique. It has 50 GitHub stars.
feishu-whiteboard-pro's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/LcpMarvel/feishu-whiteboard-pro" and add it to your Claude Code skills directory (see the Installation section above). feishu-whiteboard-pro ships a SKILL.md manifest, so compatible agents can discover and load it automatically.
feishu-whiteboard-pro is primarily written in JavaScript. It is open-source under LcpMarvel on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh feishu-whiteboard-pro against similar tools.
No comments yet. Be the first to share your thoughts!
Unlocks once the catalog security scan passes (runs nightly).
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
A design-judgment skill for Feishu SVG whiteboards. It does not just hand you a palette and let you wing the layout — it forces a design brief before you draw and a design critique after you render. The board you produce is a real, editable Feishu whiteboard inside a doc, not a screenshot.
The whiteboard medium is deliberately limited: one font, native rects/circles/connectors only, no gradients, no filters, no opacity, no motion. So "beautiful" here means composition, hierarchy, rhythm, colour discipline, and whitespace — never effects. Spend your craft there.
Three things make output good, and each has a home:
RULES.md. Hard limits, verified on the real board. Always read.COMPOSITION.md. Archetypes with coordinate skeletons, the type scale, the spacing grid. The core of this skill.CRITIQUE.md. The post-render design rubric and how to fix each axis.Run scripts/preflight.sh, or check manually:
lark-cli (npm package @larksuite/cli), installed and authenticated. If missing:
npm install -g @larksuite/cli, then lark-cli config init (scan the QR), then lark-cli auth login.@larksuite/whiteboard-cli, used via npx, auto downloads, no install needed.If lark-cli is missing or not authenticated, tell the user exactly how to install and authenticate,
then stop. You cannot write a board without it.
The old way — pick a palette, then lay it out "however reads best", then fix overflow — is exactly how boards end up as bland grids. This skill replaces the two soft steps with gates: a design brief before drawing, a design critique after rendering. Do not skip either.
Understand the content
│
├─▶ GATE 1 · Design brief (before any SVG — see below)
│
▼
Compose against the skeleton (COMPOSITION.md: archetype coords + type scale + spacing grid)
│
▼
Render → fix correctness (RULES.md workflow: overflow / overlap / clipping / arrows)
│
▼
GATE 2 · Design critique (CRITIQUE.md: score, fix the weakest axis, re-render, repeat)
│
▼
Write into Feishu → view live → deliver
Find out what goes on the board: the content, its purpose, the audience. If the content is unclear, ask one short question. Do not interrogate the user about visual style — you will commit to that yourself in the brief, and offer a swap at the end.
Read COMPOSITION.md and CATALOG.md first, then write down these
five commitments. This is the whole point of the skill — a board drawn without a brief drifts into a
uniform grid. Keep it to a few lines; it is for you, not the board.
CATALOG.md palette that serves it. Strategy first, swatches second.
Prefer an anchor (they're reliable, swappable skins). If none fits the mood, generate a palette
per templates/GENERATE.md — it comes out in the same frontmatter shape, so
it stays swappable; keep it inline for this board (GENERATE.md covers where a generated palette can
live — don't write it into the skill dir at runtime).Tell the user, in one line, the archetype and palette you chose and why. Then build.
If your chosen archetype matches one in examples/, start from that .svg — copy
its structure and replace the content. Its coordinates, gutters, type scale, and connectors are
already correct and critique-clean; editing a gold-standard board beats composing from a blank canvas.
Open only the one chosen templates/<slug>/design.md for the full palette notes.
Then write the SVG in a logical coordinate space (≈1600–1700 wide), following:
<text>; size/weight come from its assigned role; never set font-family;RULES.md.Only the content goes on the canvas — never the prompt, the source, the style name, scope notes, or any meta/"summary of…" line. (See RULES.md "Never echo the user's instructions".) That context goes in your chat reply.
First, predict defects without rendering — run the fit-check on your SVG:
node scripts/fit-check.mjs <dir>/diagram.svg # path is relative to this skill dir
It estimates every label's width (CJK ≈ 1em, Latin ≈ 0.6em) and flags labels wider than their box, between-box labels that spill into a neighbour, and canvas bleed/clipping — the exact hand-coordinate defects that otherwise only surface mid-render. Fix every hit (widen the box, shorten the label, open the gutter), then re-run until clean.
Then follow the build/verify loop in RULES.md: render, open the PNG and look, then
fix tight margins, accidental overlaps, clipping, and hand-drawn arrowheads. Edit the .svg in place
with small targeted edits; batch all fixes from one view into a single pass before re-rendering. This
step is about correctness, not taste — taste is the next gate.
Now judge it as a designer, not a linter. Open CRITIQUE.md, score the board on its
five axes (hierarchy, balance, density, contrast, alignment), name the weakest one, apply that
axis's fix recipe, and re-render. Repeat until no axis is failing (or two passes yield no real gain —
then say what's still imperfect). A board that passes correctness but looks flat almost always fails
hierarchy or balance first — start there.
For a board the user will actually ship, don't grade your own work — spawn an independent critique subagent given only the render and the rubric, prompted to be adversarial (see CRITIQUE.md §Independent review). Authorship bias is exactly what makes you rationalise a flat hierarchy.
Write the SVG into a Feishu doc as an editable whiteboard (commands in RULES.md), then
view the live board image and fix any remaining layout issues (the export is faithful for layout
and fills, but not text colour — verify colour via --output_as raw or the live doc).
Deliver both: the Feishu doc link and the rendered image — and the rendered image is the
local diagram.png from step 3, not the Feishu image export (that one comes back as a fixed square
preview with the board floating in whitespace; it's for verifying the live board, not for sharing — see
RULES.md step 4). Then tell the user they can switch to a different palette any time and you'll
re-render the same composition in it — note that a palette swap keeps the composition; only the colours change.
RULES.md — medium hard rules + exact build/write/verify commands. Always read.COMPOSITION.md — archetype library, type scale, spacing grid, anti-cliché. The core.CRITIQUE.md — the post-render design rubric, per-axis fixes, and independent review.CATALOG.md — the palettes with vibe/formality. Pick from this table alone. Generated from templates/ — don't hand-edit.examples/ — gold-standard boards per archetype; start from the matching one.templates/<slug>/design.md — one per palette (frontmatter: mood + colours + stroke + a catalog: block); open only the chosen one. To add a palette, drop a folder with a design.md and run node scripts/build-catalog.mjs.templates/GENERATE.md — how to generate a fresh palette (same frontmatter shape) when no anchor fits, and how to persist it as a template.scripts/fit-check.mjs — pre-render text-fit / gutter / bleed predictor.scripts/build-catalog.mjs — regenerate CATALOG.md from templates/ (--check verifies it's current).scripts/preflight.sh — dependency and auth check.一个用于打造真正"经过设计"的飞书 / Lark(飞书)白板的 Claude Code / agent skill——不只是配色 好看,而是讲究构图:清晰的视觉焦点、真实的层次、刻意的留白。它产出的是飞书文档里一块可编辑的真实白板, 而不是一张截图。
它构建于 beautiful-feishu-whiteboard (沿用其配色板与 SVG 白板介质的硬性规则)之上,补上了原项目缺失的那一层:如何构图,以及如何判断结果到底好不好。
介质本身被刻意限制——单一字体、只有原生矩形 / 圆 / 连接线,没有渐变、滤镜、透明度、动效。所以这里的"好看" 指的是构图、层次、节奏、配色克制与留白。这个 skill 把两个原本靠临场发挥的软步骤变成了关卡(gate):
理解内容
│
├─▶ 关卡 1 · 设计简报 原型 + 焦点 + 配色策略 + 字号角色 + 反套路检查
▼
对照骨架构图 原型坐标 + 固定字号阶梯 + 8px 间距网格
│
▼
渲染前预测缺陷(fit-check) 确定性:标签过宽 / 挤占间距 / 出血,在渲染前就抓出来
│
▼
渲染 → 修正确性 溢出 / 重叠 / 裁切 / 手画箭头
│
▼
关卡 2 · 设计评审 按层次 / 平衡 / 密度 / 对比 / 对齐五轴打分;要交付的板子上独立评审;修最弱项;重复
▼
写入飞书 → 看实时效果 → 交付
fit-check(scripts/fit-check.mjs)—— 估算每个标签的宽度(中文 ≈ 1em,
拉丁字符 ≈ 0.6em),在渲染之前就标出溢出 / 挤占间距 / 出血。确定性,不耗模型。七张标杆样板,每张都过了双关卡(fit-check 干净、设计评审过关)并在真实飞书白板上渲染过。它们覆盖不同原型
与配色板——其中一张还用的是现场生成的配色——但都出自同一条流水线,所以构图与配色是解耦的。把对应的
.svg(在 examples/ 里)当作起手骨架打开,坐标都已经是评审过关的。
四张复杂板子,四种不同配色:
放射式系统图 · Riso Brut |
对比矩阵 · Riptide Cobalt |
时间线 · Coral |
层级图 · 现场生成配色 |
三张基础板子,共用一套配色(Riso Brut):
系统图 |
流程 + 分叉 / 汇合 |
泳道时序 |
这里的配色是一套设计系统,不是色卡清单:每套配色都给颜色分配角色(画布、墨色、强调色、面板)并附用途 说明和投放剂量,让 agent 知道每种颜色该怎么用,而不只是有哪些 hex。
CATALOG.md 列出从克制到大胆的锚点配色;按气质和正式度挑一套。
每套就是一个 templates/<slug>/design.md,并且是唯一真相源——目录表由它们经 scripts/build-catalog.mjs
生成。templates/GENERATE.md
生成一套——OKLCH 明暗推导、带色偏的中性色、角色剂量,以及介质自身的约束(画布绝不用纯白、墨色绝不用
#000、纯平 / 无透明度)。它产出的 frontmatter 形态和锚点完全一致,所以照样能换肤、也能存成新模板。
上面那张层级图用的就是现场生成的 “Steel Infra” 配色。lark-cli 已安装并完成认证:
npm install -g @larksuite/cli,然后 lark-cli config init(扫码)和 lark-cli auth login@larksuite/whiteboard-cli —— 通过 npx 使用,自动下载,无需安装运行 scripts/preflight.sh 可一次性检查以上全部。
用 skills CLI —— 它会识别你的 agent(Claude Code、Cursor、
Codex…)并把 skill 软链到正确的目录:
# 全局(用户级),所有项目可用:
npx skills add -g LcpMarvel/feishu-whiteboard-pro
# …或项目级,只装进当前仓库:
npx skills add LcpMarvel/feishu-whiteboard-pro
不安装、只试一次:npx skills use LcpMarvel/feishu-whiteboard-pro。
git clone https://github.com/LcpMarvel/feishu-whiteboard-pro.git
# Claude Code(用户级 skills):
ln -s "$(pwd)/feishu-whiteboard-pro" ~/.claude/skills/feishu-whiteboard-pro
重启会话;之后只要你让它创建或打磨飞书白板、信息图、图表或可视化讲解,skill 就会触发。
| 路径 | 作用 |
|---|---|
SKILL.md |
门控流水线与编排 |
COMPOSITION.md |
原型库(坐标骨架)、字号阶梯、间距网格、反套路清单——核心 |
CRITIQUE.md |
渲染后设计评分准则(五轴)+ 独立评审说明 |
RULES.md |
飞书 SVG 白板介质的硬性限制,实测验证 |
templates/ |
一组精选配色板(每套一个 design.md)——唯一真相源 |
CATALOG.md |
选色表,由 templates/ 经 scripts/build-catalog.mjs 生成 |
templates/GENERATE.md |
没有锚点契合时,如何生成一套(同 frontmatter 形态)新配色 |
examples/ |
七张按原型分类的标杆样板(可编辑 .svg + 渲染图) |
scripts/ |
fit-check.mjs(渲染前预测)、build-catalog.mjs(重生成 CATALOG)、preflight.sh |
MIT。精选并蒸馏过的一部分配色与介质规则改编自
beautiful-feishu-whiteboard,作者
Zara Zhang(@zarazhangrui) —— © Zara Zhang,MIT。构图、评审、
fit-check、门控流水线与配色生成层为原创新增。设计判断的思路受 impeccable / frontend-design skill 启发
(未拷贝代码)。详见 LICENSE。