202 lines
4.4 KiB
Markdown
202 lines
4.4 KiB
Markdown
---
|
|
description: Setup overnight development with Git hooks for autonomous TDD sessions
|
|
shortcut: setup-overnight
|
|
---
|
|
|
|
# Overnight Development Setup
|
|
|
|
Install Git hooks and configure overnight autonomous development in your project.
|
|
|
|
## What This Does
|
|
|
|
This command sets up your repository for overnight autonomous development sessions:
|
|
|
|
1. **Installs Git Hooks** - pre-commit and commit-msg hooks
|
|
2. **Creates Config** - .overnight-dev.json configuration file
|
|
3. **Verifies Setup** - Tests that hooks work correctly
|
|
|
|
## Installation Steps
|
|
|
|
### 1. Check Prerequisites
|
|
|
|
First, verify you have:
|
|
- Git repository initialized (`git status` works)
|
|
- Test framework configured (Jest, pytest, etc.)
|
|
- At least 1 passing test
|
|
- Linter set up (ESLint, flake8, etc.)
|
|
|
|
### 2. Install the Hooks
|
|
|
|
The plugin will copy Git hooks to `.git/hooks/`:
|
|
- **pre-commit** - Runs linting and tests before each commit
|
|
- **commit-msg** - Enforces conventional commit format
|
|
|
|
### 3. Configure Your Project
|
|
|
|
Create `.overnight-dev.json` in your project root:
|
|
|
|
```json
|
|
{
|
|
"testCommand": "npm test",
|
|
"lintCommand": "npm run lint",
|
|
"requireCoverage": true,
|
|
"minCoverage": 80,
|
|
"autoFix": true,
|
|
"maxAttempts": 50,
|
|
"stopOnMorning": true,
|
|
"morningHour": 7
|
|
}
|
|
```
|
|
|
|
**Configuration Options:**
|
|
|
|
- `testCommand` - Command to run tests (e.g., "pytest", "cargo test")
|
|
- `lintCommand` - Command to run linter
|
|
- `requireCoverage` - Enforce minimum test coverage
|
|
- `minCoverage` - Minimum coverage percentage (default: 80)
|
|
- `autoFix` - Automatically fix linting issues
|
|
- `maxAttempts` - Maximum commit attempts before alerting
|
|
- `stopOnMorning` - Stop work at a specific hour
|
|
- `morningHour` - Hour to stop (0-23)
|
|
|
|
### 4. Test the Setup
|
|
|
|
Verify the hooks work:
|
|
|
|
```bash
|
|
# Should run tests and linting
|
|
git commit --allow-empty -m "test: verify overnight dev hooks"
|
|
```
|
|
|
|
If hooks work correctly, you'll see:
|
|
```
|
|
Overnight Dev: Running pre-commit checks...
|
|
Running linting...
|
|
Linting passed
|
|
Running tests...
|
|
All tests passed
|
|
All checks passed! Proceeding with commit...
|
|
```
|
|
|
|
## Project-Specific Examples
|
|
|
|
### Node.js / JavaScript
|
|
|
|
```json
|
|
{
|
|
"testCommand": "npm test -- --coverage",
|
|
"lintCommand": "npm run lint",
|
|
"autoFix": true
|
|
}
|
|
```
|
|
|
|
### Python
|
|
|
|
```json
|
|
{
|
|
"testCommand": "pytest --cov=. --cov-report=term-missing",
|
|
"lintCommand": "flake8 . && black --check .",
|
|
"autoFix": false
|
|
}
|
|
```
|
|
|
|
### Rust
|
|
|
|
```json
|
|
{
|
|
"testCommand": "cargo test",
|
|
"lintCommand": "cargo clippy -- -D warnings",
|
|
"autoFix": false
|
|
}
|
|
```
|
|
|
|
### Go
|
|
|
|
```json
|
|
{
|
|
"testCommand": "go test ./...",
|
|
"lintCommand": "golangci-lint run",
|
|
"autoFix": false
|
|
}
|
|
```
|
|
|
|
## Starting an Overnight Session
|
|
|
|
Once setup is complete:
|
|
|
|
1. **Define your goal:**
|
|
```
|
|
Task: Implement user authentication with JWT
|
|
Success: All tests pass, coverage > 85%
|
|
```
|
|
|
|
2. **Start coding:**
|
|
- Write tests first (TDD)
|
|
- Implement features
|
|
- Commit frequently
|
|
- Let the hooks keep you honest
|
|
|
|
3. **Claude works overnight:**
|
|
- Every commit must pass tests
|
|
- Hooks enforce quality
|
|
- Morning brings fully tested features
|
|
|
|
## Troubleshooting
|
|
|
|
### "Hooks not executing"
|
|
|
|
```bash
|
|
# Make hooks executable
|
|
chmod +x .git/hooks/pre-commit
|
|
chmod +x .git/hooks/commit-msg
|
|
```
|
|
|
|
### "Tests failing immediately"
|
|
|
|
Make sure you have at least 1 passing test before starting:
|
|
```bash
|
|
npm test # or pytest, cargo test, etc.
|
|
```
|
|
|
|
### "Linting errors blocking commits"
|
|
|
|
Enable auto-fix in config:
|
|
```json
|
|
{
|
|
"autoFix": true
|
|
}
|
|
```
|
|
|
|
Or fix manually:
|
|
```bash
|
|
npm run lint -- --fix
|
|
```
|
|
|
|
## What Happens During Overnight Sessions
|
|
|
|
1. **You write code** → Claude writes tests and implementation
|
|
2. **You try to commit** → Hooks run tests automatically
|
|
3. **Tests fail** → Claude debugs and fixes
|
|
4. **Tests pass** → Commit succeeds
|
|
5. **Repeat** → Until feature is complete
|
|
6. **Morning** → Wake up to fully tested code
|
|
|
|
## Success Metrics
|
|
|
|
Track your overnight session:
|
|
- All commits have passing tests
|
|
- Coverage maintained or improved
|
|
- No linting errors
|
|
- Clean conventional commit messages
|
|
- Features fully implemented and documented
|
|
|
|
## Pro Tips
|
|
|
|
1. **Start with clear goals** - Specific, testable objectives
|
|
2. **Have existing tests** - At least 1 passing test before starting
|
|
3. **Use TDD** - Write tests first, then implementation
|
|
4. **Commit frequently** - Small, passing commits
|
|
5. **Trust the process** - Hooks enforce quality automatically
|
|
|
|
Ready to start? Just begin coding and let the hooks guide you to fully tested features!
|