Skill: chatrichai/sync-obsidian (version 1.0.0)

--- name: sync-obsidian description: "Turn every Claude Code session into a beautiful Obsidian note — automatically. Generates dual output: structured Markdown reports + interactive Canvas visual maps. Zero config, auto-detects projects." argument-hint: "[plan|report] [title]" disable-model-invocation: false allowed-tools: Read, Write, Bash, Glob, Grep, Edit --- # 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: ``` OBSIDIAN_VAULT = /Users/you/Documents/Obsidian Vault ``` > 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**: `basename $(git rev-parse --show-toplevel)` 2. **Current directory name**: `basename $PWD` (fallback if not in a git repo) Sync targets are derived from the project name: - **Markdown**: `{OBSIDIAN_VAULT}/[Project] {project_name}/` - **Canvas**: `{OBSIDIAN_VAULT}/[Project] {project_name}/canvas/` > Directories are auto-created if they don't exist (`mkdir -p`). ## Usage ``` /sync-obsidian plan # Sync the latest plan file /sync-obsidian report # Generate and sync an implementation report /sync-obsidian plan Auth Redesign # Sync plan with custom title /sync-obsidian report API Layer # Sync report with custom title ``` - `$ARGUMENTS[0]`: Type — `plan` or `report` (required) - `$ARGUMENTS[1]`: 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 2. Set `PROJECT_DIR = [Project] {project_name}` 3. Set `CANVAS_DIR = [Project] {project_name}/canvas` 4. Run `mkdir -p` to ensure both directories exist ### When type = `plan` 1. Read the latest `.md` file from `.claude/plans/` 2. If no plan file found, extract plan content from the current conversation context 3. Convert to Obsidian note format (see templates below) 4. Write Markdown to `{OBSIDIAN_VAULT}/{PROJECT_DIR}/` 5. Write Canvas to `{OBSIDIAN_VAULT}/{CANVAS_DIR}/` 6. Filename: `[Plan] {title} ({YYYY-MM-DD}).md` / `.canvas` ### When type = `report` 1. Summarize the implementation work completed in the current session 2. Include: what was done, which files changed, key design decisions, follow-up TODOs 3. Convert to Obsidian note format 4. Write Markdown to `{OBSIDIAN_VAULT}/{PROJECT_DIR}/` 5. Write Canvas to `{OBSIDIAN_VAULT}/{CANVAS_DIR}/` 6. Filename: `[Report] {title} ({YYYY-MM-DD}).md` / `.canvas` ## Markdown Templates ### Plan Template ```markdown # [Plan] {title} > Date: {YYYY-MM-DD} > Source: Claude Code Session > Project: {project_name} > Status: Pending / Approved --- {Original plan content, preserved in full markdown} --- > Synced from `.claude/plans/{filename}` ``` ### Report Template ```markdown # [Report] {title} > Completed: {YYYY-MM-DD} > Source: Claude Code Session > Project: {project_name} --- ## Summary {1-3 sentence overview} ## Completed Work {Detailed list of completed work:} - Files created/modified - Key design decisions - Technical details ## File Changes | File | Action | Description | |------|--------|-------------| | ... | Created/Modified | ... | ## Design Decisions {Important architectural/technical decisions and rationale} ## Follow-up TODO - [ ] {Next steps} --- > Auto-generated by Claude Code ``` ## 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 - `grp_work` (color:6 pink) — Completed work: split into sub-cards (steps, rules, etc.) - `grp_files` (color:5 purple) — File changes: table of files and operations - `grp_decisions` (color:3 green) — Design decisions: architecture/tech choices and rationale - `grp_todo` (color:2 orange) — Follow-up TODO: checklist of next steps **Plan Canvas layout:** - `grp_overview` (color:4) — Plan overview and goals - `grp_steps` (color:6) — Implementation steps, one text node per step - `grp_architecture` (color:3) — Architecture/tech decisions - `grp_risks` (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 2. **Quote blocks for metadata** — date, source, status, project in `>` blocks 3. **Preserve original plan content** — never trim or rewrite technical details 4. **Reports must be specific** — list actual file paths, code patterns, design rationale 5. **Always output both files** — Markdown + Canvas on every sync 6. **Report full paths** — tell the user where both files were written 7. **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: ```markdown ## Auto Sync to Obsidian ### Plan Sync (Before Implementation) When a plan/design discussion is complete and about to move into implementation, call `/sync-obsidian plan` FIRST — so the user can review it in Obsidian before giving the green light. Trigger when: - A plan or design discussion has been finalized - User indicates approval intent ("looks good", "let's do it") - Before starting any implementation work Flow: Discuss → Sync plan → User reviews in Obsidian → Confirmed → Implement ### Report Sync (After Implementation) After completing substantive work, call `/sync-obsidian report` before the session ends. Trigger when: - Code files were created, edited, or deleted - A plan was implemented - Important architecture discussions or decisions were made ### Do NOT trigger when: - Pure Q&A / casual chat - Only read files, no modifications - User explicitly says no sync needed ```


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)