init

star 13

扫描当前项目的技术栈、目录结构和代码约定,自动生成 before-modify(修改前检查清单)和 project-structure(项目结构索引)两个 skills,帮助 Claude 在后续开发中保持代码风格一致、避免重复实现 (user)

yhy0 By yhy0 schedule Updated 12/29/2025

name: init description: 扫描当前项目的技术栈、目录结构和代码约定,自动生成 before-modify(修改前检查清单)和 project-structure(项目结构索引)两个 skills,帮助 Claude 在后续开发中保持代码风格一致、避免重复实现 (user)

初始化项目 Skills

为当前项目创建定制化的 Claude Code skills,帮助后续开发保持一致性。

执行流程

第一步:探测项目信息

自动分析以下内容:

1. 技术栈探测

检查文件判断技术栈:

  • pyproject.toml / requirements.txt → Python
  • package.json → Node.js/前端
  • go.mod → Go
  • Cargo.toml → Rust
  • pom.xml / build.gradle → Java

2. 框架探测

后端框架:

  • FastAPI / Flask / Django (Python)
  • Express / NestJS / Koa (Node.js)
  • Gin / Echo (Go)

前端框架:

  • Vue / React / Svelte
  • 检查 package.json 的 dependencies

ORM/数据库:

  • SQLAlchemy / Prisma / TypeORM / GORM

3. 目录结构分析

识别关键目录:

  • src/ / app/ / lib/ → 源代码
  • api/ / routes/ / routers/ → API 路由
  • models/ / entities/ / schemas/ → 数据模型
  • services/ / repositories/ → 业务逻辑
  • components/ / views/ / pages/ → 前端组件
  • tests/ / __tests__/ → 测试

4. 约定推断

从现有代码推断:

  • 命名风格:snake_case / camelCase / PascalCase
  • API 风格:RESTful / GraphQL
  • 分页参数名:page/page_size, offset/limit, cursor
  • 响应格式:{ items, total } / { data, meta }

5. 特殊情况处理

如果遇到以下情况,需要询问用户:

  • Monorepo 结构:询问要为哪个子项目生成 skills
  • 非标准目录结构:请用户指出关键文件位置
  • 多技术栈混合:确认主要技术栈

第二步:确认发现

向用户展示探测结果,询问是否准确,格式如下:

## 项目探测结果

**技术栈**: Python + Vue 3
**后端框架**: FastAPI + SQLAlchemy
**前端框架**: Vue 3 + TypeScript
**包管理**: uv (后端), pnpm (前端)

**关键文件位置**:
| 功能 | 路径 |
|------|------|
| 数据模型 | src/database/models.py |
| API 路由 | src/api/routers/ |
| 前端类型 | web/src/types/index.ts |

**发现的约定**:
- 表名前缀: gt_
- 分页参数: page, page_size
- 日期格式: YYYY-MM-DD

以上信息是否准确?需要补充或修正吗?

第三步:生成 Skills

用户确认后,在项目的 .claude/skills/ 目录下生成两个 skill:

1. before-modify/SKILL.md - 修改前检查流程

---
name: before-modify
description: 修改 {项目名} 项目代码前必须执行的检查流程,防止重复实现和风格不一致 (project)
---

# {项目名} 修改前检查

## 核心原则

修改任何代码前,必须先读取相关源文件,不要凭记忆或猜测。

## 检查清单

### 项目结构变化检查
如果发现以下情况,提醒用户运行 `/init-skills:update` 更新 skills:
- 新增了重要目录(如 `services/`、`utils/`、`components/` 等)
- 删除了目录或重要文件
- 引入或移除了框架/依赖
- 重构了代码结构(如文件位置变动)
- 本 skill 中记录的路径已不存在

### 添加/修改数据库字段时
1. 先读 `{数据模型路径}` 确认字段是否已存在
2. 检查现有命名风格(如:snake_case)
3. 如果涉及 API,同步检查类型定义文件

### 添加/修改 API 接口时
1. 先读 `{API路由路径}` 下对应路由文件
2. 检查前端 API 封装是否已有类似接口
3. 遵循现有分页和响应格式

### 添加工具函数时
先搜索项目是否已有类似实现:
| 功能类型 | 查找位置 |
|----------|----------|
| 通用工具 | {工具函数路径} |
| 类型定义 | {类型定义路径} |

## 常见错误示例

根据项目实际情况填写,例如:
- 不要新建日期格式化函数,项目已有 `{已有的日期工具路径}`
- 不要自定义分页逻辑,使用 `{已有的分页工具路径}`
- 不要重复定义 `{已有的类型}` 类型,已在 `{类型定义路径}` 中定义

2. project-structure/SKILL.md - 项目结构索引

---
name: project-structure
description: {项目名} 项目结构索引,指明各功能模块的源文件位置和项目约定 (project)
---

# {项目名} 项目结构

## 项目概述
{简要描述项目功能}

## 技术栈
- 后端: {后端技术栈}
- 前端: {前端技术栈}
- 数据库: {数据库}

## 文件位置索引

| 功能 | 路径 | 说明 |
|------|------|------|
| 数据模型 | {路径} | {说明} |
| API 路由 | {路径} | {说明} |
| 业务逻辑 | {路径} | {说明} |
| 前端组件 | {路径} | {说明} |
| 类型定义 | {路径} | {说明} |
| 工具函数 | {路径} | {说明} |
| 测试文件 | {路径} | {说明} |

## 项目约定

### 命名规范
- 文件命名: {规范}
- 变量命名: {规范}
- 数据库字段: {规范}

### API 规范
- 风格: {RESTful/GraphQL}
- 分页参数: {参数名}
- 响应格式: {格式}

## 运行命令

| 命令 | 说明 |
|------|------|
| {命令} | 启动开发服务器 |
| {命令} | 运行测试 |
| {命令} | 构建生产版本 |

第四步:输出确认

告知用户生成结果:

已生成项目级 skills:

.claude/skills/
├── before-modify/
│   └── SKILL.md      # 修改前检查流程
└── project-structure/
    └── SKILL.md      # 项目结构索引

重启 Claude Code 后,这些 skills 会自动生效。

设计原则

Skills 应该记录什么

记录

  • 去哪里查看(文件路径)
  • 遵循什么规则(约定)
  • 执行什么流程(检查清单)

不记录

  • 具体的字段列表
  • 详细的 API 参数
  • 会频繁变化的内容

为什么这样设计

Skills 记录 "规则和流程",不记录 "数据本身"

好处:

  • 项目代码变化时,skills 不需要同步更新
  • 强制开发者先读源文件,避免重复实现
  • 保持 skills 简洁稳定

适用场景

  • 项目开发到 demo 阶段,架构基本稳定
  • 需要多人协作或长期维护
  • 希望 Claude Code 遵循现有设计模式

注意事项

  • 生成的 skills 中 (project) 标记表示这是项目级 skill,仅在当前项目生效
  • 如果项目结构发生重大变化,可以运行 /init-skills:update 更新
  • 生成的模板中 {占位符} 需要根据实际探测结果替换为具体值
Install via CLI
npx skills add https://github.com/yhy0/init-skills --skill init
Repository Details
star Stars 13
call_split Forks 1
navigation Branch main
article Path SKILL.md
More from Creator