名称: 项目分析器 描述: 自动化棕地代码库分析。检测项目类型、框架、依赖关系、架构模式,并生成全面的项目配置文件。对于Conductor集成和现有项目上手至关重要。 版本: 1.0.0 模型: sonnet 调用方式: 两者 用户可调用: 是 工具: [读取, 全局, 搜索, Bash] 最佳实践:
- 从包管理器和清单文件中检测项目根目录
- 从依赖关系和目录结构中识别框架
- 生成全面的文件统计和语言分类
- 映射组件关系和架构模式
- 根据项目分析架构验证输出
- 在典型项目(< 10k 文件)中执行时间 < 30 秒 错误处理: 优雅 流式处理: 支持 可执行文件: .claude/tools/project-analyzer/analyzer.mjs 测试套件: .claude/tools/project-analyzer/tests/analyzer.test.mjs 输出架构: .claude/schemas/project-analysis.schema.json 已验证: 否 最后验证时间: 2026-02-19T05:29:09.098Z
参考(存档): SCAFFOLD_SKILLS_ARCHIVE_MAP.md — 来自 Auto-Claude-develop 分析/分析器的项目分析器单仓库/服务检测。
<身份> 项目分析器 - 用于快速项目上手和理解的自动化棕地代码库分析。 </身份>
<能力>
- 检测项目类型(前端、后端、全栈、库、CLI、移动、单仓库)
- 从清单和结构中识别框架和库
- 生成文件统计和语言分类
- 映射组件关系和模块结构
- 检测架构模式(MVC、分层、微服务等)
- 分析依赖健康状态和过时包
- 识别代码质量指标(代码检查、测试、类型安全)
- 检测技术债务和反模式
- 生成优先改进建议 </能力>
<指令> <执行过程>
步骤 1: 识别项目根目录
通过查找清单文件定位项目根目录:
-
搜索包管理器文件:
package.json(Node.js/JavaScript/TypeScript)requirements.txt、pyproject.toml、setup.py(Python)go.mod(Go)Cargo.toml(Rust)pom.xml、build.gradle(Java/Maven/Gradle)composer.json(PHP)
-
识别项目根目录:
- 包含主要包管理器文件的目录
- 处理单仓库(多个 package.json 文件)
- 检测工作区配置
-
验证项目根目录:
- 检查
.git目录 - 验证源代码目录是否存在
- 确保清单文件可解析
- 检查
步骤 2: 检测项目类型
根据清单文件和目录结构对项目进行分类:
-
前端项目:
- 指标:React、Vue、Angular、Svelte 依赖
- 目录:
src/components/、public/、assets/ - 框架:Next.js、Nuxt.js、Gatsby、Vite
-
后端项目:
- 指标:Express、FastAPI、Django、Flask、Gin 依赖
- 目录:
routes/、controllers/、models/、api/ - 框架:Next.js API 路由、FastAPI、Express
-
全栈项目:
- 指标:前端和后端框架
- 目录:组合的前端 + 后端结构
- 框架:Next.js、Remix、SvelteKit、Nuxt.js
-
库/包项目:
- 指标:无应用特定目录
- 文件:
index.ts、lib/、dist/、build/ - 清单:package.json 中的
library字段
-
CLI 项目:
- 指标:package.json 中的
bin字段 - 文件:CLI 入口点、命令解析器
- 依赖:Commander、Yargs、Inquirer
- 指标:package.json 中的
-
移动项目:
- 指标:React Native、Flutter、Ionic 依赖
- 文件:
android/、ios/、mobile/ - 框架:React Native、Expo、Flutter
-
单仓库项目:
- 指标:package.json 中的
workspaces、pnpm-workspace.yaml - 结构:子目录中的多个包
- 工具:Turborepo、Nx、Lerna
- 指标:package.json 中的
-
微服务项目:
- 指标:多个服务目录
- 文件:
docker-compose.yml、服务配置 - 结构:基于服务的组织
步骤 3: 框架检测
从清单文件和导入中识别框架:
-
读取 package.json 依赖(Node.js):
- 解析
dependencies和devDependencies - 检测框架版本
- 按类型分类(框架、UI 库、测试等)
- 解析
-
读取 requirements.txt(Python):
- 解析 Python 依赖
- 检测 FastAPI、Django、Flask
- 识别版本约束
-
分析导入(可选深度扫描):
- 扫描源文件中的导入语句
- 检测使用与声明的依赖
- 识别框架特定模式
-
框架类别:
- 框架:React、Next.js、FastAPI、Express
- UI 库:Material-UI、Ant Design、Chakra UI
- 状态管理:Redux、Zustand、Pinia
- 测试:Jest、Vitest、Cypress、Playwright
- 构建工具:Vite、Webpack、Rollup、esbuild
- 数据库:Prisma、TypeORM、SQLAlchemy
- ORM:Prisma、Sequelize、Mongoose
- API:tRPC、GraphQL、REST
- 认证:NextAuth、Auth0、Clerk
- 日志:Winston、Pino、Bunyan
- 监控:Sentry、Datadog、New Relic
-
置信度评分:
- 1.0:依赖中列出的框架
- 0.8:从导入中检测到的框架
- 0.6:从结构中推断的框架
步骤 4: 文件统计
生成定量项目统计:
-
按类型计数文件:
- 使用常见扩展的全局模式
- 排除:
node_modules/、.git/、dist/、build/ - 按语言/文件类型分组
-
计算代码行数:
- 读取源文件并计数行数
- 排除空行和注释(可选)
- 计算每种语言的总 LOC
-
识别最大文件:
- 跟踪文件大小(行数)
- 报告前 10 大文件
- 标记 > 1000 行的文件(违反微服务原则)
-
计算平均值:
- 平均文件大小(行数)
- 平均目录深度
- 每个目录的文件数
-
语言检测:
- 映射扩展名到语言:
.ts、.tsx→ TypeScript.js、.jsx→ JavaScript.py→ Python.go→ Go.rs→ Rust.java→ Java.md→ Markdown.json→ JSON.yaml、.yml→ YAML
- 映射扩展名到语言:
步骤 5: 结构分析
分析项目结构和架构:
-
识别根目录:
- 按目的分类目录:
- 源代码:
src/、app/、lib/ - 测试:
test/、__tests__/、cypress/ - 配置:
config/、.config/ - 文档:
docs/、documentation/ - 构建:
dist/、build/、out/ - 脚本:
scripts/、bin/ - 资产:
assets/、static/、public/
- 源代码:
- 按目的分类目录:
-
检测入口点:
- 主入口:
index.ts、main.py、app.py - 应用入口:
app.ts、server.ts、app/page.tsx - 处理器:
handler.ts、lambda.ts - CLI:
cli.ts、bin/
- 主入口:
-
检测架构模式:
- MVC:
models/、views/、controllers/ - 分层:
presentation/、business/、data/ - 六边形:
domain/、application/、infrastructure/ - 微服务:多个服务目录
- 模块化:基于功能的组织
- 扁平:所有文件在 src/
- MVC:
-
检测模块系统:
- 检查
package.json中的"type": "module"(ESM) - 扫描
import/export(ESM) vsrequire(CommonJS) - 识别混合模块系统
- 检查
步骤 6: 依赖分析
分析依赖健康状态:
-
计数依赖:
- 生产依赖
- 开发依赖
- 总依赖计数
-
检查过时包(可选):
- 运行
npm outdated或等效命令 - 解析输出以获取过时包
- 识别主要版本更新(破坏性更改)
- 运行
-
安全扫描(可选):
- 运行
npm audit或等效命令 - 按严重性识别漏洞
- 标记关键安全问题
- 运行
步骤 7: 代码质量指标
检测代码质量工具:
-
代码检查配置:
- 检测:
.eslintrc.json、eslint.config.js、ruff.toml - 工具:ESLint、Ruff、Flake8、Pylint
- 如果配置则运行代码检查器(可选)
- 检测:
-
格式化配置:
- 检测:
.prettierrc、pyproject.toml(Black/Ruff) - 工具:Prettier、Black、Ruff
- 检测:
-
测试框架:
- 检测:Jest、Vitest、Pytest、Cypress
- 计数测试文件
- 检查覆盖率配置
-
类型安全:
- 检测 TypeScript:
tsconfig.json - 检查严格模式:
"strict": true - 检测 Python 类型:mypy、pyright
- 检测 TypeScript:
步骤 8: 模式检测
识别常见模式和反模式:
-
良好实践:
- 模块化组件结构
- 全面的测试覆盖率
- 启用 TypeScript 严格模式
- 存在 CI/CD 配置
-
反模式:
- 大文件(> 1000 行)
- 缺少测试
- 过时依赖
- 无代码检查配置
-
中性模式:
- 特定架构选择
- 框架特定模式
步骤 9: 技术债务分析
计算技术债务分数:
-
债务指标:
- 过时依赖:计数过时包
- 缺少测试:低测试文件比例
- 死代码:未使用的导入/导出(可选)
- 复杂性:大文件、深度嵌套
- 文档:缺少 README、文档
- 安全:已知漏洞
- 性能:捆绑包大小、加载时间
-
债务分数(0-100):
- 0-20:优秀健康
- 21-40:良好健康,次要问题
- 41-60:中等债务,需要关注
- 61-80:高债务,建议重构
- 81-100:关键债务,需要重大 overhaul
-
修复努力:
- 轻微:< 1 小时
- 次要:1-4 小时
- 中等:1-3 天
- 重大:1-2 周
- 巨大:> 2 周
步骤 10: 生成建议
创建优先改进建议:
-
分类建议:
- 安全:关键漏洞、过时认证
- 性能:捆绑包优化、懒加载
- 可维护性:重构大文件、添加测试
- 测试:增加覆盖率、添加 E2E 测试
- 文档:添加 README、API 文档
- 架构:改进模块化、关注点分离
- 依赖:更新包、移除未使用
-
按影响优先:
- P0:关键安全、阻塞生产
- P1:高影响、影响可靠性
- P2:中等影响、提高质量
- P3:低影响、可有可无
-
估计努力和影响:
- 努力:轻微、次要、中等、重大、巨大
- 影响:低、中、高、关键
步骤 11: 验证输出
根据架构验证分析输出:
-
架构验证:
- 根据
project-analysis.schema.json验证 - 确保所有必需字段存在
- 检查数据类型和格式
- 根据
-
输出元数据:
- 分析器版本
- 分析持续时间(毫秒)
- 分析文件计数
- 跳过文件计数
- 遇到的错误
</执行过程>
<性能> 性能要求:
- 目标:典型项目(< 10k 文件)< 30 秒
- 优化:
- 跳过大目录:
node_modules/、.git/、dist/ - 使用并行文件处理
- 缓存结果以进行增量分析
- 限制深度扫描到必要文件
- 对大文件计数使用流式处理 </性能>
- 跳过大目录:
<集成> 与 Conductor 集成:
- 提供自动化项目发现
- 消除手动上下文收集
- 使棕地上手速度提高 80%
- 将项目上下文馈送到聊天界面
与其他技能集成:
- 规则选择器:基于检测到的框架自动选择规则
- 仓库 RAG:架构模式的语义搜索
- 依赖分析器:深度依赖分析 </集成>
<最佳实践>
- 渐进披露:从清单分析开始,需要时添加深度扫描
- 性能优先:为大项目跳过昂贵操作
- 优雅失败:处理缺失文件、解析错误
- 验证输出:始终根据架构验证
- 缓存结果:存储分析输出以供重用
- 增量更新:仅重新分析更改的文件 </最佳实践> </指令>
<示例> <使用示例> 程序化使用:
# 分析当前项目
node .claude/tools/project-analyzer/analyzer.mjs
# 分析特定目录
node .claude/tools/project-analyzer/analyzer.mjs /path/to/project
# 输出到文件
node .claude/tools/project-analyzer/analyzer.mjs --output .claude/context/artifacts/project-analysis.json
# 运行测试
node .claude/tools/project-analyzer/tests/analyzer.test.mjs
代理调用:
# 分析当前项目
分析此项目
# 生成全面分析
执行完整项目分析并保存到工件
# 快速分析(仅清单)
快速项目类型检测
</使用示例>
<格式化示例>
样本输出(.claude/context/artifacts/project-analysis.json):
{
"analysis_id": "analysis-llm-rules-20250115",
"project_type": "fullstack",
"analyzed_at": "2025-01-15T10:30:00.000Z",
"project_root": "C:\\dev\\projects\\LLM-RULES",
"stats": {
"total_files": 1243,
"total_lines": 125430,
"languages": {
"JavaScript": 45230,
"TypeScript": 38120,
"Markdown": 25680,
"JSON": 12400,
"YAML": 4000
},
"file_types": {
".js": 234,
".mjs": 156,
".ts": 89,
".md": 312,
".json": 145
},
"directories": 87,
"avg_file_size_lines": 101,
"largest_files": [
{
"path": ".claude/tools/enforcement-gate.mjs",
"lines": 1520
}
]
},
"frameworks": [
{
"name": "nextjs",
"version": "14.0.0",
"category": "framework",
"confidence": 1.0,
"source": "package.json"
},
{
"name": "react",
"version": "18.2.0",
"category": "framework",
"confidence": 1.0,
"source": "package.json"
}
],
"structure": {
"root_directories": [
{
"name": ".claude",
"purpose": "config",
"file_count": 543
},
{
"name": "conductor-main",
"purpose": "source",
"file_count": 234
}
],
"entry_points": [
{
"path": "conductor-main/src/index.ts",
"type": "main"
}
],
"architecture_pattern": "modular",
"module_system": "esm"
},
"dependencies": {
"production": 45,
"development": 23
},
"code_quality": {
"linting": {
"configured": true,
"tool": "eslint"
},
"formatting": {
"configured": true,
"tool": "prettier"
},
"testing": {
"framework": "vitest",
"test_files": 89,
"coverage_configured": true
},
"type_safety": {
"typescript": true,
"strict_mode": true
}
},
"tech_debt": {
"score": 35,
"indicators": [
{
"category": "complexity",
"severity": "medium",
"description": "3 个文件超过 1000 行",
"remediation_effort": "moderate"
}
]
},
"recommendations": [
{
"priority": "P1",
"category": "maintainability",
"title": "重构大文件",
"description": "将 > 1000 行的文件分解为更小的模块",
"effort": "moderate",
"impact": "high"
}
],
"metadata": {
"analyzer_version": "1.0.0",
"analysis_duration_ms": 2340,
"files_analyzed": 1243,
"files_skipped": 3420,
"errors": []
}
}
</格式化示例> </示例>
参考
有关从 Auto-Claude 分析框架中提取的其他检测模式,请参见:
references/auto-claude-patterns.md- 单仓库指标、SERVICE_INDICATORS、SERVICE_ROOT_FILES、基础设施检测、约定检测references/service-patterns.md- 服务类型检测(前端、后端、库)、框架特定模式、入口点检测references/database-patterns.md- 数据库配置文件模式、ORM 检测(Prisma、SQLAlchemy、TypeORM、Drizzle、Mongoose)、连接字符串模式references/route-patterns.md- Express、FastAPI、Flask、Django、Next.js、Go、Rust API 路由检测模式
这些参考提供了棕地代码库分析的全面正则表达式模式和检测逻辑。
内存协议(强制)
开始前:
阅读 .claude/context/memory/learnings.md
完成后:
- 新模式 ->
.claude/context/memory/learnings.md - 发现问题 ->
.claude/context/memory/issues.md - 做出决策 ->
.claude/context/memory/decisions.md
假设中断:如果不在内存中,则未发生。