Stack Analyzer 技能
一个元技能,用于分析项目的技术支持栈,并为 AI 辅助开发推荐或搭建适当的技能。此技能在 /ai-dev-kit:setup 期间自动运行,但也可以在手动调用。
设计原则
插件隔离
不留痕迹:ai-dev-kit 插件必须能够完全移除,不留任何痕迹。这项技能执行以下操作:
| 组件 | 位置 | 卸载时 |
|---|---|---|
| 通用技能 | plugins/ai-dev-kit/skills/ |
随插件一起移除 |
| 项目特定技能 | 目标仓库 .claude/skills/ |
用户选择 |
| 生成的清单 | .claude/skills/_generated.json |
用户选择 |
通用性
所有 ai-dev-kit 技能都是框架通用的,不针对任何特定代码库:
| 模式 | 正确 | 错误 |
|---|---|---|
| BAML 技能 | 通用 BAML 模式 | CodeGraph-DE 特定 DTOs |
| Supabase 技能 | 一般最佳实践 | 特定于 Book-Vetting 的查询 |
| Schema 对齐 | 适用于任何 ORM | 假设特定模型 |
变量
| 变量 | 默认值 | 描述 |
|---|---|---|
| AUTO_ACTIVATE | false | 自动激活推荐的通用技能 |
| SCAFFOLD_SKILLS | false | 在目标仓库中搭建项目特定技能 |
| OUTPUT_REPORT | true | 生成推荐报告 |
| MANIFEST_PATH | .claude/skills/_generated.json | 生成清单的路径 |
指令
MANDATORY - 按照以下工作流程顺序进行。
- 运行
library-detection技能以获取项目栈 - 将检测到的栈与技能推荐匹配
- 报告推荐的通用技能
- 可选择性地搭建项目特定技能
- 如果创建了技能,则更新生成的清单
红旗 - 停止并重新考虑
如果你即将:
- 为特定代码库创建技能(与通用模式相对)
- 将项目特定技能放在插件目录中
- 跳过生成清单的更新
- 为未检测到的技术推荐技能
停止 -> 验证检测结果 -> 使用通用模式 -> 然后继续
工作流程
1. 检测项目栈
首先调用 library-detection 技能:
读取并执行 plugins/ai-dev-kit/skills/library-detection/SKILL.md
这将返回:
- 语言(typescript, python 等)
- 框架(react, fastapi 等)
- 测试框架(vitest, pytest 等)
- 数据库(postgresql, sqlite 等)
- 构建工具(vite, uv 等)
2. 与技能推荐匹配
从 ./config/recommendations.yaml 加载推荐,并匹配:
对于每个检测到的技术:
IF 匹配技能激活规则:
添加到 recommended_skills 列表
IF 匹配搭建模板规则:
添加到 scaffold_candidates 列表
3. 生成报告
创建推荐报告:
# 堆栈分析报告
## 检测到的栈
- **语言**:TypeScript, Python
- **框架**:Next.js, FastAPI
- **数据库**:PostgreSQL(通过 Supabase)
- **测试**:Vitest, Pytest
- **AI/ML**:BAML
## 推荐的通用技能(插件中)
| 技能 | 原因 | 状态 |
|-------|--------|--------|
| baml-integration | 在 baml_src/ 中检测到 BAML | 激活 |
| supabase-patterns | 发现 Supabase 依赖 | 激活 |
| schema-alignment | 检测到 SQLAlchemy | 激活 |
## 项目特定技能(可搭建)
| 模板 | 触发器 | 输出 |
|----------|---------|--------|
| project-research | 发现 3 个研究子代理 | .claude/skills/{project}-research/ |
| project-domain | 在 src/models/ 中发现模型 | .claude/skills/{project}-domain/ |
4. 搭建项目特定技能(如果启用)
对于每个搭建候选:
# 1. 将模板复制到目标仓库
cp -r ./templates/{template}/ ${TARGET_REPO}/.claude/skills/{project}-{template}/
# 2. 在 SKILL.md 中添加生成头
echo "<!-- Generated by ai-dev-kit:recommend-skills on $(date) -->" | \
cat - ./templates/{template}/SKILL.md > temp && mv temp SKILL.md
# 3. 使用项目名称自定义
sed -i "s/{project}/${PROJECT_NAME}/g" SKILL.md
5. 更新生成的清单
创建或更新 .claude/skills/_generated.json:
{
"generated_by": "ai-dev-kit:recommend-skills",
"generated_at": "2025-12-24T10:00:00Z",
"plugin_version": "1.0.0",
"skills_created": [
{
"path": ".claude/skills/book-vetting-research/",
"template": "project-research",
"created_at": "2025-12-24T10:00:00Z"
}
],
"docs_created": [
"ai-docs/libraries/baml/"
],
"cleanup_instructions": "These files were generated by ai-dev-kit. You may delete them after uninstalling the plugin."
}
技能推荐规则
通用技能(激活)
| 技能 | 检测标准 |
|---|---|
baml-integration |
baml_src/**/*.baml 存在 OR baml-py/baml 依赖 |
supabase-patterns |
supabase 依赖 OR supabase/migrations/ 存在 |
schema-alignment |
sqlalchemy/prisma/django/alembic 检测到 |
treesitter-patterns |
tree-sitter/tree_sitter 依赖 |
security-audit |
总是推荐用于生产代码库 |
项目特定技能(搭建)
| 模板 | 检测标准 |
|---|---|
project-research |
.claude/commands/**/research/** OR subagent.*research 模式 |
project-domain |
src/models/** OR services/domain/** 存在 |
project-testing |
标准框架之外的自定义测试模式 |
模板
project-research
针对有研究型子代理的项目:
templates/project-research/
├── SKILL.md # 自定义研究模式
├── cookbook/
│ └── research-workflow.md
└── reference/
└── source-types.md
project-domain
针对有丰富领域模型的项目:
templates/project-domain/
├── SKILL.md # 领域词汇和模式
├── cookbook/
│ └── entity-relationships.md
└── reference/
└── domain-glossary.md
project-testing
针对有自定义测试需求的项目:
templates/project-testing/
├── SKILL.md # 自定义测试模式
├── cookbook/
│ └── test-fixtures.md
└── reference/
└── coverage-requirements.md
集成
与 /ai-dev-kit:setup 集成
在棕地设置期间自动运行:
1. 用户运行:/ai-dev-kit:setup
2. 设置调用:stack-analyzer 技能
3. 堆栈分析器:
- 检测栈
- 显示推荐
- 提示:"激活推荐的技能? [y/N]"
- 如果是,标记技能为激活
- 提示:"搭建项目特定技能? [y/N]"
- 如果是,创建目标仓库中的能力
4. 设置继续执行其余步骤
与 /ai-dev-kit:recommend-skills 集成
直接调用:
# 仅报告(无更改)
/ai-dev-kit:recommend-skills
# 自动激活通用技能
/ai-dev-kit:recommend-skills --auto-activate
# 搭建项目特定技能
/ai-dev-kit:recommend-skills --scaffold
# 所有选项
/ai-dev-kit:recommend-skills --auto-activate --scaffold --output=report.md
输出架构
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"detected_stack": {
"type": "object",
"description": "来自 library-detection 技能的输出"
},
"recommended_skills": {
"type": "array",
"items": {
"type": "object",
"properties": {
"skill": {"type": "string"},
"reason": {"type": "string"},
"status": {"enum": ["recommended", "active", "not_applicable"]}
}
}
},
"scaffold_candidates": {
"type": "array",
"items": {
"type": "object",
"properties": {
"template": {"type": "string"},
"trigger": {"type": "string"},
"output_path": {"type": "string"},
"created": {"type": "boolean"}
}
}
},
"manifest_updated": {"type": "boolean"},
"manifest_path": {"type": "string"}
}
}
## 卸载时的清理
当 ai-dev-kit 插件被移除时,通知用户:
```markdown
## ai-dev-kit 卸载通知
以下文件由 ai-dev-kit 生成,并在卸载后保留:
**项目特定技能:**
- .claude/skills/book-vetting-research/
- .claude/skills/book-vetting-domain/
**文档:**
- ai-docs/libraries/baml/
- ai-docs/libraries/supabase/
查看 .claude/skills/_generated.json 获取完整列表。
如果不再需要,这些文件可以安全删除。