Skip to main content

codebase-memory

Use the codebase knowledge graph for structural code queries. Triggers on: explore the codebase, understand the architecture, what functions exist, show me the structure, who calls this function, what does X call, trace the call chain, find callers of, show dependencies, impact analysis, dead code, unused functions, high fan-out, refactor candidates, code quality audit, graph query syntax, Cypher query examples, edge types, how to use search_graph.

Informations de source

Dépôt
lev-os/agents
Dernière activité de la source
29 septembre 2026 à 20:57
Langue détectée de SKILL.md
anglais
Étoiles
24
Forks
3

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
name
codebase-memory
description
Use the codebase knowledge graph for structural code queries. Triggers on: explore the codebase, understand the architecture, what functions exist, show me the structure, find code from plain words, search by meaning, who calls this function, what does X call, trace the call chain, find callers of, show dependencies, impact analysis, refactor safety, what a diff touches, dead code, unused functions, near-duplicate code, high fan-out, refactor candidates, code quality audit, index coverage, graph query syntax, Cypher query examples, edge types, how to use search_graph.
# Codebase Memory — Knowledge Graph Tools Graph tools return precise structural results in ~500 tokens vs ~80K for grep. ## Quick Decision Matrix | Question | Tool call | |----------|----------| | Find code when you know the name | `search_graph(query="addItemToBag")` or `search_graph(name_pattern=".*AddToBag.*")` | | Find code from plain words | `search_graph(semantic_query=["bag","checkout","action"])` | | Who calls X? | `trace_path(direction="inbound")` | | What does X call? | `trace_path(direction="outbound")` | | Full call context | `trace_path(direction="both")` | | Read the real source | `get_code_snippet(qualified_name="...")` | | What a file defines | `get_file_outline` | | Project overview | `get_architecture(aspects=[...])` | | Impact of local changes | `detect_changes()`; `scope="tests"` adds test impact | | Risk-classified trace | `trace_path(risk_labels=true)` | | Diff two index snapshots | `compare_graphs` | | Dead code | `search_graph(max_degree=0, exclude_entry_points=true)` | | Near-duplicate code | `query_graph` over `SIMILAR_TO` edges | | Cross-service edges | `query_graph` with Cypher | | Is a path indexed | `check_index_coverage` | | Text search (literals, config, errors) | `search_code` or Grep | ## Finding code you cannot name `search_graph` ranks in one mode per call; run both when the user's words are not code names: - `query: "add to bag"` — BM25 over symbol names, file paths and markdown headings (`Section` nodes). - `semantic_query: ["bag", "checkout", "action"]` — vector ranking, built into the index. It must be a list of keywords, not a sentence; each keyword is scored on its own. `query` and `semantic_query` cannot share a call. Confirm every candidate with `get_code_snippet`. ## Evidence tiers Pick one before querying and say which one you used. - **Scout:** 3-4 narrow calls; positive findings only, marked provisional. No absence, exhaustive-impact or dead-code claims. - **Verify (default):** task-directed graph evidence, both trace directions where relevant, `get_code_snippet` for every material claim, full pagination of relevant results. - **Auditor:** bounded scope, current index, complete pagination, both call directions and broader relationships; state every limitation. Once the evidence paths are known, call `check_index_coverage` once with all of them. A claim that something is absent or complete also needs the relevant scopes checked. A clean result means "no recorded gap", not proof. ## Exploration Workflow 1. `list_projects` — pick the entry whose `root_path` contains your working directory; pass its `name` (or the absolute directory) as `project`, never a repo or folder name 2. `get_graph_schema` — understand node/edge types 3. `search_graph` (`query`, `semantic_query` or `name_pattern`) — find code 4. `get_code_snippet(qualified_name="project.path.FuncName")` — read source ## Tracing Workflow 1. `search_graph(name_pattern=".*FuncName.*")` — discover exact name 2. `trace_path(function_name="FuncName", direction="both", depth=3)` — trace 3. `detect_changes()` — map git diff to affected symbols ## Refactor Workflow 1. `trace_path(direction="inbound")` on each symbol you will change — every caller 2. `detect_changes(scope="tests")` after the edit — affected symbols and tests 3. `check_index_coverage` on the touched paths before saying nothing else breaks ## Quality Analysis - Dead code: `search_graph(max_degree=0, exclude_entry_points=true)` — check dynamic dispatch, framework conventions and coverage gaps before deleting - High fan-out: `search_graph(min_degree=10, relationship="CALLS", direction="outbound")` - High fan-in: `search_graph(min_degree=10, relationship="CALLS", direction="inbound")` ## 17 MCP Tools `index_repository`, `index_status`, `list_projects`, `delete_project`, `search_graph`, `search_code`, `trace_path`, `detect_changes`, `query_graph`, `get_graph_schema`, `get_code_snippet`, `get_file_outline`, `get_architecture`, `check_index_coverage`, `compare_graphs`, `manage_adr`, `ingest_traces` ## Edge Types CALLS, HTTP_CALLS, GRAPHQL_CALLS, ASYNC_CALLS, IMPORTS, DEFINES, DEFINES_METHOD, HANDLES, IMPLEMENTS, OVERRIDE, USAGE, WRITES, CONFIGURES, TESTS_FILE, FILE_CHANGES_WITH, SIMILAR_TO, SEMANTICALLY_RELATED, MENTIONS, CONTAINS_FILE, CONTAINS_FOLDER, CONTAINS_PACKAGE Run `get_graph_schema` for the exact set in a given project. ## Cypher Examples (for query_graph) ``` MATCH (a)-[r:HTTP_CALLS]->(b) RETURN a.name, b.name, r.url_path, r.confidence LIMIT 20 MATCH (f:Function) WHERE f.name =~ '.*Handler.*' RETURN f.name, f.file_path MATCH (a)-[r:CALLS]->(b) WHERE a.name = 'main' RETURN b.name MATCH (a)-[:SIMILAR_TO]->(b) RETURN a.name, a.file_path, b.name, b.file_path LIMIT 20 ``` ## Gotchas 1. `search_graph(relationship="HTTP_CALLS")` filters nodes by degree — use `query_graph` with Cypher to see actual edges. 2. `query_graph` has a 200-row cap — use `search_graph` with degree filters for counting. 3. `trace_path` needs exact names — use `search_graph` first. 4. `direction="outbound"` misses cross-service callers — use `direction="both"`. 5. Results default to 10 per page — check `has_more` and use `offset`. 6. Markdown headings are indexed as `Section` nodes; the text under a heading is not ranked. 7. A subagent does not inherit MCP tools or the conversation. Query in the parent and pass the tier, project, paths and symbols.
Voir sur GitHub