원클릭으로
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。