### SessionStart Hook Example Source: https://context7.com/breferrari/obsidian-mind/llms.txt Demonstrates the structured context injected into an agent at the start of a session. This hook is automatically wired and fires on session events. ```bash # Wired automatically via .claude/settings.json — fires on SessionStart event # Agent receives structured context block: ## Session Context ### Date Wednesday, 2026-04-30 (Week 18, Q2-2026) ### North Star (current goals) [first 30 lines of brain/North Star.md] ### Brain Topics (read on demand) - Gotchas — Known pitfalls and things that have gone wrong (empty) - Key Decisions — Major technical and product decisions - Memories — Index of memory topics - Patterns — Recurring patterns observed across work - Skills — Custom workflows and slash commands ### Recent Changes (last 48h) abc1234 Add error monitoring to auth service def5678 Update API contract draft ### Open Tasks - [ ] Review auth PR with Sarah - [ ] Draft incident RCA ### Active Work - Auth Refactor.md - API Contract.md ### Vault File Listing ./brain/Gotchas.md ./brain/Key Decisions.md [... all .md files except .git, .obsidian, thinking, .claude ...] ``` -------------------------------- ### Install Obsidian Mind via ShardMind Source: https://context7.com/breferrari/obsidian-mind/llms.txt Installs Obsidian Mind using ShardMind, a recommended method that includes a personalization wizard. Follow prompts for setup. ```bash npm install -g shardmind mkdir my-vault && cd my-vault shardmind install github:breferrari/obsidian-mind # Wizard prompts: your name, org, vault purpose, agents to include, QMD enabled # Post-install hook personalizes brain/North Star.md and optionally bootstraps QMD ``` -------------------------------- ### Install Obsidian Mind via Git Clone Source: https://context7.com/breferrari/obsidian-mind/llms.txt Installs Obsidian Mind by cloning the repository directly. Requires manual setup of Obsidian CLI and agent execution. ```bash git clone https://github.com/breferrari/obsidian-mind.git my-vault cd my-vault # Open folder as an Obsidian vault # Enable Obsidian CLI in Settings → General (requires Obsidian 1.12+) # Run your agent: claude OR codex OR gemini ``` -------------------------------- ### QMD Bootstrap Script for Index Setup Source: https://context7.com/breferrari/obsidian-mind/llms.txt This script performs a one-time, idempotent setup for the QMD index. It registers the vault, attaches context, syncs ignore patterns, and builds the BM25 index and vector embeddings. ```bash # Run from vault root: node --experimental-strip-types scripts/qmd-bootstrap.ts # Output: # → Bootstrapping QMD index 'obsidian-mind' # → Registering collection 'obsidian-mind' (pattern **/*.md) # → Clearing previous context (if any) # → Attaching vault context from manifest # → Syncing ignore patterns from .obsidian/app.json # 3 ignore pattern(s) synced from .obsidian/app.json # → Indexing vault files # → Generating embeddings # # ✓ QMD index 'obsidian-mind' ready. Test with: ``` -------------------------------- ### Install and Bootstrap QMD Source: https://github.com/breferrari/obsidian-mind/blob/main/README.md Install the QMD package and run the bootstrap script to set up semantic search for your vault. This process is idempotent and configures the vault's index and context. ```bash npm install -g @tobilu/qmd node --experimental-strip-types scripts/qmd-bootstrap.ts ``` -------------------------------- ### Install Obsidian Mind Source: https://github.com/breferrari/obsidian-mind/blob/main/README.md Install Obsidian Mind using either the `shardmind` command or by cloning the repository. Both methods result in the same vault. ```bash shardmind install ``` ```bash git clone ``` -------------------------------- ### Slash Command: /om-standup Source: https://context7.com/breferrari/obsidian-mind/llms.txt Initiates a morning kickoff by loading vault context and presenting a structured summary with suggested priorities. This command should be invoked at the start of any substantial work session. ```shell /om-standup # Agent reads: # → Home.md (dashboard state) # → brain/North Star.md (current goals) # → work/Index.md (active projects) # → obsidian daily:read (today's daily note) # → obsidian tasks daily todo (open tasks) # → git log --oneline --since="24 hours ago" --no-merges # Output: # **Yesterday**: Merged auth coordinator split (abc1234), updated API contract draft # **Active Work**: Auth Refactor (blocked on error monitoring), API Contract (in review) # **Open Tasks**: Review auth PR with Sarah, Draft incident RCA # **North Star Alignment**: Auth work directly advances Q2 reliability goal # **Suggested Focus**: Unblock error monitoring — Sarah flagged this at last 1:1 ``` -------------------------------- ### Session Start Hook Scripts Source: https://github.com/breferrari/obsidian-mind/blob/main/CLAUDE.md Example hook scripts for Obsidian. These scripts can automate tasks like session startup, message classification, and validation. ```typescript session-start.ts ``` ```typescript classify-message.ts ``` ```typescript validate-write.ts ``` ```typescript pre-compact.ts ``` ```typescript stop-checklist.ts ``` ```typescript charcount.ts ``` -------------------------------- ### QMD CLI Commands Source: https://github.com/breferrari/obsidian-mind/blob/main/README.md Example commands for interacting with QMD via the command-line interface. Use the `--index` flag to specify your vault's index name. ```bash qmd --index obsidian-mind query "what did we decide about caching" qmd --index obsidian-mind update qmd --index obsidian-mind embed ``` -------------------------------- ### Start Claude Code CLI Source: https://github.com/breferrari/obsidian-mind/wiki/Obsidian-+-Claude-Code-Setup-Guide Navigate to the cloned vault directory and start the Claude Code CLI. Claude will automatically detect the vault structure and load context. ```bash cd obsidian-mind claude ``` -------------------------------- ### Note Frontmatter Schema Examples Source: https://context7.com/breferrari/obsidian-mind/llms.txt These examples illustrate the required YAML frontmatter for different types of notes. They specify essential fields like date, description, and tags, along with type-specific fields enforced by validation hooks. ```yaml # Work note (work/active/ or work/archive/YYYY/) --- date: "2026-04-30" description: "Refactoring the auth service to split coordinator role and add error monitoring before Q2 release." project: auth-refactor status: active # active | completed | archived quarter: Q2-2026 tags: - work-note --- # Decision Record (work/active/ or work/) --- date: "2026-04-30" description: "Decision to defer Redis migration to Q2 and focus on API contract first." status: proposed # proposed | accepted | deprecated tags: - decision --- ``` -------------------------------- ### Bootstrap QMD Semantic Search Source: https://context7.com/breferrari/obsidian-mind/llms.txt Installs and bootstraps the QMD semantic search layer. This process is idempotent and may download large models on the first run. ```bash npm install -g @tobilu/qmd node --experimental-strip-types scripts/qmd-bootstrap.ts # → Registers collection, attaches context, builds BM25 index + vector embeddings # → Safe to re-run (idempotent) # → First embed run downloads ~328MB embedding model + ~1.28GB reranker (for qmd query) ``` ```bash # Test the index: qmd --index obsidian-mind query "what did we decide about caching" qmd --index obsidian-mind search "auth refactor" # BM25 only, no model download ``` -------------------------------- ### Daily Standup Command Source: https://github.com/breferrari/obsidian-mind/blob/main/README.md Use the `/om-standup` command to get a summary of your current projects, tasks, and recent activities. It loads your North Star, active projects, open tasks, and recent git changes. ```bash /om-standup # → loads North Star, active projects, open tasks, recent git changes # → "You have 2 active projects. The auth refactor is blocked on API contract. # Your 1:1 with Sarah is at 2pm — last time she flagged observability." ``` -------------------------------- ### Install Obsidian Mind with ShardMind Source: https://github.com/breferrari/obsidian-mind/blob/main/README.md Use ShardMind to install the Obsidian Mind vault. This method includes a wizard for configuration and personalization. Ensure you are in a new directory before running the install command. ```bash npm install -g shardmind mkdir my-vault && cd my-vault shardmind install github:breferrari/obsidian-mind ``` -------------------------------- ### Gemini CLI Settings for Hooks Source: https://context7.com/breferrari/obsidian-mind/llms.txt Configure background scripts to run at specific points in the AI agent session lifecycle. Ensure Node.js is installed and the script paths are correct. ```json { "hooks": { "SessionStart": "node --experimental-strip-types .claude/scripts/session-start.ts", "BeforeAgent": "node --experimental-strip-types .claude/scripts/classify-message.ts", "AfterTool": "node --experimental-strip-types .claude/scripts/validate-write.ts", "PreCompress": "node --experimental-strip-types .claude/scripts/pre-compact.ts" } } ``` -------------------------------- ### PR Title Format Example Source: https://github.com/breferrari/obsidian-mind/blob/main/CONTRIBUTING.md Use this format for PR titles to ensure consistency and proper changelog generation. Prefixes indicate the type of change. ```markdown feat: add /om-review command ``` ```markdown fix: classify-message crash on empty input ``` ```markdown docs: update Japanese README with new commands ``` -------------------------------- ### Classify Message Hook Example Source: https://context7.com/breferrari/obsidian-mind/llms.txt Demonstrates the classify-message hook, which processes user prompts from stdin to provide routing hints. It handles multiple languages and exits silently if no matches are found. ```bash # Input (from agent harness via stdin): echo '{"prompt": "Just had a 1:1 with Sarah. She praised the auth work and wants error monitoring before release.", "hook_event_name": "UserPromptSubmit"}' \ | node --experimental-strip-types .claude/scripts/classify-message.ts # Output (hookSpecificOutput envelope): # Content classification hints (act on these if the user's message contains relevant info): # - WIN detected — consider adding to perf/Brag Doc.md with a link to the evidence note ``` -------------------------------- ### Adopt Existing Clone into ShardMind Source: https://github.com/breferrari/obsidian-mind/blob/main/README.md Use the `shardmind adopt` command to integrate an existing obsidian-mind clone into a managed v6 install. This process keeps your customizations and adds the necessary sidecar files. ```bash npm install -g shardmind shardmind adopt github:breferrari/obsidian-mind ``` -------------------------------- ### QMD Bootstrap Process Source: https://context7.com/breferrari/obsidian-mind/llms.txt This script outlines the steps involved in bootstrapping the QMD index. It covers reading manifest files, validating index names, adding collections and contexts, filtering ignored files, and performing initial updates for both BM25/FTS and vector embeddings. ```typescript // What the bootstrap does (scripts/qmd-bootstrap.ts): // 1. Reads vault-manifest.json for qmd_index, qmd_context, template fields // 2. Validates qmd_index (alphanumeric + dot/dash/underscore, starts with alphanumeric) // 3. qmd --index collection add . --pattern **/*.md // 4. qmd --index context rm qmd:/// (idempotent — ignores "not found") // 5. qmd --index context add qmd:/// "" // 6. Reads .obsidian/app.json userIgnoreFilters → writes to ~/.config/qmd/.yml // 7. qmd --index update (BM25/FTS index) // 8. qmd --index embed (vector embeddings — downloads models on first run) ``` -------------------------------- ### QMD CLI Equivalents for MCP Tools Source: https://context7.com/breferrari/obsidian-mind/llms.txt These are the command-line interface equivalents for the MCP tools. They serve as a fallback when MCP is not registered, allowing direct interaction with the QMD index for querying, searching, and managing data. ```bash # CLI equivalents (fallback when MCP not registered): qmd --index obsidian-mind query "what did we decide about caching" qmd --index obsidian-mind search "auth refactor" # BM25 only, faster qmd --index obsidian-mind vsearch "authentication" # vector-only, no reranker qmd --index obsidian-mind get "brain/Key Decisions.md" qmd --index obsidian-mind update # re-index after bulk edits qmd --index obsidian-mind embed # regenerate embeddings ``` -------------------------------- ### Brag Spotter Subagent Output Source: https://context7.com/breferrari/obsidian-mind/llms.txt Example output format for the brag-spotter subagent, detailing uncaptured wins, competency gaps, and suggested brag entries. ```markdown Output format: **Uncaptured wins:** - INC-2847 incident lead (high impact) — demonstrates Reliability competency Evidence: work/incidents/INC-2847 Auth Token Failure.md **Competency gaps (thin evidence this quarter):** - Mentorship — 0 evidence links from current quarter notes **Suggested brag entries:** > **Q2 2026 — Led P1 incident response for INC-2847** > Root-caused auth connection pool exhaustion under load, coordinated fix, > reduced MTTR to 39min. See [[INC-2847 Auth Token Failure]]. ``` -------------------------------- ### MCP Tools - In-Session Semantic Search Source: https://context7.com/breferrari/obsidian-mind/llms.txt These are the in-session agent commands available when QMD is installed and the MCP server is registered. They provide typed access to QMD functionalities. ```APIDOC ## MCP Tools - In-Session Semantic Search ### Description When QMD is installed and the MCP server is registered, the agent gains four typed tools that appear alongside Read and Edit in the tool menu. Preference order: MCP tools first (no `--index` argument needed — wrapper reads `qmd_index` from manifest), then `qmd` CLI fallback, then Grep/Glob/Read as last resort. ### Tools #### `mcp__qmd__query` ##### Description Semantic search - finds relevant notes by meaning, not keyword. ##### Usage ```typescript mcp__qmd__query({ query: "what did we decide about caching" }) ``` ##### Returns Ranked results with file paths, snippets, relevance scores. #### `mcp__qmd__get` ##### Description Retrieve a note by path. ##### Usage ```typescript mcp__qmd__get({ path: "brain/Key Decisions.md" }) ``` ##### Returns Full note content. #### `mcp__qmd__multi_get` ##### Description Retrieve multiple notes at once. ##### Usage ```typescript mcp__qmd__multi_get({ paths: ["brain/Patterns.md", "brain/Gotchas.md"] }) ``` ##### Returns Array of note contents. #### `mcp__qmd__status` ##### Description Check index status. ##### Usage ```typescript mcp__qmd__status({}) ``` ##### Returns Index name, collection count, last-updated timestamp. ``` -------------------------------- ### Direct Invocation of SessionStart Hook Source: https://context7.com/breferrari/obsidian-mind/llms.txt Shows how to directly invoke the session-start script for testing or custom agent integration. It reads project directory from environment variables. ```typescript // Direct invocation (for testing or custom agents): // node --experimental-strip-types .claude/scripts/session-start.ts // Reads CLAUDE_PROJECT_DIR / CODEX_PROJECT_DIR / GEMINI_PROJECT_DIR env vars // Falls back to process.cwd() ``` -------------------------------- ### Running Tests Source: https://github.com/breferrari/obsidian-mind/blob/main/CONTRIBUTING.md Execute tests by navigating to the scripts directory and running the npm test command. Tests are automatically triggered for PRs affecting the scripts. ```bash cd .claude/scripts && npm test ``` -------------------------------- ### QMD CLI Equivalents Source: https://context7.com/breferrari/obsidian-mind/llms.txt These are the command-line interface equivalents for the QMD operations, used as a fallback when the MCP is not registered. ```APIDOC ## QMD CLI Equivalents ### Description These are the command-line interface equivalents for the QMD operations, used as a fallback when the MCP is not registered. ### Commands #### `qmd --index query ""` ##### Description Performs a semantic search for notes related to the specified topic. #### `qmd --index search ""` ##### Description Performs a BM25 keyword search, which is faster than semantic search. #### `qmd --index vsearch ""` ##### Description Performs a vector-only search without a reranker. #### `qmd --index get ""` ##### Description Retrieves the full content of a note by its path. #### `qmd --index update` ##### Description Re-indexes notes after bulk edits. #### `qmd --index embed` ##### Description Regenerates vector embeddings for notes. ``` -------------------------------- ### Gemini CLI Configuration for Context Files Source: https://context7.com/breferrari/obsidian-mind/llms.txt Configure the Gemini CLI to recognize specific markdown files for context. This allows the CLI to read GEMINI.md and CLAUDE.md natively. ```json // Gemini CLI — ~/.gemini/settings.json // Read CLAUDE.md natively: { "context": { "fileName": ["GEMINI.md", "CLAUDE.md"] } } ``` -------------------------------- ### Slash Command: /om-dump Source: https://context7.com/breferrari/obsidian-mind/llms.txt Captures freeform natural language input, classifies it, and routes it to the correct vault notes with proper templates and wikilinks. It searches for existing notes before creating new ones. ```shell /om-dump Just had a 1:1 with Sarah. She's happy with the auth work but wants error monitoring before release. Tom mentioned the cache migration is deferred to Q2 — we decided to focus on the API contract first. Win: Sarah praised the auth architecture in front of the whole team. # Agent: # 1. Classifies: 1:1 content, decision, win, person context # 2. Searches QMD for existing Sarah, Tom, auth refactor notes # 3. Creates work/1-1/Sarah Chen 2026-04-30.md with full frontmatter + wikilinks # 4. Creates Decision Record: "Defer Redis migration to Q2" # 5. Appends to perf/Brag Doc.md: "Auth architecture praised by manager" # 6. Updates org/people/Sarah Chen.md with meeting context # 7. Updates work/active/Auth Refactor.md with error monitoring task # Summary: # → Created: work/1-1/Sarah Chen 2026-04-30.md # → Created: work/active/Defer Redis Migration Decision.md # → Updated: perf/Brag Doc.md (Q2 2026 section) # → Updated: org/people/Sarah Chen.md ``` -------------------------------- ### Dry Run Vault Migration Source: https://github.com/breferrari/obsidian-mind/blob/main/README.md Use the `--dry-run` flag with the `/om-vault-upgrade` command to preview the migration plan without executing any changes. This is useful for understanding what will be copied, transformed, and skipped. ```bash # 1. Clone the latest obsidian-mind git clone https://github.com/breferrari/obsidian-mind.git ~/new-vault # 2. Open it in your agent cd ~/new-vault && claude # or codex, or gemini # 3. Run the upgrade pointing to your old vault /om-vault-upgrade --dry-run ~/my-old-vault ``` -------------------------------- ### QMD Integration Flowchart Source: https://github.com/breferrari/obsidian-mind/blob/main/ARCHITECTURE.md Visual representation of how agent tools and index maintenance processes interact with the QMD system and its storage. ```mermaid flowchart TB subgraph Reader["Agent tools"] MCP_get["mcp__qmd__get"] MCP_query["mcp__qmd__query"] MCP_multi["mcp__qmd__multi_get"] MCP_status["mcp__qmd__status"] end subgraph Writer["Index maintenance"] Boot["qmd-bootstrap.ts
(one-time)"] Session["session-start.ts
(per session)"] Refresh["qmd-refresh-run.ts
(per write/stop/pre-compact,
debounced, detached)"] end Wrapper["qmd-mcp.mjs
(reads qmd_index from manifest)"] CLI["qmd CLI
(--index <name> from manifest)"] Store[("Named SQLite store
+ embeddings")] MCP_get --> Wrapper MCP_query --> Wrapper MCP_multi --> Wrapper MCP_status --> Wrapper Wrapper --> Store Boot --> CLI Session --> CLI Refresh --> CLI CLI --> Store ``` -------------------------------- ### Pre-Compact Hook Script Source: https://context7.com/breferrari/obsidian-mind/llms.txt This script acts as a PreCompact hook, backing up the session transcript before context compaction. It also triggers a debounced QMD refresh and manages backup retention. ```bash # Input (from agent harness via stdin before compaction): echo '{"transcript_path": "/tmp/session-abc123.jsonl", "trigger": "manual"}' \ | node --experimental-strip-types .claude/scripts/pre-compact.ts # Effect: # → Copies transcript to thinking/session-logs/session_manual_20260430_143022.jsonl # → Prunes backups older than the 30 most recent # → Triggers debounced QMD refresh (30s debounce window, detached worker) # → Exit 0 always # Backup naming: session__.jsonl ``` -------------------------------- ### Ignore List Synchronization Flowchart Source: https://github.com/breferrari/obsidian-mind/blob/main/ARCHITECTURE.md Diagram illustrating how the ignore list from Obsidian's configuration is propagated to QMD's index. ```mermaid flowchart LR App[".obsidian/app.json
userIgnoreFilters"] Boot["qmd-bootstrap.ts"] YAML["~/.config/qmd/<index>.yml
collections.<name>.ignore"] Obs["Obsidian
(search, graph, switcher)"] QmdUpdate["qmd update
(every invocation)"] App --> Obs App --> Boot Boot --> YAML YAML --> QmdUpdate ``` -------------------------------- ### Lifecycle Hooks Sequence Diagram Source: https://github.com/breferrari/obsidian-mind/blob/main/ARCHITECTURE.md This diagram illustrates the sequence of events and interactions between the user, agent, hooks, vault, and QMD during a session, highlighting data flow and hook responsibilities. ```mermaid sequenceDiagram participant User participant Agent participant Hooks participant Vault participant QMD User->>Agent: start session Agent->>Hooks: SessionStart Hooks->>Vault: read North Star, git log, tasks, file listing Hooks->>QMD: re-index (async) Hooks-->>Agent: inject ~2K tokens of context loop each user message User->>Agent: prompt Agent->>Hooks: UserPromptSubmit Hooks->>Hooks: classify (decision, incident, win, 1:1, ...) Hooks-->>Agent: routing hints end loop each Write/Edit to .md Agent->>Hooks: PostToolUse Hooks->>Hooks: validate frontmatter + wikilinks Hooks->>QMD: debounced refresh (detached) Hooks-->>Agent: warnings if invalid end Note over Agent,Hooks: if context fills Agent->>Hooks: PreCompact Hooks->>Vault: back up transcript to thinking/session-logs/ User->>Agent: end session Agent->>Hooks: Stop Hooks-->>Agent: wrap-up checklist reminder ``` -------------------------------- ### Vault-First Memory Diagram Source: https://github.com/breferrari/obsidian-mind/blob/main/ARCHITECTURE.md Visualizes the two memory systems: ephemeral (auto-loaded index in ~/.claude/) and durable (git-tracked vault in brain/). It shows how the SessionStart hook and the auto-loaded index interact with the vault's topic notes. ```mermaid flowchart LR SessionStart["SessionStart hook
(.claude/scripts/session-start.ts)"] subgraph Ephemeral["~/.claude/ (not git-tracked)"] MemIndex["MEMORY.md
(auto-loaded index)"] end subgraph Durable["Vault (git-tracked)"] NorthStar["brain/North Star.md"] BrainIdx["brain/Memories.md
(topic index)"] Gotchas["brain/Gotchas.md"] Patterns["brain/Patterns.md"] Decisions["brain/Key Decisions.md"] end SessionStart ==>|reads every session| NorthStar MemIndex -->|points at| BrainIdx MemIndex -->|points at| Gotchas MemIndex -->|points at| Patterns MemIndex -->|points at| Decisions BrainIdx --> Gotchas BrainIdx --> Patterns BrainIdx --> Decisions ``` -------------------------------- ### Claude Agent Configuration - settings.json Source: https://context7.com/breferrari/obsidian-mind/llms.txt Configuration for Claude agent hooks, defining commands to run at different stages of a session like startup, prompt submission, and tool use. ```json { "hooks": { "SessionStart": [{ "matcher": "startup|resume|clear|compact", "hooks": [{ "type": "command", "command": "node --experimental-strip-types \"${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/session-start.ts\"", "timeout": 30 }] }], "UserPromptSubmit": [{ "hooks": [{ "type": "command", "command": "node --experimental-strip-types \"${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/classify-message.ts\"", "timeout": 15 }] }], "PostToolUse": [{ "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "node --experimental-strip-types \"${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/validate-write.ts\"", "timeout": 15 }, { "type": "command", "command": "node --experimental-strip-types \"${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/qmd-refresh.ts\"", "timeout": 15 } ] }], "PreCompact": [{ "hooks": [{ "type": "command", "command": "node --experimental-strip-types \"${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/pre-compact.ts\"", "timeout": 30 }] }], "Stop": [{ "hooks": [{ "type": "command", "command": "node --experimental-strip-types \"${CLAUDE_PROJECT_DIR:-.}/.claude/scripts/stop-checklist.ts\"", "timeout": 5 }] }] } } ``` -------------------------------- ### Multi-Agent Portability Diagram Source: https://github.com/breferrari/obsidian-mind/blob/main/ARCHITECTURE.md Illustrates how different agents (Claude Code, Codex, Gemini) map their unique event names to shared scripts via individual configuration files. Each agent also has its own operating manual. ```mermaid flowchart TB subgraph Configs["Per-agent config (event name mapping)"] Claude[".claude/settings.json
Claude Code"] Codex[".codex/hooks.json
Codex CLI"] Gemini[".gemini/settings.json
Gemini CLI"] end subgraph Shared[".claude/scripts/ (shared core)"] S1["session-start.ts"] S2["classify-message.ts"] S3["validate-write.ts"] S4["qmd-refresh.ts"] S5["pre-compact.ts"] S6["stop-checklist.ts"] end subgraph Manuals["Operating manuals"] CM["CLAUDE.md"] AM["AGENTS.md"] GM["GEMINI.md"] end Claude --> Shared Codex --> Shared Gemini --> Shared Claude -.reads.-> CM Codex -.reads.-> AM Gemini -.reads.-> GM ``` -------------------------------- ### Perform Session Wrap-up and Review Source: https://context7.com/breferrari/obsidian-mind/llms.txt Conducts a full session review, verifying note quality, checking index consistency, finding orphans, identifying archivable projects, surfacing patterns, and running the brag-spotter subagent. This command can be triggered automatically by saying 'wrap up'. ```shell /om-wrap-up ``` -------------------------------- ### Obsidian CLI Commands Source: https://github.com/breferrari/obsidian-mind/blob/main/CLAUDE.md Use these commands when Obsidian is running for vault-aware operations. 'file=' resolves like a wikilink, 'path=' uses the exact path. Use 'silent' to prevent files from opening. Run 'obsidian help' for a full reference. ```bash obsidian read file="Note Name" ``` ```bash obsidian create name="Name" content="..." silent ``` ```bash obsidian append file="Name" content="..." ``` ```bash obsidian search query="text" limit=10 ``` ```bash obsidian backlinks file="Name" ``` ```bash obsidian tags sort=count counts ``` ```bash obsidian tasks daily todo ``` ```bash obsidian daily:read ``` ```bash obsidian property:set name="status" value="done" file="Name" ``` ```bash obsidian orphans ``` -------------------------------- ### Codex CLI Configuration for Project Docs Source: https://context7.com/breferrari/obsidian-mind/llms.txt Specify fallback filenames for project documentation when using the Codex CLI. This ensures CLAUDE.md is read natively. ```toml # Codex CLI — ~/.codex/config.toml # Read CLAUDE.md natively: project_doc_fallback_filenames = ["CLAUDE.md"] ``` -------------------------------- ### QMD Index Name Coexistence Source: https://github.com/breferrari/obsidian-mind/blob/main/ARCHITECTURE.md The `qmd_index` field in the manifest ensures that multiple QMD-indexed projects can coexist on the same machine without data collision. Changing this field on the next bootstrap creates an isolated store. ```mermaid flowchart LR Manifest["vault-manifest.json
qmd_index: obsidian-mind"] SessionStart["SessionStart hook
(session-start.ts)"] MCP[".mcp.json wrapper
(qmd-mcp.mjs)"] Refresh["Mid-session refresh
(PostToolUse / Stop / PreCompact
→ qmd-refresh-run.ts worker)"] Store[("QMD SQLite store
(named: obsidian-mind)")] Manifest --> SessionStart Manifest --> MCP Manifest --> Refresh SessionStart -->|re-index at startup| Store Refresh -->|debounced refresh| Store MCP -->|search tools| Store ```