Contributing - SekiroKenjii/Quizzivy GitHub Wiki
Read AGENTS.md first. It is the standing rule set and it is short.
Gitflow.
| Branch | Purpose |
|---|---|
main |
Released only, tagged vX.Y.Z. Never committed to directly. |
develop |
Integration. Every feature PR targets this. |
feature/t-<phase>-<n>-<slug> |
One task from a phase file. Branch off develop. |
release/phase-<n> |
Cut when a phase's tasks are merged. Stabilization only. |
hotfix/<slug> |
Off main. Merged to both main and develop. |
chore/<slug> |
Off develop. Repo-wide work that is not a plan task — tooling, layout, dependency bumps. |
git checkout -b feature/t-1-04-google-oauth develop
# ... work, commit ...
git push -u origin feature/t-1-04-google-oauth
gh pr create --base developMerge the pull request with a merge commit, never a squash, so each task stays a visible unit in the history.
Tasks are defined in docs/plan/10-phase-0.md … 15-phase-5.md. Each carries
its own Done when list; that list is the acceptance criteria, and the PR
template repeats the parts that apply to every change.
If a task turns out to be bigger than its stated size (S < 2h, M half day, L full day), split it and record the split in the phase file. Do not let a task grow past L.
Order matters: tasks are sequenced so the phase builds and deploys at any task boundary. Do not merge a task whose dependencies are unmerged.
When every task in a phase is merged to develop:
git checkout -b release/0.9.0 develop
# fix only what the exit criteria surface
git push -u origin release/0.9.0 && gh pr create --base main # merge commit
git fetch origin && git tag v0.9.0 origin/main && git push origin v0.9.0
gh pr create --base develop --head main # back-mergeA phase is done when its exit criteria pass — the E2E tests named in the phase file, not a judgement call. Do not start the next phase with the current one red (spec §16).
T-<phase>.<n>: <imperative summary>, then a body explaining why. English.
Reference the spec by section number (§13.3), never by quoting it back.
make gen # if api/openapi.yaml changed — commit the generated files
make test
make lintCI runs the same checks plus a codegen drift check and a migration up/down/up
against postgres:18. main, develop and work/** accept changes only by
pull request, and develop and work/** need the CI result check to
pass. A job whose files already passed is skipped; docs/setup/ci.md explains
how, and how to force a full run.
The files under docs/, AGENTS.md, this file and the directory READMEs are
the source. The repository's wiki is generated from them on every push to
develop (docs/setup/ci.md, "The wiki"). Edit the file, never the wiki
page: the next run overwrites it.
- A generated file edited by hand (
server/gen/,web/src/lib/api/schema.d.ts) - A new dependency with no reason in the description
- English-only user-facing text
- A public endpoint without both §6.5 boxes ticked in the same PR
- A failing test deleted or skipped rather than fixed
-
SELECT *in application code - DDL that contradicts
docs/plan/20-data-model.mdwithout a newD-nnentry
Check docs/plan/40-open-items.md before asking. Most questions are already
there with a stated default — build the default and move on. Ask one precise
question only when the answer changes what you build.
Generated from CONTRIBUTING.md. Edit that file in the repository; changes made on this page are overwritten.