@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,186 @@
1
+ ---
2
+ name: override-management
3
+ description: "Creates and manages project-level overrides for shared skills, rules, and commands — extending or replacing originals from .augment/ with project-specific behavior in agents/overrides/."
4
+ source: package
5
+ execution:
6
+ type: assisted
7
+ handler: internal
8
+ allowed_tools: []
9
+ ---
10
+
11
+ # Override Skill
12
+
13
+ ## When to use
14
+
15
+ Use when creating or managing project-level overrides for shared skills, rules, commands, or guidelines — customizing `.augment/` content without modifying originals.
16
+
17
+ Do NOT use when:
18
+ - Changing shared content that should affect all projects (edit `.agent-src.uncompressed/` directly)
19
+ - Creating new skills from scratch (use `skill-writing` skill)
20
+
21
+ ## Purpose
22
+
23
+ The `.augment/` directory is delivered as a **Composer package** and is **read-only** at project level.
24
+ It contains shared skills, rules, commands, guidelines, and templates that work across all projects.
25
+
26
+ The `agents/overrides/` directory is **project-specific** and lives in the project's own repository.
27
+ It customizes shared behavior for a particular codebase **without modifying the originals**.
28
+
29
+ **Critical rule:** Never edit files in `.augment/` to fix a project-specific need.
30
+ Changes to `.augment/` affect ALL projects. Use overrides instead.
31
+
32
+ ## Procedure: Create an override
33
+
34
+ Before creating, understand the original:
35
+
36
+ 1. **Read the original** from `.augment/{type}/{name}` — understand purpose and behavior
37
+ 2. **Check existing overrides** in `agents/overrides/{type}/` — avoid duplicates
38
+ 3. **Identify what needs changing** — only override specific behavior that differs
39
+
40
+ When loading any skill, rule, or command:
41
+
42
+ 1. **Load the original** from `.augment/{type}/{name}`
43
+ 2. **Check for override** in `agents/overrides/{type}/{name}`
44
+ 3. **If override exists**, read its `Mode` header:
45
+ - **`extend`** — Apply the original first, then layer the override on top (additive)
46
+ - **`replace`** — Ignore the original entirely, use only the override
47
+
48
+ ## Directory Structure
49
+
50
+ ```
51
+ agents/overrides/
52
+ ├── rules/ ← Override .augment/rules/*.md
53
+ │ └── .gitkeep
54
+ ├── skills/ ← Override .augment/skills/*/SKILL.md
55
+ │ └── .gitkeep
56
+ ├── commands/ ← Override .augment/commands/*.md
57
+ │ └── .gitkeep
58
+ ├── guidelines/ ← Override .augment/guidelines/**/*.md
59
+ │ └── .gitkeep
60
+ └── templates/ ← Override .augment/templates/*.md
61
+ └── .gitkeep
62
+ ```
63
+
64
+ ## File Naming Convention
65
+
66
+ Override files **must match the original filename** exactly:
67
+
68
+ | Original | Override |
69
+ |---|---|
70
+ | `.augment/rules/php-coding.md` | `agents/overrides/rules/php-coding.md` |
71
+ | `.augment/skills/eloquent/SKILL.md` | `agents/overrides/skills/eloquent.md` |
72
+ | `.augment/commands/feature-plan.md` | `agents/overrides/commands/feature-plan.md` |
73
+ | `.augment/guidelines/php/controllers.md` | `agents/overrides/guidelines/php-controllers.md` |
74
+ | `.augment/templates/roadmaps.md` | `agents/overrides/templates/roadmaps.md` |
75
+
76
+ **Skills** are flattened: the original lives in a directory (`skills/{name}/SKILL.md`),
77
+ but the override is a single file (`skills/{name}.md`).
78
+
79
+ **Guidelines** are flattened with a prefix: `guidelines/php/controllers.md` → `guidelines/php-controllers.md`.
80
+
81
+ **Templates** keep their original filename: `templates/roadmaps.md` → `templates/roadmaps.md`.
82
+
83
+ ## Override File Format
84
+
85
+ Every override file **must** have this header:
86
+
87
+ ```markdown
88
+ # Override: {Type} — {name}
89
+
90
+ > Override for `.augment/{path-to-original}`
91
+
92
+ ---
93
+ **Mode:** `extend`
94
+ **Original:** `.augment/{path-to-original}`
95
+ ---
96
+ ```
97
+
98
+ ### Mode: extend
99
+
100
+ - The original is loaded first
101
+ - The override adds, modifies, or removes specific parts
102
+ - Reference original sections by heading name
103
+ - Only write what changes — everything else stays as-is
104
+
105
+ ### Mode: replace
106
+
107
+ - The original is completely ignored
108
+ - The override is the sole source of truth
109
+ - Must be self-contained and complete
110
+
111
+ ## When to Create Overrides
112
+
113
+ | Situation | Action |
114
+ |---|---|
115
+ | Shared skill doesn't match project conventions | **extend** — add project-specific rules |
116
+ | Shared command needs extra steps for this project | **extend** — inject additional steps |
117
+ | Shared rule is too strict/lenient for this project | **extend** — adjust specific rules |
118
+ | Shared guideline misses project-specific patterns | **extend** — add examples or sections |
119
+ | Shared template needs extra fields for this project | **extend** — add project-specific fields |
120
+ | Shared skill is completely wrong for this project | **replace** — write from scratch |
121
+ | Project needs behavior not in any shared skill | Create a new skill in `.augment/skills/` instead |
122
+
123
+ ## When NOT to Create Overrides
124
+
125
+ - **Don't override to fix bugs in the shared package** — fix the original in the `.augment/` package repo instead
126
+ - **Don't override for temporary changes** — use branch-specific notes instead
127
+ - **Don't create empty overrides** — only create when there's actual content
128
+ - **Don't duplicate the original** — `extend` mode should only contain the delta
129
+
130
+ ## Checking for Overrides (Agent Behavior)
131
+
132
+ Before executing any skill, rule, or command, agents **must**:
133
+
134
+ 1. Note the original path (e.g., `.augment/skills/eloquent/SKILL.md`)
135
+ 2. Check if `agents/overrides/skills/eloquent.md` exists
136
+ 3. If it exists, read the `Mode` header
137
+ 4. Apply accordingly:
138
+ - `extend` → Load original, then apply override additions/changes
139
+ - `replace` → Skip original, use override only
140
+
141
+ ## Templates
142
+
143
+ Override templates are in `.augment/templates/overrides/`:
144
+
145
+ | Template | For |
146
+ |---|---|
147
+ | `rule.md` | Overriding a rule |
148
+ | `skill.md` | Overriding a skill |
149
+ | `command.md` | Overriding a command |
150
+ | `guideline.md` | Overriding a guideline |
151
+ | `template.md` | Overriding a template |
152
+
153
+ ## Related
154
+
155
+ - **Commands:** `/override-create`, `/override-manage`
156
+ - **Skill:** `agent-docs-writing` (documentation hierarchy)
157
+ - **Templates:** `.augment/templates/overrides/`
158
+
159
+ ### Validate
160
+
161
+ - Verify the override file exists at the correct path in `agents/overrides/`.
162
+ - Confirm the override actually takes effect (test the behavior it modifies).
163
+ - Check that the original in `.augment/` is not modified.
164
+
165
+ ## Output format
166
+
167
+ 1. Override file in agents/overrides/ matching the original's structure
168
+ 2. Summary of what was overridden and why
169
+
170
+ ## Gotcha
171
+
172
+ - Overrides are invisible to other projects — only the current project sees them.
173
+ - Replace mode discards the original entirely — use extend mode unless you need a full rewrite.
174
+ - If the override stops working after a package update, the original's structure likely changed.
175
+
176
+ ## Do NOT
177
+
178
+ - Do NOT create overrides for things that should be changed in the original.
179
+ - Do NOT use replace mode when extend mode is sufficient.
180
+
181
+ ## Auto-trigger keywords
182
+
183
+ - override
184
+ - project override
185
+ - extend skill
186
+ - replace skill
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: performance
3
+ description: "Use when optimizing application performance — caching strategies, eager loading, query optimization, Redis patterns, or background job design."
4
+ source: package
5
+ ---
6
+
7
+ # performance
8
+
9
+ ## When to use
10
+
11
+ Use when optimizing slow endpoints, designing caching, or improving query performance.
12
+
13
+ Do NOT use when:
14
+ - Database schema design (use `database` skill)
15
+ - Queue job creation (use `jobs-events` skill)
16
+
17
+ ## Procedure: Optimize performance
18
+
19
+ ### Step 0: Identify the bottleneck
20
+
21
+ 1. Don't optimize prematurely — measure first.
22
+ 2. Use `DB::enableQueryLog()` or Telescope to find slow queries.
23
+ 3. Check for N+1 queries on list endpoints.
24
+ 4. Search for existing cache services in the project.
25
+
26
+ ### Step 1: Apply the right fix
27
+
28
+ | Bottleneck | Fix |
29
+ |---|---|
30
+ | N+1 queries | Eager loading with `with()` |
31
+ | Slow queries | Add indexes, optimize (see `database` skill) |
32
+ | Repeated expensive queries | Cache with TTL |
33
+ | Blocking API calls | Queue as background job |
34
+ | Large datasets | Paginate, chunk, cursor |
35
+ | Missing counts | `withCount()` instead of loading relations |
36
+
37
+ ### Step 2: Verify
38
+
39
+ Re-measure after fix. Check that cache invalidation works correctly.
40
+
41
+ ## Conventions
42
+
43
+ → See guideline `php/performance.md` for caching patterns, Redis, response time targets.
44
+
45
+ ## Output format
46
+
47
+ 1. Optimized code with before/after performance comparison
48
+ 2. Caching strategy or query optimization applied
49
+
50
+ ## Gotcha
51
+
52
+ - Cache invalidation bugs are worse than slow queries — don't add caching everywhere.
53
+ - Eager loading N+1 is the #1 win — always check list endpoints.
54
+ - Don't cache Eloquent collections with loaded relations — too large.
55
+ - Always include tenant ID in cache keys (multi-tenant).
56
+
57
+ ## Do NOT
58
+
59
+ - Do NOT cache without tenant isolation in multi-tenant contexts.
60
+ - Do NOT use `get()` or `all()` on large tables — paginate or chunk.
61
+ - Do NOT add indexes blindly — analyze query patterns first.
62
+
63
+ ## Auto-trigger keywords
64
+
65
+ - performance
66
+ - caching
67
+ - eager loading
68
+ - query optimization
69
+ - Redis
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: performance-analysis
3
+ description: "ONLY when user explicitly requests: performance audit, bottleneck analysis, or N+1 query detection. NOT for regular feature work."
4
+ source: package
5
+ ---
6
+
7
+ # performance-analysis
8
+
9
+ ## Mission
10
+
11
+ Find performance bottlenecks before they affect users. This skill is **proactive** — it
12
+ analyzes code for performance issues, not just responds to "it's slow" reports.
13
+
14
+ For writing performant code patterns (caching, eager loading, Redis), use the `performance` skill.
15
+ For test suite performance, use `test-performance`.
16
+
17
+ ## When to use
18
+
19
+ Use this skill when:
20
+
21
+ - Auditing a codebase or flow for performance bottlenecks
22
+ - `analysis-autonomous-mode` routes here after detecting slow patterns
23
+ - Reviewing code that handles large datasets, loops, or external calls
24
+ - Investigating why a specific endpoint or job is slow
25
+
26
+ Do NOT use when:
27
+
28
+ - Writing new caching/optimization code → use `performance`
29
+ - Optimizing test suite speed → use `test-performance`
30
+ - Hunting for functional bugs → use `bug-analyzer` (proactive mode)
31
+
32
+ ## Procedure: Performance analysis
33
+
34
+ ### 1. Identify hotspots
35
+
36
+ Focus on code paths with high execution frequency or large data volumes:
37
+
38
+ - API endpoints called frequently (list endpoints, dashboards)
39
+ - Queue jobs processing batches
40
+ - Scheduled commands running on large datasets
41
+ - Import/export operations
42
+ - Report generation
43
+
44
+ ### 2. Database query analysis
45
+
46
+ | Pattern | What to look for |
47
+ |---|---|
48
+ | **N+1 queries** | `->load()` or relationship access in loops, missing `->with()` |
49
+ | **Missing indexes** | `WHERE` clauses on unindexed columns, slow `ORDER BY` |
50
+ | **Full table scans** | `SELECT *` without `WHERE`, `LIKE '%term%'` |
51
+ | **Unnecessary queries** | Same query executed multiple times in one request |
52
+ | **Large result sets** | Loading thousands of models when only counts or IDs are needed |
53
+ | **Missing pagination** | `->get()` on unbounded queries |
54
+ | **Suboptimal joins** | Multiple queries that should be a single JOIN |
55
+ | **Transaction scope** | Transactions holding locks longer than necessary |
56
+
57
+ ### 3. Application-level bottlenecks
58
+
59
+ | Pattern | What to look for |
60
+ |---|---|
61
+ | **Synchronous I/O** | HTTP calls, file operations, or API calls in the request cycle |
62
+ | **Memory bloat** | Loading entire collections when chunking would work |
63
+ | **Redundant computation** | Same calculation repeated without caching |
64
+ | **Missing cache** | Data that rarely changes but is queried on every request |
65
+ | **Stale cache** | Cache that is never invalidated or has wrong TTL |
66
+ | **Serialization overhead** | Large models serialized to JSON unnecessarily |
67
+ | **Loop inefficiency** | O(n²) patterns with nested loops or repeated array searches |
68
+
69
+ ### 4. Queue and job analysis
70
+
71
+ - Jobs that should be batched but run individually
72
+ - Missing `chunk()` for large dataset processing
73
+ - Retry storms from failing jobs without backoff
74
+ - Jobs that hold database connections too long
75
+ - Missing `WithoutOverlapping` for idempotency-critical jobs
76
+
77
+ ### 5. Infrastructure-level checks
78
+
79
+ - Missing Redis for session/cache (using file/database driver)
80
+ - Missing CDN for static assets
81
+ - Missing response caching for read-heavy endpoints
82
+ - Database connection pooling and limits
83
+ - Queue worker concurrency vs database connection limits
84
+
85
+ ## Output format
86
+
87
+ For each bottleneck:
88
+
89
+ - **Issue:** concise title
90
+ - **Location:** file, line, or endpoint
91
+ - **Severity:** Low / Medium / High / Critical
92
+ - **Impact:** estimated effect (e.g., "adds ~500ms per request", "causes N+1 on 100+ records")
93
+ - **Evidence:** code reference, query pattern, or measurement
94
+ - **Fix:** concrete optimization
95
+ - **Effort:** Low / Medium / High
96
+ - **Confidence:** Low / Medium / High
97
+
98
+ ## Integration with other skills
99
+
100
+ - **analysis-autonomous-mode** — routes here when performance concerns are detected
101
+ - **performance** — complementary: performance is about writing fast code, this is about finding slow code
102
+ - **test-performance** — for test suite speed specifically
103
+ - **bug-analyzer** — some performance issues are actually bugs (N+1, infinite loops)
104
+ - **database** — for deep DB optimization guidance
105
+
106
+ ## Gotcha
107
+
108
+ - Don't present raw numbers without context — "200ms" means nothing without knowing the baseline.
109
+ - The model tends to focus on code-level optimization when the bottleneck is a database query.
110
+ - Profiling in development differs from production — different data volumes, different query plans.
111
+
112
+ ## Do NOT
113
+
114
+ - Do NOT micro-optimize code that runs infrequently or on small datasets
115
+ - Do NOT recommend caching without considering invalidation
116
+ - Do NOT assume bottlenecks — measure or trace the actual code path
117
+ - Do NOT confuse code style preferences with performance issues
118
+ - Do NOT recommend infrastructure changes when code fixes would suffice
@@ -0,0 +1,321 @@
1
+ ---
2
+ name: pest-testing
3
+ description: "Use when writing, generating, or improving Pest tests for Laravel — clear intent, good coverage, maintainable structure, and alignment with project testing conventions."
4
+ source: package
5
+ ---
6
+
7
+ # pest-testing
8
+
9
+ ## When to use
10
+
11
+ Use this skill for all Laravel testing tasks, especially when working with:
12
+
13
+ - Feature tests
14
+ - Unit tests
15
+ - API endpoint tests
16
+ - Model tests
17
+ - Service tests
18
+ - Authorization tests
19
+ - Validation tests
20
+ - Database interaction tests
21
+ - Factories, fakes, mocks, and test setup
22
+
23
+ This skill extends `php-coder`, `laravel`, and `eloquent`.
24
+
25
+ ## Procedure: Write Pest tests
26
+
27
+ 1. **Read the base skills first** — apply `php-coder`, `laravel`, and `eloquent` where relevant.
28
+ 2. **Check the project's test framework** — confirm Pest is used and inspect existing tests.
29
+ 3. **Match the current test style** — naming, helpers, datasets, expectations, setup, traits, and folder structure.
30
+ 4. **Check available factories and seeders** — reuse existing test data patterns.
31
+ 5. **Understand the behavior under test** — inspect controllers, services, requests, policies, jobs, and models before writing tests.
32
+ 6. **Prefer existing helpers** — authentication helpers, custom assertions, base test classes, and shared setup.
33
+
34
+ ## Core testing principles
35
+
36
+ - Test behavior, not implementation details.
37
+ - Prefer clear, intention-revealing tests over overly clever abstractions.
38
+ - One test should verify one meaningful behavior.
39
+ - Keep setup minimal and relevant.
40
+ - Favor confidence and maintainability over excessive mocking.
41
+ - Cover happy path, validation failures, authorization failures, and important edge cases.
42
+
43
+ ## TDD workflow (Red-Green-Refactor)
44
+
45
+ For bug fixes and new features, prefer test-driven development:
46
+
47
+ 1. **RED** — Write a failing test that describes the expected behavior.
48
+ 2. **Verify RED** — Run the test, confirm it fails for the expected reason (missing feature,
49
+ not a typo or syntax error). If the test passes immediately, it tests existing behavior — fix it.
50
+ 3. **GREEN** — Write the **minimal** code to make the test pass. No extras, no "while I'm here".
51
+ 4. **Verify GREEN** — Run all tests, confirm the new test passes and nothing else broke.
52
+ 5. **REFACTOR** — Clean up code while keeping tests green.
53
+
54
+ ### Why test-first matters
55
+
56
+ Tests written **after** implementation pass immediately. Passing immediately proves nothing:
57
+ - The test might test the wrong thing.
58
+ - The test might test implementation, not behavior.
59
+ - You never saw it catch the bug — so you don't know if it would.
60
+
61
+ ### Bug fix TDD
62
+
63
+ For every bug fix: write a failing test that reproduces the bug FIRST, then fix it.
64
+ The test proves the fix works AND prevents regression.
65
+
66
+ ### TDD rationalization prevention
67
+
68
+ | Excuse | Reality |
69
+ |---|---|
70
+ | "Too simple to test" | Simple code breaks. Test takes 30 seconds. |
71
+ | "I'll test after" | Tests passing immediately prove nothing. |
72
+ | "Manual test is faster" | Manual doesn't prevent regression. You'll re-test every change. |
73
+ | "Test is hard to write" | Hard to test = hard to use. Simplify the design. |
74
+ | "Need to explore first" | Fine — throw away exploration code, start fresh with TDD. |
75
+ | "Existing code has no tests" | You're improving it. Add tests for what you touch. |
76
+
77
+ ## Laravel testing rules
78
+
79
+ - Use **Feature tests** for HTTP endpoints, request validation, middleware behavior, authorization, and end-to-end application flow.
80
+ - Use **Unit tests** for isolated services or pure logic when true isolation adds value.
81
+ - Prefer Feature tests over Unit tests when framework integration is part of the behavior.
82
+ - Use `RefreshDatabase` or the project's standard database reset strategy where appropriate.
83
+ - Reuse factories instead of manually creating large fixture arrays.
84
+
85
+ ## Pest style rules
86
+
87
+ - Write descriptive test names in plain language.
88
+ - Use `it()` / `test()` according to existing project conventions.
89
+ - Group related tests logically.
90
+ - Use datasets when they improve readability and reduce duplication.
91
+ - Keep each test focused and concise.
92
+
93
+ ## Pest-specific PHP rules
94
+
95
+ - Do NOT use `readonly` or `final` on Pest test classes.
96
+ - Do NOT mark classes `final` if they need to be mocked via `Mockery::mock()`.
97
+ - Pest test files (without a `namespace` declaration) treat all PHP built-in classes as global.
98
+ Do **NOT** add `use` statements for global classes like `DateTimeImmutable`, `Exception`,
99
+ `stdClass`, etc. — PHP will warn: *"The use statement with non-compound name has no effect"*.
100
+ - Only `use` statements for **namespaced** classes (e.g., `use App\Models\...`) are needed.
101
+
102
+ ## Avoiding flaky tests
103
+
104
+ - **Time-dependent tests:** Use `$this->travel(5)->seconds()` (Laravel's time travel) to create
105
+ a clear gap between "before" and "after" timestamps. Never rely on `now()` being different
106
+ between two lines of code — on fast hardware, they can be identical.
107
+ - **Database-dependent tests:** Don't assume column values are `null` just because the seeder
108
+ doesn't set them — previous tests in parallel may have modified the same record.
109
+ - **Parallel testing:** The project may use parallel testing (8+ processes). Avoid relying on
110
+ global state, specific row counts, or auto-increment IDs.
111
+
112
+ ## HTTP and API tests
113
+
114
+ - Test:
115
+ - status codes
116
+ - response structure
117
+ - validation errors
118
+ - authorization behavior
119
+ - persistence side effects
120
+ - For JSON APIs, assert:
121
+ - exact relevant fields
122
+ - error structure when applicable
123
+ - database state after the request
124
+ - Do not only assert `200` — verify meaningful behavior.
125
+
126
+ ## Validation tests
127
+
128
+ - Validate important request rules explicitly.
129
+ - Cover required fields, invalid formats, boundary values, and business-critical constraints.
130
+ - Prefer focused validation tests over giant "all fields invalid" tests unless the project already uses that pattern.
131
+
132
+ ## Authorization tests
133
+
134
+ - Always test protected actions for:
135
+ - guest users
136
+ - unauthorized users
137
+ - authorized users
138
+ - Match the project's auth setup and policy usage.
139
+ - Do not assume authorization works just because a policy exists.
140
+
141
+ ## Database assertions
142
+
143
+ - Assert persistence effects with:
144
+ - `assertDatabaseHas`
145
+ - `assertDatabaseMissing`
146
+ - relation checks where relevant
147
+ - Keep assertions focused on meaningful fields.
148
+ - Do not assert every column unless necessary.
149
+
150
+ ## Snapshot testing with `coduo/php-matcher`
151
+
152
+ This project uses [`coduo/php-matcher`](https://github.com/coduo/php-matcher) for flexible snapshot assertions.
153
+ Pattern files live in `snapshots/` directories next to the test files.
154
+
155
+ ### Pattern variables
156
+
157
+ Use pattern variables instead of hardcoded values in snapshot files.
158
+ This makes snapshots resilient to data changes while still enforcing type correctness.
159
+
160
+ | Pattern | Matches | Example |
161
+ |---|---|---|
162
+ | `@boolean@` | `true` or `false` | `'is_active' => '@boolean@'` |
163
+ | `@integer@` | Any integer | `'id' => '@integer@'` |
164
+ | `@string@` | Any string | `'name' => '@string@'` |
165
+ | `@null@` | `null` | `'deleted_at' => '@null@'` |
166
+ | `@datetime@` | ISO datetime string | `'created_at' => '@datetime@'` |
167
+ | `@uuid@` | UUID string | `'uuid' => '@uuid@'` |
168
+ | `@array@` | Any array | `'items' => '@array@'` |
169
+ | `@double@` | Any float | `'amount' => '@double@'` |
170
+ | `@wildcard@` | Anything | `'data' => '@wildcard@'` |
171
+
172
+ Combine with `||` for nullable fields: `'deleted_at' => '@null@||@datetime@'`
173
+
174
+ ### Rules
175
+
176
+ - **Never hardcode dynamic values** (IDs, timestamps, UUIDs) in snapshots — use pattern variables or `$replacements`.
177
+ - **Never hardcode boolean defaults** (e.g., `false`) when other booleans in the same file use `@boolean@` — be consistent.
178
+ - Use `$variable ?? '@pattern@'` syntax to allow test-specific overrides via `replacements` parameter.
179
+ - Use `PhpMatcherHelper::ruleBackedEnum(EnumClass::class, 'string')` for enum fields.
180
+
181
+ ### Example snapshot file
182
+
183
+ ```php
184
+ // snapshots/user-resource.php
185
+ return [
186
+ 'id' => $id ?? '@integer@',
187
+ 'name' => $name ?? '@string@',
188
+ 'email' => $email ?? '@string@',
189
+ 'is_active' => $is_active ?? '@boolean@',
190
+ 'created_at' => $created_at ?? '@datetime@',
191
+ 'deleted_at' => $deleted_at ?? '@null@||@datetime@',
192
+ ];
193
+ ```
194
+
195
+ ### Example test usage
196
+
197
+ ```php
198
+ expect($response->json())
199
+ ->toMatchPhpPatternFile(
200
+ patternFile: __DIR__ . '/snapshots/user-resource.php',
201
+ replacements: ['id' => $user->getId()],
202
+ );
203
+ ```
204
+
205
+ ## Fakes, mocks, and external boundaries
206
+
207
+ - Use Laravel fakes for framework integrations when appropriate:
208
+ - `Queue::fake()`
209
+ - `Bus::fake()`
210
+ - `Event::fake()`
211
+ - `Mail::fake()`
212
+ - `Notification::fake()`
213
+ - `Storage::fake()`
214
+ - Mock only true external boundaries or expensive dependencies.
215
+ - Avoid mocking internal application code unless isolation is necessary for the specific test.
216
+
217
+ ## Factories and fixtures
218
+
219
+ - Prefer factories with explicit state over large inline setup.
220
+ - Use named states for meaningful scenarios.
221
+ - Keep test data realistic and minimal.
222
+ - Do not create unnecessary records.
223
+
224
+ ## Test quality analysis
225
+
226
+ When reviewing or auditing existing tests, check for these anti-patterns:
227
+
228
+ ### Test smells to detect
229
+
230
+ | Smell | Description | Fix |
231
+ |---|---|---|
232
+ | **Overmocking** | Too many mocks disconnect the test from reality | Replace mocks with real implementations or fakes |
233
+ | **Fragile tests** | Tests break with unrelated changes (e.g., asserting exact JSON structure) | Assert only meaningful fields |
234
+ | **Flaky tests** | Non-deterministic results (time, ordering, parallel state) | Use time travel, explicit ordering, isolated data |
235
+ | **Giant tests** | One test covers 5+ behaviors | Split into focused tests |
236
+ | **Missing assertions** | Test runs code but doesn't verify outcomes | Add meaningful assertions |
237
+ | **Test duplication** | Same scenario tested in multiple places | Consolidate or use datasets |
238
+ | **Assertion roulette** | Many assertions without clear failure messages | Use named assertions or split tests |
239
+ | **Eager test** | Tests too many things, making failures hard to diagnose | One behavior per test |
240
+
241
+ ### FIRST principles
242
+
243
+ - **Fast** — Tests should run quickly. Avoid unnecessary DB operations.
244
+ - **Isolated** — Tests should not depend on each other or shared state.
245
+ - **Repeatable** — Same result every time, regardless of environment or order.
246
+ - **Self-validating** — Pass or fail, no manual inspection needed.
247
+ - **Timely** — Written close to the code they test.
248
+
249
+ ### Mock usage guidelines
250
+
251
+ - Mock **external boundaries** (APIs, file systems, third-party services).
252
+ - Use Laravel fakes (`Queue::fake()`, `Http::fake()`) over manual mocks.
253
+ - Do NOT mock the class under test.
254
+ - Do NOT mock value objects or DTOs.
255
+ - If a test needs 3+ mocks, consider testing at a higher level (Feature test).
256
+
257
+ ## What NOT to do
258
+
259
+ - Do not test private methods directly.
260
+ - Do not over-mock Laravel internals.
261
+ - Do not assert implementation details when behavior assertions are enough.
262
+ - Do not write brittle tests tied to formatting or irrelevant response noise.
263
+ - Do not create giant tests that cover many behaviors at once.
264
+ - Do not skip authorization or validation coverage for important endpoints.
265
+
266
+ ## Output expectations
267
+
268
+ When generating Pest tests:
269
+
270
+ - follow the existing folder and naming conventions
271
+ - test behavior clearly and directly
272
+ - cover success, failure, and authorization paths
273
+ - use factories and Laravel test helpers
274
+ - assert both response and side effects where relevant
275
+ - keep tests readable, isolated, and maintainable
276
+
277
+
278
+ ## Output format
279
+
280
+ 1. Pest test file with descriptive test names and clear assertions
281
+ 2. Tests organized by happy path, validation, edge cases
282
+
283
+ ## Gotcha
284
+
285
+ - Don't use `readonly` or `final` on Pest test helper classes — it breaks mocking.
286
+ - Don't add `use` statements for global classes (`Exception`, `DateTimeImmutable`) in Pest files — they're auto-imported.
287
+ - The model forgets `$this->travel(5)->seconds()` for time-dependent tests — never rely on `now()` differing between lines.
288
+ - Parallel tests share the database — don't assume column values are null unless you explicitly set them.
289
+
290
+ ## Do NOT
291
+
292
+ - Do NOT mark classes final if they need to be mocked via Mockery.
293
+ - Do NOT use PHPUnit class-based syntax — use Pest syntax.
294
+
295
+ ## What to test (generation checklist)
296
+
297
+ When generating new tests, focus on:
298
+ - **Business logic**: calculations, status transitions, validation rules, data transformations
299
+ - **Edge cases**: null, empty string, zero, negative numbers, boundary values, max length
300
+ - **Error paths**: invalid input, missing dependencies, exception handling
301
+ - **Different code branches**: if/else, early returns, fallback behavior
302
+
303
+ What NOT to test:
304
+ - Trivial getters/setters without logic
305
+ - Parameter counts, method existence, class names
306
+ - Framework internals (Eloquent, routing)
307
+ - Private methods directly — test through public API
308
+
309
+ **Quality over quantity** — 5 meaningful tests beat 20 trivial ones.
310
+
311
+ ## Auto-trigger keywords
312
+
313
+ - Pest test
314
+ - PHPUnit
315
+ - test writing
316
+ - test quality
317
+ - TDD
318
+ - generate tests
319
+ - write tests
320
+ - test coverage
321
+ - test scenarios