Markdown Converter
Agent skill for markdown-converter
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.
Loading actions...
This skill provides intelligent context management for large codebases through:
search_symbols and get_file_symbols tools⚡ 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:
search_symbolssearch_symbols or get_symbol_contentget_symbol_contentget_file_symbolssearch_symbols with patternsDo NOT use Grep or Bash for these tasks - the repo-map tools are:
When to use Grep instead:
Tool availability check:
Before attempting to use MCP tools (mcp__plugin_context-daddy_repo-map__*), check if .claude/repo-map.db exists:
/context-daddy:repo-map to generate it.Fallback order:
Inefficient approach (DON'T DO THIS):
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-daddy_repo-map__search_symbols
pattern: "setup_*"
Result: Instant list of all setup_model, setup_instance, etc. with locations and signatures.
Inefficient approach (DON'T DO THIS):
find . -name "*.py" -exec grep -l "class.*Config" {} \;
Efficient approach (DO THIS):
mcp__plugin_context-daddy_repo-map__search_symbols
pattern: "*Config*"
kind: "class"
Then get the source:
mcp__plugin_context-daddy_repo-map__get_symbol_content
name: "ConfigLoader"
Inefficient approach (DON'T DO THIS):
grep "^def " src/utils.py
Efficient approach (DO THIS):
mcp__plugin_context-daddy_repo-map__get_file_symbols
file: "src/utils.py"
Result: Complete list of all functions/classes with signatures and docstrings.
User needs to check if it's Phi or PhiNode in enum InstructionData.
Inefficient approach (DON'T DO THIS):
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-daddy_repo-map__search_symbols
pattern: "InstructionData"
mcp__plugin_context-daddy_repo-map__get_symbol_content
name: "InstructionData"
Result: Complete enum with all variants visible, including PhiNode(_).
IMPORTANT: If the user has just installed this plugin:
"I see you've installed the context-daddy plugin. The MCP server should auto-configure on restart. After restarting Claude Code, run
/mcpto verify therepo-mapserver is loaded.If it doesn't load automatically, let me know and I can help troubleshoot using
/context-daddy:setup-mcp."
The MCP server auto-configures from the plugin manifest. Only if auto-config fails should you run /context-daddy:setup-mcp for troubleshooting.
Note: Indexing is now handled by the MCP server itself (no PreToolUse hook needed).
Database Schema (.claude/repo-map.db):
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+):
Available MCP Tools:
mcp__plugin_context-daddy_repo-map__search_symbols - Search symbols by pattern (supports glob wildcards)
mcp__plugin_context-daddy_repo-map__get_file_symbols - Get all symbols in a specific file
mcp__plugin_context-daddy_repo-map__get_symbol_content - Get full source code of a symbol by exact name
mcp__plugin_context-daddy_repo-map__list_files - List all indexed files, optionally filtered by glob pattern
mcp__plugin_context-daddy_repo-map__reindex_repo_map - Trigger manual reindex
mcp__plugin_context-daddy_repo-map__repo_map_status - Check indexing status and staleness
mcp__plugin_context-daddy_repo-map__wait_for_index - Explicitly wait for indexing to complete
Fallback when MCP tools unavailable:
Use sqlite3 directly on .claude/repo-map.db:
# 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
/context-daddy:repo-map - Regenerate repository map/context-daddy:manifest - Refresh project manifest/context-daddy:learnings - Manage project learnings/context-daddy:status - Show plugin status| Language | Parser | File Extensions |
|---|---|---|
| Python | AST | .py |
| Rust | tree-sitter-rust | .rs |
| C++ | tree-sitter-cpp | .cpp, .cc, .cxx, .hpp, .h, .hxx |