docs/guide/ai-skill
はじめに · AI 支援開発

zenit UI dev Skill

Claude Code などの AI Agent 向けの開発マニュアルです。インストールすると、Agent は zenit の UI を書くときにまず既存コンポーネントを選び、token と recipe でスタイルを付け、zenit のライフタイムに沿って状態を管理し、引き渡す前に自らビルドしてスクリーンショットで確認します。

読了目安 4 分

ダウンロード

アーカイブの中身は標準的な Agent Skill フォルダーです。エントリーの SKILL.md は短く、ルールと判断表だけを載せています。詳細は references/ に分割されており、Agent は必要なときだけ読むのでコンテキストを圧迫しません。

zenit-ui-dev/
SKILL.md9.6 KB
references/
app-architecture.md7.2 KB
components.md8.3 KB
macos-native.md8.2 KB
pencil-design.md7.9 KB
performance.md4.1 KB
pitfalls.md8.5 KB
project-setup.md8.1 KB
state-reactivity.md7.8 KB
styling.md5.8 KB
ui-tree-layout.md6.1 KB
verification.md5.7 KB
tools/
design_diff.ts20.6 KB
png.ts3.6 KB
shot.ts3.7 KB

インストール

  1. 1
    Skill フォルダーに置く

    個人で使うなら ~/.claude/skills/ に置けば全プロジェクトで有効です。チームで共有するならリポジトリの .claude/skills/ に置いてコミットすれば、クローンした全員が使えます。

  2. 2
    Agent のセッションを再起動

    Claude Code はセッション開始時に Skill をスキャンします。新しいセッションを開き、/skills に zenit-ui-dev が表示されればインストール完了です。

  3. 3
    いつもどおり依頼する

    zenit の UI に関わるタスクでは自動で読み込まれます。「zenit-ui-dev skill を使って」と明示してもかまいません。

ダウンロード後、ユーザーフォルダーに展開します(全プロジェクトで有効):

展開先
~/.claude/skills/
└── zenit-ui-dev/
    ├── SKILL.md
    ├── references/
    └── tools/

または、プロジェクトに展開してコミットします(チームで共有):

展開先
.claude/skills/
└── zenit-ui-dev/
    ├── SKILL.md
    ├── references/
    └── tools/
Other agents
# Codex and other agents that read AGENTS.md: unpack into the repo and reference it
unzip -oq zenit-ui-dev.zip -d .agents/skills
echo '- zenit UI: read .agents/skills/zenit-ui-dev/SKILL.md before writing UI code' >> AGENTS.md

中身

ファイル内容
SKILL.mdエントリーポイント:トリガー条件、ワークフロー、厳守ルール、判断表、どの reference をいつ読むか
references/app-architecture.md本番運用のエディターを例にした大規模アプリの階層:状態、ビュー、コマンド、サービス
references/components.mdui.widgets カタログ、2 種類の mount 形式、「デザイン要素 → コンポーネント」対応表
references/macos-native.mdメニュー、ショートカット、ファイルダイアログ、クリップボード、ドラッグ&ドロップ、マルチウィンドウ、IME
references/pencil-design.mdPencil(pen.dev)デザインの再現:MCP での数値読み取り、フィールド対応表、スクリーンショットの数値比較
references/performance.md仮想リスト、dirty レベル、大きなテキスト、バックグラウンドスレッドとメインスレッドの通信
references/pitfalls.mdzenit と本番アプリの修正履歴から集めた「症状 → 原因 → 正しい対処」
references/project-setup.md新規プロジェクト、build.zig / build.zig.zon、.app のパッケージング、ビルドオプションの転送
references/state-reactivity.mdbindState / cx.on、Signal / Memo / Effect、Scope のライフタイムとクリーンアップ
references/styling.mdToken → styles.zig → recipe の 3 層、テーマ、ui.arb による逃げ道
references/ui-tree-layout.mdノード、Flex レイアウト、サイズ、ノードの更新、表示 / 非表示、座標
references/verification.mdAgent の自己検証ループ:ビルド、スクリーンショット、E2E harness、DevTools、ログ
tools/design_diff.tsデザイン PNG とアプリのスクリーンショットを数値比較し、具体的な修正ヒントを出力
tools/png.tsdesign_diff が使う依存ゼロの PNG デコーダー
tools/shot.tsファイル RPC 経由で任意の zenit アプリをスクリーンショット(Retina)
01
手作りより先にコンポーネント

