Code Review Graph Navigator
handsontable/handsontable
Queries a pre-built, Tree-sitter-based code graph of the whole monorepo instead of grepping call chains, for exploring, debugging, refactoring or reviewing code.
Codebase comprehension via roam-code CLI. An agent skill from Cranot/roam-code.
$ npx skills add Cranot/roam-code --skill roam -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Cranot/roam-code roam --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Cranot/roam-code.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/roam .claude/skills/roam && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "roam" agent skill from https://github.com/Cranot/roam-code/tree/main/skills/roam into .claude/skills/roam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roam", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Cranot/roam-code/tree/main/skills/roamType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Cranot/roam-code --skill roam -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Cranot/roam-code roam --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Cranot/roam-code.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/roam .agents/skills/roam && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "roam" agent skill from https://github.com/Cranot/roam-code/tree/main/skills/roam into .agents/skills/roam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roam", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Cranot/roam-code --skill roam -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Cranot/roam-code roam --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Cranot/roam-code.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/roam .cursor/skills/roam && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "roam" agent skill from https://github.com/Cranot/roam-code/tree/main/skills/roam into .cursor/skills/roam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roam", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Cranot/roam-code.git --path skills/roam--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Cranot/roam-code --skill roam -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Cranot/roam-code roam --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Cranot/roam-code.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/roam .gemini/skills/roam && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "roam" agent skill from https://github.com/Cranot/roam-code/tree/main/skills/roam into .gemini/skills/roam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roam", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Cranot/roam-code roamInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Cranot/roam-code --skill roam -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Cranot/roam-code.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/roam .github/skills/roam && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "roam" agent skill from https://github.com/Cranot/roam-code/tree/main/skills/roam into .github/skills/roam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roam", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Cranot/roam-code --skill roam -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Cranot/roam-code roam --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Cranot/roam-code.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/roam .opencode/skills/roam && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "roam" agent skill from https://github.com/Cranot/roam-code/tree/main/skills/roam into .opencode/skills/roam/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "roam", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
roamCodebase comprehension via roam-code CLI. An agent skill from Cranot/roam-code.
Roam is an agent skill from Cranot/roam-code. Codebase comprehension via roam-code CLI. Use when exploring codebases, planning modifications, debugging failures, assessing PR risk, or checking architecture health. Triggers on: understanding project structure, pre-change safety checks, finding symbols/files, blast radius analysis, affected tests, health scoring, refactoring guidance, code review. Requires roam-code installed (pip install roam-code) and an indexed project (roam init).
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Refactoring, Debugging and Code review. It works with Model Context Protocol and SQLite. The repository describes itself as: Local codebase intelligence CLI + MCP server for AI coding agents: SQLite code graph, 28 languages, 287 commands, 246 MCP tools, change-safety gates, audit evidence, zero API keys. The licence is Apache-2.0.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4856519. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gitpipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use git and pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Roam loads about 2.4k tokens when it runs. Until then it costs about 113 tokens; SKILL.md has 887 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Cranot/roam-code at commit 4856519, republished under its Apache-2.0 licence (© Cranot). 887 words, ~2,399 tokens.
.claude/skills/roam/SKILL.md (or your agent's skills folder).Repository: https://github.com/Cranot/roam-code
Roam pre-indexes codebases into a semantic graph (symbols, dependencies, call graphs, architecture layers, git history) stored in a local SQLite DB. Query it via CLI instead of repeatedly grepping files and guessing structure.
Ensure roam-code is installed and the project is indexed:
pip install roam-code # or: pipx install roam-code
cd <project-root>
roam init # indexes codebase, creates .roam/index.dbAfter git pull or major changes, run roam index to refresh (incremental,
near-instant if few files changed). After large refactors: roam index --force.
Use this table to pick the right command for the situation:
| Situation | Command |
|---|---|
| First time in a repo | roam understand then roam tour |
| Need a compact codebase overview | roam map or roam minimap |
| Find a symbol by name | roam search <pattern> |
| Need files to read for a symbol | roam context <symbol> |
| Inspect a file's structure | roam file <path> |
| Inspect a directory | roam module <path> |
| Before modifying a symbol | roam preflight <symbol> |
| What breaks if I change X? | roam impact <symbol> |
| Blast radius of uncommitted changes | roam diff |
| Debugging a failure | roam diagnose <symbol> |
| Which tests cover a symbol? | roam affected-tests <symbol> |
| Check codebase health | roam health |
| Find hotspots (churn x complexity) | roam weather |
| Detect dead/unused code | roam dead |
| PR risk assessment | roam pr-risk |
| Find dependency paths | roam trace <source> <target> |
| Who calls/imports this? | roam uses <symbol> (alias: roam refs) |
| Find every reference to X (replaces multi-shape grep) | roam refs <symbol> |
| Algorithm anti-patterns | roam algo |
| Side effects of a function | roam effects <symbol> |
| Safe to delete? | roam safe-delete <symbol> |
| Simulate a refactor | `roam simulate move |
roam understand # tech stack, architecture, health, conventions
roam tour # onboarding: key symbols, reading order, entry points
roam map # project skeleton with top symbols by PageRankAlways run roam preflight <symbol> before modifying code. It combines
blast radius + affected tests + complexity + coupling + fitness into one check:
roam preflight MyClass
# Output: blast radius, affected tests, complexity, coupling, fitness verdictIf you only need files to read:
roam context MyClass
# Output: definition file + callers + callees with exact line rangesroam diff # blast radius of uncommitted changes
roam diff --staged # blast radius of staged changes
roam pr-risk # risk score (0-100) + suggested reviewersroam diagnose <symbol> # root cause ranking by z-score risk
roam trace <A> <B> # dependency path between two symbols
roam effects <symbol> # DB writes, network I/O, filesystem, global mutationroam --json <cmd>: Structured JSON with consistent enveloperoam --budget N <cmd>: Token-capped output (N = max tokens)roam complexity --select '.symbols[:5]': Project one bounded JSON field without shell parsing (--select is repeatable)roam grep <pattern> -C 5: Search source and return bounded live code packets in one callroam grep <pattern> --whole-symbol --max-packets 3: Deduplicate hits into enclosing functions/classes; stale spans fall back safelyroam --sarif <cmd>: SARIF 2.1.0 for CI integrationPrefer --json when you need to parse output programmatically.
Prefer --budget 2000 when context window is tight.
Prefer --select '.summary' or a bounded list slice when only one envelope section is needed.
roam search <pattern>Find symbols by name (regex). Results ranked by PageRank.
roam search "Auth.*Service"
roam search "handle_request" --kind fnroam context <symbol>AI-optimized file list with line ranges for reading.
Supports --task modify|debug|review for context tuning.
roam context Flask
roam context myfile:MyFunction # disambiguate with file prefixroam preflight <symbol|file>Compound pre-change check. Run this before every modification.
roam preflight UserController
roam preflight src/auth/login.pyroam healthComposite score (0-100). Use --gate for CI (reads .roam-gates.yml).
roam health
roam health --gate # exit 5 on failureroam diffBlast radius of uncommitted or committed changes.
roam diff # uncommitted
roam diff --staged # staged only
roam diff HEAD~3..HEAD # commit rangeroam algoDetect algorithm anti-patterns (23 patterns: O(n^2) loops, N+1 queries, quadratic string building, etc.) with confidence levels and fix suggestions.
roam algo
roam algo --confidence high # high-confidence only
roam algo --task nested-lookup # specific patternroam impact <symbol>Full blast radius using Personalized PageRank.
roam impact Flaskroam symbol <name>Symbol definition + callers + callees + metrics.
roam symbol open_db
roam symbol --full open_db # include source coderoam affected-tests <symbol|file>Trace reverse call graph to find covering tests.
roam affected-tests UserServiceroam agent-export --writeAuto-generate agent instructions for the project. Detects CLAUDE.md, AGENTS.md, .cursor/rules, etc.
roam agent-export --write
roam agent-export --brief # compact top-level summaryroam minimap --updateInject/refresh annotated codebase snapshot in CLAUDE.md.
roam minimap --update # update sentinel block in CLAUDE.mdThis skill covers the most common commands, but roam has 287 commands. To explore what's available:
roam --help # list all available commands
roam <command> --help # detailed usage for a specific commandFor full documentation, examples, and the latest features, see the roam-code repository.
roam command replaces 5-10 grep/read cycles. Always try roam first.roam search instead of grep/glob for finding symbols — it understands
definitions vs. usage and ranks by importance.roam context gives exact line ranges — more precise than reading whole files.git pull, run roam index to keep the graph fresh.file:symbol syntax: roam symbol myfile:MyClass.roam refs over multi-shape grepA common agent pattern is:
Grep(pattern: "->ekfpa|\.ekfpa\b|'ekfpa'|\"ekfpa\"")The intent is "find all references to symbol ekfpa". The multi-shape regex
tries to catch function calls (->ekfpa), attribute access (.ekfpa), and
string literal mentions ('ekfpa', "ekfpa"). It works, but:
obj.ekfpa!, Python f-string f"{ekfpa}",
decorator @ekfpa, etc. each need another regex shape.roam refs <symbol> (alias for roam uses) walks the indexed call/import/
inherit graph and returns only real references — every result is a
named symbol with kind/file/line, grouped by edge type:
$ roam refs find_symbol
VERDICT: 'find_symbol': 50 production consumers, 7 test consumers in 27 files
-- Called by (30) --
fn affected_tests src/roam/commands/cmd_affected_tests.py:230 production
fn annotate src/roam/commands/cmd_annotate.py:21 production
…
-- Imported by (20) --
…Latency on this repo: ~700ms via subprocess, sub-100ms via the MCP server
(roam_uses tool, which agents in MCP-enabled clients should prefer
because the import-cost is paid once at server start). 2-5× slower than
ripgrep in raw wall-time, but the result is already usable — there's no
follow-up "now read the matching files and figure out the structure" step.
Use roam refs when:
Stay with grep / Grep when:
roam init first if you'll be doing
many of these queries).© Cranot, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/roam of Cranot/roam-code.
Open the folder on GitHubat commit 4856519
Roam next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Roam this skillCranot/roam-code | 517 | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Code Review Graph Navigatorhandsontable/handsontable | 22k | — | ~939 | Automated safety check: Pass | Custom licence | |
| Misakanet Failure MemoryIkalus1988/MisakaNet | 524 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Batchys2-streamstore/claude-batch-toolkit | 160 | — | ~1.9k | Automated safety check: Pass | None | |
| Synapse UsageS1LV4/th0th | 136 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Copilot Code Coachtimothywarner/chatgptclass | 143 | — | ~1.9k | Automated safety check: Pass | Custom licence |
handsontable/handsontable
Queries a pre-built, Tree-sitter-based code graph of the whole monorepo instead of grepping call chains, for exploring, debugging, refactoring or reviewing code.
Ikalus1988/MisakaNet
Search and record failure-recovery lessons from real engineering sessions; submit and verify debugging lessons across the MisakaNet network.
s2-streamstore/claude-batch-toolkit
Send non-urgent tasks to Claude's Batch API at 50% off. An agent skill from s2-streamstore/claude-batch-toolkit.
S1LV4/th0th
Use the th0th Synapse cognitive modulation layer to get focused, low-noise retrieval during multi-step coding tasks.
timothywarner/chatgptclass
Socratic coding tutor powered by GitHub Copilot. An agent skill from timothywarner/chatgptclass.
antonbabenko/deliberation
Find bugs, security holes, and maintainability issues in a diff or file.
Cranot/roam-code
Review and maintain the technical instructions Roam gives coding agents: shipped skills, tool descriptions, preset guidance and generated instruction blocks.
Cranot/roam-code
Investigate and harden Roam detectors, CLI/MCP result contracts, and evidence consumers when dogfooding or correcting incomplete, misleading, or inconsistent analysis.
Cranot/roam-code
Turn a reproduced or recurring Roam failure into a durable correction, regression control or narrowly scoped project skill, and reconcile conflicting lessons.
Cranot/roam-code
Design or interpret a comparison of Roam performance, detector accuracy, retrieval or workflow value.
Cranot/roam-code
Define or revise a Roam product milestone and its engineering, adoption and offer-readiness sequence.
Cranot/roam-code
Qualify a Roam commit or accumulated batch for package, website, or server publication; reconcile source, tests, review, CI and deployed identities, and identify the next authorized release step.
Works with
Categories
Codebase comprehension via roam-code CLI. An agent skill from Cranot/roam-code. Roam is an agent skill from Cranot/roam-code. Codebase comprehension via roam-code CLI.
Roam fits situations like: exploring codebases; planning modifications; debugging failures; assessing PR risk.
Run `npx skills add Cranot/roam-code --skill roam -a claude-code`. Or copy the skill folder (skills/roam in Cranot/roam-code) into .claude/skills/roam in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Cranot/roam-code --skill roam -a codex`. Or copy the skill folder (skills/roam in Cranot/roam-code) into .agents/skills/roam in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Cranot/roam-code --skill roam -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/roam, .gemini/skills/roam, .github/skills/roam and .opencode/skills/roam in your project.
Going by SKILL.md and its folder, Roam needs the command-line tools its instructions call (git and pip). Our summary lists: Python 3.
SKILL.md contains no URLs. Its commands use git and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Roam is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Roam: Code Review Graph Navigator (handsontable/handsontable, 22k stars), Misakanet Failure Memory (Ikalus1988/MisakaNet, 524 stars), Batchy (s2-streamstore/claude-batch-toolkit, 160 stars) and Synapse Usage (S1LV4/th0th, 136 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Cranot (a GitHub user) maintains it in Cranot/roam-code, which has 517 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on October 3, 2026.
Source: Cranot/roam-code on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.