A user's guide · Spore v0.8.0 · The lean release

Mycelium, refined.
Less is the work.

Persistent memory for working with an AI — written down once, in your vault, in your hand. v0.8.0 strips weight that wasn't earning its keep. Same ideas, fewer parts.

  __  __                _ _
 |  \/  |_   _  ___ ___| (_)_   _ _ __ ___
 | |\/| | | | |/ __/ _ \ | | | | | '_ ` _ \
 | |  | | |_| | (_|  __/ | | |_| | | | | | |
 |_|  |_|\__, |\___\___|_|_|\__,_|_| |_| |_|
         |___/                        v0.8.0
Runtime
_Spore-v0.8.0.md at vault root
Toolset
_Spore-VMD-Toolset.v0.8.0.md at vault root, 12 tools
Substrate
Obsidian 1.12+ via the obsidian CLI
Personas
External — shared across all your vaults
Theme
The lean release — fewer rules, smaller surface, same shape
§ 1  ·  The shape of it

What is Mycelium?

Mycelium is a memory framework for working with an AI over time. It is not an app. It is a small set of conventions, written into your own files, that let an AI you trust pick up a session where the last one ended — and the one before that.

The idea is older than this implementation. A persistent memory shouldn't live inside a vendor's product, behind their account, at the mercy of their roadmap. It should live in your hand — in plain text, in folders you already understand, on a disk you already own. When the AI joins a session, it reads the files. When it leaves, the files remain.

What Mycelium adds to that idea is a protocol — a small grammar of folders, frontmatter, and trigger phrases — and a runtime that an AI loads to know how to behave inside it. The runtime is called Spore. The current version is 0.8.0. The vault you point at is the substrate. Obsidian's CLI is how the AI reads and writes to it without breaking the structure.

v0.8.0 is the lean release

This version strips the framework of weight that wasn't earning its keep. The Network Layer (cross-vault sharing, peers, collaborators, guests) was carried in every version since v0.4.x without ever being activated — gone. The framework/user folder split (`System/User/`) solved a problem the vault didn't have — gone. `internal` personaMode was dead code — gone. `authorID` had no real customer in a single-user vault — gone. `Archive/` at vault root sat semantically wrong next to owner content categories — folded into `System/Archive/`.

The toolset goes from 13 tools to 12 (Tool 3 was Network Layer; everything below shifts up by one). The runtime drops 4 "Never Do" rules. The user-facing surface gets smaller without losing capability.

The lean release. v0.8.0 doesn't add. It removes. Every change is a deletion or a clarification. If you used v0.7.1, you know how to use v0.8.0 — there's just less of it.

The metaphor, briefly

A mycelium is the underground network of a fungus — patient, slow, and lateral. The fruiting body you see above ground is the smallest visible part. The work happens beneath. So with this: the conversation is the visible part; the durable memory beneath it is the network. Each note is a node. Each session adds a few more.

Three layers, externalised

Spore separates concerns into three layers, each owning what it should and nothing more:

  • Runtime — the small file that tells the AI how to read, write, and behave. It's the hot path. Loaded every session. Smaller in v0.8.0.
  • Toolset — the procedure library. Twelve tools in v0.8.0. Read on demand, not on boot.
  • Persona — who you are, who the AI is, how you work together. Lives outside the vault, shared across all your Mycelium vaults. The AI's voice and the working relationship don't reset every time you start a new project.
§ 2  ·  The model

Using Spore

Spore is the runtime spec. A short file written at the root of your vault that the AI loads first, every session, before it does anything else. It's the contract between you, the AI, and the substrate.

What Spore promises

Five things, briefly:

  • Lean. The runtime is small enough to load without ceremony. v0.8.0 trims it further.
  • Token-efficient. What lives in the runtime is what must be on hand at all times. Everything else lives in the toolset and is consulted on demand.
  • CLI-aware. Substrate operations go through Obsidian's CLI. The runtime owns protocol; the substrate owns vault state.
  • Vault-scoped on every call. Every CLI invocation passes vault=<vaultName>, captured from your VaultIdentity.md at boot.
  • Context-window resilient. Long sessions get re-anchored, compacted, or budget-checked. Critical state is restorable from a single block of text.

Hot path discipline

Anything that runs at boot or on every write belongs in the runtime. Anything else belongs in the toolset. The runtime is hot path — protect it.

CLI discipline

Where Mycelium meets Obsidian, the AI uses the CLI. Every call passes vault=<vaultName>:

