Claude Code Plugins

Community-maintained marketplace

Feedback

semantic-intelligence

@anortham/julie
1
0

Use Julie's semantic search capabilities for conceptual code understanding. Activates when searching for concepts, cross-language patterns, business logic, or exploring unfamiliar code. Combines text and semantic search for optimal results.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name semantic-intelligence
description Use Julie's semantic search capabilities for conceptual code understanding. Activates when searching for concepts, cross-language patterns, business logic, or exploring unfamiliar code. Combines text and semantic search for optimal results.
allowed-tools mcp__julie__fast_search, mcp__julie__find_logic, mcp__julie__trace_call_path, mcp__julie__fast_goto, mcp__julie__get_symbols

Semantic Intelligence Skill

Purpose

Leverage Julie's semantic understanding to find code by concept, not just keywords. Goes beyond text matching to understand what code does.

When to Activate

  • Searching for concepts ("authentication logic")
  • Finding cross-language patterns
  • Discovering business logic
  • Exploring unfamiliar codebases
  • When text search returns nothing
  • Understanding execution flows

Semantic vs Text Search

Text Search (exact/wildcard matching):

fast_search({ query: "console.error", mode: "text" })
→ Fast (<10ms)
→ Exact matches only
→ Misses variations ("logger.error", "print_error")

Semantic Search (conceptual understanding):

fast_search({ query: "error logging", mode: "semantic" })
→ Slower (~100ms)
→ Finds concepts
→ Discovers: console.error, logger.error, logging.error, errorHandler
→ Cross-language: Python logging, Rust tracing, Go log

Hybrid Search (best of both):

fast_search({ query: "authentication", mode: "hybrid" })
→ Runs text + semantic in parallel
→ Fuses results intelligently
→ Boosts symbols in BOTH searches
→ Optimal: ~150ms

When to Use Each Mode

Use Text Mode When:

  • ✅ Searching for specific API names
  • ✅ Finding exact strings
  • ✅ Speed critical (<10ms)
  • ✅ You know exact symbol name
Examples:
- "getUserData" → find specific function
- "console.log" → find exact API usage
- "import React" → exact import statement
- "TODO: fix" → exact comment

Use Semantic Mode When:

  • ✅ Searching for concepts
  • ✅ Cross-language patterns
  • ✅ Don't know exact names
  • ✅ Understanding what code does
Examples:
- "authentication logic" → find ALL auth-related code
- "error handling" → discover error patterns
- "database connections" → find DB code (MySQL, Postgres, etc.)
- "payment processing" → business logic discovery

Use Hybrid Mode When:

  • ✅ Not sure which mode is best
  • ✅ Want comprehensive results
  • ✅ Concept + exact matches both useful
  • ✅ Willing to wait ~150ms
Examples:
- "user authentication" → concept + exact matches
- "API endpoints" → finds routes, handlers, controllers
- "validation logic" → semantic concept + exact validators

Search Strategy Decision Tree

Know exact symbol name?
  YES → fast_goto("SymbolName")
        → <5ms, jumps to definition

Know exact API/string?
  YES → fast_search({ mode: "text" })
        → <10ms, exact matches

Searching for concept/behavior?
  YES → fast_search({ mode: "semantic" })
        → ~100ms, conceptual understanding

Not sure / want comprehensive?
  YES → fast_search({ mode: "hybrid" })
        → ~150ms, text + semantic fused

Looking for business logic specifically?
  YES → find_logic({ domain: "..." })
        → Filters framework noise, semantic tier included

Cross-Language Semantic Matching

Julie's Superpower: Finds similar code across languages

Example: Finding "user validation" across codebase

fast_search({
  query: "user input validation",
  mode: "semantic",
  limit: 20
})

Results discovered:
- TypeScript: validateUser(input: UserInput)
- Python: def validate_user_input(data: dict)
- Rust: fn validate_user(user: &User) -> Result
- Go: func ValidateUserInput(input *UserInput) error
- Java: public boolean validateUser(User user)

→ Same CONCEPT, different languages
→ Naming variants automatically understood
→ Semantic embeddings capture meaning

Why this works: Embeddings encode what code does, not just what it's called


Business Logic Discovery

Problem: Framework code dominates search results

Solution: find_logic filters noise, finds actual business logic

find_logic({
  domain: "payment",
  max_results: 20,
  min_business_score: 0.3
})

Filtering strategy:
1. Text patterns (business domain keywords)
2. Symbol scoring (complexity, public visibility)
3. Path scoring (src/ over node_modules/)
4. **Semantic tier** (conceptual similarity to domain)

→ Returns business logic, not framework boilerplate
→ Grouped by layer (controllers, services, models)

Common domains:

  • "payment" → payment processing logic
  • "auth" → authentication/authorization
  • "user" → user management
  • "order" → order processing
  • "notification" → notification systems

Semantic Search on Memories

Memories are searchable just like code:

# Find similar past decisions
fast_search({
  query: "database choice rationale",
  mode: "semantic",
  file_pattern: ".memories/**/*.json"
})

→ Discovers decision memories about DB selection
→ Finds learnings about database migrations
→ Cross-references related checkpoints

