Macro to Micro: Structural Codebase Mastery
This is a higher-order orchestrator skill that formalizes the "Macro to Micro" toolchain. It teaches you how and when to hand off context between three powerful semantic tools:
- Codemap (The Macro View): Treats code as a graph of files.
- LSP Code Analysis (The Meso View): Treats code as a graph of symbols.
- AST Grep (The Micro View): Treats code as syntax trees.
The Articulation Strategy
Do not blindly use grep_search or read_file on large unfamiliar codebases. Follow this hand-off chain:
- Identify the Blast Radius (Codemap)
- Find the files that matter and their dependencies.
- Output: A list of target files and "hub" files (highly imported files that are dangerous to change).
- Trace the Logic (LSP)
- Take the files from step 1 and use
lsp referenceandlsp definitionto understand exactly how data flows between them. - Output: An understanding of the exact semantic contract (function signatures, usages) that needs to be altered.
- Take the files from step 1 and use
- Execute the Transformation (AST Grep)
- Take the semantic understanding from step 2 and use
sg runto perform a surgical, syntax-aware rewrite across all affected files simultaneously.
- Take the semantic understanding from step 2 and use
Reference Workflows
Detailed recipes for specific scenarios are available in the references:
- references/workflows.md: Step-by-step guides for the "Safe Hub Refactor" and the "Mystery Bug Hunt".
Core Principles
- Never skip the Macro step: If you are asked to change a "core" or "utils" file, use Codemap to check its fan-out first.
- Never use
sedfor code: If you need to rename a parameter across 20 files, use AST Grep or LSP Rename. Text replacement destroys comments and strings. - Don't read massive files: If a file is 2,000 lines long, use
lsp outlineto see its structure before blindly jumping in.
Safe Refactoring Checklist
Before executing any structural refactor (safe rename or move):
-
codemap --deps .— understand the full dependency graph - Identify hub files in scope — they need extra care
-
codemap --diff— see what's already changed on this branch - All tests pass before starting
Safe rename pattern
- Add the new name alongside the old (alias or wrapper)
- Update all callers to use the new name
- Remove the old name
- Full test suite
Safe move pattern
- Create new file with the same public API
- Re-export from old location temporarily
- Update all importers to use the new path
- Remove old file and re-export