mcpField
F
file-organization

file-organization

github.com/blockmatic开发1212 次安装5 周前更新
代码仓库

关于 file-organization

file-organization 是一项技能,为 TypeScript 实现文件分组、目录命名、导入路径和公共 API 制定规范。它面向整理应用与包代码的开发者,强调内聚的索引文件以及服务器端和客户端运行时的边界。

主要功能

  1. 01按功能归组相关文件
  2. 02目录采用 kebab-case 命名
  3. 03应用内索引使用具名重新导出
  4. 04分开服务器端与客户端入口
  5. 05避免父级巨型导出和文件名冲突

适用场景

  1. 01整理同一功能的多个文件
  2. 02定义分组的 TypeScript 公共 API
  3. 03组织运行时不同的模块
  4. 04确定组内外文件的导入方式

MCP 相关

输入未说明其与 MCP 的集成方式。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/blockmatic/basilic-skills --skill file-organization

安装后在 Claude Code 中输入/file-organization确认已加载。

详细介绍

技能:文件组织

适用范围

  • 适用于:在应用和软件包中分组相关实现文件、index.ts 公共 API、导入路径、文件夹命名
  • 不适用于:Next.js 的 lucide 风格软件包导入优化、Fastify 路由结构或 Drizzle 架构设计

假设

  • 使用 TypeScript ESM,导入说明符中带 .js 扩展名
  • 目录名称采用 kebab-case
  • 应用本地分组索引使用命名再导出;如果文件夹是已发布的模块边界,软件包子路径可以使用 export *

原则

  • 一个文件夹用于分组同一关注点的 2+ 个实现文件
  • 当所有导出共享同一运行时,index.ts 就是该分组的公共 API
  • 在文件夹内省略文件夹名称前缀(oauth-google.ts → oauth/google.ts)
  • 在文件夹外导入分组(.../feature/index.js);在文件夹内直接导入同级文件
  • 单文件模块保持为文件;测试与实现文件放在一起
  • 运行时不同 → 使用包含命名入口文件的文件夹,不设统一索引

约束

必须
  • 文件夹名称使用 kebab-case
  • 应用本地分组索引使用命名再导出(避免使用 export * 的大型汇总文件)
  • 创建文件夹前解决基础名称冲突(auth.ts 与 auth/)
禁止
  • 添加父级大型汇总文件(lib/index.ts、components/ui/index.ts)
  • 创建 foo/foo.ts 并搭配一个简单的再导出索引
  • 在 Fastify 自动加载目录树(routes/、plugins/)中添加 index.ts
  • 当服务端和客户端模块使用不同运行时时,将它们统一到同一个索引中
应当
  • 保持分组索引精简且内聚(专注于一个功能领域)
  • 再导出会产生导入循环时,使用命名入口文件
  • 优先使用现有软件包子路径,而非新增根级汇总文件

交互

  • 与 next-v16 互补(汇总导入优化 ≠ 功能分组索引)
  • 与 typescript-v6 互补(ESM 路径、命名导出)
  • 仓库规则如有例外规定(catalogs mapper、Drizzle 架构索引),则以仓库规则为准

模式

分组索引(相同运行时)
oauth/
  shared.ts
  google.ts
  index.ts    # named re-exports only

使用方:import { getOAuthAllowedCallbackUrls } from '../lib/oauth/index.js'

拆分运行时(无统一索引)
logger/
  server.ts
  client.ts
  # no index.ts

使用方直接导入命名入口文件(logger/server、logger/client)。

命名入口(避免循环)
catalogs/
  index.ts      # dictionaries only
  mapper.ts     # imports from ./index.js — not re-exported

反模式

模式原因
同一级别堆满带前缀的文件难以浏览;应使用文件夹
lib/index.ts 再导出所有内容大型汇总文件;会拖慢构建并模糊边界
auth.ts 与 auth/ 并存容易引发模块解析问题
将 cookies 与 document 放在统一索引中会破坏服务端/客户端边界

评论

支持 Markdown