skills/forge-town/skills/barrel-export

barrel-export

SKILL.md

桶导出操作工具

任务目标

本 Skill 用于自动生成、优化、修复和检查桶导出文件,确保所有 index 文件都遵循统一的规范:

  • 核心原则:所有 index 文件(index.ts / index.js)都必须遵循桶导出规范
  • 自动生成符合规范的 index.ts 文件
  • 修复不符合规范的导出
  • 检查导出规范并生成报告

触发条件

当用户提出以下需求时触发本 Skill:

核心原则:所有 index 文件(index.ts / index.js)都必须遵循桶导出规范。

场景 1:自动生成/优化/修复桶导出文件

  • "生成桶导出"
  • "优化桶导出"
  • "修复桶导出"
  • "修复 index.ts"
  • "生成 index.ts"
  • "更新桶导出"

场景 2:检查导出规范

  • "检查导出是否符合规范"
  • "检查 index.ts"
  • "验证桶导出"
  • "检查导出文件"

操作步骤

场景 1:自动生成/优化/修复桶导出文件

步骤 1:确认目标目录

默认锁定当前目录(.)作为操作对象。如果用户指定了目录,则使用指定目录。

步骤 2:扫描当前目录文件

使用系统命令扫描当前目录下的所有文件:

# 列出所有文件
ls -1

# 或扫描特定扩展名
ls -1 *.ts *.tsx *.js *.jsx 2>/dev/null

识别合法的源文件类型:

  • .ts(TypeScript)
  • .tsx(TypeScript + JSX)
  • .js(JavaScript)
  • .jsx(JavaScript + JSX)

步骤 3:应用过滤规则

排除以下文件类型:

  • index.ts / index.js(桶导出文件本身)
  • *.test.*(测试文件,如 Button.test.tsx
  • *.spec.*(规格文件,如 format.spec.ts
  • *.stories.*(Storybook 文件,如 Button.stories.tsx
  • *.d.ts(声明文件,如 global.d.ts

步骤 4:应用 _store 特殊规则

判断当前目录是否为 _store 目录:

  • 如果是 _store 目录:只导出 store.ts/store.jsprovider.ts/provider.js
  • 如果是其他目录:导出所有合法文件

步骤 5:生成导出语句

为每个合法模块生成导出语句:

统一格式

export * from './模块名';

要求

  • 使用 export * from 语法
  • 使用相对路径 ./
  • 按字母顺序排序
  • 保持文件名大小写与实际文件一致

步骤 6:写入或更新 index.ts

如果 index.ts 不存在: 创建新文件,写入生成的导出语句

如果 index.ts 已存在

  1. 读取现有 index.ts 内容
  2. 对比现有导出和新生成的导出
  3. 如果不一致,更新文件

步骤 7:验证结果

检查以下内容:

  • ✅ 所有合法模块已导出
  • ✅ 无效/重复导出已删除
  • _store 特殊规则已应用(如适用)
  • ✅ 导出格式统一且按字母排序
  • ✅ 文件名大小写与实际文件一致
  • ✅ 无"找不到模块"错误

场景 2:检查导出规范

步骤 1:确认目标目录

与用户确认要检查的目录路径。如果未指定,默认使用当前目录(.)。

步骤 2:检查 index.ts 是否存在

使用系统命令检查目标目录下是否存在 index.ts 文件:

ls -la index.ts
  • 如果不存在:报告错误,建议先生成 index.ts
  • 如果存在:继续执行后续检查

步骤 3:读取并解析 index.ts

使用 read_file 工具读取 index.ts 的完整内容,解析每一行导出语句。

步骤 4:扫描目录文件

使用系统命令扫描当前目录下的所有文件:

ls -1 *.ts *.tsx *.js *.jsx 2>/dev/null

识别合法的源文件类型:

  • .ts(TypeScript)
  • .tsx(TypeScript + JSX)
  • .js(JavaScript)
  • .jsx(JavaScript + JSX)

步骤 5:执行核心检查项

执行以下检查:

检查项 1:文件存在性检查

  • 检查 index.ts 文件是否存在

检查项 2:导出格式规范检查

  • 检查所有导出语句是否使用 export * from 格式
  • 检查是否有 export defaultexport { } 等不规范格式

检查项 3:排序检查

  • 检查导出语句是否按模块名字母顺序排序

检查项 4:重复导出检查

  • 检查是否存在重复的模块导出

检查项 5:导出有效性检查

  • 检查每个导出的模块是否在目录中实际存在
  • 检查文件名大小写是否匹配

检查项 6:排除规则检查

  • 检查是否导出了应排除的文件:
    • *.test.*(测试文件)
    • *.spec.*(规格文件)
    • *.stories.*(Storybook 文件)
    • *.d.ts(声明文件)

检查项 7:_store 特殊规则检查

  • 如果目录名为 _store,检查是否只导出 storeprovider

步骤 6:生成检查报告

按照以下格式生成详细的检查报告:

=== 桶导出规范检查报告 ===

📁 检查目录: <目录路径>

📊 统计信息
- 导出模块总数: X
- 问题总数: X

✅ 检查通过: <数量>
❌ 检查失败: <数量>

---

详细检查结果

1. 文件存在性检查
   ✅ 通过 / ❌ 失败
   说明: <详细说明>

2. 导出格式规范检查
   ✅ 通过 / ❌ 失败
   说明: <详细说明>
   问题列表: <如有问题,列出所有问题>

...

---

💡 修复建议
<如有问题,提供修复建议>

🎯 总体评价
✅ 完全符合规范 / ⚠️ 部分符合规范 / ❌ 不符合规范

步骤 7:提供修复建议

对于每个失败的检查项,提供具体的修复建议。

注意事项

核心原则

所有 index 文件(index.ts / index.js)都必须遵循桶导出规范

无论目录类型、文件数量、项目规模如何,只要存在 index 文件,就必须:

  1. 使用统一格式export * from './模块名';
  2. 按字母顺序排序:导出语句按模块名字母顺序排列
  3. 排除不应导出的文件:test、spec、stories、d.ts 等文件不导出
  4. 遵循 _store 特殊规则:如果是 _store 目录,只导出 storeprovider
  5. 确保导出有效性:所有导出的模块必须实际存在

使用原则

  • 桶导出文件仅负责导出,不包含任何业务逻辑
  • 支持目录路径和文件路径输入,文件路径会自动定位到所在目录
  • _store 目录的桶导出只导出 storeprovider,其他文件不应暴露
  • 文档前后描述必须保持一致,避免歧义
  • 强制遵循规范:所有 index 文件都必须符合桶导出规范,无例外
Weekly Installs
18
GitHub Stars
1
First Seen
Feb 9, 2026
Installed on
codex18
gemini-cli17
github-copilot17
amp17
kimi-cli17
opencode17