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
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
## Output Format
|
|
2
2
|
|
|
3
3
|
<output_format>
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
Report your implementation in this structure.
|
|
5
6
|
|
|
6
7
|
<summary>
|
|
7
|
-
**Task:** [
|
|
8
|
+
**Task:** [what was implemented]
|
|
8
9
|
**Status:** [Complete | Partial | Blocked]
|
|
9
10
|
**Files Changed:** [count] files ([+additions] / [-deletions] lines)
|
|
10
11
|
</summary>
|
|
@@ -12,34 +13,34 @@ Provide your implementation in this structure:
|
|
|
12
13
|
<investigation>
|
|
13
14
|
**Files Examined:**
|
|
14
15
|
|
|
15
|
-
| File |
|
|
16
|
-
| --------------- |
|
|
17
|
-
| [/path/to/file] | [
|
|
16
|
+
| File | Symbol read | What it showed |
|
|
17
|
+
| --------------- | ----------------- | -------------------------- |
|
|
18
|
+
| [/path/to/file] | [function / type] | [pattern or utility found] |
|
|
18
19
|
|
|
19
20
|
**Patterns Identified:**
|
|
20
21
|
|
|
21
|
-
- **Route structure:** [
|
|
22
|
-
- **Validation approach:** [
|
|
23
|
-
- **Error handling:** [
|
|
24
|
-
- **Database access:** [
|
|
22
|
+
- **Route structure:** [how routes are registered — from /path, naming the symbol]
|
|
23
|
+
- **Validation approach:** [how input is validated — from /path, naming the symbol]
|
|
24
|
+
- **Error handling:** [how errors are shaped — from /path, naming the symbol]
|
|
25
|
+
- **Database access:** [the query patterns used — from /path, naming the symbol]
|
|
25
26
|
|
|
26
27
|
**Existing Code Reused:**
|
|
27
28
|
|
|
28
|
-
- [
|
|
29
|
+
- [utility or middleware] from [/path] — [why reused rather than written]
|
|
29
30
|
</investigation>
|
|
30
31
|
|
|
31
32
|
<approach>
|
|
32
|
-
**Summary:** [
|
|
33
|
+
**Summary:** [the implementation approach, in a sentence or two]
|
|
33
34
|
|
|
34
35
|
**Files:**
|
|
35
36
|
|
|
36
|
-
| File | Action | Purpose
|
|
37
|
-
| --------------- | ------------------ |
|
|
38
|
-
| [/path/to/file] | [created/modified] | [
|
|
37
|
+
| File | Action | Purpose |
|
|
38
|
+
| --------------- | ------------------ | ---------------------- |
|
|
39
|
+
| [/path/to/file] | [created/modified] | [what changed and why] |
|
|
39
40
|
|
|
40
41
|
**Key Decisions:**
|
|
41
42
|
|
|
42
|
-
- [
|
|
43
|
+
- [decision]: [the existing pattern it follows, and where that pattern lives]
|
|
43
44
|
</approach>
|
|
44
45
|
|
|
45
46
|
<implementation>
|
|
@@ -47,51 +48,45 @@ Provide your implementation in this structure:
|
|
|
47
48
|
### [filename.ts]
|
|
48
49
|
|
|
49
50
|
**Location:** `/absolute/path/to/file.ts`
|
|
50
|
-
**Changes:** [
|
|
51
|
+
**Changes:** [e.g. "new route handler" or "added validation"]
|
|
51
52
|
|
|
52
53
|
```typescript
|
|
53
|
-
// [
|
|
54
|
-
[
|
|
54
|
+
// [what this block does]
|
|
55
|
+
[implementation code]
|
|
55
56
|
```
|
|
56
57
|
|
|
57
58
|
**Design Notes:**
|
|
58
59
|
|
|
59
|
-
- [
|
|
60
|
-
- [
|
|
61
|
-
|
|
62
|
-
### [filename2.ts]
|
|
63
|
-
|
|
64
|
-
[Same structure...]
|
|
60
|
+
- [why this approach]
|
|
61
|
+
- [the existing pattern it matches]
|
|
65
62
|
|
|
66
63
|
</implementation>
|
|
67
64
|
|
|
68
65
|
<api_changes>
|
|
69
66
|
|
|
70
|
-
## Endpoints Added
|
|
67
|
+
## Endpoints Added or Modified
|
|
71
68
|
|
|
72
69
|
### [METHOD] [/api/path]
|
|
73
70
|
|
|
74
|
-
**Handler:** `/path/to/route.ts
|
|
75
|
-
**Auth
|
|
71
|
+
**Handler:** `[symbol]` in `/path/to/route.ts`
|
|
72
|
+
**Auth required:** [the middleware that enforces it, or No]
|
|
76
73
|
|
|
77
74
|
**Request:**
|
|
78
75
|
|
|
79
76
|
```typescript
|
|
80
|
-
//
|
|
77
|
+
// path params / query params / body schema
|
|
81
78
|
{
|
|
82
|
-
// Schema definition or description
|
|
83
79
|
}
|
|
84
80
|
```
|
|
85
81
|
|
|
86
|
-
**Success
|
|
82
|
+
**Success response:** [status code]
|
|
87
83
|
|
|
88
84
|
```typescript
|
|
89
85
|
{
|
|
90
|
-
// Response shape
|
|
91
86
|
}
|
|
92
87
|
```
|
|
93
88
|
|
|
94
|
-
**Error
|
|
89
|
+
**Error responses:**
|
|
95
90
|
|
|
96
91
|
| Status | Condition | Response Shape |
|
|
97
92
|
| ------ | ------------------ | ------------------------------------ |
|
|
@@ -105,33 +100,26 @@ Provide your implementation in this structure:
|
|
|
105
100
|
|
|
106
101
|
<database_changes>
|
|
107
102
|
|
|
108
|
-
## Schema Changes
|
|
103
|
+
## Schema Changes
|
|
109
104
|
|
|
110
105
|
### Table: [table_name]
|
|
111
106
|
|
|
112
|
-
**
|
|
113
|
-
|
|
114
|
-
**Columns Added/Modified:**
|
|
115
|
-
|
|
116
|
-
| Column | Type | Constraints | Purpose |
|
|
117
|
-
| ------ | ------ | --------------------------------- | ------------ |
|
|
118
|
-
| [name] | [type] | [nullable, default, unique, etc.] | [Why needed] |
|
|
119
|
-
|
|
120
|
-
**Relationships:**
|
|
121
|
-
|
|
122
|
-
- [one-to-many / many-to-many] with [other_table] via [foreign key]
|
|
107
|
+
**Defined by:** `[symbol]` in `/path/to/schema.ts`
|
|
123
108
|
|
|
124
|
-
|
|
109
|
+
| Column | Type | Constraints | Purpose |
|
|
110
|
+
| ------ | ------ | ------------------------------ | ------------ |
|
|
111
|
+
| [name] | [type] | [nullable, default, unique, …] | [why needed] |
|
|
125
112
|
|
|
126
|
-
|
|
113
|
+
**Relationships:** [one-to-many / many-to-many] with [other_table], via [foreign key]
|
|
114
|
+
**Indexes:** [columns] — [the query this serves]
|
|
127
115
|
|
|
128
|
-
## Migrations
|
|
116
|
+
## Migrations
|
|
129
117
|
|
|
130
118
|
**File:** `/path/to/migration.sql`
|
|
131
|
-
**Reversible:** [Yes
|
|
119
|
+
**Reversible:** [Yes, or No and why not]
|
|
132
120
|
|
|
133
121
|
```sql
|
|
134
|
-
--
|
|
122
|
+
-- migration SQL
|
|
135
123
|
```
|
|
136
124
|
|
|
137
125
|
</database_changes>
|
|
@@ -140,34 +128,32 @@ Provide your implementation in this structure:
|
|
|
140
128
|
|
|
141
129
|
## Security Verification
|
|
142
130
|
|
|
143
|
-
**Input
|
|
131
|
+
**Input validation:**
|
|
144
132
|
|
|
145
|
-
- [ ]
|
|
146
|
-
- [ ]
|
|
147
|
-
- [ ] Path traversal prevented
|
|
133
|
+
- [ ] Every user-supplied value validated before use
|
|
134
|
+
- [ ] Queries parameterised or built through the ORM — never assembled by string concatenation
|
|
135
|
+
- [ ] Path traversal prevented, where the endpoint touches the filesystem
|
|
148
136
|
- [ ] Request size limits enforced
|
|
149
137
|
|
|
150
|
-
**Authentication
|
|
138
|
+
**Authentication and authorization:**
|
|
151
139
|
|
|
152
|
-
- [ ] Auth middleware applied to protected
|
|
153
|
-
- [ ]
|
|
154
|
-
- [ ] Resource ownership verified
|
|
140
|
+
- [ ] Auth middleware applied to every protected route
|
|
141
|
+
- [ ] Identity and permission both checked — authentication alone answers only who is calling
|
|
142
|
+
- [ ] Resource ownership verified, so a caller reaches only their own records
|
|
155
143
|
|
|
156
|
-
**Sensitive
|
|
144
|
+
**Sensitive data:**
|
|
157
145
|
|
|
158
|
-
- [ ]
|
|
159
|
-
- [ ] No PII
|
|
160
|
-
- [ ] Sensitive fields excluded from
|
|
161
|
-
- [ ] Passwords hashed
|
|
146
|
+
- [ ] Secrets read from the environment, never committed
|
|
147
|
+
- [ ] No passwords, tokens or PII written to logs
|
|
148
|
+
- [ ] Sensitive fields excluded from responses
|
|
149
|
+
- [ ] Passwords hashed, where this touches credentials
|
|
162
150
|
|
|
163
|
-
**Rate
|
|
151
|
+
**Rate limiting:**
|
|
164
152
|
|
|
165
|
-
- [ ]
|
|
166
|
-
- [ ] Abuse vectors considered
|
|
153
|
+
- [ ] Applied where the endpoint is public
|
|
154
|
+
- [ ] Abuse vectors considered and named
|
|
167
155
|
|
|
168
|
-
**Notes:**
|
|
169
|
-
|
|
170
|
-
- [Any security decisions or considerations]
|
|
156
|
+
**Notes:** [security decisions taken, and what they assume]
|
|
171
157
|
|
|
172
158
|
</security>
|
|
173
159
|
|
|
@@ -175,23 +161,22 @@ Provide your implementation in this structure:
|
|
|
175
161
|
|
|
176
162
|
## Error Handling
|
|
177
163
|
|
|
178
|
-
**Pattern
|
|
179
|
-
|
|
180
|
-
**Errors Handled:**
|
|
164
|
+
**Pattern followed:** `[symbol]` in `/path`
|
|
181
165
|
|
|
182
|
-
| Error Type | HTTP Status | Handling
|
|
183
|
-
| -------------- | ----------- |
|
|
184
|
-
| Validation | 400 | Return validation details
|
|
185
|
-
| Auth | 401/403 | Return generic message
|
|
186
|
-
| Not Found | 404 | Return not
|
|
187
|
-
| Business Logic | 400/422 | Return specific error
|
|
188
|
-
| Database | 500 | Log
|
|
189
|
-
| Unknown | 500 | Log
|
|
166
|
+
| Error Type | HTTP Status | Handling | Logged? |
|
|
167
|
+
| -------------- | ----------- | -------------------------- | ------- |
|
|
168
|
+
| Validation | 400 | Return validation details | No |
|
|
169
|
+
| Auth | 401/403 | Return a generic message | Yes |
|
|
170
|
+
| Not Found | 404 | Return a not-found message | No |
|
|
171
|
+
| Business Logic | 400/422 | Return the specific error | Depends |
|
|
172
|
+
| Database | 500 | Log, return generic | Yes |
|
|
173
|
+
| Unknown | 500 | Log, return generic | Yes |
|
|
190
174
|
|
|
191
|
-
|
|
175
|
+
Client errors take a 4xx and server errors a 5xx; the message a client sees never carries internals,
|
|
176
|
+
and the log carries enough to debug without carrying PII. The same error shape applies across every
|
|
177
|
+
endpoint, so a consumer parses one format.
|
|
192
178
|
|
|
193
|
-
|
|
194
|
-
- Log level: [error / warn depending on type]
|
|
179
|
+
**Logging:** [what each error record carries — correlation id, user id, request path] at [level]
|
|
195
180
|
|
|
196
181
|
</error_handling>
|
|
197
182
|
|
|
@@ -202,7 +187,7 @@ Provide your implementation in this structure:
|
|
|
202
187
|
**Location:** `/absolute/path/to/file.test.ts`
|
|
203
188
|
|
|
204
189
|
```typescript
|
|
205
|
-
[
|
|
190
|
+
[test code covering the implementation]
|
|
206
191
|
```
|
|
207
192
|
|
|
208
193
|
**Coverage:**
|
|
@@ -212,12 +197,7 @@ Provide your implementation in this structure:
|
|
|
212
197
|
- [x] Auth errors: [scenarios]
|
|
213
198
|
- [x] Edge cases: [scenarios]
|
|
214
199
|
|
|
215
|
-
**Test
|
|
216
|
-
|
|
217
|
-
```bash
|
|
218
|
-
# Run tests for this feature
|
|
219
|
-
[specific test command]
|
|
220
|
-
```
|
|
200
|
+
**Test command:** `[the command that runs these]`
|
|
221
201
|
|
|
222
202
|
</tests>
|
|
223
203
|
|
|
@@ -225,48 +205,47 @@ Provide your implementation in this structure:
|
|
|
225
205
|
|
|
226
206
|
## Success Criteria
|
|
227
207
|
|
|
228
|
-
| Criterion | Status | Evidence
|
|
229
|
-
| -------------------- | --------- |
|
|
230
|
-
| [
|
|
208
|
+
| Criterion | Status | Evidence |
|
|
209
|
+
| -------------------- | --------- | ------------------------------------ |
|
|
210
|
+
| [from specification] | PASS/FAIL | [test name, request, or observation] |
|
|
231
211
|
|
|
232
|
-
##
|
|
212
|
+
## Quality Checks
|
|
233
213
|
|
|
234
|
-
**API
|
|
214
|
+
**API design:**
|
|
235
215
|
|
|
236
|
-
- [ ]
|
|
237
|
-
- [ ]
|
|
238
|
-
- [ ]
|
|
239
|
-
- [ ]
|
|
216
|
+
- [ ] The project's conventions followed, REST or GraphQL
|
|
217
|
+
- [ ] Response format consistent with the endpoints beside it
|
|
218
|
+
- [ ] Status codes appropriate to each outcome
|
|
219
|
+
- [ ] `PUT` and `DELETE` idempotent
|
|
220
|
+
- [ ] List endpoints paginated, and filterable where callers need it
|
|
221
|
+
- [ ] Versioning considered, where this breaks an existing consumer
|
|
240
222
|
|
|
241
223
|
**Database:**
|
|
242
224
|
|
|
243
|
-
- [ ]
|
|
244
|
-
- [ ]
|
|
245
|
-
- [ ]
|
|
246
|
-
- [ ]
|
|
225
|
+
- [ ] No N+1 — related data fetched in one query rather than inside a loop
|
|
226
|
+
- [ ] Indexes present for the columns this queries on
|
|
227
|
+
- [ ] Multi-step operations wrapped in a transaction, atomic as a unit
|
|
228
|
+
- [ ] Soft-delete checks applied where the project soft-deletes
|
|
229
|
+
- [ ] Connections returned to the pool rather than leaked
|
|
247
230
|
|
|
248
231
|
**Code Quality:**
|
|
249
232
|
|
|
250
|
-
- [ ]
|
|
251
|
-
- [ ] No `any`
|
|
252
|
-
- [ ]
|
|
253
|
-
- [ ]
|
|
254
|
-
- [ ] No hardcoded config values (uses env/config)
|
|
233
|
+
- [ ] Named constants rather than magic numbers
|
|
234
|
+
- [ ] No `any` without a justification in a comment
|
|
235
|
+
- [ ] Naming and file placement match the files you read
|
|
236
|
+
- [ ] Configuration read from the environment rather than hardcoded
|
|
255
237
|
|
|
256
238
|
**Observability:**
|
|
257
239
|
|
|
258
|
-
- [ ]
|
|
259
|
-
- [ ]
|
|
260
|
-
- [ ] Metrics/tracing hooks (if applicable)
|
|
240
|
+
- [ ] Errors logged with enough context to debug them
|
|
241
|
+
- [ ] Metrics or tracing hooks, where the project has them
|
|
261
242
|
|
|
262
243
|
## Build & Test Status
|
|
263
244
|
|
|
264
245
|
- [ ] Existing tests pass
|
|
265
|
-
- [ ] New tests pass
|
|
266
|
-
- [ ] Build succeeds
|
|
267
|
-
- [ ]
|
|
268
|
-
- [ ] No lint errors
|
|
269
|
-
- [ ] Migrations run successfully (if applicable)
|
|
246
|
+
- [ ] New tests pass
|
|
247
|
+
- [ ] Build succeeds, with no type or lint errors
|
|
248
|
+
- [ ] Migrations run, where the change adds one
|
|
270
249
|
|
|
271
250
|
</verification>
|
|
272
251
|
|
|
@@ -274,31 +253,24 @@ Provide your implementation in this structure:
|
|
|
274
253
|
|
|
275
254
|
## For Reviewer
|
|
276
255
|
|
|
277
|
-
- [
|
|
278
|
-
- [
|
|
279
|
-
- [
|
|
256
|
+
- [where to focus]
|
|
257
|
+
- [decisions worth discussing]
|
|
258
|
+
- [alternatives considered and rejected]
|
|
280
259
|
|
|
281
260
|
## Scope Control
|
|
282
261
|
|
|
283
|
-
**Added
|
|
284
|
-
|
|
285
|
-
- [Feature implemented as requested]
|
|
286
|
-
|
|
287
|
-
**Did NOT add:**
|
|
288
|
-
|
|
289
|
-
- [Unrequested feature avoided - why it was tempting but wrong]
|
|
262
|
+
**Added:** [what the spec asked for]
|
|
263
|
+
**Did not add:** [what was tempting and out of scope]
|
|
290
264
|
|
|
291
265
|
## Known Limitations
|
|
292
266
|
|
|
293
|
-
- [
|
|
294
|
-
- [Technical debt incurred and why]
|
|
295
|
-
- [Performance considerations for high load]
|
|
267
|
+
- [scope reduced from the spec, debt taken on, or behaviour under load, and why]
|
|
296
268
|
|
|
297
269
|
## Dependencies
|
|
298
270
|
|
|
299
|
-
- [
|
|
300
|
-
- [
|
|
301
|
-
- [
|
|
271
|
+
- [packages added: none, or each with its justification]
|
|
272
|
+
- [breaking changes: none, or what breaks]
|
|
273
|
+
- [migration required: yes or no]
|
|
302
274
|
|
|
303
275
|
</notes>
|
|
304
276
|
|
|
@@ -306,127 +278,18 @@ Provide your implementation in this structure:
|
|
|
306
278
|
|
|
307
279
|
---
|
|
308
280
|
|
|
309
|
-
## Section
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
|
314
|
-
|
|
|
315
|
-
| `<
|
|
316
|
-
| `<
|
|
317
|
-
| `<
|
|
318
|
-
| `<
|
|
319
|
-
| `<
|
|
320
|
-
| `<
|
|
321
|
-
| `<
|
|
322
|
-
| `<
|
|
323
|
-
| `<
|
|
324
|
-
| `<verification>` | Always - proves completion |
|
|
325
|
-
| `<notes>` | When there's context for reviewer |
|
|
326
|
-
|
|
327
|
-
### Security Checks (Framework-Agnostic)
|
|
328
|
-
|
|
329
|
-
These apply regardless of framework:
|
|
330
|
-
|
|
331
|
-
- **Input validation:** Never trust user input - validate everything
|
|
332
|
-
- **SQL injection:** Use parameterized queries or ORM, never string concatenation
|
|
333
|
-
- **Auth checks:** Verify identity AND authorization on every protected route
|
|
334
|
-
- **Secrets:** Environment variables only, never in code
|
|
335
|
-
- **Logging:** Never log passwords, tokens, or PII
|
|
336
|
-
|
|
337
|
-
### Database Checks (ORM-Agnostic)
|
|
338
|
-
|
|
339
|
-
- **Transactions:** Multi-step operations must be atomic
|
|
340
|
-
- **N+1 queries:** Avoid fetching related data in loops
|
|
341
|
-
- **Indexes:** Add for frequently queried columns
|
|
342
|
-
- **Soft delete:** Check for deleted records if pattern exists
|
|
343
|
-
- **Connection handling:** Don't leak connections
|
|
344
|
-
|
|
345
|
-
### Error Handling (Framework-Agnostic)
|
|
346
|
-
|
|
347
|
-
Every error needs:
|
|
348
|
-
|
|
349
|
-
1. **Appropriate status code:** 4xx for client errors, 5xx for server
|
|
350
|
-
2. **Safe message:** Don't expose internals to clients
|
|
351
|
-
3. **Logging:** Log enough to debug, not too much PII
|
|
352
|
-
4. **Consistency:** Same error format across all endpoints
|
|
353
|
-
|
|
354
|
-
### API Design (Framework-Agnostic)
|
|
355
|
-
|
|
356
|
-
- **Idempotency:** PUT/DELETE should be idempotent
|
|
357
|
-
- **Pagination:** List endpoints should paginate
|
|
358
|
-
- **Filtering:** Support common filter patterns
|
|
359
|
-
- **Versioning:** Consider when making breaking changes
|
|
360
|
-
|
|
361
|
-
## Example Implementation Output
|
|
362
|
-
|
|
363
|
-
Here's what a complete, high-quality backend developer output looks like:
|
|
364
|
-
|
|
365
|
-
```markdown
|
|
366
|
-
# Implementation: Add Job Skills Endpoint
|
|
367
|
-
|
|
368
|
-
## Investigation Notes
|
|
369
|
-
|
|
370
|
-
**Files Read:**
|
|
371
|
-
|
|
372
|
-
- app/api/routes/jobs.ts:45-89 - Existing job routes pattern
|
|
373
|
-
- app/api/schemas.ts:12-67 - Schema definition pattern
|
|
374
|
-
- lib/db/schema.ts:134-156 - Job skills relation definition
|
|
375
|
-
|
|
376
|
-
**Pattern Found:**
|
|
377
|
-
Routes use createRoute with OpenAPI registration, schemas use .openapi() method
|
|
378
|
-
Existing filtering uses comma-separated values with case-insensitive matching
|
|
379
|
-
|
|
380
|
-
## Implementation Plan
|
|
381
|
-
|
|
382
|
-
1. Add SkillSchema and JobSkillSchema to schemas.ts
|
|
383
|
-
2. Create getJobSkills route in routes/jobs.ts
|
|
384
|
-
3. Add skill filtering to existing getJobs route
|
|
385
|
-
4. Add tests for new endpoint
|
|
386
|
-
|
|
387
|
-
## Changes Made
|
|
388
|
-
|
|
389
|
-
### 1. Added Schemas (app/api/schemas.ts)
|
|
390
|
-
|
|
391
|
-
- Added SkillSchema with .openapi("Skill")
|
|
392
|
-
- Added JobSkillsQuerySchema for filtering
|
|
393
|
-
- Exported types with z.infer
|
|
394
|
-
|
|
395
|
-
### 2. Created Route (app/api/routes/jobs.ts)
|
|
396
|
-
|
|
397
|
-
- Added getJobSkillsRoute with operationId "getJobSkills"
|
|
398
|
-
- Implemented filtering by skill name (case-insensitive)
|
|
399
|
-
- Added soft delete check (isNull(jobs.deletedAt))
|
|
400
|
-
- Used .with() for relation loading (no N+1)
|
|
401
|
-
|
|
402
|
-
### 3. Updated Existing Route
|
|
403
|
-
|
|
404
|
-
- Added optional skill_ids filter to getJobsRoute
|
|
405
|
-
- Used inArray() for multiple skill filtering
|
|
406
|
-
|
|
407
|
-
## Verification
|
|
408
|
-
|
|
409
|
-
**Success Criteria:**
|
|
410
|
-
|
|
411
|
-
- [x] GET /jobs/:id/skills returns skills for a job
|
|
412
|
-
- [x] Skills can be filtered by name (case-insensitive)
|
|
413
|
-
- [x] Response includes skill metadata (popularity, slug)
|
|
414
|
-
- [x] OpenAPI spec generates correctly (tested with generate script)
|
|
415
|
-
|
|
416
|
-
**Quality Checks:**
|
|
417
|
-
|
|
418
|
-
- [x] All schemas have .openapi() registration
|
|
419
|
-
- [x] Named constants used (MAX_SKILLS_PER_JOB = 50)
|
|
420
|
-
- [x] Follows existing patterns
|
|
421
|
-
|
|
422
|
-
**Build Status:**
|
|
423
|
-
|
|
424
|
-
- [x] `bun test` passes
|
|
425
|
-
- [x] `bun run build` succeeds
|
|
426
|
-
|
|
427
|
-
## Summary
|
|
428
|
-
|
|
429
|
-
**Files:** 2 changed (+91 lines)
|
|
430
|
-
**Scope:** Added skills endpoint + filtering. Did NOT add skill CRUD operations (not in spec).
|
|
431
|
-
**For Reviewer:** Verify OpenAPI spec renders correctly with Swagger UI.
|
|
432
|
-
```
|
|
281
|
+
## When to Include Each Section
|
|
282
|
+
|
|
283
|
+
| Section | When Required |
|
|
284
|
+
| -------------------- | -------------------------------------- |
|
|
285
|
+
| `<summary>` | Always |
|
|
286
|
+
| `<investigation>` | Always — it evidences the research |
|
|
287
|
+
| `<approach>` | Always — it evidences the planning |
|
|
288
|
+
| `<implementation>` | Always — the actual code |
|
|
289
|
+
| `<api_changes>` | When endpoints are added or modified |
|
|
290
|
+
| `<database_changes>` | When schema or migrations change |
|
|
291
|
+
| `<security>` | Always, for backend work |
|
|
292
|
+
| `<error_handling>` | Always — it states the error strategy |
|
|
293
|
+
| `<tests>` | When tests are part of the task |
|
|
294
|
+
| `<verification>` | Always — it evidences completion |
|
|
295
|
+
| `<notes>` | When there is context for the reviewer |
|