By gideondk
Build a persistent, branch-aware memory vault for Claude Code—capture decisions, domain rules, and runbooks that Claude can recall across sessions, share with your team, and automatically archive when branches merge.
Process one parent-directory GROUP of bootstrap candidate files (e.g. `.planning/auth-rewrite/PLAN.md` + `.../CONTEXT.md` + `.../SPEC.md`) as a unit — read all files in the group, decide what concepts deserve their own notes across the set, write each note once, mark every source file processed, return one line per write. Launched in parallel by /strata:bootstrap. Grouping siblings together is what prevents the duplicate-ADR problem the previous one-file-per-worker design produced.
Isolated-context memory retrieval. Takes a natural-language query, searches the vault + code graph in this subagent's own context, returns a single curated brief (≤ ~600 tokens) to the parent. Use this for heavy synthesis across many notes so the parent's context stays clean; it calls the ranked, supersession-aware `recall` tool internally.
Retire a `.planning/<initiative>/` subdir after its content has been migrated to the vault via `/strata:bootstrap`. Runs `git mv .planning/<initiative> .attic/<initiative>` and commits. Refuses to archive subdirs that aren't fully bootstrap-processed (to avoid losing knowledge). NEVER auto-invokes, always require explicit user request, since the operation rewrites the working tree.
Move merged branches' pr-context dirs into archive/. User-only — run when the user explicitly asks to "clean up old branches", "archive merged work", or "tidy the vault". Never deletes, only moves, but it mutates the vault and changes what recall returns, so it does not auto-invoke (matching forget / export-to-repo / promote-to-pr). Detects merged branches via `gh pr list --state merged` or `git branch --merged main` fallback.
Check the project's Claude Code config (CLAUDE.md, .claude/settings.json, skills, agents) for staleness. Read-only. Use when the user says "review our Claude config", "is our CLAUDE.md stale", "audit the setup", or after upgrading to a new model. Command-only — run it explicitly as /strata:audit-config.
One-time onboarding pass to seed the Strata vault from an existing codebase's docs. Scans CLAUDE.md, docs/, .planning/, and similar for candidates, then dispatches each one to a `strata:bootstrap-worker` subagent in parallel batches, the worker reads its file, classifies, writes the right kind of vault note, and returns one line. Idempotent, tracks processed files by SHA256. Use this once when first installing Strata on a repo with substantial existing documentation.
Promote durable notes out of aging per-branch pr-context dirs into the branch-agnostic lessons/ scope (rule-based, no LLM). Use when the user says "clean up old branch notes", "graduate these to lessons", "tidy pr-context", or after a wave of merged PRs. Dry-run by default; --apply to perform. Command-only — run it explicitly as /strata:consolidate.
Admin access level
Server config contains admin-level keywords
Executes bash commands
Hook triggers when Bash tool is used
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
repo_nameOverride the auto-detected repo name used as the vault subfolder. Leave blank to derive from git remote / directory name.
${user_config.repo_name}vault_pathWhere the shared memory vault lives on disk. Use ~ for your home directory (e.g. ~/StrataVault, ~/Library/Mobile Documents/iCloud~md~obsidian/Documents/Strata, ~/Dropbox/Strata). Sync it however you like (Obsidian Sync, Syncthing, iCloud, Dropbox, git). Default: ~/StrataVault
${user_config.vault_path}lint_presetsComma-separated default presets for `/strata:lint`. Bundled: secrets, pii, phi-uk, phi-us. Custom presets go in presets/<name>.json.
${user_config.lint_presets}Uses power tools
Uses Bash, Write, or Edit tools
Uses power tools
Uses Bash, Write, or Edit tools
Typed, local-first memory for Claude Code.
Documentation · Getting started · FAQ
Strata gives Claude Code structured memory: the decisions you've made, the domain rules you follow, the runbooks you reach for. They're kept as plain markdown on your disk, each on its own retrieval path. Claude reads them on its own through the MCP layer, so you stop pasting context dumps and you stop hand-maintaining a giant prompt file.
The usual alternatives make recall worse. One big context file blows the window and answers in the wrong shape: you ask how to add a service and get a paragraph defining what a service is. A vector database returns whatever pattern-matches most recently, which is often a stale note that's since been corrected, handed back with full confidence. Strata writes only what you confirm and retires old notes explicitly, so what comes back is current.
Recall works because memory isn't one thing. A decision you make once ages differently from a runbook you follow every week, so Strata keeps them apart:
The path that matches the shape of your question runs. Ask "what's our token-rotation approach?" and you get the ADR, not a Slack screenshot from April. Ask "how do I add a service?" and you get the runbook, not the definition. You write a note when something deserves to outlive the conversation; Claude finds it later, file path right there in the answer.
You make a decision in conversation. You say "let's go with the section-at-once edit pattern". Claude offers to record it; you accept. A 40-line ADR lands in decisions/ with the context, the chosen option, the alternatives you rejected, and the consequences.
Six weeks later a teammate switches to your branch. Their Claude session reads the per-branch notes you saved and primes itself with what you were in the middle of. They ask "why didn't we use per-field PUTs?" and Claude pulls the rejected-alternatives section straight from your ADR, file path included. Nobody digs through Slack, and nobody has to interrupt you to ask.
A month after that, your team refactors and a new ADR supersedes the old one. The old file stays in the vault, marked status: superseded, with a forward link to its replacement. You can still walk the chain: the old reasoning is preserved without pretending to be current.
Plenty of tools claim the current note beats the stale one. Here's Strata's, measured. scripts/eval_temporal.py builds a throwaway vault and runs recall over the same cases twice: once with supersession demotion off, once with it on. It checks whether the current note outranks the superseded twin that a query also matches.
stale-suppression: off 7/19 → on 19/19 (paired McNemar: 12–0, exact p ≈ 0.0005)
current-recall@k: 19/19 either way; demoting the stale note costs nothing
Each case runs both ways, so it's a paired test you can rerun, not a number you have to take on faith:
bin/run-python.sh scripts/eval_temporal.py
It proves the mechanism on a hand-built, leakage-checked set of 19 cases. What it doesn't prove: how often the stale-versus-current clash actually shows up in a real vault, and 19 is a small set. The cases, the leakage check, and the caveats are in eval/temporal/. No "beats a vector database" line here, and there won't be one until I can measure how common that clash really is.
The vault lives on your disk. Default location is ~/StrataVault. Inside, one subfolder per repo, namespaced by your git remote. Inside that, one subfolder per scope. Plain markdown with YAML frontmatter.
npx claudepluginhub gideondk/strata --plugin strataPermanent coding companion for Claude Code — survives any update. MCP-based terminal pet with ASCII art, stats, reactions, and personality.
Upstash Context7 MCP server for up-to-date documentation lookup. Pull version-specific documentation and code examples directly from source repositories into your LLM context.
Comprehensive startup business analysis with market sizing (TAM/SAM/SOM), financial modeling, team planning, and strategic research
v9.44.1 — Patch release for Gemini environment/version detection and qwen auth gating. Run /octo:setup.
Complete creative writing suite with 10 specialized agents covering the full writing process: research gathering, character development, story architecture, world-building, dialogue coaching, editing/review, outlining, content strategy, believability auditing, and prose style/voice analysis. Includes genre-specific guides, templates, and quality checklists.
Comprehensive .NET development skills for modern C#, ASP.NET, MAUI, Blazor, Aspire, EF Core, Native AOT, testing, security, performance optimization, CI/CD, and cloud-native applications