Claude-skill-registry check-barrel-files
Check for redundant barrel files (index.ts) that only re-export a single item.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/check-barrel-files" ~/.claude/skills/majiayu000-claude-skill-registry-check-barrel-files && rm -rf "$T"
manifest:
skills/data/check-barrel-files/SKILL.mdsource content
Check Barrel Files Command
Check for redundant barrel files (index.ts) that only re-export a single item.
Arguments
- The library path to check (e.g.,$ARGUMENTS
)libs/mxsecurity/account-page
Problem Description
Redundant barrel files are
index.ts files that:
- Only contain a single
statementexport * from './xxx' - Are intermediate files that add no value
Bad Pattern
libs/scope/domain/features/src/ ├── index.ts # exports from './lib/my-dialog' └── lib/ └── my-dialog/ ├── index.ts # Redundant: only exports './my-dialog.component' └── my-dialog.component.ts
Good Pattern
libs/scope/domain/features/src/ ├── index.ts # exports from './lib/my-dialog/my-dialog.component' └── lib/ └── my-dialog/ └── my-dialog.component.ts # No intermediate barrel file
Check Process
Step 1: Find All index.ts Files
Find all
index.ts files in the target path:
find {$ARGUMENTS} -name "index.ts" -type f
Step 2: Analyze Each Barrel File
For each
index.ts file found:
- Read the file content
- Count the number of export statements
- If only ONE export exists, check if it exports from a folder (barrel) or a file
Step 3: Identify Redundant Barrels
A barrel file is redundant if:
- It contains only ONE export statement
- The export is
export * from './folder-name' - The target folder has its own
that also only exports one itemindex.ts
Step 4: Generate Report
Output a markdown report:
# Barrel File Check Report **Path:** {$ARGUMENTS} **Date:** {current_date} ## Summary | Total index.ts | Redundant | OK | |----------------|-----------|-----| | X | Y | Z | ## Redundant Barrel Files | File | Exports | Recommendation | |------|---------|----------------| | `lib/my-dialog/index.ts` | `./my-dialog.component` | Delete, update parent to export directly | ## Recommended Fixes ### 1. {path/to/redundant/index.ts} **Current:** ```typescript // src/index.ts export * from './lib/my-dialog'; // lib/my-dialog/index.ts export * from './my-dialog.component';
Recommended:
// src/index.ts export * from './lib/my-dialog/my-dialog.component'; // Delete: lib/my-dialog/index.ts
Valid Barrel Files (No Action Needed)
| File | Export Count | Reason |
|---|---|---|
| 5 | Multiple exports |
## Auto-Fix Option After showing the report, ask the user: > Found {N} redundant barrel files. Would you like me to fix them automatically? If user confirms, for each redundant barrel: 1. Update the parent `index.ts` to export directly from the component file 2. Delete the redundant `index.ts` file ## Examples ### Example 1: Simple Redundant Barrel
Before: features/src/index.ts → export * from './lib/account-dialog' features/src/lib/account-dialog/index.ts → export * from './account-dialog.component'
After: features/src/index.ts → export * from './lib/account-dialog/account-dialog.component' (deleted: features/src/lib/account-dialog/index.ts)
### Example 2: Valid Multi-Export Barrel (Keep)
domain/src/index.ts: export * from './lib/account-page.api'; export * from './lib/account-page.model'; export * from './lib/account-page.store';
→ This is valid, do not modify