context-tools by aiskillstore
Context management tools for Claude Code - provides intelligent codebase mapping with Python, Rust, and C++ parsing, duplicate detection, and MCP-powered symbol queries. Use this skill when working with large codebases that need automated indexing and context management.
Content & Writing
85 Stars
2 Forks
Updated Jan 19, 2026, 04:39 AM
Why Use This
This skill provides specialized capabilities for aiskillstore's codebase.
Use Cases
- Developing new features in the aiskillstore repository
- Refactoring existing code to follow aiskillstore standards
- Understanding and working with aiskillstore's codebase structure
Install Guide
2 steps- 1
Skip this step if Ananke is already installed.
- 2
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Skill Stats
SKILL.md 230 Lines
Total Files 1
Total Size 0 B
License NOASSERTION
---
name: context-tools
description: Context management tools for Claude Code - provides intelligent codebase mapping with Python, Rust, and C++ parsing, duplicate detection, and MCP-powered symbol queries. Use this skill when working with large codebases that need automated indexing and context management.
---
# Context Tools for Claude Code
This skill provides intelligent context management for large codebases through:
- **Repository Mapping**: Parses Python, Rust, and C++ code to extract classes, functions, and methods
- **Duplicate Detection**: Identifies similar code patterns using fuzzy matching
- **MCP Symbol Server**: Enables fast symbol search via `search_symbols` and `get_file_symbols` tools
- **Automatic Indexing**: Background incremental updates as files change
## Using MCP Tools - PRIMARY CODE EXPLORATION METHOD
**⚡ DECISION TREE - Ask yourself BEFORE using Grep/Search/Bash:**
```
Am I searching for code symbols (functions, classes, enums, structs, types)?
├─ YES → Use MCP tools (search_symbols / get_symbol_content / get_file_symbols)
│ Example: Finding "enum InstructionData" → search_symbols("InstructionData")
│ Example: Finding "Phi" variant → get_symbol_content("InstructionData")
│
└─ NO → Am I searching for text/comments/strings/config values?
└─ YES → Use Grep/Search
Example: Finding string literals, documentation, JSON values
```
**CRITICAL**: Use repo-map tools as your FIRST approach when you need to:
- **Find a function/class/method by name or pattern** → `search_symbols`
- **Understand how to use a function** (parameters, return type) → `search_symbols` or `get_symbol_content`
- **Get the source code of a specific function/class** → `get_symbol_content`
- **See all code in a file** → `get_file_symbols`
- **Discover what functionality exists** in the codebase → `search_symbols` with patterns
**Do NOT use Grep or Bash for these tasks** - the repo-map tools are:
- **Faster** (pre-indexed SQLite database)
- **More accurate** (AST-parsed, not regex)
- **More informative** (includes signatures, docstrings, line ranges)
**When to use Grep instead:**
- Searching for string literals, comments, or arbitrary text
- Searching in non-code files (markdown, config, etc.)
- Cross-file text pattern searches
**Tool availability check:**
Before attempting to use MCP tools (mcp__plugin_context-tools_repo-map__*), check if `.claude/repo-map.db` exists:
- If YES: Try the MCP tool. If it fails (not available), use sqlite3 fallback.
- If NO: The project hasn't been indexed yet. Either wait for indexing or run `/context-tools:repo-map` to generate it.
**Fallback order:**
1. Try MCP tool first
2. If tool not found, use sqlite3 fallback to still answer the question
3. Explain that session needs restart to load MCP server for future use
## Real-World Usage Examples
### Example 1: User asks "Can we compare against OSDI?"
**Inefficient approach** (DON'T DO THIS):
```bash
grep -r "setup_model\|setup_instance" jax_spice/devices/*.py
```
Problems: Slow, error-prone pattern matching, gets interrupted on large codebases.
**Efficient approach** (DO THIS):
```
mcp__plugin_context-tools_repo-map__search_symbols
pattern: "setup_*"
```
Result: Instant list of all `setup_model`, `setup_instance`, etc. with locations and signatures.
### Example 2: User asks "How does the config loader work?"
**Inefficient approach** (DON'T DO THIS):
```bash
find . -name "*.py" -exec grep -l "class.*Config" {} \;
```
**Efficient approach** (DO THIS):
```
mcp__plugin_context-tools_repo-map__search_symbols
pattern: "*Config*"
kind: "class"
```
Then get the source:
```
mcp__plugin_context-tools_repo-map__get_symbol_content
name: "ConfigLoader"
```
### Example 3: User asks "What functions are in utils.py?"
**Inefficient approach** (DON'T DO THIS):
```bash
grep "^def " src/utils.py
```
**Efficient approach** (DO THIS):
```
mcp__plugin_context-tools_repo-map__get_file_symbols
file: "src/utils.py"
```
Result: Complete list of all functions/classes with signatures and docstrings.
### Example 4: Finding Rust enum variants (Real user case)
User needs to check if it's `Phi` or `PhiNode` in `enum InstructionData`.
**Inefficient approach** (DON'T DO THIS):
```bash
grep -n "enum InstructionData" openvaf-py/vendor/OpenVAF/openvaf/mir/src
grep -n "Phi" openvaf-py/vendor/OpenVAF/openvaf/mir/src/instructions.rs
```
Problems: Multiple searches, manual parsing, easy to miss correct variant.
**Efficient approach** (DO THIS):
```
mcp__plugin_context-tools_repo-map__search_symbols
pattern: "InstructionData"
mcp__plugin_context-tools_repo-map__get_symbol_content
name: "InstructionData"
```
Result: Complete enum with all variants visible, including `PhiNode(_)`.
## First Time Setup
**IMPORTANT**: If the user has just installed this plugin:
> "I see you've installed the context-tools plugin. The MCP server should auto-configure on restart. After restarting Claude Code, run `/mcp` to verify the `repo-map` server is loaded.
>
> If it doesn't load automatically, let me know and I can help troubleshoot using `/context-tools:setup-mcp`."
The MCP server auto-configures from the plugin manifest. Only if auto-config fails should you run `/context-tools:setup-mcp` for troubleshooting.
## Included Components
### Hooks
- **SessionStart**: Generates project manifest and displays status
- **PreCompact**: Refreshes context before compaction
- **SessionEnd**: Cleanup operations
Note: Indexing is now handled by the MCP server itself (no PreToolUse hook needed).
### MCP Server (repo-map)
**Database Schema (.claude/repo-map.db):**
```sql
symbols table columns:
- name (TEXT): Symbol name (function/class/method name)
- kind (TEXT): "function", "class", or "method"
- signature (TEXT): Full function/method signature with parameters and type hints
Examples:
- "extract_symbols_from_python(file_path: Path, relative_to: Path) -> list[Symbol]"
- "analyze_files(files: list[Path], extractor, language: str, root: Path)"
- docstring (TEXT): First line of docstring or full docstring
- file_path (TEXT): Relative path from project root
- line_number (INTEGER): Start line (1-indexed)
- end_line_number (INTEGER): End line (1-indexed)
- parent (TEXT): For methods, the class name
metadata table (v0.7.0+):
- key (TEXT PRIMARY KEY): Metadata key
- value (TEXT): Metadata value
Keys:
- 'status': 'idle' | 'indexing' | 'completed' | 'failed'
- 'index_start_time': ISO8601 timestamp when indexing started
- 'last_indexed': ISO8601 timestamp when last completed
- 'symbol_count': Total symbols indexed (string)
- 'error_message': Error message if status='failed'
```
**Indexing Status and Auto-Wait (v0.7.0+):**
- The MCP server tracks indexing status in the metadata table
- Tools automatically wait (up to 60s) if indexing is in progress
- **Watchdog**: Detects hung indexing (>10 minutes) and resets status to 'failed'
- **First Use**: On first use in a new codebase, indexing starts automatically
- **Behavior**: Most tools wait for completion, repo_map_status does not (use to check progress)
**Available MCP Tools:**
- `mcp__plugin_context-tools_repo-map__search_symbols` - Search symbols by pattern (supports glob wildcards)
- Returns: name, kind, signature, file_path, line_number, docstring, parent
- **AUTO-WAIT**: If indexing is in progress, automatically waits up to 60s for completion
- `mcp__plugin_context-tools_repo-map__get_file_symbols` - Get all symbols in a specific file
- Returns: All symbols with full metadata
- **AUTO-WAIT**: If indexing is in progress, automatically waits up to 60s for completion
- `mcp__plugin_context-tools_repo-map__get_symbol_content` - Get full source code of a symbol by exact name
- Returns: symbol metadata + content (source code text) + location
- **AUTO-WAIT**: If indexing is in progress, automatically waits up to 60s for completion
- `mcp__plugin_context-tools_repo-map__list_files` - List all indexed files, optionally filtered by glob pattern
- Returns: list of file paths matching pattern (e.g., "*.va", "*psp103*", "**/devices/*")
- **MUCH faster than find/ls** - queries pre-built index instead of filesystem traversal
- **AUTO-WAIT**: If indexing is in progress, automatically waits up to 60s for completion
- `mcp__plugin_context-tools_repo-map__reindex_repo_map` - Trigger manual reindex
- Does NOT auto-wait (use to force reindex)
- `mcp__plugin_context-tools_repo-map__repo_map_status` - Check indexing status and staleness
- Returns: index_status (idle/indexing/completed/failed), symbol_count, last_indexed, indexing_duration_seconds
- Does NOT auto-wait (use to check status)
- `mcp__plugin_context-tools_repo-map__wait_for_index` - Explicitly wait for indexing to complete
- Takes: timeout_seconds (default: 60)
- Returns: success (bool), message (str)
- Use when you want to wait longer than the default 60s auto-wait timeout
**Fallback when MCP tools unavailable:**
Use sqlite3 directly on `.claude/repo-map.db`:
```bash
# Search symbols
sqlite3 .claude/repo-map.db "SELECT name, kind, signature, file_path, line_number FROM symbols WHERE name LIKE 'pattern%' LIMIT 20"
# Get symbol with source
sqlite3 .claude/repo-map.db "SELECT * FROM symbols WHERE name = 'function_name'"
# Then read file_path lines line_number to end_line_number
```
### Slash Commands
- `/context-tools:repo-map` - Regenerate repository map
- `/context-tools:manifest` - Refresh project manifest
- `/context-tools:learnings` - Manage project learnings
- `/context-tools:status` - Show plugin status
## Language Support
| Language | Parser | File Extensions |
|----------|--------|-----------------|
| Python | AST | `.py` |
| Rust | tree-sitter-rust | `.rs` |
| C++ | tree-sitter-cpp | `.cpp`, `.cc`, `.cxx`, `.hpp`, `.h`, `.hxx` |
Name Size