Code Structure Exploration Tools
Always invoke extracting-code-structure skill to extract file structure - do not execute bash commands directly.
Recognizing Structure Questions
These keywords mean use structure tools, NOT grep/search:
- •"all the methods/functions/classes in..."
- •"list of function signatures"
- •"what functions/exports/API..."
- •"package API" or "module exports"
- •"method signatures with receivers" (Dart/Flutter, TypeScript)
- •"what's available in..."
These keywords mean use search (Grep tool or extracting-code-structure skill):
- •"where is X defined"
- •"find calls to X"
- •"search for pattern Y"
Before You Choose a Tool
Ask yourself:
- •Am I listing/exploring what exists? → Structure tools
- •Am I finding WHERE something is? → Search tools (Grep or ast-grep)
- •Am I understanding HOW something works? → Read
When to Get File Outline vs Read
Get outline/index when:
- •File is large (>500 lines)
- •Need to see what's available (functions, classes, exports)
- •Exploring unfamiliar code
- •Want to decide what to read in detail
- •Saves 90%+ context vs reading entire file
Just use Read when:
- •File is small (<500 lines)
- •Already know what you're looking for
- •Need to understand implementation details
- •extracting-code-structure pattern already targets what you need
Anti-Patterns
DON'T use grep/rg/Grep tool for:
- •Extracting function/method lists
- •Getting API overviews
- •Finding all exports/public members
- •Getting signatures/interfaces
These are STRUCTURE queries, not SEARCH queries.
Default Strategy
Invoke extracting-code-structure skill for extracting file structure (functions, classes, exports) efficiently without reading entire files.
Use ast-grep patterns, Dart/Flutter analyzer, ctags, or language-specific tools to get outlines and signatures. Dart/Flutter and JavaScript/TypeScript support have highest priority.
Exploration Strategy
Tiered approach (try in order):
- •
ast-grep with known patterns - Fast, targeted (highest priority)
- •Extract exports, functions, classes with specific patterns
- •See code structure guide for patterns, including comprehensive Dart/Flutter support
- •
Toolchain-specific approaches - When available
- •Dart/Flutter analyzer - Comprehensive structure extraction for .dart files
- •See code structure guide for Dart/Flutter patterns
- •ctags/universal-ctags: Symbol index across languages
- •See code structure guide for examples
- •Dart/Flutter analyzer - Comprehensive structure extraction for .dart files
- •
Read file - Last resort for exploration
- •Sometimes necessary to understand structure
Key Principle
Use structure tools to decide what to read, then read selectively.
Don't read 1000-line files blind. Get an outline first, then read the 50 lines you actually need.
Skill Combinations
For Discovery and Exploration
- •extracting-code-structure → fd: Find files of a specific type, then get structure
- •extracting-code-structure → ripgrep: Understand structure, then search for specific patterns
- •extracting-code-structure → analyzing-code-structure: Get outline, then perform structural refactoring
- •extracting-code-structure → jq/yq: Understand API structures before extracting data
In Refactoring Workflows
- •extracting-code-structure → fzf → analyzing-code-structure: Interactive selection of components to refactor
- •extracting-code-structure → ripgrep → sd: Find patterns and perform replacements
For Documentation and Analysis
- •extracting-code-structure → tokei: Get statistics for specific code components
- •extracting-code-structure → bat: View structure with syntax highlighting
Multi-Skill Workflows
- •extracting-code-structure → ripgrep → analyzing-code-structure → bat: Complete code analysis and refactoring pipeline
- •extracting-code-structure → fd → jq/yq: Find and analyze configuration structures
- •extracting-code-structure → fzf → sd: Interactive selection and modification of code elements
Integration Examples
# Get structure and find all methods
ast-grep -r 'function $FUNC($$$ARGS) {$$$BODY}' src/ | fzf | cut -d: -f1 | xargs -I {} bat {}
# Understand API and extract usage
yq '.endpoints' api.yml | fzf | ripgrep -A 10 -B 5
Detailed Patterns
For language-specific extraction patterns, ast-grep examples, ctags usage, and integration strategies, load code structure guide when needing:
- •Dart/Flutter specific patterns and analyzer usage
- •Language-specific extraction strategies
- •ctags configuration and usage
- •Comprehensive workflow examples
- •Tool selection guidance for different languages