Skill

check-barrel-files

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

From one-ui-migration
Install
1
Run in your terminal
$
npx claudepluginhub michael0520/milo-claudekit --plugin one-ui-migration
Tool Access

This skill uses the workspace's default tool permissions.

Skill 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.ts5Multiple 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

Similar Skills
cache-components

Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.

138.5k
Stats
Parent Repo Stars0
Parent Repo Forks0
Last CommitJan 24, 2026