Kanbanzai codebase-memory-quality
install
source · Clone the upstream repo
git clone https://github.com/sambeau/kanbanzai
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sambeau/kanbanzai "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.github/skills/codebase-memory-quality" ~/.claude/skills/sambeau-kanbanzai-codebase-memory-quality && rm -rf "$T"
manifest:
.github/skills/codebase-memory-quality/SKILL.mdsource content
Code Quality Analysis via Knowledge Graph
Use graph degree filtering to find dead code, high-complexity functions, and refactor candidates — all in single tool calls.
Workflow
Dead Code Detection
Find functions with zero inbound CALLS edges, excluding entry points:
search_graph( label="Function", relationship="CALLS", direction="inbound", max_degree=0, exclude_entry_points=true )
exclude_entry_points=true removes route handlers, main(), and framework-registered functions that have zero callers by design.
Verify Dead Code Candidates
Before deleting, verify each candidate truly has no callers:
trace_call_path(function_name="SuspectFunction", direction="inbound", depth=1)
Also check for read references (callbacks, stored in variables):
query_graph(query="MATCH (a)-[r:USAGE]->(b) WHERE b.name = 'SuspectFunction' RETURN a.name, a.file_path LIMIT 10")
High Fan-Out Functions (calling 10+ others)
These are often doing too much and are refactor candidates:
search_graph( label="Function", relationship="CALLS", direction="outbound", min_degree=10 )
High Fan-In Functions (called by 10+ others)
These are critical functions — changes have wide impact:
search_graph( label="Function", relationship="CALLS", direction="inbound", min_degree=10 )
Files That Change Together (Hidden Coupling)
Find files with high git change coupling:
query_graph(query="MATCH (a)-[r:FILE_CHANGES_WITH]->(b) WHERE r.coupling_score >= 0.5 RETURN a.name, b.name, r.coupling_score, r.co_change_count ORDER BY r.coupling_score DESC LIMIT 20")
High coupling between unrelated files suggests hidden dependencies.
Unused Imports
search_graph( relationship="IMPORTS", direction="outbound", max_degree=0, label="Module" )
Key Tips
with degree filters has no row cap (unlikesearch_graph
which caps at 200).query_graph- Use
to scope analysis to specific directories:file_pattern
.file_pattern="**/services/**" - Dead code detection works best after a full index — run
if the project was recently set up.index_repository - Paginate results with
andlimit
— checkoffset
in the response.has_more