generate-test-docs
npx skills add https://github.com/himicoswilson/himi-claude-plugins --skill generate-test-docs
Agent 安装分布
Skill 文档
èªä¸»å¦ä¹ åæµè¯ææ¡£çæå¨
ä»éæ±ææ¡£èªå¨çæä¸ä¸æµè¯ææ¡£ï¼å ·å¤é¡¹ç®æç¥ãæç»å¦ä¹ åä¸ä¸æµè¯è®¾è®¡æ¹æ³è½åã
æ ¸å¿è½å
- ä¸ä¸æµè¯è®¾è®¡æ¹æ³ï¼çä»·ç±»ååãè¾¹çå¼åæãåºæ¯æ³ãéè¯¯æ¨æµæ³
- éæ±è¿½æº¯ç©éµï¼èªå¨çæéæ±-ç¨ä¾è¿½æº¯å ³ç³»ï¼è®¡ç®è¦çç
- ä¼å 级管çï¼P0-P3 ä¼å 级åç±»ï¼æ¯æåç/æ ¸å¿/å ¨éå彿µè¯é
- èªä¸»å¦ä¹ ï¼å¦ä¹ é¡¹ç®æ¨¡æ¿ãé¢åæ¯è¯ãå½åè§è
- 交äºå¼ç¡®è®¤ï¼å ³é®èç¹è¯¢é®ç¨æ·ï¼æ¯æå¿«é/ä¸å®¶å模å¼
äº¤äºæ¨¡å¼
è¯¦è§ INTERACTION-PATTERNS.md
模å¼å®ä¹
| æ¨¡å¼ | åç§° | éç¨åºæ¯ | 确认æ¹å¼ |
|---|---|---|---|
quick |
å¿«éæ¨¡å¼ | æ¥å¸¸çæãçææµç¨ | å车继ç»ï¼ä» é®é¢æ¶è¯¢é® |
expert |
ä¸å®¶æ¨¡å¼ | 馿¬¡ä½¿ç¨ãç²¾ç»æ§å¶ | æ¯é¶æ®µç¡®è®¤ï¼å®æ´é¢è§ |
äº¤äºæ£æ¥ç¹
| æ£æ¥ç¹ | é¶æ®µ | Quick æ¨¡å¼ | Expert æ¨¡å¼ |
|---|---|---|---|
| è§£æç¡®è®¤ | Phase 2.5 | æè¦ + æé®é¢æ¶è¯¢é® | 宿´å表 + çå¾ ç¡®è®¤ |
| æ§ä¹å¤ç | Phase 2.6 | ä» å ³é®æ§ä¹ | æææ§ä¹ |
| çæé¢è§ | Phase 2.8 | ç»è®¡æ°æ® | ç»è®¡ + æ ·ä¾ + å¯è°æ´ |
| è¾åºéæ© | Phase 2.9 | 确认é»è®¤é ç½® | 宿´æ ¼å¼éæ© |
模å¼åæ¢
- 馿¬¡è¿è¡ï¼è¯¢é®ç¨æ·éæ©æ¨¡å¼
- å½ä»¤åæ¢ï¼
åæ¢æ¨¡å¼/å¿«éæ¨¡å¼/ä¸å®¶æ¨¡å¼ - å好åå¨ï¼
.memory/user-preferences.json
馿¬¡ä½¿ç¨
æ£æµæè¯¢é®ç¨æ·é¡¹ç®ç»æï¼
- æ¨¡æ¿æä»¶å¤¹è·¯å¾ï¼é»è®¤:
./templatesï¼ - éæ±ææ¡£è·¯å¾ï¼é»è®¤:
./requirementsï¼ - å建
.memoryæä»¶å¤¹ç¨äºåå¨å¦ä¹ æ°æ®
å®è£ ä¾èµï¼
pip install openpyxl PyMuPDF python-docx
æµè¯è®¾è®¡æ¹æ³
è¯¦è§ TEST-DESIGN-METHODS.md
æ¹æ³éæ©æå
| éæ±ç¹å¾ | æ¨èæ¹æ³ |
|---|---|
| ææç¡®è¾å ¥èå´/æ ¼å¼è¦æ± | çä»·ç±»åå + è¾¹çå¼åæ |
| æ¶åä¸å¡æµç¨/夿¥éª¤æä½ | åºæ¯æ³ |
| åå²ç¼ºé·å¤/é«é£é©æ¨¡å | éè¯¯æ¨æµæ³ |
æ ¸å¿4ç§æ¹æ³
-
çä»·ç±»ååæ³ (EP)
- ååææ/æ æçä»·ç±»
- 䏿¡ç¨ä¾è¦çå¤ä¸ªææç±»ï¼æ¯ä¸ªæ æç±»åç¬è¦ç
-
è¾¹çå¼åææ³ (BVA)
- æµè¯è¾¹çç¹ï¼ä¸ç¹ã离ç¹ãå ç¹
- 对éåºé´ [a,b]ï¼æµè¯ a-1, a, b, b+1
-
åºæ¯æ³ (ST)
- è¯å«åºæ¬æµãå¤éæµãå¼å¸¸æµ
- æ¯æ¡è·¯å¾çæå¯¹åºç¨ä¾
-
éè¯¯æ¨æµæ³ (EG)
- åºäºç»éªæ¨æµå¸¸è§é误
- è¡¥å ç¹æ®å符ãæç«¯å¼ãå¹¶åçæµè¯
ç¨ä¾è®¾è®¡æµç¨
1. çä»·ç±»åå â è¯å«ææè¾å
¥çææ/æ æçä»·ç±»
â
2. è¾¹çå¼åæ â 对æ¯ä¸ªçä»·ç±»çè¾¹çè¿è¡æµè¯
â
3. åºæ¯æ³ â è¦ç主è¦ä¸å¡æµç¨ï¼åºæ¬æµ+å¤éæµ+å¼å¸¸æµï¼
â
4. éè¯¯æ¨æµ â è¡¥å
ç»éªæ§æµè¯ç¨ä¾
éæ±è¿½æº¯ä¸è¦çç
è¯¦è§ TRACEABILITY.md
追溯ç©éµ
çæç¨ä¾æ¶èªå¨å ³èéæ±IDï¼è¾åºå å«ï¼
- æ£å追溯ï¼éæ±ID â å ³èç¨ä¾å表
- åå追溯ï¼ç¨ä¾ â æ¥æºéæ±
- è¦ççç»è®¡ï¼éæ±è¦ççãè¦ç深度
éæ±IDæåè§å
èªå¨è¯å«éæ±ææ¡£ä¸çID模å¼ï¼
REQ_001ãREQ-123F1.2ãF-3.1.2US_042- JIRAæ ¼å¼ï¼
PROJ-123
è¥æ æç¡®IDï¼èªå¨çæï¼MOD_{模å缩å}_{åºå·}
ä¼å 级ä¸åå½åç±»
è¯¦è§ TEST-PRIORITY.md
ä¼å 级å®ä¹
| çº§å« | å®ä¹ | æ¥æº |
|---|---|---|
| P0 | æ ¸å¿åè½ï¼ä¸å¯ç¨åç³»ç»æ æ³ä½¿ç¨ | åºæ¬æµç¨ä¾ |
| P1 | 主è¦åè½ï¼å½±åæ ¸å¿ä¸å¡æµç¨ | å¤éæµ + è¾¹çå¼ |
| P2 | 次è¦åè½ï¼ä¸å½±å主æµç¨ | å¼å¸¸æµ + éè¯¯æ¨æµ |
| P3 | ä½éªä¼åï¼è¾¹ç¼åºæ¯ | è¾¹ç¼éè¯¯æ¨æµ |
å彿µè¯é
| æµè¯é | å å«ç¨ä¾ | æ§è¡æ¶æº |
|---|---|---|
| åçæµè¯ | ææ P0 | æ¯æ¬¡æå»º |
| æ ¸å¿åå½ | P0 + P1 | æ¯æ¥/ææµ |
| å ¨éåå½ | ææ | åçå |
é¡¹ç®æç¥
è¯å«é¡¹ç®ç»æ
- æ«æé¡¹ç®æ ¹ç®å½
- æ¥æ¾
templates/ãrequirements/ãdocs/çç®å½ - è¯å«æ¨¡æ¿æä»¶åéæ±ææ¡£
- å°è¯å«ç»æåå
¥
.memory/project-context.json
æ¯æçææ¡£æ ¼å¼
| æ ¼å¼ | æ©å±å | æåèæ¬ |
|---|---|---|
scripts/extract_document.py --format pdf |
||
| Word | .docx | scripts/extract_document.py --format docx |
| Markdown | .md | ç´æ¥è¯»å |
| å¯ææ¬ | .rtf | scripts/extract_document.py --format rtf |
.memory è®°å¿ç³»ç»
Skill å¨é¡¹ç®ä¸å建 .memory/ æä»¶å¤¹ï¼åå¨å¦ä¹ æ°æ®ï¼
project-context.json
{
"project_name": "çµåå¹³å°",
"detected_at": "2024-01-15",
"template_dir": "./templates",
"requirements_dir": "./requirements",
"output_dir": "./test-docs"
}
template-schemas.json
{
"test_case": {
"source": "./templates/æµè¯ç¨ä¾æ¨¡æ¿.xlsx",
"columns": ["ç¨ä¾ç¼å·", "模ååç§°", "ç¨ä¾æ é¢", "ä¼å
级", "å
³èéæ±ID", "è®¾è®¡æ¹æ³", "åç½®æ¡ä»¶", "æµè¯æ¥éª¤", "é¢æç»æ", "å®é
ç»æ", "æ¯å¦éè¿", "åå½ç±»å", "夿³¨"],
"id_format": "TC_{module}_{seq:03d}",
"learned_at": "2024-01-15"
}
}
terminology.json
{
"domain_terms": {
"SKU": "åºååä½",
"GMV": "ååäº¤ææ»é¢"
},
"module_abbreviations": {
"ç¨æ·ç»å½": "LOGIN",
"è´ç©è½¦": "CART"
}
}
generation-history.json
{
"generations": [
{
"date": "2024-01-15",
"type": "test_case",
"source": "PRD-v1.0.pdf",
"output": "ç»å½æ¨¡å_æµè¯ç¨ä¾_v1.xlsx",
"case_count": 25,
"coverage_rate": "95%"
}
]
}
Workflow
Phase 0: 项ç®åå§åï¼é¦æ¬¡è¿è¡ï¼
- è¯¢é®ææ£æµé¡¹ç®ç»æ
- 询é®äº¤äºæ¨¡å¼ï¼Quickï¼å¿«éï¼æ Expertï¼ä¸å®¶ï¼
- å建
.memory/æä»¶å¤¹ - å¦ä¹ 模æ¿ç»æï¼åå
¥
template-schemas.json - æåé¢åæ¯è¯ï¼åå
¥
terminology.json - ä¿åç¨æ·å好å°
user-preferences.json
Phase 1: 读åéæ±
- ç¨æ·æå®éæ±ææ¡£ææä»¶å¤¹
- è°ç¨
scripts/extract_document.pyæåææ¬ - è¿åç»æåå 容
Phase 2: è§£æéæ±
- 读å
.memory/terminology.jsonçè§£é¢åæ¯è¯ - æåéæ±IDï¼è¯å«æçæéæ±å¯ä¸æ è¯
- ç»æè¯å«ï¼åè½æ¨¡åãéªæ¶æ¡ä»¶ãä¸å¡è§å
- çä»·ç±»ååï¼è¯å«è¾å ¥çææ/æ æçä»·ç±»
- è¾¹ç弿åï¼è¯å«æ°å¼ãé¿åº¦ãæ¶é´è¾¹ç
- åºæ¯æµè¯å«ï¼è¯å«åºæ¬æµãå¤éæµãå¼å¸¸æµ
- éè¯¯æ¨æµè¡¥å ï¼æ ¹æ®è¾å ¥ç±»å忍¡åç±»å触å
- æ§ä¹æ£æµï¼è¯å«ä¸æç¡®çéæ±æè¿°
- åè PARSING-RULES.md
Phase 2.5: ãæ£æ¥ç¹1ãè§£æç¡®è®¤
ä½¿ç¨ AskUserQuestion 确认解æç»æï¼
Expert 模å¼ï¼
æ¾ç¤ºå®æ´è§£æç»æè¡¨æ ¼ï¼
- è¯å«ç模åå表ï¼åç§°ãéæ±æ°ã缩åï¼
- æåçéæ±IDå表ï¼IDãåç§°ãéªæ¶æ¡ä»¶æ°ï¼
- è¯å«çä¸å¡è§å
- è¯å«çè¾¹çæ¡ä»¶
çå¾
ç¨æ·ç¡®è®¤ï¼ç¡®è®¤ / ä¿®æ¹ / éæ°è§£æ
Quick 模å¼ï¼
æ¾ç¤ºæè¦ï¼å·²è¯å« X 个模åï¼Y æ¡éæ±ï¼Z æ¡è§å
ä»
å¨åç°è¦åæ¶è¯¢é®ç¨æ·
æ è¦ååèªå¨ç»§ç»
Phase 2.6: æ§ä¹å¤ç
å¯¹æ£æµå°çæ§ä¹éæ±éä¸è¯¢é®ï¼
éæ±åæï¼{text}
æ§ä¹ç±»åï¼è¾¹çä¸æç¡® / è§åå²çª / æ¡ä»¶ç¼ºå¤±
æççè§£ï¼{interpretation}
è¯·éæ©ï¼
1. æ¥åæççè§£
2. æä¾ä¸åè§£é
3. è·³è¿æ¤éæ±
4. æ 记为å¾
确认
- Expert 模å¼ï¼è¯¢é®æææ§ä¹
- Quick 模å¼ï¼ä» 询é®å½±å P0/P1 çå ³é®æ§ä¹
Phase 2.8: ãæ£æ¥ç¹2ãçæé¢è§
ä½¿ç¨ AskUserQuestion é¢è§çææ¹æ¡ï¼
Expert 模å¼ï¼
æ¾ç¤ºä¼å
级åå¸ï¼P0/P1/P2/P3 æ°éåå æ¯
æ¾ç¤ºè®¾è®¡æ¹æ³åå¸ï¼EP/BVA/ST/EG
æ¾ç¤ºæ ·ä¾ç¨ä¾ï¼æ¯ä¸ªä¼å
级å±ç¤º1æ¡
å¯éæä½ï¼
- è°æ´ä¼å
级åå¸
- å¢å /åå°ç¹å®ç±»åç¨ä¾
- é¢è§ç¹å®æ¨¡å
Quick 模å¼ï¼
æ¾ç¤ºç»è®¡ï¼å°çæ X æ¡ç¨ä¾ï¼P0:X | P1:X | P2:X | P3:X
ä»
å¨åå¸å¼å¸¸æ¶è¯¢é®ï¼å¦ P0 > 20%ï¼
æ£å¸¸åå车继ç»
Phase 2.9: ãæ£æ¥ç¹3ãè¾åºéæ©
ä½¿ç¨ AskUserQuestion éæ©è¾åºæ ¼å¼ï¼
Expert 模å¼ï¼
å¤éè¾åºæ ¼å¼ï¼
- Excel æµè¯ç¨ä¾
- Markdown æµè¯ç¨ä¾
- æµè¯è®¡åææ¡£
- æµè¯æ¥å模æ¿
åé追溯ç©éµï¼
- å
å«å¨Excelä¸
- åç¬çææä»¶
- ä¸çæ
Quick 模å¼ï¼
确认é»è®¤é
ç½®ï¼åºäºä¸æ¬¡éæ©æé»è®¤ï¼ï¼
- â
Excel æµè¯ç¨ä¾ï¼å«è¿½æº¯ç©éµï¼
- â
è¦ççç»è®¡
åè½¦ç¡®è®¤ï¼æè¾å
¥"æ´å¤"éæ©å
¶ä»æ ¼å¼
Phase 3: çæææ¡£
- 读å
.memory/template-schemas.jsonè·å模æ¿ç»æ - åé ä¼å çº§ï¼æ ¹æ®ç¨ä¾ç±»åèªå¨å¤æ P0-P3
- 设置åå½ç±»åï¼æ ¹æ®ä¼å 级æ å°åç/æ ¸å¿/å ¨é
- æ è®°è®¾è®¡æ¹æ³ï¼EP/BVA/ST/EG
- å ³èéæ±IDï¼æ¯ä¸ªç¨ä¾è®°å½æ¥æºéæ±
- è°ç¨
scripts/generate_excel.pyçæ Excelï¼å«è¿½æº¯ç©éµï¼
Phase 4: æ´æ°è®°å¿
- è®°å½æ¬æ¬¡çæå°
generation-history.json - å¦ææ°æ¯è¯ï¼æ´æ°
terminology.json - ä¿åç¨æ·å好å°
user-preferences.json - å¦ç¨æ·åé¦ï¼è°æ´å¦ä¹ æ°æ®
è¾åºæ ¼å¼
æµè¯ç¨ä¾ Excel
é»è®¤åï¼
| åå | 说æ |
|---|---|
| ç¨ä¾ç¼å· | TC_{MODULE}_{SEQ:03d} |
| 模ååç§° | åè½æ¨¡å |
| ç¨ä¾æ é¢ | æµè¯ç¹ç®è¿° |
| ä¼å 级 | P0/P1/P2/P3ï¼ä¸æéæ©ï¼å¸¦é¢è²ï¼ |
| å ³èéæ±ID | REQ_XXXï¼æ¯æå¤ä¸ªï¼éå·åéï¼ |
| è®¾è®¡æ¹æ³ | EP/BVA/ST/EG |
| åç½®æ¡ä»¶ | æ§è¡åæ |
| æµè¯æ¥éª¤ | è¯¦ç»æä½æ¥éª¤ |
| é¢æç»æ | ææè¡ä¸º |
| å®é ç»æ | æ§è¡æ¶å¡«å |
| æ¯å¦éè¿ | éè¿/æªéè¿/é»å¡/æªæ§è¡ |
| åå½ç±»å | åç/æ ¸å¿/å ¨é |
| 夿³¨ | è¡¥å 说æ |
é¢å¤ Sheetï¼å¯ç¨è¿½æº¯æ¶ï¼ï¼
- éæ±è¿½æº¯ç©éµï¼éæ±IDãå ³èç¨ä¾ãè¦çç¶æ
- è¦ççç»è®¡ï¼æ»éæ±æ°ãè¦ççãä¼å 级åå¸
æµè¯è®¡å Markdown
åºå®8ç« èç»æï¼
- æµè¯ç®æ
- æµè¯èå´
- æµè¯çç¥
- æµè¯ç¯å¢
- æµè¯èµæº
- æµè¯è¿åº¦
- é£é©ä¸åºå¯¹
- 交ä»ç©
æµè¯æ¥å Markdown
åºå®5ç« èç»æï¼
- æ§è¡æ¦è¿°
- æµè¯ç»è®¡
- 缺é·åæ
- è¦ççæ¥å
- ç»è®ºä¸å»ºè®®
èæ¬è°ç¨
æåææ¡£
python3 "${SKILL_ROOT}/scripts/extract_document.py" \
--input "/path/to/PRD.pdf" \
--format pdf \
--output "/tmp/prd-content.json"
çæ Excelï¼å¸¦è¿½æº¯ç©éµï¼
python3 "${SKILL_ROOT}/scripts/generate_excel.py" \
--output "æµè¯ç¨ä¾.xlsx" \
--data '[{"ç¨ä¾ç¼å·":"TC_LOGIN_001", "ä¼å
级":"P0", "å
³èéæ±ID":"REQ_001", ...}]' \
--traceability \
--requirements '[{"id":"REQ_001", "name":"ç¨æ·ç»å½"}]'
管çè®°å¿
python3 "${SKILL_ROOT}/scripts/memory_manager.py" \
--action init \
--project "/path/to/project"
å¦ä¹ è½å
èªå¨å¦ä¹
- 馿¬¡ä½¿ç¨æ¶å¦ä¹ 模æ¿ç»æ
- ä»éæ±ææ¡£ç§¯ç´¯é¢åæ¯è¯
- è¯å«å½åè§èå¹¶ä¿æä¸è´
ç¨æ·åé¦å¦ä¹
- ç¨æ·ä¿®æ£åï¼è¯¢é®æ¯å¦è®°ä½
- å°åé¦åå ¥è®°å¿ä¾åç»ä½¿ç¨
è®°å¿æ´æ°å½ä»¤
"æ´æ°æ¯è¯è¡¨" â éæ°æ«æå¹¶æ´æ° terminology.json
"éæ°å¦ä¹ 模æ¿" â éæ°è§£ææ¨¡æ¿ç»æ
"æ¸
é¤è®°å¿" â å é¤ .memory æä»¶å¤¹
约æ
- éæ±è¿½æº¯ï¼ææç¨ä¾å¿ é¡»å ³èéæ±ID
- æ¹æ³æ è®°ï¼ææç¨ä¾å¿ é¡»æ è®°è®¾è®¡æ¹æ³
- ä¼å 级è¦çï¼P0 å æ¯ 10-15%ï¼P1 å æ¯ 30-40%
- 交äºç¡®è®¤ï¼Expert 模å¼ä¸æ¯ä¸ªæ£æ¥ç¹å¿ é¡»çå¾ ç¨æ·ç¡®è®¤
- æ§ä¹å¤çï¼åç°ä¸æç¡®éæ±æ¶å¿ 须询é®ç¨æ·ï¼å¯é ç½®ï¼
- 模å¼è®°å¿ï¼ç¨æ·æ¨¡å¼å好åå
¥
.memory/user-preferences.json - éµå¾ªé¡¹ç®å·²æçå½åè§è
- ä¸å空ç¼é éæ±ä¸ä¸åå¨çåºæ¯
- é»è®¤è¾åºä¸æï¼é¤é项ç®é ç½®ä¸ºå ¶ä»è¯è¨
.memoryæä»¶å¤¹åºå å ¥ .gitignoreï¼å¯éï¼
åèææ¡£
- INTERACTION-PATTERNS.md – äº¤äºæ¨¡å¼ä¸é®é¢æ¨¡æ¿
- TEST-DESIGN-METHODS.md – æ ¸å¿4ç§æµè¯è®¾è®¡æ¹æ³è¯¦è§£
- TRACEABILITY.md – éæ±è¿½æº¯ç©éµè§è
- TEST-PRIORITY.md – ä¼å 级ä¸åå½åç±»
- PARSING-RULES.md – éæ±è§£æè§å
- MEMORY-SCHEMA.md – è®°å¿æä»¶ç»æ
- LEARNING-RULES.md – å¦ä¹ è§å