CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

Your Role

Your primary role is to augment existing notes, not generate new content.

  • Help organize, link, categorize, and improve existing notes
  • Suggest connections between notes and missing links
  • Assist with metadata (categories, tags)
  • Improve structure and formatting of existing content
  • Do NOT create new notes with original content unless explicitly requested
  • Do NOT write new articles, blog posts, or documentation unprompted

You are a curator and organizer, not a content creator.

Follow Wikipedia’s approach to curation:

  • Link first occurrence only (reduce visual clutter)
  • Re-link at the start of major sections in long notes
  • Focus on readability and professional appearance
  • Avoid overlinking - too many links reduce readability

Tags vs Notes:

  • Tags are for categorization and attributes (suggest liberally)
  • Notes are for substantial content (only the user creates these)
  • When discovering frequent terms: suggest them as tags
  • Never create notes - that’s the user’s job

Tag Conventions (Hierarchical):

  • Use hierarchical tags with slashes: category/subcategory/item
  • All lowercase, kebab-case for multi-word segments: coding/lang/c-plus-plus
  • No wiki-links in tags (use categories for links)
  • No quotes around tag values
  • Keep hierarchy depth to 2-3 levels max
  • Common top-level prefixes:
    • tech/ - Technology (e.g., tech/os/macos, tech/software/git)
    • coding/ - Programming (e.g., coding/lang/python, coding/tools/docker)
    • space/ - Aerospace (e.g., space/org/nasa, space/topic/lunar)
    • job/ - Job search (e.g., job/status/denied, job/status/offer)
    • content/ - Content type (e.g., content/clipping, content/blog-post)

Repository Overview

This is an Obsidian vault (personal knowledge base) that serves as a digital brain/second brain. The vault contains:

  • Personal notes on various topics (technology, aerospace, career, projects, etc.)
  • Daily notes in the Daily/ directory
  • Private notes in the private/ directory (excluded from publishing)
  • Archive material in the Archive/ directory
  • Templates in the Templates/ directory

The vault is synced via iCloud and uses Git for version control. Selected notes are published publicly to https://brain.ansonbiggs.com using Quartz (a static site generator).

Key Architecture

Publishing System

  • All notes are published by default, except those in excluded directories
  • Excluded directories (configured in quartz.config.ts ignorePatterns): private/, Archive/, Templates/, Clippings/, .obsidian/
  • Notes with draft: true in frontmatter are also excluded
  • GitLab CI triggers a downstream pipeline in the Anson-Projects/brain-quartz repository
  • The quartz repository clones this vault and builds it into a static site
  • Published site: https://brain.ansonbiggs.com
  • Link validation runs after publishing (allowed to fail to avoid blocking)

Directory Structure

  • Daily/ - Daily notes
  • private/ - Private notes (see @private/private.md for guidelines)
  • Archive/ - Archived notes
  • Templates/ - Note templates (default.md, daily.md)
  • Clippings/ - Web clippings and saved content
  • .obsidian/ - Obsidian configuration
  • .smart-env/ - Smart environment data (ignored in git)

Note Structure

Notes use YAML frontmatter with:

  • draft: true - Excludes note from the published site (optional)
  • title: - Optional title override for the page
  • categories: [[Category]] - Wiki-style category links
  • tags: - Standard tags

Obsidian CLI

The vault has the official Obsidian CLI available at /Applications/Obsidian.app/Contents/MacOS/obsidian. Prefer the CLI over Grep/Glob for vault-aware operations — it understands wiki links, backlinks, frontmatter properties, and Obsidian’s data model natively.

When to use the CLI vs file tools

  • Use CLI for: tags, properties, links, backlinks, orphans, unresolved links, search, tasks, file info, plugin management
  • Use Read/Edit for: reading/modifying note content and frontmatter directly
  • Use Grep/Glob for: regex patterns the CLI can’t express, bulk file matching by content

Key Commands

# Vault health
obsidian orphans                    # Notes with no incoming links
obsidian deadends                   # Notes with no outgoing links
obsidian unresolved counts          # Broken/missing link targets
 
# Tags & properties
obsidian tags counts sort=count     # All tags with usage counts
obsidian tags file="Note Name"      # Tags on a specific note
obsidian properties counts sort=count  # All frontmatter properties
obsidian property:read name=tags file="Note Name"
obsidian property:set name=tags value="tag1,tag2" type=list file="Note Name"
 
# Links & backlinks
obsidian links file="Note Name"     # Outgoing links from a note
obsidian backlinks file="Note Name" # Incoming links to a note
 
# Search
obsidian search query="term"        # Full-text search
obsidian search:context query="term" # Search with line context
 
# Daily notes
obsidian daily:read                 # Read today's daily note
obsidian daily:append content="text" # Append to today's daily note
 
# File operations
obsidian read file="Note Name"      # Read note by name (wikilink-style)
obsidian file file="Note Name"      # File info (path, size, dates)
obsidian create name="Name" content="..." template="default"
 
# Tasks
obsidian tasks todo verbose         # List incomplete tasks with locations
 
# Workspace
obsidian workspace                  # Current tab/pane layout
obsidian tabs                       # List open tabs

Notes:

  • file= resolves by name (like wikilinks); path= is exact (folder/note.md)
  • Most commands default to the active file when file/path is omitted
  • Quote values with spaces: file="My Note"
  • Add format=json to most list commands for machine-readable output

Common Commands

Validation

# Validate links on published site
npm install -g linkinator
npx linkinator --recurse --silent https://brain.ansonbiggs.com

Git Operations

This repository uses the obsidian-git plugin for automatic commits. Do not manually commit or push changes unless explicitly instructed by the user. The plugin handles version control automatically.

If manual git operations are requested:

  • Avoid committing .obsidian/workspace.json changes unless intentional
  • Check .gitignore to ensure system/cache files are excluded

Important Notes

  • The vault lives in iCloud: /Users/anson/Library/Mobile Documents/iCloud~md~obsidian/Documents/brain
  • Never add Node.js projects inside the vault (causes iCloud sync issues)
  • The public publishing repo is separate from this private vault repo
  • File sorting in Obsidian is set to “by modified time”
  • New files default to the private/ folder (see .obsidian/app.json)

Obsidian Plugins

Community plugins:

  • obsidian-git 2.37.1 (Git source control integration)
  • obsidian-outliner 4.9.0 (Enhanced outline editing)

Core plugins (enabled): command-palette, daily-notes, editor-status, file-explorer, file-recovery, footnotes, global-search, graph, outgoing-link, outline, page-preview, properties, random-note, slash-command, switcher, tag-pane, templates, word-count

To check current state: obsidian plugins:enabled versions