Skip to content
Back to skills

App Skill Wizard

ASecurity

Skill 创建向导 - 交互式引导按模块生成 Copilot 专家 Skill。 支持任意平台和应用层级,自动从 project-profile.json 读取技术栈配置。 分批深度研究 + 分批生成,确保代码入口精确。 触发关键词: 创建Skill, 新应用专家, 生成模块专家, app skill wizard, 新增应用, 为应用创建专家, 添加应用Skill, create app skills, 平台Skill, 再生专家, regenerate experts, 批量生成Skill, 项目接入, project setup, 新项目专家

  • 17 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 30, 2026
developmenttypescriptpythongojavac#shellazuregitapidevops

Works with

  • terminal
  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned May 30, 2026

npx -y skills add gabrielmoreira/agent-skills-mirror --skill app-skill-wizard --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of App Skill Wizard?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for App Skill Wizard
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gabrielmoreira-app-skill-wizard/badge)](https://www.skillsdirectory.com/skills/gabrielmoreira-app-skill-wizard)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: app-skill-wizard
description: |
  Skill 创建向导 - 交互式引导按模块生成 Copilot 专家 Skill。
  支持任意平台和应用层级,自动从 project-profile.json 读取技术栈配置。
  分批深度研究 + 分批生成,确保代码入口精确。
  触发关键词: 创建Skill, 新应用专家, 生成模块专家, app skill wizard,
  新增应用, 为应用创建专家, 添加应用Skill, create app skills,
  平台Skill, 再生专家, regenerate experts, 批量生成Skill,
  项目接入, project setup, 新项目专家
---

# Skill 创建向导

> 交互式引导:为目标项目按模块生成 Copilot 专家 Skill,注册到类别系统,通过 GUI 部署。
> 支持任意平台和应用层级。当存在 `project-profile.json` 时自动消费其中的技术栈/分层信息。
> AI 自动执行大部分操作,在 3 个检查点暂停等用户确认。

---

## 🔴 执行声明(强制)

你正在执行一个**交互式向导**,必须严格按照以下流程执行。
每个步骤完成后更新进度,在 🔴 检查点处**必须暂停等用户确认**后再继续。

### 启动时的开场引导(强制)

收到用户消息后,立即显示以下引导信息(在做任何操作之前):

```markdown
👋 你好!我来帮你生成 Copilot Skill。

**整个过程我来跑,你只需要在 3 个关键节点确认一下:**

1️⃣ 确认模块清单 — 我分析完代码后,你看看模块划分对不对
2️⃣ 确认生成质量 — Skill 文件生成完,我会自动 lint 检查 + 评分
3️⃣ 确认交付清单 — 最终文件列表,可选自动提交 PR 并通知审阅人

⬇️ 现在开始收集信息...
```

然后进入 Step 0。

---

## 执行流程

```
Step 0  环境 + 信息收集
  │
  ├── 0-pre 运行模式选择
  ├── 0a   提取应用名 + 命名前缀
  ├── 0a'  确定 Skill 层级(应用/平台)
  ├── 0b   获取模块列表
  └── 0c   分析平台继承关系(应用层)
  │
  ▼
🔴 CP0  模块清单确认         ◀── 暂停:展示表格,等用户确认/修改
  │
  ▼
Step 1  分批研究 + 生成
  │
  ├── 1a   读取模版 + 参考
  ├── 1b   分批深度研究(runSubagent)
  ├── 1c   基于研究报告逐批生成 SKILL.md
  ├── 1d   [应用层] 读取 XML 配置自动填充
  └── 1e   自动 lint 验证
  │
  ▼
🔴 CP1  生成质量确认         ◀── 暂停:展示 lint 结果 + 评分卡,等用户确认
  │
  ▼
Step 2  注册类别 + 配置(AI自动)
  │
  ▼
🔴 CP2  交付确认             ◀── 暂停:展示文件清单,等用户确认
  │
  ▼
Step 3  [可选] 提交 PR + 飞书通知
  │
  ├── 3-local  [多根工作区] 本地脚本 create_skill_pr.ps1
  └── 3-remote [纯目标项目] MCP create_branch → create_commit → create_pull_request
  │
  ▼
🔴 CP3  最终交付确认         ◀── 暂停:展示 PR 链接 + 通知状态
```

---

## Step 0:环境 + 信息收集

### 0-pre-profile. 检查 project-profile.json

**优先检查** `.copilot-temp/project-setup/*/project-profile.json` 是否存在。

如存在:
- 读取 profile 中的 `techStack`、`layers`、`platform`、`configDiscovery`
- 跳过 Step 0a'(Skill层级)和 Step 0c(平台继承分析) 中的 平台特有逻辑
- 在 Step 1b 的研究指令中注入技术栈相关搜索项
- 在 Step 1d 的配置发现中使用 profile 的 `configDiscovery` 规则

如不存在:
- 回退到现有交互式收集流程(完全兼容现有用法)

### 0-pre. 运行模式选择

**自动检测**当前工作区结构,使用 ask_questions 确认运行模式:

1. **检查工作区根目录列表** — 确认是否包含工具项目(含 `templates/skills/` 和 `data/skill_categories.json`)
2. **检查 MCP 可用性** — 确认是否有 `azureDevOpsHSW` MCP server(可访问工具仓库)

**模式选择**(ask_questions):
- header: "运行模式"
- question: "检测到当前环境支持以下模式,请选择:"
- 选项A(推荐 — 如检测到工具项目): "多根工作区模式 — 工具项目已在工作区,本地读写"
- 选项B(推荐 — 如未检测到工具项目但有 MCP): "纯目标项目模式 — 通过 MCP 远程读写工具仓库"

| | 多根工作区模式 | 纯目标项目模式 |
|---|---|---|
| 前提 | 工具项目 + 目标项目同时打开 | MCP 已配置 azureDevOpsHSW |
| 模板读取 | `read_file` 本地读取 | MCP `get_file_content` 远程读取 |
| Skill 生成位置 | `templates/skills/`(工具项目内) | `.github/skills/`(目标项目本地预览) |
| 类别注册 | 本地编辑 `skill_categories.json` | MCP `create_commit` search/replace 远程编辑 |
| PR 创建 | `create_skill_pr.ps1` 本地脚本 | MCP `create_branch` → `create_commit` → `create_pull_request` |
| 部署到目标项目 | `python scripts/deploy_skills.py` 或 GUI | 已在本地,无需额外部署 |

**如果两种模式都不可用**(无工具项目 + 无 HSW MCP),使用 ask_questions 引导:
- header: "环境设置"
- question: "当前环境无法访问工具仓库。请选择以下方式之一设置环境:"
- 选项A: "添加工具项目到工作区(File > Add Folder to Workspace...)"
- 选项B: "运行 GUI 工具配置 MCP(双击 点我启动.bat)"

### 0a. 提取应用名和命名前缀

从用户消息中提取应用名称(如 "YourApp"、"{{PLATFORM_REPO}}"),然后推导:

- **命名前缀**: 全小写 + 连字符,如 `cardiacct-` 或 `平台-`
- **Skill 命名格式**: `{前缀}{模块名}-expert`

如果用户未明确说应用名,使用 ask_questions 对话框询问:
- header: "应用名称"
- question: "请输入要创建 Skill 的应用/项目名称(如 YourApp、YourPlatform、{{PLATFORM_REPO}})"
- allowFreeformInput: true,无预设选项

### 0a'. 确定 Skill 层级

> 如已从 `project-profile.json` 读取层级信息,可跳过此步。

使用 ask_questions 确认 Skill 层级:
- header: "Skill层级"
- question: "这批 Skill 属于哪个层级?不同层级的模版章节和行数限制不同。"
- 选项A: "应用层 — 有配置映射,≤120 行" (recommended)
- 选项B: "平台层 — 有搜索策略+核心概念,≤150 行"

**层级差异**:

| | 应用层 | 平台层 |
|---|---|---|
| 行数上限 | ≤ 120 行 | ≤ 150 行 |
| 运行时配置映岄 | ✅ 必填 | ⬜ 跳过 |
| 搜索策略 | ⬜ 跳过 | ✅ 必填 |
| 核心概念 | ⬜ 跳过 | ✅ 必填(5-8 行) |
| 与平台的关系 | ✅ 必填 | ⬜ 跳过 |

### 0b. 获取模块列表

**直接在多根工作区中访问目标项目**,按优先级获取模块列表:

1. **用户提到了模块清单文件** → 直接 `read_file` 读取
2. **搜索现有清单** → 在目标项目中 `file_search` 搜索 `*功能模块清单*`
3. **扫描目录结构推断** → `list_dir` 目标项目关键目录
   - 如有 `project-profile.json`: 使用 `layers[].dirPattern` 扫描对应目录
   - 平台默认: 扫描 `BE/`、`FE/`、`WebFE/` 目录
   - 其他项目: 扫描 `src/`、`packages/`、`modules/` 等通用目录
4. **均无法确定** → 使用 ask_questions 对话框询问用户提供模块列表

对每个模块确定:
- 模块中文名
- 模块英文标识(用于 Skill 命名)
- 一句话职责描述

### 0c. 分析平台继承关系

**仅应用层执行,平台层跳过。**

对每个模块判断与平台的关系:

- **如有 `project-profile.json`**: 读取 `platform.identifier` 构建平台专家前缀
  - 搜索关键词: `project-profile.platform.name` 相关的 import/using/include 语句
  - 平台专家关联: `#{platform_identifier}-{component}-expert`
- **平台默认**(无 profile 时):
  - 依据 1: 模块名是否与已有 `{{PLATFORM_PREFIX}}-*-expert` 同名
  - 依据 2: 搜索 `using.*平台|import.*平台` 判断是否引用平台
  - 依据 3: 应用特有功能判定为 🆕 独立实现

输出两类:
- 🔄 **扩展继承**: 有对应平台模块 → 记录关联的平台专家
- 🆕 **独立实现**: 无对应平台模块

---

## 🔴 检查点 0:模块清单确认

**必须暂停**,向用户展示以下表格并等待确认:

```markdown
## 📋 模块清单确认

**Skill 层级**: {应用层/平台层}
**应用名**: {AppName}
**命名前缀**: `{app}-`
**模块总数**: {N} 个
**计划分批**: {ceil(N/6)} 批(每批 ≤6 个模块)

| # | 模块 | Skill 名称 | 继承类型 | 关联平台专家 |
|---|------|-----------|----------|-------------|
| 1 | ... | `{app}-{mod}-expert` | 🔄/🆕 | ... |

请确认是否正确,可以增删模块、修改命名、调整继承类型。
```

使用 ask_questions 让用户确认:
- header: "模块确认"
- question: "请看上面的模块列表,确认划分是否合理"
- 选项A(推荐): "没问题,继续生成"
- 选项B: "需要修改" (allowFreeformInput: true)

---

## Step 1:分批研究 + 生成

### 1a. 读取模版和参考

**多根工作区模式**:
1. 读取 `templates/skills/_templates/module-expert-skill.md` — 获取标准模版结构
2. 读取一个已有的同层级 Skill 作为格式参考:
   - 应用层: `templates/skills/app-*-expert/SKILL.md`
   - 平台层: `templates/skills/{{PLATFORM_PREFIX}}-*-expert/SKILL.md`(若无,到目标项目 `.github/skills/` 找)

**纯目标项目模式**:
1. MCP `get_file_content`(repo=`AdvAppCommonKnowledge`, path=`templates/skills/_templates/module-expert-skill.md`) — 远程读取模版
2. 如目标项目 `.github/skills/_templates/module-expert-skill.md` 存在(GUI 部署时已复制),优先用本地版本
3. 格式参考同上,优先本地 `.github/skills/` 下已有的 Skill

### 1b. 分批深度研究

将模块按 **每批 ≤6 个** 分组,对每一批使用 `runSubagent` 进行深度研究。

**Subagent 研究指令模板**:

```
请对以下 {N} 个模块进行深度研究,目标项目在 {target_project_root}。

模块列表:{module1}, {module2}, ...

对每个模块,请调查以下内容并输出结构化报告:

1. **目录结构**: 列出各代码层级目录下的相关子目录和文件数量
2. **关键类清单**: 找出 3-8 个核心类/接口名称(精确大小写)
3. **命名空间/包名**: 查找模块的命名空间或包名模式
4. **导出/公开接口**: 查找公开接口和导出符号
5. **常见拼写陷阱**: 搜索非标准拼写
{tech_specific_instructions}
```

**技术栈特定研究指令** (`{tech_specific_instructions}`):

| 来源 | 注入内容 |
|--------|----------|
| project-profile.json | 根据 `techStack` 和 `layers` 动态构建 |
| 平台默认(无 profile) | `6. 命名空间宏: {{PLATFORM_NS_PREFIX}}_*_BEGIN_NAMESPACE` + `7. 导出宏: *_Export` + `8. XML 配置关联` |
| C#/.NET 项目 | `6. 命名空间: namespace 声明` + `7. DI 注册: AddScoped/AddTransient` |
| Python 项目 | `6. 包结构: __init__.py 导出` + `7. 装饰器: @app.route/@router.post` |
| Java 项目 | `6. 包名: package 声明` + `7. 注解: @Service/@Controller/@Bean` |
| TypeScript 项目 | `6. 模块导出: export default/export class` + `7. 路由: @Controller/@Get/@Post` |

研究报告产出到对话中,不写文件。每批完成后输出进度。

### 1c. 基于研究逐批生成 SKILL.md

依据研究报告 + 模版结构,为当前批次的每个模块生成 SKILL.md。

**生成位置**:
- **多根工作区模式**: `templates/skills/{app}-{module}-expert/SKILL.md`(工具项目内)
- **纯目标项目模式**: `.github/skills/{app}-{module}-expert/SKILL.md`(目标项目内,本地预览)

**生成规则**:

1. **YAML frontmatter 必填**:`name` 与目录名相同,`description` 含 ≥3 触发关键词
2. **必填章节** — 参考 `module-expert-skill.md` 的标记系统(`[通用]`/`[应用必填]`/`[平台必填]`)
3. **精确性要求**(v3 核心原则):
   - 类名、文件路径必须来自研究报告的实际扫描结果
   - 禁止编造或推测不存在的符号
   - 拼写陷阱必须有具体文件名为证
4. **行数控制**: 应用层 ≤ 120 行 / 平台层 ≤ 150 行
5. **内容完整性红线**(强制):
   - ❗ **模板格式不可简化**: 执行声明规范、必填章节等固定格式必须完整保留,禁止压缩或省略
   - ❗ **必要内容不可删减**: 场景入口、陷阱条目、依赖行、配置映射等经验证的内容不得为了行数限制而删除或合并
   - ✅ **超限时拆分到 reference**: 若行数超限,将较大的独立章节(如运行时配置映射、大型表格)拆分到 `references/` 目录
   - 拆分后在 SKILL.md 中保留指针: `📖 详细内容见 \`references/xxx.md\``
6. **业务规则**: 框架完整但内容标记 `🔴 TODO: 待补充`

每生成 3 个 Skill 后输出进度:
> ✅ 批次 {B}/{total}: 已生成 {app}-{mod1}-expert, {app}-{mod2}-expert, {app}-{mod3}-expert

### 1d. [应用层] 配置文件自动填充

> 仅应用层执行,平台层跳过。配置格式从模板 v4 的配置发现规则获取。

**配置发现策略**:

1. **如有 `project-profile.json`**: 使用 `configDiscovery.format` 和 `configDiscovery.basePath`
   - XML: 搜索 `{basePath}/**/*.xml`,提取 `<Operation>`/`<Handler>` 等节点
   - YAML/JSON: 搜索 `{basePath}/**/*.{yaml,yml,json}`,提取路由/服务配置
   - none: 跳过此步
2. **平台默认(无 profile)**: 搜索 XML 配置文件
   - 搜索路径: `file_search("**/appdata/*/config/[你的配置目录]/[配置文件]")`
   - 核心文件: `[后端配置文件]`、`BE/WorkflowController.xml`、`[前端命令配置]`
   - 提取内容: 按模块名 grep 相关 Operation/Widget/Model 注册项
3. **自动填充**: 将提取结果写入各 SKILL.md 的「运行时配置映射」章节,标记 🤖

### 1e. 自动 lint 验证

所有 Skill 生成完毕后,自动在终端运行 lint 检查:

```
python scripts/lint_skills.py --skill {app}-*-expert
```

**lint 检查项**:
- YAML frontmatter 必填字段(name + description)
- 触发词冲突检测(与现有 Skill 无重复)
- references 文件引用有效性
- 名称规范(连字符格式,≤64 字符)

将 lint 结果纳入 CP1 评分卡。如果有 lint 错误,先自动修复,修复后重新 lint,确认全部通过后再进入 CP1。

---

## 🔴 检查点 1:生成质量确认

**必须暂停**,向用户展示 lint 结果 + 质量评分卡:

```markdown
## 📊 生成质量评分卡

### Lint 检查
✅ 全部通过({N} 个 Skill, 0 个错误)

### 内容评分

| Skill | 行数 | frontmatter | 场景入口 | 上下游 | 得分 |
|-------|------|:-----------:|:--------:|:------:|------|
| `{app}-xxx-expert` | 95 | ✅ | ✅ 3个 | ✅ | 4/4 |
| ... | | | | | |

**评分标准**:
- frontmatter: name + description(含 ≥3 触发关键词)
- 行数: 应用层 ≤120 / 平台层 ≤150
- 场景→入口: ≥ 2 个场景有搜索关键词
- 上下游依赖: 标注了影响程度

> ⚠️ 所有业务规则已标记 🔴 TODO,待领域专家后续补充
```

使用 ask_questions 让用户确认:
- header: "质量确认"
- question: "请看评分卡,如有不满意的可以在输入框里告诉我哪个 Skill 需修改"
- 选项A(推荐): "都没问题,继续"
- 选项B: "需要调整" (allowFreeformInput: true)

---

## Step 2:注册类别 + 配置

### 2a. 编辑 skill_categories.json

**多根工作区模式** — 本地编辑 `data/skill_categories.json`:

```json
"{app}": {
  "display_name": "{app}",
  "prefixes": ["{app}-"],
  "description": "{AppName} 应用/平台",
  "default_selected": false
}
```

在 `presets` 中添加对应预设:

```json
"{AppName}应用开发": ["platform", "{app}"]
```

**纯目标项目模式** — 通过 MCP `create_commit` 的 search/replace 模式远程修改:
- 先 MCP `get_file_content` 读取当前 `skill_categories.json` 内容
- 用 search/replace 在 `"categories"` 和 `"presets"` 中各插入一条

### 2b. 验证 + 部署说明

执行 `python -c "import json; ..."` 验证 `skill_categories.json` 配置正确、`{app}-*` Skills 数量匹配。

**多根工作区模式 — 部署到目标项目**:使用 ask_questions 询问是否自动部署:
- header: "自动部署"
- question: "是否立即将 Skills 部署到目标项目?"
- 选项A(推荐): "是,自动部署"
- 选项B: "否,我稍后手动运行 GUI"

如果选择自动部署,在工具项目根目录执行:
```
python scripts/deploy_skills.py --target-path "{target_project_root}" --categories platform,{app} --force
```

> 💡 其他开发者需各自运行 GUI 或 CLI 部署。

**纯目标项目模式**:Skill 已直接生成在 `.github/skills/` 下,无需额外部署。

### 2c. 更新用户偏好(user_preferences.json)

读取 `data/user_preferences.json`,在 `selected_skill_categories` 数组中追加 `"{app}"`(如果不存在的话),确保 GUI 下次启动时默认勾选新应用类别。

---

## 🔴 检查点 2:交付确认

**必须暂停**,向用户展示以下交付清单:

```markdown
## 📦 交付清单

**应用名**: {AppName}
**Skill 数量**: {N} 个模块

### 生成的文件

| 文件路径 | 行数 | 类型 |
|---------|------|------|
| `templates/skills/{app}-xxx-expert/SKILL.md` | ... | SKILL.md |
| `templates/skills/{app}-xxx-expert/references/xxx.md` | ... | reference |
| ... | | |

### 配置注册

| 配置文件 | 变更内容 |
|---------|---------|
| `data/skill_categories.json` | 新增 `{app}` 分类 + `"{AppName}应用开发"` 预设 |

### 部署方式
重启 VS Code 后,通过 `#{app}-xxx-expert` 调用。
每位开发者需各自运行 GUI 工具部署 Skill。
```

展示完清单后,**必须使用 ask_questions 弹出两个交互选项**:

**选择 1 — PR 操作**:
- header: "提交PR"
- question: "Skill 已生成完毕。是否自动创建 PR 并通知审阅人?"
- 选项A(推荐): "创建 PR 并飞书通知审阅人"
- 选项B: "只创建 PR,不发通知"
- 选项C: "跳过,我手动处理"

**选择 2 — PR 审阅人**(仅选择 A/B 时展示):
- header: "审阅人"
- question: "PR 审阅人(默认从 shared_config.json 读取)"
- 选项A(推荐): "YourName (your.email@example.com)" — 从 `shared_config.json` 的 `notification_recipients` 动态读取
- allowFreeformInput: true — 用户可输入其他审阅人姓名或邮箱

> ⚠️ **禁止跳过此 ask_questions 步骤**。展示文件清单 ≠ 交付确认完成,必须等用户通过交互选项选择后才算 CP2 完成。

**A/B** → Step 3 | **C** → 输出部署说明,结束

---

## Step 3:[可选] 提交 PR + 飞书通知

> 📚 **实现原理参考**: `read_file("references/pr-notification.md")` — Step 3 执行前必须读取!

根据 Step 0-pre 选择的运行模式,执行对应的 PR 创建流程。
根据 CP2 的选择确定通知模式:选项 A → PR 并通知 | 选项 B → 仅 PR

### 3-local. 多根工作区模式:本地脚本

在**工具项目根目录**执行(通过 `run_in_terminal`):

```powershell
powershell -ExecutionPolicy Bypass -File scripts/create_skill_pr.ps1 `
    -AppName "{AppName}" -AppPrefix "{app}" -ModuleCount {N} `
    -Mode "{PRAndNotify|PROnly}"
```

脚本输出 `===RESULT_JSON_BEGIN===`/`===RESULT_JSON_END===` 之间的 JSON 摘要。
退出码: `0`=全成功, `1`=配置错, `2`=Git 失败, `3`=PR 失败, `4`=部分成功。

### 3-remote. 纯目标项目模式:MCP 远程操作

使用 `azureDevOpsHSW` MCP server(工具仓库在 HSW Collection):

1. **创建分支**: MCP `create_branch` — repo `AdvAppCommonKnowledge`, source `master`, new `skill/{app}-experts`
2. **推送文件**: MCP `create_commit` — 将本地 `.github/skills/{app}-*-expert/` 内容推送到 `templates/skills/{app}-*-expert/`
   - 新文件用 `--- /dev/null` 格式的 unified diff
   - `skill_categories.json` 用 search/replace 模式修改
3. **创建 PR**: MCP `create_pull_request` — reviewers 从 CP2 用户选择获取
4. **飞书通知**(如选择 A): 通过飞书 MCP 或 `create_skill_pr.ps1` 的飞书 API 发送卡片消息

> 🔴 任何失败都不阻断,降级为提示用户手动处理。详见 `references/pr-notification.md` 中的错误处理表。

---

## 🔴 检查点 3:最终交付确认

展示最终交付结果:Skill 文件列表 + PR 链接 + 飞书通知状态 + 后续事项(业务规则 TODO、等待审阅、GUI 部署)。

---

## 进度模板

每次向用户展示消息时,在开头显示当前进度:

```
📋 Skill 向导 — {AppName}({层级})
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✅ Step 0: 环境 + 信息收集
✅ CP0: 模块清单确认 (用户已确认)
⭕ Step 1: 分批研究 + 生成 (批次 2/4, 已完成 8/20)
⬜ CP1: 生成质量确认
⬜ Step 2: 注册 + 配置
⬜ CP2: 交付确认(含 PR 选择)
⬜ Step 3: 提交 PR + 飞书通知
⬜ CP3: 最终交付确认
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```

状态图标: ✅ 完成 | ⭕ 进行中 | ⬜ 未开始

---

## 错误处理

| 错误场景 | 处理方式 |
|----------|----------|
| 工作区未包含目标项目且无 HSW MCP | 引导用户二选一:添加工具项目到工作区 或 运行 GUI 配置 MCP |
| 用户未提供应用名 | 直接询问,不要猜测 |
| 没有找到模块清单文件 | 扫描目录结构推断,或询问用户 |
| `skill_categories.json` 已有同名类别 | 使用 ask_questions 询问是否覆盖 |
| 生成的 Skill 超过行数上限 | 将较大的独立章节拆分到 `references/` 目录,SKILL.md 中保留 `📖 ... 见 references/xxx.md` 指针。**禁止**通过简化模板格式或删减必要内容来降低行数 |
| `templates/skills/{app}-*` 目录已存在 | 使用 ask_questions 询问是否覆盖 |
| runSubagent 研究报告信息不足 | 补发更具针对性的研究指令 |
| DevOps PAT 未配置 | 提示用户运行 GUI 工具配置 PAT |
| `git push` 失败(无远程/权限不足) | 跳过 PR 创建,输出部署说明 |
| DevOps PR API 返回 401/403 | 先检查 PAT Collection 是否匹配 |
| MCP `create_commit` search 不匹配 | 先 `get_file_content` 读取最新内容,调整 search 文本 |
| MCP `azureDevOpsHSW` 不可用 | 降级提示运行 GUI 配置或手动处理 |
| lint 检查发现错误 | 自动修复后重新 lint,全部通过才进 CP1 |
| 飞书通知收件人未配置 | 使用 CP2 用户输入的审阅人邮箱,或提示补充配置 |
| `user_preferences.json` 被外部覆盖 | 写入前先读取最新内容,合并而非全量覆盖 |
| `skill_categories.json` 被外部覆盖丢失类别 | 写入前先读取,确保新增类别不会覆盖已有的其他类别 |
| 飞书 MCP 不可用 | 不阻断流程,提示用户手动发送 PR 链接 |

---

## 参考文件

- **统一模版**: `read_file("templates/skills/_templates/module-expert-skill.md")` — Step 1 前读取(纯目标项目模式用 MCP `get_file_content`)
- **质量标准**: `read_file("references/details.md")`
- **PR + 通知**: `read_file("references/pr-notification.md")` — Step 3 前**必须读取**
- **格式参考**: 任意 `templates/skills/app-*-expert/SKILL.md`(应用层)或 `{{PLATFORM_PREFIX}}-*-expert/SKILL.md`(平台层)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.