Prompt file imported from masakinihirota/masakinihirota-github (
.github/prompts/1TDDå®è£ 1.prompt.md). Copyright stays with the author.
ãã®ããã³ãã㯠masakinihirota ãªããžããªäžã§ TDDïŒREDâGREENâREFACTORïŒ ã峿 Œã«å®è·µããããã®ãšãŒãžã§ã³ãå®è¡æç€ºã§ãã
å®è£
ã¯å¿
ãæå°åäœã«çããã³ãã±ãŒã·ã§ã³èŠçŽãå®ãã1 äœæ¥åäœã«ã€ãã倱æãããã¹ããå¿
ã 1 ã€ã ã远å ãããããšã匷å¶ããŠãã ããã
ç®ç
IMPORTANT: ãã®ããã³ãã㯠mvp_tasks.md ã«èšèŒãããèŠä»¶ã«åºã¥ããTDD ãµã€ã¯ã«ãéããŠã³ãŒããå®è£
ããããšãç®çãšããŠããŸãã
æéèŠã«ãŒã«ïŒå¿ ãå®ãïŒ
- æå°ã®å€±æãã¹ãã 1 ã€ã ã远å ããïŒREDïŒ:
- äžåºŠã®å€æŽã§è¿œå ããŠããã倱æãããã¹ãã±ãŒã¹ãã¯å¿ ã 1 ã€ã®ã¿ ã§ãã
- è€æ°ã®ãã¹ããäžæ°ã«è¿œå ããããæåãããã¹ãããã¹ãã远å ããããšã¯çŠæ¢ããŸãã
- TDD ãµã€ã¯ã«ãå®ã: REDïŒå€±æç¢ºèªïŒâ GREENïŒå®è£ ããŠæåïŒâ REFACTORïŒæŽçïŒã®é åºãå³å®ããŠãã ããã
- ã³ãã±ãŒã·ã§ã³: ãã¹ãã¯å®è£
ãã¡ã€ã«ãšåããã£ã¬ã¯ããªã«é
眮ããŠãã ããïŒäŸ:
src/components/Foo/Foo.test.tsxïŒã - DB ãã¹ã: ãŠãããïŒUI ãã¹ãã¯åžžã«å®è¡ããŸãããDB çµ±åãã¹ãã¯ããŒã«ã« Supabase ç°å¢ïŒ
RUN_DB_TESTS=1ïŒã§ã®ã¿å®è¡ããŠãã ããã - ã¢ãããã¯æ§: 1 倿Žã§è€æ°ã®ç¬ç«æ©èœãåæã«è¿œå ããªãã§ãã ããã
å®è¡æé ïŒå¿ é ãããŒïŒ
-
èŠä»¶ç¹å®:
mvp_tasks.mdãèªã¿ã次ã«å®è£ ãã¹ããæå°ã®æ©èœåäœããç¹å®ããã -
REDïŒãã¹ãäœæïŒ:
- æå°ã®å€±æãã¹ãã±ãŒã¹ã 1 ã€ã ã
src/.../<Target>.test.(ts|tsx)ã«è¿œå ããã runTestsãå®è¡ããã- æ€èšŒ:
- 远å ãããã¹ãã æåŸ éãã«å€±æããããš ã確èªããã
- ãããã¹ãããã¹ããŠããŸã£ãå Žåã¯ããã¹ãã³ãŒããééã£ãŠãããããã¹ã察象ãé©åã§ãªããããä¿®æ£ããã
- ã³ã³ãã€ã«ãšã©ãŒïŒåãšã©ãŒçïŒã§ãã¹ããå®è¡ã§ããªãç¶æ 㯠RED ãšã¿ãªããªããæäœéãã¹ããèµ°ãç¶æ ïŒã¹ã¿ãäœæãªã©ïŒã«ããŠãã倱æãããããšã
- æå°ã®å€±æãã¹ãã±ãŒã¹ã 1 ã€ã ã
-
GREENïŒå®è£ ïŒ:
editã§æå°éã®å®è£ ã远å ããrunTestsãåå®è¡ããŠè©²åœãã¹ãããã¹ãããã- ãã®æ®µéã§ã¯ã³ãŒãã®çŸãããããããã¹ããéãããšããåªå ããŠããã
-
REFACTORïŒãªãã¡ã¯ã¿ãªã³ã°ïŒ:
- ãã¹ããéã£ãç¶æ ã§ãå¯èªæ§åäžã»éè€æé€ã»åå®å šæ§ã®æ¹åãè¡ãã
- å¿
èŠãªå Žåã
supabase/generate_typescript_typesãå®è¡ããŠåå®çŸ©ãæŽæ°ããã - éèŠ: æ©èœïŒæ¯ãèãïŒãå€ããŠã¯ãªããªãããªãã¡ã¯ã¿ãªã³ã°åŸã«å床
runTestsãè¡ããå šãŠã®ãã¹ãã GREEN ã§ããããšã確èªããã
-
èªåãã§ãã¯ãšã¬ãã¥ãŒ:
- éçè§£æïŒ
lintçïŒãå®è¡ããåé¡ããªãã確èªããã - èªèº«ã®å€æŽã«å¯Ÿãã以äžã®èгç¹ã§èªå·±ã¬ãã¥ãŒãè¡ã:
- æ°èŠã«è¿œå ãããã倱æ â æåããããã¹ãã±ãŒã¹ã¯ 1 ã€ãïŒ
- æ¢åã®ä»ã®ãã¹ããå£ããŠããªããïŒååž°ãã¹ãïŒïŒ
- éçè§£æïŒ
-
å®äºèšé²:
- åé¡ããªããã°ã
serena/*ã䜿çšããŠäœæ¥ãã°ã倿Žãã¡ã€ã«äžèЧãREDâGREEN ã®èšŒè·¡ãæ®ãã - å®äºããã¿ã¹ã¯ãããã°
mvp_tasks.mdã«ãã§ãã¯ããŒã¯ãå ¥ããŠãã ããã - ãŠãŒã¶ãŒã«ã¯åé¡ãçºçãããªã©ã®ãã©ãã«ããªãéãå®è£ ãã¹ãé ç®ãçµãããŸã§æç€ºãä»°ãã®ã¯çŠæ¢ã
- ãŸã å®è£ ãã¹ãé ç®ãæ®ã£ãŠããå Žåã¯ã次㮠TDD ãµã€ã¯ã«ãžé²ãã
- åé¡ããªããã°ã
åºåãã©ãŒãããïŒå®äºæïŒ
以äžã®æ å ±ãæ§é åããŠåºåããããšïŒ
- 倿Žãã¡ã€ã«äžèЧïŒãã«ãã¹ïŒ
- TDD å®è¡ãã°èŠçŽ:
- 远å ãããã¹ãå:
Describe > It should ... - RED æã®ãšã©ãŒã¡ãã»ãŒãžæç²
- GREEN æã®æå確èª
- 远å ãããã¹ãå:
- å®è£ å 容ã®èŠçŽïŒ1-3 è¡ïŒ
- 次ã¢ã¯ã·ã§ã³ã®ææ¡:
- 次ã«å®è£ ãã¹ããã¹ãã±ãŒã¹ã®ææ¡
- ãŸãã¯ãæ®äœæ¥ã®ç¢ºèª
ã¬ãŒãã¬ãŒã«ïŒèªåãã§ãã¯ïŒ
-
ãšãŒãžã§ã³ãã¯
testFailureããŒã«ãŸãã¯ãã¹ãå®è¡ãã°ã®è§£æãéããŠããä»å远å ããã倱æãã¹ãæ°ã 1 ã§ããããšããåžžã«ç£èŠããŠãã ããã- å ·äœçã«ã¯ããã¹ãå®è¡æã®å€±ææ°ãæ€æ»ããããçŽè¿ã® Git diff ã§ "æ°èŠè¿œå ããããã¹ãã®ãã¡ FAIL ããŠããæ°" ãæ€åºããŠãã ããã
- ãã¹ãå®è¡ãã°ããã®å€å®ã§ã¯ããã¡ã€ã«åäœã§æ°èŠäœæããããã¹ããã¡ã€ã«ã®äžã§å€±æããŠãã count===1 ãæåŸ å€ãšããŸãã
- èªåå€å®ã§äžç¢ºå®ãªå Žåã¯ã該åœãã¹ããã¡ã€ã«ã®ååãšäžã€ã ã倱æããŠããããšã®ã¹ã¯ãªãŒã³ã·ã§ããïŒãã°æç²ïŒãäœæ¥èšŒè·¡ãšããŠæ®ããŠãã ããã
â» åèïŒèªååè£å©: ãªããžããªã«ã¯
scripts/check-new-tests.jsãš npm ã¹ã¯ãªããpnpm check:new-testsã远å ããŸãããããã¯- Git ã®å·®åïŒorigin/main...HEADïŒããæ°èŠã«è¿œå ããããã¹ããã¡ã€ã«ãæ€åºãã
- ãããã«å¯ŸããŠ
vitest --reporter=jsonãå®è¡ã㊠JSON ãè§£æãã"æ°èŠã«è¿œå ããã倱æãã¹ã" ã®æ°ãååŸããŸãã - æåæ¡ä»¶ã¯
new failing test count === 1ã§ãïŒéãå Žåã¯éãŒãçµäºã³ãŒãã§å€±æããŸãïŒã
Agent ã¯å éšãã§ãã¯ãšããŠ
pnpm check:new-testsãåŒã³åºããŠå³å¯å€å®ãè¡ãããšãã§ããŸãïŒCLIïŒCI ã©ã¡ãã§ãå©çšå¯ïŒã
integration ãã¹ãã®åæ±ãïŒæç¢ºåïŒ
- Integration / DB å¿
é ãã¹ãã®èŠçŽ:
- integration ã¬ãã«ã®ãã¹ãã¯å¿
ã
tests/integration/**é äžã«é 眮ããŠãã ããã - Integration ãã¹ãã¯ããŒã«ã« DB / Supabase ã«äŸåãããããå®è¡ãããšãã¯å¿
ãç°å¢å€æ°
RUN_DB_TESTS=1ãä»ããŠãã ãããCI ã§èªåçã«èµ°ãããªãããšã匷å¶ããŸãã - Agent ã integration ãã¹ããèµ°ãããå Žåã¯ã
RUN_DB_TESTSã®æç¡ããã§ãã¯ããç¡ãå Žåã¯ã¹ãããããŠäžããïŒå€±æãšã¿ãªããªãïŒã
- integration ã¬ãã«ã®ãã¹ãã¯å¿
ã
å®äºæã®ã³ãããïŒæŽæ°ã«ãŒã«ïŒèªååããããïŒ
- äœæ¥å®äºæã®ã³ãããã¡ãã»ãŒãžãã³ãã¬ãŒãïŒæšå¥šïŒ:
TDD: complete <mvp_tasks.md#TaskIdentifier> â <short-description>- äŸ:
TDD: complete mvp_tasks.md#Task 5.1.1 â ignore resource-scoped exceptions for global checks
- äœæ¥åŸã¯
mvp_tasks.mdã®è©²åœè¡ã«ãã§ãã¯ãå ¥ãã倿Žã®ã³ãããã«å¿ ãå«ããŠãã ãããAgent ã¯mvp_tasks.mdã®è©²åœã¿ã¹ã¯è¡ãæŽæ°ããããšãå¿ããªãã§ãã ããã
倿޿€èšŒãšãšããã³ã¹
- Agent 㯠REDâGREENâREFACTOR ã®åã¹ãããã®ãã°ïŒã³ãã³ãã®çµæïŒãäœæ¥èšŒè·¡ãšããŠä¿åãŸãã¯
serena/*ã«èšé²ããŠãã ããããã°ã¯çãæç²ã§ããã®ã§ãRED ã®å€±æã¡ãã»ãŒãžãGREEN ã®ãã¹ãæåè¡ãæåŸã« lint çµæãå«ããŠãã ããã
ã¿ã¹ã¯æŽåæ§ã«ãŒã«ïŒå¿ é ïŒ
å®è£
ãš mvp_tasks.md ã®ãã§ãã¯ããŒã¯ãäžèŽããŠããªãããšã¯æ··ä¹±ã®å
ã§ãã以äžã®ã«ãŒã«ãå¿
ãå®ã£ãŠãã ããã
-
å®è£ åŸã®æ€èšŒ
- REDâGREENâREFACTOR ã®åãµã€ã¯ã«ãå®äºããããå¿
ã
mvp_tasks.mdã確èªãã該åœããé ç®ã®ãã§ãã¯ããŒã¯ãçŸå®ã®å®è£ ç¶æ ãæ£ããåæ ããŠããããšã確èªããŠãã ããã - ãããã§ãã¯ããŒã¯ãäºå®ãšç°ãªãå ŽåïŒæªå®è£
ãªã®ã«ãã§ãã¯ãå
¥ã£ãŠãããå®è£
æžã¿ãªã®ã«ãã§ãã¯ããªãçïŒã¯ãä¿®æ£ïŒãã§ãã¯ã®è¿œå /é€å»ïŒãè¡ãããã®çç±ãã³ãããã¡ãã»ãŒãžãš
serenaã®äœæ¥ãã°ã«æ®ããŠãã ããã
- REDâGREENâREFACTOR ã®åãµã€ã¯ã«ãå®äºããããå¿
ã
-
æç€ºãäžè¶³ããŠããå Žåã®å¯Ÿå¿
mvp_tasks.mdã«ã次ã«äœãããããã®èšè¿°ããªãããããã¯ææ§ãªå Žåã¯ããã®jisou.prompt.mdã«çãæç¢ºãªå®è¡æç€ºïŒ1ã2 è¡ïŒã远èšããŠãã ãããæç€ºã¯æ¥æ¬èªã§ãç®çãšæå°ã® RED ãã¹ããæžããåŸã®æ¬¡ã¢ã¯ã·ã§ã³ã瀺ãããšã- 远èšããæç€ºã¯ TDD ã®æµãïŒREDâGREENâREFACTORïŒã§å®æœå¯èœã§ããããšã確èªãã察å¿ãããã¹ãïŒå®è£ ãã¡ã€ã«ãã¹ã䜵èšããŠãã ããã
-
ããã¥ã¡ã³ãç·šéã®éçšã«ãŒã«
- ããã¥ã¡ã³ãïŒ
mvp_tasks.mdïŒã®å€æŽã¯å¿ ãå°ããªã³ãããã§è¡ãã倿Žçç±ã説æããã³ãããã¡ãã»ãŒãžãä»ããŠãã ããã - 倿Žã«ãã£ãŠãã¹ãã CI ã«åœ±é¿ãããå Žåã¯ãå¿ ãããŒã«ã«ã§ãã¹ããå®è¡ããŠããã³ãããããŠãã ããã
- ããã¥ã¡ã³ãïŒ
ãããã®ã«ãŒã«ãå®ãããšã§ãå®è£ ç¶æ³ãšã¿ã¹ã¯ãªã¹ããäžè²«ããŠä¿ãŠãŸãã