检测项目技术栈 自动检测项目技术栈,通过分析包清单和配置文件。返回结构化数据,用于上线、文档发现和工具配置。
变量
| 变量 | 默认 | 描述 |
|---|---|---|
| SCAN_DEPTH | 3 | 最大目录深度搜索清单 |
| INCLUDE_DEV_DEPS | true | 包含开发依赖项分析 |
| DETECT_FRAMEWORKS | true | 从依赖项识别框架 |
| DETECT_TEST_TOOLS | true | 识别测试框架和运行器 |
| OUTPUT_FORMAT | json | 输出格式:json、markdown或toon |
指令
强制性 - 按顺序遵循以下工作流程步骤。不要跳过步骤。
- 扫描项目中的包清单
- 解析每个清单以提取依赖项
- 对依赖项进行分类
- 从依赖模式中检测框架和测试工具
- 输出结构化堆栈摘要
红旗 - 停止并重新考虑
如果你即将:
- 在不检查导入或配置文件的情况下假设框架
- 因为“项目简单”而跳过清单文件
- 硬编码框架版本而不是从清单中读取
- 在没有验证实际使用的情况下报告库
停止 -> 读取清单文件 -> 用导入/配置验证 -> 然后报告
工作流程
1. 发现清单
扫描这些文件(按优先级顺序):
| 文件 | 语言 | 解析器 |
|---|---|---|
package.json |
JavaScript/TypeScript | JSON |
pyproject.toml |
Python | TOML |
requirements.txt |
Python | 基于行的 |
go.mod |
Go | Go mod |
Cargo.toml |
Rust | TOML |
pubspec.yaml |
Dart/Flutter | YAML |
CMakeLists.txt |
C/C++ | CMake |
meson.build |
C/C++ | Meson |
WORKSPACE |
Bazel | Bazel |
pom.xml |
Java | XML |
build.gradle |
Java/Kotlin | Gradle DSL |
Gemfile |
Ruby | Ruby DSL |
composer.json |
PHP | JSON |
同时检查:
Dockerfile- 容器化docker-compose.yml- 容器编排.github/workflows/*.yml- CI/CDMakefile- 构建系统tsconfig.json- TypeScript配置vite.config.*/webpack.config.*- 打包器
2. 解析依赖项
对于每个清单,提取:
- 生产依赖项:运行时需求
- 开发依赖项:构建/测试工具
- 对等依赖项:预期的宿主环境
- 可选依赖项:功能标志
3. 分类堆栈
将结果分组为:
{
"languages": ["typescript", "python", "go", "rust", "dart", "cpp"],
"frameworks": [
{"name": "react", "version": "^18.0.0", "category": "frontend"},
{"name": "fastapi", "version": "^0.100.0", "category": "backend"}
],
"test_frameworks": [
{"name": "vitest", "version": "^1.0.0"},
{"name": "pytest", "version": "^7.0.0"}
],
"build_tools": ["vite", "uv", "docker"],
"databases": ["postgresql", "redis"],
"cloud_providers": ["aws", "vercel"],
"ci_cd": ["github-actions"]
}
4. 框架检测模式
使用食谱中的特定检测逻辑:
- 阅读
./cookbook/manifest-parsing.md解析规则 - 将依赖项名称与已知框架模式匹配
5. 输出
返回请求格式的结构化堆栈摘要。
食谱
清单解析
- IF: 解析任何包清单
- THEN: 读取并执行
./cookbook/manifest-parsing.md
快速参考
检测模式
| 依赖项模式 | 检测为 |
|---|---|
react, react-dom |
React框架 |
vue, @vue/* |
Vue框架 |
next |
Next.js框架 |
fastapi |
FastAPI框架 |
django |
Django框架 |
flask |
Flask框架 |
express |
Express.js框架 |
vitest, jest |
JavaScript测试框架 |
pytest |
Python测试框架 |
gtest, gmock, catch2 |
C/C++测试框架 |
flutter, flutter_test |
Flutter框架 |
@testing-library/* |
测试工具 |
类别映射
| 类别 | 示例 |
|---|---|
| frontend | react, vue, svelte, angular |
| backend | fastapi, django, express, gin |
| database | prisma, sqlalchemy, typeorm |
| testing | vitest, jest, pytest, playwright |
| build | vite, webpack, esbuild, rollup |
| linting | eslint, prettier, ruff, black |
| typing | typescript, mypy, pyright |
| build-native | cmake, meson, bazel |
输出模式
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {
"project_root": {"type": "string"},
"scanned_at": {"type": "string", "format": "date-time"},
"languages": {
"type": "array",
"items": {"type": "string"}
},
"frameworks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"version": {"type": "string"},
"category": {"type": "string"}
}
}
},
"test_frameworks": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"version": {"type": "string"}
}
}
},
"build_tools": {
"type": "array",
"items": {"type": "string"}
},
"databases": {
"type": "array",
"items": {"type": "string"}
},
"cloud_providers": {
"type": "array",
"items": {"type": "string"}
},
"ci_cd": {
"type": "array",
"items": {"type": "string"}
},
"manifests_found": {
"type": "array",
"items": {"type": "string"}
}
}
}
集成
其他技能和命令可以使用此技能进行:
- 文档发现:将检测到的框架映射到文档源
- 上线:生成针对堆栈量身定制的快速入门指南
- 工具配置:自动配置linter、formatter、测试运行器
- 代理路由:根据堆栈选择合适的AI提供商
另一个技能中的示例用法:
## 先决条件
在实施之前,运行`library-detection`技能以识别:
- 测试框架(用于编写测试)
- 构建工具(用于验证)
- 数据库库(用于数据层工作)