Skip to content

Latest commit

 

History

History
138 lines (108 loc) · 12.3 KB

File metadata and controls

138 lines (108 loc) · 12.3 KB

Obsidian Vault: Workspace

Vault Overview

This is Ted's personal Obsidian vault for knowledge management, reading notes, work documentation, and personal thoughts. Content is in both English and Chinese.

Folder Structure

  • Archive/ — Archived/inactive content. Contains Entertainment/ (hobbies, e.g., Mahjong reference notes).
  • Attachments/ — Media files (images, etc.) for general vault notes. Also contains Excalidraw/ (drawings and diagrams). Each Learning plan manages its own attachments under Learning/<CODE>/Attachments/
  • Inbox/ — Fleeting notes capture. Quick thoughts from any source (reading, work, life). Processed weekly into Zettelkasten or deleted.
  • Zettelkasten/ — Permanent notes. Each note is one atomic idea in your own words, linked to other zettel via Related:: field. Frontmatter includes topics (list of keywords for filtering).
  • Learning/ — Structured learning plans, book reading, and skill training. Each plan lives in a subfolder named by its code (e.g. Learning/AISA/). Contains 00_plan.md (goals, phases, timeline), 00_map.md (concept map), Weeks/ (weekly logs), Courses/, Projects/, and Attachments/ (plan-specific media). The folder name is the plan identifier — used as shorthand in all commands (/learning-log AISA). Also contains Books/ (book reading workflow — see Learning/Books/CLAUDE.md) and Training/ (skill builder resources, related to Home Skills tab in the Work section). Managed via /learning/learning-init, /learning/learning-log, /learning/learning-review.
  • Note/ — Persistent quick-reference notes (credentials, demo setups, etc.). Unlike Inbox (which is processed weekly), these stay as-is for easy access.
  • Matter/ — Article notes from Matter app. DO NOT MODIFY / DO NOT MOVE — synced by Matter plugin, folder path is fixed.
  • Instapaper Notes/ — Saved article highlights from Instapaper. DO NOT MODIFY / DO NOT MOVE — synced by Instapaper plugin, folder path is fixed.
  • Feeds/ — Auto-generated content feeds. AI-Daily/ contains daily AI news digests (中英文) generated by Shell Commands plugin on Obsidian startup. GitHub-Trending/ contains daily GitHub trending repos digests (中英文) generated via Claude Code skill command.
  • Podcasts/ — Podcast episodes managed by the podcast pipeline. episodes/ contains episode notes (summary, transcript, audio embed). audio/ contains .mp3 and .srt files (Media Extended plugin provides synced playback + subtitle on desktop). Podcasts.md is the AI-powered recommendation dashboard. Managed via /feeds/podcast. See scripts/podcast/docs/ for full architecture.
  • scripts/ — Vault automation scripts.
    • ai-digest/ — Hybrid Python + Claude Code RSS digest pipeline. Python fetches 92 Karpathy-curated feeds and deduplicates (fetch.py), then Claude Code CLI scores and summarizes bilingually (prompts/score.md, prompts/summarize.md), and Python assembles Obsidian markdown reports (write_reports.py). Run via bash scripts/ai-digest/run.sh.
    • github-trending/ — GitHub trending repos pipeline. Python fetches trending repos via GitHub Search API (fetch.py), Claude Haiku categorizes and scores with bilingual one-liners (enrich.py, prompts/enrich.md), and Python assembles Obsidian markdown reports (write_reports.py). Run via bash scripts/github-trending/run.sh.
    • podcast/ — Podcast pipeline. Python fetches RSS feeds and downloads audio (fetch.py), mlx-whisper transcribes locally with timestamps (transcribe.py), Claude Haiku scores and generates bilingual summaries (enrich.py), and Python generates Obsidian episode notes with embedded audio + transcript (write_notes.py). Lifecycle management auto-archives and cleans up old audio. Run via bash scripts/podcast/run.sh.
  • Profile/ — Personal assessment and self-development. Contains Personal Baseball Card.md (Ray Dalio-inspired Baseball Card with PrinciplesYou assessment + self-evaluation + cross-validation), PrinciplesYou assessment PDF, and profile photo. The Baseball Card is displayed on Home.md via a radar chart in the Work section's Card tab.
  • Templates/ — Note templates for all major workflows (Work Daily, Work Project, Learning Plan, Learning Week, Brownbag Session, Zettel, Inbox, Home backup, Work Dashboard/Weekly/Monthly backups).
  • system/ — Module registry and control center. Each vault feature is a "module" with a standardized manifest in system/modules/. The system/registry.md is a Dataview-powered dashboard showing all modules, their status, commands, dependencies, and configuration locations. When adding a new feature, create a module file first — see system/README.md for the workflow.
  • WeRead/ — Book highlights synced from WeRead (微信读书). DO NOT MODIFY / DO NOT MOVE — this folder is auto-synced by plugin, folder path is fixed.
  • Work/ — Work documentation, organized by year and project
    • archive/ — Past years and completed projects
    • 2026/ — Current year daily notes (YYYY-MM-DD.md)
    • Projects/ — Project pages (one per project, created from template)
    • Brownbag Sessions/ — Brownbag session plans. Each session lives in its own subfolder (e.g., Brownbag Sessions/Bedrock Cost Optimization/). Each session has a unique id (BB-1, BB-2, ...), created date, and acceptance criteria checklist (## 验收标准). Status is auto-inferred from the checklist: all unchecked → planning, partially checked → in-progress, all checked → done. Created via /brownbag/brownbag <topic>. Index at Brownbag Sessions/Brownbag Sessions.md. Shared assets (e.g., slide templates) stay at the Brownbag Sessions/ root.

Key Files

  • GETTING_STARTED.md — Onboarding guide for new users. Start here if you're setting up this vault for the first time.
  • Home.md — Dashboard using Dataview queries. Avoid modifying unless asked. Uses pill/segment tab UI: Work section has [Work | Card] tabs (Card shows Baseball Card radar chart with holographic effect); Feeds section has [AI Digest | GitHub Trending] tabs.
  • sortspec.md — Custom file explorer sort order (Custom File Explorer Sorting plugin). Do not delete.
  • Work/Work Dashboard.md — Work dashboard with task views and project summary.
  • Templates/Work Daily.md — Template for daily work notes.
  • Templates/Work Project.md — Template for project pages.
  • Templates/Learning Plan.md — Template for 00_plan.md (learning plan goals and phases).
  • Templates/Learning Week.md — Template for weekly learning logs (Weeks/YYYY-WXX.md).
  • Templates/Brownbag Session.md — Template for brownbag session plans (used by /brownbag command).
  • Templates/Home.md — Reference backup + design decisions log for Home.md (note-creation button, toolbar design).
  • Templates/Work Dashboard.md — Reference backup + design decisions log for Work/Work Dashboard.md.
  • Templates/Work Weekly View.md — Reference backup + design decisions log for Work/Weekly View.md.
  • Templates/Work Monthly View.md — Reference backup + design decisions log for Work/Monthly View.md.

Conventions

  • Frontmatter: Notes use YAML frontmatter for metadata (author, tags, dates, status, etc.)
  • Links: Use [[wikilinks]] for internal linking
  • Language: Mix of English and Chinese — match the language of the content being worked on
  • Formatting: Use headers (##), callouts (> [!tip]), blockquotes, and lists. Follow existing patterns in the vault.
  • Attachments: Place images/media in Attachments/. Exception: Learning plan assets (screenshots, diagrams, etc.) go in Learning/<CODE>/Attachments/
  • New notes: Place in the appropriate existing folder. If unsure, use Inbox/
  • Zettel notes: One idea per note, written in your own words (not copy-paste). Use [[wikilinks]] in the Related:: field to connect to other zettel. Title should be a descriptive statement (e.g., "Distributed systems trade consistency for availability").
  • Inbox notes: No format required. Just capture the thought. Run /zettelkasten/inbox-review weekly to process: convert to zettel or archive to Inbox/archive/YYYY-MM/.
  • Project tasks: Group tasks under ### ProjectName headings in daily notes (e.g., ### IS2, ### IFM). The heading name must match the filename in Work/Projects/. Dataview queries use t.section.subpath to filter tasks by project.
  • Daily note H1: Use # DayName only (e.g., # Tuesday). The date is already in the filename and date: frontmatter — repeating it in the H1 is redundant. Both Templates/Work Daily.md and the Home.md note-creation button follow this format.
  • Dataview tag filtering: Use p.file.tags.includes("#tag") (not p.tags) in dataviewjs queries for reliable tag matching.
  • Dashboard template sync: When editing Work/Work Dashboard.md, Work/Weekly View.md, or Work/Monthly View.md, update the corresponding Templates/Work *.md reference file and bump its updated: frontmatter date. Append a new dated > [!note] entry to the Design Decisions section when making structural changes.

Installed Plugins

Dataview, Kanban, Calendar, Excalidraw, Tag Wrangler, Table Editor, Footnotes, Mind Map, Homepage, Hider, Style Settings, URL into Selection, WeRead, Plugin Update Tracker, Custom File Explorer Sorting, Spaced Repetition, Shell Commands, Media Extended

Module System

All vault features are tracked as modules in system/modules/. See system/registry.md for the live dashboard.

Command Structure

Commands are organized by module in .claude/commands/:

.claude/commands/
├── zettelkasten/    # /zettelkasten/zettel, /zettelkasten/retro, ...
├── work/            # /work/daily, /work/project, ...
├── learning/        # /learning/learning-init, ...
├── feeds/           # /feeds/ai-digest, /feeds/github-trending
├── brownbag/        # /brownbag/brownbag
├── vault-ops/       # /vault-ops/organize, /vault-ops/backup, ...
└── module-toggle.md # /module-toggle (global)

Module Toggle

Each module has an enabled field in system/modules/<name>/module.md:

  • enabled: true — module active, all commands and automations run normally
  • enabled: false — module disabled:
    • Commands: Each command file has a guard that checks enabled and refuses to run
    • Hooks: upgrade-zettel-status.py checks zettelkasten module status before executing
    • Pipelines: run.sh scripts check their module status before executing

Toggle a module: Use /module-toggle <name> (e.g., /module-toggle feeds-ai-digest)

Module Prerequisites

Each module declares external dependencies via the requires frontmatter field:

Sub-field What it checks Example
cli CLI tools on PATH [claude, git]
python Python minimum version ">=3.13"
pip Python packages [aiohttp]
plugins Obsidian plugin IDs [dataview, obsidian-shellcommands]
env Environment variables {ANTHROPIC_API_KEY: "description"}

/module-toggle checks all requires when enabling a module and blocks if hard prerequisites are missing.

Adding a New Feature

  1. Create module manifest: system/modules/<name>/module.md with enabled: true
  2. Create command files in .claude/commands/<module>/ with module guard at top
  3. Create templates/scripts as needed
  4. The registry auto-discovers the module via Dataview
  5. Update this file (CLAUDE.md) if the feature affects vault structure

Modifying an Existing Feature

  1. Check system/registry.md for dependency/impact analysis
  2. Make changes
  3. Update the module file's frontmatter (updated date, any changed fields)

Rules

  1. NEVER modify or move WeRead/, Matter/, Instapaper Notes/ — these are plugin-synced folders with fixed paths
  2. Preserve existing frontmatter when editing notes
  3. When adding wikilinks, only link to notes that exist or that you are creating
  4. Keep the vault organized — use existing folders before creating new ones
  5. Match the language of the source content (English or Chinese)
  6. New features must have a module file in system/modules/ — create it before or alongside implementation

Book Learning System

See Learning/Books/CLAUDE.md for the full reading workflow. When working inside the Learning/Books/ folder, that file takes precedence for all book-related tasks.