Files
Claude-Code-Workflow/.claude/rules/tool-selection.md
catlog22 79a2953862 Add comprehensive tests for vector/semantic search functionality
- Implement full coverage tests for Embedder model loading and embedding generation
- Add CRUD operations and caching tests for VectorStore
- Include cosine similarity computation tests
- Validate semantic search accuracy and relevance through various queries
- Establish performance benchmarks for embedding and search operations
- Ensure edge cases and error handling are covered
- Test thread safety and concurrent access scenarios
- Verify availability of semantic search dependencies
2025-12-14 17:17:09 +08:00

2.7 KiB

Tool Selection Rules

Context Gathering

Use Exa

  • Researching external APIs, libraries, frameworks
  • Need recent documentation beyond knowledge cutoff
  • Looking for implementation examples in public repos
  • User mentions specific library/framework names
  • Questions about "best practices" or "how does X work"

Use read_file (MCP)

  • Reading multiple related files at once
  • Directory traversal with pattern matching
  • Searching file content with regex
  • Need to limit depth/file count for large directories
  • Batch operations on multiple files
  • Pattern-based filtering (glob + content regex)

Use codex_lens

  • Large codebase (>500 files) requiring repeated searches
  • Need semantic understanding of code relationships
  • Working across multiple sessions
  • Symbol-level navigation needed
  • Finding all implementations of interface/class
  • Tracking function calls across codebase
  • Unknown file locations
  • Concept/semantic search ("authentication logic", "payment processing")
  • Medium-sized codebase (100-500 files)
  • One-time or infrequent searches
  • Natural language queries about code structure

Mode Selection:

  • auto: Let tool decide (default)
  • exact: Known exact pattern
  • fuzzy: Typo-tolerant search
  • semantic: Concept-based search
  • graph: Dependency analysis

File Modification

Use edit_file (MCP)

  • Built-in Edit tool failed 1+ times
  • Need dry-run preview before applying changes
  • Need line-based operations (insert_after, insert_before)
  • Need to replace all occurrences at once
  • Built-in Edit returns "old_string not found"
  • Whitespace/formatting issues in built-in Edit

Mode Selection:

  • mode=update: Replace text
  • mode=line: Line-based operations

Use write_file (MCP)

  • Creating brand new files
  • MCP edit_file still fails (last resort)
  • Need to completely replace file content
  • Need backup before overwriting
  • User explicitly asks to "recreate file"

Priority Logic

File Reading:

  1. Known single file → Built-in Read
  2. Multiple files OR pattern matching → read_file (MCP)
  3. Unknown location → smart_search then Read
  4. Large codebase + repeated access → codex_lens

File Editing:

  1. Always try built-in Edit first
  2. Fails 1+ times → edit_file (MCP)
  3. Still fails → write_file (MCP)

Search:

  1. External knowledge → Exa
  2. Exact pattern in small codebase → Built-in Grep
  3. Semantic/unknown location → smart_search
  4. Large codebase + repeated searches → codex_lens

Decision Triggers

Start with simplest tool (Read, Edit, Grep) Escalate to MCP tools when built-ins fail or inappropriate Use semantic search for exploratory tasks Use indexed search for large, stable codebases Use Exa for external/public knowledge