Automated brownfield codebase analysis. Detects project type, frameworks, dependencies, architecture patterns, and generates comprehensive project profile. Essential for Conductor integration and onboarding existing projects.
References (archive): SCAFFOLD_SKILLS_ARCHIVE_MAP.md — ProjectAnalyzer monorepo/service detection from Auto-Claude-develop analysis/analyzers.
<identity> Project Analyzer - Automated brownfield codebase analysis for rapid project onboarding and understanding. </identity> <capabilities> - Detecting project type (frontend, backend, fullstack, library, cli, mobile, monorepo) - Identifying frameworks and libraries from manifests and structure - Generating file statistics and language breakdown - Mapping component relationships and module structure - Detecting architecture patterns (MVC, layered, microservices, etc.) - Analyzing dependency health and outdated packages - Identifying code quality indicators (linting, testing, type safety) - Detecting technical debt and anti-patterns - Generating prioritized improvement recommendations </capabilities> <instructions> <execution_process>Locate project root by finding manifest files:
Search for package manager files:
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)Identify project root:
Validate project root:
.git directoryClassify project based on manifest files and directory structure:
Frontend Projects:
src/components/, public/, assets/Backend Projects:
routes/, controllers/, models/, api/Fullstack Projects:
Library/Package Projects:
index.ts, lib/, dist/, build/library field in package.jsonCLI Projects:
bin field in package.jsonMobile Projects:
android/, ios/, mobile/Monorepo Projects:
workspaces in package.json, pnpm-workspace.yamlMicroservices Projects:
docker-compose.yml, service configsIdentify frameworks from manifest files and imports:
Read package.json dependencies (Node.js):
dependencies and devDependenciesRead requirements.txt (Python):
Analyze imports (optional deep scan):
Framework Categories:
Confidence Scoring:
Generate quantitative project statistics:
Count files by type:
node_modules/, .git/, dist/, build/Count lines of code:
Identify largest files:
Calculate averages:
Language Detection:
.ts, .tsx → TypeScript.js, .jsx → JavaScript.py → Python.go → Go.rs → Rust.java → Java.md → Markdown.json → JSON.yaml, .yml → YAMLAnalyze project structure and architecture:
Identify root directories:
src/, app/, lib/test/, __tests__/, cypress/config/, .config/docs/, documentation/dist/, build/, out/scripts/, bin/assets/, static/, public/Detect entry points:
index.ts, main.py, app.pyapp.ts, server.ts, app/page.tsxhandler.ts, lambda.tscli.ts, bin/Detect architecture pattern:
models/, views/, controllers/presentation/, business/, data/domain/, application/, infrastructure/Detect module system:
package.json for "type": "module" (ESM)import/export (ESM) vs require (CommonJS)Analyze dependency health:
Count dependencies:
Check for outdated packages (optional):
npm outdated or equivalentSecurity scan (optional):
npm audit or equivalentDetect code quality tooling:
Linting Configuration:
.eslintrc.json, eslint.config.js, ruff.tomlFormatting Configuration:
.prettierrc, pyproject.toml (Black/Ruff)Testing Framework:
Type Safety:
tsconfig.json"strict": trueIdentify common patterns and anti-patterns:
Good Practices:
Anti-Patterns:
Neutral Patterns:
Calculate technical debt score:
Debt Indicators:
Debt Score (0-100):
Remediation Effort:
Create prioritized improvement recommendations:
Categorize Recommendations:
Prioritize by Impact:
Estimate Effort and Impact:
Validate analysis output against schema:
Schema Validation:
project-analysis.schema.jsonOutput Metadata:
</execution_process>
<performance> **Performance Requirements**:node_modules/, .git/, dist/Integration with Other Skills:
<best_practices>
# Analyze current project
node .claude/tools/analysis/project-analyzer/analyzer.mjs
# Analyze specific directory
node .claude/tools/analysis/project-analyzer/analyzer.mjs /path/to/project
# Output to file
node .claude/tools/analysis/project-analyzer/analyzer.mjs --output .claude/context/artifacts/project-analysis.json
Agent Invocation:
# Analyze current project
Analyze this project
# Generate comprehensive analysis
Perform full project analysis and save to artifacts
# Quick analysis (manifest only)
Quick project type detection
</usage_example>
<formatting_example>
Sample Output (.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 files exceed 1000 lines",
"remediation_effort": "moderate"
}
]
},
"recommendations": [
{
"priority": "P1",
"category": "maintainability",
"title": "Refactor large files",
"description": "Break down files > 1000 lines into smaller modules",
"effort": "moderate",
"impact": "high"
}
],
"metadata": {
"analyzer_version": "1.0.0",
"analysis_duration_ms": 2340,
"files_analyzed": 1243,
"files_skipped": 3420,
"errors": []
}
}
</formatting_example> </examples>
When classifying files, directories, or components into categories, use weighted keyword scoring instead of simple string matching to prevent false positives:
| Signal Source | Score Weight | Example |
| -------------------- | ------------ | ----------------------------------------- |
| File path/URL | 3 points | /api/routes/ matches "API" category |
| File/class name | 2 points | AuthService.ts matches "Authentication" |
| File content/imports | 1 point | import express matches "Backend" |
Threshold: Require 2+ total points before assigning a category. Falls back to "other" if no category scores above threshold. This prevents weak single-signal matches from misclassifying components.
Category keywords (extend per project type):
For comprehensive project understanding, analyze three parallel streams:
Stream 1 — Code Analysis: AST patterns, framework detection, dependency graph, architecture classification. This is the existing core workflow (Steps 1-11).
Stream 2 — Documentation: README quality, API docs existence, inline doc coverage, changelog maintenance, contribution guides. Score: docFiles / totalFiles weighted by type.
Stream 3 — Community/Operations: Git activity (commit frequency, contributor count), CI/CD configuration, issue templates, PR templates, release workflow, Docker/container setup.
Combine all three streams into the output JSON under analysis.streams:
{
"streams": {
"code": { "score": 0.85, "findings": [...] },
"documentation": { "score": 0.60, "findings": [...] },
"operations": { "score": 0.75, "findings": [...] }
},
"compositeHealth": 0.73
}
Detect common design patterns with confidence scoring:
| Pattern | Detection Signal | Confidence Threshold |
| ---------- | ------------------------------------------- | -------------------- |
| Singleton | Private constructor + static instance | 0.80 |
| Factory | create* methods returning interface types | 0.70 |
| Observer | subscribe/on/emit/addEventListener | 0.70 |
| Strategy | Interface + multiple implementations | 0.60 |
| Decorator | Wrapper classes with same interface | 0.60 |
| Repository | Data access layer abstraction | 0.70 |
| Middleware | Chain-of-responsibility in request pipeline | 0.70 |
Output detected patterns in the analysis JSON with location, confidence, and evidence:
{
"patterns": [
{
"type": "Factory",
"category": "Creational",
"confidence": 0.85,
"location": "src/services/UserFactory.ts",
"evidence": ["createUser method", "returns IUser interface"]
}
]
}
For additional detection patterns extracted from the Auto-Claude analysis framework, see:
references/auto-claude-patterns.md - Monorepo indicators, SERVICE_INDICATORS, SERVICE_ROOT_FILES, infrastructure detection, convention detectionreferences/service-patterns.md - Service type detection (frontend, backend, library), framework-specific patterns, entry point detectionreferences/database-patterns.md - Database configuration file patterns, ORM detection (Prisma, SQLAlchemy, TypeORM, Drizzle, Mongoose), connection string patternsreferences/route-patterns.md - Express, FastAPI, Flask, Django, Next.js, Go, Rust API route detection patternsThese references provide comprehensive regex patterns and detection logic for brownfield codebase analysis.
Before starting:
Read .claude/context/memory/learnings.md
After completing:
.claude/context/memory/learnings.md.claude/context/memory/issues.md.claude/context/memory/decisions.mdASSUME INTERRUPTION: If it's not in memory, it didn't happen.
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer