デザイン&モーション · nexu-io/html-anything

frame-flowchart-sticky

SVG曲線接続 + 付箋ノード + カーソルインタラクションによる、ホワイトボードでのブレインストーミング風デザイン

L1 基本 · ソース登録のみV1 コミット固定Dual-pass Audit
Author nexu-ioGitHub nexu-io/html-anything ↗Stars 8827License Apache-2.0(仓库根 LICENSE;GitHub API spdx_id=Apache-2.0)Commit 553ed98c28
管理レベルは Skill の能力と推奨統制措置を示すものであり、品質や安全性の認証、利用可否の判定ではありません。使用の可否はユーザーおよび管理者が決定します。Agent 環境によって制約が異なるため、自動保護を仮定しないでください。第三者製 Skill の著作権は原著作者に帰属し、利用リスクは利用者が負います。

1仕組みと動作原理

本スキルは実行可能プログラムではなく、ローカルの coding-agent CLI に注入されるプロンプトです。ホストが SKILL.md 本文を取得し、先頭にサイト共通のデザイン指示を付加し、末尾にユーザーコンテンツを結合して1つのプロンプトを作成します。これをログイン済みエージェントに渡し、エージェントの stdout を HTML として取得します。

next/src/lib/templates/shared.ts
【输入格式】: ${opts.format} 【用户内容】: ${opts.content}
組み立てテンプレート = 共通指示 → スキル本文 → 入力フォーマット → ユーザーコンテンツ。Web側の /api/convert も同一関数を使用: prompt = assemblePrompt({ body: skill.body, content, format });

共通指示レイヤー(個別のスキルには属さず、全テンプレートを統括)は出力を「自己完結型単一ファイルHTML」に固定し、エージェントによる Write/Edit/Bash などのファイルシステムツールの使用を明示的に禁止して、HTML を対話本文として直接ストリーミング出力させます。

next/src/lib/templates/shared.ts
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
これが当バッチのスキルの能力境界の根拠です。成果物はテキストのみであり、保存およびレンダリングはホストのフロントエンドが担当します。この禁止事項はプロンプトによるソフトな制約であり、サンドボックスによるハードな隔離ではありません。

SKILL.md の外側に「コンテンツ駆動数量」のオーバーライドルールが存在します。テンプレートに記載されたページ数、フレーム数、カード数はすべて参考下限値と見なされ、実際の数量はユーザーコンテンツによって決定されます。これにより、エージェントがテンプレートの数値に合わせてユーザーコンテンツを圧縮するのを防ぎます。

next/src/lib/templates/shared.ts
- 模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。
特に frame-* 単一フレームテンプレートで重要です。テンプレート内のレイアウト記述を上限ではなく「再利用可能なレイアウトプール」として定義します。

ロード規約は「1スキル = 1ディレクトリ」です。SKILL.md(セレクター用YAMLフロントマター + プロンプトテンプレート本文)、任意の example.md(サンプル入力)、および example.html(直接開けるプレビューサンプル)で構成され、TSコードを変更せずにディレクトリを追加するだけでテンプレートを追加できます。

next/src/lib/templates/loader.ts
* SKILL.md — frontmatter (id, scenario, tags, …) + prompt body * example.md — (optional) sample input content * example.html — (optional) pre-rendered preview, shown inline in the picker
ローダーの loadSkillFromDir はこれら3種類のリソースのみを読み込み、他のアセットロード経路は存在しません。2回目のパスではこれに基づいて本スキルのアセット到達性を確認します。

セレクターのパイプライン(CLI側)は3段階のファネル構造です。キーワード強信号(1語一致につき2点、閾値3)→ tags/scenario によるスコアリングへのフォールバック → それでも判定できない場合はユーザーコンテンツの先頭800文字をローカルエージェントに渡し、1文分類を実行します。

cli/src/skills-matcher.ts
const CONFIDENCE_THRESHOLD = 3;
AIフォールバックのプロンプト原文: const prompt = `請用一句话(不超过15个字)描述以下内容最像什么类型的文档,只需回答类型名称:`

プレビューパイプラインは生成から独立しています。/api/templates/<id>/preview は example.html をそのまま text/html として iframe に返し、フロントエンドの iframe には sandbox="allow-scripts allow-same-origin" が設定されます。

next/src/components/preview-pane.tsx
sandbox="allow-scripts allow-same-origin"
ルートのコメント: * Returns the skill's `example.html` verbatim so it can be loaded into an(ホスト側のトレードオフ: allow-scripts + allow-same-origin の組み合わせ下では、プレビューページのスクリプトが自らサンドボックス制限を解除可能です)。

テンプレートはプロセスを「ホワイトボード + 付箋」として描画します。1920×1080のキャンバスにベージュのホワイトボード紙 #f4ede1 または冷灰色のホワイトボード #f0f2f4 の下地を敷き、ごく薄い hex grid(rgba(0,0,0,0.04))を重ねてホワイトボードの質感を演出します。

