Skip to content

/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

shell
$ npx -y skills add ArshiaEcho/stratos-memory-stack --skill stratos-memory-stack --agent claude-code

How 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
How auto-invocation works

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.md
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

Read more
Read it on GitHub ↗

Showing the first part of this file.

Ships withstratos-memory-stack

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.

Get the whole plugin, auto-invoked
Stats
6
Stars
0
Views
0
Forks
Active
Maintenance
Shell
Language
MIT
License
13d ago
Last commit
2mo ago
Created

Repo: ArshiaEcho/stratos-memory-stack