# Extracting Code Structure

> Use when listing all methods, functions, or classes in a file, exploring unfamiliar code, getting API overviews, or deciding what to read selectively without loading entire files

- Skill: `sebastiendegodez/extracting-code-structure` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add sebastiendegodez/extracting-code-structure`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sebastiendegodez/extracting-code-structure/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: SebastienDegodez (https://skillmd.com/u/sebastiendegodez)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sebastiendegodez/extracting-code-structure

---


# 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:
1. Am I listing/exploring what exists? → Structure tools
2. Am I finding WHERE something is? → Search tools (Grep or ast-grep)
3. 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):**

1. **ast-grep with known patterns** - Fast, targeted (highest priority)
   - Extract exports, functions, classes with specific patterns
   - See [code structure guide](./reference/code-structure-guide.md) for patterns, including comprehensive Dart/Flutter support

2. **Toolchain-specific approaches** - When available
   - **Dart/Flutter analyzer** - Comprehensive structure extraction for .dart files
     - See [code structure guide](./reference/code-structure-guide.md) for Dart/Flutter patterns
   - **ctags/universal-ctags:** Symbol index across languages
   - See [code structure guide](./reference/code-structure-guide.md) for examples

3. **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 → finding-files**: Find files of a specific type, then get structure
- **extracting-code-structure → searching-text**: Understand structure, then search for specific patterns
- **extracting-code-structure → analyzing-code-structure**: Get outline, then perform structural refactoring
- **extracting-code-structure → querying-json/querying-yaml**: Understand API structures before extracting data

### In Refactoring Workflows
- **extracting-code-structure → fuzzy-selecting → analyzing-code-structure**: Interactive selection of components to refactor
- **extracting-code-structure → searching-text → replacing-text**: Find patterns and perform replacements

### For Documentation and Analysis
- **extracting-code-structure → analyzing-code**: Get statistics for specific code components
- **extracting-code-structure → viewing-files**: View structure with syntax highlighting

### Multi-Skill Workflows
- **extracting-code-structure → searching-text → analyzing-code-structure → viewing-files**: Complete code analysis and refactoring pipeline
- **extracting-code-structure → finding-files → querying-json/querying-yaml**: Find and analyze configuration structures
- **extracting-code-structure → fuzzy-selecting → replacing-text**: Interactive selection and modification of code elements

### Integration Examples
```bash
# 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](./reference/code-structure-guide.md) 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

