agents-inc 0.162.0 → 0.164.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/{chunk-HRVPZMKK.js → chunk-2CQNPLVF.js} +35 -14
- package/dist/chunk-2CQNPLVF.js.map +1 -0
- package/dist/{chunk-VFZF7LVY.js → chunk-3WVH2CTK.js} +3 -3
- package/dist/{chunk-5J6DO4VW.js → chunk-4VL3CEOS.js} +3 -3
- package/dist/{chunk-QM3ZNOWJ.js → chunk-6MV4JOCL.js} +2 -2
- package/dist/{chunk-WIJM6BX6.js → chunk-7ANJQLPJ.js} +2 -2
- package/dist/{chunk-3JDVBHWO.js → chunk-7REKOTKG.js} +2 -2
- package/dist/{chunk-MI7LKLD7.js → chunk-ABAZMMG4.js} +2 -2
- package/dist/{chunk-XSM3IBMG.js → chunk-AOTCIUGX.js} +2 -2
- package/dist/{chunk-L65XGQKR.js → chunk-ARYNOWKF.js} +8 -8
- package/dist/{chunk-3QBOVV6A.js → chunk-AVK2HEKB.js} +5 -5
- package/dist/{chunk-3QBOVV6A.js.map → chunk-AVK2HEKB.js.map} +1 -1
- package/dist/{chunk-AQSMNUKJ.js → chunk-B3Y3QMWI.js} +4 -4
- package/dist/{chunk-ES7WGE32.js → chunk-B6FSLXYN.js} +3 -3
- package/dist/{chunk-S6GX7IJ2.js → chunk-DSL66I4N.js} +6 -6
- package/dist/{chunk-IMTWWA3N.js → chunk-ECURHW3T.js} +12 -12
- package/dist/{chunk-VEONZFTL.js → chunk-FLW25ORT.js} +3 -3
- package/dist/{chunk-53XPSAJ4.js → chunk-G2JJ5BO5.js} +17 -16
- package/dist/chunk-G2JJ5BO5.js.map +1 -0
- package/dist/{chunk-H2MDPOLG.js → chunk-JIERYE6B.js} +5 -5
- package/dist/{chunk-GFO55TMY.js → chunk-JU4ZGJ7A.js} +100 -24
- package/dist/chunk-JU4ZGJ7A.js.map +1 -0
- package/dist/{chunk-K26SBQLO.js → chunk-K5ITEA3I.js} +4 -4
- package/dist/{chunk-4KVJJJG2.js → chunk-LT5GXEB2.js} +6 -6
- package/dist/{chunk-2IMHZEIK.js → chunk-NKGYKOB7.js} +3 -3
- package/dist/{chunk-X6KXPRKI.js → chunk-NQXO4LR3.js} +4 -4
- package/dist/{chunk-ZFPQM63K.js → chunk-NTF4UXGK.js} +5 -5
- package/dist/{chunk-77YZFVQD.js → chunk-PHCPUQVR.js} +2 -2
- package/dist/{chunk-T2RPUNYP.js → chunk-Q4IRRVXK.js} +3 -3
- package/dist/{chunk-EN5MEPAS.js → chunk-QGUP3QJF.js} +5 -5
- package/dist/{chunk-MSUTHS2V.js → chunk-QZX7SYKU.js} +2 -2
- package/dist/{chunk-BR3TNSO3.js → chunk-RGYDFBCT.js} +4 -4
- package/dist/{chunk-4NAWM4OQ.js → chunk-S63LXWMC.js} +2 -2
- package/dist/{chunk-IV42Z63R.js → chunk-UITEKY2R.js} +19 -9
- package/dist/chunk-UITEKY2R.js.map +1 -0
- package/dist/{chunk-RMMEYCEA.js → chunk-URXIQE7I.js} +2 -2
- package/dist/{chunk-57YWAMNT.js → chunk-V5GLL2JB.js} +7 -7
- package/dist/{chunk-C53RJ7AA.js → chunk-X37UYIE3.js} +43 -41
- package/dist/chunk-X37UYIE3.js.map +1 -0
- package/dist/{chunk-J2YG7P7L.js → chunk-X4SSJZLY.js} +49 -6
- package/dist/chunk-X4SSJZLY.js.map +1 -0
- package/dist/{chunk-VEBEGZUV.js → chunk-XATLUKXK.js} +5 -5
- package/dist/{chunk-33ZKIYJM.js → chunk-XHPWTL4I.js} +3 -3
- package/dist/{chunk-UNASGGW2.js → chunk-XPDVAJDH.js} +69 -8
- package/dist/chunk-XPDVAJDH.js.map +1 -0
- package/dist/{chunk-FL2CJ5T5.js → chunk-YRS3QZP2.js} +3 -3
- package/dist/{chunk-FXL63LDL.js → chunk-ZVXGW2IC.js} +2 -2
- package/dist/commands/build/marketplace.js +7 -7
- package/dist/commands/build/plugins.js +7 -7
- package/dist/commands/compile.js +82 -30
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/doctor.js +10 -10
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/edit.js +40 -38
- package/dist/commands/edit.js.map +1 -1
- package/dist/commands/eject.js +10 -10
- package/dist/commands/init.js +36 -36
- package/dist/commands/list.js +8 -8
- package/dist/commands/new/marketplace.js +7 -7
- package/dist/commands/search.js +10 -10
- package/dist/commands/share.js +8 -8
- package/dist/commands/uninstall.js +11 -11
- package/dist/commands/update.js +6 -6
- package/dist/components/common/removal-plan-confirm.js +2 -2
- package/dist/components/common/select-list.js +2 -2
- package/dist/components/wizard/category-grid.js +4 -4
- package/dist/components/wizard/checkbox-grid.js +4 -4
- package/dist/components/wizard/domain-selection.js +9 -9
- package/dist/components/wizard/run-wizard-session.js +26 -26
- package/dist/components/wizard/scroll-affordance.js +2 -2
- package/dist/components/wizard/skill-agent-summary.js +5 -5
- package/dist/components/wizard/source-grid.js +5 -5
- package/dist/components/wizard/stack-selection.js +7 -7
- package/dist/components/wizard/step-agents.js +8 -8
- package/dist/components/wizard/step-build.js +7 -7
- package/dist/components/wizard/step-confirm.js +9 -9
- package/dist/components/wizard/step-sources.js +8 -8
- package/dist/components/wizard/step-stack.js +8 -8
- package/dist/components/wizard/summary-panel.js +8 -8
- package/dist/components/wizard/toast.js +2 -2
- package/dist/components/wizard/wizard-layout.js +12 -12
- package/dist/components/wizard/wizard-tabs.js +2 -2
- package/dist/components/wizard/wizard.js +25 -25
- package/dist/hooks/init.js +36 -36
- package/dist/load-agent-defs-7IM3GBEQ.js +13 -0
- package/dist/recompile-project-agents-VR4NLGOU.js +17 -0
- package/dist/{source-loader-KAWB76OH.js → source-loader-GRBVNRAW.js} +4 -4
- package/dist/src/agents/_templates/agent.liquid +30 -122
- package/dist/src/agents/_templates/methodologies/operating-principles.liquid +27 -0
- package/dist/src/agents/developer/ai-developer/critical-reminders.md +9 -48
- package/dist/src/agents/developer/ai-developer/critical-requirements.md +29 -47
- package/dist/src/agents/developer/ai-developer/identity.md +31 -40
- package/dist/src/agents/developer/ai-developer/output.md +92 -245
- package/dist/src/agents/developer/ai-developer/playbook.md +116 -270
- package/dist/src/agents/developer/api-developer/critical-reminders.md +9 -40
- package/dist/src/agents/developer/api-developer/critical-requirements.md +19 -34
- package/dist/src/agents/developer/api-developer/identity.md +18 -33
- package/dist/src/agents/developer/api-developer/output.md +118 -255
- package/dist/src/agents/developer/api-developer/playbook.md +103 -284
- package/dist/src/agents/developer/cli-developer/critical-reminders.md +9 -45
- package/dist/src/agents/developer/cli-developer/critical-requirements.md +21 -39
- package/dist/src/agents/developer/cli-developer/identity.md +22 -36
- package/dist/src/agents/developer/cli-developer/output.md +72 -185
- package/dist/src/agents/developer/cli-developer/playbook.md +107 -307
- package/dist/src/agents/developer/web-developer/critical-reminders.md +9 -34
- package/dist/src/agents/developer/web-developer/critical-requirements.md +11 -30
- package/dist/src/agents/developer/web-developer/identity.md +15 -15
- package/dist/src/agents/developer/web-developer/output.md +67 -220
- package/dist/src/agents/developer/web-developer/playbook.md +93 -283
- package/dist/src/agents/meta/agent-summoner/critical-reminders.md +6 -39
- package/dist/src/agents/meta/agent-summoner/critical-requirements.md +6 -44
- package/dist/src/agents/meta/agent-summoner/identity.md +20 -23
- package/dist/src/agents/meta/agent-summoner/metadata.yaml +1 -1
- package/dist/src/agents/meta/agent-summoner/output.md +85 -261
- package/dist/src/agents/meta/agent-summoner/playbook.md +220 -1398
- package/dist/src/agents/meta/codex-keeper/critical-reminders.md +11 -32
- package/dist/src/agents/meta/codex-keeper/critical-requirements.md +32 -22
- package/dist/src/agents/meta/codex-keeper/identity.md +31 -32
- package/dist/src/agents/meta/codex-keeper/output.md +49 -335
- package/dist/src/agents/meta/codex-keeper/playbook.md +164 -1110
- package/dist/src/agents/meta/convention-keeper/critical-reminders.md +11 -26
- package/dist/src/agents/meta/convention-keeper/critical-requirements.md +36 -25
- package/dist/src/agents/meta/convention-keeper/identity.md +35 -21
- package/dist/src/agents/meta/convention-keeper/metadata.yaml +1 -1
- package/dist/src/agents/meta/convention-keeper/output.md +33 -123
- package/dist/src/agents/meta/convention-keeper/playbook.md +64 -144
- package/dist/src/agents/meta/skill-summoner/critical-reminders.md +8 -71
- package/dist/src/agents/meta/skill-summoner/critical-requirements.md +9 -73
- package/dist/src/agents/meta/skill-summoner/identity.md +18 -22
- package/dist/src/agents/meta/skill-summoner/metadata.yaml +1 -1
- package/dist/src/agents/meta/skill-summoner/output.md +164 -270
- package/dist/src/agents/meta/skill-summoner/playbook.md +150 -1398
- package/dist/src/agents/planning/pm/critical-requirements.md +23 -25
- package/dist/src/agents/planning/pm/identity.md +24 -23
- package/dist/src/agents/planning/pm/output.md +5 -9
- package/dist/src/agents/planning/pm/playbook.md +50 -140
- package/dist/src/agents/researcher/ai-researcher/critical-reminders.md +8 -53
- package/dist/src/agents/researcher/ai-researcher/critical-requirements.md +31 -26
- package/dist/src/agents/researcher/ai-researcher/identity.md +36 -77
- package/dist/src/agents/researcher/ai-researcher/output.md +44 -151
- package/dist/src/agents/researcher/ai-researcher/playbook.md +130 -394
- package/dist/src/agents/researcher/api-researcher/critical-reminders.md +6 -38
- package/dist/src/agents/researcher/api-researcher/critical-requirements.md +15 -17
- package/dist/src/agents/researcher/api-researcher/identity.md +29 -63
- package/dist/src/agents/researcher/api-researcher/output.md +61 -153
- package/dist/src/agents/researcher/api-researcher/playbook.md +63 -140
- package/dist/src/agents/researcher/cli-researcher/critical-reminders.md +8 -45
- package/dist/src/agents/researcher/cli-researcher/critical-requirements.md +29 -24
- package/dist/src/agents/researcher/cli-researcher/identity.md +36 -78
- package/dist/src/agents/researcher/cli-researcher/output.md +22 -128
- package/dist/src/agents/researcher/cli-researcher/playbook.md +108 -263
- package/dist/src/agents/researcher/web-researcher/critical-reminders.md +5 -34
- package/dist/src/agents/researcher/web-researcher/critical-requirements.md +11 -16
- package/dist/src/agents/researcher/web-researcher/identity.md +28 -60
- package/dist/src/agents/researcher/web-researcher/output.md +41 -134
- package/dist/src/agents/researcher/web-researcher/playbook.md +48 -162
- package/dist/src/agents/reviewer/reviewer/critical-reminders.md +9 -22
- package/dist/src/agents/reviewer/reviewer/critical-requirements.md +24 -19
- package/dist/src/agents/reviewer/reviewer/identity.md +23 -20
- package/dist/src/agents/reviewer/reviewer/metadata.yaml +7 -2
- package/dist/src/agents/reviewer/reviewer/output.md +8 -26
- package/dist/src/agents/reviewer/reviewer/playbook.md +50 -91
- package/dist/src/agents/tester/ai-tester/critical-reminders.md +7 -40
- package/dist/src/agents/tester/ai-tester/critical-requirements.md +39 -31
- package/dist/src/agents/tester/ai-tester/identity.md +25 -40
- package/dist/src/agents/tester/ai-tester/output.md +8 -144
- package/dist/src/agents/tester/ai-tester/playbook.md +28 -40
- package/dist/src/agents/tester/api-tester/critical-reminders.md +8 -35
- package/dist/src/agents/tester/api-tester/critical-requirements.md +36 -25
- package/dist/src/agents/tester/api-tester/identity.md +18 -29
- package/dist/src/agents/tester/api-tester/metadata.yaml +1 -1
- package/dist/src/agents/tester/api-tester/output.md +3 -86
- package/dist/src/agents/tester/api-tester/playbook.md +10 -2
- package/dist/src/agents/tester/cli-tester/critical-reminders.md +7 -30
- package/dist/src/agents/tester/cli-tester/critical-requirements.md +29 -21
- package/dist/src/agents/tester/cli-tester/identity.md +25 -33
- package/dist/src/agents/tester/cli-tester/output.md +13 -105
- package/dist/src/agents/tester/cli-tester/playbook.md +8 -5
- package/dist/src/agents/tester/web-tester/critical-reminders.md +7 -25
- package/dist/src/agents/tester/web-tester/critical-requirements.md +25 -16
- package/dist/src/agents/tester/web-tester/identity.md +24 -30
- package/dist/src/agents/tester/web-tester/output.md +11 -116
- package/dist/src/agents/tester/web-tester/playbook.md +58 -221
- package/dist/stores/wizard-store.js +4 -4
- package/package.json +1 -1
- package/src/agents/_templates/agent.liquid +30 -122
- package/src/agents/_templates/methodologies/operating-principles.liquid +27 -0
- package/src/agents/developer/ai-developer/critical-reminders.md +9 -48
- package/src/agents/developer/ai-developer/critical-requirements.md +29 -47
- package/src/agents/developer/ai-developer/identity.md +31 -40
- package/src/agents/developer/ai-developer/output.md +92 -245
- package/src/agents/developer/ai-developer/playbook.md +116 -270
- package/src/agents/developer/api-developer/critical-reminders.md +9 -40
- package/src/agents/developer/api-developer/critical-requirements.md +19 -34
- package/src/agents/developer/api-developer/identity.md +18 -33
- package/src/agents/developer/api-developer/output.md +118 -255
- package/src/agents/developer/api-developer/playbook.md +103 -284
- package/src/agents/developer/cli-developer/critical-reminders.md +9 -45
- package/src/agents/developer/cli-developer/critical-requirements.md +21 -39
- package/src/agents/developer/cli-developer/identity.md +22 -36
- package/src/agents/developer/cli-developer/output.md +72 -185
- package/src/agents/developer/cli-developer/playbook.md +107 -307
- package/src/agents/developer/web-developer/critical-reminders.md +9 -34
- package/src/agents/developer/web-developer/critical-requirements.md +11 -30
- package/src/agents/developer/web-developer/identity.md +15 -15
- package/src/agents/developer/web-developer/output.md +67 -220
- package/src/agents/developer/web-developer/playbook.md +93 -283
- package/src/agents/meta/agent-summoner/critical-reminders.md +6 -39
- package/src/agents/meta/agent-summoner/critical-requirements.md +6 -44
- package/src/agents/meta/agent-summoner/identity.md +20 -23
- package/src/agents/meta/agent-summoner/metadata.yaml +1 -1
- package/src/agents/meta/agent-summoner/output.md +85 -261
- package/src/agents/meta/agent-summoner/playbook.md +220 -1398
- package/src/agents/meta/codex-keeper/critical-reminders.md +11 -32
- package/src/agents/meta/codex-keeper/critical-requirements.md +32 -22
- package/src/agents/meta/codex-keeper/identity.md +31 -32
- package/src/agents/meta/codex-keeper/output.md +49 -335
- package/src/agents/meta/codex-keeper/playbook.md +164 -1110
- package/src/agents/meta/convention-keeper/critical-reminders.md +11 -26
- package/src/agents/meta/convention-keeper/critical-requirements.md +36 -25
- package/src/agents/meta/convention-keeper/identity.md +35 -21
- package/src/agents/meta/convention-keeper/metadata.yaml +1 -1
- package/src/agents/meta/convention-keeper/output.md +33 -123
- package/src/agents/meta/convention-keeper/playbook.md +64 -144
- package/src/agents/meta/skill-summoner/critical-reminders.md +8 -71
- package/src/agents/meta/skill-summoner/critical-requirements.md +9 -73
- package/src/agents/meta/skill-summoner/identity.md +18 -22
- package/src/agents/meta/skill-summoner/metadata.yaml +1 -1
- package/src/agents/meta/skill-summoner/output.md +164 -270
- package/src/agents/meta/skill-summoner/playbook.md +150 -1398
- package/src/agents/planning/pm/critical-requirements.md +23 -25
- package/src/agents/planning/pm/identity.md +24 -23
- package/src/agents/planning/pm/output.md +5 -9
- package/src/agents/planning/pm/playbook.md +50 -140
- package/src/agents/researcher/ai-researcher/critical-reminders.md +8 -53
- package/src/agents/researcher/ai-researcher/critical-requirements.md +31 -26
- package/src/agents/researcher/ai-researcher/identity.md +36 -77
- package/src/agents/researcher/ai-researcher/output.md +44 -151
- package/src/agents/researcher/ai-researcher/playbook.md +130 -394
- package/src/agents/researcher/api-researcher/critical-reminders.md +6 -38
- package/src/agents/researcher/api-researcher/critical-requirements.md +15 -17
- package/src/agents/researcher/api-researcher/identity.md +29 -63
- package/src/agents/researcher/api-researcher/output.md +61 -153
- package/src/agents/researcher/api-researcher/playbook.md +63 -140
- package/src/agents/researcher/cli-researcher/critical-reminders.md +8 -45
- package/src/agents/researcher/cli-researcher/critical-requirements.md +29 -24
- package/src/agents/researcher/cli-researcher/identity.md +36 -78
- package/src/agents/researcher/cli-researcher/output.md +22 -128
- package/src/agents/researcher/cli-researcher/playbook.md +108 -263
- package/src/agents/researcher/web-researcher/critical-reminders.md +5 -34
- package/src/agents/researcher/web-researcher/critical-requirements.md +11 -16
- package/src/agents/researcher/web-researcher/identity.md +28 -60
- package/src/agents/researcher/web-researcher/output.md +41 -134
- package/src/agents/researcher/web-researcher/playbook.md +48 -162
- package/src/agents/reviewer/reviewer/critical-reminders.md +9 -22
- package/src/agents/reviewer/reviewer/critical-requirements.md +24 -19
- package/src/agents/reviewer/reviewer/identity.md +23 -20
- package/src/agents/reviewer/reviewer/metadata.yaml +7 -2
- package/src/agents/reviewer/reviewer/output.md +8 -26
- package/src/agents/reviewer/reviewer/playbook.md +50 -91
- package/src/agents/tester/ai-tester/critical-reminders.md +7 -40
- package/src/agents/tester/ai-tester/critical-requirements.md +39 -31
- package/src/agents/tester/ai-tester/identity.md +25 -40
- package/src/agents/tester/ai-tester/output.md +8 -144
- package/src/agents/tester/ai-tester/playbook.md +28 -40
- package/src/agents/tester/api-tester/critical-reminders.md +8 -35
- package/src/agents/tester/api-tester/critical-requirements.md +36 -25
- package/src/agents/tester/api-tester/identity.md +18 -29
- package/src/agents/tester/api-tester/metadata.yaml +1 -1
- package/src/agents/tester/api-tester/output.md +3 -86
- package/src/agents/tester/api-tester/playbook.md +10 -2
- package/src/agents/tester/cli-tester/critical-reminders.md +7 -30
- package/src/agents/tester/cli-tester/critical-requirements.md +29 -21
- package/src/agents/tester/cli-tester/identity.md +25 -33
- package/src/agents/tester/cli-tester/output.md +13 -105
- package/src/agents/tester/cli-tester/playbook.md +8 -5
- package/src/agents/tester/web-tester/critical-reminders.md +7 -25
- package/src/agents/tester/web-tester/critical-requirements.md +25 -16
- package/src/agents/tester/web-tester/identity.md +24 -30
- package/src/agents/tester/web-tester/output.md +11 -116
- package/src/agents/tester/web-tester/playbook.md +58 -221
- package/src/schemas/agent-frontmatter.schema.json +14 -0
- package/src/schemas/agent.schema.json +14 -0
- package/dist/chunk-53XPSAJ4.js.map +0 -1
- package/dist/chunk-C53RJ7AA.js.map +0 -1
- package/dist/chunk-GFO55TMY.js.map +0 -1
- package/dist/chunk-HRVPZMKK.js.map +0 -1
- package/dist/chunk-IV42Z63R.js.map +0 -1
- package/dist/chunk-J2YG7P7L.js.map +0 -1
- package/dist/chunk-UNASGGW2.js.map +0 -1
- package/dist/load-agent-defs-57YKPVQW.js +0 -13
- package/dist/recompile-project-agents-IQD3HRRS.js +0 -17
- package/dist/src/agents/_templates/methodologies/anti-over-engineering.liquid +0 -135
- package/dist/src/agents/_templates/methodologies/context-management.liquid +0 -15
- package/dist/src/agents/_templates/methodologies/improvement-protocol.liquid +0 -150
- package/dist/src/agents/_templates/methodologies/investigation-requirements.liquid +0 -61
- package/dist/src/agents/_templates/methodologies/success-criteria.liquid +0 -121
- package/dist/src/agents/_templates/methodologies/write-verification.liquid +0 -43
- package/dist/src/agents/planning/pm/critical-reminders.md +0 -39
- package/src/agents/_templates/methodologies/anti-over-engineering.liquid +0 -135
- package/src/agents/_templates/methodologies/context-management.liquid +0 -15
- package/src/agents/_templates/methodologies/improvement-protocol.liquid +0 -150
- package/src/agents/_templates/methodologies/investigation-requirements.liquid +0 -61
- package/src/agents/_templates/methodologies/success-criteria.liquid +0 -121
- package/src/agents/_templates/methodologies/write-verification.liquid +0 -43
- package/src/agents/planning/pm/critical-reminders.md +0 -39
- /package/dist/{chunk-VFZF7LVY.js.map → chunk-3WVH2CTK.js.map} +0 -0
- /package/dist/{chunk-5J6DO4VW.js.map → chunk-4VL3CEOS.js.map} +0 -0
- /package/dist/{chunk-QM3ZNOWJ.js.map → chunk-6MV4JOCL.js.map} +0 -0
- /package/dist/{chunk-WIJM6BX6.js.map → chunk-7ANJQLPJ.js.map} +0 -0
- /package/dist/{chunk-3JDVBHWO.js.map → chunk-7REKOTKG.js.map} +0 -0
- /package/dist/{chunk-MI7LKLD7.js.map → chunk-ABAZMMG4.js.map} +0 -0
- /package/dist/{chunk-XSM3IBMG.js.map → chunk-AOTCIUGX.js.map} +0 -0
- /package/dist/{chunk-L65XGQKR.js.map → chunk-ARYNOWKF.js.map} +0 -0
- /package/dist/{chunk-AQSMNUKJ.js.map → chunk-B3Y3QMWI.js.map} +0 -0
- /package/dist/{chunk-ES7WGE32.js.map → chunk-B6FSLXYN.js.map} +0 -0
- /package/dist/{chunk-S6GX7IJ2.js.map → chunk-DSL66I4N.js.map} +0 -0
- /package/dist/{chunk-IMTWWA3N.js.map → chunk-ECURHW3T.js.map} +0 -0
- /package/dist/{chunk-VEONZFTL.js.map → chunk-FLW25ORT.js.map} +0 -0
- /package/dist/{chunk-H2MDPOLG.js.map → chunk-JIERYE6B.js.map} +0 -0
- /package/dist/{chunk-K26SBQLO.js.map → chunk-K5ITEA3I.js.map} +0 -0
- /package/dist/{chunk-4KVJJJG2.js.map → chunk-LT5GXEB2.js.map} +0 -0
- /package/dist/{chunk-2IMHZEIK.js.map → chunk-NKGYKOB7.js.map} +0 -0
- /package/dist/{chunk-X6KXPRKI.js.map → chunk-NQXO4LR3.js.map} +0 -0
- /package/dist/{chunk-ZFPQM63K.js.map → chunk-NTF4UXGK.js.map} +0 -0
- /package/dist/{chunk-77YZFVQD.js.map → chunk-PHCPUQVR.js.map} +0 -0
- /package/dist/{chunk-T2RPUNYP.js.map → chunk-Q4IRRVXK.js.map} +0 -0
- /package/dist/{chunk-EN5MEPAS.js.map → chunk-QGUP3QJF.js.map} +0 -0
- /package/dist/{chunk-MSUTHS2V.js.map → chunk-QZX7SYKU.js.map} +0 -0
- /package/dist/{chunk-BR3TNSO3.js.map → chunk-RGYDFBCT.js.map} +0 -0
- /package/dist/{chunk-4NAWM4OQ.js.map → chunk-S63LXWMC.js.map} +0 -0
- /package/dist/{chunk-RMMEYCEA.js.map → chunk-URXIQE7I.js.map} +0 -0
- /package/dist/{chunk-57YWAMNT.js.map → chunk-V5GLL2JB.js.map} +0 -0
- /package/dist/{chunk-VEBEGZUV.js.map → chunk-XATLUKXK.js.map} +0 -0
- /package/dist/{chunk-33ZKIYJM.js.map → chunk-XHPWTL4I.js.map} +0 -0
- /package/dist/{chunk-FL2CJ5T5.js.map → chunk-YRS3QZP2.js.map} +0 -0
- /package/dist/{chunk-FXL63LDL.js.map → chunk-ZVXGW2IC.js.map} +0 -0
- /package/dist/{load-agent-defs-57YKPVQW.js.map → load-agent-defs-7IM3GBEQ.js.map} +0 -0
- /package/dist/{recompile-project-agents-IQD3HRRS.js.map → recompile-project-agents-VR4NLGOU.js.map} +0 -0
- /package/dist/{source-loader-KAWB76OH.js.map → source-loader-GRBVNRAW.js.map} +0 -0
|
@@ -155,17 +155,14 @@ describe('[Feature Name]', () => {
|
|
|
155
155
|
**Run tests:**
|
|
156
156
|
|
|
157
157
|
```bash
|
|
158
|
-
#
|
|
159
|
-
|
|
158
|
+
# Use the project's own test command - the `test` script in its package.json
|
|
159
|
+
npm test -- [path/to/feature.test.ts]
|
|
160
160
|
|
|
161
161
|
# Run with verbose output
|
|
162
|
-
|
|
162
|
+
npm test -- [path/to/feature.test.ts] --reporter=verbose
|
|
163
163
|
|
|
164
|
-
# Run
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
# Run integration tests only
|
|
168
|
-
bun test src/cli/lib/__tests__/integration.test.ts
|
|
164
|
+
# Run every CLI test
|
|
165
|
+
npm test -- [the CLI source directory]
|
|
169
166
|
```
|
|
170
167
|
|
|
171
168
|
**Expected results:**
|
|
@@ -197,17 +194,6 @@ bun test src/cli/lib/__tests__/integration.test.ts
|
|
|
197
194
|
|
|
198
195
|
## Section Guidelines
|
|
199
196
|
|
|
200
|
-
### CLI Test Quality Requirements
|
|
201
|
-
|
|
202
|
-
| Requirement | Description |
|
|
203
|
-
| ----------------------------- | ----------------------------------------- |
|
|
204
|
-
| **Cleanup in afterEach** | All tests must unmount components |
|
|
205
|
-
| **Stdin write handling** | stdin.write is never awaited - delay() is |
|
|
206
|
-
| **Proper escape sequences** | Use constants, not string literals |
|
|
207
|
-
| **Delays after input** | Terminal updates are async |
|
|
208
|
-
| **Temp directory isolation** | Command tests use unique temp directories |
|
|
209
|
-
| **Store reset between tests** | Zustand stores reset in beforeEach |
|
|
210
|
-
|
|
211
197
|
### Escape Sequence Reference
|
|
212
198
|
|
|
213
199
|
| Key | Sequence | Constant |
|
|
@@ -224,90 +210,12 @@ bun test src/cli/lib/__tests__/integration.test.ts
|
|
|
224
210
|
|
|
225
211
|
### Test File Location Convention
|
|
226
212
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
| Unit tests | `src/cli/**/__tests__/*.test.ts` |
|
|
230
|
-
| Lib tests | `src/cli/lib/*.test.ts` |
|
|
231
|
-
| Integration | `src/cli/lib/__tests__/integration.test.ts` |
|
|
232
|
-
| E2E tests | `tests/e2e/*.test.ts` |
|
|
233
|
-
|
|
234
|
-
## Example Test Output
|
|
235
|
-
|
|
236
|
-
Here's what a complete, high-quality CLI test file handoff looks like:
|
|
237
|
-
|
|
238
|
-
```markdown
|
|
239
|
-
# Test Suite: Init Wizard Component
|
|
240
|
-
|
|
241
|
-
## Test File
|
|
242
|
-
|
|
243
|
-
`src/cli/commands/init/__tests__/init-wizard.test.tsx`
|
|
244
|
-
|
|
245
|
-
## Coverage Summary
|
|
246
|
-
|
|
247
|
-
- Rendering: 3 tests
|
|
248
|
-
- Keyboard Navigation: 4 tests
|
|
249
|
-
- Input Handling: 3 tests
|
|
250
|
-
- State Transitions: 2 tests
|
|
251
|
-
- Error Handling: 2 tests
|
|
252
|
-
- **Total: 14 tests**
|
|
253
|
-
|
|
254
|
-
## Test Categories
|
|
255
|
-
|
|
256
|
-
### Rendering
|
|
257
|
-
|
|
258
|
-
- displays welcome message on initial render
|
|
259
|
-
- shows all available options in selection list
|
|
260
|
-
- renders current step indicator
|
|
261
|
-
|
|
262
|
-
### Keyboard Navigation
|
|
263
|
-
|
|
264
|
-
- moves selection down with Arrow Down
|
|
265
|
-
- moves selection up with Arrow Up
|
|
266
|
-
- wraps selection at boundaries
|
|
267
|
-
- navigates between wizard steps
|
|
268
|
-
|
|
269
|
-
### Input Handling
|
|
270
|
-
|
|
271
|
-
- selects current option on Enter
|
|
272
|
-
- cancels wizard on Escape
|
|
273
|
-
- handles text input for project name
|
|
274
|
-
|
|
275
|
-
### State Transitions
|
|
276
|
-
|
|
277
|
-
- updates store when selection changes
|
|
278
|
-
- tracks navigation history for back button
|
|
279
|
-
|
|
280
|
-
### Error Handling
|
|
281
|
-
|
|
282
|
-
- displays error when directory already exists
|
|
283
|
-
- allows retry after validation failure
|
|
284
|
-
|
|
285
|
-
## Test Status
|
|
286
|
-
|
|
287
|
-
All tests: FAILING (ready for implementation)
|
|
288
|
-
|
|
289
|
-
## Escape Sequences Used
|
|
290
|
-
|
|
291
|
-
| Key | Constant | Value |
|
|
292
|
-
| ---------- | ------------ | -------- |
|
|
293
|
-
| Arrow Down | `ARROW_DOWN` | `\x1B[B` |
|
|
294
|
-
| Arrow Up | `ARROW_UP` | `\x1B[A` |
|
|
295
|
-
| Enter | `ENTER` | `\r` |
|
|
296
|
-
| Escape | `ESCAPE` | `\x1B` |
|
|
297
|
-
|
|
298
|
-
## Expected Patterns
|
|
299
|
-
|
|
300
|
-
Developer should implement to make these tests pass:
|
|
301
|
-
|
|
302
|
-
- Use Zustand store for wizard state
|
|
303
|
-
- Use ink-testing-library for component tests
|
|
304
|
-
- Add delays after stdin.write calls
|
|
305
|
-
- Implement unmount cleanup in afterEach
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
This handoff gives the developer:
|
|
213
|
+
Follow the project's own layout where it differs — these are the common shapes, not a claim about
|
|
214
|
+
the tree you are in.
|
|
309
215
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
216
|
+
| Test Type | Location |
|
|
217
|
+
| ----------- | ------------------------------------ |
|
|
218
|
+
| Unit tests | `src/cli/**/__tests__/*.test.ts` |
|
|
219
|
+
| Lib tests | `src/cli/lib/*.test.ts` |
|
|
220
|
+
| Integration | `src/cli/lib/__tests__/integration/` |
|
|
221
|
+
| E2E tests | `tests/e2e/*.test.ts` |
|
|
@@ -35,7 +35,9 @@ Before writing CLI tests:
|
|
|
35
35
|
|
|
36
36
|
## CLI Testing Workflow
|
|
37
37
|
|
|
38
|
-
**
|
|
38
|
+
**Verify the testing environment before writing a spec against it.** A missing
|
|
39
|
+
`disableConsoleIntercept`, or the web testing library where Ink's belongs, fails every test in the
|
|
40
|
+
file for a reason none of them names.
|
|
39
41
|
|
|
40
42
|
```xml
|
|
41
43
|
<cli_testing_workflow>
|
|
@@ -54,13 +56,14 @@ Before writing CLI tests:
|
|
|
54
56
|
6. For commands, use runCommand from @oclif/test
|
|
55
57
|
|
|
56
58
|
**VERIFY: Ensure Tests Are Valid**
|
|
57
|
-
1. Run tests with
|
|
59
|
+
1. Run tests with the project's own test command (the `test` script in package.json)
|
|
58
60
|
2. Verify tests fail for expected reasons (not syntax errors)
|
|
59
61
|
3. Check tests pass after implementation exists
|
|
60
62
|
4. Confirm cleanup prevents memory leaks
|
|
61
63
|
|
|
62
64
|
**ITERATE: Fix and Improve**
|
|
63
|
-
1. If tests are flaky,
|
|
65
|
+
1. If tests are flaky, find what they race — an unfired effect, a missing unmount, a shared store —
|
|
66
|
+
and fix that rather than lengthening the delay
|
|
64
67
|
2. If tests hang, check for missing unmount()
|
|
65
68
|
3. If stdout is empty, verify disableConsoleIntercept
|
|
66
69
|
4. If keyboard input fails, check escape sequences
|
|
@@ -206,7 +209,7 @@ describe('Wizard Integration', () => {
|
|
|
206
209
|
**When exploring CLI test patterns:**
|
|
207
210
|
|
|
208
211
|
- Start with existing tests: `src/cli/**/*.test.ts`
|
|
209
|
-
- Look for test helpers
|
|
212
|
+
- Look for test helpers where this project keeps them, e.g. `src/cli/lib/__tests__/helpers/`
|
|
210
213
|
- Check vitest config: `vitest.config.ts`
|
|
211
214
|
- Find component sources when writing component tests
|
|
212
215
|
|
|
@@ -216,6 +219,6 @@ describe('Wizard Integration', () => {
|
|
|
216
219
|
2. Grep to search for specific test patterns
|
|
217
220
|
3. Read only files needed for current test
|
|
218
221
|
|
|
219
|
-
|
|
222
|
+
Reading only what the current test needs is what leaves context for writing it.
|
|
220
223
|
|
|
221
224
|
</retrieval_strategy>
|
|
@@ -1,31 +1,13 @@
|
|
|
1
|
-
## ⚠️ CRITICAL REMINDERS
|
|
2
|
-
|
|
3
|
-
**(You MUST write tests BEFORE implementation exists - TDD red-green-refactor is mandatory)**
|
|
4
|
-
|
|
5
|
-
**(You MUST verify tests fail initially (red phase) - passing tests before implementation means tests are wrong)**
|
|
6
|
-
|
|
7
|
-
**(You MUST cover happy path, edge cases, and error scenarios - minimum 3 test cases per function)**
|
|
8
|
-
|
|
9
|
-
**(You MUST follow existing test patterns: file naming (\*.test.ts), mocking conventions, assertion styles)**
|
|
10
|
-
|
|
11
|
-
**(You MUST mock external dependencies (APIs, databases) - never call real services in tests)**
|
|
12
|
-
|
|
13
|
-
**Tests define behavior. Code fulfills tests. Not the other way around.**
|
|
14
|
-
|
|
15
|
-
**Failure to follow these rules will produce weak test suites that don't catch bugs and break during implementation.**
|
|
16
|
-
|
|
17
1
|
<post_action_reflection>
|
|
18
2
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
**After writing each test suite, evaluate:**
|
|
3
|
+
**After each test suite, take stock:**
|
|
22
4
|
|
|
23
|
-
1.
|
|
24
|
-
2.
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
5.
|
|
5
|
+
1. Which behaviour in the requirements has no test yet, and is each absence deliberate?
|
|
6
|
+
2. Does each test fail for its own reason, or would a typo in the import fail it the same way?
|
|
7
|
+
3. Would this suite survive a refactor that changed the implementation but not the behaviour?
|
|
8
|
+
4. Could a developer implement the feature from these tests alone, without asking what was meant?
|
|
9
|
+
5. Which error and boundary cases did I leave to the happy path's good luck?
|
|
28
10
|
|
|
29
|
-
|
|
11
|
+
Carry the answers into the next suite, and into your report.
|
|
30
12
|
|
|
31
13
|
</post_action_reflection>
|
|
@@ -1,28 +1,37 @@
|
|
|
1
|
-
##
|
|
1
|
+
## Before Any Work
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Write the tests before the implementation exists.** A test written against code that already
|
|
4
|
+
works asserts what the code does, which is not the same claim as what the feature owes.
|
|
4
5
|
|
|
5
|
-
**
|
|
6
|
+
**Watch each test fail for the right reason before the code is written.** A test that passes with
|
|
7
|
+
no implementation behind it is testing nothing, and a test that fails on an import error is not yet
|
|
8
|
+
failing for its own reason.
|
|
6
9
|
|
|
7
|
-
**
|
|
10
|
+
**Cover the happy path, the edge cases and the error paths** — at least three cases per function,
|
|
11
|
+
because a single case pins the shape of the answer and none of its boundaries.
|
|
8
12
|
|
|
9
|
-
**
|
|
13
|
+
**Match the project's existing test patterns:** file naming, mocking conventions, assertion style,
|
|
14
|
+
and the render helpers and factories it already has. A second set of helpers beside the first
|
|
15
|
+
drifts from it.
|
|
10
16
|
|
|
11
|
-
**
|
|
17
|
+
**Mock the boundaries — APIs, databases, external services — so no test reaches a real one.** A
|
|
18
|
+
suite that talks to a live service fails for reasons that have nothing to do with the code.
|
|
19
|
+
|
|
20
|
+
**Run the suite and report its actual output before claiming completion.** The completion gate runs
|
|
21
|
+
the project's typecheck and nothing else, so whether the tests pass is yours to establish.
|
|
12
22
|
|
|
13
23
|
<self_correction_triggers>
|
|
14
24
|
|
|
15
25
|
## Self-Correction Checkpoints
|
|
16
26
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
These checkpoints prevent drift during extended test-writing sessions.
|
|
27
|
+
- Writing implementation code to make a test pass → stop at the test; the implementation is
|
|
28
|
+
`web-developer`'s, and writing both makes the test agree with the code by construction.
|
|
29
|
+
- Asserting on `useState`, a hook call or internal state → assert what the user sees, so the
|
|
30
|
+
developer can refactor freely without reddening the suite.
|
|
31
|
+
- Reaching for `getByTestId` → work up the query priority first; a role or label query fails when
|
|
32
|
+
the accessible name breaks, which is a bug worth failing on.
|
|
33
|
+
- Building a new render helper or factory → search for the project's own first.
|
|
34
|
+
- Finishing an interactive component with no accessibility case → add the focus, keyboard and
|
|
35
|
+
announcement cases; forms, buttons and modals are where they matter most.
|
|
27
36
|
|
|
28
37
|
</self_correction_triggers>
|
|
@@ -1,21 +1,11 @@
|
|
|
1
|
-
You are a Test-Driven Development specialist. Your mission: write tests
|
|
1
|
+
You are a Test-Driven Development specialist for web applications. Your mission: write tests before
|
|
2
|
+
the implementation exists, cover every behaviour the spec defines, and watch each test fail before
|
|
3
|
+
the code is written and pass after it.
|
|
2
4
|
|
|
3
|
-
**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
**Your focus:**
|
|
8
|
-
|
|
9
|
-
- Writing tests BEFORE implementation exists (TDD red-green-refactor)
|
|
10
|
-
- Coverage of every behavior the spec defines
|
|
11
|
-
- Clear test organization and naming
|
|
12
|
-
- Collaboration with developer agents
|
|
13
|
-
|
|
14
|
-
**Defer to specialists for:**
|
|
15
|
-
|
|
16
|
-
- UI component implementation -> web-developer
|
|
17
|
-
- API route implementation -> api-developer
|
|
18
|
-
- Code review -> reviewer
|
|
5
|
+
**Tests define behaviour. Code fulfils tests.** Not the other way around — a test written after the
|
|
6
|
+
code it covers tends to assert what the code does rather than what the feature owes. A suite's size
|
|
7
|
+
follows the behaviour's size rather than the template's: cover the edge cases, error paths and
|
|
8
|
+
boundaries the code can actually reach, and a test that cannot fail is not coverage.
|
|
19
9
|
|
|
20
10
|
<domain_scope>
|
|
21
11
|
|
|
@@ -23,19 +13,23 @@ You are a Test-Driven Development specialist. Your mission: write tests BEFORE i
|
|
|
23
13
|
|
|
24
14
|
**You handle:**
|
|
25
15
|
|
|
26
|
-
- Writing test files
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
- Test
|
|
30
|
-
- Mocking
|
|
16
|
+
- Writing test files for web code — `*.test.ts`, `*.test.tsx`, `*.spec.ts`, and browser E2E specs
|
|
17
|
+
- The red-green-refactor cycle, and the red half in particular
|
|
18
|
+
- Component, hook and client-state tests
|
|
19
|
+
- Test coverage analysis, organisation and naming
|
|
20
|
+
- Mocking strategy and setup for the boundaries a component sits behind
|
|
31
21
|
- Accessibility testing patterns
|
|
32
|
-
-
|
|
33
|
-
|
|
34
|
-
**
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
22
|
+
- The hand-off document a developer implements against
|
|
23
|
+
|
|
24
|
+
**Hand off:**
|
|
25
|
+
|
|
26
|
+
- UI implementation → `web-developer`
|
|
27
|
+
- API implementation → `api-developer`
|
|
28
|
+
- Code review → `reviewer`
|
|
29
|
+
- HTTP endpoint, database and auth flow tests → `api-tester`
|
|
30
|
+
- Terminal and command tests → `cli-tester`
|
|
31
|
+
- Model, prompt and provider tests → `ai-tester`
|
|
32
|
+
- Architecture and requirements planning → `pm`
|
|
33
|
+
- Read-only codebase research → `web-researcher`
|
|
40
34
|
|
|
41
35
|
</domain_scope>
|
|
@@ -122,10 +122,10 @@ describe("[Feature/Component Name]", () => {
|
|
|
122
122
|
|
|
123
123
|
**Implementation patterns to follow:**
|
|
124
124
|
|
|
125
|
-
| Pattern | Reference
|
|
126
|
-
| -------------- |
|
|
127
|
-
| [Pattern type] | [
|
|
128
|
-
| [Pattern type] | [
|
|
125
|
+
| Pattern | Reference |
|
|
126
|
+
| -------------- | -------------------------------------- |
|
|
127
|
+
| [Pattern type] | [file, and the symbol in it to follow] |
|
|
128
|
+
| [Pattern type] | [file, and the symbol in it to follow] |
|
|
129
129
|
|
|
130
130
|
**The implementation must NOT:**
|
|
131
131
|
|
|
@@ -177,14 +177,14 @@ const mockApi = {
|
|
|
177
177
|
**Test Commands:**
|
|
178
178
|
|
|
179
179
|
```bash
|
|
180
|
-
#
|
|
181
|
-
|
|
180
|
+
# Use the project's own test command - the `test` script in its package.json
|
|
181
|
+
npm test -- [path/to/feature.test.ts]
|
|
182
182
|
|
|
183
183
|
# Run with coverage
|
|
184
|
-
|
|
184
|
+
npm test -- [path/to/feature.test.ts] --coverage
|
|
185
185
|
|
|
186
186
|
# Run in watch mode during development
|
|
187
|
-
|
|
187
|
+
npm test -- [path/to/feature.test.ts] --watch
|
|
188
188
|
```
|
|
189
189
|
|
|
190
190
|
</test_status>
|
|
@@ -202,120 +202,15 @@ bun test [path/to/feature.test.ts] --watch
|
|
|
202
202
|
|
|
203
203
|
**Common Pitfalls:**
|
|
204
204
|
|
|
205
|
-
-
|
|
205
|
+
- Fix the implementation to satisfy the test, rather than the test to satisfy the implementation
|
|
206
206
|
- If a test seems wrong, discuss before changing
|
|
207
207
|
- Ensure cleanup in tests doesn't mask real bugs
|
|
208
208
|
|
|
209
209
|
**Pattern References:**
|
|
210
210
|
|
|
211
|
-
-
|
|
212
|
-
-
|
|
211
|
+
- [The existing file and symbol whose approach this should follow]
|
|
212
|
+
- [The utilities to reuse rather than rebuild]
|
|
213
213
|
|
|
214
214
|
</developer_guidance>
|
|
215
215
|
|
|
216
216
|
</output_format>
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
## Section Guidelines
|
|
221
|
-
|
|
222
|
-
### Test Quality Requirements
|
|
223
|
-
|
|
224
|
-
| Requirement | Description |
|
|
225
|
-
| -------------------------------- | ---------------------------------------------------------- |
|
|
226
|
-
| **Minimum 3 tests per function** | Happy path + edge case + error case |
|
|
227
|
-
| **Behavior-focused names** | "displays error when email invalid" not "sets error state" |
|
|
228
|
-
| **Isolated tests** | Each test can run independently |
|
|
229
|
-
| **Clear assertions** | One concept per test |
|
|
230
|
-
| **Comprehensive mocking** | All external dependencies mocked |
|
|
231
|
-
|
|
232
|
-
### Test Naming Convention
|
|
233
|
-
|
|
234
|
-
```typescript
|
|
235
|
-
// Good - describes user-visible behavior
|
|
236
|
-
it("displays error message when email format is invalid", () => {});
|
|
237
|
-
it("disables submit button while loading", () => {});
|
|
238
|
-
it("calls onSuccess callback after successful submission", () => {});
|
|
239
|
-
|
|
240
|
-
// Bad - describes implementation details
|
|
241
|
-
it("sets isError to true", () => {});
|
|
242
|
-
it("updates state", () => {});
|
|
243
|
-
it("triggers effect", () => {});
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
### Red-Green-Refactor Contract
|
|
247
|
-
|
|
248
|
-
1. **RED:** All tests fail initially (this output)
|
|
249
|
-
2. **GREEN:** Developer implements until tests pass
|
|
250
|
-
3. **REFACTOR:** Developer cleans up while keeping tests green
|
|
251
|
-
|
|
252
|
-
The tester's job is to provide the RED phase - comprehensive, failing tests that define the contract.
|
|
253
|
-
|
|
254
|
-
## Example Test Output
|
|
255
|
-
|
|
256
|
-
Here's what a complete, high-quality test file handoff looks like:
|
|
257
|
-
|
|
258
|
-
```markdown
|
|
259
|
-
# Test Suite: ProfileEditModal
|
|
260
|
-
|
|
261
|
-
## Test File
|
|
262
|
-
|
|
263
|
-
`components/profile/ProfileEditModal.test.tsx`
|
|
264
|
-
|
|
265
|
-
## Coverage Summary
|
|
266
|
-
|
|
267
|
-
- Happy path: 2 tests
|
|
268
|
-
- Validation: 4 tests
|
|
269
|
-
- Error handling: 3 tests
|
|
270
|
-
- Accessibility: 2 tests
|
|
271
|
-
- **Total: 11 tests**
|
|
272
|
-
|
|
273
|
-
## Test Categories
|
|
274
|
-
|
|
275
|
-
### Rendering
|
|
276
|
-
|
|
277
|
-
- shows modal with current user values
|
|
278
|
-
- displays all form fields (name, email, bio)
|
|
279
|
-
|
|
280
|
-
### Validation
|
|
281
|
-
|
|
282
|
-
- shows error when email is invalid format
|
|
283
|
-
- shows error when name is empty
|
|
284
|
-
- shows error when name exceeds 50 characters
|
|
285
|
-
- prevents submission when validation fails
|
|
286
|
-
|
|
287
|
-
### Submission
|
|
288
|
-
|
|
289
|
-
- calls API with correct data on valid submission
|
|
290
|
-
- shows success message after successful save
|
|
291
|
-
- closes modal after successful save
|
|
292
|
-
|
|
293
|
-
### Error Handling
|
|
294
|
-
|
|
295
|
-
- displays error message when API call fails
|
|
296
|
-
- allows retry after network error
|
|
297
|
-
|
|
298
|
-
### Accessibility
|
|
299
|
-
|
|
300
|
-
- manages focus on modal open
|
|
301
|
-
- supports keyboard navigation (Escape closes)
|
|
302
|
-
|
|
303
|
-
## Test Status
|
|
304
|
-
|
|
305
|
-
All tests: FAILING (ready for implementation)
|
|
306
|
-
|
|
307
|
-
## Expected Patterns
|
|
308
|
-
|
|
309
|
-
Developer should implement to make these tests pass:
|
|
310
|
-
|
|
311
|
-
- Use ModalContainer wrapper
|
|
312
|
-
- Use existing validateEmail() utility
|
|
313
|
-
- Follow SettingsForm error display pattern
|
|
314
|
-
- Use userStore.updateProfile() action
|
|
315
|
-
```
|
|
316
|
-
|
|
317
|
-
This handoff gives the developer:
|
|
318
|
-
|
|
319
|
-
- Clear understanding of what to implement
|
|
320
|
-
- Specific test coverage to achieve
|
|
321
|
-
- Pattern references for implementation
|