# Find bug fixes related to concept
fast_search({
  query: "race condition fixes",
  mode: "semantic",
  file_pattern: ".memories/**/*.json"
})

→ Returns past race condition bugs
→ Shows solutions that worked
→ Prevents repeating same debugging

Power move: Search codebase + memories together for complete understanding


Execution Flow Tracing (Cross-Language)

Unique capability: Trace calls across language boundaries

trace_call_path({
  symbol: "processPayment",
  direction: "downstream",  // what does this call?
  max_depth: 3
})

Execution flow discovered:
TypeScript: processPayment()
  → Rust: payment_processor::process() ← CROSSES LANGUAGE
    → SQL: stored_proc_charge() ← CROSSES AGAIN

→ Semantic matching finds cross-language connections
→ No other tool does this
→ ~200ms for multi-level traces

Directions:

  • upstream → Who calls this? (callers)
  • downstream → What does this call? (callees)
  • both → Full call graph

Hybrid Search Intelligence

How hybrid mode works:

1. Run text and semantic searches IN PARALLEL
2. Collect results from both
3. Score fusion algorithm:
   - Symbols in BOTH searches → boosted score
   - Text-only → normal score
   - Semantic-only → normal score
4. Sort by fused score
5. Return top results

Performance: ~150ms (parallelized)

When hybrid shines:

Query: "API error handling"

Text search finds:
- handleAPIError()
- api_error_handler.ts
- APIErrorHandler class

Semantic search finds:
- tryRequest() // catches errors
- errorBoundary() // React error handling
- logFailedRequest() // implicit error handling

Hybrid fusion:
- handleAPIError() ← BOTH searches (boosted!)
- tryRequest() ← semantic understanding
- api_error_handler.ts ← text match
→ Comprehensive results, best ranked first

Semantic Reference Discovery

Find semantically similar code:

# After finding a symbol with fast_goto
fast_refs({
  symbol: "UserService",
  include_definition: true
})

→ Returns ALL references (text-based)

# Semantic alternative (conceptual similarity)
fast_search({
  query: "UserService class implementation",
  mode: "semantic",
  search_target: "definitions"
})

→ Finds UserService + similar patterns:
  - AccountService (similar structure)
  - ProfileService (similar purpose)
  - CustomerService (semantic similarity)

Use case: "Find all classes similar to this pattern"


Workflow Patterns

Pattern 1: Unfamiliar Codebase

Step 1: Broad semantic search
  fast_search({ query: "main entry point", mode: "semantic" })

Step 2: Find business logic
  find_logic({ domain: "core", max_results: 30 })

Step 3: Trace execution
  trace_call_path({ symbol: "main", direction: "downstream", max_depth: 2 })

Step 4: Get structure
  get_symbols({ file_path: "main.ts", max_depth: 2 })

→ Understand codebase in <5 minutes

Pattern 2: "How is X implemented?"

Step 1: Semantic search
  fast_search({ query: "authentication implementation", mode: "semantic" })

Step 2: Find exact symbols
  fast_goto("authenticate")

Step 3: See usage
  fast_refs({ symbol: "authenticate" })

Step 4: Trace flow
  trace_call_path({ symbol: "authenticate", direction: "downstream" })

→ Complete understanding of feature

Pattern 3: Cross-Language Investigation

Step 1: Semantic search (all languages)
  fast_search({ query: "user validation logic", mode: "semantic" })

Step 2: Review results
  → TypeScript, Python, Rust implementations

Step 3: Compare patterns
  → See how each language handles validation
  → Identify best practices

Step 4: Trace connections
  trace_call_path({ symbol: "validateUser", direction: "both" })
  → Understand cross-service calls

Key Behaviors

✅ DO

  • Use semantic search for concepts and behaviors
  • Use text search for exact API/symbol names
  • Use hybrid when uncertain (comprehensive)
  • Search memories semantically (find past learnings)
  • Use find_logic to discover business code
  • Trace execution flows cross-language
  • Combine multiple search modes for completeness

❌ DON'T

  • Use semantic for exact symbol names (use fast_goto)
  • Use text search for concepts (misses variations)
  • Ignore hybrid mode (often best choice)
  • Forget to search memories (knowledge base!)
  • Skip cross-language tracing (unique capability)
  • Search without strategy (use decision tree)

Success Criteria

This skill succeeds when:

  • ✅ Concepts found across languages
  • ✅ Business logic discovered efficiently
  • ✅ Execution flows traced completely
  • ✅ Memories searched semantically
  • ✅ Right search mode used for query type
  • ✅ Cross-language patterns identified
  • ✅ Unfamiliar code understood quickly

Performance

  • Text search: <10ms
  • Semantic search: ~100ms
  • Hybrid search: ~150ms
  • find_logic: ~200ms (includes semantic tier)
  • trace_call_path: ~200ms (cross-language)

Remember: Semantic understanding is Julie's superpower. Text finds what you ask for. Semantic finds what you mean.

The Rule: Searching for WHAT (exact) → text. Searching for WHY (concept) → semantic. Not sure → hybrid.