home / skills / quqi-ai / project-analyzer-skill / project-analyzer
npx playbooks add skill quqi-ai/project-analyzer-skill --skill project-analyzerReview the files below or copy the command above to add this skill to your agents.
---
name: project-analyzer
description: Analyzes Java project structure and generates comprehensive documentation including tech stack, architecture, modules, configuration, internal SDKs, and development guidelines. Use this skill when you need to understand a Java/Spring Boot codebase, onboard new developers, generate project documentation, or provide context for AI-assisted development. Triggers include "analyze project structure", "generate project documentation", "what is the project architecture", or when starting work on an unfamiliar codebase.
---
# Project Analyzer
Analyzes Java project structure and generates comprehensive documentation to help developers and AI agents understand the codebase.
## Core Principles
- **Read-only**: Only analyze code, never modify it
- **Evidence-based**: All conclusions must be based on observable code or configuration
- **No speculation**: If information isn't available in the codebase, state it explicitly
- **No side effects**: Do not execute builds, call networks, or run tests
## Analysis Workflow
### 1. Initial Discovery
Start by identifying the project type and structure:
1. **Check for multi-module structure**: Look for parent `pom.xml` with `<modules>` section
2. **Identify project root**: Find the main application entry point (`@SpringBootApplication`)
3. **Check build files**: Examine `pom.xml` or `build.gradle` for dependencies
### 2. Technology Stack Analysis
Analyze dependencies and configurations to identify:
**Frameworks:**
- Spring Boot version (check `pom.xml` for `spring-boot-starter-parent`)
- Spring Cloud components (Gateway, Feign, Config, etc.)
- Persistence frameworks (MyBatis, JPA, MyBatis-Plus)
- Web frameworks (Spring MVC, WebFlux)
**Middleware & Infrastructure:**
- Message queues (check for RabbitMQ, Kafka, RocketMQ dependencies)
- Caching (Redis, Caffeine, Ehcache)
- Service discovery (Nacos, Eureka, Consul)
- Databases (check `application.yml` for datasource configurations)
**Development Tools:**
- Lombok, MapStruct, Swagger/OpenAPI
- Testing frameworks (JUnit, Mockito, TestContainers)
**Search patterns:**
```bash
# Find Spring Boot version
grep -r "spring-boot-starter-parent" --include="pom.xml"
# Find middleware dependencies
grep -r "spring-boot-starter-data-redis\|rabbitmq\|kafka\|nacos" --include="pom.xml"
# Find database configurations
grep -r "url:\|driver-class-name:" --include="*.yml" --include="*.yaml" --include="*.properties"
```
### 3. Project Structure Analysis
Map out the module and package organization:
**For multi-module projects:**
1. Read parent `pom.xml` to list all modules
2. For each module, identify its purpose from naming and dependencies
3. Common module patterns:
- `*-api`: API definitions, DTOs, interfaces
- `*-service`: Business logic implementation
- `*-web`: Web controllers, REST APIs
- `*-dao` / `*-mapper`: Data access layer
- `*-common`: Shared utilities, constants
- `*-model` / `*-entity`: Domain models
**Package structure analysis:**
```bash
# Find main package structure
find . -type d -name "java" -o -name "com" -o -name "cn" | head -20
# Identify common layers
find . -name "controller" -o -name "service" -o -name "dao" -o -name "mapper" -o -name "config"
```
### 4. Key Components Discovery
Identify critical components in order of importance:
**Application Entry Points:**
- Classes annotated with `@SpringBootApplication`
- Main methods
**Configuration Classes:**
- Classes with `@Configuration`
- Files in `config/` packages
- `application.yml`, `application.properties`, `bootstrap.yml`
**Core Business Modules:**
- Service interfaces and implementations
- Domain models and entities
- Key controllers for main features
**Infrastructure Components:**
- Database mappers/repositories
- Message queue consumers/producers
- Scheduled tasks (`@Scheduled`)
- Filters, interceptors, aspect classes
**Search patterns:**
```bash
# Find application entry points
grep -r "@SpringBootApplication" --include="*.java"
# Find configuration classes
grep -r "@Configuration" --include="*.java"
# Find scheduled tasks
grep -r "@Scheduled" --include="*.java"
# Find MQ consumers
grep -r "@RabbitListener\|@KafkaListener" --include="*.java"
```
### 5. Configuration Analysis
Document all configuration sources:
**Spring configuration files:**
- `application.yml` / `application.properties` (default profile)
- `application-{profile}.yml` (environment-specific)
- `bootstrap.yml` (for Spring Cloud Config)
**External configuration:**
- Check for Nacos configuration references
- Environment variables (look for `${ENV_VAR}` patterns)
- System properties
**Configuration hierarchy:**
1. List all configuration files found
2. Identify active profiles from config or startup parameters
3. Document key configurations: datasource, Redis, MQ, Nacos, ports
### 6. Internal SDK & Dependencies
Identify internal/custom libraries:
**Search for internal artifacts:**
```bash
# Find internal dependencies (usually from company groupId)
grep -r "<groupId>com\.company\|<groupId>cn\.company" --include="pom.xml"
# Find local JAR references
grep -r "systemPath\|scope>system" --include="pom.xml"
# Check lib directories
find . -type d -name "lib" -o -name "libs"
```
**Document for each internal SDK:**
- Artifact name and version
- Purpose (infer from naming and usage in code)
- Key classes/interfaces it provides
- Where it's used in the project
**Search for usage:**
```bash
# Find imports from internal packages
grep -r "import com\.company" --include="*.java" | cut -d: -f2 | sort | uniq
```
### 7. Development Guidelines Extraction
Extract rules and patterns from the codebase:
**Architectural patterns:**
- Observe consistent patterns (e.g., "All services implement interfaces")
- Layer separation rules (e.g., "Controllers only call services, never DAOs")
- Naming conventions
**Common utilities:**
- Response wrapper classes
- Exception handling patterns
- Validation patterns
**Infer restrictions:**
- If all external API calls go through a specific client class → "All external calls must use XxxClient"
- If all database operations use MyBatis → "Direct JDBC is not used"
- If all AI calls use a specific interface → "All AI calls must go through AiClient"
**Local development requirements:**
- Check `README.md` or `docs/` for setup instructions
- Identify required services from configuration (Redis, Nacos, MySQL, etc.)
- Look for Docker Compose files
**Search patterns:**
```bash
# Find README files
find . -name "README*" -o -name "readme*"
# Find Docker Compose
find . -name "docker-compose*.yml"
# Find documentation
find . -type d -name "doc" -o -name "docs"
```
## Output Format
Generate a Markdown document with the following structure:
```markdown
# {Project Name} - Project Structure Documentation
> Generated on {date} | Analysis Type: Static Code Analysis
## 📋 Project Overview
- **Project Name**: {name}
- **Type**: {Single Module / Multi-Module}
- **Primary Language**: Java {version}
- **Build Tool**: Maven / Gradle
- **Main Framework**: Spring Boot {version}
## 🛠️ Technology Stack
### Core Frameworks
- Spring Boot {version}
- Spring Cloud {components if present}
- {Other frameworks}
### Middleware & Infrastructure
- **Service Discovery**: {Nacos / Eureka / None}
- **Configuration Center**: {Nacos / Config Server / None}
- **Cache**: {Redis / Caffeine / None}
- **Message Queue**: {RabbitMQ / Kafka / None}
- **Database**: {MySQL / PostgreSQL / etc.}
### Development Tools
- {Lombok, MapStruct, Swagger, etc.}
## 🏗️ Project Architecture
### Module Structure
{For multi-module projects, list modules}
```
project-root/
├── module-api/ - {Purpose}
├── module-service/ - {Purpose}
├── module-web/ - {Purpose}
└── module-common/ - {Purpose}
```
### Package Structure
{Describe package organization}
```
com.company.project/
├── controller/ - REST API endpoints
├── service/ - Business logic
│ ├── impl/
│ └── {domain}/
├── dao/mapper/ - Data access
├── model/entity/ - Domain models
├── config/ - Configuration classes
└── util/ - Utility classes
```
### Layered Architecture
```
┌─────────────────────────────────┐
│ Controller Layer │ ← HTTP requests
├─────────────────────────────────┤
│ Service Layer │ ← Business logic
├─────────────────────────────────┤
│ DAO/Mapper Layer │ ← Data access
├─────────────────────────────────┤
│ Infrastructure Layer │ ← Redis, MQ, External APIs
└─────────────────────────────────┘
```
## 🔑 Key Components
### Application Entry Point
- `{path/to/Application.java}` - Main application class
### Core Business Modules
- **{Feature 1}**: {path} - {Description}
- **{Feature 2}**: {path} - {Description}
### Configuration Files
- `{path/to/application.yml}` - Main configuration
- `{path/to/application-dev.yml}` - Dev environment
- `{path/to/application-prod.yml}` - Production environment
### Infrastructure Components
- **Database Mappers**: `{path}` - {Count} mapper interfaces
- **Scheduled Tasks**: `{path}` - {Description}
- **Message Consumers**: `{path}` - {Description}
## 📦 Internal SDKs & Dependencies
### Internal Dependencies
1. **{artifact-name}** (`{groupId}:{artifactId}:{version}`)
- **Purpose**: {Inferred purpose}
- **Key Classes**: {List main classes/interfaces}
- **Used In**: {Where it's imported}
2. **{another-sdk}**
- ...
### External Key Dependencies
- {List critical 3rd party libraries}
## ⚙️ Configuration & Environment
### Configuration Sources
1. **Spring Configuration**: `application.yml`, `application-{profile}.yml`
2. **Nacos Configuration**: {If applicable}
- Namespace: {value}
- Group: {value}
- DataId: {value}
3. **Environment Variables**: {List if found}
### Key Configurations
- **Server Port**: {port}
- **Database**: {connection details location}
- **Redis**: {configuration location}
- **Nacos**: {server address}
## 📐 Development Guidelines
### Architectural Rules
{Rules observed from code patterns}
- **Layer Separation**: Controllers must not directly access DAO layer
- **Service Interfaces**: All services implement interfaces in {package}
- **{Other patterns}**
### Conventions
- **Naming**: {Observed naming patterns}
- **Response Format**: All APIs return `Result<T>` wrapper (see `{path}`)
- **Exception Handling**: Unified exception handler at `{path}`
### Recommended Extension Points
- **Add New Feature**: Create service in `{package}`, controller in `{package}`
- **Add New Entity**: Place in `{package}`, create mapper in `{package}`
- **Add Configuration**: Add to `{config class}` or `application.yml`
### Prohibited Practices
{Inferred from codebase patterns}
- Do not bypass {XxxClient} for {external service} calls
- Do not use direct JDBC; use {MyBatis/JPA}
- Do not put business logic in Controller layer
### Local Development Requirements
**Required Services:**
- {Service 1} (e.g., MySQL 5.7+)
- {Service 2} (e.g., Redis 6.0+)
- {Service 3} (e.g., Nacos 2.0+)
**Setup Steps:**
{If found in README or docs}
**Startup Order:**
1. {Step 1}
2. {Step 2}
## 📚 Additional Resources
- **Documentation**: `{path to docs folder}`
- **API Documentation**: {Swagger URL if configured}
- **README**: `{path to README}`
---
*Note: This documentation was generated through static code analysis. For runtime behavior or deployment specifics, consult the team or deployment documentation.*
```
## Tips for Effective Analysis
1. **Start broad, then deep**: Begin with project structure, then drill into specific areas
2. **Use parallel searches**: Run multiple grep/find commands together when possible
3. **Verify with multiple sources**: Cross-reference pom.xml with actual code usage
4. **Be explicit about gaps**: If you can't find something, say "Not found in codebase" rather than guessing
5. **Focus on patterns**: Look for repeated patterns to infer architectural rules
6. **Respect scope**: Analyze only what's in the project; don't make assumptions about external systems
## When to Use This Skill
Trigger this skill when:
- User asks to "analyze project structure" or "generate project documentation"
- Starting work on an unfamiliar codebase
- Onboarding new team members or AI agents
- User asks "what is the architecture" or "how is this project organized"
- User needs context about internal SDKs or development guidelines
- User asks about tech stack, dependencies, or configuration
## What NOT to Do
- ❌ Do not run builds (`mvn clean install`, `gradle build`)
- ❌ Do not execute tests
- ❌ Do not make network calls or query external services
- ❌ Do not modify any code or configuration files
- ❌ Do not speculate about things not visible in code
- ❌ Do not assume technologies based on company conventions; only state what's observable