591 lines
18 KiB
Markdown
591 lines
18 KiB
Markdown
You are tasked with creating a new project that follows AI-optimized documentation and structure patterns designed for efficient AI-to-AI code maintenance. This project should be self-describing, context-efficient, and progressively discoverable.
|
|
Core Setup Instructions
|
|
|
|
1. Initialize Project Structure
|
|
Create this exact directory structure:
|
|
project-root/
|
|
├── AI_README.md # 200-token complete system overview
|
|
├── PROJECT_MAP.md # Navigation and quick reference
|
|
├── CONVENTIONS.md # Project patterns and standards
|
|
├── CLAUDE.md # This file - AI interaction guide
|
|
├── CHANGELOG_AI.md # AI-focused change tracking
|
|
├── src/
|
|
│ ├── core/ # Stable, critical functionality
|
|
│ │ └── README.md # Core module descriptions
|
|
│ ├── features/ # Business logic modules
|
|
│ │ └── README.md # Feature development guide
|
|
│ ├── shared/ # Reusable utilities
|
|
│ │ └── README.md # Utility usage patterns
|
|
│ └── index.{ts|py} # Main entry point
|
|
├── docs/
|
|
│ ├── ARCHITECTURE.md # System design decisions
|
|
│ ├── TROUBLESHOOTING.md # Common issues and solutions
|
|
│ ├── dependencies.md # External dependency documentation
|
|
│ └── diagrams/ # Visual architecture representations
|
|
├── tests/
|
|
│ ├── README.md # Testing strategy
|
|
│ ├── fixtures/ # Shared test data
|
|
│ └── examples/ # Usage examples
|
|
├── templates/ # Code generation templates
|
|
│ └── README.md # Template usage guide
|
|
├── .ai/ # AI-specific metadata
|
|
│ ├── context.json # Context navigation for AI
|
|
│ ├── dependencies.yaml # Module dependency graph
|
|
│ └── shortcuts.md # Quick command reference
|
|
└── scripts/
|
|
└── setup.{sh|py} # Project initialization scripts
|
|
2. Create Foundation Files
|
|
AI_README.md
|
|
markdown# Project Name
|
|
|
|
## AI Quick Start (50 tokens)
|
|
[One paragraph describing what this system does, its primary purpose, and key technologies]
|
|
|
|
## Navigation Guide
|
|
- Start here: PROJECT_MAP.md
|
|
- Conventions: CONVENTIONS.md
|
|
- Architecture: docs/ARCHITECTURE.md
|
|
- AI Metadata: .ai/context.json
|
|
|
|
## Critical Context
|
|
- [List 3-5 things an AI must always know when working on this codebase]
|
|
|
|
## Primary Entry Points
|
|
- Main application: src/index.{ts|py}
|
|
- Core modules: src/core/README.md
|
|
- Feature modules: src/features/*/index.{ts|py}
|
|
PROJECT_MAP.md
|
|
markdown# Project Navigation Map
|
|
|
|
## System Overview
|
|
[2-3 sentences about the system architecture]
|
|
|
|
## Quick Navigation
|
|
|
|
### By Task
|
|
- **Adding a feature**: Start with templates/ → src/features/
|
|
- **Fixing bugs**: TROUBLESHOOTING.md → tests/ → src/
|
|
- **Modifying core**: Read CONVENTIONS.md first → src/core/
|
|
- **Adding tests**: tests/README.md → tests/examples/
|
|
|
|
### By Frequency
|
|
- **Most changed**: [List top 3 most frequently modified paths]
|
|
- **Most critical**: src/core/*
|
|
- **Most complex**: [List complex modules needing extra context]
|
|
|
|
## Module Map
|
|
\`\`\`
|
|
src/
|
|
├── core/
|
|
│ ├── config/ # Environment and app configuration
|
|
│ ├── database/ # Data layer abstractions
|
|
│ ├── logging/ # Centralized logging
|
|
│ └── security/ # Auth and security primitives
|
|
├── features/
|
|
│ └── [feature]/ # Each feature is self-contained
|
|
│ ├── index # Public API
|
|
│ ├── service # Business logic
|
|
│ ├── types # Type definitions
|
|
│ └── tests # Feature tests
|
|
└── shared/
|
|
├── utils/ # Pure utility functions
|
|
└── types/ # Shared type definitions
|
|
\`\`\`
|
|
|
|
## AI Interaction Guide
|
|
- **Before modifying**: Read .ai/context.json for the area you're working in
|
|
- **When debugging**: Start with src/core/logging
|
|
- **When adding features**: Use templates/ for consistent patterns
|
|
- **After changes**: Update CHANGELOG_AI.md and .ai/dependencies.yaml
|
|
CONVENTIONS.md
|
|
markdown# Project Conventions
|
|
|
|
## Code Style
|
|
|
|
### Naming Conventions
|
|
- **Files**: kebab-case.ts or snake_case.py
|
|
- **Classes**: PascalCase with descriptive names
|
|
- **Functions**: camelCase (JS/TS) or snake_case (Python), verb_noun pattern
|
|
- **Constants**: UPPER_SNAKE_CASE
|
|
- **Interfaces/Types**: PascalCase with 'I' prefix for interfaces (optional)
|
|
|
|
### Self-Documenting Code Principles
|
|
1. **Prefer clear naming over comments**
|
|
\`\`\`typescript
|
|
// Bad
|
|
const d = new Date(); // Gets current date
|
|
|
|
// Good
|
|
const currentDate = new Date();
|
|
\`\`\`
|
|
|
|
2. **Use type hints as documentation**
|
|
\`\`\`python
|
|
def process_order(
|
|
order_data: OrderDict,
|
|
validate: bool = True
|
|
) -> Result[Order, OrderError]:
|
|
"""Process order. See OrderDict for structure."""
|
|
pass
|
|
\`\`\`
|
|
|
|
3. **Function names should describe complete behavior**
|
|
\`\`\`typescript
|
|
// Bad: validate(data)
|
|
// Good: validateOrThrow(data)
|
|
// Good: validateAndReturnErrors(data)
|
|
\`\`\`
|
|
|
|
## Documentation Standards
|
|
|
|
### Progressive Disclosure Pattern
|
|
\`\`\`javascript
|
|
/**
|
|
* @ai-summary Handles payment processing
|
|
* @ai-details docs/payments/PROCESSING.md
|
|
* @ai-examples tests/examples/payment-processing.test.js
|
|
* @critical-context PCI compliance required, no card storage
|
|
*/
|
|
\`\`\`
|
|
|
|
### Required Annotations
|
|
- **Services/Classes**: @ai-summary (one line)
|
|
- **Complex functions**: HANDLES, THROWS, SIDE_EFFECTS
|
|
- **Security-sensitive code**: SAFETY comment
|
|
- **External dependencies**: DEPENDS comment
|
|
|
|
### When to Comment
|
|
ONLY add inline comments for:
|
|
- Regulatory/compliance requirements
|
|
- Non-obvious business logic
|
|
- Performance optimizations (with metrics)
|
|
- Security considerations
|
|
- Workarounds with issue references
|
|
|
|
## Structure Patterns
|
|
|
|
### Feature Module Structure
|
|
\`\`\`
|
|
features/[feature-name]/
|
|
├── index.{ts|py} # Public API (exports only)
|
|
├── service.{ts|py} # Business logic
|
|
├── repository.{ts|py} # Data access
|
|
├── types.{ts|py} # Type definitions
|
|
├── validators.{ts|py} # Input validation
|
|
├── README.md # Feature documentation
|
|
└── __tests__/ # Feature tests
|
|
\`\`\`
|
|
|
|
### Service Class Pattern
|
|
\`\`\`typescript
|
|
export class FeatureService {
|
|
constructor(
|
|
private repository: FeatureRepository,
|
|
private logger: Logger
|
|
) {}
|
|
|
|
// Public methods first, prefixed with action verb
|
|
async createFeature(data: FeatureInput): Promise<Result<Feature>> {
|
|
const validated = this.validateOrFail(data);
|
|
return this.repository.create(validated);
|
|
}
|
|
|
|
// Private helpers last, prefixed with underscore
|
|
private validateOrFail(data: unknown): FeatureInput {
|
|
// Validation logic
|
|
}
|
|
}
|
|
\`\`\`
|
|
|
|
## Testing Standards
|
|
|
|
### Test Naming
|
|
- Test files: [module].test.{ts|py} or test_[module].py
|
|
- Test names: test_should_[expected_behavior]_when_[condition]
|
|
- Use @ai-coverage to link tests to code
|
|
|
|
### Test Organization
|
|
\`\`\`python
|
|
class TestFeatureService:
|
|
"""
|
|
@ai-coverage FeatureService
|
|
@ai-fixtures tests/fixtures/features/
|
|
"""
|
|
|
|
def test_should_create_feature_when_data_valid(self):
|
|
# Arrange → Act → Assert pattern
|
|
pass
|
|
|
|
def test_should_reject_when_missing_required_fields(self):
|
|
pass
|
|
\`\`\`
|
|
|
|
## Git Commit Standards
|
|
- Format: "type(scope): description"
|
|
- Types: feat, fix, docs, refactor, test, chore
|
|
- Include "AI-CONTEXT:" line for significant changes
|
|
|
|
## Error Handling
|
|
- Use Result<T, E> pattern or explicit error types
|
|
- Never catch and ignore errors silently
|
|
- Log errors with context at catch point
|
|
- Throw early, catch late
|
|
|
|
## Performance Guidelines
|
|
- Document Big-O complexity for algorithms
|
|
- Add benchmarks for critical paths
|
|
- Use caching for expensive computations
|
|
- Profile before optimizing
|
|
.ai/context.json
|
|
json{
|
|
"version": "1.0.0",
|
|
"project_type": "[web-api|cli-tool|library|full-stack-app]",
|
|
"language": "[typescript|python|javascript]",
|
|
"context_budget": {
|
|
"always_load": [
|
|
"AI_README.md",
|
|
"CONVENTIONS.md"
|
|
],
|
|
"essential_paths": [
|
|
"src/core/",
|
|
"src/index.{ts|py}"
|
|
],
|
|
"conditional": {
|
|
"if_modifying_auth": [
|
|
"src/features/auth/",
|
|
"docs/auth/",
|
|
"src/core/security/"
|
|
],
|
|
"if_debugging": [
|
|
"src/core/logging/",
|
|
"TROUBLESHOOTING.md",
|
|
"tests/"
|
|
],
|
|
"if_adding_feature": [
|
|
"templates/feature/",
|
|
"src/features/README.md",
|
|
"CONVENTIONS.md#structure-patterns"
|
|
],
|
|
"if_modifying_database": [
|
|
"src/core/database/",
|
|
"migrations/",
|
|
"docs/database/"
|
|
]
|
|
}
|
|
},
|
|
"common_tasks": {
|
|
"add_endpoint": {
|
|
"template": "templates/endpoint.template",
|
|
"checklist": [
|
|
"Define route in router",
|
|
"Add request/response types",
|
|
"Implement handler",
|
|
"Add validation",
|
|
"Write tests",
|
|
"Update API documentation"
|
|
],
|
|
"examples": "tests/examples/endpoints/"
|
|
},
|
|
"add_feature": {
|
|
"template": "templates/feature/",
|
|
"checklist": [
|
|
"Create feature folder",
|
|
"Define types",
|
|
"Implement service",
|
|
"Add repository if needed",
|
|
"Write tests",
|
|
"Update dependencies.yaml",
|
|
"Add to feature index"
|
|
]
|
|
},
|
|
"debug_issue": {
|
|
"start_with": [
|
|
"Check TROUBLESHOOTING.md",
|
|
"Review recent CHANGELOG_AI.md",
|
|
"Check logs in src/core/logging",
|
|
"Run relevant tests"
|
|
]
|
|
}
|
|
},
|
|
"danger_zones": {
|
|
"src/core/security/": {
|
|
"warning": "Security-critical code",
|
|
"required_review": true,
|
|
"checklist": [
|
|
"Run security tests",
|
|
"Check for credential exposure",
|
|
"Verify input validation"
|
|
]
|
|
},
|
|
"migrations/": {
|
|
"warning": "Database schema changes",
|
|
"required_review": true,
|
|
"checklist": [
|
|
"Test rollback procedure",
|
|
"Verify data preservation",
|
|
"Check migration order"
|
|
]
|
|
},
|
|
"src/core/config/": {
|
|
"warning": "System configuration",
|
|
"checklist": [
|
|
"Update .env.example",
|
|
"Check all environments",
|
|
"Verify defaults are safe"
|
|
]
|
|
}
|
|
},
|
|
"dependencies": {
|
|
"external": {
|
|
"critical": ["framework", "database", "auth-library"],
|
|
"optional": ["monitoring", "analytics"]
|
|
},
|
|
"internal": {
|
|
"most_imported": ["src/core/logger", "src/shared/types"],
|
|
"most_dependent": ["src/core/database", "src/core/config"]
|
|
}
|
|
},
|
|
"testing": {
|
|
"test_command": "npm test | pytest",
|
|
"coverage_threshold": 80,
|
|
"critical_paths": [
|
|
"src/core/security",
|
|
"src/core/database",
|
|
"src/features/auth"
|
|
]
|
|
},
|
|
"performance": {
|
|
"bottlenecks": [],
|
|
"optimization_notes": [],
|
|
"benchmarks": "tests/benchmarks/"
|
|
}
|
|
}
|
|
.ai/dependencies.yaml
|
|
yaml# Module Dependency Graph
|
|
# Format: module -> depends_on, consumed_by, impact_level
|
|
|
|
version: 1.0.0
|
|
last_updated: [DATE]
|
|
|
|
modules:
|
|
core/config:
|
|
depends_on: []
|
|
consumed_by: ["*"] # Everything depends on config
|
|
critical: true
|
|
modification_impact: "high - requires full system test"
|
|
test_command: "npm test core/config"
|
|
|
|
core/database:
|
|
depends_on: ["core/config", "core/logging"]
|
|
consumed_by: ["features/*", "migrations"]
|
|
critical: true
|
|
modification_impact: "high - affects all data operations"
|
|
test_command: "npm test core/database"
|
|
|
|
core/logging:
|
|
depends_on: ["core/config"]
|
|
consumed_by: ["*"]
|
|
critical: true
|
|
modification_impact: "medium - affects debugging capability"
|
|
test_command: "npm test core/logging"
|
|
|
|
core/security:
|
|
depends_on: ["core/config", "core/database", "core/logging"]
|
|
consumed_by: ["features/auth", "api/middleware"]
|
|
critical: true
|
|
modification_impact: "critical - security review required"
|
|
test_command: "npm test core/security"
|
|
|
|
features/[example]:
|
|
depends_on: ["core/*", "shared/utils"]
|
|
consumed_by: ["api/routes/[example]"]
|
|
critical: false
|
|
modification_impact: "low - isolated feature"
|
|
test_command: "npm test features/[example]"
|
|
|
|
# Dependency rules
|
|
rules:
|
|
- "Features cannot depend on other features"
|
|
- "Core modules cannot depend on features"
|
|
- "Shared utilities cannot depend on core or features"
|
|
- "All modules must depend on core/config"
|
|
|
|
# Import cycles to avoid
|
|
forbidden_cycles:
|
|
- ["core/database", "core/security", "core/database"]
|
|
|
|
# High-risk modification paths
|
|
high_risk_paths:
|
|
- description: "Authentication flow"
|
|
modules: ["core/security", "features/auth", "api/middleware/auth"]
|
|
test_suite: "npm test:auth:full"
|
|
|
|
- description: "Data persistence layer"
|
|
modules: ["core/database", "migrations", "features/*/repository"]
|
|
test_suite: "npm test:database:full"
|
|
3. Create Template Files
|
|
templates/feature/index.template
|
|
typescript/**
|
|
* @ai-summary [Feature description in one line]
|
|
* @ai-details docs/features/[feature-name].md
|
|
* @critical-context [Any critical information]
|
|
*/
|
|
|
|
export * from './types';
|
|
export * from './service';
|
|
export { [FeatureName]Repository } from './repository';
|
|
templates/feature/service.template
|
|
typescript/**
|
|
* @ai-summary Handles [feature] business logic
|
|
* @ai-examples tests/examples/[feature]/
|
|
*/
|
|
export class [FeatureName]Service {
|
|
constructor(
|
|
private repository: [FeatureName]Repository,
|
|
private logger: Logger
|
|
) {}
|
|
|
|
/**
|
|
* HANDLES: [What it processes]
|
|
* THROWS: [Error types]
|
|
* SIDE_EFFECTS: [External changes]
|
|
*/
|
|
async create[FeatureName](
|
|
data: [FeatureName]Input
|
|
): Promise<Result<[FeatureName], [FeatureName]Error>> {
|
|
// Validate -> Process -> Persist -> Return
|
|
const validated = this.validateOrFail(data);
|
|
const processed = this.processBusinessRules(validated);
|
|
return this.repository.create(processed);
|
|
}
|
|
|
|
private validateOrFail(data: unknown): [FeatureName]Input {
|
|
// Validation logic
|
|
throw new Error('Not implemented');
|
|
}
|
|
|
|
private processBusinessRules(data: [FeatureName]Input): [FeatureName]Data {
|
|
// Business logic transformations
|
|
throw new Error('Not implemented');
|
|
}
|
|
}
|
|
4. Project-Specific Setup Commands
|
|
Based on the project type, run these initialization commands:
|
|
bash# For TypeScript projects
|
|
npm init -y
|
|
npm install --save-dev typescript @types/node prettier eslint
|
|
npx tsc --init
|
|
|
|
# For Python projects
|
|
python -m venv venv
|
|
pip install black pytest mypy pylint
|
|
|
|
# Initialize git with proper ignores
|
|
git init
|
|
echo "node_modules/\nvenv/\n.env\n*.log\n.DS_Store" > .gitignore
|
|
|
|
# Create initial environment file
|
|
echo "# Development Environment Variables\nNODE_ENV=development\nLOG_LEVEL=debug" > .env.example
|
|
5. Initial CHANGELOG_AI.md Entry
|
|
markdown# AI-Focused Changelog
|
|
|
|
## [Date] - Project Initialization
|
|
**Created**: Initial project structure
|
|
**Architecture**: [Chosen architecture pattern]
|
|
**Key Technologies**: [List main technologies]
|
|
**AI Context**:
|
|
- Project follows AI-optimized documentation patterns
|
|
- Self-describing code structure implemented
|
|
- Progressive disclosure documentation in place
|
|
**Entry Points**:
|
|
- Start with AI_README.md
|
|
- Conventions in CONVENTIONS.md
|
|
- Navigation via PROJECT_MAP.md
|
|
Instructions for Claude Code
|
|
When creating a new project with these standards:
|
|
|
|
Start by asking the user:
|
|
|
|
Project type (API, CLI tool, web app, library)
|
|
Primary language (TypeScript, Python, JavaScript)
|
|
Key features needed initially
|
|
Any specific frameworks or libraries required
|
|
|
|
|
|
Then systematically:
|
|
|
|
Create the complete directory structure
|
|
Generate all foundation files with project-specific content
|
|
Set up the .ai/ metadata directory
|
|
Create initial templates based on project type
|
|
Initialize version control and package management
|
|
Write the first entry in CHANGELOG_AI.md
|
|
|
|
|
|
Customize based on project type:
|
|
|
|
API: Add OpenAPI specs, route templates, middleware patterns
|
|
CLI: Add command templates, argument parsing patterns
|
|
Library: Add export patterns, public API documentation
|
|
Full-stack: Add frontend/backend separation, API contracts
|
|
|
|
|
|
For each file you create:
|
|
|
|
Ensure it follows the self-documenting principles
|
|
Add appropriate @ai-* annotations
|
|
Include type hints/interfaces
|
|
Create corresponding test file structure
|
|
Update .ai/context.json with new paths
|
|
|
|
|
|
Before completing setup:
|
|
|
|
Verify all imports resolve correctly
|
|
Ensure templates have clear replacement markers
|
|
Check that navigation paths in documentation are accurate
|
|
Confirm .ai/dependencies.yaml reflects actual structure
|
|
Test that the project runs with minimal setup
|
|
|
|
|
|
Final output should include:
|
|
|
|
Complete file structure
|
|
All content for foundation files
|
|
Setup instructions in a setup.md
|
|
Initial test file examples
|
|
A "Getting Started for AI" section in AI_README.md
|
|
|
|
|
|
|
|
Remember: The goal is to create a codebase that another AI can understand and modify efficiently with minimal context loading. Every decision should optimize for clarity and discoverability.
|
|
Example First Response
|
|
When you run this setup, respond with:
|
|
I'll create an AI-optimized project structure for your [project type]. This setup will follow AI-to-AI communication patterns for maximum clarity and minimal context usage.
|
|
|
|
## Project Configuration
|
|
- Type: [selected type]
|
|
- Language: [selected language]
|
|
- Architecture: [chosen pattern]
|
|
|
|
## Creating Structure...
|
|
[Show the directory tree being created]
|
|
|
|
## Generating Foundation Files...
|
|
[List each file as it's created]
|
|
|
|
## Project Ready!
|
|
|
|
### Next Steps for AI Interaction:
|
|
1. Read AI_README.md for system overview
|
|
2. Check CONVENTIONS.md before making changes
|
|
3. Use PROJECT_MAP.md for navigation
|
|
4. Refer to .ai/context.json for task-specific guidance
|
|
|
|
### For Human Developers:
|
|
1. Run: [setup command]
|
|
2. Configure: Copy .env.example to .env
|
|
3. Install: [package manager] install
|
|
4. Test: [test command]
|
|
|
|
The project is now optimized for AI maintenance and collaboration! |