Skill-style instructions that scan a codebase for patterns and generate or sync SKILL files under .claude/skills/ with real code examples.
Chinese original
==PROMPT==
---
name: skill-master
description: 发现代码库模式并自动生成 .claude/skills/ 目录下的 SKILL 文件。用于分析项目缺失的技能、根据代码库模式创建新技能或同步技能与项目结构。
version: 1.0.0
---
# Skill Master
## 概述
分析代码库以发现模式,并在 `.claude/skills/` 目录中生成/更新 SKILL 文件。支持多平台项目,具备特定技术栈的模式检测功能。
**功能:**
- 扫描代码库以识别架构模式(ViewModel、Repository、Room 等)
- 将检测到的模式与现有技能进行比较
- 自动生成包含真实代码示例的 SKILL 文件
- 版本跟踪与智能更新
## AI 如何发现并使用此技能
当用户执行以下操作时触发此技能:
- 要求分析项目以发现缺失的技能
- 请求根据代码库模式生成技能
- 希望同步或更新现有技能
- 提及“技能发现”、“生成技能”或“技能同步”
**检测信号:**
- `.claude/skills/` 目录的存在
- 项目结构与已知模式匹配
- 构建/配置文件指示平台(参见参考资料)
## 模式
### 发现模式
分析代码库并报告缺失的技能。
**步骤:**
1. 通过构建/配置文件检测平台(参见参考资料)
2. 扫描源代码根目录以查找模式指示器
3. 将检测到的模式与现有的 `.claude/skills/` 进行比较
4. 输出差距分析报告
**输出格式:**
```
Detected Patterns: {count}
| Pattern | Files Found | Example Location |
|---------|-------------|------------------|
| {name} | {count} | {path} |
Existing Skills: {count}
Missing Skills: {count}
- {skill-name}: {pattern}, {file-count} files found
```
### 生成模式
根据检测到的模式创建 SKILL 文件。
**步骤:**
1. 运行发现模式以识别缺失的技能
2. 对于每个缺失的技能:
- 找到 2-3 个代表性的源文件
- 提取:导入、注解、类结构、约定
- 如果存在,从 `.ruler/*.md` 中提取规则
3. 使用模板结构生成 SKILL.md
4. 添加版本和来源标记
**生成的 SKILL 结构:**
```yaml
---
name: {pattern-name}
description: {包含触发关键词的生成描述}
version: 1.0.0
---
# {标题}
## 概述
{基于模式分析的简要描述}
## 文件结构
{从代码库中提取}
## 实现模式
{真实代码示例 - 匿名化}
## 规则
### 应做
{来自 .ruler/*.md + 代码库约定}
### 不应做
{发现的反模式}
## 文件位置
{代码库中的实际路径}
```
## 创建策略
当目标 SKILL 文件不存在时:
1. 使用模板生成新文件
2. 在 frontmatter 中设置 `version: 1.0.0`
3. 包含所有必填部分
4. 在文件末尾添加来源标记(参见标记格式)
## 更新策略
**标记检查:** 在文件末尾查找 `<!-- Generated by skill-master command`。
**如果标记存在(后续运行):**
- 智能合并:保留自定义内容,添加缺失部分
- 版本递增:主版本(重大变更)/次版本(功能)/补丁(修复)
- 更新标记中的来源列表
**如果标记不存在(首次运行于现有文件):**
- 备份:`SKILL.md` → `SKILL.md.bak`
- 使用备份作为来源,提取相关内容
- 生成带有标记的新文件
- 设置 `version: 1.0.0`
## 标记格式
放置在生成的 SKILL.md 文件末尾:
```html
<!-- Generated by skill-master command
Version: {version}
Sources:
- path/to/source1.kt
- path/to/source2.md
- .ruler/rule-file.md
Last updated: {YYYY-MM-DD}
-->
```
## 平台参考资料
检测到平台时读取相关参考资料:
| Platform | Detection Files | Reference |
|----------|-----------------|-----------|
| Android/Gradle | `build.gradle`, `settings.gradle` | `references/android.md` |
| iOS/Xcode | `*.xcodeproj`, `Package.swift` | `references/ios.md` |
| React (web) | `package.json` + react | `references/react-web.md` |
| React Native | `package.json` + react-native | `references/react-native.md` |
| Flutter/Dart | `pubspec.yaml` | `references/flutter.md` |
| Node.js | `package.json` | `references/node.md` |
| Python | `pyproject.toml`, `requirements.txt` | `references/python.md` |
| Java/JVM | `pom.xml`, `build.gradle` | `references/java.md` |
| .NET/C# | `*.csproj`, `*.sln` | `references/dotnet.md` |
| Go | `go.mod` | `references/go.md` |
| Rust | `Cargo.toml` | `references/rust.md` |
| PHP | `composer.json` | `references/php.md` |
| Ruby | `Gemfile` | `references/ruby.md` |
| Elixir | `mix.exs` | `references/elixir.md` |
| C/C++ | `CMakeLists.txt`, `Makefile` | `references/cpp.md` |
| Unknown | - | `references/generic.md` |
如果检测到多个平台,则读取多个参考资料。
## 规则
### 应做
- 仅提取代码库中已验证的模式
- 使用真实代码示例(匿名化业务逻辑)
- 在描述中包含触发关键词
- 保持 SKILL.md 不超过 500 行
- 引用外部文件以获取详细内容
- 更新时保留自定义部分
- 首次修改前始终备份
### 不应做
- 包含密钥、令牌或凭据
- 包含业务特定逻辑细节
- 生成不含实际内容的占位符
- 覆盖用户自定义设置而不备份
- 创建深层引用链(最多1层)
- 在`.claude/skills/`目录外写入
## 内容提取规则
**从代码库中提取:**
- 提取:类结构、注解、导入模式、文件位置、命名约定
- 禁止:硬编码值、密钥、API密钥、个人身份信息
**从.ruler/*.md(如果存在):**
- 提取:做/不做规则、架构约束、依赖规则
## 输出报告
生成后打印:
```
技能生成报告
生成的技能数量:{count}
{技能名称} [已创建 | 已更新 | 已备份+创建]
├── 分析:{文件数量}个源文件
├── 来源:{源文件列表}
├── 规则来源:{如果有.ruler文件}
└── 输出:.claude/skills/{技能名称}/SKILL.md({行数}行)
验证:
✓ YAML前言有效
✓ 描述包含触发关键词
✓ 内容少于500行
✓ 包含必需章节
```
## 安全约束
- 禁止在`.claude/skills/`目录外写入
- 禁止删除内容而不备份
- 首次修改前始终备份
- 保留用户自定义设置
- 确定性:相同输入→相同输出
## 检测信号
- `CMakeLists.txt`
- `Makefile`, `makefile`
- `*.cpp`, `*.c`, `*.h`, `*.hpp`
- `conanfile.txt`, `conanfile.py` (Conan)
- `vcpkg.json` (vcpkg)
## 多模块信号
- 多个 `CMakeLists.txt` 带有 `add_subdirectory`
- 子目录中的多个 `Makefile`
- `lib/`, `src/`, `modules/` 目录
## 预生成源
- `CMakeLists.txt` (依赖项, 目标)
- `conanfile.*` (依赖项)
- `vcpkg.json` (依赖项)
- `Makefile` (构建目标)
## 代码库扫描模式
### 源码根目录
- `src/`, `lib/`, `include/`
### 层级/文件夹模式(如果存在则记录)
`core/`, `utils/`, `network/`, `storage/`, `ui/`, `tests/`
### 模式指标
| 模式 | 检测标准 | 技能名称 |
|---------|-------------------|------------|
| 类 | `class *`, `public:`, `private:` | cpp-class |
| 头文件 | `*.h`, `*.hpp`, `#pragma once` | header-file |
| 模板 | `template<`, `typename T` | cpp-template |
| 智能指针 | `std::unique_ptr`, `std::shared_ptr` | smart-pointer |
| RAII | 析构函数模式, `~*()` | raii-pattern |
| 单例 | `static *& instance()` | singleton |
| 工厂 | `create*()`, `make*()` | factory-pattern |
| 观察者 | `subscribe`, `notify`, 回调模式 | observer-pattern |
| 线程 | `std::thread`, `std::async`, `pthread` | threading |
| 互斥锁 | `std::mutex`, `std::lock_guard` | synchronization |
| 网络 | `socket`, `asio::`, `boost::asio` | network-cpp |
| 序列化 | `nlohmann::json`, `protobuf` | serialization |
| 单元测试 | `TEST(`, `TEST_F(`, `gtest` | gtest |
| Catch2 测试 | `TEST_CASE(`, `REQUIRE(` | catch2-test |
## 强制输出部分
如果检测到则包括:
- **核心模块**:主要功能
- **库**:内部库
- **头文件**:公共 API
- **测试**:测试组织
- **构建目标**:可执行文件, 库
## 命令源
- `CMakeLists.txt` 自定义目标
- `Makefile` 目标
- README/文档, CI
- 常见:`cmake`, `make`, `ctest`
- 仅包括仓库中存在的命令
## 关键路径
- `src/`, `include/`
- `lib/`, `libs/`
- `tests/`, `test/`
- `build/` (外部源码)
`controllers/`, `views/`, `channels/`, `contexts/`, `schemas/`, `workers/`
### 模式指示器
| 模式 | 检测标准 | 技能名称 |
|---------|-------------------|------------|
| Phoenix Controller | `use *Web, :controller`, `def index` | phoenix-controller |
| Phoenix LiveView | `use *Web, :live_view`, `mount/3` | phoenix-liveview |
| Phoenix Channel | `use *Web, :channel`, `join/3` | phoenix-channel |
| Ecto Schema | `use Ecto.Schema`, `schema "` | ecto-schema |
| Ecto Migration | `use Ecto.Migration`, `create table` | ecto-migration |
| Ecto Changeset | `cast/4`, `validate_required` | ecto-changeset |
| Context | `defmodule *Context`, `def list_*` | phoenix-context |
| GenServer | `use GenServer`, `handle_call` | genserver |
| Supervisor | `use Supervisor`, `start_link` | supervisor |
| Task | `Task.async`, `Task.Supervisor` | elixir-task |
| Oban Worker | `use Oban.Worker`, `perform/1` | oban-worker |
| Absinthe | `use Absinthe.Schema`, `field :` | graphql-schema |
| ExUnit Test | `use ExUnit.Case`, `test "` | exunit-test |
## 必填输出部分
如果检测到,请包含:
- **Controllers/LiveViews**: HTTP/WebSocket 处理程序
- **Contexts**: 业务逻辑
- **Schemas**: Ecto 模型
- **Channels**: 实时处理程序
- **Workers**: 后台任务
## 命令来源
- `mix.exs` 别名
- README/文档, CI
- 常见命令:`mix deps.get`, `mix test`, `mix phx.server`
- 仅包含仓库中存在的命令
## 关键路径
- `lib/*/`, `lib/*_web/`
- `priv/repo/migrations/`
- `test/`
- `config/`
| 配置 | `config.*`, `settings.*` | config-file |
| API 客户端 | `api/`, `client/`, HTTP 调用 | api-client |
| 模型 | `model/`, `types/`, 数据结构 | data-model |
| 服务 | `service/`, 业务逻辑 | service-layer |
| 工具 | `utils/`, `helpers/`, `common/` | utility-module |
| 测试 | `test/`, `tests/`, `*_test.*`, `*.test.*` | test-file |
| 脚本 | `scripts/`, `bin/` | script-file |
| 文档 | `docs/`, `*.md` | documentation |
## 必填输出部分
如果检测到,请包含:
- **项目结构**:主要目录
- **入口点**:主要文件
- **配置**:配置文件
- **依赖项**:任何包管理器
- **构建/运行命令**:来自 README/脚本
## 命令来源
- `README.md`(查找代码块)
- `Makefile`, `Taskfile.yml`
- `scripts/` 目录
- CI 工作流
- 仅包含仓库中存在的命令
## 关键路径
- `src/`, `lib/`
- `docs/`
- `scripts/`
- `config/`
## 注意事项
使用此通用参考时:
1. 扫描任何可识别的模式
2. 记录实际找到的项目结构
3. 如果可用,从 README 中提取命令
4. 注意文档中提到的任何技术
5. 保持输出简洁且基于事实
| 导航 | `NavigationStack`, `NavigationPath` | navigation-swiftui |
| Combine | `Publisher`, `AnyPublisher`, `sink` | combine-publisher |
| Async/Await | `async`, `await`, `Task {` | async-await |
| 单元测试 | `XCTestCase`, `func test*()` | xctest |
| UI 测试 | `XCUIApplication`, `XCUIElement` | xcuitest |
## 必填输出部分
如果检测到,请包含:
- **目标清单**:来自 pbxproj 的列表
- **模块/包**:SPM 包、Pods
- **视图架构**:SwiftUI vs UIKit
- **状态管理**:Combine、Observable 等
- **网络层**:URLSession、Alamofire 等
- **持久化**:Core Data、Realm、UserDefaults
- **DI 设置**:Swinject、手动注入
## 命令来源
- README/docs 中的 xcodebuild 命令
- `fastlane/Fastfile` 中的 lanes
- CI 工作流(`.github/workflows/`, `.gitlab-ci.yml`)
- 常见命令:`xcodebuild test`, `fastlane test`
- 仅包含仓库中存在的命令
## 关键路径
- `*/Sources/`, `*/Tests/`
- `*.xcodeproj/`, `*.xcworkspace/`
- `Pods/`(如果使用 CocoaPods)
- `Packages/`(如果使用 SPM 本地包)
| Fastify 路由 | `fastify.get(`, `fastify.post(` | fastify-route |
| GraphQL 解析器 | `@Resolver`, `@Query`, `@Mutation` | graphql-resolver |
| TypeORM 实体 | `@Entity`, `@Column`, `@PrimaryGeneratedColumn` | typeorm-entity |
| Prisma 模型 | `prisma.*.create`, `prisma.*.findMany` | prisma-usage |
| Mongoose 模型 | `mongoose.Schema`, `mongoose.model(` | mongoose-model |
| Sequelize 模型 | `Model.init`, `DataTypes` | sequelize-model |
| 队列工作者 | `Bull`, `BullMQ`, `process(` | queue-worker |
| Cron 任务 | `@Cron`, `node-cron`, `cron.schedule` | cron-job |
| WebSocket | `ws`, `socket.io`, `io.on(` | websocket-handler |
| 单元测试 | `describe(`, `it(`, `expect(`, `jest` | jest-test |
| 端到端测试 | `supertest`, `request(app)` | e2e-test |
## 必须包含的输出部分
如果检测到,请包含:
- **路由/控制器**:API 端点
- **服务层**:业务逻辑
- **数据库**:ORM/ODM 使用(TypeORM、Prisma、Mongoose)
- **中间件**:认证、验证、错误处理
- **后台任务**:队列、cron 任务
- **WebSocket 处理器**:实时功能
## 命令来源
- `package.json` 的 scripts 部分
- README/文档
- CI 工作流
- 常见命令:`npm run dev`, `npm run build`, `npm test`
- 仅包含仓库中存在的命令
## 关键路径
- `src/`, `lib/`
- `src/routes/`, `src/controllers/`
- `src/services/`, `src/models/`
- `prisma/`, `migrations/`
- **Business modules**: 按大小排序的顶级模块
## 命令来源
- `composer.json` 脚本
- `php artisan` (Laravel)
- `php spark` (CodeIgniter 4)
- `bin/console` (Symfony)
- `phalcon` 开发工具命令
- README/文档,CI
- 仅包含仓库中存在的命令
## 关键路径
**Laravel:**
- `app/`, `routes/`, `database/migrations/`
- `resources/views/`, `tests/`
**Symfony:**
- `src/`, `config/`, `templates/`
- `migrations/`, `tests/`
**CodeIgniter 4:**
- `app/Controllers/`, `app/Models/`, `app/Views/`
- `app/Database/Migrations/`, `tests/`
**Phalcon:**
- `apps/*/controllers/`, `apps/*/models/`
- `apps/*/views/`, `migrations/`
如果检测到,请包含:
- **屏幕清单**:`screens/` 下的目录
- **导航结构**:堆栈、标签、抽屉导航器
- **状态管理**:Redux、Zustand、Context
- **原生模块**:自定义原生代码
- **存储层**:AsyncStorage、SQLite、MMKV
- **平台特定**:`*.android.tsx`、`*.ios.tsx`
## 命令来源
- `package.json` 脚本
- README/文档
- 常见命令:`npm run android`、`npm run ios`、`npx expo start`
- 仅包含仓库中存在的命令
## 关键路径
- `src/screens/`、`src/components/`
- `src/navigation/`、`src/store/`
- `android/app/`、`ios/*/`
- `assets/`
| 工厂 | `FactoryBot.define`, `factory :` | factory-bot |
| Rake 任务 | `task :`, `namespace :` | rake-task |
## 必选输出部分
若检测到则包含:
- **控制器**:HTTP 端点
- **模型**:ActiveRecord 关联
- **服务**:业务逻辑
- **作业**:后台处理
- **迁移**:数据库模式
## 命令来源
- `Gemfile` 脚本
- `Rakefile` 任务
- `bin/rails`, `bin/rake`
- README/文档,CI
- 仅包含代码库中存在的命令
## 关键路径
- `app/controllers/`, `app/models/`
- `app/services/`, `app/jobs/`
- `db/migrate/`
- `spec/`, `test/`
- `lib/`
FILE:references/rust.md
# Rust
## 检测信号
- `Cargo.toml`
- `Cargo.lock`
- `src/main.rs` 或 `src/lib.rs`
- `target/` 目录
## 多模块信号
- `Cargo.toml` 中的 `[workspace]`
- 子目录中的多个 `Cargo.toml`
- `crates/`, `packages/` 目录
## 预生成来源
- `Cargo.toml`(依赖项、功能)
- `build.rs`(构建脚本)
- `rust-toolchain.toml`(工具链)
## 代码库扫描模式
### 源代码根目录
- `src/`, `crates/*/src/`
### 层级/文件夹模式(若存在则记录)
`handlers/`, `services/`, `models/`, `db/`, `api/`, `utils/`, `error/`, `config/`
### 模式指标
| 模式 | 检测标准 | 技能名称 |
|---------|-------------------|------------|
| Axum 处理器 | `axum::`, `Router`, `async fn handler` | axum-handler |
| Actix 路由 | `actix_web::`, `#[get]`, `#[post]` | actix-route |
| Rocket 路由 | `rocket::`, `#[get]`, `#[post]` | rocket-route |
| 服务 | `impl *Service`, `pub struct *Service` | rust-service |
| 仓库 | `*Repository`, `trait *Repository` | rust-repository |
| Diesel 模型 | `diesel::`, `Queryable`, `Insertable` | diesel-model |
| SQLx | `sqlx::`, `FromRow`, `query_as!` | sqlx-model |
| SeaORM | `sea_orm::`, `Entity`, `ActiveModel` | seaorm-entity |
| 错误类型 | `thiserror`, `anyhow`, `#[derive(Error)]` | error-type |
| CLI | `clap`, `#[derive(Parser)]` | cli-app |
| 异步任务 | `tokio::spawn`, `async fn` | async-task |
| 特质 | `pub trait *`, `impl * for` | rust-trait |
| 单元测试 | `#[cfg(test)]`, `#[test]` | rust-test |
| 集成测试 | `tests/`, `#[tokio::test]` | integration-test |
## 必选输出部分
若检测到则包含:
- **处理器/路由**:API 端点
- **服务**:业务逻辑
- **模型/实体**:数据结构
- **错误类型**:自定义错误
- **迁移**:diesel/sqlx 迁移
## 命令来源
- `Cargo.toml` 脚本/别名
- `Makefile`, README/文档
- 常见命令:`cargo build`, `cargo test`, `cargo run`
- 仅包含代码库中存在的命令
## 关键路径
- `src/`, `crates/`
- `tests/`
- `migrations/`
- `examples/`