Claude-skill-registry Codebase Organizer
Monitor and refactor large files into smaller, AI-friendly modules. Use when user asks to check file sizes, split large files, or organize the codebase. Ensures tests pass before and after refactoring.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/codebase-organizer" ~/.claude/skills/majiayu000-claude-skill-registry-codebase-organizer && rm -rf "$T"
skills/data/codebase-organizer/SKILL.mdCodebase Organizer
Maintain optimal file sizes for AI-assisted development by splitting large files into focused modules.
Quick Start
Most common usage:
# Check file sizes make report-file-sizes # If files >800 lines found: # 1. Analyze structure # 2. Plan split # 3. Execute with test validation
When to Use This Skill
Invoke when user says:
- "Check file sizes" / "report file sizes"
- "Split this file" / "refactor large file"
- "Organize the codebase"
- "Make files AI-friendly"
File Size Targets
| Size | Status | Action |
|---|---|---|
| 200-500 lines | Sweet spot | None needed |
| 500-800 lines | Acceptable | Consider splitting |
| >800 lines | CRITICAL | Must split |
Workflow
Step 1: Status Check
# Find all large files make report-file-sizes # Or manually: find internal -name "*.go" -exec wc -l {} \; | awk '$1 > 500 {print}' | sort -rn
Output format:
=== File Size Report === CRITICAL (>800 lines): internal/types/typechecker_core.go: 2736 lines internal/parser/parser.go: 2518 lines WARNING (500-800 lines): internal/eval/eval_core.go: 765 lines
Step 2: Plan the Split
Before ANY refactoring:
-
Run baseline tests:
make test -
Identify natural boundaries:
- Expression parsing vs statement parsing
- Type inference vs type checking
- Different AST node types
- Public API vs internal helpers
-
Plan file names (match to primary functions):
→expressions.go
,parseExpression()parseCall()
→statements.go
,parseStatement()parseLetDecl()
→ utility functionshelpers.go
-
Check for circular dependency risks
Step 3: Execute Split
# 1. Create new files with clear names # 2. Move related functions together (maintain cohesion) # 3. Update imports in all affected files # 4. Keep main struct in pkg.go
Keep together:
- Tightly coupled functions
- Helper functions used by one main function
- Functions that share complex state
Step 4: Validate
# MUST run after every split make test # All tests must pass make lint # No linting errors make check-file-sizes # Verify all <800 lines
If tests fail:
- DO NOT COMMIT
- Analyze failure (missing import? broken reference?)
- Fix issue
- Re-run tests
- Only commit when tests pass
Step 5: Document & Commit
Update package documentation:
// Package parser implements AILANG source code parsing. // // # Architecture // // The parser is split into several files: // - parser.go: Main struct and entry points // - expressions.go: Expression parsing // - statements.go: Statement parsing
Commit with descriptive message:
git add internal/path/*.go git commit -m "Split path/file.go into N files (AI-friendly) - parser.go: Main struct (200 lines) - expressions.go: Expression parsing (450 lines) ..."
Error Handling
Circular Dependency
If split creates circular dependency:
- Identify cycle: File A imports B, File B imports A
- Solutions:
- Extract shared code to new file (e.g.,
)types.go - Use interfaces to break dependency
- Restructure to have one-way dependency
- Merge files if truly inseparable (<800 lines combined)
- Extract shared code to new file (e.g.,
Test Failures
Common issues after split:
- Missing import in new file
- Function moved but still referenced in old location
- Test file not updated to match new structure
Example Session
User: "Check codebase organization"
Response:
Running make report-file-sizes... === File Size Report === CRITICAL (>800 lines): internal/parser/parser.go: 2518 lines WARNING (500-800 lines): internal/eval/eval_core.go: 765 lines Recommendation: Split internal/parser/parser.go into ~6 focused files. Would you like me to analyze and propose a split plan?
User: "Yes, split parser.go"
Response:
Analyzing internal/parser/parser.go (2518 lines)... Proposed split: parser.go (200 lines) - Main struct, entry points expressions.go (450 lines) - Expression parsing statements.go (400 lines) - Declaration parsing types.go (300 lines) - Type annotation parsing patterns.go (350 lines) - Pattern parsing modules.go (300 lines) - Module system helpers.go (200 lines) - Utilities Proceed? Tests will run before and after.
Success Metrics
After refactoring:
- 0 files over 800 lines
- <5 files between 500-800 lines
- Average file size: 300-400 lines
- 100% test pass rate maintained
Important Reminders
- ALWAYS run tests before and after refactoring
- NEVER commit if tests fail
- One refactoring at a time (easier to debug)
- Show plan before executing (get user approval)
- Keep related functions together (maintain cohesion)