| name | claudemem-search |
| description | ⚡ PRIMARY TOOL for semantic code search AND structural analysis. NEW: AST tree navigation with map, symbol, callers, callees, context commands. PageRank ranking. ANTI-PATTERNS: Reading files without mapping, Grep for 'how does X work', Modifying without caller analysis. |
| allowed-tools | Bash, Task, AskUserQuestion |
Claudemem Semantic Code Search Expert (v0.6.0)
This Skill provides comprehensive guidance on leveraging claudemem v0.7.0+ with AST-based structural analysis, code analysis commands, and framework documentation for intelligent codebase understanding.
What's New in v0.3.0
┌─────────────────────────────────────────────────────────────────┐
│ CLAUDEMEM v0.3.0 ARCHITECTURE │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ AST STRUCTURAL LAYER ⭐NEW │ │
│ │ Tree-sitter Parse → Symbol Graph → PageRank Ranking │ │
│ │ map | symbol | callers | callees | context │ │
│ └───────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ SEARCH LAYER │ │
│ │ Query → Embed → Vector Search + BM25 → Ranked Results │ │
│ └───────────────────────────────────────────────────────────┘ │
│ ↓ │
│ ┌───────────────────────────────────────────────────────────┐ │
│ │ INDEX LAYER │ │
│ │ AST Parse → Chunk → Embed → LanceDB + Symbol Graph │ │
│ └───────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
Key Innovation: Structural Understanding
v0.3.0 adds AST tree navigation with symbol graph analysis:
- PageRank ranking - Symbols ranked by importance (how connected they are)
- Call graph analysis - Track callers/callees for impact assessment
- Structural overview - Map the codebase before reading code
Quick Reference
claudemem --nologo <command>
claudemem map [query]
claudemem symbol <name>
claudemem callers <name>
claudemem callees <name>
claudemem context <name>
claudemem search <query>
claudemem search <query> --map
Version Compatibility
Claudemem has evolved significantly. Check your version before using commands:
claudemem --version
Command Availability by Version
| Command | Minimum Version | Status | Purpose |
|---|
map | v0.3.0 | ✅ Available | Architecture overview with PageRank |
symbol | v0.3.0 | ✅ Available | Find exact file:line location |
callers | v0.3.0 | ✅ Available | What calls this symbol? |
callees | v0.3.0 | ✅ Available | What does this symbol call? |
context | v0.3.0 | ✅ Available | Full call chain (callers + callees) |
search | v0.3.0 | ✅ Available | Semantic vector search |
dead-code | v0.4.0+ | ⚠️ Check version | Find unused symbols |
test-gaps | v0.4.0+ | ⚠️ Check version | Find high-importance untested code |
impact | v0.4.0+ | ⚠️ Check version | BFS transitive caller analysis |
docs | v0.7.0+ | ✅ Available | Framework documentation fetching |
Version Detection in Scripts
VERSION=$(claudemem --version 2>/dev/null | grep -oE '[0-9]+\.[0-9]+\.[0-9]+' | head -1)
if [ -n "$VERSION" ] && printf '%s\n' "0.4.0" "$VERSION" | sort -V -C; then
claudemem --nologo dead-code --raw
claudemem --nologo test-gaps --raw
claudemem --nologo impact SymbolName --raw
else
echo "Code analysis commands require claudemem v0.4.0+"
echo "Current version: $VERSION"
echo "Fallback to v0.3.0 commands (map, symbol, callers, callees)"
fi
Graceful Degradation
When using v0.4.0+ commands, always provide fallback:
IMPACT=$(claudemem --nologo impact SymbolName --raw 2>/dev/null)
if [ -n "$IMPACT" ] && [ "$IMPACT" != "command not found" ]; then
echo "$IMPACT"
else
echo "Using fallback (direct callers only):"
claudemem --nologo callers SymbolName --raw
fi
Why This Matters:
- v0.3.0 commands work for 90% of use cases (navigation, modification)
- v0.4.0+ commands are specialized (code analysis, cleanup planning)
- Scripts should work across versions with appropriate fallbacks
The Correct Workflow ⭐CRITICAL
Phase 1: Understand Structure First (ALWAYS DO THIS)
Before reading any code files, get the structural overview:
claudemem --nologo map "authentication flow" --raw
This tells you:
- Which files contain relevant code
- Which symbols are most important (high PageRank = heavily used)
- The structure before you read actual code
Phase 2: Locate Specific Symbols
Once you know what to look for:
claudemem --nologo symbol AuthService --raw
Phase 3: Understand Dependencies
Before modifying code, understand what depends on it:
claudemem --nologo callers AuthService --raw
claudemem --nologo callees AuthService --raw
Phase 4: Get Full Context
For complex modifications, get everything at once:
claudemem --nologo context AuthService --raw
Phase 5: Search for Code (Only If Needed)
When you need actual code snippets:
claudemem --nologo search "password hashing" --raw
claudemem --nologo search "password hashing" --map --raw
Output Format
All commands support --raw flag for machine-readable output:
# Raw output format (line-based, easy to parse)
file: src/core/indexer.ts
line: 45-120
kind: class
name: Indexer
signature: class Indexer
pagerank: 0.0842
exported: true
---
file: src/core/store.ts
line: 12-89
kind: class
name: VectorStore
...
Records are separated by ---. Each field is key: value on its own line.
Command Reference
claudemem map [query]
Get structural overview of the codebase. Optionally focused on a query.
claudemem --nologo map --raw
claudemem --nologo map "authentication" --raw
claudemem --nologo map "auth" --tokens 500 --raw
Output fields: file, line, kind, name, signature, pagerank, exported
When to use: Always first - understand structure before reading code
claudemem symbol
Find a symbol by name. Disambiguates using PageRank and export status.
claudemem --nologo symbol Indexer --raw
claudemem --nologo symbol "search" --file retriever --raw
Output fields: file, line, kind, name, signature, pagerank, exported, docstring
When to use: When you know the symbol name and need exact location
claudemem callers
Find all symbols that call/reference the given symbol.
claudemem --nologo callers AuthService --raw
Output fields: caller (name), file, line, kind (call/import/extends/etc)
When to use: Before modifying anything - know the impact radius
claudemem callees
Find all symbols that the given symbol calls/references.
claudemem --nologo callees AuthService --raw
Output fields: callee (name), file, line, kind
When to use: To understand dependencies and trace data flow
claudemem context
Get full context: the symbol plus its callers and callees.
claudemem --nologo context Indexer --raw
claudemem --nologo context Indexer --callers 10 --callees 20 --raw
Output sections: [symbol], [callers], [callees]
When to use: For complex modifications requiring full awareness
claudemem search
Semantic search across the codebase.
claudemem --nologo search "error handling" --raw
claudemem --nologo search "error handling" --map --raw
claudemem --nologo search "auth" -n 5 --raw
Output fields: file, line, kind, name, score, content (truncated)
When to use: When you need actual code snippets (after mapping)
Code Analysis Commands (v0.4.0+ Required)
claudemem dead-code
Find unused symbols in the codebase.
claudemem --nologo dead-code --raw
claudemem --nologo dead-code --max-pagerank 0.005 --raw
claudemem --nologo dead-code --include-exported --raw
Algorithm:
- Zero callers (nothing references the symbol)
- Low PageRank (< 0.001 default)
- Not exported (by default, exports may be used externally)
Output fields: file, line, kind, name, pagerank, last_caller_removed
When to use: Architecture cleanup, tech debt assessment, before major refactoring
Empty Result Handling:
RESULT=$(claudemem --nologo dead-code --raw)
if [ -z "$RESULT" ] || [ "$RESULT" = "No dead code found" ]; then
echo "Codebase is clean - no dead code detected!"
echo "This indicates good code hygiene."
else
echo "$RESULT"
fi
Static Analysis Limitations:
- Dynamic imports (
import()) may hide real callers
- Reflection-based access not captured
- External callers (other repos, CLI usage) not visible
- Exported symbols excluded by default for this reason
claudemem test-gaps
Find high-importance code without test coverage.
claudemem --nologo test-gaps --raw
claudemem --nologo test-gaps --min-pagerank 0.05 --raw
Algorithm:
- High PageRank (> 0.01 default) - Important code
- Zero callers from test files (*.test.ts, *.spec.ts, *_test.go)
Output fields: file, line, kind, name, pagerank, production_callers, test_callers
When to use: Test coverage analysis, QA planning, identifying critical gaps
Empty Result Handling:
RESULT=$(claudemem --nologo test-gaps --raw)
if [ -z "$RESULT" ] || [ "$RESULT" = "No test gaps found" ]; then
echo "Excellent! All high-importance code has test coverage."
echo "Consider lowering --min-pagerank threshold for additional coverage."
else
echo "$RESULT"
fi
Static Analysis Limitations:
- Test file detection based on naming patterns only
- Integration tests calling code indirectly may not be detected
- Mocked dependencies may show false positives
claudemem impact
Analyze the impact of changing a symbol using BFS traversal.
claudemem --nologo impact UserService --raw
claudemem --nologo impact UserService --max-depth 5 --raw
Algorithm:
- BFS traversal from symbol to all transitive callers
- Groups results by depth level
- Shows file:line for each caller
Output sections: direct_callers, transitive_callers (with depth), grouped_by_file
When to use: Before ANY modification, refactoring planning, risk assessment
Empty Result Handling:
RESULT=$(claudemem --nologo impact FunctionName --raw)
if [ -z "$RESULT" ] || echo "$RESULT" | grep -q "No callers found"; then
echo "No callers found - this symbol appears unused or is an entry point."
echo "If unused, consider running: claudemem --nologo dead-code --raw"
echo "If entry point (API handler, main), this is expected."
else
echo "$RESULT"
fi
Static Analysis Limitations:
- Callback/event-based calls may not be detected
- Dependency injection containers hide static call relationships
- External service callers not visible
LLM Enrichment Document Types (v0.2.0+)
Claudemem v0.2.0+ supports LLM-enriched semantic search with specialized document types.
Document Types
| Type | Purpose | Generated By |
|---|
symbol_summary | Function behavior, params, returns, side effects | LLM analysis |
file_summary | File purpose, exports, architectural patterns | LLM analysis |
idiom | Common patterns in codebase | Pattern detection |
usage_example | How to use APIs | Documentation extraction |
anti_pattern | What NOT to do | Static analysis + LLM |
project_doc | Project-level documentation | README, CLAUDE.md |
Navigation Mode
For agent-optimized search with document type weighting:
claudemem --nologo search "authentication" --use-case navigation --raw
claudemem --nologo search "authentication" --raw
Navigation mode search weights:
symbol_summary: 1.5x (higher priority)
file_summary: 1.3x (higher priority)
code_chunk: 1.0x (normal)
idiom: 1.2x (higher for pattern discovery)
Symbol Summary Fields
symbol: AuthService.authenticate
file: src/services/auth.ts
line: 45-89
behavior: "Validates user credentials and generates JWT token"
params:
- name: credentials
type: LoginCredentials
description: "Email and password from login form"
returns:
type: AuthResult
description: "JWT token and user profile on success, error on failure"
side_effects:
- "Updates user.lastLogin timestamp"
- "Logs authentication attempt"
- "May trigger rate limiting"
File Summary Fields
file: src/services/auth.ts
purpose: "Core authentication service handling login, logout, and session management"
exports:
- AuthService (class)
- authenticate (function)
- validateToken (function)
patterns:
- "Dependency Injection (constructor takes IUserRepository)"
- "Factory Pattern (createSession)"
- "Strategy Pattern (IAuthProvider interface)"
dependencies:
- bcrypt (password hashing)
- jsonwebtoken (JWT generation)
- UserRepository (user data access)
Using Document Types in Investigation
claudemem --nologo search "processPayment behavior" --use-case navigation --raw
claudemem --nologo search "file:services purpose" --use-case navigation --raw
claudemem --nologo search "anti_pattern SQL" --raw
Regenerating Enrichments
If codebase changes significantly:
claudemem index --enrich
claudemem enrich src/services/payment.ts
Workflow Templates
Standardized investigation patterns for common scenarios. All templates include error handling for empty results and version compatibility checks.
Template 1: Bug Investigation
Trigger: "Why is X broken?", "Find bug", "Root cause"
SYMBOL=$(claudemem --nologo symbol FunctionFromStackTrace --raw)
if [ -z "$SYMBOL" ]; then
echo "Symbol not found - check spelling or run: claudemem --nologo map 'related keywords' --raw"
exit 1
fi
claudemem --nologo context FunctionFromStackTrace --raw
claudemem --nologo callers suspectedSource --raw
IMPACT=$(claudemem --nologo impact BuggyFunction --raw 2>/dev/null)
if [ -n "$IMPACT" ]; then
echo "$IMPACT"
else
echo "Impact analysis requires claudemem v0.4.0+ or no callers found"
echo "Fallback: claudemem --nologo callers BuggyFunction --raw"
fi
Output Template:
## Bug Investigation Report
**Symptom:** [Description]
**Root Cause:** [Location and explanation]
**Call Chain:** [How we got here]
**Impact Radius:** [What else is affected]
**Fix Applied:** [What was changed]
**Verification:** [Tests run, callers checked]
Template 2: New Feature Implementation
Trigger: "Add feature", "Implement X", "Extend functionality"
MAP=$(claudemem --nologo map "feature area keywords" --raw)
if [ -z "$MAP" ]; then
echo "No matches found - try broader keywords"
fi
claudemem --nologo callees ExistingFeature --raw
claudemem --nologo context ModificationPoint --raw
claudemem --nologo search "similar pattern" --use-case navigation --raw
GAPS=$(claudemem --nologo test-gaps --raw 2>/dev/null)
if [ -n "$GAPS" ]; then
echo "Test gaps to address:"
echo "$GAPS"
else
echo "test-gaps requires v0.4.0+ or no gaps found"
fi
Output Template:
## Feature Implementation Plan
**Feature:** [Description]
**Extension Point:** [Where to add]
**Dependencies:** [What it needs]
**Pattern to Follow:** [Existing similar code]
**Test Requirements:** [Coverage needs]
Template 3: Refactoring
Trigger: "Rename X", "Extract function", "Move code", "Refactor"
SYMBOL=$(claudemem --nologo symbol SymbolToRename --raw)
if [ -z "$SYMBOL" ]; then
echo "Symbol not found - check exact name"
exit 1
fi
IMPACT=$(claudemem --nologo impact SymbolToRename --raw 2>/dev/null)
if [ -n "$IMPACT" ]; then
echo "$IMPACT"
else
echo "Using fallback (direct callers only):"
claudemem --nologo callers SymbolToRename --raw
fi
claudemem --nologo callers NewSymbolName --raw
Output Template:
## Refactoring Report
**Original:** [Old name/location]
**Target:** [New name/location]
**Direct Callers:** [Count]
**Transitive Callers:** [Count]
**Files Modified:** [List]
**Verification:** [All callers updated, tests pass]
Template 4: Architecture Understanding
Trigger: "How does X work?", "Explain architecture", "Onboarding"
MAP=$(claudemem --nologo map --raw)
if [ -z "$MAP" ]; then
echo "Index may be empty - run: claudemem index"
exit 1
fi
echo "$MAP"
claudemem --nologo context PillarSymbol --raw
claudemem --nologo callees EntryPoint --raw
DEAD=$(claudemem --nologo dead-code --raw 2>/dev/null)
if [ -n "$DEAD" ]; then
echo "Dead code found:"
echo "$DEAD"
else
echo "No dead code found (or v0.4.0+ required)"
fi
GAPS=$(claudemem --nologo test-gaps --raw 2>/dev/null)
if [ -n "$GAPS" ]; then
echo "Test gaps:"
echo "$GAPS"
else
echo "No test gaps found (or v0.4.0+ required)"
fi
Output Template:
## Architecture Report
**Core Abstractions (PageRank > 0.05):**
1. [Symbol] - [Role in system]
2. [Symbol] - [Role in system]
3. [Symbol] - [Role in system]
**Layer Structure:**
[Presentation Layer]
|
[Business Layer]
|
[Data Layer]
**Major Flows:**
- [Flow 1: Entry -> Processing -> Output]
- [Flow 2: Entry -> Processing -> Output]
**Health Indicators:**
- Dead Code: [Count] symbols
- Test Gaps: [Count] high-importance untested
- Tech Debt: [Summary]
Template 5: Security Audit
Trigger: "Security review", "Audit authentication", "Check permissions"
claudemem --nologo map "auth permission security token" --raw
SYMBOL=$(claudemem --nologo symbol authenticate --raw)
if [ -z "$SYMBOL" ]; then
echo "No 'authenticate' symbol - try: login, verify, validate"
fi
claudemem --nologo callers authenticate --raw
claudemem --nologo callees authenticate --raw
claudemem --nologo map "authorize permission check guard" --raw
claudemem --nologo map "password hash token secret key" --raw
GAPS=$(claudemem --nologo test-gaps --min-pagerank 0.01 --raw 2>/dev/null)
if [ -n "$GAPS" ]; then
echo "$GAPS" | grep -E "(auth|login|password|token|permission|secret)"
fi
Output Template:
## Security Audit Report
**Authentication:**
- Entry Points: [List]
- Flow: [Description]
- Gaps: [Issues found]
**Authorization:**
- Permission Checks: [Where implemented]
- Coverage: [All routes covered?]
**Sensitive Data:**
- Password Handling: [How stored/compared]
- Token Management: [Generation/validation]
- Secrets: [How managed]
**Test Coverage:**
- Security Code Coverage: [X%]
- Critical Gaps: [List]
**Recommendations:**
1. [Priority 1 fix]
2. [Priority 2 fix]
Static Analysis Limitations
Claudemem uses static AST analysis. Some patterns are not captured:
Dynamic Imports
const module = await import(`./modules/${name}`);
Result: May show as "dead code" but is actually used dynamically.
Action: Mark as "Potentially Dead - Manual Review"
External Callers
export function publicAPI() { ... }
Result: May show 0 callers but used by other repositories.
Action: Use --include-exported carefully, or mark as "Externally Called - Manual Review Required"
Reflection/Eval
const fn = obj[methodName]();
eval("functionName()");
Result: Callers not detected.
Action: Search codebase for eval, Object.keys, bracket notation.
Event-Driven Code
emitter.on('event', handler);
document.addEventListener('click', onClick);
Result: handler and onClick may show 0 callers.
Action: Check for event registration patterns.
Dependency Injection
container.register(IService, ServiceImpl);
Result: ServiceImpl may show 0 callers.
Action: Check DI container configuration.
Scenarios
Scenario 1: Bug Fix
Task: "Fix the null pointer exception in user authentication"
claudemem --nologo map "authentication null pointer" --raw
claudemem --nologo symbol authenticate --raw
claudemem --nologo callers authenticate --raw
Scenario 2: Add New Feature
Task: "Add rate limiting to the API endpoints"
claudemem --nologo map "API endpoints rate" --raw
claudemem --nologo symbol APIController --raw
claudemem --nologo callees APIController --raw
claudemem --nologo search "rate limit" --raw
claudemem --nologo context APIController --raw
Scenario 3: Refactoring
Task: "Rename DatabaseConnection to DatabasePool"
claudemem --nologo symbol DatabaseConnection --raw
claudemem --nologo callers DatabaseConnection --raw
Scenario 4: Understanding Unfamiliar Codebase
Task: "How does the indexing pipeline work?"
claudemem --nologo map "indexing pipeline" --raw
claudemem --nologo symbol Indexer --raw
claudemem --nologo callees Indexer --raw
claudemem --nologo callees VectorStore --raw
claudemem --nologo callees FileTracker --raw
Token Efficiency Guide
| Action | Token Cost | When to Use |
|---|
map (focused) | ~500 | Always first - understand structure |
symbol | ~50 | When you know the name |
callers | ~100-500 | Before modifying anything |
callees | ~100-500 | To understand dependencies |
context | ~200-800 | For complex modifications |
search | ~1000-3000 | When you need actual code |
search --map | ~1500-4000 | For unfamiliar codebases |
Optimal order: map → symbol → callers/callees → search (only if needed)
This pattern typically uses 80% fewer tokens than blind exploration.
Integration Pattern for Agents
For maximum efficiency, follow this pattern:
1. RECEIVE TASK
↓
2. claudemem --nologo map "<task keywords>" --raw
→ Understand structure, identify key symbols
↓
3. claudemem --nologo symbol <high-pagerank-symbol> --raw
→ Get exact location
↓
4. claudemem --nologo callers <symbol> --raw (if modifying)
→ Know the impact radius
↓
5. claudemem --nologo callees <symbol> --raw (if needed)
→ Understand dependencies
↓
6. READ specific file:line ranges (not whole files)
↓
7. MAKE CHANGES with full awareness
↓
8. CHECK callers still work
PageRank: Understanding Symbol Importance
PageRank measures how "central" a symbol is in the codebase:
| PageRank | Meaning | Action |
|---|
| > 0.05 | Core abstraction | Understand this first - everything depends on it |
| 0.01-0.05 | Important symbol | Key functionality, worth understanding |
| 0.001-0.01 | Standard symbol | Normal code, read as needed |
| < 0.001 | Utility/leaf | Helper functions, read only if directly relevant |
Why PageRank matters:
- High-PageRank symbols are heavily used → understand them first
- Low-PageRank symbols are utilities → read later if needed
- Focus on high-PageRank symbols to understand architecture quickly
🔴 ANTI-PATTERNS (DO NOT DO THESE)
╔══════════════════════════════════════════════════════════════════════════════╗
║ COMMON MISTAKES TO AVOID ║
╠══════════════════════════════════════════════════════════════════════════════╣
║ ║
║ ❌ Anti-Pattern 1: Blind File Reading ║
║ → BAD: cat src/core/*.ts | head -1000 ║
║ → GOOD: claudemem --nologo map "your task" --raw ║
║ → WHY: Wastes tokens on irrelevant code, misses important files ║
║ ║
║ ❌ Anti-Pattern 2: Grep Without Context ║
║ → BAD: grep -r "Database" src/ ║
║ → GOOD: claudemem --nologo symbol Database --raw ║
║ → WHY: Grep returns string matches, not semantic relationships ║
║ ║
║ ❌ Anti-Pattern 3: Modifying Without Impact Analysis ║
║ → BAD: Edit src/auth/tokens.ts without knowing callers ║
║ → GOOD: claudemem --nologo callers generateToken --raw FIRST ║
║ → WHY: Changes may break callers you don't know about ║
║ ║
║ ❌ Anti-Pattern 4: Searching Before Mapping ║
║ → BAD: claudemem search "fix the bug" --raw ║
║ → GOOD: claudemem --nologo map "feature" --raw THEN search ║
║ → WHY: Search results lack context without structural understanding ║
║ ║
║ ❌ Anti-Pattern 5: Ignoring PageRank ║
║ → BAD: Read every file that matches "Database" ║
║ → GOOD: Focus on high-PageRank symbols first ║
║ → WHY: Low-PageRank = utilities, High-PageRank = core abstractions ║
║ ║
║ ❌ Anti-Pattern 6: Not Using --nologo ║
║ → BAD: claudemem search "query" (includes ASCII art) ║
║ → GOOD: claudemem --nologo search "query" --raw ║
║ → WHY: Logo and decorations make parsing unreliable ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════╝
Anti-Pattern vs Correct Pattern Summary
| Anti-Pattern | Why It's Wrong | Correct Pattern |
|---|
| Read files blindly | No ranking, token waste | map first, then read specific lines |
grep -r "auth" | No semantic understanding | claudemem --nologo symbol auth --raw |
| Modify without callers | Breaking changes | callers before any modification |
| Search immediately | No structural context | map → symbol → callers → search |
| Treat all symbols equal | Miss core abstractions | Focus on high-PageRank first |
The Correct Workflow Diagram
┌─────────────────────────────────────────────────────────────────┐
│ CORRECT INVESTIGATION FLOW (v0.3.0) │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 1. claudemem --nologo map "task" --raw │
│ → Understand structure, find high-PageRank symbols │
│ │
│ 2. claudemem --nologo symbol <name> --raw │
│ → Get exact file:line location │
│ │
│ 3. claudemem --nologo callers <name> --raw │
│ → Know impact radius BEFORE modifying │
│ │
│ 4. claudemem --nologo callees <name> --raw │
│ → Understand dependencies │
│ │
│ 5. Read specific file:line ranges (NOT whole files) │
│ │
│ 6. Make changes with full awareness │
│ │
│ ⚠️ NEVER: Start with Read/Glob for semantic questions │
│ ⚠️ NEVER: Modify without checking callers │
│ ⚠️ NEVER: Search without mapping first │
│ │
└─────────────────────────────────────────────────────────────────┘
Installation & Setup
Check Installation
which claudemem || command -v claudemem
claudemem --version
Installation Options
npm install -g claude-codemem
brew tap MadAppGang/claude-mem && brew install --cask claudemem
Index Codebase
claudemem index
claudemem --version && ls -la .claudemem/index.db 2>/dev/null
Framework Documentation (v0.7.0+) ⭐NEW
Claudemem v0.7.0+ includes automatic framework documentation fetching for your project dependencies. Documentation is indexed alongside your code, enabling unified semantic search across both.
Quick Reference
claudemem docs status
claudemem docs fetch
claudemem docs fetch react vue
claudemem docs providers
claudemem docs refresh
claudemem docs clear
claudemem docs clear react
Documentation Providers
Claudemem uses a provider hierarchy with automatic fallback:
| Priority | Provider | Coverage | Requirements |
|---|
| 1 (Best) | Context7 | 6000+ libraries with versioned code examples | API key (free tier available) |
| 2 | llms.txt | Official AI-friendly docs from framework sites | Free, no key needed |
| 3 | DevDocs | Consistent offline documentation, 100+ languages | Free, no key needed |
Dependency Detection
Claudemem automatically detects dependencies from:
| File | Ecosystem | Example |
|---|
package.json | npm/yarn | React, Vue, Express |
requirements.txt | Python/pip | Django, FastAPI, Pandas |
go.mod | Go | Gin, Echo, GORM |
Cargo.toml | Rust | Tokio, Actix, Serde |
Setup
claudemem init
export CONTEXT7_API_KEY=your_key
Usage Examples
claudemem docs status
claudemem docs fetch
claudemem docs fetch fastapi
claudemem docs providers
claudemem docs refresh
Unified Search (Code + Documentation)
After indexing documentation, claudemem search returns results from both your codebase and framework documentation:
claudemem --nologo search "how to use React hooks" --raw
When to Use Documentation Commands
| Scenario | Command | Why |
|---|
| New project setup | claudemem docs fetch | Index docs for all dependencies |
| Learning new library | claudemem docs fetch <library> | Get searchable reference |
| Updated dependencies | claudemem docs refresh | Refresh to get new versions |
| Check what's indexed | claudemem docs status | View cache state |
| Clear space | claudemem docs clear | Remove cached documentation |
Integration with Investigation Workflow
Add documentation fetch to your investigation workflow:
claudemem docs status || claudemem docs fetch
claudemem --nologo map "authentication" --raw
claudemem --nologo search "JWT token validation" --raw
claudemem --nologo search "react best practices hooks" --raw
Version Information
The claudemem docs command requires v0.7.0+. Check your version:
claudemem --version
Note: If claudemem docs help returns "Unknown command", upgrade your claudemem installation.
Index Freshness Check (v0.5.0)
Before proceeding with investigation, verify the index is current:
STALE_COUNT=$(find . -type f \( -name "*.ts" -o -name "*.tsx" -o -name "*.js" -o -name "*.jsx" -o -name "*.py" -o -name "*.go" -o -name "*.rs" \) \
-newer .claudemem/index.db 2>/dev/null | grep -v "node_modules" | grep -v ".git" | grep -v "dist" | grep -v "build" | wc -l)
STALE_COUNT=$((STALE_COUNT + 0))
if [ "$STALE_COUNT" -gt 0 ]; then
if [[ "$OSTYPE" == "darwin"* ]]; then
INDEX_TIME=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M" .claudemem/index.db 2>/dev/null)
else
INDEX_TIME=$(stat -c "%y" .claudemem/index.db 2>/dev/null | cut -d'.' -f1)
fi
INDEX_TIME=${INDEX_TIME:-"unknown time"}
fi
AskUserQuestion Template:
AskUserQuestion({
questions: [{
question: `${STALE_COUNT} files have been modified since the last index (${INDEX_TIME}). The claudemem index may be outdated, which could cause missing or incorrect results. How would you like to proceed?`,
header: "Index Freshness Warning",
multiSelect: false,
options: [
{
label: "Reindex now (Recommended)",
description: "Run claudemem index to update. Takes ~1-2 minutes."
},
{
label: "Proceed with stale index",
description: "Continue investigation. May miss recent code changes."
},
{
label: "Cancel investigation",
description: "I'll handle this manually."
}
]
}]
})
Result Validation Guidelines
After Every Command
- Check exit code - Non-zero indicates failure
- Check for empty results - May need reindex or different query
- Validate relevance - Results should match query semantics
Validation Examples
RESULTS=$(claudemem --nologo map "authentication" --raw)
EXIT_CODE=$?
if [ "$EXIT_CODE" -ne 0 ]; then
echo "ERROR: claudemem command failed"
DIAGNOSIS=$(claudemem --version && ls -la .claudemem/index.db 2>&1)
fi
if [ -z "$RESULTS" ]; then
echo "WARNING: No results found - may need reindex or different query"
fi
if ! echo "$RESULTS" | grep -qi "auth\|login\|user\|session"; then
echo "WARNING: Results may not be relevant to authentication query"
fi
RESULTS=$(claudemem --nologo symbol UserService --raw)
if ! echo "$RESULTS" | grep -q "name: UserService"; then
echo "WARNING: UserService not found - check spelling or reindex"
fi
RESULTS=$(claudemem --nologo search "error handling" --raw)
MATCH_COUNT=0
for kw in error handling catch try; do
if | grep -qi ;
MATCH_COUNT=$((MATCH_COUNT + ))
[ -lt 2 ];
FALLBACK PROTOCOL
CRITICAL: Never use grep/find/Glob without explicit user approval.
If claudemem fails or returns irrelevant results:
- STOP - Do not silently switch to grep/find
- DIAGNOSE - Run
claudemem status to check index health
- COMMUNICATE - Tell user what happened
- ASK - Get explicit user permission via AskUserQuestion
AskUserQuestion({
questions: [{
question: "claudemem [command] failed or returned no relevant results. How should I proceed?",
header: "Investigation Issue",
multiSelect: false,
options: [
{ label: "Reindex codebase", description: "Run claudemem index (~1-2 min)" },
{ label: "Try different query", description: "Rephrase the search" },
{ label: "Use grep (not recommended)", description: "Traditional search - loses semantic understanding" },
{ label: "Cancel", description: "Stop investigation" }
]
}]
})
Grep Fallback Warning:
If user explicitly chooses grep fallback, display this warning:
## WARNING: Using Fallback Search (grep)
You have chosen to use grep as a fallback. Please understand the limitations:
| Feature | claudemem | grep |
|---------|-----------|------|
| Semantic understanding | Yes | No |
| Call graph analysis | Yes | No |
| Symbol relationships | Yes | No |
| PageRank ranking | Yes | No |
| False positives | Low | High |
**Recommendation:** After completing this task, run `claudemem index` to rebuild
the index for future investigations.
Proceeding with grep...
See ultrathink-detective skill for complete Fallback Protocol documentation.
Quality Checklist
Before completing a claudemem workflow, ensure:
Notes
- Requires OpenRouter API key for embeddings (https://openrouter.ai)
- Default model:
voyage/voyage-code-3 (best code understanding)
- All data stored locally in
.claudemem/ directory
- Tree-sitter provides AST parsing for TypeScript, Go, Python, Rust
- PageRank based on symbol call graph analysis
- Can run as MCP server with
--mcp flag
- Initial indexing takes ~1-2 minutes for typical projects
- NEW in v0.3.0:
map, symbol, callers, callees, context commands
- NEW in v0.3.0: PageRank ranking for symbol importance
- NEW in v0.3.0:
--raw output format for machine parsing
- NEW in v0.4.0:
dead-code, test-gaps, impact commands for code analysis
- NEW in v0.4.0: BFS traversal for transitive caller analysis
- NEW in v0.7.0:
docs command for framework documentation fetching
- NEW in v0.7.0: Context7, llms.txt, DevDocs documentation providers
- NEW in v0.7.0: Unified search across code AND framework documentation
- NEW in v0.7.0: Auto-detection of dependencies from package.json, requirements.txt, go.mod, Cargo.toml
Maintained by: Jack Rudenko @ MadAppGang
Plugin: code-analysis v2.8.0
Last Updated: December 2025 (v0.6.0 - Framework documentation support)