/stratos-memory-stack
Audit, install, and configure the Stratos Memory Stack for Claude Code (seven layers: claude-mem, basic-memory, Obsidian, Pinecone, CLAUDE.md/MEMORY.md, STATE.md, and the optional unified retrieval engine) plus the optional Mode Activators hook for multi-stream vaults. Use when
$ npx -y skills add ArshiaEcho/stratos-memory-stack --skill stratos-memory-stack --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/stratos-memory-stack
Context preview
The summary Claude sees to decide when to auto-load this skill.
Audit, install, and configure the Stratos Memory Stack for Claude Code (seven layers: claude-mem, basic-memory, Obsidian, Pinecone, CLAUDE.md/MEMORY.md, STATE.md, and the optional unified retrieval engine) plus the optional Mode Activators hook for multi-stream vaults. Use when
SKILL.md
stratos-memory-stack.SKILL.mdname: stratos-memory-stack
description: Audit, install, and configure the Stratos Memory Stack for Claude Code (seven layers: claude-mem, basic-memory, Obsidian, Pinecone, CLAUDE.md/MEMORY.md, STATE.md, and the optional unified retrieval engine) plus the optional Mode Activators hook for multi-stream vaults. Use when the user says "set up memory", "install the memory stack", "audit my memory", "what memory layers do I have", "Stratos memory stack", "unified retrieval", "knowledge base over my vault", "RAG over my notes", "mode activators", "wrong project context", "/stratos-memory-stack", or asks for persistent context across Claude Code sessions.
Stratos Memory Stack
You are setting up or auditing a seven-layer persistent memory system for Claude Code. The user wants Claude to remember context across sessions, search their knowledge base by meaning, and never re-explain a project from scratch.
The Seven Layers
| # | Layer | Type | Job | |---|---|---|---| | 1 | `claude-mem` | Plugin | Auto-captures sessions, auto-injects past context next session | | 2 | `basic-memory` | MCP server | Semantic search over the user's knowledge vault | | 3 | Obsidian | App | Source of truth, local markdown notes | | 4 | Pinecone | Cloud + scripts | Vector archive of immutable raw docs | | 5 | `CLAUDE.md` + `MEMORY.md` | File convention | Rules auto-loaded every session | | 6 | `STATE.md` per project | File convention | Per-project resume state with handoff summary | | 7 | Unified retrieval engine | Postgres + pgvector + MCP | One embeddings table over every corpus, hybrid search fused with RRF. Optional, advanced |
Workflow
Run in two phases. Always start with **Audit**. Only proceed to **Install** for missing layers after the user confirms.
---
Phase 1: Audit
Check each layer in order. Report results as a single status table at the end. Do not stop mid-audit even if early checks fail.
Layer 1: claude-mem
Check whether the plugin is installed and enabled:
ls ~/.claude/plugins/cache/thedotmack/claude-mem 2>/dev/null && echo "FOUND" || echo "MISSING"
Also check `~/.claude/settings.json` for `"claude-mem@thedotmack": true` under `enabledPlugins`.
**Status:**
- `INSTALLED` if both checks pass
- `PARTIAL` if installed but not enabled in settings
- `MISSING` otherwise
Layer 2: basic-memory
Check if the MCP server is configured:
cat ~/.claude.json 2>/dev/null | grep -i "basic-memory" | head -3
cat ./.mcp.json 2>/dev/null | grep -i "basic-memory" | head -3
which basic-memory 2>/dev/null
Also look for the tool in the current Claude Code session by checking if `mcp__basic-memory__*` tools appear in available tools.
**Status:** `INSTALLED` / `PARTIAL` (CLI present but no MCP config) / `MISSING`
Layer 3: Obsidian
Detect whether the current working directory is an Obsidian vault, or if one exists nearby:
ls .obsidian 2>/dev/null && echo "VAULT_HERE" || echo "NO_VAULT_HERE"
find ~ -maxdepth 4 -name ".obsidian" -type d 2>/dev/null | head -3
Check structure: look for `inbox/`, `projects/`, `areas/`, `resources/`, `knowledge/`, `_templates/`.
**Status:**
- `INSTALLED` if vault found with at least 3 of the expected folders
- `PARTIAL` if vault exists but lacks the recommended structure
- `MISSING` if no vault found
Layer 4: Pinecone
Check for the standard scripts and credentials:
find . -name "pinecone_query.py" -maxdepth 4 2>/dev/null | head -3
find . -name "pinecone_ingest.py" -maxdepth 4 2>/dev/null | head -3
grep -l "PINECONE_API_KEY" .env knowledge/.env 2>/dev/null
**Status:**
- `INSTALLED` if both scripts + a `.env` with the key exist
- `PARTIAL` if scripts exist but no key, or key exists but no scripts
- `MISSING` otherwise. Flag as **optional** since Pinecone only matters once the user has raw archives worth indexing.
Layer 5: CLAUDE.md and MEMORY.md
ls CLAUDE.md ~/CLAUDE.md 2>/dev/null
ls ~/.claude/projects/*/memory/MEMORY.md 2>/dev/null
Read any `CLAUDE.md` found and check whether it includes:
- Vault/repo structure overview
- File naming conventions
- Memory system documentation
- Behavioral rules
**Status:**
- `INSTALLED` if `CLAUDE.md` exists and covers structure + conventions
- `PARTIAL` if file exists but is thin (under 30 lines, missing sections)
- `MISSING` if no file
Layer 6: STATE.md per project
find . -name "STATE.md" -path "*/projects/*" -maxdepth 5 2>/dev/null | head -5
find . -name "STATE.md" -maxdepth 3 2>/dev/null | head -5
For each found file, check whether it has the standard frontmatter (`status`, `next_action`, `blockers`, `last_touched`) and a 🚨 FIRST ACTION block.
**Status:**
- `INSTALLED` if at least one STATE.md exists with the full pattern
- `PARTIAL` if files exist but lack the FIRST ACTION block
- `MISSING` if no project STATE.md files
Layer 7: Unified retrieval engine (optional, advanced)
Only worth checking (and only worth installing) when the user has a corpus that cannot fit in the prompt window: large transcript sets, big vaults, client document sets, codebases. Otherwise mark `N/A (corpus fits in prompt)`.
# a knowledge database with pgvector and a populated embeddings table?
psql -l 2>/dev/null | grep -iE "knowledge" | head -3
psql -d <their_knowledge_db> -tc "SELECT source, count(*) FROM embeddings GROUP BY source" 2>/dev/null
# an MCP server serving retrieval primitives?
claude mcp list 2>/dev/null | grep -i "knowledge"
**Status:**
- `INSTALLED` if the embeddings table has rows AND an MCP server is registered
- `PARTIAL` if the database exists but the MCP server is not wired (or vice versa)
- `MISSING` if the user has an oversized corpus and no engine
- `N/A` if every corpus still fits in the prompt window (tell them to skip it; prompt caching wins at that size)
Bonus: Mode Activators (only check if multi-stream vault)
Mode Activators are an optional `UserPromptSubmit` hook that fixes the wrong-stream con
Read more
name: stratos-memory-stack description: Audit, install, and configure the Stratos Memory Stack for Claude Code (seven layers: claude-mem, basic-memory, Obsidian, Pinecone, CLAUDE.md/MEMORY.md, STATE.md, and the optional unified retrieval engine) plus the optional Mode Activators hook for multi-stream vaults. Use when the user says "set up memory", "install the memory stack", "audit my memory", "what memory layers do I have", "Stratos memory stack", "unified retrieval", "knowledge base over my vault", "RAG over my notes", "mode activators", "wrong project context", "/stratos-memory-stack", or asks for persistent context across Claude Code sessions.
Stratos Memory Stack
You are setting up or auditing a seven-layer persistent memory system for Claude Code. The user wants Claude to remember context across sessions, search their knowledge base by meaning, and never re-explain a project from scratch.
The Seven Layers
| # | Layer | Type | Job | |---|---|---|---| | 1 | `claude-mem` | Plugin | Auto-captures sessions, auto-injects past context next session | | 2 | `basic-memory` | MCP server | Semantic search over the user's knowledge vault | | 3 | Obsidian | App | Source of truth, local markdown notes | | 4 | Pinecone | Cloud + scripts | Vector archive of immutable raw docs | | 5 | `CLAUDE.md` + `MEMORY.md` | File convention | Rules auto-loaded every session | | 6 | `STATE.md` per project | File convention | Per-project resume state with handoff summary | | 7 | Unified retrieval engine | Postgres + pgvector + MCP | One embeddings table over every corpus, hybrid search fused with RRF. Optional, advanced |
Workflow
Run in two phases. Always start with **Audit**. Only proceed to **Install** for missing layers after the user confirms.
---
Phase 1: Audit
Check each layer in order. Report results as a single status table at the end. Do not stop mid-audit even if early checks fail.
Layer 1: claude-mem
Check whether the plugin is installed and enabled:
ls ~/.claude/plugins/cache/thedotmack/claude-mem 2>/dev/null && echo "FOUND" || echo "MISSING"
Also check `~/.claude/settings.json` for `"claude-mem@thedotmack": true` under `enabledPlugins`.
**Status:**
- `INSTALLED` if both checks pass
- `PARTIAL` if installed but not enabled in settings
- `MISSING` otherwise
Layer 2: basic-memory
Check if the MCP server is configured:
cat ~/.claude.json 2>/dev/null | grep -i "basic-memory" | head -3 cat ./.mcp.json 2>/dev/null | grep -i "basic-memory" | head -3 which basic-memory 2>/dev/null
Also look for the tool in the current Claude Code session by checking if `mcp__basic-memory__*` tools appear in available tools.
**Status:** `INSTALLED` / `PARTIAL` (CLI present but no MCP config) / `MISSING`
Layer 3: Obsidian
Detect whether the current working directory is an Obsidian vault, or if one exists nearby:
ls .obsidian 2>/dev/null && echo "VAULT_HERE" || echo "NO_VAULT_HERE" find ~ -maxdepth 4 -name ".obsidian" -type d 2>/dev/null | head -3
Check structure: look for `inbox/`, `projects/`, `areas/`, `resources/`, `knowledge/`, `_templates/`.
**Status:**
- `INSTALLED` if vault found with at least 3 of the expected folders
- `PARTIAL` if vault exists but lacks the recommended structure
- `MISSING` if no vault found
Layer 4: Pinecone
Check for the standard scripts and credentials:
find . -name "pinecone_query.py" -maxdepth 4 2>/dev/null | head -3 find . -name "pinecone_ingest.py" -maxdepth 4 2>/dev/null | head -3 grep -l "PINECONE_API_KEY" .env knowledge/.env 2>/dev/null
**Status:**
- `INSTALLED` if both scripts + a `.env` with the key exist
- `PARTIAL` if scripts exist but no key, or key exists but no scripts
- `MISSING` otherwise. Flag as **optional** since Pinecone only matters once the user has raw archives worth indexing.
Layer 5: CLAUDE.md and MEMORY.md
ls CLAUDE.md ~/CLAUDE.md 2>/dev/null ls ~/.claude/projects/*/memory/MEMORY.md 2>/dev/null
Read any `CLAUDE.md` found and check whether it includes:
- Vault/repo structure overview
- File naming conventions
- Memory system documentation
- Behavioral rules
**Status:**
- `INSTALLED` if `CLAUDE.md` exists and covers structure + conventions
- `PARTIAL` if file exists but is thin (under 30 lines, missing sections)
- `MISSING` if no file
Layer 6: STATE.md per project
find . -name "STATE.md" -path "*/projects/*" -maxdepth 5 2>/dev/null | head -5 find . -name "STATE.md" -maxdepth 3 2>/dev/null | head -5
For each found file, check whether it has the standard frontmatter (`status`, `next_action`, `blockers`, `last_touched`) and a 🚨 FIRST ACTION block.
**Status:**
- `INSTALLED` if at least one STATE.md exists with the full pattern
- `PARTIAL` if files exist but lack the FIRST ACTION block
- `MISSING` if no project STATE.md files
Layer 7: Unified retrieval engine (optional, advanced)
Only worth checking (and only worth installing) when the user has a corpus that cannot fit in the prompt window: large transcript sets, big vaults, client document sets, codebases. Otherwise mark `N/A (corpus fits in prompt)`.
# a knowledge database with pgvector and a populated embeddings table? psql -l 2>/dev/null | grep -iE "knowledge" | head -3 psql -d <their_knowledge_db> -tc "SELECT source, count(*) FROM embeddings GROUP BY source" 2>/dev/null # an MCP server serving retrieval primitives? claude mcp list 2>/dev/null | grep -i "knowledge"
**Status:**
- `INSTALLED` if the embeddings table has rows AND an MCP server is registered
- `PARTIAL` if the database exists but the MCP server is not wired (or vice versa)
- `MISSING` if the user has an oversized corpus and no engine
- `N/A` if every corpus still fits in the prompt window (tell them to skip it; prompt caching wins at that size)
Bonus: Mode Activators (only check if multi-stream vault)
Mode Activators are an optional `UserPromptSubmit` hook that fixes the wrong-stream con
Showing the first part of this file.
Memory that learns and keeps itself current. A six-layer memory stack for Claude Code plus a nightly learning loop (capture, consolidation, scouts, conductor) that promotes your lessons into rules and surfaces new tools that fit your stack. Free, MIT.
Repo: ArshiaEcho/stratos-memory-stack

