全部技能 / 设计 / frame-flowchart-sticky
设计 · nexu-io/html-anything

frame-flowchart-sticky

SVG 曲线连接 + 便利贴节点 + 光标交互, 像白板 brainstorm

风险提醒:绿色 · 放心使用AI 侦查报告
作者 nexu-ioGitHub nexu-io/html-anything ↗Stars 8827许可 Apache-2.0(仓库根 LICENSE;GitHub API spdx_id=Apache-2.0)commit 553ed98c28
agent 宿主通常会约束 skill 执行权限;风险提醒为 AI 侦查观点,不构成质量或安全保证。第三方 skill 仅作拆解与展示,安装使用风险自负,版权归原作者。

1实现原理 · 为什么它能做到

这个 skill 不是可执行程序,而是注入给本机 coding-agent CLI 的一段提示词:宿主取 SKILL.md 正文,前面压一段全站共享设计指令、后面接用户内容,拼成一条 prompt 交给已登录的 agent,再把 agent 的 stdout 当 HTML 取回。

next/src/lib/templates/shared.ts
【输入格式】: ${opts.format} 【用户内容】: ${opts.content}
注:拼装模板 = 共享指令 → skill 正文 → 输入格式 → 用户内容;web 端 /api/convert 走同一函数:prompt = assemblePrompt({ body: skill.body, content, format });

共享指令层(不属于任何单个 skill,但每个模板都被它压着)把输出钉成『自包含单文件 HTML』,并明令禁止 agent 使用 Write/Edit/Bash 等文件系统工具,HTML 直接以对话正文流式输出。

