Five compression and discipline layers, wired into a repo you already have. Then CoMind tells you exactly which files to commit, so your whole team works from one shared context.
This is an alpha, and the install contract can still move between alphas. Everything below describes what the tool does today, not a roadmap.
Put three developers on one repo with Claude Code and you get three private contexts that drift apart from day one.
Every session re-derives the same architecture facts. Verbose tool output eats the budget. Nothing survives the session: no shared spec memory, no deterministic verification, nothing compressed.
CoMind is glue. It reimplements none of the tools it uses. It installs them at pinned versions, wires them so they compose instead of colliding, and manages the Git layout that makes the result shared.
npx -y @comind-dev/comind@latest # your repo is not touched
This registers CoMind as a Claude Code plugin, which is what gets you
claude plugin update / uninstall / disable / details and a real version
registry. Four slash commands show up, costing roughly 200 always-on tokens. It installs no
tools, and nothing in your repo or your config changes. Safe to run again and again.
If the claude CLI isn't on PATH it falls back to copying into
~/.claude/comind/pkg/. That works. It also has no update or uninstall path, and
comind doctor says so rather than pretending otherwise.
/comind-init # run inside a Claude Code session
All the real work happens here, and it has to. Project setup needs a reasoning agent: GSD
onboarding maps the codebase with subagents and asks you what the project is actually for.
A shell script can do neither. And a .planning/ written from a script's
assumptions is precisely the context rot CoMind exists to prevent.
Stage 2 works out on its own whether you're bootstrapping the repo or joining one a
teammate already set up. Joining writes only machine-local files, so after it runs
git status --porcelain comes back empty.
Later, to pick up a new alpha: comind update, restart Claude Code, then
/comind-init once per repo. That upgrades CoMind and nothing else. The pinned
tool versions live in the repo's committed manifest and belong to the team, so moving them is
a separate reviewed commit.
git status โ rtk git status) so verbose output is filtered before it reaches context..ai-memory/
A queryable knowledge graph, exported as a Git-tracked Obsidian vault. A clone can query it without paying to rebuild.
One of these five is enforced. The other four are instructions. The gate hook
and the permissions.deny rules are the only parts Claude Code cannot ignore.
Phase discipline, retrieval order and verification order all live in a skill file, and they
work only if the model follows them. Worth knowing before you rely on any of it.
The split is the whole design. It's why setup is safe to re-run, and why a teammate joining doesn't dirty the repo.
.comind/manifest.json pinned versions + enabled layers
.planning/ specs, phases, roadmap
.ai-memory/ derived Obsidian vault
.claude/ gate hook, skills, commands, agents, the GSD engine and its scripts
graphify-out/ the queryable graph and its sidecars
.gitignore .gitattributes managed blocks
.comind/state/ session counters, bypass log
graphify-out/graph.html free local re-render
graphify-out/cache/ extraction cache
*.local.md scratch notes, never reach the vault
~/.claude/comind/bin/ the rtk binary, shared per machine
Slash commands are the intended interface. The CLI underneath is what they invoke.
/comind-init/comind-sync/comind-lsp/comind-doctor
Autocomplete shows /comind:comind-init, because Claude Code namespaces plugin
commands and the files carry the name as well. /comind-init is the shorthand and
the form used here. It is also the exact name on the file-copy fallback, where there is no
plugin namespace to prefix.
Add --dry-run to any CLI command to see every action without writing anything.
versions.json is the single source of truth, and each tool declares how
strictly it is held. Nothing resolves latest at install time.
~/.claude.>=) for graphify and the LSP servers. Machine-local, derived output. Nobody's repo changes because a teammate has a newer graphify.
RTK is fetched from its GitHub release and verified against that release's own
checksums.txt. Caveman installs from a pinned commit, because tags move.
claude CLI, python3 or uv, and a language server per language. Missing one skips that layer and prints the fix. It never fails the whole setup.