Map source file structure into navigable sections with line ranges and summaries for efficient agent navigation
Scanned 9/3/2026
Install to Claude Code
npx -y skills add jmagly/aiwg --skill code-chunker --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Code Chunker?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jmagly-code-chunker-aiwg)More formats (shields.io, HTML) on the badges page.
---
namespace: aiwg
name: code-chunker
platforms: [all]
description: Map source file structure into navigable sections with line ranges and summaries for efficient agent navigation
---
# code-chunker
Analyze a source file's structure and produce a navigable map with logical sections, line ranges, and summaries for efficient agent navigation.
## Triggers
Alternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):
- "map this file" → structural chunking for navigation
- "chunk for navigation" → file structure mapping
## Purpose
Agents encounter large files they cannot immediately refactor — third-party code, generated code, legacy files awaiting decomposition. Without a structural map, agents must read the entire file to find relevant sections, wasting context window space.
The code-chunker produces a "table of contents" for source files, enabling agents to read only the sections they need. The doc-splitter does this for documentation; code-chunker does it for source code.
This skill complements `/decompose-file` — chunker maps files for navigation, decomposer splits them permanently.
## Behavior
When triggered, this skill:
1. **Parse file structure**:
- Detect language from file extension
- Identify top-level declarations (functions, classes, interfaces, types, constants)
- Group related declarations into logical sections
- Calculate line ranges for each section
2. **Generate section summaries**:
- For each section, produce a one-line description of its purpose
- Count key elements (imports, exports, methods, functions)
- Note dependencies between sections
3. **Produce navigable map**:
- Output structured map with section names, line ranges, and summaries
- Include quick-reference commands for reading specific sections
- Provide grep suggestions for common navigation needs
4. **Cache map** (optional):
- Store generated map in `.aiwg/working/code-maps/` for reuse during the session
- Invalidate cache when file modification time changes
## File Map Format
```
File Map: src/extensions/registry.ts (847 lines)
Sections:
1. Imports and type definitions (lines 1-45)
— 12 imports, 3 type aliases, 1 interface
2. ExtensionRegistry class (lines 47-320)
2a. constructor() — initializes registry with providers (lines 47-85)
2b. register() — registers an extension by type and name (lines 87-145)
2c. lookup() — finds extension by name or capability (lines 147-210)
2d. listByType() — returns all extensions of a given type (lines 212-260)
2e. unregister() — removes an extension from registry (lines 262-320)
3. Validation functions (lines 322-480)
3a. validateExtension() — checks required fields and types (lines 322-390)
3b. validateManifest() — validates manifest.json schema (lines 392-440)
3c. checkDependencies() — resolves and validates dependency tree (lines 442-480)
4. Discovery helpers (lines 482-620)
4a. discoverExtensions() — scans directories for extensions (lines 482-540)
4b. globForType() — finds files matching extension type patterns (lines 542-590)
4c. resolveExtensionPath() — resolves relative paths to absolute (lines 592-620)
5. Deployment logic (lines 622-847)
5a. deployToProvider() — deploys extension to a platform provider (lines 622-720)
5b. buildProviderConfig() — generates provider-specific config (lines 722-790)
5c. writeDeploymentFiles() — writes files to provider directories (lines 792-847)
Quick Commands:
Read lines 87-145 → register() method
Read lines 322-390 → validateExtension()
Read lines 622-720 → deployToProvider()
Grep "register" → 14 matches across sections 2, 3
Grep "deploy" → 8 matches in section 5
```
## Arguments
| Argument | Required | Default | Description |
|----------|----------|---------|-------------|
| `<file-path>` | Yes | — | File to map |
| `--depth <level>` | No | function | Granularity: `function`, `class`, `block` |
| `--format <type>` | No | map | Output: `map`, `json`, `tree` |
| `--section <n>` | No | — | Read a specific section immediately |
| `--cache` | No | true | Cache map for session reuse |
## Depth Levels
### Function (default)
Maps individual functions and methods:
```
2b. register() — registers an extension (lines 87-145)
```
### Class
Maps at class/module level only:
```
2. ExtensionRegistry class (lines 47-320) — 5 methods, 274 lines
```
### Block
Maps at code block level (most granular):
```
2b-i. register() parameter validation (lines 87-95)
2b-ii. register() type checking (lines 96-120)
2b-iii. register() storage and indexing (lines 121-145)
```
## Output Formats
### Map (default)
Human-readable section listing with line ranges and summaries. See File Map Format above.
### JSON
```json
{
"file": "src/extensions/registry.ts",
"loc": 847,
"language": "typescript",
"sections": [
{
"id": "1",
"name": "Imports and type definitions",
"start": 1,
"end": 45,
"summary": "12 imports, 3 type aliases, 1 interface",
"children": []
},
{
"id": "2",
"name": "ExtensionRegistry class",
"start": 47,
"end": 320,
"summary": "Main registry class with 5 methods",
"children": [
{
"id": "2a",
"name": "constructor()",
"start": 47,
"end": 85,
"summary": "Initializes registry with providers"
}
]
}
]
}
```
### Tree
```
src/extensions/registry.ts (847 lines)
├── Imports and types (1-45)
├── ExtensionRegistry (47-320)
│ ├── constructor() (47-85)
│ ├── register() (87-145)
│ ├── lookup() (147-210)
│ ├── listByType() (212-260)
│ └── unregister() (262-320)
├── Validation (322-480)
│ ├── validateExtension() (322-390)
│ ├── validateManifest() (392-440)
│ └── checkDependencies() (442-480)
├── Discovery (482-620)
│ ├── discoverExtensions() (482-540)
│ ├── globForType() (542-590)
│ └── resolveExtensionPath() (592-620)
└── Deployment (622-847)
├── deployToProvider() (622-720)
├── buildProviderConfig() (722-790)
└── writeDeploymentFiles() (792-847)
```
## Language Detection
| Extension | Language | Parsing Strategy |
|-----------|----------|-----------------|
| `.ts`, `.tsx` | TypeScript | `export`, `class`, `function`, `interface`, `type`, `const` declarations |
| `.js`, `.jsx`, `.mjs` | JavaScript | `export`, `class`, `function`, `const` declarations |
| `.py` | Python | `class`, `def`, top-level assignments, decorators |
| `.go` | Go | `func`, `type`, `var`, `const` blocks |
| `.rs` | Rust | `fn`, `struct`, `impl`, `mod`, `enum`, `trait` |
| `.java` | Java | `class`, `interface`, `enum`, method declarations |
| Other | Heuristic | Blank lines, comment blocks, indentation patterns |
## Usage Examples
### Basic File Map
```
User: "map src/extensions/registry.ts"
Skill produces the navigable map showing 5 sections with line ranges.
Agent can then read only the section needed:
"Read lines 87-145 of src/extensions/registry.ts"
```
### Section Navigation
```
User: "/code-chunker src/extensions/registry.ts --section 3"
Skill:
1. Generates map (or uses cached version)
2. Immediately reads and displays section 3 (Validation functions, lines 322-480)
Output: Full content of lines 322-480 with the map as header context.
```
### JSON for Agent Consumption
```
User: "/code-chunker src/large-file.py --format json"
Skill produces JSON map that another agent or script can consume
to programmatically navigate the file.
```
### Auto-Trigger on Large File Read
When an agent attempts to read a file over 300 lines, the code-chunker can be
invoked automatically to provide a map first:
```
Agent reads src/legacy/monolith.ts (920 lines)
→ Auto-chunk: "File is 920 lines. Here's the structure map.
Which section do you need?"
```
## Integration
This skill uses:
- `agent-friendly-code` rule: Threshold for when to suggest chunking
- `rlm-context-management` rule: Aligns with Rule 2 (programmatic access over full-context loading)
- `/decompose-file` skill: Chunker maps → decomposer splits permanently
- `/codebase-health` command: Identifies files that benefit from chunking
## Output Locations
- Cached maps: `.aiwg/working/code-maps/{filename}-map.json`
## References
- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/rules/agent-friendly-code.md — Thresholds triggering chunker use
- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/skills/decompose-file/SKILL.md — Permanent splitting
- @$AIWG_ROOT/agentic/code/frameworks/sdlc-complete/commands/codebase-health.md — File size scanning
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!