Claude Code Plugins

Community-maintained marketplace

Feedback

explore-codebase

@anortham/julie
1
0

Autonomously explore unfamiliar codebases using Julie's code intelligence. Use semantic search, symbol navigation, and call path tracing to understand architecture without reading entire files. Activates when user asks to understand, explore, or learn about a codebase.

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 explore-codebase
description Autonomously explore unfamiliar codebases using Julie's code intelligence. Use semantic search, symbol navigation, and call path tracing to understand architecture without reading entire files. Activates when user asks to understand, explore, or learn about a codebase.
allowed-tools mcp__julie__fast_search, mcp__julie__get_symbols, mcp__julie__fast_goto, mcp__julie__fast_refs, mcp__julie__trace_call_path, mcp__julie__find_logic, mcp__julie__fast_explore

Explore Codebase Skill

Purpose

Understand unfamiliar codebases efficiently using Julie's code intelligence without reading entire files. This skill uses semantic search, symbol navigation, and execution flow tracing to build a mental model of the code.

When to Activate

Use when the user:

  • Wants to understand code: "how does authentication work?", "explain the architecture"
  • Needs to find something: "where is error handling?", "find the database layer"
  • Explores new codebase: "I'm new to this project", "help me understand this code"
  • Investigates functionality: "how does X feature work?", "trace this execution flow"

Julie's Code Intelligence Tools

🔍 Search & Discovery

fast_search - Semantic + text search

Mode: "semantic" - Understands intent ("find authentication logic")
Mode: "lines" - Fast text search ("find all imports")
Mode: "symbols" - Symbol-only search ("class UserService")

find_logic - Business logic discovery

Filters out framework noise, finds actual business logic

fast_explore - Architectural exploration

Understand overall codebase structure and patterns

📖 Symbol Understanding

get_symbols - File structure overview (70-90% token savings!)

Mode: "structure" - High-level overview (classes, functions, imports)
Mode: "full" - Complete symbol details with relationships
Mode: "definitions" - Just the symbols (minimal)

Key benefit: See file structure WITHOUT reading entire file!

🧭 Navigation

fast_goto - Jump to definitions

Find where symbols are defined across the codebase

fast_refs - Find all references

See everywhere a symbol is used

🔗 Execution Flow Tracing

trace_call_path - Cross-language call graphs

Direction: "upstream" - What calls this? (callers)
Direction: "downstream" - What does this call? (callees)
Direction: "both" - Full call graph

Unique feature: Traces across language boundaries!

Orchestration Strategy

Pattern 1: Top-Down Exploration

Goal: Understand overall architecture

1. fast_explore() → Get codebase overview
2. get_symbols(mode="structure") on key files
3. trace_call_path(direction="downstream") on entry points
4. Identify patterns and layers

Pattern 2: Feature Investigation

Goal: Understand specific feature

1. fast_search(query="feature name", mode="semantic")
2. get_symbols on relevant files
3. trace_call_path to understand execution flow
4. fast_refs to see all usage points

Pattern 3: Bug Investigation

Goal: Find where something is broken

1. fast_search for error messages or symptoms
2. fast_goto to find definitions
3. trace_call_path(direction="upstream") to find callers
4. Analyze execution flow for root cause

Pattern 4: Dependency Discovery

Goal: Understand what uses what

1. fast_refs on key symbols
2. trace_call_path(direction="both") for full graph
3. Map dependencies and relationships

Example Exploration Session

User: "How does authentication work in this codebase?"

Skill activates → Systematic exploration

Step 1: Semantic Search
→ fast_search({ query: "authentication logic", mode: "semantic" })

Results:
- src/middleware/auth.ts (score: 0.95)
- src/services/user-service.ts (score: 0.89)
- src/utils/jwt.ts (score: 0.87)

Step 2: Symbol Structure (Token-Efficient)
→ get_symbols({ file: "src/middleware/auth.ts", mode: "structure" })

Structure:
- class AuthMiddleware
  - authenticate(): middleware function
  - validateToken(): token validation
  - extractUser(): user extraction
- imports: jwt, UserService

Step 3: Trace Execution Flow
→ trace_call_path({
    symbol: "authenticate",
    direction: "downstream"
  })

Execution flow:
authenticate()
  → validateToken()
    → jwt.verify()
  → extractUser()
    → UserService.findById()

Step 4: Find Usage Points
→ fast_refs({ symbol: "authenticate" })

Used in:
- src/routes/api.ts (10 locations)
- src/routes/admin.ts (5 locations)
- src/app.ts (1 location - middleware registration)

Analysis: "Authentication uses JWT middleware that validates tokens
via the UserService. The authenticate function is registered globally
in app.ts and protects 15 routes across api and admin routers."

Token Efficiency Strategy

Traditional approach:

Read entire file (500 lines) → 12,000 tokens
Analyze → Extract relevant parts

Julie approach:

get_symbols(mode="structure") → 800 tokens (93% savings!)
See structure → Navigate precisely
Only read specific symbols if needed

When to Use What

get_symbols (PREFERRED):

  • Understanding file structure
  • Seeing available symbols
  • Quick orientation
  • Before deep dive

Full file read (SPARINGLY):

  • After identifying specific target
  • When understanding implementation details
  • After narrowing down with symbols

Cross-Language Navigation

Julie's Unique Capability: Trace calls across language boundaries

// TypeScript
import { processPayment } from './payment-service';

processPayment(data);  // → What does this call?
→ trace_call_path({ symbol: "processPayment", direction: "downstream" })

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

No other tool does this!

Orchestration Examples

Example 1: New to Codebase

User: "I'm new to this project, help me understand it"

1. fast_explore() → Architecture overview
2. get_symbols(file="src/main.ts", mode="structure") → Entry point
3. trace_call_path on main() → See initialization flow
4. Present: "This is a [type] application with [layers].
   Main entry point initializes [components] and starts [server]."

Example 2: Find Feature

User: "Where is the email sending code?"

1. fast_search({ query: "send email", mode: "semantic" })
2. get_symbols on top results
3. trace_call_path to see what triggers it
4. Present: "Email sending is in [file] via [class/function],
   called from [locations]."

Example 3: Understand Error

User: "Why am I getting 'Invalid token' errors?"

1. fast_search({ query: "Invalid token" })
2. fast_goto on token validation
3. trace_call_path(direction="upstream") → Who calls this?
4. Analyze: "Token validation happens in [middleware],
   called by [routes]. Error occurs when [condition]."

Key Behaviors

✅ DO

  • Start with semantic search for relevant code
  • Use get_symbols before reading files (massive token savings)
  • Trace execution paths to understand flow
  • Navigate with fast_goto and fast_refs
  • Build mental model incrementally
  • Explain findings clearly to user

❌ DON'T

  • Read entire files without checking symbols first
  • Do random grep searches (use semantic search!)
  • Ignore call path tracing (understanding flow is critical)
  • Overwhelm user with too much detail
  • Skip symbol structure overview

Success Criteria

This skill succeeds when:

  • User understands codebase architecture quickly
  • Minimal tokens used (via get_symbols)
  • Clear execution flow explained
  • Relevant code located efficiently
  • User can navigate codebase independently afterward

Performance

  • get_symbols: ~100ms (vs seconds to read/parse full file)
  • fast_search: <10ms text, <100ms semantic
  • trace_call_path: <200ms (including cross-language)
  • fast_refs: <50ms

Total exploration session: ~500ms + reading time for specific targets


Remember: Julie's superpower is understanding code structure WITHOUT reading entire files. Use get_symbols liberally, search semantically, and trace execution flows for rapid comprehension!