OperationCLI shape
File enumerationobsidian vault=<vaultName> eval ...
Frontmatter queriesobsidian vault=<vaultName> properties name=<field>
Wikilink integrityobsidian vault=<vaultName> unresolved
Backlinksobsidian vault=<vaultName> backlinks file=<name>
Renames & movesobsidian vault=<vaultName> rename | move
Tag listingsobsidian vault=<vaultName> tags

The persona layer

Your AI's voice doesn't live in the runtime. Spore points at System/VaultIdentity.md, which declares personaDir — a path, relative to the vault root. The AI loads two files from there:

../MyceliumPersonas/Owner/[YourName].md
../MyceliumPersonas/AI/[AIName].md

v0.8.0 simplification: external is the only persona mode. The two-row table for `external`/`internal` from prior versions collapses to a single paragraph. When you start a second Mycelium vault, the AI is already someone. The relationship carries.

The two-tier mental model

v0.8.0 makes the vault root cleaner:

  • Vault root — framework root files (_Spore-*.md) + owner content categories (Projects/, Sessions/, Technical/, Inbox/, Contacts/)
  • System/ — framework-managed state (VaultIdentity.md, Archive/, Snapshots/, AuditReports/)

Easier to read by eye. No more `Archive/` at vault root pretending to be content; no more `System/User/` blurring the framework boundary.

§ 3  ·  First contact

What the installer creates

A fresh v0.8.0 install draws the smallest viable vault around you. Less than v0.7.1 — the lean release applies at install time too. Here's what lands where, and why each thing exists.

You paste one file

The installer is a single Markdown file: _MyceliumInstaller-v0.8.0.md. You paste it into a fresh AI session pointed at an empty vault folder. It asks you three questions — your name, the AI's name, what the vault is for — and from there it builds the foundation.

When it's done, it tells you what it installed and self-destructs. The build artefacts (Design, README, this user guide) stay behind in Projects/Spore-v0.8.0/ as documentation.

The shape of a fresh vault

../
├── MyceliumPersonas/           — external persona layer (parent dir)
│   ├── Owner/
│   │   └── [YourName].md      — your profile, voice, working preferences
│   └── AI/
│       └── [AIName].md        — the AI's identity, voice, the relationship
│
└── YourVault/                  — this is the vault
    │
    ├── _Spore-v0.8.0.md           — the runtime (read every session)
    ├── _Spore-VMD-Toolset.v0.8.0.md — the procedure library (12 tools)
    │
    ├── System/                 — framework-managed state
    │   ├── VaultIdentity.md    — canonical vault state, IDs, version
    │   ├── Archive/            — canonical archive (NEW location in v0.8.0)
    │   └── Snapshots/           — Tool 12 forensic snapshots
    │
    ├── Contacts/               — renamed from People/ in v0.8.0
    ├── Inbox/                  — owner deposit area (NEW in v0.8.0)
    │
    ├── Projects/
    │   └── Projects-Overview.md  — active project navigation
    │
    ├── Sessions/
    │   └── Sessions-Overview.md — session schema reference
    │
    └── Technical/
        └── Technical-Overview.md — vault architecture entry point

Why each thing is here

The two root files

_Spore-v0.8.0.md is the runtime — the AI reads it first every session. _Spore-VMD-Toolset.v0.8.0.md is the procedure library — the AI reads it on demand. Both live at vault root because they're framework files, not vault content. Only these two (and any future upgrade file) are allowed at vault root. Anything else gets placed inside a category folder.

System/VaultIdentity.md

The single source of truth for vault state. v0.8.0 schema is leaner: vault's MYC- ID, your owner ID, the AI's name, the vault's name (used for CLI scoping), personaDir, Spore Version, upgradedAt. Removed in v0.8.0: Protocol Version, personaMode, collaborationEnabled, networkStatus — all Network Layer concerns.

System/Archive/ (new location)

Canonical archive destination. Tool 1's Archive Pattern populates subcategories (`Clients/`, `Projects/`, `Decisions/`, `Discards/`, `Spore-Versions/`, `Upgrades/`) on first use. Empty at install. Symmetric with System/Snapshots/. Moved from vault root in v0.8.0 — `System/` is now consistently framework-managed state.

System/Snapshots/

Empty at install. Tool 12 (Vault Snapshot) writes timestamped JSON snapshots here before risky operations. Forensic record, not a registry.

Contacts/ (renamed from People/)

