Prompt file imported from karasu354/team-balancer (
.github/prompts/implement.prompt.md). Copyright stays with the author.
æ©èœå®è£
æäœå¯èœç¯å²ïŒæç¢ºåïŒ
â
æäœå¯èœïŒã³ãŒãå®è£
ïŒãã¹ãå®è£
ïŒ:
- utils/ïŒãã¡ã€ã³ããžãã¯ã»åå®çŸ©ïŒ
- components/ïŒUI ã³ã³ããŒãã³ãïŒ
- composable/ïŒAPI ã©ãããŒïŒ
- pages/api/ïŒAPI RoutesïŒ
- test/utils/ïŒãŠããããã¹ãïŒ
- test/api/ïŒAPI ãã¹ãïŒ
- e2e/ïŒE2E ãã¹ãã»çµ±åãã¹ãïŒ
- .steering/[察象ãã©ã«ã]/tasks.mdïŒãã§ãã¯å®äºããŒã¯ã®ã¿ïŒ
ð åç
§ã®ã¿ïŒå€æŽçŠæ¢ïŒ:
- docs/
- .github/copilot-instructions.md
- .steering/[察象ãã©ã«ã]/requirements.md
- .steering/[察象ãã©ã«ã]/design.md
- pages/ïŒrouting ã®æ§é 倿Žã¯é¿ããïŒ
å®è¡åã¬ãŒãïŒå¿ é ïŒ
以äžããã¹ãŠæºããå Žåã®ã¿å®è£ ãéå§ããŠãã ããã
.steering/é äžã«äœæ¥ãã©ã«ãã1件以äžååšãã- ææ°ãã©ã«ãïŒ
YYYYMMDD-[é£çª]-[æ©èœå]ã§æå€§ã®ãã®ïŒãç¹å®ã§ãã - ææ°ãã©ã«ãã«
requirements.md/design.md/tasks.mdãååšãã
äžèšãæºãããªãå Žåã¯å®è£ ãäžæ¢ããæ¬¡ã®åœ¢åŒã§è¿çããŠãã ããã
å®è£
ãéå§ã§ããŸããã
çç±:
- ææ°ã® .steering ãååšããªãããŸã㯠requirements.md / design.md / tasks.md ãäžè¶³ããŠããŸãã
察å¿:
- å
ã« /requirements ãå®è¡ã㊠.steering ãäœæããŠãã ããã
ãã®äžæ¢ã±ãŒã¹ã§ã¯ãã³ãŒã倿Žã»ãã¡ã€ã«äœæãè¡ããªãããšã
å®è£ éå§åã®æææ±ºå®ïŒå®è£ åã« ãŠãŒã¶ãŒã«ç¢ºèªïŒ
以äžã®ã»ã¯ã·ã§ã³ã§å®è£ æ¹éãè€æ°ã®éžæè¢ããéžãã§ããããŸãã
åªå 床ã»é²ãæ¹ã®ç¢ºèª
ð 以äžã®ãããã§é²ããŸããïŒïŒâã¯æšå¥šïŒ
â ïž å
šéžæè¢ã§ãã¹ãå®è£
ïŒãŠããã / E2E / çµ±åãã¹ãïŒã¯å¿
é ã§ãã
A) â ããã©ã«ãé²è¡
- ãã¡ã€ã³ããžã㯠â UI â API ã«ãŒãã®é ã§å®è£
- åã¬ã€ã€ãŒããšã«ãã¹ãã远å ã»æŽæ°
- ããã¥ã¡ã³ãïŒdocs/ å
API/仿§ïŒã忿޿°
B) 段éçãªãªãŒã¹
- ãŸããã¡ã€ã³ããžãã¯ã®ã¿å®æïŒ+ 察å¿ãããŠããããã¹ãïŒ
- ãã®åŸ UI / API Routes ãå¥ãã§ãŒãºã§å®è£
- åãã§ãŒãºã§ãã¹ãå®äºã»ããã¥ã¡ã³ãæŽæ°
C) 䞊åå®è£
- utils/ ãš components/ ã䞊åã§é²ãã
- ãã¹ãã䞊è¡å®è£
ïŒåŸåãã«ããªãïŒ
- æçµæ®µéã§ E2E ãã¹ãã远å
å®è£ éå§åã®ä»æ§ç¢ºèªãã¹ãïŒãã§ãã¯ãªã¹ã圢åŒïŒ
å®è£
ãå§ããåã«ã以äžã®ãã§ãã¯ãªã¹ãã«çããŠãã ãããäžç¢ºå®ãªå Žåã¯å®è£
ãäžæ¢ãã/requirements-update ã§ä»æ§ã確èªããŠãã ããã
ãŠãŒã¶ãŒãžã®ç¢ºèªè³ªåïŒ
ãæ©èœèŠä»¶ã®ç¢ºèªã
â¡ ãã®ã¿ã¹ã¯ã§å®è£
ãããäž»ãªæ©èœãã1æã§èª¬æã§ããŸããïŒ
â¡ åå ãã¬ã€ã€ãŒãè©äŸ¡ããžãã¯ãããŒã æ°ãªã©ãå¶çŽæ¡ä»¶ãã2ã€ä»¥äžåæã§ããŸããïŒ
â¡ ãã®ã¿ã¹ã¯å®äºåŸããã¬ã€ã€ãŒã®æäœãããŒãã¯å€ãããŸããïŒ å€ããå Žåã¯ç°¡æœã«èª¬æããŠãã ããã
ãAPIã»äºææ§ã®ç¢ºèªã
â¡ å®è£
ã«äŒŽã API ã¹ããŒãïŒå
¥åºåïŒã®å€æŽããããŸããïŒ ããå Žå㯠`docs/team-balancer.v1.yaml` æŽæ°ãå¿
èŠã§ãã
â¡ `fromJson` / `playersInfo` ã®äºææ§ã«åœ±é¿ããããŸããïŒããå Žå㯠`utils/player.ts` ã§äºæå±€ãäœæããŠãã ããã
ããã¹ãå®è£
ã®ç¢ºèªãâ ïž ãã¹ãå®è£
ã¯å¿
é ã§ã
â¡ utils/ ã®å€æŽã«å¯Ÿå¿ãããŠããããã¹ãïŒtest/utils/ïŒã远å ããŸããïŒ
â¡ïž å¿
é : æ£åžžç³»ã»ç°åžžç³»ã»å¢çå€ãå
šãŠã«ããŒ
â¡ ã³ã³ããŒãã³ã/UI ã®å€æŽã«å¯Ÿå¿ãã E2E ãã¹ãïŒe2e/ïŒã远å ããŸããïŒ
â¡ïž å¿
é : ãŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ã»ãããŒãæ€èšŒ
â¡ API Routes ã«å€æŽãããå ŽåãAPI ãã¹ãïŒtest/api/ïŒã远å ããŸããïŒ
â¡ïž å¿
é : å
¥åºåæ€èšŒã»ãšã©ãŒãã³ããªã³ã°ã»ã¹ããŒã¿ã¹ã³ãŒããæ€èšŒ
â¡ïž å
šãŠã«ãã§ãã¯ïŒèª¬æã§ããå Žåã®ã¿ãå®è£
éå§ãã«ããã
.steering/ ãã£ã¬ã¯ããªå
ã®èŠä»¶ã»èšèšã»ã¿ã¹ã¯ãåç
§
requirements.mdâ äœãå®è£ ãããïŒæ©èœèŠä»¶ã»å¶çŽïŒdesign.mdâ ã©ãå®è£ ãããïŒåå®çŸ©ã»ããžãã¯èšèšã»ã³ã³ããŒãã³ãæ§æïŒtasks.mdâ ã©ã®ã¿ã¹ã¯ã察象ãšãããïŒæªå®äºãã§ãã¯ããã¯ã¹ã確èªïŒ
å®è£
å®äºåŸã¯ãtasks.md ã®å¯Ÿå¿ãããã§ãã¯ããã¯ã¹ãå®äºæžã¿ã«æŽæ°ããŠãã ããã
å®è£ å®äºæã®æçµç¢ºèªïŒå¿ é ïŒ
ã³ãããåã«ãå¿ ã以äžããã®é ã§å®è¡ããŠãã ããã
npm run format
npm run format:test
npm run typecheck
npm run test
npm run test:e2e
npm run format:testã倱æããå Žåã¯ãæŽåœ¢ã»ä¿®æ£åŸã«åå®è¡ããnpm run typecheckã倱æããå Žåã¯ãåãšã©ãŒãä¿®æ£ããŠåå®è¡ããnpm run testã倱æããå Žåã¯ã倱æåå ãä¿®æ£ããŠåå®è¡ããnpm run test:e2eã倱æããå Žåã¯ã倱æåå ãä¿®æ£ããŠåå®è¡ãã- 5ã€ã®ã³ãã³ããæåãããŸã§ãã¿ã¹ã¯ãå®äºæ±ãã«ããªã
ãã®ããã³ããã®å¢çç·
- ããããšïŒã³ãŒãå®è£
+ ãã¹ãå®è£
ïŒ:
- ææ°
.steeringã®tasks.mdã«ããæªå®äºã¿ã¹ã¯ãå®è£ ãã - â å®è£ ã«å¯Ÿå¿ãããã¹ãŠã®ãã¹ãã远å ã»æŽæ°ããïŒãŠããã / E2E / çµ±åãã¹ãïŒ
- ãã¹ãã»ããã¥ã¡ã³ãæŽæ°ãè¡ã
- å®è£
å®äºã¿ã¹ã¯ã
tasks.mdã§å®äºã«æŽæ°ãã
- ææ°
- ãããªãããš:
.steeringã®æ°èŠäœæïŒããã¯/requirementsã®è²¬åïŒ- ã¬ãã¥ãŒå°çšã®ææåºåïŒããã¯å逿žã¿ïŒ
- ã³ãããã¡ãã»ãŒãžçæïŒããã¯å逿žã¿ïŒ
å®è£ é åº
å¿ ã以äžã®é ã§å®è£ ããŠãã ãããåã¬ã€ã€ãŒã宿ããŠããæ¬¡ãžé²ãã â ïž ãã¹ãå®è£ ãå«ãŸããŸããåã¬ã€ã€ãŒã®å®è£ ïŒãã¹ããåæã«å®æãããŠãã ããã
1. utils/ + test/utils/
- ãã¡ã€ã³ããžãã¯ã»åå®çŸ©ïŒTeamBalancer, Player çïŒã®å®è£
- ãŠããããã¹ã远å ã»æŽæ°ïŒå¢çå€ã»æ£åžžç³»ã»ç°åžžç³»ïŒ
2. components/ + (e2e/é¢é£ãã¹ã)
- React ã³ã³ããŒãã³ãïŒUI ã®æç»ã»ã€ãã³ãå§è²ïŒã®å®è£
- E2E ãã¹ã远å ã»æŽæ°ïŒUI ã€ã³ã¿ã©ã¯ã·ã§ã³æ€èšŒïŒ
3. composable/ + (e2e/é¢é£ãã¹ã)
- API åŒã³åºãã©ãããŒïŒcomposable/api.tsïŒã®å®è£
- E2E / çµ±åãã¹ã远å ã»æŽæ°
4. pages/api/ + test/api/
- API RoutesïŒå
¥åæ€èšŒã»Redis æäœïŒã®å®è£
- API ãã¹ã远å ã»æŽæ°ïŒæ£åžžç³»ã»ç°åžžç³»ã»ãšã©ãŒãã³ããªã³ã°ïŒ
5. docs/
- 仿§ã»API 仿§ã®æŽæ°ïŒdocs/team-balancer-spec.md / docs/team-balancer.v1.yamlïŒ
å®è£ ã«ãŒã«
TypeScript
strict: trueæºæ ïŒanyçŠæ¢ãæ»ãå€åãå¿ ãæç€º- æ¢åã®åïŒ
PlayersJson,PlayerJson,Player,TeamBalancerçïŒãåå©çšãã asãã£ã¹ãã¯ååçŠæ¢ïŒäœ¿ãå Žåã¯ã³ã¡ã³ãã§çç±ã説æïŒ
ãã¡ã€ã³ããžãã¯ïŒutils/ïŒ
- ããŒã åå²ããžãã¯ã¯
utils/teamBalancer.tsã«éçŽãã - ãã¬ã€ã€ãŒããžãã¯ã¯
utils/player.tsã«éçŽãã - å¯äœçšã®ãªãçŽç²é¢æ°ã®ã¿
utils/utils.tsã«çœ®ã - äžå€æ¡ä»¶ãå®ãïŒåå ãã¬ã€ã€ãŒãã¡ããã©10人ã®ãšãã®ã¿åå²å®è¡
- è©äŸ¡ã¹ã³ã¢ã®éã¿ïŒ0.3 / 0.5 / 0.2ïŒã¯ä»æ§å€æŽããªãéã倿Žããªã
fromJson/playersInfoã®å ¥åºåäºææ§ãå£ããªã
React ã³ã³ããŒãã³ãïŒcomponents/ïŒ
- Props ã¯å¿
ãåå®çŸ©ããïŒ
interface XxxProps { ... } - ã€ãã³ããã³ãã©ã¯åãæç€ºããïŒ
React.MouseEvent,React.ChangeEventç - ããžãã¹ããžãã¯ãã³ã³ããŒãã³ãã«æžããªãïŒ
utils/ã«å§è²ïŒ - 1ãã¡ã€ã«100è¡ä»¥å ãç®å®
- Tailwind CSS ã®ã¿ïŒã€ã³ã©ã€ã³ã¹ã¿ã€ã«çŠæ¢ïŒ
API RoutesïŒpages/api/ïŒ
- å ¥åå€ã®åãšå¿ é é ç®ãå¿ ãæ€èšŒãã
- HTTP ã¹ããŒã¿ã¹ãé©åã«è¿ãïŒ400 / 404 / 405 / 500ïŒ
- æ©å¯æ å ±ã»å éšã¹ã¿ãã¯ãã¬ãŒã¹ãã¬ã¹ãã³ã¹ã«å«ããªã
- API 仿§ã倿Žããå Žåã¯
docs/team-balancer.v1.yamlã忿޿°ãã
ãŠããããã¹ãïŒtest/utils/ / test/api/ïŒ
- â
å¿
é :
utils/ã®å€æŽã«ã¯å¿ ã察å¿ãããã¹ãã远å ã»æŽæ°ãã - â å¿ é : å¢çå€ãå¿ ãã«ããŒããïŒ0ä»¶ã»10ä»¶ã»11ä»¶ã»50ä»¶
- â å¿ é : æ£åžžç³»ã»ç°åžžç³»ã»ãšããžã±ãŒã¹ãç¶²çŸ ãã
- â å¿ é : API Routes ã«å€æŽãããå Žåãå ¥åºåæ€èšŒã»ãšã©ãŒãã³ããªã³ã°ãã¹ãã远å
- å®è¡ïŒ
npm run test:unit - å®è¡ïŒ
npm run test(å šãã¹ã)
E2E ãã¹ãïŒe2e/ïŒ
- â å¿ é : UI ã³ã³ããŒãã³ã远å ã»ä¿®æ£æã¯ E2E ãã¹ãã远å ã»æŽæ°ãã
- â å¿ é : ãŠãŒã¶ãŒã®ã€ã³ã¿ã©ã¯ã·ã§ã³ãããŒå šäœãæ€èšŒãã
- â å¿ é : ç»é¢é·ç§»ã»ãã©ãŒã å ¥åã»ããŒã¿è¡šç€ºã»ãšã©ãŒãã³ããªã³ã°ããã¹ããã
- å®è¡ïŒéåžžïŒïŒ
npm run test:e2e - å®è¡ïŒãã©ãŠã¶è¡šç€ºïŒïŒ
npm run test:e2e:headed