docs: establish mandatory code quality regime for Claude Code
Add comprehensive documentation and tooling to enforce code quality checks before every commit. This regime persists across all Claude Code sessions via `.claude/` directory files. **The Regime** (mandatory before every commit): 1. TypeScript type checking (0 errors) 2. Biome formatting (auto-applied) 3. Linting with auto-fix (0 errors, 0 warnings) 4. Final verification **Implementation:** - `.claude/CLAUDE.md`: Quick reference for Claude Code sessions - `.claude/CODE_QUALITY_REGIME.md`: Detailed regime documentation - `npm run pre-commit`: Single command to run all checks **Why no pre-commit hooks:** Avoided for religious reasons. Claude Code is responsible for enforcing quality checks through session-persistent documentation. **Usage:** ```bash # Before every commit npm run pre-commit # Or run steps individually npm run type-check npm run format npm run lint:fix npm run lint ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
48
apps/web/.claude/CLAUDE.md
Normal file
48
apps/web/.claude/CLAUDE.md
Normal file
@@ -0,0 +1,48 @@
|
||||
# Claude Code Instructions for apps/web
|
||||
|
||||
## MANDATORY: Pre-Commit Quality Checks
|
||||
|
||||
**BEFORE EVERY COMMIT**, you MUST run and pass these checks:
|
||||
|
||||
```bash
|
||||
npm run pre-commit
|
||||
```
|
||||
|
||||
This command runs:
|
||||
1. `tsc --noEmit` - Type checking (must have 0 errors)
|
||||
2. `npm run format` - Auto-format all code
|
||||
3. `npm run lint:fix` - Auto-fix lint issues
|
||||
4. `npm run lint` - Verify 0 errors, 0 warnings
|
||||
|
||||
**DO NOT COMMIT** until all checks pass with zero errors and zero warnings.
|
||||
|
||||
## Workflow
|
||||
|
||||
When asked to make changes and commit:
|
||||
|
||||
1. Make your code changes
|
||||
2. Run `npm run pre-commit`
|
||||
3. If it fails, fix the issues and run again
|
||||
4. Only create commits after all checks pass
|
||||
5. Push immediately after committing
|
||||
|
||||
## Details
|
||||
|
||||
See `.claude/CODE_QUALITY_REGIME.md` for complete documentation.
|
||||
|
||||
## No Pre-Commit Hooks
|
||||
|
||||
This project does not use git pre-commit hooks for religious reasons.
|
||||
You (Claude Code) are responsible for enforcing code quality before commits.
|
||||
|
||||
## Key Scripts
|
||||
|
||||
- `npm run pre-commit` - Run all quality checks (use before every commit)
|
||||
- `npm run type-check` - TypeScript type checking
|
||||
- `npm run format` - Format code with Biome
|
||||
- `npm run lint` - Check linting
|
||||
- `npm run lint:fix` - Fix linting issues automatically
|
||||
|
||||
---
|
||||
|
||||
**Remember: Always run `npm run pre-commit` before creating commits.**
|
||||
106
apps/web/.claude/CODE_QUALITY_REGIME.md
Normal file
106
apps/web/.claude/CODE_QUALITY_REGIME.md
Normal file
@@ -0,0 +1,106 @@
|
||||
# Code Quality Regime
|
||||
|
||||
**MANDATORY**: Before ANY commit, Claude MUST run these checks and fix all issues.
|
||||
|
||||
## Pre-Commit Checklist (Always Required)
|
||||
|
||||
Run these commands in order. All must pass with 0 errors and 0 warnings:
|
||||
|
||||
```bash
|
||||
# 1. Type check
|
||||
npm run type-check
|
||||
|
||||
# 2. Format code
|
||||
npm run format
|
||||
|
||||
# 3. Lint and fix
|
||||
npm run lint:fix
|
||||
|
||||
# 4. Verify clean state
|
||||
npm run lint && npm run type-check
|
||||
```
|
||||
|
||||
## Quick Command (Run All Checks)
|
||||
|
||||
```bash
|
||||
npm run pre-commit
|
||||
```
|
||||
|
||||
This runs all checks in the correct order and fails if any step fails.
|
||||
|
||||
## The Regime Rules
|
||||
|
||||
### 1. TypeScript Errors: ZERO TOLERANCE
|
||||
- Run `npm run type-check` before every commit
|
||||
- Fix ALL TypeScript errors
|
||||
- No `@ts-ignore` or `@ts-expect-error` without explicit justification
|
||||
|
||||
### 2. Formatting: AUTOMATIC
|
||||
- Run `npm run format` before every commit
|
||||
- Biome handles all formatting automatically
|
||||
- Never commit unformatted code
|
||||
|
||||
### 3. Linting: ZERO ERRORS, ZERO WARNINGS
|
||||
- Run `npm run lint:fix` to auto-fix issues
|
||||
- Then run `npm run lint` to verify 0 errors, 0 warnings
|
||||
- Fix any remaining issues manually
|
||||
|
||||
### 4. Commit Order
|
||||
1. Make code changes
|
||||
2. Run `npm run pre-commit`
|
||||
3. If any check fails, fix and repeat
|
||||
4. Only commit when all checks pass
|
||||
5. Push immediately after commit
|
||||
|
||||
## Why No Pre-Commit Hooks?
|
||||
|
||||
This project intentionally avoids pre-commit hooks due to religious constraints.
|
||||
Instead, Claude Code is responsible for enforcing this regime through:
|
||||
|
||||
1. **This documentation** - Always visible and reference-able
|
||||
2. **Package.json scripts** - Easy to run checks
|
||||
3. **Session persistence** - This file lives in `.claude/` and is read by every session
|
||||
|
||||
## For Claude Code Sessions
|
||||
|
||||
**READ THIS FILE AT THE START OF EVERY SESSION WHERE YOU WILL COMMIT CODE**
|
||||
|
||||
When asked to commit:
|
||||
1. Check if you've run `npm run pre-commit` (or all 4 steps individually)
|
||||
2. If not, STOP and run the checks first
|
||||
3. Fix all issues before proceeding with the commit
|
||||
4. Only create commits when all checks pass
|
||||
|
||||
## Scripts Reference
|
||||
|
||||
```json
|
||||
{
|
||||
"type-check": "tsc --noEmit",
|
||||
"format": "npx @biomejs/biome format . --write",
|
||||
"lint": "npx @biomejs/biome lint . && npx eslint .",
|
||||
"lint:fix": "npx @biomejs/biome lint . --write && npx eslint . --fix",
|
||||
"check": "npx @biomejs/biome check .",
|
||||
"pre-commit": "npm run type-check && npm run format && npm run lint:fix && npm run lint"
|
||||
}
|
||||
```
|
||||
|
||||
## Emergency Override
|
||||
|
||||
If you absolutely MUST commit with failing checks:
|
||||
1. Document WHY in the commit message
|
||||
2. Create a follow-up task to fix the issues
|
||||
3. Only use for emergency hotfixes
|
||||
|
||||
## Verification
|
||||
|
||||
After following this regime, you should see:
|
||||
```
|
||||
✓ Type check passed (0 errors)
|
||||
✓ Formatting applied
|
||||
✓ Linting passed (0 errors, 0 warnings)
|
||||
✓ Ready to commit
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**This regime is non-negotiable. Every commit must pass these checks.**
|
||||
@@ -11,6 +11,7 @@
|
||||
"format": "npx @biomejs/biome format . --write",
|
||||
"format:check": "npx @biomejs/biome format .",
|
||||
"check": "npx @biomejs/biome check .",
|
||||
"pre-commit": "npm run type-check && npm run format && npm run lint:fix && npm run lint",
|
||||
"test": "vitest",
|
||||
"test:run": "vitest run",
|
||||
"type-check": "tsc --noEmit",
|
||||
|
||||
Reference in New Issue
Block a user