18 KiB
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
- 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
- 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
-
Prefer clear naming over comments ```typescript // Bad const d = new Date(); // Gets current date
// Good const currentDate = new Date(); ```
-
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 ```
-
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"
- 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'); } }
- 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:
- Read AI_README.md for system overview
- Check CONVENTIONS.md before making changes
- Use PROJECT_MAP.md for navigation
- Refer to .ai/context.json for task-specific guidance
For Human Developers:
- Run: [setup command]
- Configure: Copy .env.example to .env
- Install: [package manager] install
- Test: [test command]
The project is now optimized for AI maintenance and collaboration!