CALM (Coding Agent Liveness Map) is early and solo-maintained right now — which means a single contribution can actually matter. This file is deliberately biased toward non-code ways to help first, because a healthy project needs more than pull requests.
- Proofread the just-translated docs.
docs/comparison.mdanddocs/mcp-client-setup.mdwere Vietnamese-only for a while and have now been translated to English (matching the main README anddocs/architecture.md) — a native-English pass to catch anything a machine-assisted translation got stiff or unclear is still valuable. - Try CALM on a codebase in a Tier-0.5 language — 7 are on by default (C, C++, C#, Ruby, PHP, Shell, R), 11 more are opt-in behind one Cargo feature flag each (Kotlin, Swift, Scala, Dart, Lua, Elixir, Haskell, OCaml, Zig, PowerShell, Groovy) — and report where the regex/line-scan symbol extraction (or, once a language has a SCIP provider wired, the cross-reference resolution) gives a wrong or missing answer.
benchmarks/resolution/tracks known gaps (e.g. Dart parses symbols but produces zero call edges — a tree-sitter grammar limitation, not a bug) — new reports directly inform what gets prioritized next. - Write up your own workflow. A blog post or short thread showing CALM catching something before it caused a breakage is worth more than most code contributions, and we'll link to it from the README.
- Add yourself to "Who's using CALM." Even a one-line entry ("we use it to review agent-generated PRs before merge") helps the next person trust the project. (
ADOPTERS.mddoesn't exist yet — open a PR creating it if you're the first!) - Answer questions in Issues/Discussions. Solo maintainer plus a growing user base is exactly the gap where a knowledgeable early user helps the most.
Roadmap items currently open, roughly in priority order:
- Hook adapters for other MCP hosts.
calm init --hooks[=nudge|enforce]now scaffolds the PreToolUse/PostToolUse deny-hook wiring generically (backed bycalm-core::hooks/hooks_check), but it only targets Claude Code's hook schema so far. VS Code/GitHub Copilot uses the samePreToolUse/permissionDecision: denyshape, so that port should be close to a direct translation. Cursor (beforeMCPExecution) and Windsurf (Cascade Hooks) use different shapes and need their own adapters. - Resolver accuracy. False positives/negatives in
coreness/is_hubclassification, edge cases in the SCIP-overlay caching key. Also useful: getting more of the optional SCIP cross-reference providers (Go, Java, C#, PHP, C, Ruby — seeinstall_hintinrepo_overview'shealth_summary) easier to install, since call-graph precision for those languages is capped without one installed. - New Tier-0.5 → Tier-0 promotions. SQL and Dart both already ship (SQL has its own standalone
sqlparser-based indexer — real grammar, not regex — but deliberately stops short of a call graph, since "calls" isn't a coherent concept across SQL dialects; Dart is Tier-0.5 with the known zero-call-edge grammar limit noted above) — the next candidates are whichever Tier-0.5 language your own report from the "try CALM on a Tier-0.5 language" bullet above turns up as highest-friction. - A sandboxed, multi-language execution broker for verification.
verify_changeruns one check (cargo check, unsandboxed beyond a wall-clock timeout and digest binding) — seeKNOWN_LIMITATIONS.md's "Verification is single-language..." entry. Extending togo test/tsc --noEmit/pytestneeds a shared network/filesystem/env execution-policy abstraction built first, not each language bolted directly onto a bare subprocess call. reference_impact(symbol, operation="rename").benchmarks/b7_task_correctnesshas two real failing rename cases today from composingcallers/edit_contextby hand instead of having a tool that merges call edges + SCIP references + imports/re-exports + textual matches into one classified list. SeeKNOWN_LIMITATIONS.md's "No unified reference-impact tool" entry.- Change-kind-aware risk classification.
compute_touch_risksees caller-count/hub-status and (as of this pass) a path-basedrisk_rulesfloor, but not whether an edit is a comment tweak vs. a signature break vs. an auth-check removal. Needs the diff content turned into a classified axis and folded into the risk model. SeeKNOWN_LIMITATIONS.md. calm guard --staged/ a publishable GitHub Action. The only integration point today is an MCP client calling CALM's tools directly — a native editor edit or a teammate's local commit is invisible to CALM. SeeKNOWN_LIMITATIONS.md's "No Git/CI-native integration path" entry.- Multi-file change-set / transaction. Today every
edit_lines/edit_symbol/format_filescall is its own independent, file-scopedEditTransaction— a multi-file refactor has no aggregate success/failure view. SeeKNOWN_LIMITATIONS.md.
KNOWN_LIMITATIONS.md has the full list (including smaller items not listed here) with the reasoning for why each is deliberately deferred rather than half-built.
Please open a GitHub Issue before starting on anything larger than a small fix, so effort doesn't collide with what's already in progress.
git clone https://github.com/Eilodon/CALM.git
cd CALM
cargo build --release # build.rs fetches + checksum-verifies the embedding model from Hugging Face Hub once, then vendors it into the binary — no Git LFS involved
cargo test --workspace # embeddings is on by default, no extra --features flag neededcargo fmtandcargo clippycleancargo test --workspacepassescalm fitness-check --project-root .passes against this repo's own thresholds — CALM reviewing itself is part of the point- Commit messages explain why, not just what — the git-co-change mining feature literally mines this history later
Be the kind of contributor you'd want reviewing your own PR. (A formal CODE_OF_CONDUCT.md is on the list — flag it if you'd like to help draft one.)
By contributing, you agree your contribution is licensed under the project's MIT License.