claude-plugin
skill**Use MCP repo-map tools when:** - Searching for symbols by name pattern (faster than Grep) - Getting all symbols in a file (faster than Read + parsing)
apm::install
apm install @aiskillstore/claude-pluginapm::skill.md
---
name: claude-plugin
description: "**Use MCP repo-map tools when:** - Searching for symbols by name pattern (faster than Grep) - Getting all symbols in a file (faster than Read + parsing)"
---
# Context Tools Plugin - Usage Guide
## Dynamic Directory Support (v0.8.0+)
**GOOD NEWS:** MCP tools automatically adapt to the current working directory!
**How it works:**
```bash
cd /home/user/project-a
# MCP tools query/index project-a/.claude/repo-map.db
cd /home/user/project-b
# MCP tools now query/index project-b/.claude/repo-map.db ✅
```
**Behavior:**
- Tools check current working directory on each call
- If `.claude/repo-map.db` exists: query it
- If not: trigger indexing for current directory
- Logs show which directory is being queried
**Benefits:**
- No need to restart session when changing projects
- Can work with multiple projects in one session
- Each project maintains its own index
- Tools "just work" wherever you are
## Plugin Installation and Updates
**CRITICAL: When the user runs `/plugin install` or `/plugin update`:**
The MCP server configuration changes immediately, but the MCP server itself **does not restart automatically**. The new plugin features (especially MCP tools like `search_symbols`) will NOT be available until the session restarts.
**YOU MUST tell the user:**
```
The plugin has been installed/updated successfully. To use the MCP tools (search_symbols, get_file_symbols, etc.), you need to restart the session:
1. Exit this session (Ctrl+C or type 'exit')
2. Start a new session with: claude continue
The MCP server will restart with the new plugin configuration.
```
**When to give this instruction:**
- Immediately after the user runs `/plugin install context-tools`
- Immediately after the user runs `/plugin update context-tools`
- When the user tries to use MCP tools but they're not available (and you suspect they just installed)
**Why this matters:**
- MCP servers are started when Claude Code starts
- Plugin installation modifies MCP server configuration
- Changes only take effect on next Claude Code startup
- Users will be confused if tools don't work after installation
## Available MCP Tools
Once the session has been restarted after installation, the following MCP tools are available:
### mcp__repo-map__search_symbols
Search for symbols (functions, classes, methods) by name pattern.
**Faster than Grep/Search** - uses pre-built SQLite index.
Parameters:
- `pattern` (required): Glob pattern like `get_*`, `*Handler`, `Config*`
- `kind` (optional): Filter by `"class"`, `"function"`, or `"method"`
- `limit` (optional): Max results (default: 20)
Example:
```json
{
"pattern": "parse_*",
"kind": "function",
"limit": 10
}
```
### mcp__repo-map__get_file_symbols
Get all symbols defined in a specific file.
Parameters:
- `file` (required): Relative path from project root (e.g., `"src/models/user.py"`)
### mcp__repo-map__get_symbol_content
Get the source code content of a symbol by exact name.
**Faster than Grep/Search+Read** - directly retrieves function/class source code.
Parameters:
- `name` (required): Exact symbol name (e.g., `"MyClass"`, `"User.save"`)
- `kind` (optional): Filter by type if name is ambiguous
### mcp__repo-map__reindex_repo_map
Trigger a reindex of the repository symbols.
Parameters:
- `force` (optional): Force reindex even if cache is fresh (default: false)
### mcp__repo-map__repo_map_status
Get the current status of the repo map index.
Shows:
- Index status: `idle`, `indexing`, `completed`, or `failed`
- Symbol count
- Last indexed time
- Whether index is stale
- Indexing errors (if any)
### mcp__repo-map__wait_for_index
Wait for indexing to complete.
Parameters:
- `timeout_seconds` (optional): How long to wait (default: 60)
**Note:** Most tools automatically wait for indexing to complete, so this is rarely needed.
## Database Schema (.claude/repo-map.db)
**symbols table:**
- `name` (TEXT): Symbol name
- `kind` (TEXT): `class`, `function`, or `method`
- `file_path` (TEXT): Relative path from project root
- `line_number` (INTEGER): Start line (1-indexed)
- `end_line_number` (INTEGER): End line (nullable)
- `parent` (TEXT): Parent class/module (nullable)
- `docstring` (TEXT): First line of docstring (nullable)
- `signature` (TEXT): Function/method signature (nullable)
- `language` (TEXT): `python`, `cpp`, or `rust`
**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+)
**First Use Behavior:**
- On first use, indexing starts automatically in background
- Tools automatically wait (up to 60s) if indexing is in progress
- If timeout, tools return helpful error asking user to retry
**Watchdog (v0.7.0+):**
- Detects hung indexing processes (>10 minutes)
- Automatically resets status to 'failed'
- Can be manually recovered with `reindex_repo_map`
**Multiprocess Architecture (v0.8.0+):**
- Indexing runs in separate subprocess
- MCP server remains responsive even if indexing hangs
- Watchdog can kill hung subprocess without affecting MCP server
- Resource limits (Unix/macOS): 4GB memory, 20 min CPU time
## When to Use MCP Tools vs Other Tools
**Use MCP repo-map tools when:**
- Searching for symbols by name pattern (faster than Grep)
- Getting all symbols in a file (faster than Read + parsing)
- Getting source code of a specific function/class (faster than Grep + Read)
- Need to search across multiple languages (Python, C++, Rust)
**Use other tools when:**
- Searching file contents (not symbol names) - use Grep
- Reading entire files - use Read
- Need to search files that aren't Python/C++/Rust
- Searching for non-code patterns (comments, strings, etc.)
## Project-Specific Files
**Automatically generated at session start:**
- `.claude/project-manifest.json` - Project structure and build commands
- `.claude/repo-map.md` - Human-readable code structure with duplicate detection
- `.claude/repo-map.db` - SQLite database for fast symbol queries (MCP server)
**Optional (created manually):**
- `.claude/learnings.md` - Project-specific learnings and discoveries
**Logs:**
- `.claude/logs/repo-map-server.log` - MCP server rotating log (1MB per file, 3 backups)
- Tool calls and results
- Indexing events and performance
- Watchdog actions and resource limit violations
- Server startup/shutdown
- Session start hook outputs are also logged for debugging