refactor: update canvas-dev skill aligned with workflow.md and online prompts

This commit is contained in:
tukuaiai 2026-01-01 07:29:33 +08:00
parent bfa2de8177
commit ec229a736e
2 changed files with 135 additions and 186 deletions

View File

@ -1,37 +1,80 @@
---
name: canvas-dev
description: "Canvas白板驱动开发技能从代码生成架构白板、根据白板生成代码、校验白板与代码一致性。使用场景:接手新项目快速理解架构、新功能开发先画白板再编码、架构重构可视化、团队协作共享架构图。"
description: "Canvas白板驱动开发技能Canvas白板作为唯一真相源代码是其序列化形式。使用场景生成架构白板、白板驱动编码、白板驱动重构、Code Review、团队协作、接手遗留项目。"
---
# canvas-dev Skill
Canvas白板驱动开发图形是第一公民代码是白板的序列化形式。通过 Obsidian Canvas 实现人类与AI的共享工作区
Canvas白板驱动开发图形是第一公民代码是白板的序列化形式。人类负责架构设计AI负责代码实现
## When to Use This Skill
触发条件(满足任一即可):
- 需要快速理解现有项目架构(接手遗留代码
- 新功能开发前需要设计架构(先画后写
- 架构重构需要可视化依赖关系
- Code Review 需要全局视角
- 团队协作需要共享架构图
- 需要生成 Obsidian Canvas 格式的 `.canvas` 文件
- 需要生成项目架构白板(从代码 → 白板
- 需要根据白板生成代码(从白板 → 代码
- 需要白板驱动代码重构
- 需要用白板辅助 Code Review
- 需要用白板加速团队协作
- 接手遗留项目需要快速理解架构
## Not For / Boundaries
此技能不适用于:
- 纯文本文档生成(使用 Markdown 即可
- 纯文本文档生成(使用 Markdown
- 流程图/时序图(使用 Mermaid
- 数据库 ER 图(使用专用工具)
- 不需要双向同步的静态架构图
必要输入(缺失时需询问):
1. 项目代码路径或代码片段
2. 分析粒度file/class/service
3. 技术栈(用于生成代码时)
1. 项目类型A) 单体应用 B) 微服务架构 C) 前后端分离?
2. 白板粒度A) 文件级 B) 类/函数级 C) 服务级?
## Quick Reference
### 核心理念
```
传统:代码 → 口头沟通 → 脑补架构 → 代码失控
Canvas代码 ⇄ 白板 ⇄ AI ⇄ 人类(白板为单一真相源)
```
| 痛点 | 解法 |
|:---|:---|
| AI看不懂项目结构 | AI直接读白板JSON秒懂架构 |
| 人类记不住复杂依赖 | 连线清晰,牵一发动全身一目了然 |
| 团队协作靠嘴说 | 指着白板讲新人5分钟看懂 |
### 15步完整工作流
1. **理解核心理念**Canvas白板作为唯一真相源代码是其序列化形式图形语言优于文字描述人类负责架构设计AI负责代码实现
2. **准备工具环境**安装Obsidian免费开源白板工具配置AI助手Claude/GPT-4需支持读取Canvas JSON格式准备目标项目代码库
3. **生成初始架构白板**向AI提供项目代码路径使用架构分析提示词让AI扫描项目结构AI自动生成.canvas文件包含模块节点和依赖连线
4. **用Obsidian打开.canvas文件**导入生成的架构白板检查自动识别的模块、文件、API调用关系验证关键依赖连线是否准确
5. **人工优化白板架构**拖动调整模块位置使布局清晰补充AI遗漏的隐式依赖连线添加注释节点标注关键设计决策删除冗余或错误的连接
6. **建立代码-白板同步机制**配置代码变更监听脚本设置白板自动更新规则新文件→新节点新import→新连线或手动维护每次代码改动后更新对应白板区域
7. **用白板驱动AI编程新功能开发**在白板上画出新模块框和预期调用关系导出白板JSON发送给AI指令"按照这个架构图实现具体代码"AI根据节点名称、连线方向生成文件和函数调用
8. **用白板驱动代码重构**:在白板上删除/重连模块间的依赖线标注需要拆分的大模块发送修改后的白板给AI"按新架构重构代码,列出需要修改的文件清单"
9. **用白板辅助Code Review**Review前先看白板全局架构识别异常连线如前端直接连数据库、循环依赖在白板上标注问题点讨论时指着白板说明
10. **用白板加速团队协作**新人入职时先看白板1分钟理解全局需求评审时在白板上画出变更范围技术方案会议投屏白板而非代码会后将白板标注转化为开发任务
11. **维护白板与代码一致性**每次PR/MR合并前检查白板是否需要更新定期运行自动校验脚本发现不一致时优先修正白板白板是事实来源
12. **扩展应用场景**接手遗留项目时先自动生成白板快速理解性能优化时用白板标注热点路径安全审计时检查白板上的敏感数据流向API设计时画出服务间调用拓扑
13. **明确项目类型**A) 单体应用(单进程多模块) B) 微服务架构多服务RPC通信 C) 前后端分离(前端框架+后端API
14. **选择白板粒度**A) 文件级(每个代码文件一个节点)- 推荐新手 B) 类/函数级(每个类一个节点) C) 服务级(仅显示大模块)- 推荐复杂项目
15. **持续迭代工作流**每周回顾白板是否反映真实架构收集团队反馈优化节点命名和布局规则探索白板与CI/CD集成
### Canvas JSON 基础结构
```json
@ -45,202 +88,102 @@ Canvas白板驱动开发图形是第一公民代码是白板的序列化
}
```
### 节点类型
### 白板自动生成示例
| type | 用途 | 示例 |
|:---|:---|:---|
| `text` | 模块/类/文件 | `{"type": "text", "text": "# UserService"}` |
| `group` | 功能分组 | `{"type": "group", "label": "API层"}` |
| `file` | 链接文件 | `{"type": "file", "file": "src/user.py"}` |
### 连线方向
| fromSide/toSide | 含义 |
|:---|:---|
| `right``left` | 水平调用(推荐) |
| `bottom``top` | 垂直依赖 |
| `top``bottom` | 继承关系 |
### 常用 label 标注
- `调用` - 函数/方法调用
- `依赖` - import/require
- `继承` - extends/implements
- `数据流` - 参数传递
- `FK: field` - 外键关系
### 分层布局约定
```
x轴: -400 (前端) → 0 (API) → 400 (服务) → 800 (数据)
y轴: 每层内按功能分组,间距 120-150
```python
# 你写了新文件 payment_service.py
class PaymentService:
def process(self):
db.save() # ← AI检测到数据库写入
stripe.charge() # ← AI检测到外部API调用
```
### 颜色编码Obsidian Canvas
| color | 含义 |
|:---|:---|
| `1` | 红色 - 缓存/热点 |
| `2` | 橙色 - 消息队列 |
| `3` | 黄色 - 上游依赖 |
| `4` | 绿色 - 数据库 |
| `5` | 蓝色 - 搜索/外部服务 |
| `6` | 紫色 - 注释/设计决策 |
**白板自动生成:**
```
[PaymentService] ──写入──> [数据库]
└──调用──> [Stripe API]
```
## Rules & Constraints
### MUST必须遵守
- 节点 `id` 必须唯一且有意义(如 `svc-user`,非 `node1`
- 连线必须反映真实的代码依赖关系
- 生成的 `.canvas` 文件必须是合法 JSON
- Canvas白板是唯一真相源代码是其序列化形式
- 白板修改后必须同步更新相关代码
- 发现不一致时优先修正白板
### SHOULD强烈建议
- 按功能域分组API层/服务层/数据层)
- 节点 text 使用 Markdown 格式(`# 标题` + 列表)
- 保持布局整洁(对齐、等间距)
- 为复杂依赖添加 label 说明
- 人类负责架构设计(在白板拖拽模块)
- AI负责细节实现根据白板连线生成代码
- 都编辑同一个白板,而不是来回传递文本
### NEVER禁止
- 不要生成与代码不一致的白板
- 不要在白板中包含敏感信息(密钥/密码)
- 不要创建循环依赖的连线(除非代码确实如此)
- 不要让白板与代码长期不同步
- 不要在白板中包含敏感信息
## Examples
### Example 1: 从代码生成架构白板
### Example 1: 给AI派活新功能开发
**Input:**
```
项目路径: /home/user/my-api
技术栈: Python FastAPI
粒度: file
```
**传统方式:**
> "帮我写个用户注册功能,要连数据库,发邮件,记日志"
**Steps:**
1. 扫描项目目录,识别 `.py` 文件
2. 分析 `import` 语句提取依赖关系
3. 识别 FastAPI 路由、数据库模型、外部调用
4. 按三层架构布局节点
5. 生成 `.canvas` JSON
**Canvas方式:**
1. 在白板画3个框`RegisterAPI` → `Database` / `EmailService` / `Logger`
2. 告诉AI"按这个图实现"
3. AI一次性写对所有文件和调用关系
**Expected Output:**
```json
{
"nodes": [
{"id": "api-user", "type": "text", "x": -200, "y": 0, "width": 200, "height": 100, "text": "# user_router.py\n- POST /users\n- GET /users/{id}"},
{"id": "svc-user", "type": "text", "x": 100, "y": 0, "width": 200, "height": 100, "text": "# user_service.py\n- create_user()\n- get_user()"},
{"id": "model-user", "type": "text", "x": 400, "y": 0, "width": 200, "height": 100, "text": "# user_model.py\n- User\n- id, name, email"}
],
"edges": [
{"id": "e1", "fromNode": "api-user", "toNode": "svc-user", "fromSide": "right", "toSide": "left", "label": "调用"},
{"id": "e2", "fromNode": "svc-user", "toNode": "model-user", "fromSide": "right", "toSide": "left", "label": "操作"}
]
}
```
### Example 2: Code Review
### Example 2: 根据白板生成代码
**传统方式:** 一行行看代码,看晕了
**Input:**
```
Canvas JSON: (包含 UserAPI → UserService → UserModel 的白板)
技术栈: Python FastAPI + SQLAlchemy
目标目录: /home/user/new-project
```
**Canvas方式:**
1. 看白板:"咦,为什么前端直接连数据库?"
2. 拖动节点调整架构
3. AI自动重构代码
**Steps:**
1. 解析节点 → 生成文件/类
2. 解析连线 → 生成 import 和调用
3. 按技术栈最佳实践填充代码
### Example 3: 接手他人项目
**Expected Output:**
```python
# user_router.py
from fastapi import APIRouter
from .user_service import UserService
**传统方式:** 看3天代码还没懂
router = APIRouter()
service = UserService()
@router.post("/users")
def create_user(data: dict):
return service.create_user(data)
```
### Example 3: 白板与代码一致性检查
**Input:**
```
Canvas: architecture.canvas
项目: /home/user/my-project
```
**Steps:**
1. 提取白板节点列表
2. 扫描项目文件列表
3. 对比差异
**Expected Output:**
```
🔴 严重不一致:
- 白板缺失: payment_service.py (代码存在但白板未记录)
- 错误连线: UserService → Database (代码中无直接调用)
🟢 覆盖率: 85%
📋 修复建议:
1. 在白板添加 payment_service 节点
2. 删除 UserService → Database 连线,改为 UserService → UserRepository → Database
```
**Canvas方式:**
1. 运行自动生成工具 → 1分钟得到架构白板
2. 点开感兴趣的模块看详情
3. 直接在白板上画出要改的部分AI帮你定位代码位置
## FAQ
**Q: 为什么选择 Obsidian Canvas 而不是其他工具**
- A: Obsidian Canvas 是免费开源的,`.canvas` 文件是纯 JSON 格式AI 可以直接读写,支持双向同步
**Q: 为什么图形语言优于文字描述?**
- A: 图形语言是人类大脑的母语。你能瞬间理解地铁线路图但看不懂等效的换乘文字说明。AI解析JSON比解析自然语言描述准确10倍。
**Q: 白板粒度选 file 还是 class**
- A: 小项目(<20文件 file大项目选 class service关键是保持白板可读性
**Q: 白板粒度怎么选?**
- A: 新手选文件级A复杂项目选服务级C。关键是保持白板可读性。
**Q: 如何处理循环依赖**
- A: 如果代码确实存在循环依赖,在白板中如实标注,并添加注释节点说明这是技术债务
**Q: 代码生成已经商品化,为什么还需要这个?**
- A: 架构设计才是稀缺能力。未来程序员的工作设计白板架构AI的工作把白板翻译成代码。
## Troubleshooting
## 金句总结
| 症状 | 可能原因 | 解决方案 |
|:---|:---|:---|
| Obsidian 无法打开 .canvas | JSON 格式错误 | 用 `jq .` 验证 JSON |
| 节点重叠 | x/y 坐标冲突 | 调整布局,保持 200+ 间距 |
| 连线不显示 | fromNode/toNode id 错误 | 检查节点 id 是否匹配 |
| AI 生成代码与白板不符 | 白板描述不够具体 | 在节点 text 中添加更多细节 |
> "当代码变成白板上的方块,编程就从打字变成了搭积木。"
> "最好的文档不是Markdown是能直接驱动AI工作的架构图。"
> "AI看懂你的图比看懂你的话容易一万倍。"
## References
- `references/index.md` - 导航索引
- `references/canvas-json-spec.md` - Canvas JSON 完整规范
- `references/workflow-guide.md` - 完整工作流指南
- `references/prompts.md` - 提示词集合
外部资源:
- [Canvas白板生成提示词](https://docs.google.com/spreadsheets/d/1Ifk_dLF25ULSxcfGem1hXzJsi7_RBUNAki8SBCuvkJA/edit?gid=1777853069#gid=1777853069&range=A1) - 自动生成架构白板的完整提示词(最新)
- [Canvas驱动开发完整工作流](../../workflow/canvas-dev/workflow.md) - 15步完整流程
- [Canvas白板驱动开发详解](../../documents/02-方法论/图形化AI协作-Canvas白板驱动开发.md) - 方法论详解
- [白板驱动开发系统提示词](../../prompts/01-系统提示词/AGENTS.md/12/AGENTS.md) - 适配Canvas白板驱动开发的AGENTS.md
- [Obsidian Canvas 官方文档](https://obsidian.md/canvas)
- [Canvas白板驱动开发详解](../../documents/02-方法论/图形化AI协作-Canvas白板驱动开发.md)
- [Canvas开发工作流](../../workflow/canvas-dev/README.md)
- `references/index.md` - 本地参考文档导航
## Maintenance
- Sources: Obsidian Canvas 官方文档 + 本地工作流实践
- Sources: workflow.md + 在线提示词表格 + 方法论文档
- Last updated: 2026-01-01
- Known limits: 仅支持 Obsidian Canvas 格式,不支持其他白板工具
## Quality Gate
发布前检查:
1. ✅ `description` 包含具体触发关键词
2. ✅ "When to Use" 列出可判定的触发条件
3. ✅ "Not For / Boundaries" 明确边界
4. ✅ Quick Reference <= 20 个模式
5. ✅ >= 3 个可复现的示例
6. ✅ 长内容放入 `references/`
7. ✅ 无虚构内容,不确定处标注验证路径
- Known limits: 仅支持 Obsidian Canvas 格式

View File

@ -2,33 +2,39 @@
## 导航索引
### 最新资源(优先参考)
| 资源 | 链接 | 说明 |
|:---|:---|:---|
| Canvas白板生成提示词 | [在线表格](https://docs.google.com/spreadsheets/d/1Ifk_dLF25ULSxcfGem1hXzJsi7_RBUNAki8SBCuvkJA/edit?gid=1777853069#gid=1777853069&range=A1) | 自动生成架构白板的完整提示词(最新) |
| Canvas驱动开发完整工作流 | [workflow.md](../../../workflow/canvas-dev/workflow.md) | 15步完整流程 |
### 核心文档
| 文档 | 说明 |
|:---|:---|
| [canvas-json-spec.md](./canvas-json-spec.md) | Obsidian Canvas JSON 完整规范 |
| [workflow-guide.md](./workflow-guide.md) | 完整工作流指南 |
| [prompts.md](./prompts.md) | 提示词集合 |
| 文档 | 路径 | 说明 |
|:---|:---|:---|
| Canvas白板驱动开发详解 | `../../documents/02-方法论/图形化AI协作-Canvas白板驱动开发.md` | 方法论详解 |
| 白板驱动开发系统提示词 | `../../prompts/01-系统提示词/AGENTS.md/12/AGENTS.md` | 适配Canvas的AGENTS.md |
| Canvas JSON 规范 | [canvas-json-spec.md](./canvas-json-spec.md) | Obsidian Canvas JSON 格式 |
### 相关资源
### 工作流提示词
| 资源 | 路径 |
| 提示词 | 路径 |
|:---|:---|
| Canvas白板驱动开发详解 | `../../documents/02-方法论/图形化AI协作-Canvas白板驱动开发.md` |
| Canvas开发工作流 | `../../workflow/canvas-dev/` |
| 架构分析提示词 | `../../workflow/canvas-dev/prompts/01-架构分析.md` |
| 白板驱动编码提示词 | `../../workflow/canvas-dev/prompts/02-白板驱动编码.md` |
| 白板同步检查提示词 | `../../workflow/canvas-dev/prompts/03-白板同步检查.md` |
| 架构分析提示词 | `../../../workflow/canvas-dev/prompts/01-架构分析.md` |
| 白板驱动编码提示词 | `../../../workflow/canvas-dev/prompts/02-白板驱动编码.md` |
| 白板同步检查提示词 | `../../../workflow/canvas-dev/prompts/03-白板同步检查.md` |
### 模板
| 模板 | 路径 |
|:---|:---|
| 项目白板模板 | `../../workflow/canvas-dev/templates/project.canvas` |
| 模块白板模板 | `../../workflow/canvas-dev/templates/module.canvas` |
| 示例项目白板 | `../../workflow/canvas-dev/examples/demo-project.canvas` |
| 项目白板模板 | `../../../workflow/canvas-dev/templates/project.canvas` |
| 模块白板模板 | `../../../workflow/canvas-dev/templates/module.canvas` |
| 示例项目白板 | `../../../workflow/canvas-dev/examples/demo-project.canvas` |
### 外部链接
- [Obsidian Canvas 官方文档](https://obsidian.md/canvas)
- [Obsidian 下载](https://obsidian.md/download)
- [胶水编程](../../documents/00-基础指南/胶水编程.md) - 能抄不写,能连不造