For people-references — clients, contacts, anyone in your professional or personal world referenced in vault content. Empty at install. Subfolders earned, not pre-allocated. Renamed from `People/` in v0.8.0 — better fit for a knowledge-vault folder of people-references; "People" inherited from the Network era when collaborators were peer entities.

Inbox/ (new in v0.8.0)

Owner deposit area. Drop media, documents, drafts, exports, anything awaiting ingestion. Files in `Inbox/` are pre-vault — exempt from vmdId and summary frontmatter requirements. Tool 10 (Schema Validator) skips Inbox/. Tool 1 (Audit) skips it for frontmatter and coverage checks. When you triage a file out of Inbox into a category folder, schema obligations apply on arrival.

Projects, Sessions, Technical — and their overviews

Three category folders, each with a single overview file. Overviews are earned — a category only gets one if it adds navigation or context beyond what Obsidian's MetadataCache already exposes. Inbox and Contacts are not required to have overviews.

What v0.8.0 does not create. No System/User/ (M013 retired). No People/ (renamed to Contacts). No Archive/ at vault root (moved into System/). No System/VMD-Index.json (retired since v0.7). No Network/, System/Collaborators.md, or System/GuestRegistry.md (Network Layer removed).

Registering with Obsidian

The installer creates the folder structure. You point Obsidian at it. The installer's last step asks you to confirm the vault is now visible in Obsidian's vault list — without that, the AI can't run substrate queries. From then on, opening a session means: open Obsidian, make this vault the active vault, paste _Spore-v0.8.0.md into a fresh AI conversation.

§ 4  ·  Boot sequence

Activating a vault

Activation is what happens when you open a fresh AI conversation and paste the runtime. Deterministic sequence — bootstrap check, read order, handshake. By the time the AI says hello, it knows who you are, what the vault is, and where you left off last time.

How you start

Three preconditions, every session:

  1. Obsidian is open.
  2. Your Mycelium vault is the active vault in Obsidian (top-left vault picker).
  3. The obsidian CLI is on your PATH. Test: obsidian version succeeds.

Then: open a fresh conversation in your AI, point it at the vault folder, paste _Spore-v0.8.0.md as the first message. That's the activation trigger.

The bootstrap check

Before reading anything substantive, the AI verifies the substrate:

StateAction
obsidian CLI not on PATHCRITICAL — install Obsidian 1.12+ and confirm
Obsidian app not runningCRITICAL — surface, do not proceed
Active vault is not this Mycelium vaultWARN — switch active vault before continuing
VaultIdentity exists, version is 0.8.0Normal session load
VaultIdentity exists, version is olderCRITICAL — run _SporeUpgrade-v*.md
No VaultIdentityCRITICAL — run _MyceliumInstaller-v0.8.0.md

Read order

If bootstrap passes, the AI reads in this order — non-negotiable, declared by the runtime:

  1. The Spore runtime itself — already pasted as the first message.
  2. System/VaultIdentity.md — for personaDir.
  3. 2b. Verify personaDir. Resolve relative to the vault root file location. If the directory cannot be confirmed: STOP. Surface the resolved path that failed.
  4. Owner persona file (resolved from VaultIdentity).
  5. AI persona file (resolved from VaultIdentity).
  6. Projects/Projects-Overview.md.
  7. 5b. Overview Currency Check. Query obsidian vault=<vaultName> properties name=referencesState for state-referencing files. Run Tool 5 against each. If drift detected, surface to owner before handshake.
  8. 5c. Capture vault name. Extract Vault Name from VaultIdentity. Hold as the session-local <vaultName>. Every subsequent CLI invocation passes it.
  9. Most recent Sessions/ file.
  10. Topic-relevant overviews on demand.
  11. Ask owner whether to do a deep dive before starting.

The handshake

When read order completes, the AI renders the splash and a single line of acknowledgement:

  __  __                _ _
 |  \/  |_   _  ___ ___| (_)_   _ _ __ ___
 | |\/| | | | |/ __/ _ \ | | | | | '_ ` _ \
 | |  | | |_| | (_|  __/ | | |_| | | | | | |
 |_|  |_|\__, |\___\___|_|_|\__,_|_| |_| |_|
         |___/                        v0.8.0
VMD loaded. Running Spore-v0.8.0. Last session: [date] — [one line summary]. Ready to continue. What are we building today?

From here you're in a session. The AI has loaded who you are, who it is, the state of the vault, and the thread of last time.

