@@ -24,76 +24,76 @@ Push branch and create a PR with a concise, issue-linked description.
24241 . ** Review the branch context above** — the commits and changed files are already loaded.
2525
26262 . ** Check CHANGELOG.md** — if it wasn't updated for these changes, update it now and commit:
27- ``` bash
28- git add CHANGELOG.md && git commit -m " docs: update changelog"
29- ```
27+ ``` bash
28+ git add CHANGELOG.md && git commit -m " docs: update changelog"
29+ ```
3030
31313 . ** Push branch** :
32- ``` bash
33- git push -u origin HEAD
34- ```
35- - The ` pre-push ` git hook automatically runs the full test suite (BE & FE in parallel).
36- - If the hook fails, read the output, fix the issue, commit the fix, and retry the push. Do NOT use ` --no-verify ` to bypass.
32+ ``` bash
33+ git push -u origin HEAD
34+ ```
35+ - The ` pre-push ` git hook automatically runs the full test suite (BE & FE in parallel).
36+ - If the hook fails, read the output, fix the issue, commit the fix, and retry the push. Do NOT use ` --no-verify ` to bypass.
3737
38384 . ** Generate PR title** :
39- - If ` $ARGUMENTS ` contains an issue number, fetch the issue title:
40- ``` bash
41- gh issue view < number> --json title -q ' .title'
42- ```
43- - PR title format: ` < type>( < scope> ) : < short description> ` (conventional commit style, under 70 chars)
44- - Derive the type from the branch prefix (` feat/` → feat, ` fix/` → fix, ` docs/` → docs)
39+ - If ` $ARGUMENTS ` contains an issue number, fetch the issue title:
40+ ``` bash
41+ gh issue view < number> --json title -q ' .title'
42+ ```
43+ - PR title format: ` < type>( < scope> ) : < short description> ` (conventional commit style, under 70 chars)
44+ - Derive the type from the branch prefix (` feat/` → feat, ` fix/` → fix, ` docs/` → docs)
4545
46465. ** Create PR** using the template from ` .github/PULL_REQUEST_TEMPLATE.md` :
47- ` ` ` bash
48- gh pr create --title " <title>" --assignee @me --label " <label>" --body " $( cat << 'EOF '
49- ## 🤔 Background
47+ ` ` ` bash
48+ gh pr create --title " <title>" --assignee @me --label " <label>" --body " $( cat << 'EOF '
49+ ## 🤔 Background
5050
51- Related #<issue-number>
51+ Related #<issue-number>
5252
53- <1-2 sentences: motivation and context for the changes>
53+ <1-2 sentences: motivation and context for the changes>
5454
55- ## 💡 Changes
55+ ## 💡 Changes
5656
57- - <bullet 1: what changed and why>
58- - <bullet 2>
59- - <bullet 3> (optional)
60- - <bullet 4> (optional)
61- EOF
62- )"
63- ```
57+ - <bullet 1: what changed and why>
58+ - <bullet 2>
59+ - <bullet 3> (optional)
60+ - <bullet 4> (optional)
61+ EOF
62+ )"
63+ ```
6464
65- **MANDATORY:** Always follow the PR template structure (`## 🤔 Background` + `## 💡 Changes`). Never use a different format.
65+ **MANDATORY:** Always follow the PR template structure (`## 🤔 Background` + `## 💡 Changes`). Never use a different format.
6666
67- **Assignee:** Always assign to `@me` (the PR creator).
67+ **Assignee:** Always assign to `@me` (the PR creator).
6868
69- **Labels:** Add the single most relevant label based on the branch prefix and change context:
70- - `bug` — branch starts with `fix/` and addresses a defect
71- - `enhancement` — branch starts with `feat/` or adds new functionality
72- - `documentation` — branch starts with `docs/` or only changes docs
73- - `refactor` — code restructuring with no behavior change
74- - `ui` — visual/frontend-only changes
75- - `investigation` — spikes, research, or exploratory work
69+ **Labels:** Add the single most relevant label based on the branch prefix and change context:
70+ - `bug` — branch starts with `fix/` and addresses a defect
71+ - `enhancement` — branch starts with `feat/` or adds new functionality
72+ - `documentation` — branch starts with `docs/` or only changes docs
73+ - `refactor` — code restructuring with no behavior change
74+ - `ui` — visual/frontend-only changes
75+ - `investigation` — spikes, research, or exploratory work
7676
77- **Body guidelines:**
78- - **Background**: Link the issue with `Related #<number>`, then 1-2 sentences of context. **NEVER use `Closes` or `Fixes`.**
79- - **Changes**: 2-4 short bullet points. Focus on *what* and *why*, not implementation details.
80- - **No file lists, no class names, no code snippets** in the body.
81- - Keep the entire body under 15 lines.
77+ **Body guidelines:**
78+ - **Background**: Link the issue with `Related #<number>`, then 1-2 sentences of context. **NEVER use `Closes` or `Fixes`.**
79+ - **Changes**: 2-4 short bullet points. Focus on *what* and *why*, not implementation details.
80+ - **No file lists, no class names, no code snippets** in the body.
81+ - Keep the entire body under 15 lines.
8282
83836. **Move issue to "In Review"** in GitHub Project (if issue number provided):
84- ```bash
85- # Read project config from .claude/github-project.json
86- ITEM_ID=$(gh project item-list PROJECT_NUMBER --owner OWNER --format json \
87- | jq -r '.items[] | select(.content.number == ISSUE_NUMBER) | .id')
88-
89- gh project item-edit \
90- --id "$ITEM_ID" \
91- --project-id "PROJECT_ID" \
92- --field-id "STATUS_FIELD_ID" \
93- --single-select-option-id "IN_REVIEW_OPTION_ID"
94- ```
95-
96- **Note:** Requires `project` scope. Run `gh auth refresh -s project` if needed.
84+ ```bash
85+ # Read project config from .claude/github-project.json
86+ ITEM_ID=$(gh project item-list PROJECT_NUMBER --owner OWNER --format json \
87+ | jq -r '.items[] | select(.content.number == ISSUE_NUMBER) | .id')
88+
89+ gh project item-edit \
90+ --id "$ITEM_ID" \
91+ --project-id "PROJECT_ID" \
92+ --field-id "STATUS_FIELD_ID" \
93+ --single-select-option-id "IN_REVIEW_OPTION_ID"
94+ ```
95+
96+ **Note:** Requires `project` scope. Run `gh auth refresh -s project` if needed.
9797
98987. **Report the PR URL** to the user.
9999
0 commit comments