@event4u/agent-config 1.9.1

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.
Files changed (446) hide show
  1. package/.agent-src/README.md +64 -0
  2. package/.agent-src/commands/agent-handoff.md +64 -0
  3. package/.agent-src/commands/agent-status.md +83 -0
  4. package/.agent-src/commands/agents-audit.md +243 -0
  5. package/.agent-src/commands/agents-cleanup.md +169 -0
  6. package/.agent-src/commands/agents-prepare.md +137 -0
  7. package/.agent-src/commands/analyze-reference-repo.md +191 -0
  8. package/.agent-src/commands/bug-fix.md +181 -0
  9. package/.agent-src/commands/bug-investigate.md +175 -0
  10. package/.agent-src/commands/commit.md +121 -0
  11. package/.agent-src/commands/compress.md +177 -0
  12. package/.agent-src/commands/config-agent-settings.md +126 -0
  13. package/.agent-src/commands/context-create.md +167 -0
  14. package/.agent-src/commands/context-refactor.md +170 -0
  15. package/.agent-src/commands/copilot-agents-init.md +150 -0
  16. package/.agent-src/commands/copilot-agents-optimize.md +251 -0
  17. package/.agent-src/commands/create-pr-description.md +112 -0
  18. package/.agent-src/commands/create-pr.md +76 -0
  19. package/.agent-src/commands/do-and-judge.md +114 -0
  20. package/.agent-src/commands/do-in-steps.md +84 -0
  21. package/.agent-src/commands/e2e-heal.md +98 -0
  22. package/.agent-src/commands/e2e-plan.md +85 -0
  23. package/.agent-src/commands/estimate-ticket.md +80 -0
  24. package/.agent-src/commands/feature-dev.md +111 -0
  25. package/.agent-src/commands/feature-explore.md +180 -0
  26. package/.agent-src/commands/feature-plan.md +288 -0
  27. package/.agent-src/commands/feature-refactor.md +181 -0
  28. package/.agent-src/commands/feature-roadmap.md +184 -0
  29. package/.agent-src/commands/fix-ci.md +48 -0
  30. package/.agent-src/commands/fix-portability.md +97 -0
  31. package/.agent-src/commands/fix-pr-bot-comments.md +146 -0
  32. package/.agent-src/commands/fix-pr-comments.md +58 -0
  33. package/.agent-src/commands/fix-pr-developer-comments.md +152 -0
  34. package/.agent-src/commands/fix-references.md +94 -0
  35. package/.agent-src/commands/fix-seeder.md +146 -0
  36. package/.agent-src/commands/implement-ticket.md +133 -0
  37. package/.agent-src/commands/jira-ticket.md +71 -0
  38. package/.agent-src/commands/judge.md +86 -0
  39. package/.agent-src/commands/memory-add.md +130 -0
  40. package/.agent-src/commands/memory-full.md +97 -0
  41. package/.agent-src/commands/memory-promote.md +144 -0
  42. package/.agent-src/commands/mode.md +121 -0
  43. package/.agent-src/commands/module-create.md +132 -0
  44. package/.agent-src/commands/module-explore.md +157 -0
  45. package/.agent-src/commands/optimize-agents.md +139 -0
  46. package/.agent-src/commands/optimize-augmentignore.md +262 -0
  47. package/.agent-src/commands/optimize-rtk-filters.md +120 -0
  48. package/.agent-src/commands/optimize-skills.md +121 -0
  49. package/.agent-src/commands/override-create.md +97 -0
  50. package/.agent-src/commands/override-manage.md +96 -0
  51. package/.agent-src/commands/package-reset.md +154 -0
  52. package/.agent-src/commands/package-test.md +154 -0
  53. package/.agent-src/commands/prepare-for-review.md +91 -0
  54. package/.agent-src/commands/project-analyze.md +300 -0
  55. package/.agent-src/commands/project-health.md +95 -0
  56. package/.agent-src/commands/propose-memory.md +108 -0
  57. package/.agent-src/commands/quality-fix.md +106 -0
  58. package/.agent-src/commands/refine-ticket.md +81 -0
  59. package/.agent-src/commands/review-changes.md +130 -0
  60. package/.agent-src/commands/review-routing.md +111 -0
  61. package/.agent-src/commands/roadmap-create.md +110 -0
  62. package/.agent-src/commands/roadmap-execute.md +68 -0
  63. package/.agent-src/commands/rule-compliance-audit.md +139 -0
  64. package/.agent-src/commands/tests-create.md +73 -0
  65. package/.agent-src/commands/tests-execute.md +58 -0
  66. package/.agent-src/commands/threat-model.md +115 -0
  67. package/.agent-src/commands/update-form-request-messages.md +189 -0
  68. package/.agent-src/commands/upstream-contribute.md +171 -0
  69. package/.agent-src/contexts/augment-infrastructure.md +181 -0
  70. package/.agent-src/contexts/documentation-hierarchy.md +142 -0
  71. package/.agent-src/contexts/model-recommendations.md +142 -0
  72. package/.agent-src/contexts/override-system.md +187 -0
  73. package/.agent-src/contexts/skills-and-commands.md +154 -0
  74. package/.agent-src/contexts/subagent-configuration.md +62 -0
  75. package/.agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +110 -0
  76. package/.agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  77. package/.agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  78. package/.agent-src/guidelines/agent-infra/engineering-memory-data-format.md +117 -0
  79. package/.agent-src/guidelines/agent-infra/layered-settings.md +158 -0
  80. package/.agent-src/guidelines/agent-infra/memory-access.md +121 -0
  81. package/.agent-src/guidelines/agent-infra/naming.md +69 -0
  82. package/.agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  83. package/.agent-src/guidelines/agent-infra/review-routing-data-format.md +144 -0
  84. package/.agent-src/guidelines/agent-infra/role-contracts.md +211 -0
  85. package/.agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  86. package/.agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  87. package/.agent-src/guidelines/agent-infra/self-improvement-pipeline.md +135 -0
  88. package/.agent-src/guidelines/agent-infra/size-and-scope.md +189 -0
  89. package/.agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  90. package/.agent-src/guidelines/docs/readme-size-and-splitting.md +153 -0
  91. package/.agent-src/guidelines/e2e/playwright.md +363 -0
  92. package/.agent-src/guidelines/php/api-design.md +115 -0
  93. package/.agent-src/guidelines/php/artisan-commands.md +81 -0
  94. package/.agent-src/guidelines/php/blade-ui.md +78 -0
  95. package/.agent-src/guidelines/php/controllers.md +90 -0
  96. package/.agent-src/guidelines/php/database.md +111 -0
  97. package/.agent-src/guidelines/php/eloquent.md +208 -0
  98. package/.agent-src/guidelines/php/flux.md +80 -0
  99. package/.agent-src/guidelines/php/general.md +191 -0
  100. package/.agent-src/guidelines/php/git.md +96 -0
  101. package/.agent-src/guidelines/php/jobs.md +111 -0
  102. package/.agent-src/guidelines/php/livewire.md +71 -0
  103. package/.agent-src/guidelines/php/logging.md +79 -0
  104. package/.agent-src/guidelines/php/naming.md +89 -0
  105. package/.agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  106. package/.agent-src/guidelines/php/patterns/dtos.md +199 -0
  107. package/.agent-src/guidelines/php/patterns/events.md +67 -0
  108. package/.agent-src/guidelines/php/patterns/factory.md +53 -0
  109. package/.agent-src/guidelines/php/patterns/pipelines.md +66 -0
  110. package/.agent-src/guidelines/php/patterns/policies.md +66 -0
  111. package/.agent-src/guidelines/php/patterns/repositories.md +122 -0
  112. package/.agent-src/guidelines/php/patterns/service-layer.md +64 -0
  113. package/.agent-src/guidelines/php/patterns/strategy.md +69 -0
  114. package/.agent-src/guidelines/php/patterns.md +28 -0
  115. package/.agent-src/guidelines/php/performance.md +92 -0
  116. package/.agent-src/guidelines/php/resources.md +100 -0
  117. package/.agent-src/guidelines/php/security.md +110 -0
  118. package/.agent-src/guidelines/php/sql.md +97 -0
  119. package/.agent-src/guidelines/php/validations.md +119 -0
  120. package/.agent-src/guidelines/php/websocket.md +100 -0
  121. package/.agent-src/personas/README.md +104 -0
  122. package/.agent-src/personas/ai-agent.md +77 -0
  123. package/.agent-src/personas/critical-challenger.md +73 -0
  124. package/.agent-src/personas/developer.md +73 -0
  125. package/.agent-src/personas/product-owner.md +78 -0
  126. package/.agent-src/personas/qa.md +67 -0
  127. package/.agent-src/personas/senior-engineer.md +77 -0
  128. package/.agent-src/personas/stakeholder.md +78 -0
  129. package/.agent-src/rules/agent-docs.md +61 -0
  130. package/.agent-src/rules/analysis-skill-routing.md +48 -0
  131. package/.agent-src/rules/architecture.md +62 -0
  132. package/.agent-src/rules/artifact-drafting-protocol.md +73 -0
  133. package/.agent-src/rules/ask-when-uncertain.md +52 -0
  134. package/.agent-src/rules/augment-portability.md +38 -0
  135. package/.agent-src/rules/augment-source-of-truth.md +128 -0
  136. package/.agent-src/rules/capture-learnings.md +89 -0
  137. package/.agent-src/rules/cli-output-handling.md +94 -0
  138. package/.agent-src/rules/commit-conventions.md +64 -0
  139. package/.agent-src/rules/context-hygiene.md +90 -0
  140. package/.agent-src/rules/docker-commands.md +55 -0
  141. package/.agent-src/rules/docs-sync.md +79 -0
  142. package/.agent-src/rules/downstream-changes.md +70 -0
  143. package/.agent-src/rules/e2e-testing.md +53 -0
  144. package/.agent-src/rules/guidelines.md +90 -0
  145. package/.agent-src/rules/improve-before-implement.md +94 -0
  146. package/.agent-src/rules/language-and-tone.md +104 -0
  147. package/.agent-src/rules/laravel-translations.md +48 -0
  148. package/.agent-src/rules/markdown-safe-codeblocks.md +18 -0
  149. package/.agent-src/rules/minimal-safe-diff.md +87 -0
  150. package/.agent-src/rules/missing-tool-handling.md +62 -0
  151. package/.agent-src/rules/model-recommendation.md +70 -0
  152. package/.agent-src/rules/package-ci-checks.md +80 -0
  153. package/.agent-src/rules/php-coding.md +63 -0
  154. package/.agent-src/rules/preservation-guard.md +29 -0
  155. package/.agent-src/rules/review-routing-awareness.md +125 -0
  156. package/.agent-src/rules/reviewer-awareness.md +92 -0
  157. package/.agent-src/rules/roadmap-progress-sync.md +56 -0
  158. package/.agent-src/rules/role-mode-adherence.md +54 -0
  159. package/.agent-src/rules/rule-type-governance.md +46 -0
  160. package/.agent-src/rules/runtime-safety.md +42 -0
  161. package/.agent-src/rules/scope-control.md +40 -0
  162. package/.agent-src/rules/security-sensitive-stop.md +77 -0
  163. package/.agent-src/rules/size-enforcement.md +29 -0
  164. package/.agent-src/rules/skill-improvement-trigger.md +58 -0
  165. package/.agent-src/rules/skill-quality.md +110 -0
  166. package/.agent-src/rules/slash-commands.md +30 -0
  167. package/.agent-src/rules/think-before-action.md +91 -0
  168. package/.agent-src/rules/token-efficiency.md +99 -0
  169. package/.agent-src/rules/tool-safety.md +36 -0
  170. package/.agent-src/rules/upstream-proposal.md +76 -0
  171. package/.agent-src/rules/user-interaction.md +79 -0
  172. package/.agent-src/rules/verify-before-complete.md +120 -0
  173. package/.agent-src/scripts/scan-seeder-violations.php +145 -0
  174. package/.agent-src/scripts/update_roadmap_progress.py +244 -0
  175. package/.agent-src/skills/adversarial-review/SKILL.md +149 -0
  176. package/.agent-src/skills/agent-docs-writing/SKILL.md +234 -0
  177. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +197 -0
  178. package/.agent-src/skills/analysis-skill-router/SKILL.md +134 -0
  179. package/.agent-src/skills/api-design/SKILL.md +104 -0
  180. package/.agent-src/skills/api-endpoint/SKILL.md +185 -0
  181. package/.agent-src/skills/api-testing/SKILL.md +206 -0
  182. package/.agent-src/skills/artisan-commands/SKILL.md +78 -0
  183. package/.agent-src/skills/authz-review/SKILL.md +171 -0
  184. package/.agent-src/skills/aws-infrastructure/SKILL.md +152 -0
  185. package/.agent-src/skills/blade-ui/SKILL.md +75 -0
  186. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +185 -0
  187. package/.agent-src/skills/bug-analyzer/SKILL.md +256 -0
  188. package/.agent-src/skills/check-refs/SKILL.md +72 -0
  189. package/.agent-src/skills/code-refactoring/SKILL.md +200 -0
  190. package/.agent-src/skills/code-review/SKILL.md +214 -0
  191. package/.agent-src/skills/command-routing/SKILL.md +96 -0
  192. package/.agent-src/skills/command-writing/SKILL.md +143 -0
  193. package/.agent-src/skills/composer-packages/SKILL.md +172 -0
  194. package/.agent-src/skills/context-authoring/SKILL.md +157 -0
  195. package/.agent-src/skills/context-document/SKILL.md +153 -0
  196. package/.agent-src/skills/conventional-commits-writing/SKILL.md +70 -0
  197. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +220 -0
  198. package/.agent-src/skills/copilot-config/SKILL.md +203 -0
  199. package/.agent-src/skills/dashboard-design/SKILL.md +116 -0
  200. package/.agent-src/skills/data-flow-mapper/SKILL.md +160 -0
  201. package/.agent-src/skills/database/SKILL.md +91 -0
  202. package/.agent-src/skills/dependency-upgrade/SKILL.md +204 -0
  203. package/.agent-src/skills/description-assist/SKILL.md +169 -0
  204. package/.agent-src/skills/design-review/SKILL.md +228 -0
  205. package/.agent-src/skills/devcontainer/SKILL.md +121 -0
  206. package/.agent-src/skills/developer-like-execution/SKILL.md +276 -0
  207. package/.agent-src/skills/docker/SKILL.md +245 -0
  208. package/.agent-src/skills/dto-creator/SKILL.md +117 -0
  209. package/.agent-src/skills/eloquent/SKILL.md +92 -0
  210. package/.agent-src/skills/eloquent/evals/last-run.json +99 -0
  211. package/.agent-src/skills/eloquent/evals/triggers.json +16 -0
  212. package/.agent-src/skills/estimate-ticket/SKILL.md +186 -0
  213. package/.agent-src/skills/estimate-ticket/evals/output-schema.yml +20 -0
  214. package/.agent-src/skills/estimate-ticket/evals/triggers.json +18 -0
  215. package/.agent-src/skills/fe-design/SKILL.md +223 -0
  216. package/.agent-src/skills/feature-planning/SKILL.md +226 -0
  217. package/.agent-src/skills/file-editor/SKILL.md +129 -0
  218. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +200 -0
  219. package/.agent-src/skills/flux/SKILL.md +64 -0
  220. package/.agent-src/skills/git-workflow/SKILL.md +102 -0
  221. package/.agent-src/skills/github-ci/SKILL.md +122 -0
  222. package/.agent-src/skills/grafana/SKILL.md +168 -0
  223. package/.agent-src/skills/guideline-writing/SKILL.md +147 -0
  224. package/.agent-src/skills/jira-integration/SKILL.md +182 -0
  225. package/.agent-src/skills/jobs-events/SKILL.md +87 -0
  226. package/.agent-src/skills/judge-bug-hunter/SKILL.md +157 -0
  227. package/.agent-src/skills/judge-code-quality/SKILL.md +158 -0
  228. package/.agent-src/skills/judge-security-auditor/SKILL.md +167 -0
  229. package/.agent-src/skills/judge-test-coverage/SKILL.md +154 -0
  230. package/.agent-src/skills/laravel/SKILL.md +195 -0
  231. package/.agent-src/skills/laravel-horizon/SKILL.md +169 -0
  232. package/.agent-src/skills/laravel-mail/SKILL.md +193 -0
  233. package/.agent-src/skills/laravel-middleware/SKILL.md +185 -0
  234. package/.agent-src/skills/laravel-notifications/SKILL.md +168 -0
  235. package/.agent-src/skills/laravel-pennant/SKILL.md +188 -0
  236. package/.agent-src/skills/laravel-pulse/SKILL.md +160 -0
  237. package/.agent-src/skills/laravel-reverb/SKILL.md +205 -0
  238. package/.agent-src/skills/laravel-scheduling/SKILL.md +167 -0
  239. package/.agent-src/skills/laravel-validation/SKILL.md +71 -0
  240. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +249 -0
  241. package/.agent-src/skills/lint-skills/SKILL.md +72 -0
  242. package/.agent-src/skills/livewire/SKILL.md +79 -0
  243. package/.agent-src/skills/logging-monitoring/SKILL.md +100 -0
  244. package/.agent-src/skills/mcp/SKILL.md +193 -0
  245. package/.agent-src/skills/merge-conflicts/SKILL.md +158 -0
  246. package/.agent-src/skills/migration-creator/SKILL.md +160 -0
  247. package/.agent-src/skills/module-management/SKILL.md +154 -0
  248. package/.agent-src/skills/multi-tenancy/SKILL.md +129 -0
  249. package/.agent-src/skills/openapi/SKILL.md +154 -0
  250. package/.agent-src/skills/override-management/SKILL.md +186 -0
  251. package/.agent-src/skills/performance/SKILL.md +69 -0
  252. package/.agent-src/skills/performance-analysis/SKILL.md +118 -0
  253. package/.agent-src/skills/pest-testing/SKILL.md +321 -0
  254. package/.agent-src/skills/php-coder/SKILL.md +78 -0
  255. package/.agent-src/skills/php-coder/evals/triggers.json +16 -0
  256. package/.agent-src/skills/php-debugging/SKILL.md +184 -0
  257. package/.agent-src/skills/php-service/SKILL.md +96 -0
  258. package/.agent-src/skills/playwright-testing/SKILL.md +244 -0
  259. package/.agent-src/skills/project-analysis-core/SKILL.md +138 -0
  260. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +130 -0
  261. package/.agent-src/skills/project-analysis-laravel/SKILL.md +119 -0
  262. package/.agent-src/skills/project-analysis-nextjs/SKILL.md +123 -0
  263. package/.agent-src/skills/project-analysis-node-express/SKILL.md +111 -0
  264. package/.agent-src/skills/project-analysis-react/SKILL.md +119 -0
  265. package/.agent-src/skills/project-analysis-symfony/SKILL.md +111 -0
  266. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +108 -0
  267. package/.agent-src/skills/project-analyzer/SKILL.md +341 -0
  268. package/.agent-src/skills/project-docs/SKILL.md +137 -0
  269. package/.agent-src/skills/quality-tools/SKILL.md +411 -0
  270. package/.agent-src/skills/readme-reviewer/SKILL.md +187 -0
  271. package/.agent-src/skills/readme-writing/SKILL.md +142 -0
  272. package/.agent-src/skills/readme-writing-package/SKILL.md +185 -0
  273. package/.agent-src/skills/receiving-code-review/SKILL.md +190 -0
  274. package/.agent-src/skills/refine-ticket/SKILL.md +310 -0
  275. package/.agent-src/skills/refine-ticket/detection-map.yml +124 -0
  276. package/.agent-src/skills/refine-ticket/evals/output-schema.yml +16 -0
  277. package/.agent-src/skills/refine-ticket/evals/triggers.json +16 -0
  278. package/.agent-src/skills/requesting-code-review/SKILL.md +199 -0
  279. package/.agent-src/skills/review-routing/SKILL.md +195 -0
  280. package/.agent-src/skills/roadmap-management/SKILL.md +303 -0
  281. package/.agent-src/skills/rtk-output-filtering/SKILL.md +184 -0
  282. package/.agent-src/skills/rule-writing/SKILL.md +148 -0
  283. package/.agent-src/skills/security/SKILL.md +79 -0
  284. package/.agent-src/skills/security-audit/SKILL.md +123 -0
  285. package/.agent-src/skills/sentry-integration/SKILL.md +170 -0
  286. package/.agent-src/skills/sequential-thinking/SKILL.md +158 -0
  287. package/.agent-src/skills/skill-improvement-pipeline/SKILL.md +155 -0
  288. package/.agent-src/skills/skill-management/SKILL.md +121 -0
  289. package/.agent-src/skills/skill-reviewer/SKILL.md +218 -0
  290. package/.agent-src/skills/skill-writing/SKILL.md +291 -0
  291. package/.agent-src/skills/skill-writing/evals/triggers.json +16 -0
  292. package/.agent-src/skills/sql-writing/SKILL.md +74 -0
  293. package/.agent-src/skills/subagent-orchestration/SKILL.md +190 -0
  294. package/.agent-src/skills/systematic-debugging/SKILL.md +244 -0
  295. package/.agent-src/skills/technical-specification/SKILL.md +185 -0
  296. package/.agent-src/skills/terraform/SKILL.md +137 -0
  297. package/.agent-src/skills/terragrunt/SKILL.md +217 -0
  298. package/.agent-src/skills/test-driven-development/SKILL.md +252 -0
  299. package/.agent-src/skills/test-performance/SKILL.md +172 -0
  300. package/.agent-src/skills/threat-modeling/SKILL.md +189 -0
  301. package/.agent-src/skills/traefik/SKILL.md +319 -0
  302. package/.agent-src/skills/universal-project-analysis/SKILL.md +179 -0
  303. package/.agent-src/skills/upstream-contribute/SKILL.md +255 -0
  304. package/.agent-src/skills/using-git-worktrees/SKILL.md +148 -0
  305. package/.agent-src/skills/validate-feature-fit/SKILL.md +113 -0
  306. package/.agent-src/skills/verify-before-complete/SKILL.md +188 -0
  307. package/.agent-src/skills/websocket/SKILL.md +75 -0
  308. package/.agent-src/templates/AGENTS.md +146 -0
  309. package/.agent-src/templates/agent-settings.md +256 -0
  310. package/.agent-src/templates/agents/.gitattributes.fragment +16 -0
  311. package/.agent-src/templates/agents/agent-project-settings.example.yml +138 -0
  312. package/.agent-src/templates/agents/memory/architecture-decisions.example.yml +95 -0
  313. package/.agent-src/templates/agents/memory/domain-invariants.example.yml +80 -0
  314. package/.agent-src/templates/agents/memory/historical-patterns.example.yml +82 -0
  315. package/.agent-src/templates/agents/memory/incident-learnings.example.yml +113 -0
  316. package/.agent-src/templates/agents/memory/ownership.example.yml +75 -0
  317. package/.agent-src/templates/agents/memory/product-rules.example.yml +87 -0
  318. package/.agent-src/templates/agents/proposal.example.md +143 -0
  319. package/.agent-src/templates/command.md +84 -0
  320. package/.agent-src/templates/contexts/auth-model.md +59 -0
  321. package/.agent-src/templates/contexts/data-sensitivity.md +60 -0
  322. package/.agent-src/templates/contexts/deployment-order.md +72 -0
  323. package/.agent-src/templates/contexts/observability.md +64 -0
  324. package/.agent-src/templates/contexts/tenant-boundaries.md +68 -0
  325. package/.agent-src/templates/contexts.md +116 -0
  326. package/.agent-src/templates/copilot-instructions.md +115 -0
  327. package/.agent-src/templates/features.md +125 -0
  328. package/.agent-src/templates/github-workflows/memory-hygiene.yml +133 -0
  329. package/.agent-src/templates/github-workflows/pr-risk-review.yml +123 -0
  330. package/.agent-src/templates/github-workflows/proposal-drift.yml +118 -0
  331. package/.agent-src/templates/overrides/command.md +24 -0
  332. package/.agent-src/templates/overrides/guideline.md +21 -0
  333. package/.agent-src/templates/overrides/rule.md +19 -0
  334. package/.agent-src/templates/overrides/skill.md +24 -0
  335. package/.agent-src/templates/overrides/template.md +21 -0
  336. package/.agent-src/templates/persona.md +99 -0
  337. package/.agent-src/templates/roadmaps.md +109 -0
  338. package/.agent-src/templates/scripts/README.md +195 -0
  339. package/.agent-src/templates/scripts/check_memory.py +283 -0
  340. package/.agent-src/templates/scripts/check_memory_proposal.py +180 -0
  341. package/.agent-src/templates/scripts/historical-bug-patterns.example.yml +84 -0
  342. package/.agent-src/templates/scripts/implement_ticket/__init__.py +57 -0
  343. package/.agent-src/templates/scripts/implement_ticket/__main__.py +9 -0
  344. package/.agent-src/templates/scripts/implement_ticket/cli.py +171 -0
  345. package/.agent-src/templates/scripts/implement_ticket/delivery_state.py +130 -0
  346. package/.agent-src/templates/scripts/implement_ticket/dispatcher.py +134 -0
  347. package/.agent-src/templates/scripts/implement_ticket/persona_policy.py +85 -0
  348. package/.agent-src/templates/scripts/implement_ticket/steps/__init__.py +49 -0
  349. package/.agent-src/templates/scripts/implement_ticket/steps/analyze.py +98 -0
  350. package/.agent-src/templates/scripts/implement_ticket/steps/implement.py +145 -0
  351. package/.agent-src/templates/scripts/implement_ticket/steps/memory.py +136 -0
  352. package/.agent-src/templates/scripts/implement_ticket/steps/plan.py +175 -0
  353. package/.agent-src/templates/scripts/implement_ticket/steps/refine.py +140 -0
  354. package/.agent-src/templates/scripts/implement_ticket/steps/report.py +195 -0
  355. package/.agent-src/templates/scripts/implement_ticket/steps/test.py +180 -0
  356. package/.agent-src/templates/scripts/implement_ticket/steps/verify.py +170 -0
  357. package/.agent-src/templates/scripts/memory_hash.py +75 -0
  358. package/.agent-src/templates/scripts/memory_lookup.py +216 -0
  359. package/.agent-src/templates/scripts/memory_report.py +184 -0
  360. package/.agent-src/templates/scripts/memory_signal.py +167 -0
  361. package/.agent-src/templates/scripts/memory_status.py +156 -0
  362. package/.agent-src/templates/scripts/ownership-map.example.yml +87 -0
  363. package/.agent-src/templates/scripts/pr-risk-config.example.yml +76 -0
  364. package/.agent-src/templates/scripts/pr_review_routing.py +340 -0
  365. package/.agent-src/templates/scripts/pr_risk_review.py +211 -0
  366. package/.agent-src/templates/skill.md +136 -0
  367. package/.augment-plugin/marketplace.json +32 -0
  368. package/.augment-plugin/plugin.json +21 -0
  369. package/.claude-plugin/marketplace.json +119 -0
  370. package/AGENTS.md +121 -0
  371. package/CHANGELOG.md +279 -0
  372. package/CONTRIBUTING.md +176 -0
  373. package/LICENSE +21 -0
  374. package/README.md +357 -0
  375. package/bin/install.php +38 -0
  376. package/composer.json +29 -0
  377. package/config/agent-settings.template.yml +96 -0
  378. package/config/profiles/balanced.ini +10 -0
  379. package/config/profiles/full.ini +10 -0
  380. package/config/profiles/minimal.ini +10 -0
  381. package/docs/architecture.md +144 -0
  382. package/docs/customization.md +88 -0
  383. package/docs/development.md +171 -0
  384. package/docs/getting-started.md +130 -0
  385. package/docs/github-topics.md +84 -0
  386. package/docs/installation.md +376 -0
  387. package/docs/mcp.md +133 -0
  388. package/docs/quality.md +98 -0
  389. package/docs/skills-catalog.md +136 -0
  390. package/docs/troubleshooting.md +167 -0
  391. package/llms.txt +130 -0
  392. package/package.json +31 -0
  393. package/scripts/audit_skill_descriptions.py +168 -0
  394. package/scripts/check_compression.py +221 -0
  395. package/scripts/check_memory.py +341 -0
  396. package/scripts/check_memory_proposal.py +180 -0
  397. package/scripts/check_portability.py +320 -0
  398. package/scripts/check_proposal.py +269 -0
  399. package/scripts/check_references.py +400 -0
  400. package/scripts/ci_summary.py +131 -0
  401. package/scripts/compress.py +671 -0
  402. package/scripts/compress.sh +18 -0
  403. package/scripts/first-run.sh +109 -0
  404. package/scripts/generate_catalog.py +116 -0
  405. package/scripts/install +151 -0
  406. package/scripts/install-hooks.sh +29 -0
  407. package/scripts/install.py +487 -0
  408. package/scripts/install.sh +637 -0
  409. package/scripts/install_anthropic_key.sh +101 -0
  410. package/scripts/inventory_frontmatter.py +164 -0
  411. package/scripts/lint_marketplace.py +142 -0
  412. package/scripts/lint_regression.py +232 -0
  413. package/scripts/mcp_render.py +159 -0
  414. package/scripts/measure_patterns.py +376 -0
  415. package/scripts/memory_hash.py +75 -0
  416. package/scripts/memory_lookup.py +441 -0
  417. package/scripts/memory_report.py +336 -0
  418. package/scripts/memory_signal.py +210 -0
  419. package/scripts/memory_status.py +195 -0
  420. package/scripts/postinstall.sh +60 -0
  421. package/scripts/readme_linter.py +580 -0
  422. package/scripts/refine_ticket_detect.py +623 -0
  423. package/scripts/requirements-evals.txt +7 -0
  424. package/scripts/runtime_dispatcher.py +265 -0
  425. package/scripts/runtime_handler.py +148 -0
  426. package/scripts/runtime_registry.py +166 -0
  427. package/scripts/schemas/command.schema.json +32 -0
  428. package/scripts/schemas/persona.schema.json +42 -0
  429. package/scripts/schemas/rule.schema.json +28 -0
  430. package/scripts/schemas/skill.schema.json +73 -0
  431. package/scripts/setup.sh +230 -0
  432. package/scripts/setup_eval_venv.sh +58 -0
  433. package/scripts/skill_linter.py +2175 -0
  434. package/scripts/skill_trigger_eval.py +651 -0
  435. package/scripts/tool_registry.py +146 -0
  436. package/scripts/tools/__init__.py +1 -0
  437. package/scripts/tools/adapter_errors.py +63 -0
  438. package/scripts/tools/base_adapter.py +91 -0
  439. package/scripts/tools/github_adapter.py +128 -0
  440. package/scripts/tools/jira_adapter.py +115 -0
  441. package/scripts/update_counts.py +147 -0
  442. package/scripts/validate_frontmatter.py +424 -0
  443. package/templates/consumer-settings/README.md +46 -0
  444. package/templates/consumer-settings/augment-settings.json +12 -0
  445. package/templates/consumer-settings/claude-settings.json +9 -0
  446. package/templates/consumer-settings/copilot-settings.json +14 -0