§ 5  ·  In flight

Running a session

A session is the time between the handshake and the closing commit. The AI is reading the substrate, writing into it, and asking you to confirm anything that would otherwise rot. The discipline isn't elaborate — it's just consistent.

The shape of the work

Mycelium nodes are atomic — one concept per file. New thinking lands in a new file with a clear name; existing thinking gets updated in place rather than duplicated. (Owner-2.md is always wrong.) Every .md file outside Inbox/ carries two pieces of frontmatter: vmdId (a MYC- prefixed identifier) and summary (a single sentence that distinguishes this node from others).

What earns a node

Not every conversational move lands in the vault. The AI applies a significance filter — a piece of session content earns a node when at least one of these is true:

  • Decisional — a choice was made, a direction committed.
  • Authorship-bearing — original thinking that would be lost if the session ended.
  • Surprising — a finding, objection, or insight that contradicts prior assumption.
  • Structural — changes vault shape (new project, new convention, archival decision).

Inbox: the deposit area

v0.8.0 formalises Inbox/ as a first-class folder. Drop anything there — a screenshot you want to think about later, an export from another tool, a draft you started in another app, a PDF, a .canvas file, anything. Files in Inbox have no frontmatter requirement. They're pre-vault.

When you ask your AI to triage Inbox, files move out into the appropriate category folder, gain frontmatter, and become proper nodes. Until then, they sit in Inbox without complaint from the schema validator.

Read after every write

Every CLI write op ends with a read-back. If the read-back fails, the AI stops and surfaces the failure rather than carrying on with optimistic assumptions.

Session commits

A session commit is a structured note that records what happened. They land in Sessions/[YYYY-MM-DD]-[topic].md with frontmatter (topic, sessionType) and a body that walks through what was done, decisions made, and an impact sweep.

Commits happen at three points: at the start of significant work, periodically through the session, and at the end. Nothing closes with uncommitted information.

Mid-session tools

Long sessions accumulate context. Spore offers three small instruments for keeping it tidy:

ToolSayableWhat it does
Re-Anchor (Tool 6)"Re-anchor."Restates critical state in one block.
Compaction (Tool 7)"Compact this session."Folds settled work into a structured summary.
Budget (Tool 8)"What's my context budget?"Reports approximate token usage by component.

The Claude Code statusline

Mycelium ships an optional statusline for Claude Code — a persistent strip at the bottom of your terminal that gives you a live snapshot of the current session. Set it up once during install; it runs automatically in every Claude Code session after that.

What it looks like:

🍄 Aria · MyVault · 42m · 128k tok · 5h ▓▓░░░ 42% · 7d ░░░░ 18% · ████████░░░░ 62% ctx
FieldWhat it means
🍄 AI nameWhich AI is active — matches the name in your persona file
Vault nameAuto-resolved from the working directory — works across every Mycelium vault on your machine
42mHow long this session has been running
128k tokTotal tokens used so far this session
5h ▓▓░░░ 42%Hourly API rate limit — bar fill and percentage consumed. Green = clear, gold = approaching, red = near limit.
7d ▓░░░░ 18%Daily API rate limit — same bar logic across a longer window
████████ 62% ctxContext window consumed — how close you are to the session limit. When this climbs, consider Re-Anchor or Compaction (Tools 6 & 7).

The statusline is offered during fresh install and upgrade. If you already have a statusline configured, or skip the offer, the installer leaves your setup untouched — detection-first, never overwrites.

To install manually, save the statusline script from the installer or upgrade file to ~/.claude/statusline-[yourAIname].sh, make it executable (chmod +x), then add this to ~/.claude/settings.json:

"statusLine": {
  "type": "command",
  "command": "~/.claude/statusline-[yourAIname].sh"
}

To remove: delete ~/.claude/statusline-*.sh and remove the statusLine key from ~/.claude/settings.json. Restart Claude Code.

Things you'll never see Mycelium do

  • Create a duplicate node when one could be updated.
  • Skip the impact sweep before a commit.
  • Run a substrate write op without reading it back.
  • Run an Obsidian CLI command without vault=<vaultName> after the bootstrap check.
  • Hand-edit backlinks. Renames go through Tool 11.
  • Write a .md file outside Inbox without vmdId and summary frontmatter.
  • Place a file at vault root that isn't _Spore-*, _SporeUpgrade-*, or _Spore-VMD-Toolset-*.
  • Write to Inbox/ automatically — it's the owner's deposit area.
