项目分析器Skill project-analyzer

项目分析器是一款自动化工具,用于深入分析现有代码库,快速检测项目类型、识别框架和依赖、分析架构模式、评估代码质量,并生成详细的项目配置文件。关键词:自动化项目分析、代码库检测、架构模式识别、项目 onboarding、依赖分析、技术债务评估。

架构设计 0 次安装 0 次浏览 更新于 3/10/2026

名称: 项目分析器 描述: 自动化棕地代码库分析。检测项目类型、框架、依赖关系、架构模式,并生成全面的项目配置文件。对于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: 识别项目根目录

通过查找清单文件定位项目根目录:

  1. 搜索包管理器文件

    • package.json(Node.js/JavaScript/TypeScript)
    • requirements.txtpyproject.tomlsetup.py(Python)
    • go.mod(Go)
    • Cargo.toml(Rust)
    • pom.xmlbuild.gradle(Java/Maven/Gradle)
    • composer.json(PHP)
  2. 识别项目根目录

    • 包含主要包管理器文件的目录
    • 处理单仓库(多个 package.json 文件)
    • 检测工作区配置
  3. 验证项目根目录

    • 检查 .git 目录
    • 验证源代码目录是否存在
    • 确保清单文件可解析

步骤 2: 检测项目类型

根据清单文件和目录结构对项目进行分类:

  1. 前端项目

    • 指标:React、Vue、Angular、Svelte 依赖
    • 目录:src/components/public/assets/
    • 框架:Next.js、Nuxt.js、Gatsby、Vite
  2. 后端项目

    • 指标:Express、FastAPI、Django、Flask、Gin 依赖
    • 目录:routes/controllers/models/api/
    • 框架:Next.js API 路由、FastAPI、Express
  3. 全栈项目

    • 指标:前端和后端框架
    • 目录:组合的前端 + 后端结构
    • 框架:Next.js、Remix、SvelteKit、Nuxt.js
  4. 库/包项目

    • 指标:无应用特定目录
    • 文件:index.tslib/dist/build/
    • 清单:package.json 中的 library 字段
  5. CLI 项目

    • 指标:package.json 中的 bin 字段
    • 文件:CLI 入口点、命令解析器
    • 依赖:Commander、Yargs、Inquirer
  6. 移动项目

    • 指标:React Native、Flutter、Ionic 依赖
    • 文件:android/ios/mobile/
    • 框架:React Native、Expo、Flutter
  7. 单仓库项目

    • 指标:package.json 中的 workspacespnpm-workspace.yaml
    • 结构:子目录中的多个包
    • 工具:Turborepo、Nx、Lerna
  8. 微服务项目

    • 指标:多个服务目录
    • 文件:docker-compose.yml、服务配置
    • 结构:基于服务的组织

步骤 3: 框架检测

从清单文件和导入中识别框架:

  1. 读取 package.json 依赖(Node.js):

    • 解析 dependenciesdevDependencies
    • 检测框架版本
    • 按类型分类(框架、UI 库、测试等)
  2. 读取 requirements.txt(Python):

    • 解析 Python 依赖
    • 检测 FastAPI、Django、Flask
    • 识别版本约束
  3. 分析导入(可选深度扫描):

    • 扫描源文件中的导入语句
    • 检测使用与声明的依赖
    • 识别框架特定模式
  4. 框架类别

    • 框架: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
  5. 置信度评分

    • 1.0:依赖中列出的框架
    • 0.8:从导入中检测到的框架
    • 0.6:从结构中推断的框架

步骤 4: 文件统计

生成定量项目统计:

  1. 按类型计数文件

    • 使用常见扩展的全局模式
    • 排除:node_modules/.git/dist/build/
    • 按语言/文件类型分组
  2. 计算代码行数

    • 读取源文件并计数行数
    • 排除空行和注释(可选)
    • 计算每种语言的总 LOC
  3. 识别最大文件

    • 跟踪文件大小(行数)
    • 报告前 10 大文件
    • 标记 > 1000 行的文件(违反微服务原则)
  4. 计算平均值

    • 平均文件大小(行数)
    • 平均目录深度
    • 每个目录的文件数
  5. 语言检测

    • 映射扩展名到语言:
      • .ts.tsx → TypeScript
      • .js.jsx → JavaScript
      • .py → Python
      • .go → Go
      • .rs → Rust
      • .java → Java
      • .md → Markdown
      • .json → JSON
      • .yaml.yml → YAML

步骤 5: 结构分析

分析项目结构和架构:

  1. 识别根目录

    • 按目的分类目录:
      • 源代码src/app/lib/
      • 测试test/__tests__/cypress/
      • 配置config/.config/
      • 文档docs/documentation/
      • 构建dist/build/out/
      • 脚本scripts/bin/
      • 资产assets/static/public/
  2. 检测入口点

    • 主入口:index.tsmain.pyapp.py
    • 应用入口:app.tsserver.tsapp/page.tsx
    • 处理器:handler.tslambda.ts
    • CLI:cli.tsbin/
  3. 检测架构模式

    • MVCmodels/views/controllers/
    • 分层presentation/business/data/
    • 六边形domain/application/infrastructure/
    • 微服务:多个服务目录
    • 模块化:基于功能的组织
    • 扁平:所有文件在 src/
  4. 检测模块系统

    • 检查 package.json 中的 "type": "module"(ESM)
    • 扫描 import/export(ESM) vs require(CommonJS)
    • 识别混合模块系统

