@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,185 @@
1
+ ---
2
+ name: api-endpoint
3
+ description: "Use when the user says "create endpoint", "new API route", or "add controller". Creates a complete endpoint with Controller, FormRequest, Resource, route, and OpenAPI docs."
4
+ source: package
5
+ ---
6
+
7
+ # api-endpoint
8
+
9
+ ## When to use
10
+
11
+ Use this skill when the user asks to create a new API endpoint, REST route, or controller action.
12
+
13
+
14
+ Do NOT use when:
15
+ - Modifying existing endpoints (use `code-refactoring` skill)
16
+ - API design decisions (use `api-design` skill)
17
+
18
+ ## Procedure: Create an API endpoint
19
+
20
+ 1. **Read project docs** — Check `./agents/` and `AGENTS.md` for controller conventions, resource patterns, routing.
21
+ 2. **Create route** — Add to the correct `routes/api.php` or module route file.
22
+ 3. **Create controller** — Thin controller, delegate logic to service.
23
+ 4. **Create FormRequest** — Validate all input at the boundary.
24
+ 5. **Create Resource** — Transform model output via API Resource.
25
+ 6. **Verify** — Run PHPStan, run tests, confirm response shape matches conventions.
26
+
27
+ ## Laravel projects
28
+
29
+ ### What to generate
30
+
31
+ 1. **Controller** — Single Action (invokable). Read `agents/docs/controller.md` and `.augment/guidelines/php/controllers.md`.
32
+ 2. **FormRequest** — Validation rules, `authorize()` via policies. Read `.augment/guidelines/php/validations.md`.
33
+ 3. **Resource** — JSON response transformation. Read `agents/docs/api-resources.md`.
34
+ 4. **Route** — Add to the correct versioned route file.
35
+ 5. **Policy** — If authorization is needed.
36
+ 6. **Filter classes** — If it's a list endpoint with filtering. Read `agents/docs/query-filter.md` (if it exists).
37
+
38
+ ### Conventions
39
+
40
+ - Controllers are thin — delegate to Services.
41
+ - **Every controller MUST return an API Resource** — never raw arrays, models, or `response()->json()`.
42
+ - Controllers type-hint the return value as the Resource class (e.g. `): ProjectResource`).
43
+ - Use `Resource::make()` for single items, `Resource::collection()` for lists.
44
+ - Use method injection on `__invoke()` for new controllers.
45
+ - Use DTOs for data transfer between layers.
46
+
47
+ ### Show endpoint example
48
+
49
+ ```php
50
+ declare(strict_types=1);
51
+
52
+ namespace App\Http\Controllers\v1\Project;
53
+
54
+ use App\Http\Controllers\Controller;
55
+ use App\Http\Requests\v1\Projects\ShowProjectRequest;
56
+ use App\Http\Resources\v1\Project\ProjectResource;
57
+ use App\Models\ExternalCustomerDatabase\Project\Project;
58
+ use App\OpenApi\Schema\Request\ShowResourceRequestSchema;
59
+ use App\OpenApi\Schema\Response\ResourceNotFoundResponse;
60
+ use App\OpenApi\Schema\Response\ShowResourceResponseSchema;
61
+
62
+ class ShowProjectController extends Controller
63
+ {
64
+ #[ShowResourceRequestSchema(path: '/projects/{id}', version: '1', resource: ProjectResource::class)]
65
+ #[ShowResourceResponseSchema(ProjectResource::class, wrapInDataObject: false)]
66
+ #[ResourceNotFoundResponse(ProjectResource::class)]
67
+ public function __invoke(ShowProjectRequest $request, Project $project): ProjectResource
68
+ {
69
+ return ProjectResource::make($project);
70
+ }
71
+ }
72
+ ```
73
+
74
+ ### Create endpoint with service injection
75
+
76
+ ```php
77
+ class CreateCustomerController extends Controller
78
+ {
79
+ #[CreateCustomerRequestSchema(path: '/customers', version: '1', resource: CustomerResource::class)]
80
+ #[CreateResourceResponseSchema(resource: CreatedCustomerResource::class, wrapInDataObject: false)]
81
+ #[ValidationErrorResponse]
82
+ public function __invoke(
83
+ CreateCustomerRequest $request,
84
+ CustomerModelService $customerService,
85
+ ): CustomerResource {
86
+ $result = $customerService->create(CreateCustomerDTO::fromRequest($request));
87
+
88
+ return CreatedCustomerResource::make($result);
89
+ }
90
+ }
91
+ ```
92
+
93
+ ### FormRequest example
94
+
95
+ ```php
96
+ declare(strict_types=1);
97
+
98
+ namespace App\Http\Requests\v1\Projects;
99
+
100
+ use Illuminate\Foundation\Http\FormRequest;
101
+
102
+ class ShowProjectRequest extends FormRequest
103
+ {
104
+ public function authorize(): bool
105
+ {
106
+ return $this->user()->can('view', $this->route('project'));
107
+ }
108
+
109
+ /** @return array<string, mixed> */
110
+ public function rules(): array
111
+ {
112
+ return [];
113
+ }
114
+ }
115
+ ```
116
+
117
+ ### List endpoint with CollectionFormRequest
118
+
119
+ For list endpoints, extend `CollectionFormRequest` which provides `perPage`, `page`, and `orderBy` rules:
120
+
121
+ ```php
122
+ use App\Contracts\Http\Requests\CollectionFormRequest;
123
+
124
+ class ListProjectsRequest extends CollectionFormRequest
125
+ {
126
+ public string $model = Project::class;
127
+
128
+ /** @return array<string, mixed> */
129
+ public function rules(): array
130
+ {
131
+ return [
132
+ ...parent::rules(),
133
+ 'status' => ['sometimes', 'string'],
134
+ ];
135
+ }
136
+ }
137
+ ```
138
+
139
+ ### File locations
140
+
141
+ | Component | Path |
142
+ |---|---|
143
+ | Controller | `app/Http/Controllers/v{N}/{Domain}/{Action}{Entity}Controller.php` |
144
+ | FormRequest | `app/Http/Requests/v{N}/{Domain}/{Action}{Entity}Request.php` |
145
+ | Resource | `app/Http/Resources/v{N}/{Domain}/{Entity}Resource.php` |
146
+ | Route | `routes/api/v{N}/{domain}.php` |
147
+ | Policy | `app/Policies/{Entity}Policy.php` |
148
+
149
+ ### OpenAPI documentation
150
+
151
+ Controllers use PHP 8 attributes for OpenAPI spec generation from `App\OpenApi\Schema\`:
152
+
153
+ - `ShowResourceRequestSchema`, `ListResourceRequestSchema`, `CreateResourceRequestSchema`
154
+ - `ShowResourceResponseSchema`, `ListResourceResponseSchema`, `CreateResourceResponseSchema`
155
+ - `ResourceNotFoundResponse`, `ValidationErrorResponse`
156
+
157
+ ## Output format
158
+
159
+ 1. Generated files — controller, route registration, FormRequest, Resource, Policy
160
+ 2. Test file with happy path and validation error cases
161
+ 3. Summary of created files and their locations
162
+
163
+ ## Gotcha
164
+
165
+ - Don't forget to register the route — creating the controller without the route is a common miss.
166
+ - Always check if a similar endpoint already exists — duplicates cause confusion.
167
+ - FormRequest validation rules must match the OpenAPI schema — keep them in sync.
168
+ - The model tends to forget the `return` type on Resource `toArray()` methods.
169
+
170
+ ## Do NOT
171
+
172
+ - Do NOT put business logic in controllers — delegate to services.
173
+ - Do NOT skip FormRequest validation — every controller needs a FormRequest.
174
+ - Do NOT return raw Eloquent models — always use API Resources.
175
+ - Do NOT create routes without proper authorization (Policy in FormRequest or middleware).
176
+ - Do NOT create multi-action controllers — only single-action with `__invoke()`.
177
+ - Do NOT use `response()->json()` — use `Resource::make()`.
178
+
179
+ ## Auto-trigger keywords
180
+
181
+ - create endpoint
182
+ - new API route
183
+ - controller creation
184
+ - form request
185
+ - API resource
@@ -0,0 +1,206 @@
1
+ ---
2
+ name: api-testing
3
+ description: "Use when writing API endpoint tests — integration tests, contract validation, response assertions, mocked external services — even when the user says 'test this route' without naming API testing."
4
+ source: package
5
+ ---
6
+
7
+ # api-testing
8
+
9
+ ## When to use
10
+
11
+ Use this skill when writing or reviewing API endpoint tests — integration tests,
12
+ contract validation, response structure checks, or external service mocking.
13
+
14
+ ## Procedure: Write API tests
15
+
16
+ 1. **Understand the endpoint** — Read controller, form request, existing tests. Understand expected behavior and edge cases before writing anything.
17
+ 2. **Set up test data** — Use seeders (preferred) or factories. Mock external services with `Http::fake()`.
18
+ 3. **Write test cases** — Cover success, validation errors, authorization failures, edge cases.
19
+ 4. **Assert response** — Check status code, JSON structure, data values. Use `assertJsonStructure()`.
20
+ 5. **Verify** — Run the test. Must pass. Check no flaky assertions (no time-dependent, no random ordering).
21
+
22
+ ### Example
23
+
24
+ ```php
25
+ describe('GET /api/v1/projects', function () {
26
+ it('returns paginated projects for authenticated user', function () {
27
+ $user = loginAsTestUser();
28
+
29
+ $response = $this->getJson('/api/v1/projects');
30
+
31
+ $response->assertOk()
32
+ ->assertJsonStructure([
33
+ 'data' => [['id', 'title', 'status']],
34
+ 'meta' => ['current_page', 'per_page', 'total'],
35
+ ]);
36
+ });
37
+
38
+ it('returns 401 for unauthenticated request', function () {
39
+ $this->getJson('/api/v1/projects')
40
+ ->assertUnauthorized();
41
+ });
42
+
43
+ it('returns 403 when user lacks permission', function () {
44
+ loginAsRestrictedUser();
45
+
46
+ $this->getJson('/api/v1/projects')
47
+ ->assertForbidden();
48
+ });
49
+ });
50
+ ```
51
+
52
+ ## Test categories
53
+
54
+ ### Happy path
55
+
56
+ Test the expected success scenario with valid input:
57
+
58
+ ```php
59
+ it('creates a project', function () {
60
+ loginAsTestUser();
61
+
62
+ $this->postJson('/api/v1/projects', [
63
+ 'title' => 'New Project',
64
+ 'customer_id' => $customerId,
65
+ ])
66
+ ->assertCreated()
67
+ ->assertJsonPath('data.title', 'New Project');
68
+
69
+ $this->assertDatabaseHas('projects', ['title' => 'New Project']);
70
+ });
71
+ ```
72
+
73
+ ### Validation
74
+
75
+ Test that invalid input is rejected with correct error messages:
76
+
77
+ ```php
78
+ it('rejects project without title', function () {
79
+ loginAsTestUser();
80
+
81
+ $this->postJson('/api/v1/projects', [
82
+ 'customer_id' => $customerId,
83
+ ])
84
+ ->assertUnprocessable()
85
+ ->assertJsonValidationErrors(['title']);
86
+ });
87
+ ```
88
+
89
+ ### Authorization
90
+
91
+ Test that unauthorized access is blocked:
92
+
93
+ ```php
94
+ it('prevents non-owner from updating project', function () {
95
+ $otherUser = loginAsOtherUser();
96
+
97
+ $this->putJson("/api/v1/projects/{$project->id}", [
98
+ 'title' => 'Hijacked',
99
+ ])
100
+ ->assertForbidden();
101
+ });
102
+ ```
103
+
104
+ ### Edge cases
105
+
106
+ Test boundary conditions:
107
+
108
+ ```php
109
+ it('handles empty collection', function () {
110
+ loginAsTestUser();
111
+
112
+ $this->getJson('/api/v1/projects')
113
+ ->assertOk()
114
+ ->assertJsonCount(0, 'data');
115
+ });
116
+
117
+ it('paginates large result sets', function () {
118
+ loginAsTestUser();
119
+
120
+ $this->getJson('/api/v1/projects?per_page=5')
121
+ ->assertOk()
122
+ ->assertJsonPath('meta.per_page', 5);
123
+ });
124
+ ```
125
+
126
+ ## Response contract validation
127
+
128
+ ### Assert JSON structure
129
+
130
+ ```php
131
+ // Verify response shape (keys exist)
132
+ $response->assertJsonStructure([
133
+ 'data' => ['id', 'title', 'status', 'created_at'],
134
+ ]);
135
+
136
+ // Verify exact values
137
+ $response->assertJsonPath('data.status', 'active');
138
+
139
+ // Verify collection count
140
+ $response->assertJsonCount(3, 'data');
141
+ ```
142
+
143
+ ### Assert response types
144
+
145
+ ```php
146
+ // When strict typing matters
147
+ $data = $response->json('data');
148
+ expect($data['id'])->toBeInt();
149
+ expect($data['title'])->toBeString();
150
+ expect($data['total'])->toBeString(); // Money as string, not float
151
+ ```
152
+
153
+ ## External service mocking
154
+
155
+ ```php
156
+ it('handles external API failure gracefully', function () {
157
+ Http::fake([
158
+ 'external-api.com/*' => Http::response(null, 500),
159
+ ]);
160
+
161
+ loginAsTestUser();
162
+
163
+ $this->postJson('/api/v1/sync')
164
+ ->assertStatus(502)
165
+ ->assertJsonPath('message', 'External service unavailable');
166
+ });
167
+ ```
168
+
169
+ ## Test checklist per endpoint
170
+
171
+ | Category | Tests needed |
172
+ |---|---|
173
+ | **Auth** | Unauthenticated (401), unauthorized (403) |
174
+ | **Validation** | Missing fields, wrong types, boundary values |
175
+ | **Happy path** | Success with valid input, correct status code |
176
+ | **Response** | JSON structure, field types, pagination meta |
177
+ | **Side effects** | Database changes, events dispatched, jobs queued |
178
+ | **Edge cases** | Empty results, large payloads, concurrent access |
179
+
180
+ ## Output format
181
+
182
+ 1. Pest test file covering happy path, validation, auth, and edge cases
183
+ 2. Test names as readable sentences describing expected behavior
184
+ 3. Mocked external services where applicable
185
+
186
+ ## Auto-trigger keywords
187
+
188
+ - API test
189
+ - endpoint test
190
+ - integration test
191
+ - response validation
192
+ - contract testing
193
+
194
+ ## Gotcha
195
+
196
+ - Don't test framework internals (e.g., "does Laravel return 422 on validation error") — test YOUR validation rules.
197
+ - Always seed test data explicitly — don't rely on data from other tests (parallel execution).
198
+ - Mock external APIs with `Http::fake()` — never hit real services in tests.
199
+ - The model forgets to assert response structure, only checking status codes — always check both.
200
+
201
+ ## Do NOT
202
+
203
+ - Do not hardcode IDs or timestamps — use factories or seeders.
204
+ - Do not skip auth tests — always test both authenticated and unauthenticated.
205
+ - Do not assert entire JSON responses — assert only meaningful fields.
206
+ - Do not use `Http::fake()` without also testing the real integration path.
@@ -0,0 +1,78 @@
1
+ ---
2
+ name: artisan-commands
3
+ description: "Use when creating or modifying Artisan commands. Covers clear signatures, safe execution flow, helpful output, and project conventions for console tooling."
4
+ source: package
5
+ ---
6
+
7
+ # artisan-commands
8
+
9
+ ## When to use
10
+
11
+ Use when creating or modifying Laravel Artisan commands — maintenance scripts, imports/exports, batch processing, repair/cleanup, scheduled tasks, developer utilities.
12
+
13
+ Do NOT use when:
14
+ - Writing queue jobs (use `jobs-events` skill)
15
+ - Writing scheduled task config (use `laravel-scheduling` skill)
16
+
17
+ ## Procedure: Create an Artisan command
18
+
19
+ ### Step 0: Inspect
20
+
21
+ 1. Check existing commands — match naming, signature style, output format.
22
+ 2. Determine audience: developer, support, operations, cron, or scheduler.
23
+ 3. Determine if interactive or automated.
24
+ 4. Identify related services — commands orchestrate, not own business logic.
25
+
26
+ ### Step 1: Scaffold
27
+
28
+ 1. Create command class in `app/Console/Commands/` or module `App/Commands/`.
29
+ 2. Name: `{domain}:{action}` — e.g. `users:cleanup`, `orders:sync`.
30
+ 3. Define arguments (required) and options (toggles/filters) explicitly.
31
+
32
+ ### Step 2: Implement handle()
33
+
34
+ 1. Validate preconditions (environment, input, dependencies).
35
+ 2. Call service/action for business logic.
36
+ 3. Report progress and results via console output.
37
+ 4. Return appropriate exit code.
38
+
39
+ ### Step 3: Safety checks
40
+
41
+ - Destructive? → Add `--force` flag + confirmation.
42
+ - Scheduled? → Ensure non-interactive, idempotent, loud failures.
43
+ - Long-running? → Use chunking/cursors, progress bar.
44
+ - Production? → Add environment check if needed.
45
+
46
+ ### Step 4: Test
47
+
48
+ - Assert exit codes, console output, side effects, option behavior.
49
+ - Use `$this->artisan()` in Pest tests.
50
+
51
+ ## Conventions
52
+
53
+ → See guideline `php/artisan-commands.md` for full conventions.
54
+
55
+ ## Output format
56
+
57
+ 1. Artisan command class with signature, description, and handle method
58
+ 2. Registration in service provider or auto-discovery
59
+ 3. Example usage shown in a code comment
60
+
61
+ ## Gotcha
62
+
63
+ - `$this->info()` is suppressed in quiet mode — use `$this->line()` for critical info.
64
+ - Always add `--force` for destructive commands — never delete data without confirmation.
65
+ - Add environment checks for production commands.
66
+
67
+ ## Do NOT
68
+
69
+ - Do NOT run destructive operations without `--force` confirmation.
70
+ - Do NOT use `$this->ask()` for non-interactive commands (cron/queue).
71
+ - Do NOT put business logic in commands — delegate to services.
72
+
73
+ ## Auto-trigger keywords
74
+
75
+ - artisan command
76
+ - console command
77
+ - CLI command
78
+ - command signature
@@ -0,0 +1,171 @@
1
+ ---
2
+ name: authz-review
3
+ description: "Use when reviewing authorization end-to-end — route → gate → policy → query scope → response filter — before changes to permissions, tenants, ownership, or admin flows."
4
+ source: package
5
+ ---
6
+
7
+ # authz-review
8
+
9
+ > You are a reviewer specialized in **end-to-end authorization enforcement**.
10
+ > Your only job is to walk a request path from entry to response and confirm
11
+ > the *authorization layer* (Laravel Policies/Gates · Symfony Voters · Express
12
+ > middleware · FastAPI `Depends` · Spring `@PreAuthorize` · Rails Pundit/CanCan)
13
+ > actually gates every protected asset. You do **not** perform threat
14
+ > modelling, you do **not** review diffs holistically, you do **not** implement
15
+ > controls — sibling skills handle those.
16
+
17
+ ## When to use
18
+
19
+ * A change adds or modifies permission checks, roles, or ownership rules
20
+ * A change exposes a new route, action, or admin-only capability
21
+ * A query fetches tenant-scoped or user-scoped records and you must confirm scope
22
+ * A bug report mentions "user A saw user B's data" or "non-admin accessed admin page"
23
+ * `security-sensitive-stop-rule` fires on an auth/tenant/ownership code path
24
+
25
+ Do NOT use when:
26
+
27
+ * The change has no trust boundary crossing — skip entirely
28
+ * You need a pre-implementation risk model — route to
29
+ [`threat-modeling`](../threat-modeling/SKILL.md)
30
+ * A full codebase authorization audit is requested — route to
31
+ [`security-audit`](../security-audit/SKILL.md)
32
+ * The concern is a diff ready for review — route to
33
+ [`judge-security-auditor`](../judge-security-auditor/SKILL.md)
34
+ * The concern is response/log leakage rather than access gating — route to
35
+ [`data-exposure-review`](../data-exposure-review/SKILL.md)
36
+ * The concern is implementing a control once identified — route to
37
+ [`security`](../security/SKILL.md)
38
+
39
+ ## Procedure
40
+
41
+ ### 1. Pick the entrypoints under review
42
+
43
+ Collect the route(s), action(s), or job(s) in scope for this review. Read the
44
+ task description, open ticket, or user request — do not invent scope. If the
45
+ entrypoint list is unclear, stop and ask.
46
+
47
+ ### 2. Inspect each path end-to-end
48
+
49
+ For every entrypoint, analyze the authorization chain and record what you find:
50
+
51
+ | Stage | What to confirm |
52
+ |---|---|
53
+ | Route / binding | HTTP method, URL, controller/handler, middleware chain |
54
+ | Authentication gate | Is login enforced? By which middleware / guard? |
55
+ | Authorization layer | Which policy, gate, voter, or check? Which action/ability? |
56
+ | Data scope | Does the query filter by current user / tenant / owner? |
57
+ | Response filter | Are sensitive fields stripped (resource/serializer/DTO)? |
58
+ | Tests | Is there a negative test (other-tenant / lower-role returns 403/404)? |
59
+
60
+ Record **what is there**, not what should be there. Use file:line citations.
61
+
62
+ ### 3. Surface the gaps
63
+
64
+ For every gap, answer:
65
+
66
+ - Which stage is missing or weak?
67
+ - Which actor can exploit it? (anonymous · authenticated non-owner · wrong tenant · lower role)
68
+ - Concrete impact? (cross-tenant read, privilege escalation, horizontal escalation)
69
+ - Minimum control to add? (policy method, scope, middleware, resource transform)
70
+ - Required negative test assertion?
71
+
72
+ Do **not** list generic findings ("should use policies") — always anchor to a
73
+ file:line and a specific actor who can reach the gap.
74
+
75
+ ## Validation
76
+
77
+ Before finalizing the report, confirm:
78
+
79
+ 1. Every entrypoint in scope is walked through **all six stages** of the table
80
+ 2. Every 🔴 finding names: stage · actor · impact · missing control · required test
81
+ 3. Every 🔴 finding cites at least one file path with line number
82
+ 4. You have NOT listed stages that are already correctly enforced as findings
83
+ 5. You have NOT confused authentication with authorization in any finding
84
+ 6. You have NOT proposed exploit payloads, bypass chains, or offensive steps
85
+
86
+ ## Output format
87
+
88
+ ```
89
+ Skill: authz-review
90
+ Targets: <routes / actions / jobs, one per line>
91
+
92
+ Per-entrypoint walk:
93
+ <METHOD /route> — <controller@action> (file:line)
94
+ Auth gate: <middleware/guard> ✅/⚠️/❌
95
+ Authorization: <policy#ability> ✅/⚠️/❌ (file:line)
96
+ Data scope: <scope/where> ✅/⚠️/❌ (file:line)
97
+ Response filter: <resource/serializer> ✅/⚠️/❌ (file:line)
98
+ Negative test: <test path or "—"> ✅/⚠️/❌
99
+
100
+ Findings (prioritized):
101
+ 🔴 <name> — entrypoint · stage · actor
102
+ Impact: <concrete damage>
103
+ Missing control: <what to add, where>
104
+ Required test: <negative assertion, test file>
105
+ 🟡 ...
106
+ 🟢 ...
107
+
108
+ Implementation plan:
109
+ 1. <control>, <file/layer>
110
+ 2. ...
111
+
112
+ Missing tests:
113
+ 1. <assertion>, <test file>
114
+ ```
115
+
116
+ Severity: 🔴 reachable by external or cross-tenant/cross-user actor with
117
+ current privileges / 🟡 reachable only by elevated actor or requires
118
+ partial compromise / 🟢 defense-in-depth hardening, not a live exploit path.
119
+
120
+ Required fields (ordered):
121
+
122
+ 1. **Skill** and **Targets** — entrypoints in scope
123
+ 2. **Per-entrypoint walk** — six-stage table per entrypoint with file:line citations
124
+ 3. **Findings** — prioritized, each with entrypoint · stage · actor · impact · missing control · required test
125
+ 4. **Implementation plan** — ordered controls mapped to files/layers
126
+ 5. **Missing tests** — ordered negative assertions
127
+
128
+ Runtime confirmation (e.g. *"reproduce the cross-tenant read against staging"*,
129
+ *"query the DB to prove scope leakage"*) is a follow-up for the implementer —
130
+ **this skill does not execute tools, run requests, or touch the database**.
131
+
132
+ ## Gotcha
133
+
134
+ * **Authentication ≠ authorization.** A logged-in user is not an authorized
135
+ user. Auth gate green does not make authorization green.
136
+ * **Implicit tenancy via current session** — `Auth::user()->posts` looks safe
137
+ but breaks the moment an admin impersonation or service-account path bypasses it.
138
+ * **Query scope bypass through relations** — `$user->load('orders.customer')`
139
+ can leak a sibling tenant if the `customer` relation has no scope.
140
+ * **Resource/serializer leakage** — the policy gated the action; the resource
141
+ still exposed `internal_notes`. Response filter is a distinct stage.
142
+ * **"Route middleware covers it"** — middleware enforces auth, not per-record
143
+ authorization. Still need the policy + scope.
144
+ * **Generic advice without file:line** — reject your own finding if you cannot
145
+ cite the exact location.
146
+
147
+ ## Do NOT
148
+
149
+ * NEVER return `clean` out of politeness when gaps exist — list them even if the change "probably works"
150
+ * NEVER silently fall back to generic advice when you cannot locate a stage — mark it `❌ not found` with the file you searched
151
+ * NEVER approve a 🔴 finding without a named required negative test
152
+ * NEVER propose exploit payloads, bypass chains, or offensive verification steps — if asked, stop per `never-help-build-offensive-cyber-capability`
153
+ * NEVER treat "only admins reach this" as a control without proof the admin gate is enforced at this stage for this request
154
+ * NEVER rubber-stamp authentication middleware as if it enforced per-record authorization
155
+
156
+ ## References
157
+
158
+ - **OWASP ASVS v4.0.3** — Chapter V4 Access Control, especially V4.1
159
+ (General Access Control Design) and V4.2 (Operation-level Access Control).
160
+ [owasp.org/www-project-application-security-verification-standard/](https://owasp.org/www-project-application-security-verification-standard/)
161
+ - **OWASP Top 10 2021 — A01 Broken Access Control** — canonical failure modes
162
+ (IDOR, missing function-level checks, forced browsing, metadata tampering).
163
+ [owasp.org/Top10/A01_2021-Broken_Access_Control/](https://owasp.org/Top10/A01_2021-Broken_Access_Control/)
164
+ - **NIST SP 800-53 AC family** — AC-3 Access Enforcement, AC-6 Least Privilege
165
+ — rubric for "minimum control" recommendations.
166
+ [csrc.nist.gov/projects/risk-management/sp800-53-controls](https://csrc.nist.gov/projects/risk-management/sp800-53-controls/release-search#!/800-53)
167
+ - [`threat-modeling`](../threat-modeling/SKILL.md),
168
+ [`data-exposure-review`](../data-exposure-review/SKILL.md),
169
+ [`judge-security-auditor`](../judge-security-auditor/SKILL.md),
170
+ [`security`](../security/SKILL.md),
171
+ [`security-audit`](../security-audit/SKILL.md) — sibling review / implementation skills.