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.md
source content

Check Barrel Files Command

Check for redundant barrel files (index.ts) that only re-export a single item.

Arguments

  • $ARGUMENTS
    - The library path to check (e.g.,
    libs/mxsecurity/account-page
    )

Problem Description

Redundant barrel files are

index.ts
files that:

  1. Only contain a single
    export * from './xxx'
    statement
  2. 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:

  1. Read the file content
  2. Count the number of export statements
  3. 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
    index.ts
    that also only exports one item

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)

FileExport CountReason
domain/src/index.ts
5Multiple 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