| name | verification-loop |
| description | Use after implementing an Android code change, when verifying an existing implementation, or before declaring development complete. Select project skills, run risk-based verification, coordinate Reviewer and QA agents, and repeat only when evidence requires a fix. |
Verification Loop
๊ตฌํ, ์๋ ๊ฒ์ฆ, ๋ฆฌ๋ทฐ, QA๋ฅผ ๋ณ๊ฒฝ ์ํ๋์ ๋ง๊ฒ ์คํํ๊ณ ๊ฒ์ฆ๋ ์ํ์์ ์์
์ ์ข
๋ฃํ๋ค.
์์
- ์์ฒญ, ํ์ฌ branch, working tree,
origin/develop ๊ธฐ์ค diff๋ฅผ ํ์ธํ๋ค.
- ๊ตฌํ ์ฌ๋ถ์ ๊ด๊ณ์์ด ์์ฒญํ ๋์๊ณผ ์๋ฃ ์กฐ๊ฑด์ ์ ๋ฆฌํ๋ค.
- ๋ณ๊ฒฝ ํ์ผ์์ ์์ ๋ symbol, ์ง์ ํธ์ถ์, ๊ณต์ ๊ณ์ฝ ์ฌ์ฉ์ฒ, ๊ด๋ จ ํ๋ฉด๊ณผ ์ง์
๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์ํฅ ๋ฒ์๋ฅผ ์ ํ๋ค.
AGENTS.md์ Skill Routing์ ๋ฐ๋ผ ๋ณ๊ฒฝ ๋ฒ์์ ํด๋นํ๋ skill ์ ๋ฌธ์ ์ฝ๋๋ค.
- ์ํ๋๋ฅผ
LIGHT, STANDARD, FULL ์ค ํ๋๋ก ์ ํ๋ค.
- Android runtime ๋์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์ค์ ๊ธฐ๊ธฐ ํ์ธ์ผ๋ก ์ฑ๊ณต์ ํ๋ณํ ์ ์๋ ์์
์ ๊ตฌํ ์ ์ Runtime QA ์งํ ์ฌ๋ถ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฌป๋๋ค. ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ์ ํ๋ค๋ฉด ๊ทธ ๋ต์ ์ฌ์ฉํ๋ค.
- ๊ตฌํ์ด ํ์ํ๋ฉด ์ ํํ skill์ ์ ์ฉํด ๊ตฌํํ๊ณ ๋น ๋ฅธ ๊ฒ์ฆ์ผ๋ก ์ด๋ํ๋ค. ๊ตฌํ์ด ๋๋ ์์
์ ๋ฐ๋ก ๋น ๋ฅธ ๊ฒ์ฆ์ผ๋ก ์ด๋ํ๋ค.
์ํ๋
๋ณ๊ฒฝ ์ค ์๋ณด๋ค ๊ณ์ฝ์ ๊ณต์ ๋ฒ์์ ๊ธฐ์กด ๋์์ ๋ฏธ์น๋ ์ํฅ์ ๊ธฐ์ค์ผ๋ก ์ ํ๋ค. ๊ฒ์ฆ ๊น์ด๋ ๋ณ๊ฒฝ ํฌ๊ธฐ์ ์ํ๋์ ๋น๋กํ๋ค.
| ๋จ๊ณ | ๊ธฐ์ค | ์คํ |
|---|
LIGHT | ๋ฌธ์, ์ฃผ์, ๋ด๋ถ ์ด๋ฆ, ๋ฌธ๊ตฌยท์๊ฐ ์์, ๊ธฐ๊ณ์ ์ ๋ฆฌ์ฒ๋ผ ์ฌ์ฉ์ flow์ state/data/navigation ๊ณ์ฝ์ด ๋ฐ๋์ง ์๋ ๊ตญ์ ์์ | main agent๊ฐ ๋น ๋ฅธ ๊ฒ์ฆ(๋ณ๊ฒฝ ๋ชจ๋ compileยทdetekt ์์ค)๊ณผ ์ ๊ฒ๋ง ์คํ. Reviewer/QA ํธ์ถ ์์ |
STANDARD | feature ๋ด๋ถ UI interaction, ViewModel, API ์ฌ์ฉ, analytics ๋ฑ feature ๋์์ด ๋ฐ๋๋ ์์ | ๋น ๋ฅธ ๊ฒ์ฆ, Reviewer, QA, ์ต์ข
ํ์ธ |
FULL | ๊ณต์ core ๊ณ์ฝ, navigation/result, auth/token, local ์ ์ฅ, permission, ์ฌ๋ฌ ๋ชจ๋์ ๊ฑธ์น ๋ณ๊ฒฝ | ๋น ๋ฅธ ๊ฒ์ฆ, Reviewer, QA, ์ํฅ ๋ชจ๋ ๊ฒ์ฆ์ ํฌํจํ ์ต์ข
ํ์ธ |
์์ diff๋ผ๋ ๊ณต์ API๋ navigation ๊ณ์ฝ์ ๋ฐ๊พธ๋ฉด FULL๋ก ๋ณธ๋ค. ํ์ธ ๊ณผ์ ์์ ์ํฅ ๋ฒ์๊ฐ ๋์ด์ง ๊ทผ๊ฑฐ๊ฐ ๋์ค๋ฉด ๋จ๊ณ๋ฅผ ์ฌ๋ฆฐ๋ค.
Runtime QA๋ฅผ ์งํํ๊ธฐ๋ก ํ ์์
์ QA agent๊ฐ ์คํํ ์ ์๋๋ก ์ต์ STANDARD๋ก ๋ณธ๋ค. ๋ฌธ์์ฒ๋ผ runtime ๋์์ด ์๋ LIGHT ์์
์ Runtime QA๋ฅผ ์ ์ธํ๋ค.
agent ๊ฐ ์๋ณต์ด ๊ฒ์ฆ ๋น์ฉ์ ๋๋ถ๋ถ์ด๋ฏ๋ก LIGHT๋ ์ด๋ค ๊ฒฝ์ฐ์๋ Reviewer์ QA๋ฅผ ํธ์ถํ์ง ์๋๋ค.
์๋ฃ ์กฐ๊ฑด
๊ตฌํ ์ ์ ์๋ ๋ด์ฉ์ ํ์ธ ๊ฐ๋ฅํ ๋ฌธ์ฅ์ผ๋ก ์ ๋ฆฌํ๋ค.
- ์์ฒญํ ๊ธฐ๋ฅ ๋๋ ์์ ๋์
- ์ ์ง๋์ด์ผ ํ๋ ๊ธฐ์กด ๋์
- ๋ณ๊ฒฝ๋ ๊ณ์ฝ์ ์ง์ ์ฌ์ฉ์ฒ์ ์ํฅ๋ฐ๋ ์ง์
๊ฒฝ๋ก
- ์ ์ฉํ project skill
- ์๋ ๊ฒ์ฆ ๋ฒ์
- Runtime QA ์ ํ ๊ฒฐ๊ณผ์ ๋์ ์๋๋ฆฌ์ค
์ฝ๋์ ์์ฒญ๋ง์ผ๋ก ์ ํ ์ ์๋ ํญ๋ชฉ์ ์ฌ์ฉ์์๊ฒ ํ ๋ฒ์ ํ๋์ฉ ๋ฌป๋๋ค.
๋น ๋ฅธ ๊ฒ์ฆ
๋ณ๊ฒฝ์ ๊ฐ์ฅ ๋น ๋ฅด๊ฒ ํ์ ํ ์ ์๋ ๊ฒ์ฆ๋ถํฐ ์คํํ๋ค.
- ๋ณ๊ฒฝ ๋ชจ๋ compile
- ๋ณ๊ฒฝ ๋ชจ๋ detekt
- ๊ด๋ จ unit test๊ฐ ์์ผ๋ฉด ์คํ. instrumentation test๋ ๊ธฐ๊ธฐ๊ฐ ํ์ํ๋ฏ๋ก Runtime QA ๊ฒฐ์ ์ ๋ฐ๋ฅธ๋ค
- ๋ฌธ์ ์์
์ ๋ณ๋ ๊ฒ์ฆ ๋๊ตฌ๊ฐ ์์ผ๋ฏ๋ก ์ฐธ์กฐ ๊ฒฝ๋ก์ ๋ช
๋ น์ ์ค์ฌ ์ฌ๋ถ๋ฅผ ์ง์ ํ์ธ
- harness ๋ณ๊ฒฝ์
.codex/agents/*.toml ํ์ฑ ์ฌ๋ถ๋ฅผ ํ์ธ
- harness ๋ณ๊ฒฝ์
.agents/skills ์ฌ๋ณผ๋ฆญ ๋งํฌ ๋์๊ณผ skillยทagent ๋ฌธ์๊ฐ ์ฐธ์กฐํ๋ ๊ฒฝ๋ก์ ์ค์ฌ ์ฌ๋ถ๋ฅผ ํ์ธ
๋ณ๊ฒฝ๊ณผ ๊ด๋ จ ์๋ ์ ์ฒด ๋ช
๋ น์ ์ด๋ค ๋จ๊ณ์๋ ์ถ๊ฐํ์ง ์๋๋ค. FULL๋ ์ํฅ ๋ชจ๋ ๋ฒ์๊น์ง๋ง ํ์ฅํ๋ค. ์คํจํ๋ฉด ์์ธ์ ์์ ํ๊ณ ์คํจํ ๋ช
๋ น๊ณผ ๊ทธ ์ ํ ๊ฒ์ฆ๋ถํฐ ๋ค์ ์คํํ๋ค.
Agent ์
๋ ฅ
Reviewer์ QA๋ฅผ ํธ์ถํ ๋ ์๋ ์ ๋ณด๋ฅผ ์ ๋ฌํ๋ค.
- ์์ฒญ๊ณผ ์๋ฃ ์กฐ๊ฑด
- ์ํ๋
- Runtime QA ์ ํ ๊ฒฐ๊ณผ
- ๊ธฐ์ค branch์ diff ๋ฒ์
- ๋ณ๊ฒฝ ํ์ผ๊ณผ ์ํฅ ๋ฒ์
- ์ ์ฉํ project skill
- ๋ง์ง๋ง์ผ๋ก ์ฑ๊ณตํ ๊ฒ์ฆ ๋ช
๋ น๊ณผ ๊ฒฐ๊ณผ
๋ agent๋ ์ ๋ฌ๋ฐ์ skill ์ ๋ฌธ๊ณผ ์ค์ diff๋ฅผ ํจ๊ป ํ์ธํ๋ค.
ํ๋ฆ
์์
์์
-> ์๋ฃ ์กฐ๊ฑด ยท ์ํฅ ๋ฒ์ ยท ์ํ๋ ยท ์ ์ฉ skill
-> ๊ตฌํ์ด ํ์ํ๋ฉด Main ๊ตฌํ
-> ๋น ๋ฅธ ๊ฒ์ฆ
โโ ์คํจ -> Main ์์ -> ๋น ๋ฅธ ๊ฒ์ฆ
โโ LIGHT ํต๊ณผ -> PASS ์กฐ๊ฑด ํ์ธ
โโ STANDARD/FULL ํต๊ณผ -> Reviewer
โโ FIX_REQUIRED -> Main ์์ -> ๋น ๋ฅธ ๊ฒ์ฆ
โโ PASS -> QA (์ ํํ Runtime QA ํฌํจ)
โโ FIX_REQUIRED -> Main ์์ -> ๋น ๋ฅธ ๊ฒ์ฆ -> Reviewer -> QA
โโ PASS -> ์ต์ข
ํ์ธ
โโ ๋๋ฝ ๊ฒ์ฆ ์คํจ -> Main ์์ -> ๋น ๋ฅธ ๊ฒ์ฆ -> Reviewer -> QA -> ์ต์ข
ํ์ธ
โโ ํต๊ณผ -> PASS
๋ณต๊ท ์ง์
- ๋น ๋ฅธ ๊ฒ์ฆ ์คํจ: main agent๊ฐ ์์ ํ๊ณ ๋น ๋ฅธ ๊ฒ์ฆ์ ๋ค์ ์คํํ๋ค.
- Reviewer
FIX_REQUIRED: main agent๊ฐ ์์ ํ ๋ค ๋น ๋ฅธ ๊ฒ์ฆ๋ถํฐ ๋ค์ ์คํํ๊ณ Reviewer๋ฅผ ๋ค์ ํธ์ถํ๋ค.
- QA
FIX_REQUIRED: main agent๊ฐ ์์ ํ ๋ค ๋น ๋ฅธ ๊ฒ์ฆ, Reviewer, QA ์์๋ก ๋ค์ ์คํํ๋ค.
- ์ต์ข
ํ์ธ์์ ๋๋ฝ๋ ๊ฒ์ฆ์ด ์คํจํ๋ฉด main agent๊ฐ ์์ ํ ๋ค ๋น ๋ฅธ ๊ฒ์ฆ, Reviewer, QA, ์ต์ข
ํ์ธ ์์๋ก ๋ค์ ์คํํ๋ค.
- Reviewer ๋๋ QA
BLOCKED: main agent๊ฐ ํ์ํ ์กฐ๊ฑด์ ์ฌ์ฉ์์๊ฒ ๋ณด๊ณ ํ๊ณ , ํ๋ณด๋๋ฉด ์ค๋จ ์ง์ ๋ถํฐ ๋ค์ ํธ์ถํ๋ค.
- ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋๋ฉด ๋ณ๊ฒฝ ์ ์ ์ป์ compile, test, review, QA ๊ฒฐ๊ณผ๋ PASS ๊ทผ๊ฑฐ์์ ์ ์ธํ๋ค.
- ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์ง ์์์ผ๋ฉด ์ด๋ฏธ ํต๊ณผํ ๊ฒ์ฆ์ ๋ค์ ์คํํ์ง ์๋๋ค.
Reviewer์ QA๋ ์ฒซ ํต๊ณผ์์ ๊ฐ๊ฐ ํ ๋ฒ ํธ์ถํ๋ค. ๋ฐ๋ณต ํ์๋ฅผ ์ฑ์ฐ๊ธฐ ์ํ ์ฌํธ์ถ์ ์์ผ๋ฉฐ ์คํจ, finding, ๊ฒ์ฆ ํ ์ฝ๋ ๋ณ๊ฒฝ์ด ์์ ๋๋ง ๋ค์ ํธ์ถํ๋ค.
์ต์ข
ํ์ธ
Reviewer์ QA ์ดํ PASS ์ฆ๊ฑฐ๊ฐ ๋ชจ๋ ์ต์ ์ธ์ง ํ์ธํ๋ค. ๊ฐ์ diff์์ ์ด๋ฏธ ์ฑ๊ณตํ ๋ช
๋ น์ ๋ค์ ์คํํ์ง ์๊ณ , ๋๋ฝ๋ ๊ฒ์ฆ๋ง ์คํํ๋ค. ๋ง์ง๋ง ๊ฒ์ฆ ์ดํ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์ผ๋ฉด ๋น ๋ฅธ ๊ฒ์ฆ๋ถํฐ ๋ค์ ์์ํ๋ค. LIGHT๋ Reviewer์ QA ์์ด PASS ์กฐ๊ฑด์ ํด๋น ํญ๋ชฉ๋ง ํ์ธํ๋ค.
ํ๊ท ์ ๊ฒ
์๋ ์์๋ก ์์ ๋ฒ์ ๋ฐ์ ์ํฅ์ ํ์ธํ๋ค.
๋ณ๊ฒฝ ํ์ผ
-> ๋ณ๊ฒฝ๋ symbol๊ณผ ๊ณ์ฝ
-> ์ง์ ํธ์ถ์์ ์์กด ๋ชจ๋
-> ๊ด๋ จ ํ๋ฉด๊ณผ ์ง์
๊ฒฝ๋ก
-> ์ ์ง๋์ด์ผ ํ๋ ๊ธฐ์กด ๋์
-> ํ๊ท ๊ฒ์ฆ ์๋๋ฆฌ์ค
๊ณต์ ๊ณ์ฝ์ producer, consumer, relay๊ฐ ์์ผ๋ฉด ํจ๊ป ํ์ธํ๋ค. ๋ณ๊ฒฝ๋ ๋์๊ณผ ๊ฐ์ state, ์ ์ฅ์, navigation, result๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ์กด ๊ธฐ๋ฅ์ ํ๊ท ๋์์ผ๋ก ํฌํจํ๋ค.
PASS ์กฐ๊ฑด
์๋ ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ ์ต์ ๊ฒฐ๊ณผ๊ฐ ์์ด์ผ PASS๋ก ํ์ ํ๋ค.
- ์์ฒญํ ์๋ฃ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ค.
- ์ ์ฉํ project skill์ ๊ตฌ์กฐ์ convention์ ์ถฉ์กฑํ๋ค.
- ์ํฅ ๋ฒ์์ ์ง์ ํธ์ถ์์ ๊ณต์ ๊ณ์ฝ ์ฌ์ฉ์ฒ๋ฅผ ํ์ธํ๋ค.
- ์ํฅ๋ฐ๋ ๊ธฐ์กด ์ง์
๊ฒฝ๋ก์ ์ฃผ์ ๋์์์ ํ๊ท๊ฐ ๋ฐ๊ฒฌ๋์ง ์์๋ค.
- ๋ณ๊ฒฝ์ ์ ์ฉ๋๋ compile, detekt, test ๋๋ ๋ฌธ์ ๊ฒ์ฆ์ด ๋ง์ง๋ง ์์ ์ดํ ํต๊ณผํ๋ค.
STANDARD์ FULL์ Reviewer์ ๋ฏธํด๊ฒฐ High/Medium finding์ด ์๋ค.
STANDARD์ FULL์ QA๊ฐ ์คํ ๋์์ผ๋ก ์ ํ ์๋ยท์ฝ๋ ๊ฒ์ฆ์ ํต๊ณผํ๋ค.
- Runtime QA๋ฅผ ์งํํ๊ธฐ๋ก ํ ์์
์ ๋์ ์๋๋ฆฌ์ค๋ฅผ ํต๊ณผํ๋ค.
- ์์ฒญ ๋ฒ์์ ๋ฌด๊ดํ diff๊ฐ ์๋ค.
- ํ์ธ๋ ๋ฒ์ ๋ฐ์ ๊ธฐ์กด ๊ณ์ฝ๊ณผ ๋์์ ์๋ ค์ง ํ๊ท๊ฐ ์๋ค.
์ํ
PASS: ๋ชจ๋ ์ฑ๊ณต ์กฐ๊ฑด์ ์ต์ ๊ฒ์ฆ ๊ฒฐ๊ณผ๋ก ํ์ธํ ์ํ
FIX_REQUIRED: ๊ตฌํ ๋๋ ๊ฒ์ฆ ์คํจ๋ฅผ ์์ ํ๊ณ ์ ํด์ง ์ง์ ๋ถํฐ ๋ค์ ์คํํ ์ํ
BLOCKED: ์ฌ์ฉ์ ๋ต๋ณ, ๊ณ์ , ์๋ฒ, ๊ธฐ๊ธฐ, ๊ถํ ๋๋ ์ธ๋ถ ํ๊ฒฝ์ด ์์ด์ผ ๊ฒ์ฆ์ ๊ณ์ํ ์ ์๋ ์ํ
๊ฐ์ ์์ธ์ ์คํจ๊ฐ ์ธ ๋ฒ ๋ฐ๋ณต๋๋ฉด BLOCKED๋ก ํ์ ํ๊ณ ์คํจ ๋ช
๋ น, ํต์ฌ ์ค๋ฅ, ์๋ํ ์์ , ํ์ํ ์กฐ๊ฑด์ ์ ๋ฌํ๋ค.
๊ฒฐ๊ณผ
์์
์ข
๋ฃ ์ ์๋ ํญ๋ชฉ์ ๊ฐ๊ฒฐํ๊ฒ ๋ณด๊ณ ํ๋ค.
- ์ํ์ ์ํ๋
- ์ ์ฉํ skill
- ๋ณ๊ฒฝ ๋ฒ์์ ํ์ธํ ํ๊ท ๋ฒ์
- ์คํํ ๊ฒ์ฆ๊ณผ ๊ฒฐ๊ณผ
- Reviewer์ QA ํ์ ๋๋
LIGHT ์ ์ธ ๊ฒฐ๊ณผ
- Runtime QA ๊ฒฐ๊ณผ ๋๋ ์ ์ธ ์ฌ์
- ๋จ์ ์ํ์ด๋ blocker