# Claude Code Integration > [!abstract] What this note is > This vault doubles as a **Claude Code project**: an AI assistant can open the repository, understand the vault's rules, and work inside it — creating daily notes, logging entries, filing reference notes. This note explains the pieces and the one big caveat. ## The pieces | Path | What it is | |---|---| | `CLAUDE.md` | The orientation file Claude reads on every session — a condensed [[Vault Schema]] plus rules of engagement | | `.claude/skills/daily-note/` | Skill: create a daily note for any date, with real dates instead of Templater code | | `.claude/skills/log-entry/` | Skill: append a timestamped bullet to a day's `## Log`, optionally a line to the [[Yearly Log]] | | `.claude/scripts/new-daily-note.sh` | The script behind the daily-note skill — a shell rendering of [[Daily Notes Template]] | | `.claude/scripts/vault-check.py` | The vault linter: wikilink integrity, Templater containment, checklist tabs, frontmatter schema, sensitive-content scan | | `.claude/settings.json` | Pre-approved commands so routine vault work doesn't trigger permission prompts | | `.gitignore` | Keeps `workspace.json` (Obsidian UI state) out of version control | | `.github/workflows/` | Automation: every push runs vault-check. Deliberately nothing that commits — only humans (and Claude, on request) write to this repo | None of this affects Obsidian. The app ignores `.claude/` and `.gitignore` entirely; `CLAUDE.md` is just another note. The vault works exactly as before. ## And the website This vault publishes to [jeffs.link](https://jeffs.link) via Obsidian Publish — integration files included. Publishing stays a manual act in the app's publish dialog, so nothing Claude commits reaches the site on its own; git is the staging area, the publish button is the release. The rule Claude works under: **every note is written for the web**, because eventually it's on it. ## The one big caveat: Templater doesn't run here Templater executes `<% %>` code **inside Obsidian only**. When Claude (or any script) creates a note in `journal/`, no plugin fires — so the integration renders the template itself via `new-daily-note.sh`, producing the same result: real dates, real links, real week numbers. > [!warning] Two sources of truth > `templates/Daily Notes Template.md` (for Obsidian) and the heredoc in `.claude/scripts/new-daily-note.sh` (for Claude) must stay in sync. Change one, change the other. ## How to use it Open this repository in Claude Code — the CLI, the desktop app, or [claude.ai/code](https://claude.ai/code) — and ask in plain language: - *"Start today's note"* → creates the daily note in the right month folder - *"Log: finished the tax filing"* → timestamped bullet in today's `## Log` - *"File a reference note about X under reference/Topic"* → a note with proper frontmatter and a Related section Claude reads `CLAUDE.md` automatically; the skills load on demand. ## Later: plugins The eventual next step is custom Obsidian plugins (TypeScript, built against the Obsidian API) developed in this same hybrid repo — likely under a `plugins-src/` folder, with build output copied into `.obsidian/plugins/`. Nothing exists yet; this note will grow when it does. ## Related - [[Vault Schema]] — the vault's blueprint; `CLAUDE.md` is its executive summary - [[Templater Setup]] — why template code can't run outside the app