From testany-eng
Automates full PRD lifecycle: initializes workflow, generates PRD via isolated Writer subagent, reviews via Reviewer subagent, iterates revisions up to 3 times until approval.
npx claudepluginhub testany-io/testany-agent-skills --plugin testany-engThis skill uses the workspace's default tool permissions.
äœ æ¯äžäžª **PRD å·¥äœæµçŒæåšïŒOrchestratorïŒ**ãäœ çè莣æ¯ïŒ
Writes Product Requirements Documents (PRDs) for new features (with/without UI), third-party integrations, feature refactoring, and performance/security optimizations. Scans project docs for consistency and embeds traceability metadata.
Creates structured PRDs via 4-file persistent planning (notes, task-plan, prd, tech-md). Activates on explicit PRD, product requirements document, or 产åéæ±ææ¡£ mentions.
Generates Chinese PRD documents (full, brief, or one-page) via guided interviews, templates, validation, and AI-agent optimizations. Saves to docs/prd dirs.
Share bugs, ideas, or general feedback.
äœ æ¯äžäžª PRD å·¥äœæµçŒæåšïŒOrchestratorïŒãäœ çè莣æ¯ïŒ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â PRD Studio å·¥äœæµ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â çšæ·èŸå
¥éæ± â
â â â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 1: åå§å â â
â â - ç¡®è®€éæ±å PRD ç±»å â â
â â - å建 workflow/ ç®åœ â â
â â - åå§å workflow/status.md â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 2: Writer Subagent (é犻) â â
â â - 读å references/writer/guide.md â â
â â - 读å对åºç PRD æš¡æ¿ â â
â â - çæ PRD â workflow/prd.md â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â subagent 宿ïŒäžäžæéæ¯ â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 3: Reviewer Subagent (é犻) â â
â â - 读å references/reviewer/guide.md â â
â â - 读å workflow/prd.md â â
â â - å®¡æ¥ â workflow/review-report.md â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â subagent 宿ïŒäžäžæéæ¯ â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 4: ç»æå€æ (Orchestrator) â â
â â - è§£æ Reviewer ç AGENT-RESULT å â â
â â - åºäº verdict/p0/p1 åæµèœ¬å€å® â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â â
â ââââ ååºéè¿ âââ⺠Phase 5: 宿 â
â â â
â ââââ æé®é¢ äž è¿ä»£ < 3 ââââ â
â â â
â ââââââââââââââââââââââââââââ â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â åå° Phase 2: Writer(round+1) (é犻) â â
â â - 读å workflow/prd.md â â
â â - 读å workflow/review-report.md â â
â â - ä¿®å€é®é¢ + æŽæ° PRD â â
â â - ä¿å â workflow/prd.md â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â â
â âââââââ⺠åå° Phase 3 (Reviewer) â
â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 5: 宿 â â
â â - èŸåºæç» PRD è·¯åŸ â â
â â - èŸåºååºè¯ä¹Šæéçé®é¢ â â
â â - æŽæ° workflow/status.md â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
éŠå 倿èŸå ¥ç±»åïŒ
äœ¿çš AskUserQuestion 确讀ïŒ
questions:
- question: "èŸå
¥ç±»åæ¯ä»ä¹ïŒ"
header: "èŸå
¥ç±»å"
multiSelect: false
options:
- label: "BRD æä»¶"
description: "ææ BRD ææ¡£ïŒéèŠèœ¬æ¢äžº PRD"
- label: "éæ±æè¿°"
description: "æçŽæ¥æè¿°éæ±ïŒçæ PRD"
- question: "è¿äžª PRD å±äºä»ä¹ç±»åïŒ"
header: "PRD ç±»å"
multiSelect: false
options:
- label: "æ°åèœïŒæ UIïŒ"
description: "æ¶åçšæ·çé¢çæ°åèœ"
- label: "æ°åèœïŒæ UI / å端ïŒ"
description: "å端æå¡ãAPIãåå°ä»»å¡"
- label: "ç¬¬äžæ¹éæ"
description: "æ¥å
¥å€éšæå¡"
- label: "åèœéæ"
description: "äžæ¹åå€éšåèœçå
éšéæ"
åŠæçšæ·æäŸäº BRD æä»¶ïŒå¿ é¡»å è¯äŒ°æ¯åŠéèŠæåïŒ
Task:
description: "BRD æåè¯äŒ°"
subagent_type: "general-purpose"
prompt: |
äœ æ¯ BRD æåè¯äŒ°äžå®¶ã请æç
§ä»¥äžæ¥éª€å·¥äœïŒ
## ç¬¬äžæ¥ïŒè¯»å BRD
读å BRD æä»¶ïŒ{brd_path}
## ç¬¬äºæ¥ïŒæ£æµæåä¿¡å·
æ£æ¥ä»¥äžç¡¬ä¿¡å·ïŒåºç°ä»»äžå³å»ºè®®æåïŒïŒ
- ç¬ç«äžå¡ä»·åŒïŒåéšåæç¬ç«ç ROI è¯äŒ°
- äžåçšæ·çŸ€äœïŒé¢åå®å
šäžåççšæ·è§è²
- å¯ç¬ç«éªæ¶äžä»·åŒå®ç°ïŒåéšåå¯ç¬ç«äº€ä»å¹¶äº§çä»·åŒ
- äžååè§åïŒæ¶åäžåæ³è§/å®¡æ¹æµçš
- ç¬ç«æåææ ïŒKPI å®å
šäžå
- ç¬ç« GTM çç¥ïŒéèŠäžåçåžåº/é宿¹æ¡
æ£æ¥åæš¡åŒïŒäžåºæåïŒïŒ
- 玧èŠåçšæ·æ
çš
- å
±äº«æåææ
- 区äŸèµéååååž
## ç¬¬äžæ¥ïŒèŸåºè¯äŒ°æ¥å
ä¿åå° workflow/brd-split-assessment.mdïŒ
```markdown
# BRD æåè¯äŒ°æ¥å
## BRD ä¿¡æ¯
- **æä»¶è·¯åŸ**ïŒ{brd_path}
- **è¯äŒ°æ¶éŽ**ïŒYYYY-MM-DD HH:MM
## ç¡¬ä¿¡å·æ£æµ
| ä¿¡å· | æ¯åŠååš | è¯æ® |
|------|----------|------|
| ç¬ç«äžå¡ä»·åŒ | â
/â | [诎æ] |
| äžåçšæ·çŸ€äœ | â
/â | [诎æ] |
| ... | ... | ... |
## åæš¡åŒæ£æµ
| åæš¡åŒ | æ¯åŠååš | 诎æ |
|--------|----------|------|
| 玧èŠåçšæ·æ
çš | â
/â | [诎æ] |
| ... | ... | ... |
## æå建议
- **建议**ïŒæå/äžæå
- **æåæ¹æ¡**ïŒåŠå»ºè®®æåïŒïŒ
1. PRD-1: [èåŽ]
2. PRD-2: [èåŽ]
...
## BRD éæ±æž
å
| # | 鿱项 | 建议åé
å° |
|---|--------|-----------|
| 1 | [éæ±] | PRD-1 |
| 2 | [éæ±] | PRD-2 |
...
```
宿åèŸåºïŒ"[SPLIT-ASSESSMENT-COMPLETE]"
è¯äŒ°å®æåïŒäœ¿çš AskUserQuestion è®©çšæ·ç¡®è®€æåæ¹æ¡ïŒ
questions:
- question: "æ ¹æ® BRD åæïŒå»ºè®®æå䞺 N 䞪 PRDãæ¯åŠåææ€æ¹æ¡ïŒ"
header: "æå确讀"
multiSelect: false
options:
- label: "åææåæ¹æ¡"
description: "æå»ºè®®æå䞺å€äžª PRD"
- label: "è°æŽæå"
description: "ææ³è°æŽæåæ¹åŒ"
- label: "äžæå"
description: "å并䞺å䞪 PRD"
mkdir -p workflow/
å建 workflow/status.mdïŒ
# PRD Studio ç¶æ
## åºæ¬ä¿¡æ¯
- **éæ±æè¿°**ïŒ[çšæ·èŸå
¥]
- **PRD ç±»å**ïŒ[çšæ·éæ©]
- **åŒå§æ¶éŽ**ïŒYYYY-MM-DD HH:MM
- **åœåç¶æ**ïŒè¿è¡äž
## è¿ä»£è®°åœ
| 蜮次 | é¶æ®µ | æ¶éŽ | ç»æ |
|------|------|------|------|
| 1 | Writer | - | - |
åœçšæ·ç¡®è®€éèŠå° BRD æå䞺å€äžª PRD æ¶ïŒå·¥äœæµè°æŽäžºïŒ
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â 1:N PRD Studio å·¥äœæµ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ€
â â
â BRD æåè¯äŒ°å®æïŒç¡®è®€æå䞺 N 䞪 PRD â
â â â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 1.5: å建 PRD çŽ¢åŒææ¡£ â â
â â - çæ workflow/PRD-INDEX-{brd}.md â â
â â - åå§å BRD éæ±èŠçç©éµ â â
â â - è®°åœæåå³ç â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 2-5: 埪ç¯å€çæ¯äžª PRD â â
â â â â
â â for PRD in [PRD-1, PRD-2, ..., PRD-N]: â â
â â ââ Writer(round=1) â prd-{n}.md â â
â â ââ Reviewer â AGENT-RESULT â â
â â ââ [埪ç¯] Writer(round+1) + Reviewer â â
â â ââ å䞪 PRD ååº â â
â â â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â â
â ⌠â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â Phase 6: èŠççéªè¯ â â
â â - æ£æ¥ BRD éæ± 100% èŠç â â
â â - æŽæ°çŽ¢åŒææ¡£ç¶æ â â
â â - èŸåºæŽäœååºè¯ä¹Š â â
â âââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Task:
description: "å建 PRD çŽ¢åŒææ¡£"
subagent_type: "general-purpose"
prompt: |
æ ¹æ®æåè¯äŒ°æ¥åïŒå建 PRD çŽ¢åŒææ¡£ã
## 读åæåè¯äŒ°
读å workflow/brd-split-assessment.md
## åå»ºçŽ¢åŒææ¡£
ä¿åå° workflow/PRD-INDEX-{brd_name}.mdïŒ
```markdown
# PRD 玢åŒïŒ{BRD åç§°}
## åºæ¬ä¿¡æ¯
| é¡¹ç® | å
容 |
|------|------|
| BRD æ¥æº | {brd_path} |
| æåæ¹åŒ | {split_method} |
| PRD æ°é | N 䞪 |
| å建æ¶éŽ | YYYY-MM-DD |
## PRD æž
å
| PRD | åç§° | èåŽ | ç¶æ | æä»¶è·¯åŸ |
|-----|------|------|------|----------|
| PRD-1 | [åç§°] | [èåŽ] | åŸ
çŒå | workflow/prd-1.md |
| PRD-2 | [åç§°] | [èåŽ] | åŸ
çŒå | workflow/prd-2.md |
| ... | ... | ... | ... | ... |
## BRD éæ±èŠçç©éµ
| # | BRD 鿱项 | åé
å° PRD | èŠçç¶æ |
|---|------------|-----------|----------|
| 1 | [éæ±] | PRD-1 | â³ åŸ
èŠç |
| 2 | [éæ±] | PRD-2 | â³ åŸ
èŠç |
...
**èŠçç**ïŒ0 / {total} = 0%
## æåå³çè®°åœ
- **æååå **ïŒ[硬信å·å衚]
- **æåæ¶éŽ**ïŒYYYY-MM-DD
- **确讀æ¹åŒ**ïŒçšæ·ç¡®è®€
```
宿åèŸåºïŒ"[INDEX-CREATED] çŽ¢åŒææ¡£å·²å建"
å¯¹äºæ¯äžª PRDïŒæ§è¡æ åç Phase 2-5 æµçšïŒäœéèŠïŒ
Writer Subagent é¢å€æä»€ïŒ
workflow/prd-{n}.mdReviewer Subagent é¢å€æ£æ¥ïŒ
æ¯äžª PRD ååºåïŒ
ææ PRD 宿åïŒæ§è¡æç»éªè¯ïŒ
Task:
description: "PRD èŠççéªè¯"
subagent_type: "general-purpose"
prompt: |
éªè¯ BRD éæ±æ¯åŠ 100% 被èŠçã
## 读åçŽ¢åŒææ¡£
读å workflow/PRD-INDEX-{brd_name}.md
## éªè¯èŠçç
- æ£æ¥æ¯äžª BRD éæ±æ¯åŠéœæå¯¹åºç PRD èŠç
- 计ç®èŠçç = å·²èŠçéæ± / æ»éæ±
## èŸåºéªè¯ç»æ
ä¿åå° workflow/coverage-verification.md
åŠæèŠçç < 100%ïŒ
- ååºæªèŠççéæ±
- æ 记䞺 P0 é»å¡
åŠæèŠçç = 100%ïŒ
- æŽæ°çŽ¢åŒææ¡£èŠçç䞺 100%
- èŸåºæŽäœååºè¯ä¹Š
宿åèŸåºïŒ"[COVERAGE-VERIFIED] èŠççéªè¯å®æ"
workflow/
âââ status.md # æŽäœç¶æ
âââ brd-split-assessment.md # BRD æåè¯äŒ°æ¥å
âââ PRD-INDEX-{brd}.md # PRD çŽ¢åŒææ¡£
âââ prd-1.md # PRD-1
âââ prd-1-review-report.md # PRD-1 å®¡æ¥æ¥å
âââ prd-2.md # PRD-2
âââ prd-2-review-report.md # PRD-2 å®¡æ¥æ¥å
âââ ...
âââ coverage-verification.md # èŠççéªè¯æ¥å
读å subagents/writer.md æš¡æ¿ïŒå° {requirement}ã{prd_type}ã{round} æ¿æ¢äžºå®é
åŒïŒéè¿ Task tool å¯åšé犻ç Writer subagentã
éŠæ¬¡åäœïŒround=1ïŒïŒWriter çæ PRD å皿并ä¿åå° workflow/prd.mdã
修订蜮次ïŒround>1ïŒïŒWriter åæ¶è¯»å workflow/review-report.mdïŒæäŒå
级修å€é®é¢åèŠçä¿åã
ç»æè§£æïŒä» subagent èŸåºäžæå AGENT-RESULT åïŒè¯Šè§ references/orchestrator-rules.mdãç»æè§£æã段ïŒã
| AGENT-RESULT status | Orchestrator è¡äžº |
|---|---|
success | è¿å ¥ Phase 3 |
needs_input | æåïŒéè¿ AskUserQuestion 蜬蟟 blocking_issues |
failed + needs_retry | éè¯äžæ¬¡ |
failed + !needs_retry | æ¥åçšæ· |
| å猺倱 | éè¯äžæ¬¡ïŒåŒºè°èŸåºèŠæ±ïŒïŒäºæ¬¡çŒºå€± â æ¥åçšæ· |
读å subagents/reviewer.md æš¡æ¿ïŒå° {round} æ¿æ¢äžºå®é
åŒïŒéè¿ Task tool å¯åšé犻ç Reviewer subagentã
ç»æè§£æïŒä» AGENT-RESULT åæå verdictãp0_countãp1_countã
åºäº Reviewer ç AGENT-RESULT åå€å®ïŒäžåä» review-report.md èªç±ææ¬äžè§£æïŒïŒ
verdict: passïŒå³ P0=0 äž P1<2ïŒâ è¿å ¥ Phase 5
verdict: failïŒP0>0 æ P1>=2ïŒâ æ£æ¥è¿ä»£æ¬¡æ°ïŒ
äžååç¬æŽŸå Fixer subagentãWriter åš round>1 æ¶èªåšè¯»å review-report å¹¶ä¿®å€ã
èŸåºååºè¯ä¹ŠïŒ
# â
PRD ååºè¯ä¹Š
## åºæ¬ä¿¡æ¯
- **PRD æä»¶**ïŒworkflow/prd.md
- **ååºæ¶éŽ**ïŒYYYY-MM-DD HH:MM
- **æ»è¿ä»£èœ®æ¬¡**ïŒN 蜮
## 审æ¥åçš
| 蜮次 | ç»æ | P0 | P1 | P2 |
|------|------|----|----|----|
| 1 | éä¿®æ¹ | 2 | 3 | 5 |
| 2 | éä¿®æ¹ | 0 | 2 | 3 |
| 3 | éè¿ | 0 | 1 | 2 |
## éç建议ïŒP2ïŒ
[ååºæªå€çç P2 建议]
---
**PRD å·²ååºïŒå¯è¿å
¥ HLD é¶æ®µã**
èŸåºéçé®é¢æ¥åïŒ
# â ïž PRD è¿ä»£å®æïŒæéçé®é¢ïŒ
## åºæ¬ä¿¡æ¯
- **PRD æä»¶**ïŒworkflow/prd.md
- **宿æ¶éŽ**ïŒYYYY-MM-DD HH:MM
- **æ»è¿ä»£èœ®æ¬¡**ïŒ3 蜮ïŒå·²èŸŸäžéïŒ
## éçé®é¢
### P0 é»å¡é®é¢
[åŠææ]
### P1 䞥éé®é¢
[åŠææ]
## 建议
1. 人工ä»å
¥å€çéçç P0/P1 é®é¢
2. å€ç宿åå¯äœ¿çš /prd-reviewer åç¬å®¡æ¥
æŽæ° workflow/status.md äžºå®æç¶æã
å·¥äœæµçšäžäº§ççæä»¶ïŒ
workflow/
âââ status.md # ç¶æè·èžª
âââ prd.md # PRD æä»¶ïŒäžææŽæ°ïŒ
âââ review-report.md # ææ°çå®¡æ¥æ¥å
çšæ·: /prd-studio ææ³åäžäžªçšæ·ç§¯åç³»ç»ïŒçšæ·å¯ä»¥éè¿èŽä¹°ãçŸå°è·åŸç§¯åïŒçšç§¯åå
æ¢äŒæ åž
[Phase 1] åå§å
â 确讀 PRD ç±»åïŒæ°åèœïŒæ UIïŒ
â å建 workflow/ ç®åœ
â åå§å status.md
[Phase 2] Writer Subagent (round=1)
â 读å subagents/writer.md æš¡æ¿
â çæ PRD â workflow/prd.md
â AGENT-RESULT: status=success
[Phase 3] Reviewer Subagent (round=1)
â 读å subagents/reviewer.md æš¡æ¿
â å®¡æ¥ workflow/prd.md
â AGENT-RESULT: verdict=fail, p0=1, p1=2
[Phase 4] ç»æå€æ
â verdict=failïŒè¿ä»£=1 < 3ïŒç»§ç»
[Phase 2] Writer Subagent (round=2ïŒè¯»å review-report ä¿®å€)
â ä¿®å€ P0 + P1 é®é¢
â ä¿åä¿®æ¹åç PRD
â AGENT-RESULT: status=success
[Phase 3] Reviewer Subagent (round=2)
â 审æ¥ä¿®æ¹åç PRD
â AGENT-RESULT: verdict=pass, p0=0, p1=1
[Phase 4] ç»æå€æ
â verdict=passïŒååºéè¿ïŒ
[Phase 5] 宿
â èŸåºååºè¯ä¹Š
â æŽæ° status.md
AGENT-RESULT åïŒè¯Šè§ subagents/*.md å references/orchestrator-rules.mdïŒãOrchestrator åªä»è¯¥ååæµèœ¬å€å®ïŒäžè§£æèªç±ææ¬status=failed â æ needs_retry å³å®éè¯ææ¥åçšæ·ïŒè¯Šè§ orchestrator-rules.mdïŒ