Overview
The vault-architect skill holds the tooling behind the Knowledge Vaults pages: a generator that turns a spec into a vault, an auditor that lives inside the vault, and a bundler for the semantic pass. This guide runs all three on a fresh vault. Every command below was run and its output checked before being written down. The result is the structure described in vault-architecture.
Prerequisites
- Python 3.8 or later. The scripts are standard library only.
- Git, so the vault has an undo.
- The
vault-architectskill from theaxia-claude-skillsrepository, which is private at the time of writing. Install it as a Claude Code plugin (/plugin marketplace add AXIA-Enterprises/axia-claude-skills, then/plugin install vault-architect@axia-skills) or clone the repository and pointSKat the skill folder:
export SK=./skills/axia-authored/vault-architect- Obsidian with Dataview and Templater, per obsidian-plugins.
Steps
1. Write the Architecture Spec
The generator consumes one YAML file. vault and note_types are required. Each note type declares its folder, filename pattern, and required frontmatter fields, as in vault-frontmatter-schema. Only the types you list are scaffolded.
vault:
name: "Research Vault"
owner: "Your name"
scope: "Evidence-backed notes on retrieval and embeddings"
framework_primary: claim-evidence-counter
note_types:
atom:
folder: 20-Atoms
filename_pattern: "^[a-z0-9]+(-[a-z0-9]+)+$"
required: [id, title, type, status, created, modified, confidence]
source:
folder: 10-Sources
filename_pattern: "^@[a-z]+-\\d{4}-[a-z0-9-]+$"
required: [id, title, type, source_type, created, atoms_extracted]
moc:
folder: 30-Maps
filename_pattern: "^MOC-[a-z0-9-]+$"
required: [id, title, type, status, created, modified]
folders: [00-Inbox, 90-Templates, 99-Archive, 99-Tools, _attachments]2. Dry-run the plan
python3 $SK/scripts/bootstrap_vault.py spec.yaml --out vault --check--check prints every folder and file it would create and writes nothing. Confirm the last line reads audit.py installed: True.
3. Generate the vault, seeded and verified
python3 $SK/scripts/bootstrap_vault.py spec.yaml --out vault --seed --verify--seed writes one cross-linked atom and source pair to copy from. --verify audits the result and exits non-zero unless it is clean. Expect verify PASSED with 0 critical, 0 warning.
4. Put it in Git and open it
cd vault && git init && git add -A && git commit -m "Bootstrap vault"Open it in Obsidian; dashboard.md holds the quality-gate queries, 90-Templates/ the templates.
5. Run the first audit from the vault root
python3 99-Tools/audit.py --format bothReports land in 99-Tools/audits/: AUDIT.md to read, audit.json to reason over, log.md as the trend. Confirm summary.spec_status in the JSON is loaded; anything else means a defaults-only run, per vault-audit.
6. Close the autofix loop
python3 99-Tools/audit.py --fix # dry run: prints the plan, writes nothing
python3 99-Tools/audit.py --fix --apply # writes; refuses a vault that is not in Git
python3 99-Tools/audit.py --quiet # re-audit and read the delta--fix repairs only the mechanical tier in audit-rule-catalog.
7. Assemble the semantic bundle
python3 $SK/scripts/semantic_prep.py --vault-root . --sample 40This writes 99-Tools/semantic-bundle.json: candidate notes ordered by the deterministic flags they tripped, plus the rubric and output schema. Hand it and the skill’s references/semantic-audit.md to the judge in semantic-audit.
Verify it worked
# 1. The auditor is clean and read the real spec.
python3 99-Tools/audit.py --quiet; echo "exit=$?"
python3 -c "import json; print(json.load(open('99-Tools/audits/audit.json'))['summary']['spec_status'])"
# 2. The spec and the auditor are versioned.
git ls-files vault-spec.yaml 99-Tools/audit.pyExit 0, loaded, and both files tracked means the vault is ready for the loop in vault-orchestration.
Common errors
- The generator exits 2. The target exists and is not empty. Pick a new path or pass
--force. - The generator exits 4 with “Spec invalid”.
vaultornote_typesis missing or empty. - The audit reports M000 and exits 1 on a vault you believe is clean.
vault-spec.yamlis missing from the vault root or failed to parse. --fix --applyrefuses to write. The vault is not Git-tracked. Commit first; there is no other undo.semantic_prep.pyfails withTypeError: Object of type date is not JSON serializable. With PyYAML installed, frontmatter dates parse into date objects the bundler cannot serialize; the standard-library parser succeeds. Until the script is patched, run it from a virtual environment without PyYAML.