next/src/lib/templates/skills/frame-flowchart-sticky/SKILL.md
【画布】1920×1080。背景: 米黄白板纸 `#f4ede1` 或冷灰白板 `#f0f2f4`; 加非常浅的 hex grid `rgba(0,0,0,0.04)` 让它有白板感。
地色 + hex grid がホワイトボード感のベースとなります。コンテンツを配置する前にまずマテリアルを定義します。

ノード仕様は詳細に固定されています。240×180pxの付箋、4色ランダム(黄 #fcd34d / 桃 #fca5a5 / ミント #a7f3d0 / スカイ #a5b4fc)、±2degの微小な回転、drop-shadow、上部のマスキングテープ風 linear-gradient 装飾、手書き風フォント(Kalam/Caveat/Patrick Hand、中国語は霞鹜文楷)。

next/src/lib/templates/skills/frame-flowchart-sticky/SKILL.md
- 每节点 = 一张 240×180px 便利贴, 4 套颜色随机分配: 黄 `#fcd34d` / 桃 `#fca5a5` / 薄荷 `#a7f3d0` / 天 `#a5b4fc`。
サイズ、回転、影、テープを一度に固定指定することで、「手軽に貼られた付箋」の再現性を保証します。

接続線には SVG Bezier パスを使用します。stroke #2a2a2a、線幅 2.5、丸型端点。実線はシーケンス、stroke-dasharray 8 6 は条件分岐を表し、矢印には marker-end の黒い三角形を使用します。また、分岐(1つのノードから2本)および合流(2本が1つのノードへ)の描画方法も明確に規定されています。

next/src/lib/templates/skills/frame-flowchart-sticky/SKILL.md
- 用 `<path>` Bezier 曲线连接节点, stroke `#2a2a2a`, width 2.5, `stroke-linecap: round`, `stroke-dasharray: 0` (实线) 或 `8 6` (虚线 = 条件分支)。 - 箭头终端用 `marker-end`, 黑色三角小箭头。
接続線に意味を持たせています。実線=シーケンス、破線=条件分岐。矢印、分岐、合流すべてに描画ルールがあります。

ホワイトボード感はあえて「不揃い」にすることで演出します。ノードの配置は中央揃えを求めませんが、接続線が交差せず明確であることを保証します。また、ノードの横に浮かぶFigma風のコラボレーションカーソル(SVG矢印 + ネームタグ)を追加可能です。

next/src/lib/templates/skills/frame-flowchart-sticky/SKILL.md
- 一个"光标"装饰 (`<svg>` arrow + name tag), 浮在某节点旁, 模拟 figma 协作光标。
「不揃いでありながら秩序がある」ことが本テンプレートの核となる緊張感です(配置は自由、接続線は非交差)。

ノード数には範囲制約(最小5個、最大12個)があり、コンテンツはユーザーの実際のプロセスに基づく必要があります。ノードのテキストにはユーザー入力を直接使用します。

next/src/lib/templates/skills/frame-flowchart-sticky/SKILL.md
- 至少 5 个节点, 最多 12 个。
ノード数の範囲制限 + ユーザーコンテンツ必須ルールにより、モデルによるプロセスの捏造を防ぎます。

2コア機能

011920×1080 ホワイトボードキャンバス + hex grid テクスチャ(2種類の背景色)
02付箋ノード: 240×180、4色ランダム、±2deg回転、ドロップシャドウおよびテープ装飾
03手書き風フォントファミリー固定(Kalam / Caveat / Patrick Hand / 霞鹜文楷)
04SVG Bezier 接続線: 実線/破線によるシーケンスと条件分岐の識別、marker-end 矢印
05分岐および合流(1対2、2対1)の描画仕様
06コラボレーションカーソル装飾(Figmaのマルチユーザー共同作業風)
07禁止事項: ダークテーマ全画面、ネオンカラー、企業ダッシュボード風、Inter/セリフフォント、外部アイコンライブラリ
08セレクターキーワード: flowchart / 流程图 / sticky / 便利贴 / 流程

3外部依存関係

KindDependency / Endpoint
networkGoogle Fonts(Caveat / Patrick Hand / Inter / IBM Plex Mono,示例页实际引用)
networkTailwind Play CDN(共享指令强制;示例页亦引用)
networkhyperframes 目录页(frontmatter 出处标注,非运行时请求)

4推奨統制措置と判定根拠

安全運用のための推奨統制措置
Agent 向け
自動ロード可能
管理者向け
ソースとバージョンの記録
判定根拠(ファイルパスと抜粋)
  • SKILL.md: 純粋なプロンプト指示およびルールテキストのみであり、スクリプト実行や外部への副作用は存在しない。
監査ノート: 審査対象は本スキル自体のディレクトリです(基準: SKILL.md の記述通りに実行した際に実際に何が起こるか)。SKILL.md は純粋な指示テキストであり、付属の example.md/example.html はサンプルおよびプレビュー用サンプルです。ディレクトリ内にスクリプト、ランタイムでのネットワーク呼び出し、認証情報の読み取り、エージェント側でのファイル書き込みは存在しません。SKILL.md は外部の生成/サービスバックエンドも指定していません(素材を外部生成バックエンドに送信しアカウント枠を消費する Orange の先行事例 ai-image-generation / seedance と対比: 本テンプレートは外部への素材送信を行いません)。リスク判定に影響しない説明事項: ディレクトリ内の example.html は cdn.tailwindcss.com および fonts.googleapis.com へ外部リンクしています(バッチ4基準: example.html の外部リンクは生成物サンプルに属し、リスク判定対象外)。共通指示レイヤーも同様に生成物の head 内で Tailwind と Google Fonts を CDN 経由で読み込むよう指示しています(- `<head>` 内で CDN 経由で Tailwind v3 Play (https://cdn.tailwindcss.com) と必要な Google Fonts を読み込む)が、これはホストシェル側の挙動です。ホスト側の背景(判定には含めず、verdict.risks を参照): プレビュー用 iframe は sandbox="allow-scripts allow-same-origin" を使用。ホストは全権限モード("bypassPermissions", / "--yolo",)でエージェントを起動します。補足: SKILL.md はむしろ外部アイコンライブラリを参照しない(inline SVG を使用する)よう要求しています。ディレクトリ内にスクリプト、認証情報、ディスク書き込みはありません。

5二重目の独立検証

  • [ok] 节点/连线/交互规格 — 重读 SKILL.md【节点】【连接线】【可选交互】三段,引用逐字一致(含 240×180px、±2deg、stroke-dasharray 8 6)。
  • [ok] 『不要外部图标库』结论 — SKILL.md 明写『单文件 HTML, 不要外部图标库 (用 inline SVG)』;示例页除 Tailwind/字体外无第三方资源引用。
  • [ok] 节点数区间与共享指令是否冲突 — 共享指令规定模板数字是参考下限、数量由内容决定;本模板的 5-12 是可读性范围,二者不冲突(已在 traits 说明)。
  • [ok] 外部端点存在性 — example.html 实测命中 fonts.googleapis.com 与 cdn.tailwindcss.com;hyperframes 链接仅在 frontmatter。
  • [ok] 安全面 — 目录内 3 个文件无自写脚本、无 fetch/表单外发、无凭证读取、无写盘。
  • [ok] meta 元数据 — GitHub API 实查 stars=8827、pushed_at=2026-09-15T03:36:24Z、license Apache-2.0。
  • [unlocatable] 安装量 — 无公开安装量数据源,installs=null。

6結論

  • 「手描きホワイトボード感」をサイズ、回転角、影、テープ、紙の下地色、hex grid といった再現可能な定量的仕様に落とし込み、安定した出力スタイルを実現。
  • 接続線にスタイルだけでなく意味論(実線=シーケンス、dasharray 8 6=条件分岐)を持たせ、分岐・合流・ループの3つのトポロジーを網羅。
  • 視覚的な禁止領域を明確化(ダークテーマ全画面、ネオンカラー、企業ダッシュボード風、Inter/セリフフォントの禁止)し、ありきたりな汎用フローチャートになるのを防止。
  • フォントと言語のカバーが万全: 欧文手書きフォント3選 + 中国語の霞鹜文楷により、中国語のプロセス解説でもデフォルトのサンセリフ体にフォールバックしない。
  • 最適な用途: オンボーディング動画、業務プロセス解説、システムアーキテクチャ説明など、「人間が手描きしたような温かみを持たせたい」シーンに最適。研修資料やプロダクトローンチ動画のプロセス紹介クリップにも適しています。
    不向きな用途: 厳密で保守性が求められる正式なエンジニアリングフローチャート(手描き感を意図しており、厳格な整列を追求しないため)には不向き。企業のダッシュボード風スタイル(テンプレートで明示的に排除)には不向き。ノード数が極端に多い大規模プロセス(上限12個、多すぎると接続線が乱れるため)には不向き。
    Install Agent-Ready
    ① Verified Mirror 2026-09-15
    Option A · Direct DownloadDownload frame-flowchart-sticky.tar.gz
    sha256: 7a10e7dfc2816a51…
    Option B · Copy Guide for Agent
    install.json
    Agent はこの JSON ガイドから自動的にダウンロードして検証します。
    ② Upstream GitHub
    GitHub Repo ↗
    Pinned to commit 553ed98c28.