Analyze Bundle
Documentsanalyze-bundleAnalyze Bundle is an Agent Skill for documents published in the vercel-labs/dev3000 repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Convert Next.js bundle analyzer data to NDJSON and explore it
QUICK START
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Prompt to paste
Inspect the Agent Skill at https://github.com/vercel-labs/dev3000/blob/HEAD/.agents/skills/analyze-bundle/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/analyze-bundle, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
analyze-to-ndjson
Converts Next.js bundle analyzer binary .data files into grep/jq-friendly NDJSON.
Analyze artifacts
This workflow pre-generates analyzer artifacts in:
.next/diagnostics/analyze/ndjson/routes.ndjson.next/diagnostics/analyze/ndjson/sources.ndjson.next/diagnostics/analyze/ndjson/output_files.ndjson.next/diagnostics/analyze/ndjson/module_edges.ndjson.next/diagnostics/analyze/ndjson/modules.ndjson
Focus on reading these files and using their evidence to prioritize changes.
Output files
| File | What's in it |
|---|---|
modules.ndjson | Global module registry (id, ident, path) |
module_edges.ndjson | Module dependency graph (from, to, kind: sync/async) |
sources.ndjson | Per-route source tree with sizes and environment flags |
chunk_parts.ndjson | Granular size data: one line per (source, output_file) pair |
output_files.ndjson | Per-route output files with aggregated sizes |
routes.ndjson | Route-level summaries |
Browsing the output
Route overview
jq -s 'sort_by(-.total_compressed_size)' .next/diagnostics/analyze/ndjson/routes.ndjson
Find large sources
jq -s '
group_by(.full_path)
| map(max_by(.compressed_size))
| sort_by(-.compressed_size)
| .[0:10]
| .[] | {full_path, compressed_size, size, route}
' .next/diagnostics/analyze/ndjson/sources.ndjson
Client-side JS
grep '"client":true' .next/diagnostics/analyze/ndjson/sources.ndjson \
| grep '"js":true' \
| jq -s 'sort_by(-.compressed_size) | .[0:10] | .[] | {full_path, compressed_size}'
Module dependencies
grep '"from":42,' .next/diagnostics/analyze/ndjson/module_edges.ndjson | jq .to
grep '"to":42,' .next/diagnostics/analyze/ndjson/module_edges.ndjson | jq .from
grep 'react-dom' .next/diagnostics/analyze/ndjson/modules.ndjson | jq '{id, path}'
Output files for a route
grep '"route":"/"' .next/diagnostics/analyze/ndjson/output_files.ndjson \
| jq -s 'sort_by(-.total_compressed_size) | .[0:10] | .[] | {filename, total_compressed_size, num_parts}'
Directory tree for a route
grep '"route":"/"' .next/diagnostics/analyze/ndjson/sources.ndjson \
| jq 'select(.parent_id == null)'