Files
FoundryVTT/CLAUDE_TEMPLATE.md
2025-11-06 14:04:48 +01:00

1096 lines
28 KiB
Markdown

# [Project Name]
> **Version**: 1.0.0 | **Last Updated**: YYYY-MM-DD | **Maintainer**: [Your Name/Team]
## Project Overview
### Purpose
Brief 2-3 sentence description of what this project does and why it exists.
### Key Objectives
- Primary goal or feature 1
- Primary goal or feature 2
- Primary goal or feature 3
### Project Type
- [ ] Web Application
- [ ] API/Backend Service
- [ ] CLI Tool
- [ ] Library/Package
- [ ] Mobile App
- [ ] Desktop Application
- [ ] Other: _________________
### Target Users/Audience
Who is this project built for? What problems does it solve for them?
---
## Technology Stack
### Core Technologies
- **Language(s)**: [e.g., Python 3.11, TypeScript 5.0, JavaScript ES6+]
- **Framework(s)**: [e.g., React 18, Django 4.2, Express.js]
- **Runtime**: [e.g., Node.js 18+, Python 3.11+]
### Frontend (if applicable)
- **UI Framework**: [e.g., React, Vue, Angular, Svelte]
- **Styling**: [e.g., Tailwind CSS, CSS Modules, Styled Components]
- **State Management**: [e.g., Redux, Zustand, Context API]
- **Build Tool**: [e.g., Vite, Webpack, Turbopack]
### Backend (if applicable)
- **Framework**: [e.g., Express, FastAPI, Django, Rails]
- **Database**: [e.g., PostgreSQL 15, MongoDB 6, MySQL 8]
- **ORM/Query Builder**: [e.g., Prisma, SQLAlchemy, TypeORM]
- **Authentication**: [e.g., JWT, OAuth 2.0, Passport.js]
### Infrastructure & DevOps
- **Hosting**: [e.g., AWS, Vercel, Railway, Heroku]
- **CI/CD**: [e.g., GitHub Actions, GitLab CI, CircleCI]
- **Containers**: [e.g., Docker, Docker Compose]
- **Monitoring**: [e.g., Sentry, DataDog, Prometheus]
### Testing
- **Test Framework**: [e.g., Jest, Pytest, Vitest, Mocha]
- **E2E Testing**: [e.g., Playwright, Cypress, Selenium]
- **Test Coverage Tool**: [e.g., Coverage.py, Istanbul, c8]
### Development Tools
- **Package Manager**: [e.g., npm, pnpm, yarn, pip, poetry]
- **Linting**: [e.g., ESLint, Pylint, Ruff]
- **Formatting**: [e.g., Prettier, Black, rustfmt]
- **Type Checking**: [e.g., TypeScript, mypy, Flow]
---
## Project Structure
### Directory Layout
```
project-root/
├── src/ # Source code
│ ├── components/ # Reusable components
│ ├── pages/ # Page components or routes
│ ├── services/ # Business logic and API calls
│ ├── utils/ # Utility functions
│ ├── hooks/ # Custom React hooks (if applicable)
│ ├── types/ # TypeScript type definitions
│ └── config/ # Configuration files
├── tests/ # Test files
│ ├── unit/ # Unit tests
│ ├── integration/ # Integration tests
│ └── e2e/ # End-to-end tests
├── public/ # Static assets
├── docs/ # Documentation
├── scripts/ # Build and utility scripts
├── .claude/ # Claude Code configuration
│ ├── commands/ # Custom slash commands
│ ├── skills/ # Agent skills
│ ├── hooks/ # Event hooks
│ └── settings.json # Claude settings
└── config/ # Application configuration
```
### Key Files
- **Entry Point**: [e.g., `src/index.ts`, `src/main.py`, `app.js`]
- **Configuration**: [e.g., `config/app.config.ts`, `settings.py`]
- **Routes/API**: [e.g., `src/routes/`, `src/api/`]
- **Database Models**: [e.g., `src/models/`, `src/db/schema.ts`]
### Module Organization
Explain how code is organized into modules/packages and the reasoning behind the structure.
---
## Code Style & Standards
### Naming Conventions
#### Variables & Functions
- Use `camelCase` for variables and functions (JavaScript/TypeScript)
- Use `snake_case` for variables and functions (Python)
- Use descriptive names that reveal intent
- Avoid single-letter variables except in loops or mathematical contexts
```typescript
// Good
const userProfile = getUserProfile();
const isAuthenticated = checkAuth();
// Avoid
const x = getUser();
const flag = check();
```
#### Classes & Components
- Use `PascalCase` for classes and React components
- Name classes with nouns that describe what they represent
- Name components based on what they render
```typescript
// Good
class UserRepository { }
function UserProfileCard() { }
// Avoid
class userData { }
function component1() { }
```
#### Constants
- Use `UPPER_SNAKE_CASE` for constants
- Group related constants in enums or objects
```typescript
// Good
const MAX_RETRY_ATTEMPTS = 3;
const API_BASE_URL = process.env.API_URL;
// Avoid
const maxretries = 3;
```
#### Files & Folders
- Use `kebab-case` for file and folder names
- Match file name to primary export
- Use `.test.ts` suffix for test files
- Use `.spec.ts` for specification files
```
user-profile.tsx
user-repository.ts
user-profile.test.tsx
api-client.config.ts
```
### Code Organization
#### File Size
- Keep files under 300 lines when possible
- Split large files into smaller, focused modules
- One component/class per file (exceptions for tightly coupled small helpers)
#### Function Complexity
- Functions should do one thing well
- Keep functions under 50 lines when possible
- Extract complex logic into well-named helper functions
- Maximum 3-4 parameters; use options objects for more
```typescript
// Good - focused function
function calculateTotalPrice(items: Item[]): number {
return items.reduce((sum, item) => sum + item.price, 0);
}
// Avoid - doing too much
function processOrder(items, user, payment, shipping, discount) {
// 100+ lines of mixed concerns
}
```
#### Import Organization
Order imports in this sequence:
1. External dependencies
2. Internal modules (absolute imports)
3. Relative imports
4. Type imports (if separate)
5. Styles
```typescript
// External
import React from 'react';
import { useQuery } from '@tanstack/react-query';
// Internal
import { apiClient } from '@/services/api';
import { UserRepository } from '@/repositories/user';
// Relative
import { Button } from './components/Button';
import { formatDate } from './utils/date';
// Types
import type { User } from '@/types';
// Styles
import './styles.css';
```
### Comments & Documentation
#### When to Comment
- **DO**: Explain *why* something is done, not *what* is done
- **DO**: Document complex algorithms or business logic
- **DO**: Add TODOs with tickets/issues: `// TODO(#123): refactor this`
- **DO**: Explain workarounds or non-obvious solutions
- **DON'T**: State the obvious
- **DON'T**: Leave commented-out code (use git history)
```typescript
// Good - explains why
// Using a delay here to work around race condition in the API
// See issue #456 for details
await delay(100);
// Avoid - states the obvious
// Set user to null
user = null;
```
#### Docstrings/JSDoc
Document all public APIs, exported functions, and complex internal functions:
```typescript
/**
* Calculates the user's subscription renewal date
*
* @param user - The user object containing subscription info
* @param includeGracePeriod - Whether to add the 7-day grace period
* @returns ISO 8601 date string of the renewal date
* @throws {ValidationError} If user has no active subscription
*
* @example
* const renewalDate = calculateRenewalDate(user, true);
* // Returns: "2024-12-01T00:00:00Z"
*/
function calculateRenewalDate(
user: User,
includeGracePeriod: boolean = false
): string {
// implementation
}
```
### Error Handling
#### Strategy
- Use typed errors/exceptions
- Fail fast with clear error messages
- Never swallow errors silently
- Log errors with context
- Return errors, don't just throw (for critical paths)
```typescript
// Good
try {
const user = await fetchUser(id);
if (!user) {
throw new NotFoundError(`User ${id} not found`);
}
return user;
} catch (error) {
logger.error('Failed to fetch user', { userId: id, error });
throw error;
}
// Avoid
try {
const user = await fetchUser(id);
return user;
} catch (error) {
// Silent failure
}
```
### TypeScript/Type Hints Specific
#### Type Safety
- Enable strict mode in `tsconfig.json`
- Avoid `any` type; use `unknown` when type is truly unknown
- Define explicit return types for functions
- Use branded types for IDs and sensitive data
```typescript
// Good
function getUser(id: UserId): Promise<User | null> {
// implementation
}
// Avoid
function getUser(id: any): Promise<any> {
// implementation
}
```
### Performance Considerations
- Avoid premature optimization
- Use memoization for expensive calculations
- Implement pagination for large datasets
- Use lazy loading for components and routes
- Profile before optimizing
---
## Testing Requirements
### Test Coverage Goals
- **Minimum Coverage**: 80% overall
- **Critical Paths**: 100% coverage required
- **New Features**: 90%+ coverage for new code
- **Bug Fixes**: Add regression test with every fix
### Testing Pyramid
```
/\
/E2E\ <- 10% (Critical user flows)
/------\
/Integ. \ <- 20% (API/DB integration)
/----------\
/ Unit \ <- 70% (Pure functions, logic)
/--------------\
```
### Test Organization
#### Unit Tests
- Test pure functions and business logic
- Mock external dependencies
- One assertion per test (generally)
- Use descriptive test names
```typescript
describe('calculateTotalPrice', () => {
it('should return 0 for empty cart', () => {
expect(calculateTotalPrice([])).toBe(0);
});
it('should sum all item prices correctly', () => {
const items = [
{ price: 10 },
{ price: 20 },
{ price: 30 }
];
expect(calculateTotalPrice(items)).toBe(60);
});
it('should handle single item cart', () => {
expect(calculateTotalPrice([{ price: 15 }])).toBe(15);
});
});
```
#### Integration Tests
- Test component integration
- Test API endpoints
- Test database queries
- Use test database or mocks
#### E2E Tests
- Test critical user journeys
- Test authentication flows
- Test payment/checkout processes
- Run against staging environment
### Test Naming Convention
```
describe('[Component/Function Name]', () => {
it('should [expected behavior] when [condition]', () => {
// test implementation
});
});
```
### Before Committing
- [ ] All tests pass locally
- [ ] New code has corresponding tests
- [ ] No test files skipped or disabled
- [ ] Test coverage meets minimum thresholds
---
## Git & Version Control
### Branch Strategy
#### Branch Types
- `main` / `master` - Production-ready code
- `develop` - Integration branch for features
- `feature/*` - New features (`feature/user-authentication`)
- `bugfix/*` - Bug fixes (`bugfix/login-error`)
- `hotfix/*` - Urgent production fixes (`hotfix/security-patch`)
- `release/*` - Release preparation (`release/v1.2.0`)
#### Branch Naming
- Use lowercase with hyphens
- Include ticket/issue number when applicable
- Be descriptive but concise
```bash
# Good
feature/user-profile-page
bugfix/fix-memory-leak-in-cache
hotfix/critical-security-patch
# Avoid
feature/new-stuff
bugfix/fix
my-branch
```
### Commit Message Format
Follow the Conventional Commits specification:
```
<type>(<scope>): <subject>
<body>
<footer>
```
#### Types
- **feat**: New feature
- **fix**: Bug fix
- **docs**: Documentation changes
- **style**: Formatting, missing semi-colons, etc. (no code change)
- **refactor**: Code refactoring (no functional changes)
- **test**: Adding or updating tests
- **chore**: Maintenance tasks, dependency updates
- **perf**: Performance improvements
- **ci**: CI/CD changes
- **build**: Build system or external dependency changes
#### Examples
```bash
# Simple commit
feat: add user authentication
# With scope
feat(auth): implement JWT token refresh
# With body and footer
fix(api): resolve race condition in user creation
The user creation endpoint was creating duplicate users when
called rapidly. Added a database constraint and improved the
locking mechanism to prevent this issue.
Closes #123
Reviewed-by: @username
```
#### Commit Message Rules
- Use imperative mood ("add" not "added" or "adds")
- Don't capitalize first letter after type
- No period at the end of subject
- Keep subject under 50 characters
- Wrap body at 72 characters
- Reference issues and PRs in footer
### Pull Request Guidelines
#### PR Title
Follow commit message format: `type(scope): description`
#### PR Description Template
```markdown
## Summary
Brief description of changes
## Type of Change
- [ ] Bug fix
- [ ] New feature
- [ ] Breaking change
- [ ] Documentation update
## Changes Made
- Change 1
- Change 2
- Change 3
## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing completed
## Screenshots (if applicable)
[Add screenshots for UI changes]
## Related Issues
Closes #123
Related to #456
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-reviewed my code
- [ ] Commented complex logic
- [ ] Updated documentation
- [ ] No new warnings
- [ ] Tests pass locally
- [ ] Added tests for new features
```
#### Before Creating PR
- [ ] Branch is up to date with base branch
- [ ] All tests pass
- [ ] Code has been self-reviewed
- [ ] No debugging code or console logs
- [ ] Documentation updated if needed
#### Code Review Process
1. Automated checks must pass (CI/CD, linting, tests)
2. At least 1 approval required (adjust based on team size)
3. All comments addressed or discussed
4. No unresolved conversations
5. Squash or rebase before merge (team preference)
---
## Development Workflow
### Initial Setup
```bash
# Clone repository
git clone <repository-url>
cd <project-name>
# Install dependencies
npm install # or: pip install -r requirements.txt
# Set up environment variables
cp .env.example .env
# Edit .env with your local configuration
# Set up database (if applicable)
npm run db:setup # or: python manage.py migrate
# Run tests to verify setup
npm test
# Start development server
npm run dev
```
### Daily Development Workflow
```bash
# 1. Update your local main branch
git checkout main
git pull origin main
# 2. Create feature branch
git checkout -b feature/your-feature-name
# 3. Make changes, commit frequently
git add .
git commit -m "feat: implement user profile page"
# 4. Run tests before pushing
npm test
# 5. Push branch
git push origin feature/your-feature-name
# 6. Create Pull Request on GitHub/GitLab
# 7. After PR approval, merge and clean up
git checkout main
git pull origin main
git branch -d feature/your-feature-name
```
### Running Tests
```bash
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Run specific test file
npm test path/to/test-file.test.ts
# Run E2E tests
npm run test:e2e
```
### Building & Running
```bash
# Development mode (with hot reload)
npm run dev
# Production build
npm run build
# Run production build locally
npm start
# Type checking (TypeScript)
npm run type-check
# Linting
npm run lint
# Format code
npm run format
```
---
## Environment Configuration
### Environment Variables
Create a `.env` file based on `.env.example`:
```bash
# Application
NODE_ENV=development
PORT=3000
API_URL=http://localhost:3000/api
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/dbname
DB_SSL=false
# Authentication
JWT_SECRET=your-super-secret-key-change-in-production
JWT_EXPIRES_IN=7d
SESSION_SECRET=another-secret-key
# External Services
STRIPE_SECRET_KEY=sk_test_...
STRIPE_PUBLISHABLE_KEY=pk_test_...
SENDGRID_API_KEY=SG...
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_REGION=us-east-1
# Feature Flags
ENABLE_ANALYTICS=true
ENABLE_DEBUG_MODE=false
# Logging
LOG_LEVEL=info
```
### Environment-Specific Config
- **Development**: `.env` (local only, not committed)
- **Staging**: `.env.staging` (committed, non-sensitive values)
- **Production**: Environment variables set in hosting platform
---
## API Documentation
### API Structure
- **Base URL**: `https://api.example.com/v1`
- **Authentication**: Bearer token in Authorization header
- **Response Format**: JSON
- **Error Format**: Consistent error objects
### Authentication
```http
POST /auth/login
Content-Type: application/json
{
"email": "user@example.com",
"password": "password"
}
Response:
{
"token": "jwt-token-here",
"user": { "id": 1, "email": "user@example.com" }
}
```
### Standard Endpoints Pattern
```
GET /api/resources - List all
GET /api/resources/:id - Get one
POST /api/resources - Create
PUT /api/resources/:id - Update (full)
PATCH /api/resources/:id - Update (partial)
DELETE /api/resources/:id - Delete
```
### Response Codes
- `200` - Success
- `201` - Created
- `204` - No Content (successful deletion)
- `400` - Bad Request (validation errors)
- `401` - Unauthorized (not authenticated)
- `403` - Forbidden (not authorized)
- `404` - Not Found
- `422` - Unprocessable Entity (semantic errors)
- `500` - Internal Server Error
---
## Database
### Schema Overview
Brief description of main tables/collections and their relationships.
### Migrations
```bash
# Create new migration
npm run migration:create -- AddUserTable
# Run migrations
npm run migration:run
# Rollback last migration
npm run migration:revert
# Generate migration from schema changes
npm run migration:generate
```
### Seeding
```bash
# Seed database with test data
npm run db:seed
# Reset and reseed
npm run db:reset
```
---
## Deployment
### Deployment Strategy
- **Development**: Auto-deploy from `develop` branch to dev environment
- **Staging**: Auto-deploy from `main` branch to staging
- **Production**: Manual deploy from tagged releases
### Pre-Deployment Checklist
- [ ] All tests passing in CI/CD
- [ ] Code review completed and approved
- [ ] Database migrations prepared (if needed)
- [ ] Environment variables configured
- [ ] Monitoring and logging verified
- [ ] Rollback plan documented
### Deployment Commands
```bash
# Build for production
npm run build
# Run production server
npm start
# Docker build
docker build -t project-name:latest .
# Docker compose
docker-compose up -d
```
---
## Troubleshooting & Common Issues
### Issue: Tests Failing Locally
**Symptoms**: Tests pass in CI but fail locally
**Solution**:
- Clear node_modules and reinstall: `rm -rf node_modules && npm install`
- Check Node.js version matches CI
- Verify environment variables are set correctly
### Issue: Build Errors
**Symptoms**: Build fails with TypeScript errors
**Solution**:
- Run `npm run type-check` to see all type errors
- Check that all dependencies are installed
- Verify tsconfig.json settings
### Issue: Database Connection Fails
**Symptoms**: Cannot connect to database
**Solution**:
- Verify DATABASE_URL in .env
- Check database is running: `docker ps` or service status
- Test connection: `psql $DATABASE_URL`
---
## Dependencies & Third-Party Services
### Core Dependencies
List and briefly explain key dependencies:
- **[dependency-name]** (v1.2.3) - Purpose and why it's used
- **[another-dependency]** (v2.0.0) - Purpose and why it's used
### External Services
- **Authentication**: Auth0 / Firebase Auth / Custom JWT
- **Email**: SendGrid / Mailgun
- **Payment**: Stripe / PayPal
- **Storage**: AWS S3 / Cloudinary
- **Monitoring**: Sentry / DataDog
- **Analytics**: Google Analytics / Mixpanel
---
## Security Considerations
### Security Best Practices
- All passwords must be hashed (bcrypt, minimum 10 rounds)
- Use parameterized queries (prevent SQL injection)
- Validate and sanitize all user input
- Implement rate limiting on all public endpoints
- Use HTTPS in production (enforce with HSTS)
- Set secure HTTP headers (CSP, X-Frame-Options, etc.)
- Regularly update dependencies (`npm audit`)
- Never commit secrets to git
- Use environment variables for sensitive config
- Implement CSRF protection for state-changing operations
### Secrets Management
- Development: `.env` file (not committed)
- Production: Use secret management service (AWS Secrets Manager, Vault, etc.)
- Rotate secrets regularly
- Use different secrets for each environment
---
## Performance Optimization
### Frontend Performance
- Code splitting and lazy loading
- Image optimization (WebP, responsive images)
- Minimize bundle size (tree shaking, dead code elimination)
- Use CDN for static assets
- Implement caching strategies
### Backend Performance
- Database query optimization (indexes, query planning)
- Caching layer (Redis) for frequently accessed data
- Connection pooling for database connections
- API response pagination
- Rate limiting to prevent abuse
### Monitoring
- Track response times
- Monitor error rates
- Set up alerts for anomalies
- Regular performance audits
---
## Team Conventions
### Communication
- **Slack/Discord**: Quick questions, daily updates
- **GitHub Issues**: Bug reports, feature requests
- **Pull Requests**: Code discussion
- **Weekly Standup**: Team sync (if applicable)
### Code Review Standards
- Review within 24 hours
- Be constructive and specific
- Approve only if you'd be comfortable deploying it
- Ask questions if something is unclear
- Suggest improvements, don't demand perfection
### Documentation
- Update docs with code changes
- Document "why" decisions in comments or ADRs
- Keep README.md current
- Update API docs when endpoints change
---
## Additional Resources
### Documentation
- [Full API Documentation](docs/api.md)
- [Architecture Decision Records](docs/adr/)
- [Contributing Guide](CONTRIBUTING.md)
- [Changelog](CHANGELOG.md)
### External Links
- [Project Website](https://example.com)
- [Issue Tracker](https://github.com/org/repo/issues)
- [CI/CD Dashboard](https://ci-cd-link)
- [Deployment Logs](https://logs-link)
### Useful Commands Reference
```bash
# Quick command reference
npm run dev # Start development server
npm test # Run tests
npm run build # Build for production
npm run lint # Lint code
npm run format # Format code
npm run type-check # TypeScript type checking
npm run db:migrate # Run database migrations
```
---
## Claude Code Specific Instructions
### Mandatory Tooling Usage Policy
**CRITICAL**: Claude Code must maximize the use of available advanced features for efficiency and quality:
#### 🎯 Agent Usage (REQUIRED)
- **ALWAYS** consider using specialized agents for their intended tasks:
- `Explore` agent: For codebase exploration, file pattern searches, keyword searches
- `test-engineer`: For generating comprehensive test suites
- `code-reviewer`: For code quality and security reviews
- `refactoring-specialist`: For code cleanup and optimization
- `debugger`: For systematic bug diagnosis
- `architect`: For system design and technical planning
- `documentation-writer`: For comprehensive documentation
- `security-analyst`: For security reviews and vulnerability assessments
- **When NOT to use agents**:
- Single file reads with known path
- Simple, straightforward edits
- Tasks that can be completed in 1-2 tool calls
**IF YOU DECIDE NOT TO USE AN AGENT**: State explicitly at the beginning of your response:
```
🔧 Agent Decision: Not using agents for this task because [specific reason: e.g., "single file read", "straightforward edit", "no codebase exploration needed"]
```
#### ⚡ Slash Command Usage (REQUIRED)
- **ALWAYS** check available slash commands before starting complex tasks
- Use custom commands when they match the task:
- `/test [file-or-path]`: Generate and run tests
- `/review [file-or-path]`: Review code quality
- `/optimize [file-or-function]`: Performance optimization
- `/implement [feature-description]`: Feature implementation
- `/explain [file-or-selection]`: Code explanation
- `/analyze [path]`: Comprehensive code analysis
- `/adr [operation]`: Manage Architectural Decision Records
- `/scaffold [type] [name]`: Generate boilerplate code
**IF YOU DECIDE NOT TO USE SLASH COMMANDS**: State explicitly:
```
🔧 Slash Command Decision: Not using slash commands because [specific reason: e.g., "no matching command available", "task too specific for generic command"]
```
#### 🔌 MCP Server Usage (REQUIRED)
- **ALWAYS** leverage MCP servers for their specialized capabilities:
- `serena`: Advanced semantic code search, symbol manipulation, project memory
- `context7`: Up-to-date library documentation
- `fetch`: Web content retrieval
- `sequential-thinking`: Complex problem decomposition
- `memory`: Knowledge graph for persistent context
- `playwright`: Browser automation
- `windows-mcp`: Windows desktop interaction
**IF YOU DECIDE NOT TO USE MCP SERVERS**: State explicitly:
```
🔧 MCP Server Decision: Not using MCP servers because [specific reason: e.g., "no relevant MCP capability for this task", "using built-in tools is more direct"]
```
### When Working with This Project
Claude should:
-**ALWAYS** provide tooling decision statements at the start of each task
- ✅ Follow all code style guidelines defined above
- ✅ Run tests before suggesting commits (consider using `/test` command)
- ✅ Use the defined commit message format
- ✅ Ask for clarification on ambiguous requirements
- ✅ Suggest tests for new features (consider using `test-engineer` agent)
- ✅ Reference issue numbers in commits when applicable
- ✅ Maintain consistency with existing code patterns
- ✅ Update documentation when changing functionality
- ✅ Use parallel tool calls whenever possible for efficiency
- ✅ Leverage specialized agents, slash commands, and MCP servers to their full extent
### Important Project Context
**Critical Files to Understand**:
- [List 3-5 most important files for understanding the codebase]
- [e.g., `src/index.ts` - Application entry point]
- [e.g., `src/routes/api.ts` - API route definitions]
**Common Tasks**:
1. **Adding a new feature**: Create feature branch, implement with tests, update docs, create PR
2. **Fixing a bug**: Reproduce issue, write failing test, fix bug, verify test passes, commit
3. **Refactoring**: Ensure tests pass before and after, maintain behavior, improve code quality
**Project-Specific Patterns**:
- [Describe any unique patterns or architectural decisions]
- [e.g., "We use repository pattern for data access"]
- [e.g., "All API responses are wrapped in a Result type"]
### Skills & Commands Available
- Review available skills: `/skills` or check `.claude/skills/`
- Review available commands: `/help` or check `.claude/commands/`
### Task Initiation Requirements
**MANDATORY**: At the START of EVERY task response, provide:
#### 🎯 Tooling Strategy Decision
**Task Analysis**: [Brief description of the task]
**Tooling Decisions**:
- **Agents**: Using [agent-name] / Not using agents - Reason: [specific justification]
- **Slash Commands**: Using [/command] / Not using - Reason: [specific justification]
- **MCP Servers**: Using [server: tool] / Not using - Reason: [specific justification]
- **Approach**: [Overall strategy for completing the task]
---
### Task Completion Status Messages
**IMPORTANT**: At the end of EVERY response where you performed work, provide this summary:
#### 📊 Task Completion Summary
**What Was Done**: [Brief description of tasks completed]
**Features Involved**:
- Agents: [Agent1, Agent2, or None - with usage justification]
- Slash Commands: [/command1, /command2, or None - with usage justification]
- MCP Servers: [Server1: tool1/tool2, Server2: tool3, or None - with usage justification]
- Core Tools: [Read, Write, Edit, Glob, Grep, Bash, WebFetch, WebSearch, Task]
- Files Modified: [file1.md, file2.ts, or None]
- Performance: [Parallel ops, extended thinking, or N/A]
**Efficiency Notes**: [Any observations about tooling choices and their impact]
---
## Changelog
### Version 1.0.0 (YYYY-MM-DD)
- Initial project setup
- Core features implemented
- Documentation created
---
## License
[Specify license - MIT, Apache 2.0, Proprietary, etc.]
---
## Contact & Support
**Maintainers**:
- [Name] - [@github-handle](https://github.com/handle) - email@example.com
**Getting Help**:
1. Check this documentation first
2. Search existing GitHub issues
3. Ask in team chat
4. Create new GitHub issue
---
**Last Updated**: YYYY-MM-DD
**Template Version**: 1.0.0