next/src/lib/templates/shared.ts
- **禁止使用 Write / Edit / MultiEdit / Bash / Create / 任何文件系统工具**。不要把 HTML 写到任何 \`.html\` 文件里。前端直接捕获你的 stdout 文本, 文件落盘由前端负责。
注:这是本批 skill 能力边界的来源:产出物只是文本,落盘与渲染由宿主前端负责;该禁令是 prompt 软约束,不是沙箱硬隔离。

SKILL.md 之外还有一条『内容驱动数量』覆盖规则:模板里写的任何页数/帧数/卡片数一律视为参考下限,实际数量由用户内容决定——防止 agent 用模板数字压缩用户内容。

next/src/lib/templates/shared.ts
- 模板只定义"可用版面 / 风格 / 配色 / 字体 / 组件库", **不定义** slide / 帧 / 卡片 / section 的数量。
注:对 frame-* 单帧模板尤其关键:它把模板里的版面描述定性为『可复用版面池』而非产量上限。

加载约定是『一个 skill = 一个文件夹』:SKILL.md(YAML frontmatter 供选择器 + 正文即模板 prompt),可选 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
注:loader 的 loadSkillFromDir 只读这三类文件,没有其它资产装载通道——第二遍据此核对本 skill 的资产可达性。

选择链路(CLI 侧)是三级漏斗:关键词强信号(每命中 1 词 2 分,阈值 3)→ 退化为 tags/scenario 打分 → 仍无把握就把用户内容前 800 字交给本地 agent 做一句话分类。

cli/src/skills-matcher.ts
const CONFIDENCE_THRESHOLD = 3;
注:AI 兜底的 prompt 原文: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 组合下,预览页脚本可自行摘掉 sandbox)。

模板把流程画成『白板 + 便利贴』: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 便利贴、四色随机(黄 #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 path:stroke #2a2a2a、宽 2.5、圆头;实线表顺序、stroke-dasharray 8 6 表条件分支;箭头用 marker-end 黑三角;并明确规定分叉(一节点连出两条)与合并(两条进入一节点)的画法。

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 质感(两种底色)
02便利贴节点:240×180、四色随机、旋转 ±2deg、投影与胶带装饰
03手写体字族锁定(Kalam / Caveat / Patrick Hand / 霞鹜文楷)
04SVG Bezier 连线:实线/虚线区分顺序与条件分支,marker-end 箭头
05分叉与合并(一对二、二对一)画法
06协作光标装饰(拟 figma 多人协作)
07禁项:深色全屏、霓虹色、企业 dashboard 风、Inter/衬线字体、外部图标库
08选择器关键词:flowchart / 流程图 / sticky / 便利贴 / 流程

3外部依赖

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

4风险提醒 风险提醒:绿色 · 放心使用

风险提醒:绿色 · 放心使用
  • 手写体 + 中文的可用性风险:霞鹜文楷等字体在部分环境不可得,会回退到系统字体,白板感打折。 — SKILL.md:Kalam / Caveat / Patrick Hand 手写感字体 (中文用 霞鹜文楷…)
  • 『不整齐』与『连线不交叉』天然冲突:节点多(接近 12)时模型容易牺牲其一。 — SKILL.md:节点排布…要有一点白板风的"随手贴"感, 但保证连接线清晰不交叉
  • 宿主侧:预览 iframe sandbox="allow-scripts allow-same-origin";hover 抬起/缩放等交互脚本在预览环境权限宽松。 — sandbox="allow-scripts allow-same-origin"(next/src/components/preview-pane.tsx)
  • 注入面:用户真实流程文本会被逐字拼进 prompt 并直接成为节点文字。 — assemblePrompt 末尾直接拼接【用户内容】
风险提醒:绿色,放心使用。判级对象是本 skill 自身目录(口径:照 SKILL.md 执行后实际会发生什么):SKILL.md 为纯指令文本,随附 example.md/example.html 是样本与预览样张,目录内无脚本、无运行时网络调用、无凭证读取、无 agent 侧文件写入;SKILL.md 也未点名任何外部生成/服务后端(对照 orange 先例 ai-image-generation / seedance:后者把素材送外部生成后端并消耗账号额度;本模板不产生素材外发)。不影响档位的说明项:目录内 example.html 会外链 cdn.tailwindcss.com 与 fonts.googleapis.com(批4 口径:example.html 外链属产物示例,不判级);共享指令层同样要求生成物在 head 里 CDN 引 Tailwind 与 Google Fonts(- 在 \`<head>\` 中通过 CDN 引入 Tailwind v3 Play (https://cdn.tailwindcss.com) 与所需的 Google Fonts。),那是宿主壳层行为。宿主背景(不计入档位,见 verdict.risks):预览 iframe sandbox="allow-scripts allow-same-origin";宿主以全权模式拉起 agent("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=条件分支,并覆盖分叉/合并/循环三种拓扑。
  • 视觉禁区明确(禁深色全屏、霓虹、企业 dashboard 风、Inter/衬线字体),避免生成成一张通用流程图。
  • 字体与语言覆盖到位:西文手写体三选一 + 中文霞鹜文楷,中文流程说明不会掉到无衬线默认字体。
  • 适合:适合 onboarding 视频、运营流程说明、系统架构讲解这类『要把流程讲得像人画的』场景;也适合培训材料与产品发布视频里的流程片段。
    不适合:不适合需要精确、可维护的正式工程流程图(它刻意手绘、不追求对齐);不适合企业 dashboard 风格需求(模板明令排除);不适合节点极多的大流程(上限 12 个,多了连线会乱)。
    安装 agent 直装可复制
    ① 本站镜像 更新 2026-09-15
    方式 A · 人下载镜像包下载 frame-flowchart-sticky.tar.gz
    sha256: 7a10e7dfc2816a51…
    方式 B · JSON 格式安装指南,复制给 agent
    安装指南
    agent 读 JSON 指南后会自动从本站下载安装,无需更多说明。
    ② 上游 GitHub · 原始来源
    能访问 GitHub?直接去上游安装(实时版,可能已更新)GitHub 原始 ↗
    本页镜像锁定 commit 553ed98c28;上游为实时仓库。
    来源信息 GitHub 原始
    作者 / 仓库nexu-io / nexu-io/html-anything
    Stars8827
    最近推送2026-09-15
    本 skill commit553ed98c28
    许可Apache-2.0(仓库根 LICENSE;GitHub API spdx_id=Apache-2.0)
    本站信息
    收录日期2026-09-06
    分类设计
    侦查报告AI 侦查 · 2 遍 · 2026-09-06
    本站镜像与 GitHub 原始是不同来源:本站锁定 commit 快照经 /r2 分发;GitHub 为实时上游,内容可能已更新。
    同分类邻近