@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,121 @@
1
+ # Memory Access
2
+
3
+ How a skill or command reads engineering memory without caring whether
4
+ the optional `agent-memory` companion package is installed.
5
+
6
+ Single entry point: the shared `retrieve(types, keys, limit)`
7
+ abstraction backed by `scripts/memory_lookup.py` (file fallback) or the
8
+ package adapter (when present). The status helper
9
+ `scripts/memory_status.py` decides which path to take and caches the
10
+ result for the session.
11
+
12
+ Referenced by
13
+ [`road-to-agent-memory-integration.md`](../../../agents/roadmaps/road-to-agent-memory-integration.md)
14
+ Phase 0. The retrieval contract itself lives in
15
+ [`agent-memory/road-to-retrieval-contract.md`](../../../agents/roadmaps/agent-memory/road-to-retrieval-contract.md).
16
+
17
+ ## The contract
18
+
19
+ ```python
20
+ from scripts.memory_status import status
21
+ from scripts.memory_lookup import retrieve as retrieve_file
22
+
23
+ hits = retrieve_file(
24
+ types=["ownership", "historical-patterns"],
25
+ keys=["app/Http/Controllers/Billing/Checkout.php"],
26
+ limit=3,
27
+ )
28
+ ```
29
+
30
+ Every backend MUST return a list of `Hit` with:
31
+
32
+ | Field | Meaning |
33
+ |---|---|
34
+ | `id` | Stable identifier |
35
+ | `type` | One of the curated types (`ownership`, `historical-patterns`, `domain-invariants`, `architecture-decisions`, `incident-learnings`, `product-rules`) |
36
+ | `source` | `"curated"` or `"intake"` |
37
+ | `path` | File or logical source that produced the hit |
38
+ | `score` | Float in `[0..1]`; higher is better |
39
+ | `entry` | Full decoded entry — skills read what they need |
40
+
41
+ Skills treat `source: "curated"` as higher-trust and `source: "intake"`
42
+ as provisional (best-effort, agent-written, not human-reviewed).
43
+
44
+ ## The detection helper
45
+
46
+ ```python
47
+ from scripts.memory_status import status
48
+ r = status() # cached; returns in 0ms on hit
49
+ if r.status == "present":
50
+ ... # route through agent-memory
51
+ elif r.status == "misconfigured":
52
+ # surface a warning once per session, then fall back
53
+ ...
54
+ else:
55
+ ... # r.status == "absent" — file fallback, always works
56
+ ```
57
+
58
+ Contract guarantees:
59
+
60
+ - **Bounded** — cold probe capped at `_HEALTH_TIMEOUT_SECONDS` (2s).
61
+ - **Cached** — subsequent calls in the same process return 0ms.
62
+ - **Never raises on probe failure** — degrades to `absent` or
63
+ `misconfigured`. Bugs in the helper itself still propagate so they
64
+ get fixed.
65
+ - **Stable** — the four fields (`status`, `backend`, `reason`,
66
+ `elapsed_ms`) never change shape between releases.
67
+
68
+ ## How skills should use it
69
+
70
+ 1. **Don't inline the branch.** Skills call the abstraction, not
71
+ `memory_status.status()` directly, unless they need the human-
72
+ readable reason (e.g., `review-routing` surfacing "backend
73
+ misconfigured" on the PR report).
74
+ 2. **Cap the load.** Respect `memory.retrieval.max_entries_per_task`
75
+ from `.agent-project-settings`. Over-retrieval pollutes the context
76
+ window without improving answers.
77
+ 3. **Log the source in the reply.** A reviewer skill citing memory
78
+ should say "per `ownership:team-payments` (curated) at
79
+ `agents/memory/ownership.yml:42`" — the reader verifies cheaply.
80
+ 4. **Treat intake as low-confidence.** Only promote intake findings
81
+ into the final reply when the user can act on them; otherwise keep
82
+ them as internal context.
83
+
84
+ ## Access policy per role mode
85
+
86
+ Echoes `memory.retrieval.auto_load_shared_types` in
87
+ `.agent-project-settings`:
88
+
89
+ | Role mode | Auto-loaded types |
90
+ |---|---|
91
+ | Developer | `domain-invariants`, `ownership` |
92
+ | Reviewer | `ownership`, `historical-patterns`, `incident-learnings` |
93
+ | Tester | `historical-patterns`, `incident-learnings` |
94
+ | PO / planner | `product-rules`, `architecture-decisions` |
95
+ | Incident | `incident-learnings`, `ownership` |
96
+
97
+ Other types remain accessible on demand via
98
+ `/memory-full <type>` (not a skill choice).
99
+
100
+ ## Anti-patterns
101
+
102
+ - **Do NOT** read `agents/memory/**` directly with ad-hoc globbing.
103
+ Skills lose the supersede-chain semantics and the `merge=union`
104
+ guarantees. Always go through `retrieve()`.
105
+ - **Do NOT** cache hits across sessions. Curated files change; the
106
+ session cache in `status()` is specifically *only* for the detection
107
+ probe, not for entries.
108
+ - **Do NOT** silently ignore `misconfigured`. Surface a one-liner once
109
+ per session so the user knows the package is installed but degraded.
110
+ - **Do NOT** fall back to intake JSONL when the curated file *exists
111
+ but is empty*. That is a valid "no entries" answer, not a fallback
112
+ signal.
113
+
114
+ ## See also
115
+
116
+ - [`engineering-memory-data-format.md`](engineering-memory-data-format.md)
117
+ — the on-disk schema
118
+ - [`../../rules/context-hygiene.md`](../../rules/context-hygiene.md)
119
+ — token budget that `max_entries_per_task` protects
120
+ - [`../../../agents/roadmaps/road-to-memory-merge-safety.md`](../../../agents/roadmaps/road-to-memory-merge-safety.md)
121
+ — why intake is append-only JSONL with `merge=union`
@@ -0,0 +1,69 @@
1
+ ---
2
+ description: "Naming conventions for skills, rules, commands, and guidelines"
3
+ source: package
4
+ ---
5
+
6
+ # Naming Conventions
7
+
8
+ ## Principles
9
+
10
+ 1. **Name = purpose.** Reading the name tells you what it does.
11
+ 2. **No collisions across layers.** A rule and skill must NOT share the same name.
12
+ 3. **Consistent prefixes** for related items: `project-analysis-*`, `laravel-*`, `feature-*`.
13
+ 4. **Consistent suffixes** for similar roles: `-management`, `-integration`, `-config`.
14
+ 5. **No bare nouns** — `jira` says nothing, `jira-integration` says everything.
15
+
16
+ ## Naming patterns by layer
17
+
18
+ ### Skills
19
+
20
+ | Pattern | When | Examples |
21
+ |---|---|---|
22
+ | `{domain}-{activity}` | Activity/workflow skills | `code-refactoring`, `sql-writing`, `pest-testing` |
23
+ | `{domain}-{role}` | Domain-specific expertise | `php-coder`, `fe-design`, `api-design` |
24
+ | `{domain}-{management}` | CRUD/lifecycle management | `module-management`, `override-management` |
25
+ | `{domain}-{integration}` | External tool integration | `jira-integration`, `sentry-integration` |
26
+ | `{domain}-{config}` | Configuration/setup | `copilot-config`, `devcontainer` |
27
+ | `{framework}-{feature}` | Framework-specific | `laravel-validation`, `laravel-mail` |
28
+ | `{scope}-analysis-{variant}` | Analysis skills | `project-analysis-laravel`, `performance-analysis` |
29
+ | `{action}-{target}` | Action commands as skills | `bug-analyzer`, `skill-reviewer` |
30
+
31
+ ### Rules
32
+
33
+ | Pattern | When | Examples |
34
+ |---|---|---|
35
+ | `{concern}` | Behavioral constraint | `scope-control`, `ask-when-uncertain` |
36
+ | `{domain}-{concern}` | Domain-specific rule | `php-coding`, `e2e-testing` |
37
+ | `{action}-{target}` | Trigger-based auto rule | `capture-learnings`, `downstream-changes` |
38
+
39
+ ### Commands
40
+
41
+ | Pattern | When | Examples |
42
+ |---|---|---|
43
+ | `{verb}-{target}` | Action commands | `create-pr`, `fix-ci`, `commit` |
44
+ | `{target}-{verb}` | Target-first grouping | `roadmap-create`, `roadmap-execute` |
45
+ | `{scope}-{action}` | Scoped actions | `optimize-agents`, `review-changes` |
46
+
47
+ ### Guidelines
48
+
49
+ | Pattern | When | Examples |
50
+ |---|---|---|
51
+ | `{language}/{topic}.md` | Language-specific | `php/general.md`, `php/naming.md` |
52
+ | `{domain}/{topic}.md` | Domain-specific | `agent-infra/naming.md`, `e2e/locators.md` |
53
+
54
+ ## Anti-patterns
55
+
56
+ | Don't | Why | Do instead |
57
+ |---|---|---|
58
+ | Single bare noun (`jira`, `sql`) | Ambiguous — could be anything | `jira-integration`, `sql-writing` |
59
+ | Same name across layers | Routing confusion | `agent-docs` (rule) + `agent-docs-writing` (skill) |
60
+ | `-er` suffix for skills | Skills are not agents | `-ing` or `-management` |
61
+ | `{dir}/{dir}.md` for guidelines | Redundant | `php/general.md` not `php/php.md` |
62
+ | Abbreviations alone (`rtk`, `mcp`) | Meaningless to new users | `rtk-output-filtering`, `mcp` (OK if well-known) |
63
+ | Inconsistent prefix grouping | Hard to discover related items | All Laravel skills start with `laravel-*` |
64
+
65
+ ## Linter enforcement
66
+
67
+ The skill linter (`scripts/skill_linter.py`) warns on:
68
+ - **Bare-noun names** — single word without qualifier (e.g., `jira` instead of `jira-integration`)
69
+ - **Layer collisions** — same name used for both a rule and a skill
@@ -0,0 +1,117 @@
1
+ # Output Patterns
2
+
3
+ Reference patterns for token-efficient command execution and output handling.
4
+ Referenced by the `token-efficiency` rule.
5
+
6
+ ## Pattern: Redirect, Summarize, Target
7
+
8
+ Every command that MAY produce more than ~30 lines of output:
9
+
10
+ ### Step 1: Redirect to file
11
+
12
+ ```bash
13
+ docker compose exec -T <service> <command> 2>&1 > /tmp/<tool>-output.txt
14
+ echo "EXIT=$?"
15
+ ```
16
+
17
+ ### Step 2: Read ONLY the summary
18
+
19
+ ```bash
20
+ tail -5 /tmp/<tool>-output.txt
21
+ ```
22
+
23
+ ### Step 3: If errors exist, read ONLY what you need to fix
24
+
25
+ ```bash
26
+ # Read specific error lines
27
+ grep "ERROR\|error\|✏️" /tmp/<tool>-output.txt | head -20
28
+
29
+ # Read a specific file's errors
30
+ grep "app/Services/MyService.php" /tmp/<tool>-output.txt
31
+ ```
32
+
33
+ **NEVER** do:
34
+
35
+ - `cat /tmp/<tool>-output.txt` (loads everything)
36
+ - Read the full output of a passing command (waste)
37
+ - Read diffs you don't plan to act on
38
+
39
+ ---
40
+
41
+ ## Targeted Operations
42
+
43
+ Minimize scope. Never fetch more than you need.
44
+
45
+ ### Queries and lookups
46
+
47
+ - **Single item over list**: query directly, don't fetch list to find one entry.
48
+ - **Filtered queries**: always filter when listing unavoidable. `--filter=ClassName` not `--all`.
49
+ - **Specific fields**: request only needed fields.
50
+ - **JSON + jq**: use JSON output + `jq` to extract exactly what you need.
51
+
52
+ ### Testing
53
+
54
+ - **During work**: ONLY the specific test affected (`--filter=ClassName`).
55
+ - **Broader scope**: only if change could affect other tests.
56
+ - **Full suite**: only at the very end.
57
+ - **Decision tree**:
58
+ 1. Changed one method → run that method's test
59
+ 2. Changed a class → run that class's test file
60
+ 3. Changed a shared service → run tests for all consumers
61
+ 4. Changed config/infrastructure → full suite
62
+
63
+ ### API calls
64
+
65
+ - Targeted endpoints over list endpoints
66
+ - Small page sizes, stop after finding what you need
67
+ - Don't re-fetch what you just received
68
+
69
+ ---
70
+
71
+ ## Tool-First, Script-Last
72
+
73
+ **Prefer skills with CLI tools over custom scripts.**
74
+
75
+ ### Hierarchy
76
+
77
+ 1. **Existing skill** — use directly
78
+ 2. **Skill + CLI tool** (jq, grep, awk, sed) — compose
79
+ 3. **Python/Bash script** — only when no skill/tool combination exists
80
+
81
+ ### Scripts allowed only when
82
+
83
+ - No skill covers the workflow
84
+ - No CLI tool achieves the goal
85
+ - Operation needs programmatic logic
86
+ - Script is reusable
87
+
88
+ ### Scripts NOT allowed when
89
+
90
+ - Skill exists for this workflow
91
+ - `jq` can extract what you need
92
+ - `grep` + `head` can filter output
93
+
94
+ ### Learning trigger
95
+
96
+ When you write a script because no skill exists → capture learning → propose skill.
97
+
98
+ ---
99
+
100
+ ## General Rules
101
+
102
+ For tool-specific commands → see the `quality-tools` skill.
103
+
104
+ 1. **ECS and Rector are trusted tools** — run with `--fix`, don't read diffs. Trust the config.
105
+ Verification: PHPStan + tests afterwards.
106
+
107
+ 2. **Both ECS and Rector always run with `--fix`** — dry-run diffs waste tokens.
108
+
109
+ 3. **Exit code first**: Check `$?` before reading ANY output. If 0, you're done.
110
+
111
+ 4. **Summary line**: Most tools print a summary as the last few lines. That's all you need.
112
+
113
+ 5. **Targeted grep**: `grep` for the specific file or error type. Never read full output "just in case".
114
+
115
+ 6. **Don't re-read**: Once read and acted on, don't re-load into context.
116
+
117
+ 7. **Iterative fixing**: Fix one error, re-run, check exit code. Output becomes stale after each fix.
@@ -0,0 +1,144 @@
1
+ # Review Routing Data Format
2
+
3
+ Schema and conventions for the two project-local YAML files that feed the
4
+ [`review-routing-awareness`](../../rules/review-routing-awareness.md) rule
5
+ and the [`review-routing`](../../skills/review-routing/SKILL.md) skill.
6
+
7
+ Both files are **optional** and live in the consumer repository — never
8
+ in package-shipped artifacts. Absence is handled gracefully: routing
9
+ falls back to generic role-based reviewer suggestions.
10
+
11
+ ## File locations
12
+
13
+ Primary (checked first):
14
+
15
+ - `.github/ownership-map.yml`
16
+ - `.github/historical-bug-patterns.yml`
17
+
18
+ Fallback (checked if the `.github/` file does not exist):
19
+
20
+ - `agents/ownership-map.yml`
21
+ - `agents/historical-bug-patterns.yml`
22
+
23
+ Choose one location per project and stick with it. Having both is not an
24
+ error, but tools read only the first match.
25
+
26
+ ## ownership-map.yml
27
+
28
+ Maps glob patterns → roles + optional focus + optional risk hint.
29
+
30
+ ```yaml
31
+ # Required: the version field — breaks loudly if future schema changes.
32
+ version: 1
33
+
34
+ # Optional: last-reviewed timestamp. If > 6 months old, routing
35
+ # flags the map as stale in its report.
36
+ updated: 2026-02-01
37
+
38
+ # Optional: defaults applied when no entry matches. If omitted,
39
+ # unmatched paths fall through to reviewer-awareness defaults.
40
+ defaults:
41
+ roles: [backend]
42
+
43
+ # Required: list of entries, first match wins per file.
44
+ entries:
45
+ - paths:
46
+ - "app/Billing/**"
47
+ - "app/Services/Payment*.php"
48
+ roles: [finance-engineering, security]
49
+ focus: "tax calculation + idempotency"
50
+ risk: "monetary correctness — regressions bill real customers"
51
+
52
+ - paths:
53
+ - "**/Tenant*.php"
54
+ - "app/Http/Middleware/TenantScope.php"
55
+ roles: [platform, security]
56
+ focus: "cross-tenant isolation"
57
+ risk: "data leak across customers"
58
+
59
+ - paths:
60
+ - "resources/views/**"
61
+ - "**/*.blade.php"
62
+ roles: [frontend]
63
+ focus: "a11y + responsive layout"
64
+ ```
65
+
66
+ Field semantics:
67
+
68
+ - **paths** (required, list) — fnmatch globs, same syntax as
69
+ `pr-risk-config.yml`. First match wins; later entries are ignored for
70
+ that path.
71
+ - **roles** (required, list) — role identifiers from the common
72
+ vocabulary in [`reviewer-awareness`](../../rules/reviewer-awareness.md)
73
+ or project-custom roles.
74
+ - **focus** (optional, string) — one-line description of what reviewers
75
+ should look at. Surfaced in the PR comment verbatim.
76
+ - **risk** (optional, string) — one-line description of what goes wrong
77
+ when this area breaks. Used by routing to annotate high-risk matches.
78
+
79
+ ## historical-bug-patterns.yml
80
+
81
+ Registry of recurring failure modes. Each pattern names a class of bug
82
+ the project has paid for before, with the minimum control or test
83
+ expected for similar new work.
84
+
85
+ ```yaml
86
+ version: 1
87
+ updated: 2026-02-01
88
+
89
+ patterns:
90
+ - id: n-plus-one-tenant-listing
91
+ label: "N+1 on tenant-scoped listings"
92
+ severity: medium
93
+ paths:
94
+ - "app/Http/Controllers/**Listing*.php"
95
+ - "app/Services/**Query*.php"
96
+ required_test: "assert query count ≤ N for a multi-row fixture"
97
+ references:
98
+ - "PR #842 — production slowdown 2024-09"
99
+
100
+ - id: missing-policy-on-admin-route
101
+ label: "Admin-only route without Gate::allows"
102
+ severity: high
103
+ paths:
104
+ - "app/Http/Controllers/Admin/**"
105
+ - "routes/admin.php"
106
+ required_test: "negative test: non-admin gets 403"
107
+
108
+ - id: queue-job-not-idempotent
109
+ label: "Queue job without idempotency key"
110
+ severity: high
111
+ paths:
112
+ - "app/Jobs/**"
113
+ required_test: "asserting a retried job does not double-write"
114
+ ```
115
+
116
+ Field semantics:
117
+
118
+ - **id** (required, unique string) — stable slug; used in PR comments
119
+ and tests as a label.
120
+ - **label** (required, string) — human-readable name.
121
+ - **severity** (required, `low` | `medium` | `high`) — matched patterns
122
+ contribute this severity to overall PR routing.
123
+ - **paths** (required, list) — fnmatch globs. A pattern matches the
124
+ diff when **any** changed file matches any glob.
125
+ - **required_test** (required, string) — the specific assertion or
126
+ regression test the pattern demands. Feeds
127
+ [`verify-before-complete`](../../rules/verify-before-complete.md) and
128
+ [`judge-test-coverage`](../../skills/judge-test-coverage/SKILL.md).
129
+ - **references** (optional, list) — links to prior PRs, incidents, or
130
+ postmortems. Agents quote these verbatim when warning about a match.
131
+
132
+ ## Maintenance
133
+
134
+ - Both files are code. Review changes to them like code — PR + review.
135
+ - Stale is worse than absent. Update the `updated` field or delete the
136
+ file when ownership or patterns have drifted.
137
+ - Never auto-generate entries from agent sessions. Entries are curated,
138
+ not inferred.
139
+
140
+ ## See also
141
+
142
+ - [`review-routing-awareness`](../../rules/review-routing-awareness.md)
143
+ - [`reviewer-awareness`](../../rules/reviewer-awareness.md)
144
+ - [`review-routing`](../../skills/review-routing/SKILL.md)
@@ -0,0 +1,211 @@
1
+ # Role Contracts
2
+
3
+ Six named working modes with a fixed output contract per mode. Loading
4
+ a role frame stabilizes smaller models: they stop inventing a frame per
5
+ task and produce reproducible outputs on the same input.
6
+
7
+ Referenced by `road-to-role-modes.md` Phase 1. Each contract is a
8
+ *skeleton*, not a form — fields without evidence become questions via
9
+ `ask-when-uncertain`, never fabrications.
10
+
11
+ ## The six modes
12
+
13
+ | Mode | Entry signal | Default skills | Output contract |
14
+ |---|---|---|---|
15
+ | **Developer** | "implement X", `/jira-ticket`, `/bug-fix` | `php-coder`, `laravel`, `test-driven-development`, `quality-tools` | Goal / Plan / Changes / Tests / Open questions |
16
+ | **Reviewer** | `/review-changes`, `/judge`, PR open on branch | `judge-bug-hunter`, `judge-code-quality`, `judge-security-auditor`, `judge-test-coverage` | Summary / Risks / Findings / Required actions / Verdict |
17
+ | **Tester** | "add tests", "why does X fail", test output in context | `pest-testing`, `api-testing`, `e2e-plan`, `test-performance` | Behaviour under test / Edge cases / Negative paths / Reproduction / Coverage gaps |
18
+ | **PO** | "I want a feature", `/feature-explore`, `/feature-plan` | `validate-feature-fit`, `api-design`, `threat-modeling` | Goal / Assumptions / Acceptance criteria / Impacted modules / Risks / Open questions for stakeholder |
19
+ | **Incident** | "production is down", `break-glass: true`, hotfix branch | `bug-investigate`, `systematic-debugging`, `authz-review` | Symptom / Reproduction / Minimal reversible change / Deferred verification / Follow-up commitment / Incident learning |
20
+ | **Planner** | "what's the strategy", `/feature-roadmap`, multi-step work with unclear order | `feature-plan`, `feature-roadmap`, `blast-radius-analyzer` | Goal / Constraints / Option set / Recommendation / Dependencies / Rollback |
21
+
22
+ ## Contract skeletons
23
+
24
+ ### Developer
25
+
26
+ ```
27
+ **Goal:** <what the user asked for, one sentence>
28
+ **Plan:** <ordered steps, ≤5>
29
+ **Changes:** <files touched, one line each>
30
+ **Tests:** <added/updated tests + how to run>
31
+ **Open questions:** <unresolved items, none if blank>
32
+ ```
33
+
34
+ ### Reviewer
35
+
36
+ ```
37
+ **Summary:** <one-paragraph overview of the diff>
38
+ **Risks:** <ranked list: high/medium/low>
39
+ **Findings:** <file:line → issue → fix suggestion>
40
+ **Required actions:** <numbered list the author must address>
41
+ **Verdict:** approve | request changes | block
42
+ ```
43
+
44
+ ### Tester
45
+
46
+ ```
47
+ **Behaviour under test:** <the invariant, one sentence>
48
+ **Edge cases:** <boundary + error paths covered>
49
+ **Negative paths:** <expected failures, error types>
50
+ **Reproduction:** <how to run a single failing case>
51
+ **Coverage gaps:** <what stayed untested and why>
52
+ ```
53
+
54
+ ### PO
55
+
56
+ ```
57
+ **Goal:** <user-facing outcome>
58
+ **Assumptions:** <each marked `verify with: {name}` if unconfirmed>
59
+ **Acceptance criteria:** <testable, numbered>
60
+ **Impacted modules:** <paths, not speculation>
61
+ **Risks:** <business + technical>
62
+ **Open questions for stakeholder:** <blocking decisions only>
63
+ ```
64
+
65
+ ### Incident
66
+
67
+ ```
68
+ **Symptom:** <what users see, not the hypothesis>
69
+ **Reproduction:** <minimal steps or "not reproduced">
70
+ **Minimal reversible change:** <the smallest fix>
71
+ **Deferred verification:** <what was skipped under break-glass>
72
+ **Follow-up commitment:** <PR/ticket for full verification, due date>
73
+ **Incident learning:** <intake signal id, OR `/memory-add incident-learnings` draft ref>
74
+ ```
75
+
76
+ **Memory-write is the final field, not a nice-to-have.** Before the
77
+ mode exits, the agent MUST either emit an intake signal via
78
+ [`memory-access`](memory-access.md) (`scripts/memory_signal.py`
79
+ append — one line, fire-and-forget) or draft a curated entry with
80
+ [`/memory-add incident-learnings`](../../commands/memory-add.md).
81
+ Pattern + consequence + guardrail, redacted. Skipping this field
82
+ means the incident did not produce a learning — log the absence,
83
+ do not pretend verification happened.
84
+
85
+ ### Planner
86
+
87
+ ```
88
+ **Goal:** <target state, one paragraph>
89
+ **Constraints:** <hard limits: time, deps, policy>
90
+ **Option set:** <2-4 options with trade-offs>
91
+ **Recommendation:** <which option + one-line justification>
92
+ **Dependencies:** <what must ship first>
93
+ **Rollback:** <how to revert if it fails>
94
+ ```
95
+
96
+ ## Integration rules
97
+
98
+ - **`ask-when-uncertain`** — any contract field without evidence becomes
99
+ a question, not a guess. The contract does not license fabrication.
100
+ - **`scope-control`** — `Reviewer` mode forbids implementation work.
101
+ `Developer` mode forbids producing review verdicts on own code.
102
+ `PO` mode forbids committing to absent stakeholders' decisions.
103
+ - **`preservation-guard`** — no mode justifies rewriting or removing
104
+ existing skills. Modes *compose* skills, they do not replace them.
105
+ - **`verify-before-complete`** — the final field of every contract is
106
+ an evidence field (Tests, Verdict, Reproduction, Acceptance criteria,
107
+ Deferred verification, Rollback). No mode ships without it.
108
+
109
+ ## When to load a contract
110
+
111
+ - **Explicit**: user invokes a command in the entry-signal column.
112
+ - **Inferred**: first message matches a signal — surface one line
113
+ (`> entering {mode} mode — contract: {fields}`) and continue.
114
+ - **Overridden**: user says "no mode" or invokes `/mode none` — drop
115
+ the frame and fall back to default conversation.
116
+
117
+ ## Structured mode markers
118
+
119
+ Every contract output MUST begin with a one-line HTML comment so
120
+ session captures, log scrapers, and the measurement hook in
121
+ [`road-to-role-modes.md`](../../../agents/roadmaps/road-to-role-modes.md#phase-4--measurement-hook-closes-q2-of-master-frame)
122
+ can count contract-conformant outputs per mode:
123
+
124
+ ```
125
+ <!-- role-mode: developer | contract: goal,plan,changes,tests,open-questions -->
126
+ ```
127
+
128
+ The marker is:
129
+
130
+ - **Invisible** in rendered markdown — no UI noise.
131
+ - **Greppable** with a stable prefix (`role-mode:`).
132
+ - **Self-describing** — `contract:` lists the fields in kebab-case and
133
+ in the order they must appear, so a scraper can verify conformance
134
+ without hardcoding the mode→contract map.
135
+
136
+ Reserved values for `role-mode`:
137
+
138
+ - `developer` · `reviewer` · `tester` · `po` · `incident` · `planner`
139
+
140
+ Any other value is treated as non-conformant. A reply with no marker
141
+ counts as the default "no-mode" conversation and does not feed the
142
+ mode statistics.
143
+
144
+ ## Personas (advisory pairings)
145
+
146
+ Modes own the **workflow closing contract**. Personas own the
147
+ **voice** a skill brings to the work. They compose: a skill invoked
148
+ inside a mode can cite one or more personas to shape *how* it
149
+ reviews, reasons, or pushes back — without changing the mode's
150
+ output contract.
151
+
152
+ This table is **advisory**, not enforcing. A skill may cite any
153
+ persona inside any mode; the mapping below is just the most common
154
+ fit. See [`../../personas/README.md`](../../personas/README.md) for
155
+ the persona catalog and schema.
156
+
157
+ | Mode | Typical persona companions | Why |
158
+ |---|---|---|
159
+ | **Developer** | `developer`, `ai-agent` | Implementation voice + automation-readiness check on the plan |
160
+ | **Reviewer** | `critical-challenger`, `senior-engineer`, `qa` | Fake-clarity hunt, architectural lock-in, coverage gaps |
161
+ | **Tester** | `qa`, `developer` | Testability lens + implementation-reality sanity check |
162
+ | **PO** | `product-owner`, `stakeholder`, `critical-challenger` | Outcome/AC, business fit, challenge hidden assumptions |
163
+ | **Incident** | `senior-engineer`, `developer` | Smallest reversible change + long-term risk on the hotfix |
164
+ | **Planner** | `senior-engineer`, `stakeholder`, `critical-challenger` | Architecture impact, business framing, option-set honesty |
165
+
166
+ ### Invocation
167
+
168
+ Skills cite personas in frontmatter:
169
+
170
+ ```yaml
171
+ ---
172
+ name: requesting-code-review
173
+ personas: [critical-challenger]
174
+ ---
175
+ ```
176
+
177
+ Commands accept a CLI-style override that wins over the skill default:
178
+
179
+ ```
180
+ /refine-ticket --personas=product-owner,senior-engineer,+qa
181
+ ```
182
+
183
+ Prefix `+` adds a persona to the default cast; prefix `-` removes one.
184
+ Omitting `--personas` uses the skill's documented default.
185
+
186
+ ### Conflict resolution
187
+
188
+ If the active mode forbids an action and a persona would push for
189
+ that action (e.g. Reviewer mode + `developer` persona suggesting an
190
+ implementation fix), the agent surfaces a numbered-options prompt per
191
+ [`agent-interaction-and-decision-quality.md`](agent-interaction-and-decision-quality.md) —
192
+ never silently switches mode, never silently drops the persona
193
+ finding. See the Q4 rule in `road-to-personas.md`.
194
+
195
+ ## Anti-patterns
196
+
197
+ - **Do NOT** mix two contracts in one reply. If the task shifts
198
+ (review → fix), close the current contract first with its evidence
199
+ field, then enter the next mode.
200
+ - **Do NOT** invent fields the contract does not list. The skeleton
201
+ is the maximum surface, not the minimum.
202
+ - **Do NOT** hand-wave the final evidence field ("tests should pass").
203
+ Run the verification or mark it as deferred with a follow-up commit.
204
+ - **Do NOT** treat the default-skills list as mandatory. The skills
205
+ are pre-loaded; the contract decides which get invoked.
206
+
207
+ ## See also
208
+
209
+ - [`road-to-role-modes.md`](../../../agents/roadmaps/road-to-role-modes.md) — roadmap this guideline implements
210
+ - [`output-patterns.md`](output-patterns.md) — generic output conventions modes inherit
211
+ - [`agent-interaction-and-decision-quality.md`](agent-interaction-and-decision-quality.md) — how modes interact with the numbered-options protocol