@@ -0,0 +1,157 @@
1
+ ---
2
+ name: judge-bug-hunter
3
+ description: "Use when a diff needs correctness review — null-safety, edge cases, off-by-one, races, error handling — dispatched by /review-changes, /do-and-judge, /judge, even without 'judge'."
4
+ source: package
5
+ ---
6
+
7
+ # judge-bug-hunter
8
+
9
+ > You are a judge specialized in **functional correctness**. Your only
10
+ > job is to find bugs the implementer missed — logic errors, unhandled
11
+ > edge cases, null-dereference paths, off-by-one conditions, race
12
+ > conditions, and incorrect error handling. You do **not** review
13
+ > style, security, or test coverage — other judges handle those.
14
+
15
+ ## When to use
16
+
17
+ * A diff is ready for review and correctness is the risk
18
+ * `/review-changes` dispatches its "bug" slice to this skill
19
+ * `/do-and-judge` or `/judge` is invoked on a non-trivial code change
20
+ * A reviewer asks "could this crash?", "are we handling null?", or
21
+ "what about the empty case?"
22
+
23
+ Do NOT use when:
24
+
25
+ * The change is documentation-only or a formatting-only diff
26
+ * The concern is AuthN/AuthZ, injection, or secret handling — route to
27
+ [`judge-security-auditor`](../judge-security-auditor/SKILL.md)
28
+ * The concern is missing tests — route to
29
+ [`judge-test-coverage`](../judge-test-coverage/SKILL.md)
30
+ * The concern is naming, SRP, or DRY — route to
31
+ [`judge-code-quality`](../judge-code-quality/SKILL.md)
32
+
33
+ ## Procedure
34
+
35
+ ### 1. Inspect the task and the diff
36
+
37
+ Read the task description (ticket, PR body, commit message) and the
38
+ full diff. Identify which files changed and which behaviors the
39
+ change claims to add, remove, or fix. You are judging the diff
40
+ against **the stated intent**, not against a fantasy ideal. Never
41
+ guess intent — if it is unclear from the available context, stop and
42
+ ask before continuing.
43
+
44
+ ### 2. Analyze each changed hunk
45
+
46
+ For every changed function or block, answer:
47
+
48
+ | Question | Why it matters |
49
+ |---|---|
50
+ | What are the inputs — can any be `null`, empty, or out of range? | Null-deref, empty-collection crash |
51
+ | Are loop bounds and indices correct? | Off-by-one, iterator invalidation |
52
+ | Is every branch covered, including the `else` that was not written? | Silent fall-through |
53
+ | Are error paths handled (caught, logged, surfaced)? | Swallowed exceptions |
54
+ | Are there race conditions or ordering assumptions? | Concurrency bugs |
55
+ | Does the change preserve invariants the caller relies on? | Contract break |
56
+
57
+ If an answer is "unknown" and the diff cannot tell you, the diff is
58
+ not reviewable — flag it and stop.
59
+
60
+ ### 3. Cross-check with existing behavior
61
+
62
+ - Does this change alter a return type, thrown exception, or side
63
+ effect that callers depend on? Grep for callers if the judge context
64
+ permits.
65
+ - Does it introduce a new implicit assumption (ordering, timezone,
66
+ encoding, locale)?
67
+
68
+ ### 4. Verdict
69
+
70
+ | Verdict | When to return it |
71
+ |---|---|
72
+ | `apply` | No correctness issues found; edge cases considered |
73
+ | `revise` | Specific correctness issues listed with file:line |
74
+ | `reject` | Fundamental logic error — the approach itself is wrong |
75
+
76
+ Never return `apply` out of politeness. If you cannot reach a verdict
77
+ from the diff alone, return `revise` with the missing information as
78
+ an issue.
79
+
80
+ ## Validation
81
+
82
+ Before finalizing your verdict, confirm:
83
+
84
+ 1. Every issue cites a specific file and line from the diff
85
+ 2. Every issue names the concrete input or condition that triggers it
86
+ 3. You have NOT commented on style, security, or missing tests
87
+ 4. You have re-read the task description — your verdict aligns with
88
+ stated intent, not personal preference
89
+
90
+ ## Output format
91
+
92
+ ```
93
+ Judge: judge-bug-hunter
94
+ Model: <resolved from subagents.judge_model>
95
+ Target: <diff summary: N files, +X/-Y lines>
96
+ Verdict: apply | revise | reject
97
+
98
+ Issues (if revise/reject):
99
+ 🔴 path/to/file.ext:LINE — <one-sentence description>
100
+ Trigger: <concrete input/condition>
101
+ Expected: <what should happen>
102
+ 🟡 ...
103
+ ```
104
+
105
+ Severity: 🔴 crash or incorrect result / 🟡 edge case unhandled but
106
+ graceful / 🟢 defensive-coding suggestion.
107
+
108
+ Required fields (ordered):
109
+
110
+ 1. **Judge** and **Model** — skill name and resolved judge model
111
+ 2. **Target** — one-line diff summary
112
+ 3. **Verdict** — `apply`, `revise`, or `reject`
113
+ 4. **Issues** — every finding cites file:line and concrete trigger;
114
+ omit only when verdict is `apply`
115
+
116
+ If a finding needs runtime confirmation, note it as a follow-up for
117
+ the implementer (e.g. "run pest/phpunit on the new branch" or "curl
118
+ the endpoint with an empty body") — the judge does not execute tools.
119
+
120
+ ## Gotcha
121
+
122
+ * **Reviewing the code's style instead of its behavior** — you are the
123
+ bug hunter, not the linter. If the logic is correct, don't flag
124
+ naming. Other judges cover style.
125
+ * **Asking for tests instead of finding bugs** — missing tests are
126
+ `judge-test-coverage`'s job. Your job is to find the bug the tests
127
+ should catch.
128
+ * **Hypothetical bugs with no trigger** — "this could crash if the
129
+ universe inverts" is noise. Every issue must have a concrete
130
+ trigger condition from real input or state.
131
+ * **Rubber-stamping because the diff "looks clean"** — clean code can
132
+ still have off-by-one and null-deref. Walk every branch.
133
+ * **Guessing a root cause instead of diagnosing it** — every finding
134
+ must cite a concrete trigger. Do not retry blind hypotheses; if
135
+ the diff does not support a finding, drop it and move on.
136
+
137
+ ## Do NOT
138
+
139
+ * NEVER return `apply` without walking every changed hunk
140
+ * NEVER flag style, naming, or DRY — out of scope for this judge
141
+ * NEVER flag missing tests — route to `judge-test-coverage`
142
+ * NEVER invent issues; every finding must cite a concrete trigger
143
+ * NEVER silently fall back to a different model than `subagents.judge_model`
144
+
145
+ ## References
146
+
147
+ - **LLM-as-a-Judge foundations** — Zheng et al., "Judging LLM-as-a-Judge
148
+ with MT-Bench and Chatbot Arena" (2023), [arxiv.org/abs/2306.05685](https://arxiv.org/abs/2306.05685).
149
+ Establishes the pattern this skill implements: a specialized judge
150
+ model evaluates another model's output against a rubric, with
151
+ position bias and self-consistency as known failure modes.
152
+ - [`subagent-orchestration`](../subagent-orchestration/SKILL.md) —
153
+ model-pairing rules (`subagents.judge_model` one tier above implementer).
154
+ - [`judge-security-auditor`](../judge-security-auditor/SKILL.md),
155
+ [`judge-test-coverage`](../judge-test-coverage/SKILL.md),
156
+ [`judge-code-quality`](../judge-code-quality/SKILL.md) — sibling
157
+ judges dispatched together by [`/review-changes`](../../commands/review-changes.md).
@@ -0,0 +1,158 @@
1
+ ---
2
+ name: judge-code-quality
3
+ description: "Use when a diff needs a readability review — naming, single-responsibility, DRY, dead code, mismatch with codebase conventions — dispatched by /review-changes, /do-and-judge, /judge."
4
+ source: package
5
+ ---
6
+
7
+ # judge-code-quality
8
+
9
+ > You are a judge specialized in **code quality and codebase
10
+ > consistency**. Your only job is to find readability and
11
+ > maintainability issues the implementer missed — unclear names,
12
+ > overloaded responsibilities, duplication, dead code, and
13
+ > inconsistency with existing codebase conventions. You do **not**
14
+ > review correctness, security, or test coverage — other judges
15
+ > handle those.
16
+
17
+ ## When to use
18
+
19
+ * A diff is ready for review and maintainability is the risk
20
+ * `/review-changes` dispatches its "quality" slice to this skill
21
+ * A reviewer asks "is this clean?", "does this fit the codebase?",
22
+ "is this doing too much?"
23
+
24
+ Do NOT use when:
25
+
26
+ * The concern is a functional bug — route to
27
+ [`judge-bug-hunter`](../judge-bug-hunter/SKILL.md)
28
+ * The concern is a security issue — route to
29
+ [`judge-security-auditor`](../judge-security-auditor/SKILL.md)
30
+ * The concern is missing tests — route to
31
+ [`judge-test-coverage`](../judge-test-coverage/SKILL.md)
32
+ * The concern is catchable by the formatter or linter — not a judge
33
+ finding, let the tools handle it
34
+
35
+ ## Procedure
36
+
37
+ ### 1. Anchor on the codebase's own conventions
38
+
39
+ Before judging a diff, sample the nearest neighbors — sibling files in
40
+ the same folder, callers of the changed symbols, and the module's
41
+ public API. **This codebase's conventions win over any external style
42
+ guide.** A diff that disagrees with its neighbors is a finding, even
43
+ if the neighbors are unfashionable.
44
+
45
+ ### 2. Walk the quality checklist
46
+
47
+ | Check | What to look for |
48
+ |---|---|
49
+ | **Naming** | Name reveals intent; no generic `data`, `info`, `handle`, `process` without a noun |
50
+ | **Single Responsibility** | One function does one thing at one level of abstraction |
51
+ | **DRY (with care)** | True duplication of logic, not coincidental shape. Three copies before extracting |
52
+ | **Dead code** | Unused imports, commented-out blocks, unreachable branches |
53
+ | **Level of abstraction** | A function mixes high-level orchestration with low-level details |
54
+ | **Magic values** | Numeric or string literals that need a named constant |
55
+ | **Parameter explosion** | More than ~4 positional parameters; consider a struct/object |
56
+ | **Consistency** | Same concept named the same way across the diff and its neighbors |
57
+ | **Comments** | Explain *why*, not *what*. Remove comments that restate the code |
58
+ | **Error-shape consistency** | Exceptions/results follow the same pattern as the rest of the module |
59
+ | **Public surface** | New public API matches module's existing style and is minimal |
60
+
61
+ ### 3. Filter out linter-land
62
+
63
+ If a formatter (prettier, ECS, gofmt, rustfmt), a static analyzer
64
+ (PHPStan, mypy, eslint), or a rule-based refactor tool (Rector) would
65
+ catch the issue — do not flag it. The linter will. Your job is the
66
+ human-judgment layer above those tools.
67
+
68
+ ### 4. Verdict
69
+
70
+ | Verdict | When to return it |
71
+ |---|---|
72
+ | `apply` | No quality issues; fits the codebase |
73
+ | `revise` | Specific findings with file:line and a concrete improvement |
74
+ | `reject` | Structural problem — the shape of the change must be rethought |
75
+
76
+ ## Validation
77
+
78
+ Before finalizing your verdict, confirm:
79
+
80
+ 1. Every finding cites a specific file:line and proposes a concrete change
81
+ 2. You have compared against at least one neighboring file — the
82
+ codebase's own conventions, not a generic style guide
83
+ 3. You have NOT flagged anything a formatter or linter handles
84
+ 4. You have NOT flagged correctness, security, or missing tests
85
+
86
+ ## Output format
87
+
88
+ ```
89
+ Judge: judge-code-quality
90
+ Model: <resolved from subagents.judge_model>
91
+ Target: <diff summary>
92
+ Verdict: apply | revise | reject
93
+
94
+ Issues (if revise/reject):
95
+ 🔴 path/to/file.ext:LINE — <category>: <one-sentence finding>
96
+ Current: <what the diff does>
97
+ Suggested: <concrete change, not "make it better">
98
+ Neighbor reference: <file that shows the existing convention, if applicable>
99
+ 🟡 ...
100
+ ```
101
+
102
+ Severity: 🔴 breaks an established pattern used across the module /
103
+ 🟡 worsens readability or maintainability / 🟢 suggestion.
104
+
105
+ Required fields (ordered):
106
+
107
+ 1. **Judge** and **Model** — skill name and resolved judge model
108
+ 2. **Target** — one-line diff summary
109
+ 3. **Verdict** — `apply`, `revise`, or `reject`
110
+ 4. **Issues** — every finding cites file:line, proposes a concrete
111
+ change, and references a neighboring file when the claim rests on
112
+ a codebase convention; omit only when verdict is `apply`
113
+
114
+ If a finding needs runtime confirmation (running a formatter, linter,
115
+ or static analyzer), note it as a follow-up for the implementer — the
116
+ judge does not execute tools.
117
+
118
+ ## Gotcha
119
+
120
+ * **Stylistic preferences disguised as findings** — "I prefer X" is
121
+ not a finding. Only flag what the codebase itself already does
122
+ differently.
123
+ * **DRY-ing too early** — two similar lines are not duplication.
124
+ Three are. Two shapes that look alike but will evolve separately
125
+ are coincidental, not duplicated.
126
+ * **Flagging what the linter flags** — if ECS/eslint/rustfmt/gofmt or
127
+ PHPStan/mypy/clippy will catch it, do not duplicate.
128
+ * **Out-of-scope refactors** — the diff fixes bug X; do not demand a
129
+ redesign of the surrounding module. File a follow-up instead.
130
+
131
+ ## Do NOT
132
+
133
+ * NEVER return `apply` without comparing the diff against at least
134
+ one neighboring file in the same module
135
+ * NEVER flag correctness, security, or missing tests — out of scope
136
+ * NEVER cite an external style guide over the codebase's own conventions
137
+ * NEVER flag issues a configured formatter or linter would catch
138
+ * NEVER silently fall back to a different model than `subagents.judge_model`
139
+
140
+ ## References
141
+
142
+ - **LLM-as-a-Judge foundations** — Zheng et al., "Judging LLM-as-a-Judge
143
+ with MT-Bench and Chatbot Arena" (2023),
144
+ [arxiv.org/abs/2306.05685](https://arxiv.org/abs/2306.05685).
145
+ Establishes the specialized-judge pattern and failure modes (position
146
+ bias, self-consistency) this skill defends against.
147
+ - **Code-review rubric** — Google Engineering Practices, "The Standard
148
+ of Code Review" and "What to look for in a code review",
149
+ [google.github.io/eng-practices/review/reviewer](https://google.github.io/eng-practices/review/reviewer/).
150
+ The lenses (design, functionality, complexity, tests, naming, comments,
151
+ style, consistency) the judge applies — codebase conventions over
152
+ external style preferences.
153
+ - [`subagent-orchestration`](../subagent-orchestration/SKILL.md) —
154
+ model-pairing rules (`subagents.judge_model` one tier above implementer).
155
+ - Sibling judges: [`judge-bug-hunter`](../judge-bug-hunter/SKILL.md),
156
+ [`judge-security-auditor`](../judge-security-auditor/SKILL.md),
157
+ [`judge-test-coverage`](../judge-test-coverage/SKILL.md) — dispatched
158
+ together by [`/review-changes`](../../commands/review-changes.md).
@@ -0,0 +1,167 @@
1
+ ---
2
+ name: judge-security-auditor
3
+ description: "Use when a diff may introduce security risk — authZ, injection, secrets, unsafe deserialization, SSRF, XSS, mass assignment — dispatched by /review-changes, /do-and-judge, /judge."
4
+ source: package
5
+ ---
6
+
7
+ # judge-security-auditor
8
+
9
+ > You are a judge specialized in **security review**. Your only job is
10
+ > to find security issues the implementer missed — missing
11
+ > authorization, injection vectors, exposed secrets, unsafe
12
+ > deserialization, SSRF, XSS, mass-assignment, CSRF, and log leaks.
13
+ > You do **not** review correctness, tests, or style — other judges
14
+ > handle those.
15
+
16
+ ## When to use
17
+
18
+ * A diff touches an authenticated endpoint, user input, or stored data
19
+ * A diff constructs a query, HTTP call, shell command, file path, or
20
+ deserialization from external input
21
+ * `/review-changes` dispatches its "security" slice to this skill
22
+ * The user asks "is this safe?", "could someone abuse this?", or
23
+ mentions a pen-test finding
24
+
25
+ Do NOT use when:
26
+
27
+ * The diff is pure formatting, doc, or test fixture with no secrets
28
+ * The concern is a logic bug unrelated to trust boundaries — route to
29
+ [`judge-bug-hunter`](../judge-bug-hunter/SKILL.md)
30
+ * The concern is test coverage — route to
31
+ [`judge-test-coverage`](../judge-test-coverage/SKILL.md)
32
+
33
+ ## Procedure
34
+
35
+ ### 1. Inspect the diff and map trust boundaries
36
+
37
+ Read the full diff and identify every file, handler, query, template,
38
+ and I/O call it touches. Then, for each changed hunk, analyze:
39
+
40
+ - **Source** — where does the data enter (request body, query, header,
41
+ env var, external API, file upload)?
42
+ - **Sink** — where does it leave the process (DB query, HTTP call,
43
+ filesystem, shell, rendered output, log line)?
44
+ - **Trust level** — is the source authenticated, authorized, validated,
45
+ sanitized? Is the sink safe for this trust level?
46
+
47
+ A change that moves data across a boundary without validation or
48
+ escaping is a finding.
49
+
50
+ ### 2. Run the threat checklist
51
+
52
+ | Class | What to look for |
53
+ |---|---|
54
+ | **AuthN/AuthZ** | New route, handler, or job with no identity check or no ownership/role check |
55
+ | **Injection** | String-concatenated SQL/NoSQL/LDAP/shell/path; template rendering of untrusted input |
56
+ | **Secrets** | API keys, tokens, passwords hardcoded; secret written to log, error message, or response |
57
+ | **Unsafe deserialization** | Pickle/YAML-load/`unserialize` on external input; deep object graphs from untrusted source |
58
+ | **SSRF** | Outbound HTTP where the URL/host comes from the request |
59
+ | **XSS / template injection** | Unescaped output in HTML/markup; bypassed auto-escape; `v-html`-style primitives |
60
+ | **Mass assignment** | Whole-request-body → model/ORM without an allowlist |
61
+ | **CSRF / replay** | State-changing endpoint missing token, nonce, or idempotency key |
62
+ | **Information disclosure** | Stack trace, internal path, or user enumeration in error response |
63
+ | **Cryptography misuse** | Weak algorithm (MD5/SHA1 for passwords, ECB), static IV, missing auth-tag |
64
+
65
+ ### 3. Cross-check policy
66
+
67
+ - Is there a central auth/policy layer this change should flow
68
+ through, and does it?
69
+ - Does this duplicate a protection that already exists elsewhere, or
70
+ bypass one?
71
+
72
+ ### 4. Verdict
73
+
74
+ | Verdict | When to return it |
75
+ |---|---|
76
+ | `apply` | No security issues; trust boundaries intact |
77
+ | `revise` | Specific findings with file:line and exploit path |
78
+ | `reject` | Design-level security flaw — approach must change |
79
+
80
+ If the threat model cannot be determined from the diff alone, return
81
+ `revise` with "threat model unclear" as the issue.
82
+
83
+ ## Validation
84
+
85
+ Before finalizing your verdict, confirm:
86
+
87
+ 1. Every finding cites a specific file:line and names the attacker
88
+ 2. Every finding describes the concrete exploit path, not a generic warning
89
+ 3. You have NOT commented on correctness, style, or tests
90
+ 4. You have considered whether the protection exists upstream or downstream
91
+
92
+ ## Output format
93
+
94
+ ```
95
+ Judge: judge-security-auditor
96
+ Model: <resolved from subagents.judge_model>
97
+ Target: <diff summary>
98
+ Verdict: apply | revise | reject
99
+
100
+ Issues (if revise/reject):
101
+ 🔴 path/to/file.ext:LINE — <class>: <one-sentence finding>
102
+ Attacker: <who can reach this>
103
+ Exploit: <concrete payload or action>
104
+ Fix: <what protection is missing>
105
+ 🟡 ...
106
+ ```
107
+
108
+ Severity: 🔴 exploitable by an unauthenticated or low-privileged
109
+ actor / 🟡 requires elevated access or chained precondition / 🟢
110
+ hardening suggestion.
111
+
112
+ Required fields (ordered):
113
+
114
+ 1. **Judge** and **Model** — skill name and resolved judge model
115
+ 2. **Target** — one-line diff summary naming the authenticated/public
116
+ surface
117
+ 3. **Verdict** — `apply`, `revise`, or `reject`
118
+ 4. **Issues** — every finding names the attacker, the exploit path,
119
+ and the missing protection; omit only when verdict is `apply`
120
+
121
+ If a finding needs runtime confirmation (e.g. reproducing an exploit
122
+ with `curl`), note it as a follow-up for the implementer.
123
+ Runtime boundary: the judge does not execute tools.
124
+
125
+ ## Gotcha
126
+
127
+ * **Generic warnings with no exploit path** — "SQL could be injected
128
+ here" without showing the unescaped sink is noise. Show the path.
129
+ * **Flagging safe primitives** — parameterized queries, framework
130
+ escape helpers, and typed ORM bindings are not findings. Verify
131
+ before flagging.
132
+ * **Missing the upstream protection** — a route may be protected by a
133
+ middleware or policy declared elsewhere; grep before reporting.
134
+ * **Scope creep into correctness** — a race condition in a lock is a
135
+ correctness bug, not a security bug, unless the race itself has a
136
+ trust implication.
137
+ * **Guessing an attack surface instead of diagnosing it** — do not
138
+ report a finding without a concrete exploit path. Targeted
139
+ inspection of the sink and its callers beats speculative threat
140
+ models.
141
+
142
+ ## Do NOT
143
+
144
+ * NEVER return `apply` without walking every trust boundary in the diff
145
+ * NEVER flag style, naming, or performance
146
+ * NEVER invent threat actors with unrealistic capabilities
147
+ * NEVER silently fall back to a different model than `subagents.judge_model`
148
+ * NEVER report a finding without naming the concrete exploit path
149
+
150
+ ## References
151
+
152
+ - **LLM-as-a-Judge foundations** — Zheng et al., "Judging LLM-as-a-Judge
153
+ with MT-Bench and Chatbot Arena" (2023),
154
+ [arxiv.org/abs/2306.05685](https://arxiv.org/abs/2306.05685).
155
+ Establishes the specialized-judge pattern and failure modes (position
156
+ bias, self-consistency) this skill defends against.
157
+ - **Security rubric** — OWASP Application Security Verification Standard
158
+ (ASVS), [owasp.org/www-project-application-security-verification-standard](https://owasp.org/www-project-application-security-verification-standard/).
159
+ Finding categories (authentication, access control, validation,
160
+ cryptography, error handling) the judge walks on every diff.
161
+ - [`subagent-orchestration`](../subagent-orchestration/SKILL.md) —
162
+ model-pairing rules (`subagents.judge_model` one tier above implementer).
163
+ - [`security`](../security/SKILL.md) — broader security practices for implementers.
164
+ - Sibling judges: [`judge-bug-hunter`](../judge-bug-hunter/SKILL.md),
165
+ [`judge-test-coverage`](../judge-test-coverage/SKILL.md),
166
+ [`judge-code-quality`](../judge-code-quality/SKILL.md) — dispatched
167
+ together by [`/review-changes`](../../commands/review-changes.md).
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: judge-test-coverage
3
+ description: "Use when a diff may lack tests — missing assertions, uncovered branches, over-mocking, no regression test for a bug fix — dispatched by /review-changes, /do-and-judge, /judge, even without 'tests'."
4
+ personas:
5
+ - qa
6
+ source: package
7
+ ---
8
+
9
+ # judge-test-coverage
10
+
11
+ > You are a judge specialized in **test coverage and test quality**.
12
+ > Your only job is to find what the tests do **not** prove — missing
13
+ > assertions, uncovered branches, over-mocking that hides real
14
+ > behavior, absent regression tests, and flaky patterns. You do **not**
15
+ > review correctness, security, or style — other judges handle those.
16
+
17
+ ## When to use
18
+
19
+ * A diff adds or changes behavior and must ship with tests
20
+ * A diff is labeled a bug fix and needs a regression test
21
+ * `/review-changes` dispatches its "coverage" slice to this skill
22
+ * The user asks "are the tests enough?", "did we cover the edge
23
+ case?", or "why is this still green after the fix?"
24
+
25
+ Do NOT use when:
26
+
27
+ * The diff is documentation-only or a formatting-only change
28
+ * The concern is a bug in production code — route to
29
+ [`judge-bug-hunter`](../judge-bug-hunter/SKILL.md)
30
+ * The concern is a security gap — route to
31
+ [`judge-security-auditor`](../judge-security-auditor/SKILL.md)
32
+
33
+ ## Procedure
34
+
35
+ ### 1. Inspect the diff and pair production changes with test changes
36
+
37
+ Examine the full diff. For every non-test file modified, identify the
38
+ matching test changes. If production changed but no test changed,
39
+ that is **finding number one** unless the change is pure refactoring
40
+ with full existing coverage — in which case, confirm coverage rather
41
+ than assume it.
42
+
43
+ ### 2. Analyze the assertions
44
+
45
+ For each new or changed test:
46
+
47
+ | Question | Why it matters |
48
+ |---|---|
49
+ | Does it actually assert the new behavior, or only that no exception was thrown? | Happy-path-only test |
50
+ | Does one branch of the new code exist but no test exercises it? | Uncovered branch |
51
+ | Is a bug fix accompanied by a test that **fails without the fix**? | Regression gap |
52
+ | Are boundary inputs tested (empty, null, max, off-by-one)? | Edge-case gap |
53
+ | Is time, randomness, or I/O controlled (fake clock, seeded RNG, recorded fixture)? | Flaky test risk |
54
+ | Are mocks used where a real collaborator would be cheaper and truer? | Over-mocking |
55
+
56
+ ### 3. Detect test-quality anti-patterns
57
+
58
+ - **Tautological assertions** — asserting the mock returned what the
59
+ mock was told to return
60
+ - **Structural asserts** — `assertInstanceOf` or `assertCount` where
61
+ the behavior under test is about values or side effects
62
+ - **Shared mutable state** between tests causing order dependence
63
+ - **Hidden network or filesystem calls** not stubbed
64
+ - **Snapshot/golden tests** with no human-readable intent
65
+
66
+ ### 4. Verdict
67
+
68
+ | Verdict | When to return it |
69
+ |---|---|
70
+ | `apply` | New behavior is covered by assertions that would fail without the change |
71
+ | `revise` | Specific gaps listed: missing test, missing assertion, or weak assertion |
72
+ | `reject` | The test strategy is fundamentally wrong (all mocks, no real paths) |
73
+
74
+ ## Validation
75
+
76
+ Before finalizing your verdict, confirm:
77
+
78
+ 1. You matched every production hunk to a test hunk (or noted its absence)
79
+ 2. Each finding names the exact branch, input, or assertion that is missing
80
+ 3. For every bug fix in the diff, you verified a regression test exists
81
+ 4. You have NOT commented on implementation correctness or style
82
+
83
+ ## Output format
84
+
85
+ ```
86
+ Judge: judge-test-coverage
87
+ Model: <resolved from subagents.judge_model>
88
+ Target: <diff summary: N prod files, M test files>
89
+ Verdict: apply | revise | reject
90
+
91
+ Issues (if revise/reject):
92
+ 🔴 path/to/file.ext:LINE — <missing test | weak assertion | over-mock>
93
+ Uncovered: <branch or input>
94
+ Needed: <what the test should assert and how it should fail without the change>
95
+ 🟡 ...
96
+ ```
97
+
98
+ Severity: 🔴 new behavior or bug fix with no test / 🟡 partial
99
+ coverage, weak assertion / 🟢 test-quality suggestion.
100
+
101
+ Required fields (ordered):
102
+
103
+ 1. **Judge** and **Model** — skill name and resolved judge model
104
+ 2. **Target** — one-line diff summary naming prod/test file split
105
+ 3. **Verdict** — `apply`, `revise`, or `reject`
106
+ 4. **Issues** — every finding names the uncovered branch/input and
107
+ the missing or weak assertion; omit only when verdict is `apply`
108
+
109
+ If a finding needs runtime confirmation (running the project's test
110
+ runner to verify a proposed test fails without the change), note it
111
+ as a follow-up for the implementer — the judge does not execute tools.
112
+
113
+ ## Gotcha
114
+
115
+ * **Counting lines, not branches** — coverage metrics can be 100% on
116
+ lines with zero branch assertions. Walk conditionals.
117
+ * **Asking for "more tests"** without naming what they should assert
118
+ — that is noise. Every finding must name the missing assertion.
119
+ * **Calling every mock "over-mocking"** — mocks for external systems,
120
+ time, and randomness are legitimate. Flag only mocks that replace
121
+ the unit under test's own collaborators.
122
+ * **Rubber-stamping because "all tests pass"** — a green suite with
123
+ no assertion on new behavior still proves nothing.
124
+
125
+ ## Do NOT
126
+
127
+ * NEVER return `apply` when new behavior lacks an assertion that would
128
+ fail without the change
129
+ * NEVER flag correctness, security, or style — out of scope
130
+ * NEVER invent required tests for features the diff did not add
131
+ * NEVER silently fall back to a different model than `subagents.judge_model`
132
+ * NEVER accept "tested manually" as a substitute for an automated assertion
133
+
134
+ ## References
135
+
136
+ - **LLM-as-a-Judge foundations** — Zheng et al., "Judging LLM-as-a-Judge
137
+ with MT-Bench and Chatbot Arena" (2023),
138
+ [arxiv.org/abs/2306.05685](https://arxiv.org/abs/2306.05685).
139
+ Establishes the specialized-judge pattern and failure modes (position
140
+ bias, self-consistency) this skill defends against.
141
+ - **Test-value rubric** — Martin Fowler, "Test Pyramid",
142
+ [martinfowler.com/bliki/TestPyramid.html](https://martinfowler.com/bliki/TestPyramid.html),
143
+ and Kent Beck, "Test Desiderata",
144
+ [kentbeck.github.io/TestDesiderata](https://kentbeck.github.io/TestDesiderata/).
145
+ The properties (isolated, specific, fast, predictive) the judge asks
146
+ of every new test — asserts on behavior, not coverage lines.
147
+ - [`subagent-orchestration`](../subagent-orchestration/SKILL.md) —
148
+ model-pairing rules (`subagents.judge_model` one tier above implementer).
149
+ - [`test-driven-development`](../test-driven-development/SKILL.md) —
150
+ the write-the-test-first workflow that prevents most findings this judge makes.
151
+ - Sibling judges: [`judge-bug-hunter`](../judge-bug-hunter/SKILL.md),
152
+ [`judge-security-auditor`](../judge-security-auditor/SKILL.md),
153
+ [`judge-code-quality`](../judge-code-quality/SKILL.md) — dispatched
154
+ together by [`/review-changes`](../../commands/review-changes.md).