Documents coding standards, git discipline, release flow, and FastAPI architecture best practices. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.7 KiB
2.7 KiB
AGENTS.md
Start every session by reading this file. This file outlines the operational protocols, coding standards, and architectural decisions for this FastAPI project.
1. Agent Operational Protocols
🧠 Work Patterns (Plan-Act-Reflect)
- Plan: Before writing code, briefly outline your plan. Identify which files you will touch and what the side effects might be.
- Act: Execute the changes in small, atomic steps.
- Reflect: After coding, verify your work. Did you break existing tests? Did you add new tests?
🛡️ Git Discipline
- NEVER commit to
mainormasterdirectly. Always create a feature branch:feature/your-feature-nameorfix/issue-description. - Commit Messages: Use the Conventional Commits format.
feat: add user login endpointfix: resolve database connection timeoutrefactor: split monolith dependency file
- Atomic Commits: Keep commits small. One logical change = one commit.
📝 Changelog Maintenance
- Update
CHANGELOG.mdwith every user-facing change. - Format:
## [Unreleased] - YYYY-MM-DDfollowed by### Added,### Changed, or### Fixed.
🚀 Release Flow
When changes are ready for deployment:
-
**Ask user if deploy cycle is desired **
-
Update version in
pyproject.toml:- Bug fixes: bump patch version (1.8.3 → 1.8.4)
- New features: bump minor version (1.8.4 → 1.9.0)
-
Update CHANGELOG.md:
- Move items from
[Unreleased]to new version section - Add release date:
## [1.8.4] - 2025-12-16
- Move items from
-
Commit and tag:
git add -A git commit -m "fix: description of changes" git tag v1.8.4 git push origin main --tags -
CI/CD triggers automatically:
- Gitea CI builds Docker image on new tag
- Watchtower pulls and deploys to production
- Verify deployment:
curl http://192.168.86.149:8000/health
2. FastAPI Architecture & Best Practices
Reference: FastAPI Best Practices
📂 Project Structure (Directory-based, NOT File-type based)
Do not group files by type (e.g., one huge routers folder). Group by domain/module inside a src/ directory.
Correct Structure:
src/
├── auth/
│ ├── router.py # Endpoints
│ ├── schemas.py # Pydantic models
│ ├── service.py # Business logic (CRUD, etc.)
│ ├── dependencies.py# Module-specific dependencies
│ └── config.py # Module-specific settings
├── posts/
│ ├── router.py
│ └── ...
└── main.py # App entry point