| name | requirements-definition |
| description | A skill to break down ambiguous requests into small, immediately implementable requirement definitions through strategic questioning. Focus on WHY and WHAT, excluding HOW. This is used when ambiguous requests such as 'I want to add a feature like XX,' 'I want to fix XX,' or 'I did XX' are made outside of Plan Mode. |
| allowed-tools | AskUserQuestion, Bash, Read, Write |
èŠä»¶å®çŸ© / Requirements Definition
ææ§ãªèŠæããå®è£
å¯èœãªç²åºŠã®èŠä»¶å®çŸ©ããã¥ã¡ã³ãã«å€æããã¹ãã«ã
ãããã§ãã·ã§ãã«ã³ã³ãµã«ã¿ã³ããšããŠæ¯èããæŠç¥çãªè³ªåãéããŠãŠãŒã¶ãŒã®çã®èŠæãåŒãåºãã
質åâèŠçŽâåæâããã¥ã¡ã³ãåãŸã§ãã«ãŒãã§åãã
Workflow
1. åæèŠæãšæž©åºŠæã®ææ¡
ãŠãŒã¶ãŒã®èŠæãåãåãããŸãçãèŠçŽããŠèªèãæããã
- ãã€ãŸãââããããçç±ã¯â³â³ã察象ã¯â¡â¡ãåªå
ã¯ÃÃãåã£ãŠãïŒãã®åœ¢åŒã§1åã ã確èª
- ããã§è«ç¹ããºã¬ãŠããã°ä¿®æ£ããŠããæ¬¡ãžé²ã
ããã§äœ¿ã軜éãã¬ãŒã ïŒSCQA-lite
- S: ä»ã©ããªã£ãŠãïŒ
- C: äœãå°ã£ãŠãïŒç©è¶³ããªãïŒ
- Q: ãããäœã決ããå¿
èŠãããïŒ
- A: ãŸãããããæ¹åã§èŠä»¶ã«ããïŒä»®
ãŸãããŠãŒã¶ãŒã®é°å²æ°ãäºæ³ãããäœæ¥ã®è€é床ããæž©åºŠæãæŽã¿ãèŠä»¶å®çŸ©ã®æž©åºŠæã調æŽããã
2. 質åã«ããæç¢ºåïŒã«ãŒãïŒ
ææ§ããæé€ããããŸã§ã以äžã®èгç¹ã§è³ªåãç¹°ãè¿ããŸããããããã£ãŠããç®çãªã©ã¯è³ªåäžèŠã
- ç®ç (WHY): äœãæ¹åãããã°æåãïŒ
- 仿§ (WHAT): ãŠãŒã¶ãŒãäœãã§ããããã«ãªããïŒ
- ç¯å²: ã©ããŸã§ãããïŒãããªããïŒ
- å¶çŽ: æè¡çã»æéçã»å€éšäŸåã®å¶çŽã¯ïŒ
- æååºæº: ã©ããªãã°å®äºãïŒ
質åã®ã³ãïŒã¯ããŒãºãã¯ãšã¹ãã§ã³ãšãªãŒãã³ã¯ãšã¹ãã§ã³ã䜿ãåããã
ã¯ããŒãºãã¯ãšã¹ãã§ã³ã¯ãAskUserQuestion toolã䜿ãã䜿ããªãå Žåã質åããšã«éžæè¢ãæç€ºããã
ãªãŒãã³ã¯ãšã¹ãã§ã³ã¯ããã£ããã§åçãåŸ
ã€
ãŠãŒã¶ãŒãåçãããããããããA,Bãªã©ã®éžæè¢ãæç€ºããããšãæãŸããã
3. User Story Mapping
ç»é¢äžèЧããããŠãŒã¶ãŒã®è¡åã®æµãã§èŠä»¶ã䞊ã¹ãã
- äŸïŒ
éã â å
¥å â ç¢ºèª â ä¿å â åŸã§èŠã/ç·šé
- åã¹ãããã«ãæäœéMVPãããã£ããå¬ãããã眮ã
ç®çïŒMVPã©ã€ã³ãåŒããŠã¹ã³ãŒãèšåŒµãæ¢ãã
4. åå
¥æ¡ä»¶ïŒAcceptance CriteriaïŒãäœã
å®äºå€å®ã§ãã圢ã«ããã
Gherkin圢åŒïŒGiven/When/ThenïŒãæšå¥šã
äŸïŒ
- Given æªãã°ã€ã³, When ä¿åãæŒã, Then ãã°ã€ã³ãä¿ã
- Given å
¥åãäžæ£, When éä¿¡, Then ãšã©ãŒè¡šç€ºãéä¿¡ããªã
5. éæ©èœã»å¶çŽãæå°éãã§ãã¯ïŒFURPS-liteïŒ
é¢ä¿ããããããªãã®ã ãæŸãã
- PerformanceïŒé
ããšå°ãïŒ
- ReliabilityïŒå€±ææã©ãããïŒ
- UsabilityïŒè¿·ããããïŒ
- Security/PrivacyïŒæ±ãããŒã¿ã¯ïŒ
- ConstraintsïŒæè¡/æé/å€éšAPIãªã©
6. ãªã¹ã¯ãšåæïŒRAID-liteïŒ
èŠä»¶ã®ãã¬æ»ããé²ããããçãæ®ãã
- Risk: 倱æããããªç¹
- Assumption: åæ
- Issue: æ¢ç¥ã®åé¡
- Dependency: äŸå
7. èŠä»¶ã®ãŸãšããšæçµç¢ºèª
åéããæ
å ±ãæ§é åãããŠãŒã¶ãŒã«æçµç¢ºèªããã
ææãããã°åæ ããå床ãŸãšããæç€ºããã
8. Markdown ããã¥ã¡ã³ãçæ
docs/requirements/[æ©èœå].md ã«çæããã
ãã©ãŒããã㯠.github/ISSUE_TEMPLATE/requirements.md ã䜿çšããã
9. Issue åã®ç¢ºèª
ãŠãŒã¶ãŒã« GitHub Issue ãšããŠäœæããã確èªããã
- Yes:
create_issue.py ãŸã㯠gh CLI ã§ Issue äœæ
- No: ããã¥ã¡ã³ãã®ã¿ã§å®äº
Scripts
create_issue.py
GitHub Issue ãäœæããã©ãã«ãèšå®ããŸãã
python3 .claude/skills/requirements-definition/scripts/create_issue.py \
--title "[REQ] æ©èœå" --file requirements.md \
--category feature --component frontend --component backend
python3 .claude/skills/requirements-definition/scripts/create_issue.py --interactive
gh issue create --title "[REQ] æ©èœå" --body "$(cat requirements.md)" \
--label requirements --label feature --label frontend
ã©ãã«äŸ:
CATEGORY_EXAMPLES = ["feature", "fix"]
COMPONENT_EXAMPLES = ["backend", "frontend", "ingest"]
Best Practices
ãããã§ãã·ã§ãã«ã³ã³ãµã«ã¿ã³ããšããŠ
- ãŠãŒã¶ãŒã®çã®èŠæãåŒãåºã: 衚é¢çãªèŠæã®è£ã«ããæ¬è³ªçãªèª²é¡ãç¹å®
- éžæè¢ãæç€º: è€æ°ã®ã¢ãããŒããããå Žåãpros/cons ãæç€º
- ãã¹ããã©ã¯ãã£ã¹ææ¡: æ¥çæšæºããããžã§ã¯ãæ
£ç¿ã«åºã¥ãæšå¥š
- ææ§ããèš±ããªã: è§£éãè€æ°ããå Žåã¯å¿
ã確èª
å¹ççãªè³ªå
- åªå
é äœãã€ãã: éèŠãªè³ªåããé ã«
- ãŸãšããŠè³ªå: é¢é£ãã質åã¯1床ã«
- å
·äœäŸã䜿ã: æœè±¡çãªè³ªåã¯å
·äœäŸã§è£è¶³
ããã¥ã¡ã³ãå質
- 端çã§æŽç·Žãããæ¥æ¬èª: åé·ãªè¡šçŸãé¿ãã
- HOW ãæé€: å®è£
æ¹æ³ã¯æžããªãïŒã³ãŒãäŸãªã©ïŒ
- æ¬è³ªçãªæ
å ±ã®ã¿: WHY ãš WHAT ã«éäž
Question Packs
Pack A: WHYïŒJTBD-liteïŒ
- ãããã§ãããšäœãå¬ããïŒ
- ããŸã®ä»£æ¿ææ®µã¯ïŒïŒæäœæ¥/å¥ã¢ããª/ææ
¢ïŒ
- âãã€ã»ã©ããªç¶æ³ã§âå°ãïŒïŒé »åºŠ/çã¿ïŒ
- æåãããäœãå€ããïŒïŒæé/ãã¹/ã¹ãã¬ã¹ïŒ
Pack B: ã¹ã³ãŒãåãïŒMoSCoW-liteïŒ
- MustïŒä»åãªããšæç«ããªããã®ã¯ïŒ
- ShouldïŒå
¥ããšå¬ãããæ¬¡åã§ãOKã¯ïŒ
- CouldïŒãã®ãã¡ãã§ãè¯ããã®ã¯ïŒ
- WonâtïŒä»åã¯ãããªãïŒæèšããŠOKïŒ
Pack C: äŸå€ã»å¢ç
- 倱ææïŒéä¿¡/ä¿å/æš©éïŒã¯ã©ãèŠããïŒ
- ç©ºç¶æ
ïŒããŒã¿0ïŒã§ã©ãããïŒ
- äžéïŒæåæ°/ä»¶æ°/ãµã€ãºïŒã¯ããïŒ
- æ¢åããŒã¿ãšã®æŽåã¯ïŒïŒç§»è¡/äºæïŒ
Pitfalls
â HOW ãå«ããŠããŸã
æªãäŸ:
ãReact ã® useState ã䜿ã£ãŠå®è£
ããã
è¯ãäŸ:
ããŠãŒã¶ãŒå
¥åããªã¢ã«ã¿ã€ã ã§æ€èšŒãããšã©ãŒã衚瀺ããã
â ææ§ãªãŸãŸé²ãã
æªãäŸ:
ããšã©ãŒãã³ããªã³ã°ãæ¹åããã
è¯ãäŸ:
ãAPIã¿ã€ã ã¢ãŠãæã«èªåãªãã©ã€ãã3å倱æããããšã©ãŒã¡ãã»ãŒãžã衚瀺ããã
â æœè±¡çããã質å
æªãäŸ:
ãã©ããããã§ããïŒã
è¯ãäŸ:
ããã®æ©èœã§è§£æ±ºãããå
·äœçãªèª²é¡ã¯äœã§ããïŒä»ã®éçšã§å°ã£ãŠããç¹ã¯ãããŸããïŒã
â åºåãåé·
æªãäŸ:
é·ã説æãéè€ãå®è£
æé
è¯ãäŸ:
端çã«ãWHY/WHATãã¹ã³ãŒããåå
¥æ¡ä»¶
é¢é£ãªãœãŒã¹:
.github/ISSUE_TEMPLATE/requirements.md
docs/00.project/requirements/