Vault Structure
Xavier's vault lives at ~/.xavier/ by default (configurable during setup). It's a git repository backed by a private GitHub repo.
Directory layout
~/.xavier/├── config.md # user preferences, workflow, git strategy├── MEMORY.md # Zettelkasten index├── personas/ # global reviewer personas│ ├── correctness.md│ ├── security.md│ └── performance.md├── adapters/ # runtime-specific execution layers│ ├── claude-code/│ ├── codex/│ └── shell/├── skills/ # generated dependency-skills│ ├── react/│ ├── drizzle-orm/│ └── zod/├── knowledge/│ ├── repos/ # per-repo notes│ │ └── my-app/│ │ ├── architecture.md│ │ ├── decisions.md│ │ └── dependencies.md│ ├── teams/ # team-level conventions│ │ └── platform/│ └── reviews/ # review notes├── prd/ # product requirement documents├── tasks/ # implementation task lists├── review-state/ # review verdict tracking per repo└── loop-state/ # loop iteration progress per taskWhat lives where
config.md
User preferences: name, teams, workflow settings, git strategy, export vault path. See Configuration.
personas/
Global reviewer persona files. Each is a markdown file with a system prompt that defines a reviewer's perspective. See Personas.
adapters/
Runtime-specific execution adapters. The active adapter is symlinked during setup. You don't need to edit these.
skills/
Dependency-skills generated by /xavier add-dep or /xavier learn. Each package gets its own directory containing best practices, doc links, and API patterns.
knowledge/
The core knowledge graph, organized by scope:
repos/— per-repo architecture maps, decision logs, and dependency graphsteams/— team-level conventions that apply across reposreviews/— review notes with structured findings (passive archive + active learning source)
prd/
Product requirement documents created by /xavier prd. Zettelkasten notes with wikilinks to related vault content.
tasks/
Implementation task lists created by /xavier tasks. Linked to their source PRD via wikilinks.
review-state/
Operational state for review verdict tracking per repo. Append-only history.
loop-state/
Operational state for loop iteration progress. Active during execution, archived when complete. These are not knowledge artifacts — no Zettelkasten frontmatter.
MEMORY.md
The vault's Zettelkasten index. Maps note titles to file paths for discovery and navigation.
Repo-level overrides
Any repository can include a .xavier/ directory to override global settings:
<your-repo>/└── .xavier/ └── personas/ # repo-specific reviewer personas └── accessibility.md # overrides global personas for this repoCurrently only persona overrides are supported at the repo level.
Frontmatter schema
Every knowledge note uses consistent YAML frontmatter:
---repo: string # repository nameteam: string # team identifierscope: string # optional — workspace, service, or package namedomain: string # e.g., "auth", "api", "database"type: string # architecture | decision | dependency | prd | task | reviewtags: [] # freeform tagsrelated: [] # wikilinks to other notescreated: dateupdated: date---Type-specific fields
Review notes add:
module: string # e.g., "src/auth"finding-categories: [] # [security, correctness, performance]recurring: boolean # flags patterns seen in prior reviewsTask notes add:
source: string # wikilink to source PRD, e.g., [[prd/webhook-support]]Git sync
The vault is a git repository. Before writing, Xavier pulls from the remote first, then applies changes.
Git strategy is configured during setup:
| Strategy | Behavior |
|---|---|
| auto-commit | Every vault write triggers a commit |
| batch-commit | Commits at natural checkpoints (default) |
| user-driven | Never auto-commits; periodic reminders |
| batch-commit + auto-push | Batch commits that also push to remote |
Last updated: 4/8/26, 10:45 PM
Edit this page on GitHub