@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,195 @@
1
+ ---
2
+ name: laravel
3
+ description: "Writes Laravel code following framework conventions, project architecture, and modern best practices for controllers, requests, services, jobs, events, policies, and application structure."
4
+ source: package
5
+ ---
6
+
7
+ # laravel
8
+
9
+ ## When to use
10
+
11
+ Use this skill for all Laravel-specific code generation and editing tasks, especially when working with:
12
+
13
+ - Controllers
14
+ - Form Requests
15
+ - Middleware
16
+ - Service Providers
17
+ - Jobs / Queued Jobs
18
+ - Events / Listeners
19
+ - Policies / Gates
20
+ - Notifications
21
+ - Console Commands
22
+ - Config, Routing, and Application Structure
23
+
24
+ This skill extends the base `php-coder` skill and applies Laravel conventions on top of the project's general PHP rules.
25
+
26
+ ## Procedure: Write Laravel code
27
+
28
+ → **First apply the `php-coder` skill** — it handles project docs, module docs, patterns, and quality tools.
29
+
30
+ Then add these **Laravel-specific** checks:
31
+
32
+ 1. **Confirm this is a Laravel app** — check whether `artisan` exists.
33
+ 2. **Inspect app structure** — classic Laravel, modules (`app/Modules/`), or domain folders.
34
+ 3. **Check routes and HTTP flow** — understand how requests enter the application and where logic belongs.
35
+ 4. **Check test conventions** — inspect existing tests in the same domain before writing new code.
36
+
37
+ ## Core Laravel principles
38
+
39
+ - Follow **Laravel conventions first** unless the project explicitly does otherwise.
40
+ - Keep **controllers thin** — delegate business logic to services/actions.
41
+ - Keep **Form Requests responsible for validation and authorization**.
42
+ - Use **dependency injection** through the container.
43
+ - Prefer **framework features** over custom infrastructure when the built-in solution is sufficient.
44
+ - Avoid hidden magic when explicit code is clearer for the project.
45
+ - Respect the existing architecture — do not force "pure Laravel" if the project uses modules or service layers.
46
+
47
+ ## HTTP layer rules
48
+
49
+ - Controllers should:
50
+ - accept the request
51
+ - delegate business logic
52
+ - return a response / resource / redirect
53
+ - Do not put business logic, calculations, or large data transformations in controllers.
54
+ - Use **Form Request** classes for validation instead of inline controller validation when the request is non-trivial.
55
+ - Use route model binding when it improves clarity and matches existing patterns.
56
+ - Keep controller actions focused and small.
57
+
58
+ ## Validation rules
59
+
60
+ - Use **Form Requests** for reusable or non-trivial validation.
61
+ - Prefer explicit validation rules over implicit behavior.
62
+ - Reuse existing custom rules when available.
63
+ - Keep validation close to the HTTP boundary.
64
+ - Do not mix validation with persistence or business decisions.
65
+
66
+ ## Service layer rules
67
+
68
+ - Put orchestration and business logic into dedicated services/actions.
69
+ - Services should be framework-light when possible.
70
+ - A service should have one clear responsibility.
71
+ - Prefer constructor injection for dependencies.
72
+ - Do not move trivial one-line controller behavior into a service unless the project consistently does that.
73
+
74
+ ## Routing rules
75
+
76
+ - Follow the existing route organization:
77
+ - `routes/web.php`
78
+ - `routes/api.php`
79
+ - module-specific route files
80
+ - Keep route definitions readable and grouped logically.
81
+ - Use route names consistently.
82
+ - Apply middleware explicitly and according to project conventions.
83
+ - Do not introduce route patterns that differ from the surrounding code without a good reason.
84
+
85
+ ## Response rules
86
+
87
+ - Use the response style already established in the project:
88
+ - Blade views
89
+ - JSON responses
90
+ - API Resources
91
+ - Redirects with flash messages
92
+ - For APIs, prefer:
93
+ - consistent status codes
94
+ - structured JSON payloads
95
+ - API Resources when the project uses them
96
+ - Do not return raw models directly unless that is already the established project pattern.
97
+
98
+ ## Queues, jobs, and async work
99
+
100
+ - Use Jobs for clearly asynchronous or deferred work.
101
+ - Keep Jobs focused on a single responsibility.
102
+ - Pass only the data needed by the job.
103
+ - Avoid putting excessive domain logic directly into the Job class — delegate to services where appropriate.
104
+ - Be mindful of serialization when passing models or objects.
105
+
106
+ ## Events and listeners
107
+
108
+ - Use events for meaningful domain or application events, not for every small action.
109
+ - Name events clearly in the past tense when something already happened.
110
+ - Keep listeners focused and side-effect oriented.
111
+ - Do not introduce event-driven complexity unless it is already part of the project architecture.
112
+
113
+ ## Auth, policies, and authorization
114
+
115
+ - Use Laravel authorization features consistently:
116
+ - policies
117
+ - gates
118
+ - request authorization
119
+ - Keep authorization logic out of controllers where possible.
120
+ - Reuse existing policies and permission patterns.
121
+ - Do not hardcode role checks in multiple places if a policy/gate already exists.
122
+
123
+ ## Config and environment
124
+
125
+ - Read configuration from config files, not directly from `env()` outside config files.
126
+ - Do not introduce new environment variables unless necessary.
127
+ - Reuse existing config structure and naming patterns.
128
+
129
+ ## Database interaction
130
+
131
+ - Prefer Eloquent for normal application data access unless the project uses repositories or query objects.
132
+ - Use transactions when multiple writes must succeed or fail together.
133
+ - Avoid N+1 problems — eager load when appropriate.
134
+ - For heavy data access logic, follow the dedicated `eloquent` skill.
135
+
136
+ ## Migrations and schema changes
137
+
138
+ - Keep migrations focused and reversible.
139
+ - Follow existing naming conventions for columns, foreign keys, and indexes.
140
+ - Do not mix unrelated schema changes in a single migration.
141
+ - Be careful with destructive changes on existing production tables.
142
+
143
+ ## Blade and view rules
144
+
145
+ - Keep views dumb — presentation only.
146
+ - Avoid embedding business logic in Blade templates.
147
+ - Extract reusable UI pieces into components/partials when it matches project patterns.
148
+ - Escape output by default and use raw output only when safe and intentional.
149
+
150
+ ## What NOT to do
151
+
152
+ - Do not put business logic into controllers, models, or Blade templates.
153
+ - Do not validate large requests inline in controllers when Form Requests are more appropriate.
154
+ - Do not call `env()` outside config files.
155
+ - Do not introduce new architectural layers unless the project already uses them.
156
+ - Do not bypass Laravel features already used consistently in the project.
157
+ - Do not return inconsistent API response shapes in an established API.
158
+
159
+ ## Output expectations
160
+
161
+ When generating Laravel code:
162
+
163
+ - follow Laravel naming conventions
164
+ - use dependency injection
165
+ - keep classes small and focused
166
+ - match the surrounding project structure
167
+ - prefer explicit, readable code over clever abstractions
168
+ - integrate with existing requests, resources, services, policies, and tests
169
+
170
+ ## Output format
171
+
172
+ 1. Laravel code following framework conventions and project architecture
173
+ 2. All related files (controller, service, request, resource, test) as needed
174
+
175
+ ## Do NOT
176
+
177
+ - Do NOT put business logic in controllers — delegate to services.
178
+ - Do NOT use facades in service classes — use dependency injection.
179
+ - Do NOT skip middleware for route groups that need authentication.
180
+
181
+ ## Gotcha
182
+
183
+ - `env()` only works in config files — use `config()` everywhere else.
184
+ - Don't mix `Route::resource()` with single-action controllers — pick the project's convention.
185
+ - Don't return Eloquent models directly — always use API Resources.
186
+ - Don't bypass existing middleware stacks when adding new routes.
187
+
188
+ ## Auto-trigger keywords
189
+
190
+ - Laravel
191
+ - controller
192
+ - service
193
+ - middleware
194
+ - route
195
+ - application structure
@@ -0,0 +1,169 @@
1
+ ---
2
+ name: laravel-horizon
3
+ description: "Use when working with Laravel queues in production — Horizon dashboard, worker supervision, job metrics, balancing strategies — even when the user just says 'my jobs are piling up'."
4
+ source: package
5
+ ---
6
+
7
+ # laravel-horizon
8
+
9
+ ## When to use
10
+
11
+ Use this skill for anything related to Laravel Horizon:
12
+ - Queue worker configuration and supervision
13
+ - Horizon dashboard setup and access control
14
+ - Job metrics, throughput, and failure monitoring
15
+ - Balancing strategies and scaling workers
16
+ - Production tuning and deployment
17
+
18
+ For **writing queue jobs** themselves, see [jobs-events](../jobs-events/SKILL.md).
19
+
20
+ ## Procedure: Configure Horizon
21
+
22
+ ### config/horizon.php
23
+
24
+ ```php
25
+ 'environments' => [
26
+ 'production' => [
27
+ 'supervisor-1' => [
28
+ 'maxProcesses' => 10,
29
+ 'balanceMaxShift' => 1,
30
+ 'balanceCooldown' => 3,
31
+ 'connection' => 'redis',
32
+ 'queue' => ['default', 'high', 'low'],
33
+ 'balance' => 'auto', // auto, simple, or false
34
+ 'tries' => 3,
35
+ 'timeout' => 60,
36
+ 'maxTime' => 3600,
37
+ 'maxJobs' => 1000,
38
+ 'memory' => 128,
39
+ ],
40
+ ],
41
+ 'local' => [
42
+ 'supervisor-1' => [
43
+ 'maxProcesses' => 3,
44
+ 'connection' => 'redis',
45
+ 'queue' => ['default', 'high', 'low'],
46
+ 'balance' => 'auto',
47
+ 'tries' => 3,
48
+ 'timeout' => 60,
49
+ ],
50
+ ],
51
+ ],
52
+ ```
53
+
54
+ ### Queue priority
55
+
56
+ ```php
57
+ // Higher priority queues are listed first
58
+ 'queue' => ['high', 'default', 'low'],
59
+ ```
60
+
61
+ ## Running Horizon
62
+
63
+ ```bash
64
+ # Start Horizon (foreground)
65
+ php artisan horizon
66
+
67
+ # Pause / Continue
68
+ php artisan horizon:pause
69
+ php artisan horizon:continue
70
+
71
+ # Terminate gracefully (for deployments)
72
+ php artisan horizon:terminate
73
+
74
+ # Check status
75
+ php artisan horizon:status
76
+ ```
77
+
78
+ ## Deployment
79
+
80
+ **Always terminate and restart Horizon after deploying new code:**
81
+
82
+ ```bash
83
+ php artisan horizon:terminate
84
+ # Supervisor will auto-restart Horizon
85
+ ```
86
+
87
+ ### Supervisor config (production)
88
+
89
+ ```ini
90
+ [program:horizon]
91
+ process_name=%(program_name)s
92
+ command=php /path/to/artisan horizon
93
+ autostart=true
94
+ autorestart=true
95
+ user=www-data
96
+ redirect_stderr=true
97
+ stdout_logfile=/var/log/horizon.log
98
+ stopwaitsecs=3600
99
+ ```
100
+
101
+ ## Dashboard access
102
+
103
+ ```php
104
+ // HorizonServiceProvider
105
+ protected function gate(): void
106
+ {
107
+ Gate::define('viewHorizon', function (User $user): bool {
108
+ return $user->isSuperuser();
109
+ });
110
+ }
111
+ ```
112
+
113
+ ## Balancing strategies
114
+
115
+ | Strategy | Behavior |
116
+ |---|---|
117
+ | `auto` | Distributes workers based on queue workload (recommended) |
118
+ | `simple` | Round-robin across queues |
119
+ | `false` | Fixed worker count per queue |
120
+
121
+ ## Metrics and monitoring
122
+
123
+ - **Throughput** — jobs processed per minute per queue
124
+ - **Runtime** — average job execution time
125
+ - **Wait time** — time jobs spend waiting in queue
126
+ - **Failed jobs** — track and retry from dashboard
127
+ - **Tags** — auto-tagged by Eloquent models, custom tags via `tags()` method
128
+
129
+ ```php
130
+ // Custom tags on a job
131
+ public function tags(): array
132
+ {
133
+ return ['customer:' . $this->customer->getId(), 'report'];
134
+ }
135
+ ```
136
+
137
+ ## Core rules
138
+
139
+ - **Always use Supervisor** in production — Horizon is a long-running process.
140
+ - **Terminate on deploy** — `horizon:terminate` ensures workers pick up new code.
141
+ - **Use `auto` balancing** — it adapts to workload automatically.
142
+ - **Set `maxTime`** — prevents workers from running forever (memory leaks).
143
+ - **Set `maxJobs`** — recycles workers after N jobs to prevent memory bloat.
144
+ - **Tag jobs** — makes debugging and filtering in the dashboard much easier.
145
+
146
+ ## Output format
147
+
148
+ 1. Updated Horizon configuration with supervisor and queue settings
149
+ 2. Environment-specific balancing strategy rationale
150
+
151
+ ## Auto-trigger keywords
152
+
153
+ - Horizon
154
+ - queue worker
155
+ - queue dashboard
156
+ - job monitoring
157
+ - supervisor
158
+ - queue balancing
159
+
160
+ ## Gotcha
161
+
162
+ - Horizon config changes require `php artisan horizon:terminate` and restart — they don't hot-reload.
163
+ - Don't set `maxProcesses` too high — each process holds a DB connection. Monitor your connection pool.
164
+ - The model forgets that Horizon only works with Redis queues — not database or SQS.
165
+
166
+ ## Do NOT
167
+
168
+ - Do NOT run Horizon without Supervisor/systemd in production.
169
+ - Do NOT expose the Horizon dashboard without access control.
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: laravel-mail
3
+ description: "Use when building Laravel emails — Mailables, Markdown templates, queued sending, attachments, previews — even when the user says 'send this as an email' without naming Mailables."
4
+ source: package
5
+ ---
6
+
7
+ # laravel-mail
8
+
9
+ ## When to use
10
+
11
+ Use this skill when building email functionality:
12
+ - Mailable classes with HTML/Blade or Markdown templates
13
+ - Queued email sending
14
+ - Attachments and inline images
15
+ - Mail testing and previewing
16
+
17
+ For **simple notification emails** (one-off messages), see [laravel-notifications](../laravel-notifications/SKILL.md).
18
+ Use Mailables when you need full control over the email template.
19
+
20
+ ## Procedure: Create a Mailable
21
+
22
+ 1. **Generate class** — `php artisan make:mail InvoiceMail --markdown=emails.invoice`.
23
+ 2. **Configure** — Set subject, from, attachments, queuing (`ShouldQueue`).
24
+ 3. **Create template** — Markdown template in `resources/views/emails/`.
25
+ 4. **Verify** — Send test email, confirm rendering and delivery.
26
+
27
+ ### Example
28
+
29
+ ```bash
30
+ php artisan make:mail InvoiceMail --markdown=emails.invoice
31
+ ```
32
+
33
+ ```php
34
+ declare(strict_types=1);
35
+
36
+ namespace App\Mail;
37
+
38
+ use App\Models\Invoice;
39
+ use Illuminate\Bus\Queueable;
40
+ use Illuminate\Contracts\Queue\ShouldQueue;
41
+ use Illuminate\Mail\Mailable;
42
+ use Illuminate\Mail\Mailables\Content;
43
+ use Illuminate\Mail\Mailables\Envelope;
44
+ use Illuminate\Queue\SerializesModels;
45
+
46
+ class InvoiceMail extends Mailable implements ShouldQueue
47
+ {
48
+ use Queueable;
49
+ use SerializesModels;
50
+
51
+ public function __construct(
52
+ private readonly Invoice $invoice,
53
+ ) {}
54
+
55
+ public function envelope(): Envelope
56
+ {
57
+ return new Envelope(
58
+ subject: 'Invoice #' . $this->invoice->getNumber(),
59
+ replyTo: ['billing@example.com'],
60
+ );
61
+ }
62
+
63
+ public function content(): Content
64
+ {
65
+ return new Content(
66
+ markdown: 'emails.invoice',
67
+ with: [
68
+ 'invoice' => $this->invoice,
69
+ 'url' => route('invoices.show', $this->invoice->getId()),
70
+ ],
71
+ );
72
+ }
73
+
74
+ /** @return array<int, \Illuminate\Mail\Mailables\Attachment> */
75
+ public function attachments(): array
76
+ {
77
+ return [
78
+ Attachment::fromPath('/path/to/invoice.pdf')
79
+ ->as('invoice-' . $this->invoice->getNumber() . '.pdf')
80
+ ->withMime('application/pdf'),
81
+ ];
82
+ }
83
+ }
84
+ ```
85
+
86
+ ## Markdown templates
87
+
88
+ ```blade
89
+ {{-- resources/views/emails/invoice.blade.php --}}
90
+ <x-mail::message>
91
+ # Invoice {{ $invoice->getNumber() }}
92
+
93
+ Thank you for your order. Here is your invoice summary:
94
+
95
+ <x-mail::table>
96
+ | Item | Amount |
97
+ |:-----|-------:|
98
+ @foreach ($invoice->getItems() as $item)
99
+ | {{ $item->getName() }} | {{ $item->getFormattedAmount() }} |
100
+ @endforeach
101
+ | **Total** | **{{ $invoice->getFormattedTotal() }}** |
102
+ </x-mail::table>
103
+
104
+ <x-mail::button :url="$url">
105
+ View Invoice
106
+ </x-mail::button>
107
+
108
+ Thanks,<br>
109
+ {{ config('app.name') }}
110
+ </x-mail::message>
111
+ ```
112
+
113
+ ## Sending mail
114
+
115
+ ```php
116
+ // Send immediately
117
+ Mail::to($user)->send(new InvoiceMail($invoice));
118
+
119
+ // Queue for background sending (preferred)
120
+ Mail::to($user)->queue(new InvoiceMail($invoice));
121
+
122
+ // Send later
123
+ Mail::to($user)->later(now()->addMinutes(10), new InvoiceMail($invoice));
124
+
125
+ // Multiple recipients
126
+ Mail::to($users)
127
+ ->cc($manager)
128
+ ->bcc('archive@example.com')
129
+ ->send(new InvoiceMail($invoice));
130
+ ```
131
+
132
+ ## Testing
133
+
134
+ ```php
135
+ // Assert mail was sent
136
+ Mail::fake();
137
+
138
+ // ... trigger action ...
139
+
140
+ Mail::assertSent(InvoiceMail::class, function (InvoiceMail $mail) use ($user) {
141
+ return $mail->hasTo($user->getEmail());
142
+ });
143
+
144
+ Mail::assertNotSent(InvoiceMail::class);
145
+ Mail::assertNothingSent();
146
+ Mail::assertQueued(InvoiceMail::class);
147
+ ```
148
+
149
+ ## Previewing in browser
150
+
151
+ ```php
152
+ // routes/web.php (local only)
153
+ Route::get('/mail-preview', function () {
154
+ $invoice = Invoice::factory()->create();
155
+ return new InvoiceMail($invoice);
156
+ });
157
+ ```
158
+
159
+ ## Core rules
160
+
161
+ - **Always queue emails** — implement `ShouldQueue` to avoid blocking requests.
162
+ - **Use Markdown templates** for consistent styling across email clients.
163
+ - **Use Envelope + Content** pattern (Laravel 11+) — not the old `build()` method.
164
+ - **Test with `Mail::fake()`** — verify recipients, content, and queuing.
165
+ - **Keep Mailables focused** — one Mailable per email type.
166
+
167
+ ## Output format
168
+
169
+ 1. Mailable class with envelope, content, and attachments
170
+ 2. Blade/Markdown email template
171
+ 3. Queued mail dispatch integration
172
+
173
+ ## Auto-trigger keywords
174
+
175
+ - Mailable
176
+ - email template
177
+ - send mail
178
+ - Mail::to
179
+ - markdown email
180
+ - mail attachment
181
+
182
+ ## Gotcha
183
+
184
+ - Always queue emails (`ShouldQueue`) — synchronous sending blocks the request.
185
+ - The model forgets that mail templates are Blade files — they need to be published/created.
186
+ - Don't test email content with `Mail::fake()` alone — it doesn't render the template. Use `Mail::assertSent()` with closure.
187
+
188
+ ## Do NOT
189
+
190
+ - Do NOT send emails synchronously in request lifecycle — always queue.
191
+ - Do NOT use `build()` method — use `envelope()`, `content()`, `attachments()`.
192
+ - Do NOT hardcode email addresses — use config or environment variables.
193
+ - Do NOT put HTML in Mailable classes — use Blade templates.