بنقرة واحدة
json-canvas
创建和编辑 JSON Canvas 文件(.canvas),支持节点、边、分组和连接。当处理 .canvas 文件、创建可视化画布、思维导图、流程图,或用户提到 Obsidian 中的 Canvas 文件时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
创建和编辑 JSON Canvas 文件(.canvas),支持节点、边、分组和连接。当处理 .canvas 文件、创建可视化画布、思维导图、流程图,或用户提到 Obsidian 中的 Canvas 文件时使用。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
在当前会话里按已写好的实现计划顺序执行任务时使用
在已有规格或多步骤任务需求、且在动代码之前使用。若上游 ddev-pc-test 已产出测试用例,自动走 TDD 流程:先实现测试 demo 代码(红灯),再实现被测代码(绿灯),测试覆盖不到的部分直接开发。
文档审查技能。将文档审查任务派发给独立子代理,重点审查文档基于代码改动的合理性、说明正确性、前后一致性、错漏和逻辑谬误,以及 AI 实现过程中产生的决策记录(implementation-notes.md)。当用户需要审查技术文档、spec文档、设计文档、计划文档、API文档、README 或任何与代码改动相关的文档时使用。
代码修改场景下,spec 文档确认后,需要继续以图优先方式梳理结构体定义、数据流和流程时使用
在代码修改前需要编写 spec 文档且应优先用图表达边界、入口、流程和改动关系时使用(仅限代码改动场景,非项目级架构文档初始化)
在代码实现完成后、准备结束任务或进入发布前使用,用来核对代码实现是否与 spec 文档以及 detail 文档一致,并通过代码质量审查、清理、编码规范和注释审查后给出最终验收结论
| name | json-canvas |
| description | 创建和编辑 JSON Canvas 文件(.canvas),支持节点、边、分组和连接。当处理 .canvas 文件、创建可视化画布、思维导图、流程图,或用户提到 Obsidian 中的 Canvas 文件时使用。 |
Canvas 文件(.canvas)包含两个顶层数组,遵循 JSON Canvas Spec 1.0:
{
"nodes": [],
"edges": []
}
nodes(可选):节点对象数组edges(可选):连接节点的边对象数组.canvas 文件,基础结构为 {"nodes": [], "edges": []}"6f0ad84f44ce9c17")id、type、x、y、width、heightfromNode 和 toNode 引用有效节点 ID 来添加边fromNode/toNode 值在 nodes 数组中存在.canvas 文件x、y),避免与已有节点重叠(留出 50-100px 间距)nodes 数组fromNode 和 toNode 为源和目标 IDfromSide/toSide(top、right、bottom、left)指定锚点label 为边添加描述文字edges 数组fromNode 和 toNode 均引用已存在的节点 ID.canvas 文件为 JSONid 定位目标节点或边节点是放置在画布上的对象。数组顺序决定 z-index:第一个节点 = 底层,最后一个节点 = 顶层。
| 属性 | 必填 | 类型 | 描述 |
|---|---|---|---|
id | 是 | string | 唯一的 16 位十六进制标识符 |
type | 是 | string | text、file、link 或 group |
x | 是 | integer | X 坐标(像素) |
y | 是 | integer | Y 坐标(像素) |
width | 是 | integer | 宽度(像素) |
height | 是 | integer | 高度(像素) |
color | 否 | canvasColor | 预设 "1"-"6" 或十六进制颜色(如 "#FF0000") |
| 属性 | 必填 | 类型 | 描述 |
|---|---|---|---|
text | 是 | string | 支持 Markdown 语法的纯文本 |
{
"id": "6f0ad84f44ce9c17",
"type": "text",
"x": 0,
"y": 0,
"width": 400,
"height": 200,
"text": "# Hello World\n\n这是 **Markdown** 内容。"
}
换行陷阱:在 JSON 字符串中使用 \n 表示换行。不要使用字面量的 \\n——Obsidian 会将其渲染为字符 \ 和 n。
| 属性 | 必填 | 类型 | 描述 |
|---|---|---|---|
file | 是 | string | 系统内文件路径 |
subpath | 否 | string | 指向标题或块的链接(以 # 开头) |
{
"id": "a1b2c3d4e5f67890",
"type": "file",
"x": 500,
"y": 0,
"width": 400,
"height": 300,
"file": "Attachments/diagram.png"
}
| 属性 | 必填 | 类型 | 描述 |
|---|---|---|---|
url | 是 | string | 外部 URL |
{
"id": "c3d4e5f678901234",
"type": "link",
"x": 1000,
"y": 0,
"width": 400,
"height": 200,
"url": "https://obsidian.md"
}
分组是用于组织其他节点的可视化容器。将子节点放置在分组的边界内。
| 属性 | 必填 | 类型 | 描述 |
|---|---|---|---|
label | 否 | string | 分组的文本标签 |
background | 否 | string | 背景图片路径 |
backgroundStyle | 否 | string | cover、ratio 或 repeat |
{
"id": "d4e5f6789012345a",
"type": "group",
"x": -50,
"y": -50,
"width": 1000,
"height": 600,
"label": "项目概览",
"color": "4"
}
边通过 fromNode 和 toNode ID 连接节点。
| 属性 | 必填 | 类型 | 默认值 | 描述 |
|---|---|---|---|---|
id | 是 | string | - | 唯一标识符 |
fromNode | 是 | string | - | 源节点 ID |
fromSide | 否 | string | - | top、right、bottom 或 left |
fromEnd | 否 | string | none | none 或 arrow |
toNode | 是 | string | - | 目标节点 ID |
toSide | 否 | string | - | top、right、bottom 或 left |
toEnd | 否 | string | arrow | none 或 arrow |
color | 否 | canvasColor | - | 线条颜色 |
label | 否 | string | - | 文本标签 |
{
"id": "0123456789abcdef",
"fromNode": "6f0ad84f44ce9c17",
"fromSide": "right",
"toNode": "a1b2c3d4e5f67890",
"toSide": "left",
"toEnd": "arrow",
"label": "指向"
}
canvasColor 类型接受十六进制字符串或预设编号:
| 预设 | 颜色 |
|---|---|
"1" | 红色 |
"2" | 橙色 |
"3" | 黄色 |
"4" | 绿色 |
"5" | 青色 |
"6" | 紫色 |
预设颜色值有意不定义具体色值——各应用使用自己的品牌颜色。
生成 16 位小写十六进制字符串(64 位随机值):
"6f0ad84f44ce9c17"
"a3b2c1d0e9f8a7b6"
x 向右递增,y 向下递增;坐标位置为左上角| 节点类型 | 建议宽度 | 建议高度 |
|---|---|---|
| 小文本 | 200-300 | 80-150 |
| 中文本 | 300-450 | 150-300 |
| 大文本 | 400-600 | 300-500 |
| 文件预览 | 300-500 | 200-400 |
| 链接预览 | 250-400 | 100-200 |
创建或编辑 canvas 文件后,验证以下内容:
id 值在节点和边中全局唯一fromNode 和 toNode 引用已存在的节点 IDtext,文件节点需要 file,链接节点需要 url)type 为以下之一:text、file、link、groupfromSide/toSide 值为以下之一:top、right、bottom、leftfromEnd/toEnd 值为以下之一:none、arrow"1" 到 "6" 或有效十六进制值(如 "#FF0000")如果验证失败,检查是否存在重复 ID、悬空边引用或格式错误的 JSON 字符串(特别是文本内容中未转义的换行符)。
完整的 canvas 示例(思维导图、项目看板、研究画布、流程图)参见 references/EXAMPLES.md。