デザインの各要素を ui.widgets の既存コンポーネントに対応付け、Agent が box で Button を作り直すのを防ぎます。

02
ライフタイムを正しく

bindState、pub deinit、Scope のクリーンアップ、ページ切り替えのルール。最もよくあるリーク、二重解放、ダングリングポインターに直接効きます。

03
引き渡す前に自分で確認

Agent にビルド、実行、スクリーンショット、要件との照合までさせ、「コンパイルが通った」で終わらせません。

04
実プロジェクトの落とし穴

本番アプリの修正履歴から整理した問題リスト。それぞれに原因と正しい対処が付いています。

おすすめ:Pencil でデザイン

Pencilpen.dev
推奨ワークフロー · PENCIL + SKILL
Pencil と組み合わせて、デザインから AI で実装

Pencil で画面を描き、この Skill を使って Agent に実装させるのがおすすめです。.pen の Flex レイアウト、間隔、角丸、文字サイズ、lucide アイコンは zenit のモデルとよく似ています。Skill にはフィールド対応表と design_diff 比較ツールが付属しているので、Agent は感覚ではなく数値で再現できます。

  1. 01.penPencil のデザイン
  2. 02MCPAgent が正確な数値を読む
  3. 03zigwidgets + token で zenit コード
  4. 04diffデザインとの数値比較
  1. 1
    Pencil MCP を接続

    Agent で Pencil の MCP server を有効にし、.pen ファイルを開きます。Skill は .pen を MCP 経由でしか読みません。MCP はデザイン変数を展開し、解決後の実寸を返します。この 2 つこそ忠実な再現に必要なものです。

  2. 2
    画像ではなく数値を読む

    Agent はまず Get(nodeId, { resolveVariables: true }) で gap、padding、角丸、文字サイズ、色を取得し、対応表に従って zenit に書き換えます:fill_container → .fill()、chevron-down → ui.icons.chevron_down。

  3. 3
    一致するまで数値比較

    デザインを scale 2 で書き出し、tools/shot.ts で実ウィンドウをキャプチャします。tools/design_diff.ts がずれ、サイズ差、ヒートマップ、配色のずれを報告し、Agent はそのヒントに沿って修正します。1 ラウンドは約 5 秒です。

Terminal
SKILL=~/.claude/skills/zenit-ui-dev
bun $SKILL/tools/design_diff.ts --self-test
ZENIT_E2E_FILE_RPC_DIR=$RPCDIR bun $SKILL/tools/shot.ts /tmp/actual.png
bun $SKILL/tools/design_diff.ts /tmp/design/<nodeId>.png /tmp/actual.png

使い方

特別な構文は不要です。欲しい UI や問題を説明するだけです。うまくいく依頼の例をいくつか挙げます:

Prompts
Pencil MCP で開いている .pen の「Settings」フレームを読み取り、zenit で設定ウィンドウとして再現して、design_diff のスコアが 90 を超えたら渡してください。
zenit でこのアプリに設定ウィンドウを追加してください。左にカテゴリ一覧、右にフォーム、変更は即時反映です。
src/views/sidebar.zig に手書きされたスタイルを styles.zig + recipe に移行してください。
ファイルツリーが 5 万ノードになるとスクロールがカクつきます。原因を調べて修正し、修正後のスクリーンショットを見せてください。

内容の出典

Skill のルールは 2 つのプロジェクトに由来します。zenit フレームワーク本体(公開 API、サンプル、コンポーネントカタログ、テストツール)と、zenit で開発された本番運用の macOS エディター(大規模アプリの階層化、ネイティブ統合、修正履歴)です。サンプルコードは可能な限りこの 2 つのリポジトリでコンパイルが通るコードから取り、本マニュアルと一致させています。

ソースはサイトリポジトリの skill/zenit-ui-dev/ にあり、ビルド時に scripts/pack-skill.mjs でパッケージされます。SKILL.md を直接読むこともできます。

zenit · デュアルライセンスオープンソースプロジェクトは GPL-3.0-only のもとで無料で使えます。クローズドソースや商用製品には商用ライセンスが必要です。作者への連絡先:zongyi.xzy#gmail.com(# を @ に置き換え)zenit 5f9add5+wip 2026-09-30