# Branching Strategy - **NEVER commit or push directly to `develop` or `main`.** These branches are protected. All work happens on `feature/*` branches. - **Every epic** gets its own feature branch: `feature/` off `develop` - **Every standalone task/bug** (no parent epic) gets its own feature branch: `feature/` off `develop` - Branch naming: kebab-case slug of the bean title (e.g., `feature/add-auth-system`) ## Committing workflow - **Every completed task gets its own commit** on the feature branch — including tasks within an epic. One task = one commit. - After finishing a task, **immediately commit** the changes to the feature branch. Do not batch multiple tasks into a single commit. - When the epic or standalone task is fully complete, squash merge the feature branch into `develop` (via PR). # Pre-commit Hooks This project uses [prek](https://prek.j178.dev/) (Rust-based pre-commit framework) to run linting and formatting checks before each commit. **Setup:** `prek install` **Hooks configured:** - **Backend:** `ruff check --fix` and `ruff format` on Python files under `backend/` - **Frontend:** `oxlint`, `oxfmt --check`, and `tsc -b` on files under `frontend/` Frontend hooks require `npm ci` in `frontend/` first (they use `npx` to run from local `node_modules`). # Instructions - After completing a task, immediately commit the changes to the current feature branch and ask the user to confirm. - Before working on a bean, always set it to in-progress. After the changes related to the bean are committed, mark it as completed. - If a bean is marked as draft, refine it first before starting work on it. - When completing a bean that has a parent (epic, feature, etc.), check the parent's checklist/success criteria for items that can now be marked as completed and update them.