Sync to Obsidian — Auto-Detect Project Sync
Automatically sync your Claude Code session plans and implementation reports to your Obsidian vault.
Every sync produces two files: a detailed Markdown note + an Obsidian Canvas visual map.
The project name is auto-detected — no per-project configuration needed.
Configuration
Only one path to set — your Obsidian vault root:
CODEBLOCK0
Update this to your actual Obsidian vault path before first use.
Auto Project Detection
The skill automatically detects the current project name (in priority order):
- 1. Git repo name: INLINECODE0
- Current directory name:
basename $PWD (fallback if not in a git repo)
Sync targets are derived from the project name:
- - Markdown: INLINECODE2
- Canvas: INLINECODE3
Directories are auto-created if they don't exist (mkdir -p).
Usage
CODEBLOCK1
- -
$ARGUMENTS[0]: Type — plan or report (required) - INLINECODE8 : Custom title (optional — auto-inferred from content if omitted)
Execution Flow
Step 0: Detect Project
- 1. Run
basename $(git rev-parse --show-toplevel 2>/dev/null) 2>/dev/null || basename $PWD to get project name - Set INLINECODE10
- Set INLINECODE11
- Run
mkdir -p to ensure both directories exist
When type = plan
- 1. Read the latest
.md file from INLINECODE15 - If no plan file found, extract plan content from the current conversation context
- Convert to Obsidian note format (see templates below)
- Write Markdown to INLINECODE16
- Write Canvas to INLINECODE17
- Filename:
[Plan] {title} ({YYYY-MM-DD}).md / INLINECODE19
When type = report
- 1. Summarize the implementation work completed in the current session
- Include: what was done, which files changed, key design decisions, follow-up TODOs
- Convert to Obsidian note format
- Write Markdown to INLINECODE21
- Write Canvas to INLINECODE22
- Filename:
[Report] {title} ({YYYY-MM-DD}).md / INLINECODE24
Markdown Templates
Plan Template
CODEBLOCK2
Report Template
CODEBLOCK3
Canvas Sync (Dual Output)
Every Markdown sync also generates an Obsidian Canvas file (.canvas) for visual exploration.
Canvas Structure
Canvas is a JSON format with nodes (cards/groups) and edges (connections).
Report Canvas layout:
- -
grp_summary (color:4 cyan) — Summary: title + date + 1-3 sentence overview - INLINECODE29 (color:6 pink) — Completed work: split into sub-cards (steps, rules, etc.)
- INLINECODE30 (color:5 purple) — File changes: table of files and operations
- INLINECODE31 (color:3 green) — Design decisions: architecture/tech choices and rationale
- INLINECODE32 (color:2 orange) — Follow-up TODO: checklist of next steps
Plan Canvas layout:
- -
grp_overview (color:4) — Plan overview and goals - INLINECODE34 (color:6) — Implementation steps, one text node per step
- INLINECODE35 (color:3) — Architecture/tech decisions
- INLINECODE36 (color:2) — Risks and considerations
Layout principles:
- - Groups connected by edges showing flow direction
- Top-left start: Summary → Work/Steps → Files/Architecture → TODO
- Color key: 1=red, 2=orange, 3=green, 4=cyan, 5=purple, 6=pink
Sizing rules (prevent content clipping):
- - Text node min width 320px, recommended 500-660px
- Estimate 35px per line of text (including line spacing)
- Headers (##) at 45px, code blocks at 28px per line
- Text node height = line_count × 35 + 60 (top/bottom padding)
- Groups add 20px padding around contained text nodes
- Minimum 80px gap between groups (vertical and horizontal)
- Better too large than too small — clipping is worse than whitespace
Important Rules
- 1. No YAML frontmatter — use
> quote blocks for metadata instead - Quote blocks for metadata — date, source, status, project in
> blocks - Preserve original plan content — never trim or rewrite technical details
- Reports must be specific — list actual file paths, code patterns, design rationale
- Always output both files — Markdown + Canvas on every sync
- Report full paths — tell the user where both files were written
- Auto-create directories — use
mkdir -p if project or canvas dir doesn't exist
Auto-Sync Setup (Optional)
Add this to your project's CLAUDE.md to enable the full sync lifecycle:
CODEBLOCK4
同步到Obsidian — 自动检测项目同步
自动将您的Claude Code会话计划和实施报告同步到Obsidian仓库。
每次同步生成两个文件:一份详细的Markdown笔记 + 一份Obsidian Canvas可视化图谱。
项目名称自动检测 — 无需逐个项目配置。
配置
只需设置一个路径 — 您的Obsidian仓库根目录:
OBSIDIAN_VAULT = /Users/you/Documents/Obsidian Vault
首次使用前请将其更新为您实际的Obsidian仓库路径。
自动项目检测
该技能自动检测当前项目名称(按优先级排序):
- 1. Git仓库名称:basename $(git rev-parse --show-toplevel)
- 当前目录名称:basename $PWD(不在Git仓库中时的回退方案)
同步目标根据项目名称生成:
- - Markdown:{OBSIDIANVAULT}/[Project] {projectname}/
- Canvas:{OBSIDIANVAULT}/[Project] {projectname}/canvas/
如果目录不存在,会自动创建(mkdir -p)。
使用方法
/sync-obsidian plan # 同步最新的计划文件
/sync-obsidian report # 生成并同步实施报告
/sync-obsidian plan Auth Redesign # 使用自定义标题同步计划
/sync-obsidian report API Layer # 使用自定义标题同步报告
- - $ARGUMENTS[0]:类型 — plan 或 report(必填)
- $ARGUMENTS[1]:自定义标题(可选 — 省略时从内容自动推断)
执行流程
第0步:检测项目
- 1. 运行 basename $(git rev-parse --show-toplevel 2>/dev/null) 2>/dev/null || basename $PWD 获取项目名称
- 设置 PROJECTDIR = [Project] {projectname}
- 设置 CANVASDIR = [Project] {projectname}/canvas
- 运行 mkdir -p 确保两个目录都存在
当类型 = plan
- 1. 从 .claude/plans/ 读取最新的 .md 文件
- 如果未找到计划文件,从当前会话上下文中提取计划内容
- 转换为Obsidian笔记格式(参见下方模板)
- 将Markdown写入 {OBSIDIANVAULT}/{PROJECTDIR}/
- 将Canvas写入 {OBSIDIANVAULT}/{CANVASDIR}/
- 文件名:[Plan] {title} ({YYYY-MM-DD}).md / .canvas
当类型 = report
- 1. 总结当前会话中完成的实施工作
- 包括:完成的内容、更改的文件、关键设计决策、后续待办事项
- 转换为Obsidian笔记格式
- 将Markdown写入 {OBSIDIANVAULT}/{PROJECTDIR}/
- 将Canvas写入 {OBSIDIANVAULT}/{CANVASDIR}/
- 文件名:[Report] {title} ({YYYY-MM-DD}).md / .canvas
Markdown模板
计划模板
markdown
[Plan] {title}
日期:{YYYY-MM-DD}
来源:Claude Code会话
项目:{project_name}
状态:待定 / 已批准
{原始计划内容,完整保留Markdown格式}
同步自 .claude/plans/{filename}
报告模板
markdown
[Report] {title}
完成日期:{YYYY-MM-DD}
来源:Claude Code会话
项目:{project_name}
摘要
{1-3句话概述}
已完成工作
{已完成工作的详细列表:}
文件变更
设计决策
{重要的架构/技术决策及其理由}
后续待办
由Claude Code自动生成
Canvas同步(双重输出)
每次Markdown同步同时生成一个Obsidian Canvas文件(.canvas),用于可视化探索。
Canvas结构
Canvas是一种JSON格式,包含nodes(卡片/组)和edges(连接线)。
报告Canvas布局:
- - grpsummary(颜色:4 青色)— 摘要:标题 + 日期 + 1-3句话概述
- grpwork(颜色:6 粉色)— 已完成工作:拆分为子卡片(步骤、规则等)
- grpfiles(颜色:5 紫色)— 文件变更:文件及操作表格
- grpdecisions(颜色:3 绿色)— 设计决策:架构/技术选择及其理由
- grp_todo(颜色:2 橙色)— 后续待办:后续步骤的检查清单
计划Canvas布局:
- - grpoverview(颜色:4)— 计划概述和目标
- grpsteps(颜色:6)— 实施步骤,每个步骤一个文本节点
- grparchitecture(颜色:3)— 架构/技术决策
- grprisks(颜色:2)— 风险和注意事项
布局原则:
- - 组之间通过连接线连接,显示流程方向
- 从左上角开始:摘要 → 工作/步骤 → 文件/架构 → 待办
- 颜色标识:1=红色,2=橙色,3=绿色,4=青色,5=紫色,6=粉色
尺寸规则(防止内容裁剪):
- - 文本节点最小宽度320px,推荐500-660px
- 每行文本估算35px(含行间距)
- 标题(##)45px,代码块每行28px
- 文本节点高度 = 行数 × 35 + 60(上下内边距)
- 组在包含的文本节点周围增加20px内边距
- 组之间最小间距80px(垂直和水平方向)
- 宁可过大不可过小 — 裁剪比留白更糟糕
重要规则
- 1. 不使用YAML前置元数据 — 改用 > 引用块表示元数据
- 元数据使用引用块 — 日期、来源、状态、项目放在 > 块中
- 保留原始计划内容 — 绝不删减或重写技术细节
- 报告必须具体 — 列出实际文件路径、代码模式、设计理由
- 始终输出两个文件 — 每次同步都生成Markdown + Canvas
- 报告完整路径 — 告知用户两个文件的写入位置
- 自动创建目录 — 如果项目或Canvas目录不存在,使用 mkdir -p
自动同步设置(可选)
将以下内容添加到项目的 CLAUDE.md 中,以启用完整的同步生命周期:
markdown
自动同步到Obsidian
计划同步(实施前)
当计划/设计讨论完成并即将进入实施阶段时,
先调用 /sync-obsidian plan — 以便用户在Obsidian中审查后再批准。
触发条件:
- - 计划或设计讨论已定稿
- 用户表示批准意向(看起来不错、开始吧)
- 在开始任何实施工作之前
流程:讨论 → 同步计划 → 用户在Obsidian中审查 → 确认 → 实施
报告同步(实施后)
完成实质性工作后,在会话结束前调用 /sync-obsidian report。
触发条件:
- - 创建、编辑或删除了代码文件
- 实施了计划
- 进行了重要的架构讨论或决策
不要触发的情况:
- - 纯问答/闲聊
- 仅读取文件,无修改
- 用户明确表示不需要同步