§ 6  ·  The vocabulary

Things you say

Mycelium isn't a CLI you run. It's a vocabulary you speak — short phrases your AI listens for and routes to the right procedure. None of these are required syntax. They're conventions, designed to be unambiguous when you want a specific thing to happen.

Most are tied to a specific tool. A few are general session moves. They all work in plain English; you don't need to memorise punctuation.

Run a vault audit.
Run a vault health check.
Run an overview currency check.
Compact this session.
What's my context budget?
Check link integrity.
Find broken links.
Validate vault schema.
Check frontmatter.
Safely rename [path] to [newname].
Move [path] to [destination].
Take a vault snapshot.

General session phrases

These aren't tied to a tool — they're how you steer a session.

Commit this session.
writes a Sessions/ file
Impact sweep.
enumerate areas touched
Read the latest session.
most-recent Sessions/ file
Triage Inbox.
walk Inbox/ contents with owner
Where did we leave this?
surface relevant prior thread

The phrases are loose by design. "Run an audit", "Audit the vault", "Do a vault audit" all reach the same procedure. The AI is reading intent, not parsing syntax. If the intent is ambiguous, it'll ask — which is the right behaviour.

§ 7  ·  The procedure library

The Toolset

Twelve tools. Each one has a single job, a clear trigger phrase, a procedure the AI walks through, and a small set of rules. The toolset file lives at vault root alongside the runtime — but the AI only reads it when one of these tools is invoked.

Tool 4 (Standards & Versioning) isn't a procedure — it's the standards reference (versioning, ID format, schemas) the others rely on. The rest are operational.

v0.8.0 toolset is 12 tools. The Network Layer (Tool 3 in v0.7.x) was removed; everything below shifted up by one. Old session commits and audit reports referencing v0.7.1 numbering are frozen historical records — they retain their original numbers as accurate at time of writing.

· · ·
Tool · 01

Audit

CLI-powered

The vault's full diagnostic. Coverage, schema, persona resolution, overview health, link integrity, tag hygiene, vault health — and a written report that survives the session.

When to use

  • Health check on the vault.
  • Vault has reached a significant milestone.
  • Something feels off and you want a full diagnostic.
  • Before any major restructure.

How to run

Run a vault audit.

Procedure

Step 1 — Verify CLI substrate

  • Confirm obsidian vault=<vaultName> version succeeds.
  • Confirm obsidian vault=<vaultName> eval code="app.vault.getName()" returns <vaultName>.

Step 2 — Run audit checks (CLI-native)

Across coverage, frontmatter integrity (skip files in Inbox/), persona integrity (external-only resolution), overview health, link integrity, tag hygiene (filter for hex codes parsed as tags), and vault health (node count, Inbox items older than 30 days flagged for owner triage).

Step 3 — Write audit report

Create System/AuditReports/[YYYY-MM-DD].md. Surface to owner before closing.

Step 4 — Work through findings with owner

Each action: approve, defer, or dismiss.

Step 5 — Close the report

Set status RESOLVED, add resolvedAt, write session commit.

Archive Pattern

Files are never deleted directly. They move to System/Archive/ with the appropriate subcategory: Clients/, Projects/, Decisions/, Discards/, Spore-Versions/, Upgrades/. Every archive action is logged in System/Archive/_ARCHIVE-LOG.md.

Rules

  • Never modify node content during audit — flag, don't silently fix.
  • Always get owner approval before archiving or restructuring.
  • Audit reports are never deleted — archive if superseded.
  • A new report never overwrites an existing one.
  • Inbox/ is excluded from frontmatter and coverage checks.
Tool · 02

Migration

handled by upgrade

The conceptual slot for moving a vault between Spore versions. In practice, the upgrade file does this work — Tool 2 exists to declare the rules, not to be invoked directly mid-session.

How to run

You don't, directly. Direct your AI to _SporeUpgrade-v0.8.0.md. Manual mid-session migration is not supported.

Rules

  • Never modify file content — frontmatter only (except where the upgrade procedure explicitly authorises).
  • Never rename or delete files during migration without using Tool 11 (Safe Refactor).
  • Log skipped files in session commit.
  • Never generate Owner ID without asking first.
  • Post-upgrade health check is mandatory.
Tool · 03

Vault Health Check

CLI-powered · cheap

The lighter cousin of Tool 1. Same kinds of checks but reports inline rather than writing a report. Useful between audits, after a batch of new nodes, or before a session where you need to trust the state.