步骤 6: 依赖分析

分析依赖健康状态:

  1. 计数依赖

    • 生产依赖
    • 开发依赖
    • 总依赖计数
  2. 检查过时包(可选):

    • 运行 npm outdated 或等效命令
    • 解析输出以获取过时包
    • 识别主要版本更新(破坏性更改)
  3. 安全扫描(可选):

    • 运行 npm audit 或等效命令
    • 按严重性识别漏洞
    • 标记关键安全问题

步骤 7: 代码质量指标

检测代码质量工具:

  1. 代码检查配置

    • 检测:.eslintrc.jsoneslint.config.jsruff.toml
    • 工具:ESLint、Ruff、Flake8、Pylint
    • 如果配置则运行代码检查器(可选)
  2. 格式化配置

    • 检测:.prettierrcpyproject.toml(Black/Ruff)
    • 工具:Prettier、Black、Ruff
  3. 测试框架

    • 检测:Jest、Vitest、Pytest、Cypress
    • 计数测试文件
    • 检查覆盖率配置
  4. 类型安全

    • 检测 TypeScript:tsconfig.json
    • 检查严格模式:"strict": true
    • 检测 Python 类型:mypy、pyright

步骤 8: 模式检测

识别常见模式和反模式:

  1. 良好实践

    • 模块化组件结构
    • 全面的测试覆盖率
    • 启用 TypeScript 严格模式
    • 存在 CI/CD 配置
  2. 反模式

    • 大文件(> 1000 行)
    • 缺少测试
    • 过时依赖
    • 无代码检查配置
  3. 中性模式

    • 特定架构选择
    • 框架特定模式

步骤 9: 技术债务分析

计算技术债务分数:

  1. 债务指标

    • 过时依赖:计数过时包
    • 缺少测试:低测试文件比例
    • 死代码:未使用的导入/导出(可选)
    • 复杂性:大文件、深度嵌套
    • 文档:缺少 README、文档
    • 安全:已知漏洞
    • 性能:捆绑包大小、加载时间
  2. 债务分数(0-100):

    • 0-20:优秀健康
    • 21-40:良好健康,次要问题
    • 41-60:中等债务,需要关注
    • 61-80:高债务,建议重构
    • 81-100:关键债务,需要重大 overhaul
  3. 修复努力

    • 轻微:< 1 小时
    • 次要:1-4 小时
    • 中等:1-3 天
    • 重大:1-2 周
    • 巨大:> 2 周

步骤 10: 生成建议

创建优先改进建议:

  1. 分类建议

    • 安全:关键漏洞、过时认证
    • 性能:捆绑包优化、懒加载
    • 可维护性:重构大文件、添加测试
    • 测试:增加覆盖率、添加 E2E 测试
    • 文档:添加 README、API 文档
    • 架构:改进模块化、关注点分离
    • 依赖:更新包、移除未使用
  2. 按影响优先

    • P0:关键安全、阻塞生产
    • P1:高影响、影响可靠性
    • P2:中等影响、提高质量
    • P3:低影响、可有可无
  3. 估计努力和影响

    • 努力:轻微、次要、中等、重大、巨大
    • 影响:低、中、高、关键

步骤 11: 验证输出

根据架构验证分析输出:

  1. 架构验证

    • 根据 project-analysis.schema.json 验证
    • 确保所有必需字段存在
    • 检查数据类型和格式
  2. 输出元数据

    • 分析器版本
    • 分析持续时间(毫秒)
    • 分析文件计数
    • 跳过文件计数
    • 遇到的错误

</执行过程>

<性能> 性能要求

  • 目标:典型项目(< 10k 文件)< 30 秒
  • 优化
    • 跳过大目录:node_modules/.git/dist/
    • 使用并行文件处理
    • 缓存结果以进行增量分析
    • 限制深度扫描到必要文件
    • 对大文件计数使用流式处理 </性能>

<集成> 与 Conductor 集成

  • 提供自动化项目发现
  • 消除手动上下文收集
  • 使棕地上手速度提高 80%
  • 将项目上下文馈送到聊天界面

与其他技能集成

  • 规则选择器:基于检测到的框架自动选择规则
  • 仓库 RAG:架构模式的语义搜索
  • 依赖分析器:深度依赖分析 </集成>

<最佳实践>

  1. 渐进披露:从清单分析开始,需要时添加深度扫描
  2. 性能优先:为大项目跳过昂贵操作
  3. 优雅失败:处理缺失文件、解析错误
  4. 验证输出:始终根据架构验证
  5. 缓存结果:存储分析输出以供重用
  6. 增量更新:仅重新分析更改的文件 </最佳实践> </指令>

<示例> <使用示例> 程序化使用

# 分析当前项目
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

假设中断:如果不在内存中,则未发生。