Git Repository Workflow
Instructions
CRITICAL: Never Push to Default Branches
PROHIBITED: git push origin main/develop/master
ALL changes must go through Pull Requests. No exceptions.
Workflow Decision
Start Implementation
↓
Existing PR? → YES → gh pr checkout <PR#> → git pull → Implement → Push
↓ NO
User says "current branch"? → YES → Implement directly
↓ NO
git checkout main && git pull → git checkout -b feature/name → Implement
Branch Naming
feature/- New featuresfix/- Bug fixesrefactor/- Code refactoringdocs/- Documentation
Testing Requirements
Check Test Necessity First
Before writing tests, verify if tests are required:
- Check CLAUDE.md for test configuration (e.g., "no tests required", "skip tests")
- If no existing tests in project and unclear, ask user: "This project has no tests. Should I add tests?"
- If tests not required, proceed to next step without testing
Test-Driven Approach (When Tests Required)
Follow Red-Green-Refactor cycle:
- Test Skeleton First: Define test structure before implementation
- Descriptive Names:
should return 404 when user not found(nottest1) - Test Coverage: Happy path → Edge cases → Error cases
Docker Environment
When running tests, lint, or other commands in Docker projects:
Check if container is running → docker ps | grep <container>
↓
Running? → YES → docker exec <container> <command>
↓ NO
Start container first or run locally
Web Application Testing
For E2E tests or browser automation, see web-app-testing.md.
DO / DON'T
DO: Pull latest before starting, use descriptive branch names, verify test requirements, check Docker container status
DON'T: Push to main directly, create new branch for existing PR, add tests to test-free projects without confirmation, run commands outside container when app runs in Docker
Examples
New Feature Branch
git checkout main && git pull origin main
git checkout -b feature/descriptive-name
Existing PR
gh pr checkout <PR-number>
git pull origin <branch-name>
# Make changes
git push origin <branch-name>
Test Skeleton
describe('UserAuthentication', () => {
describe('login', () => {
it('should successfully login with valid credentials', () => {});
it('should reject invalid credentials', () => {});
it('should lock account after multiple failed attempts', () => {});
});
});
Docker Command Execution
# Check container status
docker ps | grep myapp
# Execute in running container
docker exec myapp-web npm test
docker exec myapp-web npm run lint
微信扫一扫