When to use

  • After a large batch of new nodes.
  • Before a session where you need to trust the vault state.
  • As part of a full audit (Tool 1).
  • After an upgrade (run automatically by the upgrade file).
  • Periodically as lightweight maintenance.

How to run

Run a vault health check.

Procedure

Step 1 — Verify CLI substrate

Same as Tool 1 — version + active-vault confirmation.

Step 2 — Frontmatter completeness (Tool 10 lite)

Run Tool 10; count violations across the schema. Sample 20 random nodes (excluding Inbox/) and verify each.

Step 3 — Persona resolution check

Resolve personaDir and verify the persona files are accessible. Flag any unreachable file with the exact resolved path.

Step 4 — Link integrity (Tool 9 lite)

Run Tool 9; report broken-link count with top sources. Inbox/ excluded from source-file list.

Step 5 — Overview health

For each active overview AND every referencesState-tagged file: does the file exist? Do all its references? Run Tool 5 per tagged file.

Step 6 — Root cleanliness

Flag any root files that aren't _Spore-v*.md, _SporeUpgrade-v*.md, or _Spore-VMD-Toolset.v*.md.

Step 7 — Inbox triage reminder

Count files in Inbox/. If > 0, surface as informational (not a violation) to remind owner of pending triage.

Step 8 — Write findings

Surface inline if standalone; feed into the audit report if invoked from Tool 1.

Rules

  • Never modify node content — flag only.
  • Always get owner approval before acting on findings.
  • Broken links and orphans are flagged, not auto-resolved.
  • Inbox/ is excluded from frontmatter and link-source checks.
Tool · 04

Standards & Versioning

reference

Not a procedure — a reference the other tools depend on. Version conventions, ID format, the canonical node schemas, the significance heuristics, the Inbox exemption. Read this once; it informs everything else.

Versioning

Filename pattern: [filename]-v[release].[major].[minor][variant]. Runtime and toolset share a version number.

ID format

All IDs follow PREFIX-YYYYMMDD-XXXXXX. YYYYMMDD is the date the ID was generated (UTC); XXXXXX is six lowercase alphanumeric characters. IDs are immutable once assigned.

MYC-Vault identity
OWN-Owner identity (person)

v0.8.0: GST- (Guest) prefix retired with the Network Layer.

Canonical schemas

Local node:

vmdId: MYC-YYYYMMDD-XXXXXX
summary: One-sentence description distinguishing this node.

Session node:

vmdId: MYC-YYYYMMDD-XXXXXX
summary: ...
topic: [category/path]
sessionType: [regular | breakthrough | audit | migration | compaction]

State-referencing node:

vmdId: MYC-YYYYMMDD-XXXXXX
summary: ...
referencesState: [sporeVersion, owner, ai, personas, projects]

v0.8.0 simplification: The collaborator-written-node schema and shared-node (Network) schema are removed. authorID, nodeId, hop_depth, origin_vmdId, protocolVersion, publishedAt all retired.

Inbox files

Files in Inbox/ are pre-vault — they have no schema obligation. The schema validator skips them. No vmdId, no summary, no requirement on file type. When a file is triaged out of Inbox/ into a category folder, the schema applies on arrival.

Significance heuristics

A piece of session content earns a node when at least one of: decisional, authorship-bearing, surprising, structural. If none apply — no node.

Tool · 05

Overview Currency Check

CLI-powered · boot-time

Detects drift between what an overview says and what the vault currently is. Files with referencesState frontmatter declare which kinds of state their prose references; this tool walks them and reports mismatches.

When to use

  • Automatically at session start (Step 5b of read order).
  • Inside Tool 1 (audit) and Tool 3 (health check) for every referencesState-tagged file.
  • On owner request.

How to run

Run an overview currency check.

Procedure

Step 1 — Load authoritative state

Read System/VaultIdentity.md — note Spore Version, Owner, AI Name, personaDir.

Step 2 — Identify target files

If a path was given, target it. Otherwise: obsidian vault=<vaultName> properties name=referencesState. Walk the returned list.

Step 3 — Compare declared references against live state

For each target file, scan the prose for the declared values: sporeVersion (must match current), owner (name must match), ai (name must match), personas (path must match current personaDir), projects (listed projects must still exist and match status).

Step 4 — Verify wikilinks resolve

Run obsidian vault=<vaultName> unresolved verbose. Filter for the target file as source. Any unresolved links from it are flagged as drift.

