Project Setup
Core Principles
- Strong Typing: Strict mode enabled; types catch bugs at compile time
- Strong Linting: Strict rules by default; easier to disable than add later
- Auto Formatting: Automated and consistent; no manual formatting
- Checks at Every Stage: Pre-commit hooks + CI; catch issues early
- Co-located Tests:
foo.ts→foo.test.ts; obvious what's tested - Behavior-Focused: Test what code does, not how; mock only external boundaries
Workflow
- Check
reference/for language guide (Python, TypeScript) - If no guide: WebSearch "[language] project setup best practices"
- Follow setup: typing → linting → formatting → testing → pre-commit → CI
- For existing projects: migrate incrementally in same order
Reference Files
reference/python.md- uv, ruff, basedpyright, pytestreference/typescript.md- pnpm, ESLint, Prettier, Vitestreference/common-patterns.md- Testing philosophy, CI patterns, security
Tool Selection
Prefer tools that are: ecosystem standard, actively maintained, strict by default, fast, well-integrated (editor + CI + pre-commit).
Quality Checklist
- [ ] Typing: Strictest mode, no
anywithout justification - [ ] Linting: Strict rules, warnings as errors
- [ ] Formatting: Auto-format on save + pre-commit
- [ ] Testing: Co-located tests, coverage >80%
- [ ] Pre-commit: Format, lint, type-check
- [ ] CI: Same checks + coverage reporting
- [ ] README: Setup instructions
- [ ] All checks pass on initial commit