| name | final-review |
| description | Use this skill before opening a PR to run final review, Fastlane CI verification, commit preparation, approved commit execution, and PR draft generation. |
final-review
๋ชฉ์
Twix iOS ์ ์ฅ์์์ PR ์์ฑ ์ ๋๋ ์ง์ค ๊ตฌํ/๋ฆฌํฉํฐ๋ง ์๋ฃ ํ ์ฌ์ฉํ๋ pre-PR finalization skill์
๋๋ค.
์ด skill์ ๊ตฌํ skill์ด ์๋๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก scope ์ ๊ฒ, ์ต์ข
๋ฆฌ๋ทฐ, ๊ฒ์ฆ, ์คํจ ๋ถ์, ์ปค๋ฐ ์ค๋น/์คํ, PR ์ด์ ์์ฑ์ ์ํํฉ๋๋ค. ๋ช
์ ์์ฒญ ์์ด๋ ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ๋ฆฌํฉํฐ๋งํ์ง ์์ผ๋ฉฐ, PR์ ์ด๊ฑฐ๋ pushํ์ง ์์ต๋๋ค.
๊ธฐ์ค ๋ฌธ์
ํญ์ ๋ค์ ๊ธฐ์ค์ ๋ฐ๋ฆ
๋๋ค.
AGENTS.md
docs/Reference/Checklists.md
docs/Reference/ProjectRules.md
.pi/skills/review-twix/SKILL.md๊ฐ ์์ผ๋ฉด review standard๋ก ์ฌ์ฉ
review-twix์ ์ธ๋ถ ๊ท์น์ ์ด skill์ ์ค๋ณตํ์ง ์์ต๋๋ค. ์ต์ข
๋ฆฌ๋ทฐ ๋จ๊ณ์์๋ review-twix ๊ธฐ์ค์ ์ ์ฉํฉ๋๋ค.
๊ธ์ง ์ฌํญ
- push ๊ธ์ง
- PR ์์ฑ/open ๊ธ์ง
- force push ๊ธ์ง
- ๋ช
์ ์์ฒญ ์๋ amend / rebase / reset / stash ๊ธ์ง
- ๋ช
์ ์์ฒญ ์๋ ํ์ผ ์์ ๊ธ์ง
- ๋ช
์ ์์ฒญ ์๋ ๋ฆฌํฉํฐ๋ง ๊ธ์ง
- ๋ช
์ ์์ฒญ ์๋ ๋ฌธ์ ์์ ๊ธ์ง
- ํ
์คํธ ์์ฑ ๊ธ์ง
- ๊ตฌํ ์์
์์ฑ ๊ธ์ง
- TypeScript extension ์์ฑ ๊ธ์ง
- ์คํจํ ๊ฒ์ฆ ์จ๊น ๊ธ์ง
- secrets, env files, credentials, ์์ํ์ง ๋ชปํ generated files ์ปค๋ฐ ๊ธ์ง
- tool ๋๋ generation source๋ฅผ ์๋ณํ๋ commit metadata ์ถ๊ฐ ๊ธ์ง
๊ฒ์ฆ ์ ์ฑ
์ฐ์ ๊ฒ์ฆ ๋ช
๋ น:
bundle exec fastlane ios ci_pr
Bundler๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ์๋ง fallback:
fastlane ios ci_pr
tuist build๋ ํ์ค ๊ฒ์ฆ ๋ช
๋ น์ผ๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค.
- direct
xcodebuild scheme / destination / configuration์ inventํ์ง ์์ต๋๋ค.
- direct
xcodebuild๋ ๋ช
์์ ์ผ๋ก ๋ฌธ์ํ๋์๊ฑฐ๋ ์ ๊ณต๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉํฉ๋๋ค.
- Fastlane์ ๋ก์ปฌ์์ ์คํํ ์ ์์ผ๋ฉด ์ ํํ ๊ฒ์ฆ ํ๊ณ๋ฅผ ๋ณด๊ณ ํ๊ณ , ๊ฒ์ฆ์ด ํต๊ณผํ๋ค๊ณ ๋งํ์ง ์์ต๋๋ค.
์ปค๋ฐ ์ ์ฑ
์ปค๋ฐ ์ ๋ฐ๋์ ํ์ธํฉ๋๋ค.
git branch --show-current
git status --short
git diff --stat
git diff --cached --stat
- ๊ด๋ จ ์๋ ํ์ผ์ ์ปค๋ฐ์ ํฌํจํ์ง ์์ต๋๋ค.
- ํ์ผ์ blind stageํ์ง ์์ต๋๋ค.
- unstaged changes๊ฐ ์์ผ๋ฉด staging ์ ์ ์์ฝํฉ๋๋ค.
- ์ด๋ฏธ staged changes๊ฐ ์์ผ๋ฉด ์ฌ์ฉ์์ staging ์๋๋ฅผ ๋ณด์กดํฉ๋๋ค.
- staged/unstaged ๋ณ๊ฒฝ์ด ์ฌ๋ฌ commit scope๋ฅผ ์์ํ๋ฉด ์ค๋จํ๊ณ ํ์ธํฉ๋๋ค.
- review์์ blocking issue๊ฐ ์์ผ๋ฉด ์ปค๋ฐํ์ง ์์ต๋๋ค.
- Fastlane ๊ฒ์ฆ ์คํจ ์ ์ปค๋ฐํ์ง ์์ต๋๋ค.
- ์์ํ์ง ๋ชปํ ํ์ผ, secret, env, credential, generated file ๋ณ๊ฒฝ์ด ์์ผ๋ฉด ์ปค๋ฐํ์ง ์์ต๋๋ค.
- ์ฌ์ฉ์ ์น์ธ์ด ์์ผ๋ฉด ์ปค๋ฐํ์ง ์์ต๋๋ค. ๋จ, ์ฌ์ฉ์๊ฐ ์์ฒญ์์ ๋ช
์์ ์ผ๋ก ์ปค๋ฐ๊น์ง ์ง์ํ ๊ฒฝ์ฐ๋ ์์ธ์
๋๋ค.
์ปค๋ฐ ๋ฉ์์ง ์ ์ฑ
ํ์:
<type>: <Korean summary> - #<issue-number>
ํ์ฉ type:
feat
fix
refactor
docs
test
chore
๊ท์น:
- summary๋ ๊ฐ๊ฒฐํ ํ๊ตญ์ด๋ก ์์ฑํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก ์์ฒญํ์ง ์์ผ๋ฉด commit body๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค.
- footer, co-author metadata, tool attribution, generation/source marker๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค.
- issue number๋ฅผ inventํ์ง ์์ต๋๋ค.
- ํ์ฌ branch name์์ numeric issue suffix๋ฅผ ์ถ์ถํฉ๋๋ค.
- ์:
feat/#302/TWI-86 โ commit suffix๋ #302
TWI-86 ๊ฐ์ Linear issue key๋ workflow/integration ์ฉ๋๋ก ์กด์ฌํ ์ ์์ง๋ง commit suffix๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค.
- ์ฌ๋ฌ issue-like identifier๊ฐ ์์ผ๋ฉด numeric
#<number> segment๋ฅผ ์ฐ์ ํฉ๋๋ค.
- numeric issue number๊ฐ ์์ผ๋ฉด ์ปค๋ฐ ์ ์ ์ฌ์ฉ์์๊ฒ issue number๋ฅผ ์์ฒญํฉ๋๋ค.
- ์ฌ๋ฌ unrelated changes๊ฐ ์์ผ๋ฉด commit split์ ๊ถ์ฅํฉ๋๋ค.
Type ์ ํ ๊ธฐ์ค:
feat: ์ฌ์ฉ์์๊ฒ ๋ณด์ด๋ ์ ๊ธฐ๋ฅ
fix: ๋ฒ๊ทธ ์์
refactor: ๋์ ๋ณด์กด ๊ตฌ์กฐ ๋ณ๊ฒฝ
docs: ๋ฌธ์๋ง ๋ณ๊ฒฝ
test: ํ
์คํธ๋ง ๋ณ๊ฒฝ
chore: ์ ์ง๋ณด์/config/tooling ๋ณ๊ฒฝ
Phase 1 โ Scope and branch status
AGENTS.md๋ฅผ ์ฝ์ต๋๋ค.
- ํ์ฌ branch name์ ํ์ธํฉ๋๋ค.
git status --short๋ก ์ํ๋ฅผ ํ์ธํฉ๋๋ค.
- changed files์ diff summary๋ฅผ ํ์ธํฉ๋๋ค.
- staged / unstaged / mixed ์ํ๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
- ๋ค์ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์๋๋ PR/change scope๋ฅผ ์ถ๋ก ํฉ๋๋ค.
- branch name
- changed files
- diff summary
- ํ์ํ ๊ฒฝ์ฐ existing commit messages
- diff๊ฐ ํ๋์ coherent PR scope์ธ์ง ์ ๊ฒํฉ๋๋ค.
- ์ฌ๋ฌ unrelated scope๊ฐ ์์ผ๋ฉด split commit ๋๋ split PR์ ๊ถ์ฅํฉ๋๋ค.
- branch name์์ numeric issue suffix๋ฅผ ์ถ์ถํฉ๋๋ค.
- ์:
feat/#302/TWI-86์ด๋ฉด #302๋ฅผ commit issue suffix๋ก ์ฌ์ฉํฉ๋๋ค.
TWI-86 ๊ฐ์ Linear key๋ workflow/integration metadata๋ก ์ทจ๊ธํ๋ฉฐ commit suffix๋ก ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ๋ค์ ๊ฒฝ์ฐ ์ค๋จํ๊ณ ์ฌ์ฉ์์๊ฒ ํ์ธํฉ๋๋ค.
- ๊ด๋ จ ์๊ฑฐ๋ ์ํํ ํ์ผ์ด ์์
- numeric issue number๋ฅผ ์ฐพ์ ์ ์์
- branch naming์ด ๋ชจํธํจ
- staged/unstaged ๋ณ๊ฒฝ์ด ์ฌ๋ฌ commit scope๋ฅผ ์์ํจ
Phase 2 โ Final review
review-twix ๊ธฐ์ค์ ์ ์ฉํฉ๋๋ค.
- ์ฌ์ฉ์๊ฐ ๋ ๋์ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญํ์ง ์๋ ํ changed files / diff๋ง ๋ฆฌ๋ทฐํฉ๋๋ค.
- ๋ค์ ๋ฆฌ์คํฌ๋ฅผ ํ์ธํฉ๋๋ค.
- architecture fit
- TCA / MFA boundaries
- Interface/Sources split
- navigation pattern
- network/client rules
- TokenManager / TokenStorage rules
- dependency direction
- public API growth
- docs impact
- unexpected generated / secrets / env files
- blocking / non-blocking issue๋ฅผ ๊ตฌ๋ถํด ๋ณด๊ณ ํฉ๋๋ค.
- ๋ช
์ ์์ฒญ ์์ด๋ ์์ ํ์ง ์์ต๋๋ค.
Phase 3 โ Verification
- ์ฐ์
bundle exec fastlane ios ci_pr๋ฅผ ์คํํฉ๋๋ค.
- Bundler๋ฅผ ์ฌ์ฉํ ์ ์๋ ๊ฒฝ์ฐ
fastlane ios ci_pr๋ฅผ ์คํํฉ๋๋ค.
- pass/fail์ ๋ณด๊ณ ํฉ๋๋ค.
- ์คํํ ์ ์์ผ๋ฉด ์ ํํ ํ๊ณ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค.
- undocumented
xcodebuild ๋ช
๋ น์ผ๋ก ๋์ฒดํ์ง ์์ต๋๋ค.
Phase 3B โ Verification failure analysis
๊ฒ์ฆ์ด ์คํจํ๋ฉด ์๋์ผ๋ก ์ปค๋ฐ ๋จ๊ณ๋ก ์งํํ์ง ์์ต๋๋ค.
- failure output์ ๋ถ์ํฉ๋๋ค.
- ์คํจ ์ ํ์ ๋ถ๋ฅํฉ๋๋ค.
- compile
- lint
- test
- dependency
- signing/provisioning
- script/tooling
- unknown
- ๊ด๋ จ ๊ฐ๋ฅ์ฑ์ด ๋์ ํ์ผ ๋๋ ๋ชจ๋์ ์๋ณํฉ๋๋ค.
- ์์ธ์ ๋ค์ ์ค ํ๋๋ก ๊ตฌ๋ถํฉ๋๋ค.
- current diff caused
- environment/tooling
- pre-existing failure
- unknown
- ์ต์ ๋ค์ ์กฐ์น๋ฅผ ์ ์ํฉ๋๋ค.
- ๋ช
์ ์์ฒญ ์์ด๋ ํ์ผ์ ์์ ํ์ง ์์ต๋๋ค.
- ์คํจํ ๊ฒ์ฆ์ ์จ๊ธฐ์ง ์์ต๋๋ค.
- ์ ์ ํ ๊ฒฝ์ฐ retry command๋ฅผ ํฌํจํฉ๋๋ค.
Phase 4 โ Commit preparation
- ๋ค์์ ํ์ธํฉ๋๋ค.
git status --short
git diff --stat
- staged file์ด ์์ผ๋ฉด
git diff --cached --stat
- ์ด๋ฏธ staged files๊ฐ ์์ผ๋ฉด ์ฌ์ฉ์์ staging ์๋๋ฅผ ๋ณด์กดํฉ๋๋ค.
- ํ์ผ์ blind stageํ์ง ์์ต๋๋ค.
- ์ปค๋ฐ ๋์ ํ์ผ์ ์์ฝํฉ๋๋ค.
- ๊ด๋ จ ์๋ ํ์ผ์ ํ์ธํฉ๋๋ค.
- secrets, env files, credentials, ์์ํ์ง ๋ชปํ generated files๋ฅผ ํ์ธํฉ๋๋ค.
- ๋ค์ ํ์์ผ๋ก ์ปค๋ฐ ๋ฉ์์ง๋ฅผ ์ ์ํฉ๋๋ค.
<type>: <Korean summary> - #<issue-number>
- ํ์ ์ split commit์ ๊ถ์ฅํฉ๋๋ค.
- ์ด๋ฏธ ๋ช
์์ ์ผ๋ก ์ปค๋ฐ ๊ถํ์ ๋ฐ์ ๊ฒฝ์ฐ๊ฐ ์๋๋ฉด ์ปค๋ฐ ์ ์น์ธ์ ์์ฒญํฉ๋๋ค.
Phase 5 โ Commit
- ์น์ธ๋ ํ์ผ๋ง stageํฉ๋๋ค.
- ์น์ธ๋ ๋ฉ์์ง๋ก commitํฉ๋๋ค.
- ๋ช
์ ์์ฒญ์ด ์์ผ๋ฉด commit body๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค.
- footer, ์ธ๋ถ authorship, tool metadata๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค.
- amend, rebase, reset, stash, force push, push, PR open์ ๋ช
์ ์์ฒญ ์์ด๋ ์ํํ์ง ์์ต๋๋ค.
- ์ปค๋ฐ ํ ๋ค์์ ๋ณด๊ณ ํฉ๋๋ค.
- commit hash
- committed files
- verification status
- remaining uncommitted files
Phase 6 โ PR draft
PR ์ ๋ชฉ๊ณผ ์ค๋ช
์ด์์ ์์ฑํฉ๋๋ค. PR์ ์ด๊ฑฐ๋ pushํ์ง ์์ต๋๋ค.
PR ์ด์์ ๋ค์์ ๋ฐํ์ผ๋ก ์์ฑํฉ๋๋ค.
- branch name
- committed ๋๋ pending diff
- review result
- verification result
- known risks
PR ์ ๋ชฉ:
- ์ ์ฅ์ convention์ด ๋ช
ํํ ์์ด๋ฅผ ์๊ตฌํ์ง ์๋ ํ ๊ฐ๊ฒฐํ ํ๊ตญ์ด๋ก ์์ฑํฉ๋๋ค.
PR ์ค๋ช
์๋ ๋ค์์ ํฌํจํฉ๋๋ค.
- ์์ฝ
- ๋ณ๊ฒฝ ์ฌํญ
- ๊ฒ์ฆ ๊ฒฐ๊ณผ
- ๋ฆฌ๋ทฐ ํฌ์ธํธ
- ๋ฆฌ์คํฌ / ํ์ ์์
- ๊ด๋ จ ์ด์
๊ด๋ จ ์ด์:
- numeric issue suffix๊ฐ ์์ผ๋ฉด
#302์ฒ๋ผ ์ฌ์ฉํฉ๋๋ค.
TWI-86 ๊ฐ์ Linear key๋ branch/workflow ๋งฅ๋ฝ์ ์ ์ฉํ ๋๋ง ์ธ๊ธํ๋ฉฐ numeric issue reference๋ฅผ ๋์ฒดํ์ง ์์ต๋๋ค.
์ต์ข
๋ณด๊ณ ํ์
ํ๊ตญ์ด๋ก ์์ฑํฉ๋๋ค.
๋ณ๊ฒฝ ๋ฒ์:
-
๋ธ๋์น / ์ด์ ๋ฒํธ:
-
Scope ์ ๊ฒ ๊ฒฐ๊ณผ:
-
์ต์ข
๋ฆฌ๋ทฐ ๊ฒฐ๊ณผ:
-
๊ฒ์ฆ ๊ฒฐ๊ณผ:
-
๊ฒ์ฆ ์คํจ ๋ถ์:
-
์ปค๋ฐ ๋์ ํ์ผ:
-
์ ์ ์ปค๋ฐ ๋ฉ์์ง:
-
์ปค๋ฐ ์ฌ๋ถ:
-
PR ์ ๋ชฉ ์ด์:
-
PR ์ค๋ช
์ด์:
- ์์ฝ:
- ๋ณ๊ฒฝ ์ฌํญ:
- ๊ฒ์ฆ ๊ฒฐ๊ณผ:
- ๋ฆฌ๋ทฐ ํฌ์ธํธ:
- ๋ฆฌ์คํฌ / ํ์ ์์
:
- ๊ด๋ จ ์ด์:
๋จ์ ๋ฆฌ์คํฌ:
-
๋ค์ PR ์ ํ์ธ ์ฌํญ:
-