Step 5 — Report findings

Per file: path, the referencesState values, drift entries with line numbers and excerpts, broken-link entries. If no drift: "File is current."

Rules

  • Never modify content — flag only.
  • Never silently assume a reference is historical. If unsure, ask.
  • Historical references are legitimate; should be distinguishable from current-state drift.
  • Boot-time check runs every session — keep it fast.
Tool · 06

Re-Anchor

context-window

A pulse, not a re-boot. Restates the critical state — vault, owner, AI, version, focus — in a single block near the end of context, so a long session doesn't lose itself in the middle.

When to use

  • Long session is starting to feel unfocused.
  • Owner or AI notices drift from current topic.
  • Context window is loaded enough that critical state may be lost-in-the-middle.
  • Before a delicate write or decision where grounding matters.

How to run

Re-anchor.

Output format

Re-anchor: Vault MYC-YYYYMMDD-XXXXXX (VaultName), owner [Owner], working with [AI], Spore v[version]. Active project: [project]. Current focus: [one-line]. Continuing.

Rules

  • Single block, end of context, one line preferred, never more than four.
  • Do not invent state — read from VaultIdentity if uncertain.
  • Never silently — always visible to the owner.
  • Cheap by design.
Tool · 07

Mid-Session Compaction

context-window

Folds settled work earlier in the session into a structured summary; drops the raw transcript before the boundary. Keeps the active thread in working memory while the durable record survives as a node.

When to use

  • Current session has grown long and you want to continue.
  • Context pressure is high (Tool 8 has flagged).
  • Earlier exploration is now settled.

How to run

Compact this session.

Procedure

Step 1 — Propose a compaction boundary

I'll fold everything from session start up to [boundary] into a structured summary. Active work from [boundary] onward stays in context. Shall I proceed?

Step 2 — Write the compacted summary

Context (what we came in with), What we did, Decisions made, Open threads, Impact sweep.

Step 3 — Write to a session-compaction node

Path: Sessions/Compactions/[YYYY-MM-DD]-[topic]-compaction.md. Frontmatter: vmdId, summary, topic, sessionType: compaction, compactedAt, boundary.

Step 4 — Confirm drop

Compaction written to [path]. Dropping raw transcript before [boundary] from working memory. Active thread continues.

Rules

  • Never compact without explicit owner approval.
  • Never drop transcript before read-back of the compaction summary succeeds.
  • Compaction summaries are full nodes — survive sessions, carry vmdId + summary.
  • A session may be compacted multiple times.
  • Do not compact mid-decision.
Tool · 08

Context Budget Check

estimate · advisory

An estimate of how much of the AI's context window is currently in use, broken down by component. Always a report, never a hard block — you decide what to do with the number.

How to run

What's my context budget?

Report format

Context budget: runtime [~N] / personas [~N] / overviews [~N] / last session [~N] / current session [~N]. Approximate total: [~N]. Status: [healthy / warming / near limit].

Recommendations

  • Healthy — no action.
  • Warming — suggest Re-Anchor (Tool 6).
  • Near limit — propose Compaction (Tool 7) or session commit + new session.
Tool · 09

Link Integrity

CLI-powered

Finds broken wikilinks, classifies them, and proposes per-link repairs. Always run before a rename or archive — the broken-link list is the rename plan. Inbox/ excluded from source list.

How to run

Check link integrity.

Find broken links.

Procedure

Step 1 — Enumerate broken wikilinks

obsidian vault=<vaultName> unresolved counts verbose

Filter the result to exclude any source files in Inbox/.

Step 2 — Classify each broken target

  • Rename target — a file exists at a similar path or with a similar name.
  • Archived target — a matching file exists in System/Archive/.
  • Genuine miss — no candidate match.

Step 3 — Backlink subroutine (when planning a rename)

obsidian vault=<vaultName> backlinks file=<name> verbose

The list is the rename plan.

Step 4 — Owner approval per repair

Source [file] line [N]: [[broken-target]] → [[suggested-replacement]]. Apply?

Step 5 — Apply approved repairs

For each: read the source, replace the broken link, write back, read-back via scoped CLI.

Step 6 — Final verification

Run obsidian vault=<vaultName> unresolved total; surface delta.

Rules

  • Never auto-repair without owner approval per target.
  • Always read-back after each repair.
  • For archived targets, prefer to update the wikilink to the new System/Archive/ path.
  • Genuine misses are not auto-resolved — surface and let owner decide.
  • Inbox/ excluded from broken-link source list.
