Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    seanGSISG

    using-serena-for-exploration

    seanGSISG/using-serena-for-exploration
    Research
    1
    4 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Use when exploring codebases with Serena MCP tools for architectural understanding and pattern discovery - guides efficient symbolic exploration workflow minimizing token usage through targeted...

    SKILL.md

    Using Serena for Exploration

    Use this skill when exploring codebases with Serena MCP tools for architectural understanding and pattern discovery.

    Core Principles

    • Start broad, narrow progressively
    • Use symbolic tools before reading full files
    • Always provide file:line references
    • Minimize token usage through targeted reads

    Workflow

    1. Initial Discovery

    Use list_dir and find_file to understand project structure:

    # Get repository overview
    list_dir(relative_path=".", recursive=false)
    
    # Find specific file types
    find_file(file_mask="*auth*.py", relative_path="src")
    

    2. Symbol Overview

    Use get_symbols_overview before reading full files:

    # Get top-level symbols in a file
    get_symbols_overview(relative_path="src/auth/handler.py")
    

    Returns classes, functions, imports - understand structure without reading bodies.

    3. Targeted Symbol Reading

    Use find_symbol for specific code:

    # Read a specific class without body
    find_symbol(
        name_path_pattern="AuthHandler",
        relative_path="src/auth/handler.py",
        include_body=false,
        depth=1  # Include methods list
    )
    
    # Read specific method with body
    find_symbol(
        name_path_pattern="AuthHandler/login",
        relative_path="src/auth/handler.py",
        include_body=true
    )
    

    Name path patterns:

    • Simple name: "login" - matches any symbol named "login"
    • Relative path: "AuthHandler/login" - matches method in class
    • Absolute path: "/AuthHandler/login" - exact match within file
    • With index: "AuthHandler/login[0]" - specific overload

    4. Pattern Searching

    Use search_for_pattern when you don't know symbol names:

    # Find all JWT usage
    search_for_pattern(
        substring_pattern="jwt\\.encode",
        relative_path="src",
        restrict_search_to_code_files=true,
        context_lines_before=2,
        context_lines_after=2,
        output_mode="content"
    )
    

    Pattern matching:

    • Uses regex with DOTALL flag (. matches newlines)
    • Non-greedy quantifiers preferred: .*? not .*
    • Escape special chars: \\{\\} for literal braces

    5. Relationship Discovery

    Use find_referencing_symbols to understand dependencies:

    # Who calls this function?
    find_referencing_symbols(
        name_path="authenticate_user",
        relative_path="src/auth/handler.py"
    )
    

    Returns code snippets around references with symbolic info.

    Reporting Format

    Always structure findings as:

    ## Codebase Findings
    
    ### Current Architecture
    - **Authentication:** `src/auth/handler.py:45-120`
      - JWT-based auth with refresh tokens
      - Session storage in Redis
    
    ### Similar Implementations
    - **User management:** `src/users/controller.py:200-250`
      - Uses similar validation pattern
      - Can reuse `validate_credentials()` helper
    
    ### Integration Points
    - **Middleware:** `src/middleware/auth.py:30`
      - Hook new auth method here
      - Follows pattern: check → validate → attach user
    

    Anti-Patterns

    ❌ Don't: Read entire files before understanding structure ✅ Do: Use get_symbols_overview first

    ❌ Don't: Use full file reads for symbol searches ✅ Do: Use find_symbol with targeted name paths

    ❌ Don't: Search without context limits ✅ Do: Use relative_path to restrict search scope

    ❌ Don't: Return findings without file:line references ✅ Do: Always include exact locations: file.py:123-145

    Token Efficiency

    • Overview tools use ~500 tokens vs. ~5000 for full file
    • Targeted symbol reads use ~200 tokens per symbol
    • Pattern search with head_limit=20 caps results
    • Use depth=0 if you don't need child symbols

    Example Session

    # 1. Find auth-related files
    files = find_file(file_mask="*auth*.py", relative_path="src")
    # → Found: src/auth/handler.py, src/auth/middleware.py
    
    # 2. Get overview of main handler
    overview = get_symbols_overview(relative_path="src/auth/handler.py")
    # → Classes: AuthHandler
    # → Functions: authenticate_user, validate_token
    
    # 3. Read specific method
    method = find_symbol(
        name_path_pattern="AuthHandler/authenticate_user",
        relative_path="src/auth/handler.py",
        include_body=true
    )
    # → Got full implementation of authenticate_user
    
    # 4. Find who calls this
    refs = find_referencing_symbols(
        name_path="authenticate_user",
        relative_path="src/auth/handler.py"
    )
    # → Called from: middleware.py:67, api/routes.py:123
    
    Recommended Servers
    Vercel Grep
    Vercel Grep
    Blockscout MCP Server
    Blockscout MCP Server
    DeepWiki
    DeepWiki
    Repository
    seangsisg/crispy-claude
    Files