# Egg Vault
This repository is an **Obsidian vault** — a bullet journal with a reference library attached — hybridized with a Claude Code project. Every file is plain Markdown; git is the safety net.
The authoritative blueprint is [`reference/Obsidian/Vault Schema.md`](reference/Obsidian/Vault%20Schema.md). If this file and that note ever disagree, the Vault Schema note wins — and both should be fixed.
## This vault is a website
The entire vault publishes to **https://jeffs.link** via Obsidian Publish — including this file. Two consequences:
- **Everything is public-facing writing.** Write every note, log line, and frontmatter field as something a stranger will read on the web. Flag anything that looks sensitive (names, addresses, credentials) before committing it.
- **Git and the live site are independent.** Publishing happens manually from the Obsidian app's publish dialog; nothing committed here goes live until Jeff pushes it there. Commits are safe — but they're staging for the public site, not private storage.
## Layout
```
journal/ daily writing (one note per day + one Yearly Log per year)
2026/07_July/ one folder per month (MM_MMMM)
Index/ one index note per year
reference/ evergreen notes, filed by topic (Obsidian, Markdown, …)
templates/ Templater templates (the only place <% %> syntax belongs)
images/ attachments
.obsidian/ Obsidian machine settings — treat as read-only
.claude/ this Claude Code project (skills, scripts, settings)
.github/ automation: vault-check runs on every push (read-only, never commits)
```
## Conventions
- **Daily notes**: `journal/YYYY/MM_MMMM/YYYY-MM-DD dddd.md` (e.g. `journal/2026/07_July/2026-07-10 Friday.md`). Frontmatter carries `previous`/`next` wikilinks, `created`, `week` (`'W28'`), `tags: [☀️]`, `resources:`, `stakeholders:`. Body has three sections: `## Routine` (checklist), `## Log` (timestamped bullets `- **HH:MM** — text`), `## Notes`.
- **Yearly Log** (`journal/2026/Yearly Log.md`): one line per notable event, filed under the month's `##` heading.
- **Links are wikilinks** (`[[2026-07-09 Thursday]]`) and must match filenames exactly.
- **Indentation in checklists uses tabs**, not spaces (see the daily template).
- Reference notes start with YAML frontmatter (`tags`, `created`) and often an `> [!abstract]` callout stating what the note is.
- Archives get a `z_` prefix so they sort last (`journal/z_Archives/`).
## Rules for Claude
1. **Never put Templater syntax (`<% … %>`) in a real note.** Templater only runs inside Obsidian. When creating a daily note from here, render the dynamic values yourself — use `.claude/scripts/new-daily-note.sh` (or the `daily-note` skill), which reproduces the template exactly.
2. **Don't edit `.obsidian/` unless explicitly asked.** Obsidian reads those JSON files only at startup; a stray comma breaks the app. If you do edit them, tell the user an app reload is required.
3. **Renaming or moving a note requires updating its backlinks.** Obsidian's `alwaysUpdateLinks` only works in-app; from here, grep the vault for `[[Old Name` (including `[[Old Name|` and `[[Old Name#` forms) and update every hit.
4. **Match the vault's voice**: frontmatter first, callouts for asides, wikilinks between related notes, a `## Related` section at the bottom of reference notes.
5. **The journal's clock is US Eastern** (`America/New_York`). The daily-note script pins `TZ` accordingly; do the same for any ad-hoc timestamp (`TZ=America/New_York date '+%H:%M'`).
6. When the vault's structure changes, update `reference/Obsidian/Vault Schema.md` in the same commit.
7. **Run `.claude/scripts/vault-check.py` before committing.** It verifies wikilink integrity, Templater containment, checklist tabs, daily-note frontmatter, and scans for sensitive content. Errors block; warnings are for human judgment.
8. **Log coworking sessions.** When a working session here changes the vault, end it with a timestamped line in today's `## Log` (the `log-entry` skill), and a Yearly Log line if it's milestone-worthy.
## Skills
- **daily-note** — create today's (or any date's) daily note with correctly rendered frontmatter and folder path.
- **log-entry** — append a timestamped entry to a daily note's `## Log`, and optionally a one-liner to the Yearly Log.
## Git
- Commit messages in plain English, present tense, describing the change to the vault ("Add July 12 daily note", "File hypermedia note under Noise").
- `.obsidian/workspace.json` is ignored — it's UI state and churns constantly.