2026-09-26 11:41:32 +08:00
|
|
|
|
# AGENTS.md — Vault Operations Manual
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
**Purpose**: Single source of truth for AI agents operating in this Obsidian vault.
|
|
|
|
|
|
**Last Updated**: 2026-09-26
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
## Directory Structure (PARA)
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
00_Inbox/ Temporary capture, process weekly
|
|
|
|
|
|
01_Projects/ Time-bound work with deadlines
|
|
|
|
|
|
02_Areas/ Ongoing responsibilities (Health, Finance, etc.)
|
|
|
|
|
|
03_Resources/ Reference materials and knowledge base
|
|
|
|
|
|
04_Archive/ Completed items and clippings
|
|
|
|
|
|
05_Attachments/ Media files (images, PDFs)
|
|
|
|
|
|
06_Metadata/ Templates and reference docs (8 files)
|
|
|
|
|
|
|
|
|
|
|
|
.claude/ Agent config, commands, hooks
|
|
|
|
|
|
.config/ ESLint, Prettier, TypeScript config
|
|
|
|
|
|
.scripts/ Utility scripts (JS/Python)
|
|
|
|
|
|
.github/ CI workflows
|
|
|
|
|
|
.obsidian/ Obsidian app config (do not rewrite)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Permission Table
|
|
|
|
|
|
|
|
|
|
|
|
| Path | Rule |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| `00_Inbox/` | Free to create and edit |
|
|
|
|
|
|
| `01_Projects/` | Edit on request |
|
|
|
|
|
|
| `03_Resources/` | Edit on request |
|
|
|
|
|
|
| `02_Areas/` | **Ask before editing** |
|
|
|
|
|
|
| `04_Archive/` | **Never rewrite** — read-only historical record |
|
|
|
|
|
|
| `06_Metadata/Templates/` | **Never rewrite** — wired to Obsidian plugins |
|
|
|
|
|
|
| `.obsidian/` | **Never rewrite** — app config |
|
|
|
|
|
|
| `.obsidian/plugins/*/data.json` | **Hard deny** — may contain secrets |
|
|
|
|
|
|
| Credential files (see .gitignore) | **Never read or write** |
|
|
|
|
|
|
|
|
|
|
|
|
## Frontmatter Conventions
|
|
|
|
|
|
|
|
|
|
|
|
Active notes (00–03) use these core keys:
|
|
|
|
|
|
- `created` (required) — ISO date `YYYY-MM-DD`
|
|
|
|
|
|
- `status` — one of: `draft`, `active`, `done`, `archived`
|
|
|
|
|
|
- `tags`, `type`, `updated` — optional
|
|
|
|
|
|
|
|
|
|
|
|
Content keys (never delete): `title`, `description`, `source`, `date`, `author`, `published`, `aliases`
|
|
|
|
|
|
|
|
|
|
|
|
**Clipper boundary**: `04_Archive/Inbox-Clippings/**` permanently uses the web clipper schema (`date`/`page-title`/`url`). Never migrate.
|
|
|
|
|
|
|
|
|
|
|
|
## Safety Rules
|
|
|
|
|
|
|
|
|
|
|
|
1. **Read before writing** — always read a file before editing it
|
|
|
|
|
|
2. **Never delete without approval** — ask before removing content
|
|
|
|
|
|
3. **Preserve everything when merging** — only remove verified exact duplicates
|
|
|
|
|
|
4. **Verify before moving** — check destination exists, update all `[[wikilinks]]` after move
|
|
|
|
|
|
5. **Never move numbered folders** (00–06) from vault root
|
|
|
|
|
|
6. **Get approval for bulk operations** affecting 5+ files
|
|
|
|
|
|
7. **Never commit secrets** — run `.scripts/verify-vault.mjs` before pushing
|
|
|
|
|
|
|
|
|
|
|
|
## Git Workflow
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-09-26 11:41:32 +08:00
|
|
|
|
pnpm lint # Auto-fix before committing
|
|
|
|
|
|
pnpm lint:check # Verify without changes
|
|
|
|
|
|
node .scripts/verify-vault.mjs # Secret scanner (CI runs this too)
|
2026-01-06 14:16:07 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
- Commit after each work session with descriptive messages
|
|
|
|
|
|
- Pull before starting work
|
|
|
|
|
|
- Never force-push to main
|
|
|
|
|
|
|
|
|
|
|
|
## Organization Principles
|
|
|
|
|
|
|
|
|
|
|
|
- Inbox is temporary — process weekly
|
|
|
|
|
|
- One idea per note (atomic notes)
|
|
|
|
|
|
- Flat structure over deep nesting (max 4 levels for new notes)
|
|
|
|
|
|
- Use links not folders for relationships
|
|
|
|
|
|
- Link liberally, prefer over-linking
|
|
|
|
|
|
|
|
|
|
|
|
## Work Approach
|
|
|
|
|
|
|
|
|
|
|
|
- **Simple tasks** — execute directly
|
|
|
|
|
|
- **Complex changes** — propose plan first (affected files, steps, rollback)
|
|
|
|
|
|
|
2026-01-06 14:16:07 +08:00
|
|
|
|
---
|
|
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
## Scripts — Code Style
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
### JavaScript/TypeScript
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
- Single quotes, semicolons, `node:` prefix for built-in imports
|
|
|
|
|
|
- `camelCase` functions/variables, `UPPER_SNAKE_CASE` constants, `PascalCase` classes
|
|
|
|
|
|
- Prefix unused params with `_`
|
|
|
|
|
|
- Handle errors in async functions, check env vars early
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
### Python
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
- `snake_case` functions/variables, `UPPER_SNAKE_CASE` constants
|
|
|
|
|
|
- Type hints on function signatures
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
2026-09-26 11:41:32 +08:00
|
|
|
|
### Config
|
2026-01-06 14:16:07 +08:00
|
|
|
|
|
|
|
|
|
|
- ESLint: `.config/eslint.config.js`
|
|
|
|
|
|
- Prettier: `.config/.prettierrc.js`
|
|
|
|
|
|
- TypeScript: `.config/tsconfig.json`
|