Tool · 10

Schema Validator

CLI-powered

Walks every node in the vault (excluding Inbox/) and checks frontmatter against the canonical schemas declared in Tool 4. Soft refusal at session-commit time if violations exist.

How to run

Validate vault schema.

Check frontmatter.

Procedure

Step 1 — Enumerate all markdown files (excluding Inbox)

obsidian vault=<vaultName> eval code='app.vault.getMarkdownFiles().filter(f => !f.path.startsWith("Inbox/")).map(f => f.path)'

Step 2 — Validate each against the schema

Universal rules (every node):

  • Has vmdId matching /^MYC-[0-9]{8}-[a-z0-9]{6}$/.
  • Has summary (non-empty string).

Sessions (Sessions/* paths): has topic; has sessionType (one of regular, breakthrough, audit, migration, compaction).

State-referencing nodes: referencesState is an array, values from the declared set.

v0.8.0: universal rules drop the nodeType requirement; collaborator-node rules (authorID) are gone.

Step 3 — Compile violations

Group by rule. Report count and per-file list.

Step 4 — Disposition

On owner request: surface inline. Inside audit: feed into report. At session commit: refuse softly if any session-class violations exist.

Rules

  • Never silently fix — always surface.
  • Refusal is soft (owner can override).
  • Validate against the schema declared in Tool 4.
  • Inbox/ is excluded from validation entirely (pre-vault).
Tool · 11

Safe Refactor

CLI-powered

How a node is renamed or moved without rotting inbound links. Goes through Obsidian so backlinks update automatically; never hand-edited. Always paired with link-integrity checks before and after.

How to run

Safely rename [path] to [newname].

Move [path] to [destination].

Procedure

Step 1 — Run Tool 9 for the source

obsidian vault=<vaultName> backlinks file=<name> verbose

Step 2 — Execute the CLI rename or move

Rename (same folder):

obsidian vault=<vaultName> rename file=<old-name> name=<new-name>

Move (different folder):

obsidian vault=<vaultName> move file=<name> to=<destination-path>

Step 3 — Verify the change

Read-back semantics: read path=<new-path> succeeds; read path=<old-path> fails. If either check fails, halt.

Step 4 — Re-run Tool 9

Run obsidian vault=<vaultName> unresolved total. Expected: count is the same or lower.

Step 5 — Update related artefacts

VaultIdentity (read back), active overviews (Tool 5 catches drift on next boot), archive log (append entry if archive operation).

Rules

  • Never hand-edit backlinks — let Obsidian propagate.
  • Always run Tool 9 before AND after the operation.
  • Halt on any read-back failure.
  • For archive operations, follow the Archive Pattern (System/Archive/).
  • For renames within MyceliumPersonas/: confirm parent vault is registered with Obsidian first; persona ops scope as vault=<parentVaultName> for that specific operation only.
Tool · 12

Vault Snapshot

CLI-powered · forensic

A timestamped JSON snapshot of vault state — frontmatter, links, backlinks, tags, no content. Written before risky operations or whenever a recoverable record is wanted. Inbox/ markdown is included (forensic, captures state as-is).

How to run

Take a vault snapshot.

Procedure

Step 1 — Generate the snapshot via CLI

obsidian vault=<vaultName> eval code='JSON.stringify(
  app.vault.getMarkdownFiles().map(f => {
    const c = app.metadataCache.getFileCache(f) || {};
    return {
      path: f.path,
      frontmatter: c.frontmatter || {},
      links: (c.links || []).map(l => l.link),
      backlinks: Object.keys(app.metadataCache.getBacklinksForFile(f).data),
      tags: (c.tags || []).map(t => t.tag)
    };
  }), null, 2)'

Step 2 — Write to dated snapshot file

Path: System/Snapshots/[YYYY-MM-DD-HHmm].json. If the directory doesn't exist, create it. Read back to confirm.

Step 3 — Confirm to owner

Vault snapshot written to System/Snapshots/[filename]. N nodes captured. Forensic record — keep indefinitely.

Rules

  • Never overwrite an existing snapshot — use timestamps.
  • Snapshots are not registry — do not consume them as source of truth at runtime.
  • Useful for: pre-upgrade safety, post-incident forensics, time-series of vault state.
  • Do not include file content in snapshots — frontmatter, links, and tags only.
  • Inbox markdown is included (forensic), unlike validators which skip Inbox.