@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,138 @@
1
+ # .agent-project-settings.yml — repo-shared agent settings
2
+ #
3
+ # Committed to the repository (the opposite of `.agent-settings.yml`
4
+ # which is git-ignored and per-developer). This file holds decisions
5
+ # that belong to the **project**, not to an individual's workstation.
6
+ #
7
+ # Precedence (lowest → highest):
8
+ # 1. Package defaults (shipped by event4u/agent-config)
9
+ # 2. This file (.agent-project-settings.yml) — team defaults
10
+ # 3. .agent-settings.yml — developer overrides (gitignored)
11
+ #
12
+ # Any key marked `locked: true` in this file CANNOT be overridden by
13
+ # .agent-settings.yml. Use sparingly — locked keys reduce developer
14
+ # autonomy. Reserve for compliance or correctness concerns (e.g.
15
+ # forcing a test framework, pinning a coding style).
16
+ #
17
+ # Copy this file to `.agent-project-settings.yml` (drop the `.example`)
18
+ # and commit it.
19
+
20
+ schema_version: 1
21
+
22
+ # --- Project identity ---
23
+ project:
24
+ # Short slug used in agent output, prompts, and PR metadata. Keep it
25
+ # identical to the repo name unless there is a reason to differ.
26
+ slug: ""
27
+
28
+ # Human-readable name — used in generated docs and PR bodies.
29
+ name: ""
30
+
31
+ # Primary stack indicator — agent uses this to pick the right skills.
32
+ # Examples: "laravel", "nextjs", "symfony", "node-express", "react",
33
+ # "zend-laminas", "multi" (polyglot monorepo).
34
+ stack: ""
35
+
36
+ # --- Memory layer (optional) ---
37
+ #
38
+ # Opt-in signal for the @event4u/agent-memory companion package and
39
+ # the repo-shared curated-memory files. If omitted, memory features
40
+ # stay inert — no writes, no reads, no nagging.
41
+ memory:
42
+ # Enable curated memory files under `agents/memory/` as part of
43
+ # this repo's dogfooding of its own memory conventions. Only flip
44
+ # to true after you have agreed on the six content types from
45
+ # road-to-engineering-memory.md.
46
+ dogfood: false
47
+
48
+ # Path strategy for curated files. `agents` keeps them alongside
49
+ # roadmaps; `github` puts routing-relevant files under `.github/`.
50
+ # `auto` picks `github` if that directory exists, else `agents`.
51
+ path_strategy: auto
52
+
53
+ # Hygiene reminders — the agent nudges when entries are stale.
54
+ # Expiry is evaluated per type (see road-to-engineering-memory.md).
55
+ hygiene:
56
+ enabled: true
57
+ # Warn when `last_validated` is older than this (days). 0 = off.
58
+ staleness_days: 180
59
+
60
+ # --- Review routing (optional) ---
61
+ #
62
+ # Points the `review-routing` skill at the two project-local YAML
63
+ # files. See guidelines/agent-infra/review-routing-data-format.md
64
+ # for the schema.
65
+ review_routing:
66
+ # Location of ownership-map.yml and historical-bug-patterns.yml.
67
+ # `github` = .github/<file>.yml · `agents` = agents/<file>.yml ·
68
+ # `auto` = first match wins.
69
+ location: auto
70
+
71
+ # --- Role modes (optional) ---
72
+ #
73
+ # Default role loaded for every session in this repo. See
74
+ # guidelines/agent-infra/role-contracts.md for the six modes.
75
+ # Leave empty to fall back to inferred mode switching.
76
+ roles:
77
+ # One of: developer, reviewer, tester, po, incident, planner.
78
+ default: ""
79
+
80
+ # If set, the agent refuses work outside the default contract
81
+ # until the user explicitly switches modes with `/mode <name>`.
82
+ locked: false
83
+
84
+ # --- Personas (optional) ---
85
+ #
86
+ # Personas are reusable review lenses (see .augment/personas/README.md).
87
+ # Skills cite them in frontmatter (`personas: [id]`). This block lets
88
+ # the project decide the default cast used by multi-lens skills without
89
+ # editing each skill. A developer's .agent-settings.yml can override
90
+ # or narrow the selection unless the key is listed under `locked_keys`.
91
+ personas:
92
+ # Core cast always loaded by multi-lens skills when `personas:` is
93
+ # omitted from the skill's frontmatter. Drop an id to remove it from
94
+ # the default cast repo-wide. Known Core ids: developer,
95
+ # senior-engineer, product-owner, stakeholder, critical-challenger,
96
+ # ai-agent.
97
+ default: [developer, senior-engineer, product-owner, stakeholder, critical-challenger, ai-agent]
98
+
99
+ specialists:
100
+ # Specialist personas auto-included on every multi-lens run. `qa`
101
+ # is the v1 specialist; more land in v1.1+ (security, performance).
102
+ # Leave empty to require explicit --personas=+<id> opt-in.
103
+ auto_include: [qa]
104
+
105
+ # --- Quality pipeline (optional) ---
106
+ #
107
+ # Per-language gate tools the `quality-fix` command invokes. Empty
108
+ # list = skip the language. Agent will still auto-detect; these
109
+ # values are advisory.
110
+ quality:
111
+ php:
112
+ # Tools to run in order. Known: phpstan, rector, ecs, pint.
113
+ tools: [phpstan, rector, ecs]
114
+ js:
115
+ # Known: eslint, prettier, tsc, biome.
116
+ tools: [eslint, prettier, tsc]
117
+
118
+ # --- Locked keys (override this file only; never locks .agent-settings.yml) ---
119
+ #
120
+ # List keys from this file whose values cannot be overridden by a
121
+ # developer's .agent-settings.yml. Dot-notation. Example:
122
+ # locked_keys:
123
+ # - project.stack
124
+ # - quality.php.tools
125
+ locked_keys: []
126
+
127
+ # --- Links to curated data (read-only references) ---
128
+ #
129
+ # Paths the agent consults read-only during work. Curated memory
130
+ # files live here when memory.dogfood is true. These paths are for
131
+ # reference only — no enforcement is done from this file.
132
+ references:
133
+ architecture_decisions: agents/memory/architecture-decisions/
134
+ domain_invariants: agents/memory/domain-invariants/
135
+ incident_learnings: agents/memory/incident-learnings/
136
+ product_rules: agents/memory/product-rules/
137
+ ownership_map: "" # auto-resolved by review-routing
138
+ historical_bug_patterns: "" # auto-resolved by review-routing
@@ -0,0 +1,95 @@
1
+ # architecture-decisions.yml — indexed ADRs with path constraints
2
+ #
3
+ # Writer: decision author at ADR time
4
+ # Reader: `feature-plan`, `api-design`, `blast-radius-analyzer`
5
+ # (consulted BEFORE proposing structural changes)
6
+ # Expiry: marked `deprecated` on reversal; NEVER deleted — history
7
+ # is the value. Supersession via `superseded_by`.
8
+ # Location: agents/memory/architecture-decisions/<hash>.yml
9
+ # OR agents/memory/architecture-decisions.yml (single-file)
10
+ #
11
+ # The YAML is an **index**, not the decision doc. Each entry points
12
+ # to a long-form ADR (Markdown, Notion, Confluence — wherever your
13
+ # team writes them) and captures the machine-readable metadata an
14
+ # agent needs: paths constrained, alternatives rejected, trade-offs.
15
+
16
+ version: 1
17
+
18
+ entries:
19
+ - id: 0007-tenant-boundaries
20
+ status: active # active | deprecated | archived
21
+ confidence: high
22
+ source:
23
+ - docs/adr/0007-tenant-boundaries.md
24
+ - https://github.com/example/repo/pull/842
25
+ owner: platform-team
26
+ last_validated: 2026-04-10
27
+ review_after_days: 365
28
+
29
+ # --- decision body ---
30
+ title: Tenant boundaries enforced by global scopes + dedicated DB
31
+ date: 2025-11-18
32
+ context: >
33
+ Multi-tenant SaaS; legal requirement to isolate tenant data at
34
+ rest. Prior approach (column-based scoping) leaked in three
35
+ incidents over six months.
36
+ decision: >
37
+ Adopt per-tenant database connections with a `TenantScope`
38
+ global scope on every tenant-owned Eloquent model. Raw DB
39
+ access is forbidden outside migrations.
40
+ alternatives_rejected:
41
+ - id: column-scoping-only
42
+ reason: Column scoping proven unsafe under complex joins.
43
+ - id: schema-per-tenant
44
+ reason: Operational cost of N schemas exceeded team capacity.
45
+ trade_offs:
46
+ - Higher connection pool usage — mitigated by connection reuse.
47
+ - Slower local dev onboarding — mitigated by seeder changes.
48
+ paths: # globs this ADR constrains
49
+ - app/Models/Tenant*/**
50
+ - config/database.php
51
+ - database/migrations/*_tenant_*.php
52
+ superseded_by: "" # id of replacement ADR
53
+
54
+ - id: 0012-money-representation
55
+ status: active
56
+ confidence: high
57
+ source:
58
+ - docs/adr/0012-money-representation.md
59
+ owner: finance-team
60
+ last_validated: 2026-03-20
61
+ review_after_days: 730
62
+
63
+ title: Money represented as integer cents end-to-end
64
+ date: 2026-01-05
65
+ context: >
66
+ Float precision errors in payment reconciliation caused
67
+ two customer-facing discrepancies.
68
+ decision: >
69
+ All monetary values are integer cents (smallest currency unit).
70
+ Floats appear only inside the formatter boundary, never in
71
+ storage, transport, or business logic.
72
+ alternatives_rejected:
73
+ - id: decimal-type
74
+ reason: DB decimal support uneven across MariaDB / SQLite
75
+ test environments; integer is unambiguous.
76
+ trade_offs:
77
+ - Every new developer must learn the convention — mitigated by
78
+ a dedicated `Money` value object with a strict type.
79
+ paths:
80
+ - app/Models/Invoice*.php
81
+ - app/Models/Payment*.php
82
+ - app/Services/Billing/**
83
+ superseded_by: ""
84
+
85
+ # --- How to add an entry ---
86
+ #
87
+ # 1. Write the ADR as a Markdown doc FIRST. This index is a pointer,
88
+ # not a replacement.
89
+ # 2. Link the ADR doc under `source`. At least one link is mandatory.
90
+ # 3. List `paths` as globs the agent can match. Be generous — it is
91
+ # better to trigger the ADR on too many paths than too few.
92
+ # 4. Fill `alternatives_rejected` even when it feels obvious. The
93
+ # agent's main job here is to stop re-litigating decisions.
94
+ # 5. On reversal: keep the old entry, set `status: deprecated`, add
95
+ # the new entry with `superseded_by` pointing back. History stays.
@@ -0,0 +1,80 @@
1
+ # domain-invariants.yml — non-negotiable rules the system must uphold
2
+ #
3
+ # Writer: senior engineer / architect
4
+ # Reader: `developer-like-execution`, `php-coder`, `laravel` skills
5
+ # (consulted BEFORE writing code in matching paths)
6
+ # Expiry: reviewed at every major version bump
7
+ # Location: agents/memory/domain-invariants/<hash>.yml (content-addressed)
8
+ # OR agents/memory/domain-invariants.yml (single-file mode)
9
+ #
10
+ # See guidelines/agent-infra/role-contracts.md and
11
+ # road-to-engineering-memory.md for the full contract.
12
+
13
+ version: 1
14
+
15
+ # Each entry is an invariant the code MUST uphold. Agents read them
16
+ # before editing matched paths and call them out in their output.
17
+ entries:
18
+ - id: tenant-isolation
19
+ status: active # active | deprecated | archived
20
+ confidence: high # low | medium | high
21
+ source: # at least one reference
22
+ - https://github.com/example/repo/pull/1234
23
+ - adr://0007-tenant-boundaries
24
+ owner: platform-team
25
+ last_validated: 2026-04-01
26
+ review_after_days: 365
27
+
28
+ # --- invariant body ---
29
+ rule: >
30
+ Tenant IDs must never cross-reference. A query in tenant A
31
+ must never return a row belonging to tenant B, regardless of
32
+ join path.
33
+ paths: # glob patterns the rule applies to
34
+ - app/Models/**
35
+ - app/Http/Controllers/Tenant*/**
36
+ - app/Services/Tenant*/**
37
+ enforcement: # how violation is detected
38
+ - test: tests/Feature/TenantIsolationTest.php
39
+ - policy: app/Policies/TenantPolicy.php
40
+ guardrail: >
41
+ Every Eloquent query on tenant-scoped models must go through
42
+ the `TenantScope` global scope. Raw DB::query() calls touching
43
+ tenant tables are forbidden outside migrations.
44
+
45
+ - id: money-as-integer-cents
46
+ status: active
47
+ confidence: high
48
+ source:
49
+ - adr://0012-money-representation
50
+ owner: finance-team
51
+ last_validated: 2026-03-20
52
+ review_after_days: 730
53
+
54
+ rule: >
55
+ All monetary amounts are stored and passed around as integer
56
+ cents (or the smallest unit of the currency). Float / decimal
57
+ representations are forbidden at every layer below the
58
+ formatter.
59
+ paths:
60
+ - app/Models/Invoice*.php
61
+ - app/Models/Payment*.php
62
+ - app/Services/Billing/**
63
+ enforcement:
64
+ - static_analysis: phpstan level 9 on Billing namespace
65
+ - test: tests/Unit/MoneyTest.php
66
+ guardrail: >
67
+ Use the `Money` value object for all monetary values. Never
68
+ cast a float to a model attribute. Formatter is the ONLY
69
+ boundary where floats appear, and only for display.
70
+
71
+ # --- How to add an entry ---
72
+ #
73
+ # 1. Pick a stable `id` (kebab-case, unique within this file).
74
+ # 2. Reference at least one source (PR, ADR, spec link).
75
+ # 3. Pick a confidence honestly — if you are writing this from a
76
+ # hunch rather than evidence, start with `medium`.
77
+ # 4. List concrete `paths` — globs the agent can match against.
78
+ # 5. Describe the `guardrail` as a **mechanism**, not a wish. "Use
79
+ # X", "validate with Y" — not "be careful with Z".
80
+ # 6. Run `task check-memory` before committing.
@@ -0,0 +1,82 @@
1
+ # historical-patterns.yml — recurring bug shapes and near-misses tied
2
+ # to specific files or modules
3
+ #
4
+ # Writer: engineers after incidents, code reviewers, bug-fix command
5
+ # Reader: `judge-bug-hunter`, `review-routing`, `blast-radius-analyzer`
6
+ # (consulted BEFORE editing matched paths)
7
+ # Expiry: reviewed after each incident against the matched module
8
+ # Location: agents/memory/historical-patterns/<hash>.yml (content-addressed)
9
+ # OR agents/memory/historical-patterns.yml (single-file mode)
10
+ #
11
+ # See guidelines/agent-infra/engineering-memory-data-format.md for the
12
+ # full schema.
13
+
14
+ version: 1
15
+
16
+ entries:
17
+ - id: checkout-null-currency
18
+ status: active
19
+ confidence: high
20
+ source:
21
+ - https://github.com/example/repo/issues/8421
22
+ - https://sentry.example.com/events/abc123
23
+ owner: billing-team
24
+ last_validated: 2026-03-15
25
+ review_after_days: 180
26
+
27
+ # --- historical pattern body ---
28
+ symptom: >
29
+ `TypeError: Cannot read property 'code' of null` when a guest
30
+ checkout hits the price formatter without a resolved currency.
31
+ paths:
32
+ - app/Services/Billing/PriceFormatter.php
33
+ - app/Http/Controllers/Billing/Checkout.php
34
+ trigger_conditions:
35
+ - "Anonymous user (no session currency)"
36
+ - "Product priced only in a non-default currency"
37
+ guardrail: >
38
+ Any code reading `$order->currency` must resolve via
39
+ `CurrencyResolver::forOrder($order)`, which falls back to the
40
+ tenant default. Never dereference `$order->currency->code`
41
+ directly.
42
+ regression_test: tests/Feature/Billing/GuestCheckoutTest.php
43
+ first_seen: 2025-11-03
44
+ last_seen: 2026-02-18
45
+ recurrence_count: 4
46
+
47
+ - id: queue-retry-log-noise
48
+ status: active
49
+ confidence: medium
50
+ source:
51
+ - https://github.com/example/repo/pull/9010
52
+ owner: platform-team
53
+ last_validated: 2026-04-10
54
+ review_after_days: 90
55
+
56
+ symptom: >
57
+ Retryable jobs double-log the same exception on every attempt,
58
+ inflating the Sentry error budget and masking real regressions.
59
+ paths:
60
+ - app/Jobs/**
61
+ trigger_conditions:
62
+ - "Job implements ShouldQueue and throws a typed exception"
63
+ - "retries() > 1 and no unique_for key set"
64
+ guardrail: >
65
+ Use `SilentRetry` trait or explicitly set `$this->dontReport = true`
66
+ on the first N-1 retries. Final-attempt failure is the only one
67
+ that calls `report()`.
68
+ regression_test: tests/Feature/Queue/RetryReportingTest.php
69
+ first_seen: 2026-01-20
70
+ last_seen: 2026-04-05
71
+ recurrence_count: 7
72
+
73
+ # --- How to add an entry ---
74
+ #
75
+ # 1. Pick a stable `id` that names the pattern, not the fix.
76
+ # 2. Cite the first bug report and the most recent recurrence.
77
+ # 3. `trigger_conditions` are the minimal inputs that reproduce.
78
+ # 4. `guardrail` is a mechanism, not a wish. "Go through X" — not
79
+ # "be careful with Y".
80
+ # 5. Always link a `regression_test` — the pattern earns its entry
81
+ # only once a test exists that would have caught it.
82
+ # 6. Run `task check-memory` before committing.
@@ -0,0 +1,113 @@
1
+ # incident-learnings.yml — pattern + consequence + guardrail
2
+ #
3
+ # Writer: incident commander after resolution
4
+ # Reader: `Incident` role mode, `bug-investigate`, `bug-analyzer`
5
+ # Expiry: archived when the underlying class is structurally
6
+ # eliminated (guardrail landed AND verified in prod)
7
+ # Location: agents/memory/incident-learnings/<hash>.yml
8
+ # OR agents/memory/incident-learnings.yml (single-file)
9
+ #
10
+ # REDACTION IS MANDATORY — see road-to-engineering-memory.md.
11
+ # Every entry is a PATTERN + CONSEQUENCE + GUARDRAIL.
12
+ # Every entry that contains a customer name, internal URL, PII, or
13
+ # secret is rejected by `scripts/check_memory.py`. No opt-out.
14
+ #
15
+ # BAD entry (auto-rejected):
16
+ # "On 2026-03-14 customer ACME hit a rate limit and Redis died."
17
+ # GOOD entry:
18
+ # "When rate limit X is crossed on path Y, queue worker Z starves
19
+ # the primary DB pool. Guardrail: circuit-break at 80% of X."
20
+
21
+ version: 1
22
+
23
+ entries:
24
+ - id: queue-worker-db-pool-starvation
25
+ status: active # active | deprecated | archived
26
+ confidence: high
27
+ source:
28
+ - https://github.com/example/repo/pull/2104 # guardrail PR
29
+ - https://github.com/example/repo/issues/2098 # incident ticket
30
+ owner: platform-team
31
+ last_validated: 2026-04-15
32
+ review_after_days: 180
33
+ severity: high # low | medium | high | critical
34
+
35
+ # --- pattern ---
36
+ pattern: >
37
+ When sustained throughput on queue `invoices` exceeds the
38
+ configured rate limit on path `/api/invoices/*`, the queue
39
+ worker retries saturate the primary DB connection pool and
40
+ starve synchronous requests.
41
+ trigger_conditions:
42
+ - sustained_rps_gt: 150
43
+ - path_prefix: /api/invoices/
44
+ - worker_queue: invoices
45
+
46
+ # --- consequence (no customer specifics) ---
47
+ consequence: >
48
+ Synchronous requests on unrelated endpoints fail with 500 and
49
+ connection-timeout errors. User-facing latency spikes to ≥ 3s
50
+ p99 within 60 seconds.
51
+
52
+ # --- guardrail (mechanism, not wish) ---
53
+ guardrail: >
54
+ Circuit-break the queue worker at 80% of the rate limit.
55
+ Emit a sustained-latency alert on the `invoices` queue.
56
+ Connection pool sized to (worker_count × 2 + sync_workers).
57
+ enforcement:
58
+ - test: tests/Feature/QueueBackpressureTest.php
59
+ - alert: grafana/alerts/invoices-queue-latency.yml
60
+ - config: config/horizon.php — balance=simple, max_processes=...
61
+
62
+ paths:
63
+ - app/Jobs/ProcessInvoice.php
64
+ - app/Http/Controllers/Api/InvoiceController.php
65
+ - config/horizon.php
66
+
67
+ - id: webhook-signature-verify-timing
68
+ status: active
69
+ confidence: medium
70
+ source:
71
+ - https://github.com/example/repo/pull/1876
72
+ owner: integrations-team
73
+ last_validated: 2026-02-28
74
+ review_after_days: 90
75
+ severity: medium
76
+
77
+ pattern: >
78
+ Webhook signature verification that concatenates body parts
79
+ before hashing is vulnerable to timing-based side channels
80
+ on high-volume endpoints when response latency leaks.
81
+ trigger_conditions:
82
+ - endpoint_type: webhook
83
+ - verify_pattern: string-concat-then-hash
84
+
85
+ consequence: >
86
+ Attackers with sustained probe access can infer signature
87
+ prefix bytes from response-time deltas at the millisecond
88
+ granularity over minutes to hours.
89
+
90
+ guardrail: >
91
+ Always use `hash_equals()` for signature comparison. Compute
92
+ the full HMAC on the raw request body, never on a
93
+ concatenated view. Pad response time to the worst-case branch.
94
+ enforcement:
95
+ - test: tests/Security/WebhookVerifyTest.php
96
+ - static_analysis: phpstan rule forbids `===` on webhook sigs
97
+ paths:
98
+ - app/Http/Middleware/VerifyWebhookSignature.php
99
+ - app/Services/Webhook/**
100
+
101
+ # --- How to add an entry ---
102
+ #
103
+ # 1. Wait until the incident is RESOLVED. Draft entries from open
104
+ # incidents leak half-baked hypotheses.
105
+ # 2. Distil to pattern + consequence + guardrail. If the entry reads
106
+ # like a post-mortem summary, it is too specific.
107
+ # 3. Scrub — no customer names, no ticket IDs from the incident, no
108
+ # internal URLs, no timestamps with identifying precision. The
109
+ # check rejects these; do not fight it.
110
+ # 4. Link the guardrail PR as a source — an entry without a
111
+ # guardrail is not a learning, it is a confession.
112
+ # 5. Set `review_after_days` aggressively (90–180). Entries that
113
+ # outlive their guardrail are more dangerous than missing.
@@ -0,0 +1,75 @@
1
+ # ownership.yml — who owns what in the codebase
2
+ #
3
+ # Writer: tech lead / team maintainer
4
+ # Reader: `review-routing`, `requesting-code-review`, blast-radius
5
+ # analysis (consulted to pick reviewers and CODEOWNERS hints)
6
+ # Expiry: reviewed quarterly or after team reorganizations
7
+ # Location: agents/memory/ownership/<hash>.yml (content-addressed)
8
+ # OR agents/memory/ownership.yml (single-file mode)
9
+ #
10
+ # See guidelines/agent-infra/review-routing-data-format.md for the
11
+ # sibling review-router schema; this file is the authoritative source
12
+ # for WHO, not HOW.
13
+
14
+ version: 1
15
+
16
+ entries:
17
+ - id: billing-module
18
+ status: active
19
+ confidence: high
20
+ source:
21
+ - https://github.com/example/repo/blob/main/CODEOWNERS
22
+ - adr://0003-team-boundaries
23
+ owner: billing-team
24
+ last_validated: 2026-04-01
25
+ review_after_days: 180
26
+
27
+ # --- ownership body ---
28
+ paths:
29
+ - app/Services/Billing/**
30
+ - app/Http/Controllers/Billing/**
31
+ - app/Models/{Invoice,Payment,Subscription}*.php
32
+ primary_reviewer: "@alice-lead"
33
+ secondary_reviewers:
34
+ - "@bob-senior"
35
+ - "@carol-eng"
36
+ escalation: "@head-of-platform"
37
+ slack_channel: "#team-billing"
38
+ rotation_policy: >
39
+ Any PR touching `app/Services/Billing/**` must have at least one
40
+ review from `@alice-lead` or `@bob-senior`. Vacation coverage
41
+ documented in the team runbook.
42
+
43
+ - id: infra-terraform
44
+ status: active
45
+ confidence: high
46
+ source:
47
+ - https://github.com/example/repo/blob/main/CODEOWNERS
48
+ owner: platform-team
49
+ last_validated: 2026-03-10
50
+ review_after_days: 365
51
+
52
+ paths:
53
+ - terraform/**
54
+ - .github/workflows/deploy*.yml
55
+ - docker-compose*.yml
56
+ primary_reviewer: "@dan-infra"
57
+ secondary_reviewers:
58
+ - "@erin-sre"
59
+ escalation: "@head-of-platform"
60
+ slack_channel: "#team-platform"
61
+ rotation_policy: >
62
+ Infra changes require two platform-team reviews in business
63
+ hours. After-hours hotfixes follow the break-glass policy in
64
+ `agents/contexts/deployment-order.md`.
65
+
66
+ # --- How to add an entry ---
67
+ #
68
+ # 1. `id` is the module/domain name, not a person's handle.
69
+ # 2. `paths` are globs the agent uses to pick reviewers for an
70
+ # incoming diff. Keep them tight — avoid `app/**` catch-alls.
71
+ # 3. `primary_reviewer` is singular; `secondary_reviewers` is the
72
+ # fallback pool.
73
+ # 4. `escalation` routes urgent cross-cutting issues; the agent
74
+ # surfaces it when a PR sits idle past the team's SLA.
75
+ # 5. Run `task check-memory` before committing.
@@ -0,0 +1,87 @@
1
+ # product-rules.yml — product-side invariants code must honour
2
+ #
3
+ # Writer: PO or tech lead after product decision
4
+ # Reader: `PO` role mode, `validate-feature-fit`, `laravel-validation`
5
+ # (consulted BEFORE proposing feature changes)
6
+ # Expiry: version-stamped; old versions archived on rule change
7
+ # Location: agents/memory/product-rules/<hash>.yml
8
+ # OR agents/memory/product-rules.yml (single-file)
9
+ #
10
+ # Bridges PO intent and developer execution. An entry here exists
11
+ # because the agent MUST enforce this rule in validation, gating,
12
+ # or feature-fit checks — it is not a feature wishlist.
13
+ #
14
+ # REDACTION IS MANDATORY — see road-to-engineering-memory.md.
15
+ # No customer names, no pricing-with-customer-discount, no PII.
16
+
17
+ version: 1
18
+
19
+ entries:
20
+ - id: free-plan-no-export
21
+ status: active # active | deprecated | archived
22
+ confidence: high
23
+ source:
24
+ - https://example.com/product/pricing-tiers # public doc
25
+ - https://github.com/example/repo/pull/1503 # enforcement PR
26
+ owner: product-team
27
+ last_validated: 2026-04-05
28
+ review_after_days: 180
29
+ version: "2.0"
30
+
31
+ # --- rule body ---
32
+ rule: >
33
+ Users on the `free` plan cannot trigger data exports (CSV,
34
+ JSON, XLSX) exceeding 100 rows. Exports above the threshold
35
+ are reserved for `pro` and `enterprise` plans.
36
+ applies_to:
37
+ endpoints:
38
+ - POST /api/exports
39
+ - GET /api/exports/{id}/download
40
+ plan_tiers: [free]
41
+ enforcement:
42
+ - policy: app/Policies/ExportPolicy.php
43
+ - feature_gate: "plan_tiers in FeatureGate service"
44
+ - test: tests/Feature/FreePlanExportLimitTest.php
45
+ error_contract:
46
+ http_status: 403
47
+ error_code: EXPORT_PLAN_LIMIT
48
+ user_message: Upgrade to export more than 100 rows.
49
+
50
+ - id: weekend-sla-tier-b
51
+ status: active
52
+ confidence: medium
53
+ source:
54
+ - https://example.com/legal/sla.pdf # public SLA doc
55
+ - adr://0019-sla-tier-mapping
56
+ owner: customer-success-team
57
+ last_validated: 2026-03-12
58
+ review_after_days: 90
59
+ version: "1.3"
60
+
61
+ rule: >
62
+ Support tickets opened between 18:00 Friday and 08:00 Monday
63
+ in the customer's timezone fall under SLA tier B response
64
+ time (4h first response) instead of tier A (1h).
65
+ applies_to:
66
+ systems: [support-queue, sla-calculator]
67
+ timezone_scope: customer-local
68
+ enforcement:
69
+ - service: app/Services/SLA/ResponseTimeCalculator.php
70
+ - test: tests/Unit/SlaWeekendTest.php
71
+ - config: config/sla.yml
72
+ error_contract: {} # no user-facing error; SLA
73
+ # is applied silently
74
+
75
+ # --- How to add an entry ---
76
+ #
77
+ # 1. A product decision was made AND signed off. Pending proposals
78
+ # do not belong here.
79
+ # 2. The rule is enforceable — every entry must name at least one
80
+ # enforcement point (policy, feature gate, test, service).
81
+ # 3. Bump `version` whenever the rule semantics change. Old
82
+ # versions get `status: archived` and stay for audit.
83
+ # 4. Link both the PRODUCT-side doc (pricing page, SLA PDF, landing
84
+ # page) AND the code-side enforcement PR.
85
+ # 5. Keep `error_contract` precise — agents generate error messages
86
+ # from it. An empty contract (`{}`) means "no user error", not
87
+ # "to be decided later".