@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,160 @@
1
+ ---
2
+ name: migration-creator
3
+ description: "Use when the user says "create migration", "add column", or "new table". Creates migrations with correct table prefixes, column naming, and multi-tenant awareness."
4
+ source: package
5
+ ---
6
+
7
+ # migration-creator
8
+
9
+ ## When to use
10
+
11
+ Use this skill when the user asks to create a database migration, add a column, create a table, or modify the schema.
12
+
13
+ ## Procedure: Create a migration
14
+
15
+ 1. **Read conventions** — Check `./agents/` and `AGENTS.md` for table prefixes, column naming, multi-tenant setup.
16
+ 2. **Generate migration** — `php artisan make:migration create_xyz_table` (or add_column, etc.).
17
+ 3. **Write schema** — Follow naming conventions, add indexes for WHERE/JOIN columns, use `decimal` for money.
18
+ 4. **Verify** — Run migration (`php artisan migrate`), then rollback (`php artisan migrate:rollback`) to confirm reversibility.
19
+
20
+ ## All projects
21
+
22
+ - Use `decimal` for money — never `float`.
23
+ - Add indexes for columns used in WHERE clauses and JOINs.
24
+ - Match existing column naming patterns in the same table or domain.
25
+ - Always include a reversible `down()` method.
26
+
27
+ ## Laravel projects
28
+
29
+ ### Multi-database architecture
30
+
31
+ Some projects use multiple database connections. Check `config/database.php` for connections.
32
+
33
+ | Check | How |
34
+ |---|---|
35
+ | Available connections | `config/database.php` → `'connections'` array |
36
+ | Migration directories | `database/migrations/` (default), check for additional directories |
37
+ | Custom migrate commands | `php artisan list migrate` — look for project-specific commands |
38
+
39
+ **Always determine which database the table belongs to before creating a migration.**
40
+
41
+ ### API database migration
42
+
43
+ ```bash
44
+ php artisan make:migration create_example_table
45
+ ```
46
+
47
+ ```php
48
+ return new class extends Migration {
49
+ public function up(): void
50
+ {
51
+ Schema::connection('api_database')->create('example_table', function (Blueprint $table): void {
52
+ $table->id();
53
+ $table->unsignedBigInteger('customer_id');
54
+ $table->string('name');
55
+ $table->boolean('is_active')->default(true);
56
+ $table->timestamps();
57
+ $table->softDeletes();
58
+
59
+ $table->foreign('customer_id')
60
+ ->references('id')
61
+ ->on('customers')
62
+ ->onDelete('cascade');
63
+
64
+ $table->index('is_active');
65
+ });
66
+ }
67
+
68
+ public function down(): void
69
+ {
70
+ Schema::connection('api_database')->dropIfExists('example_table');
71
+ }
72
+ };
73
+ ```
74
+
75
+ ### Customer database migration
76
+
77
+ ```bash
78
+ php artisan make:migration:customer AddWeatherColumn --table=cl_lv_weather
79
+ ```
80
+
81
+ Customer database tables use the `cl_` prefix (e.g. `cl_user`, `cl_lv_weather`).
82
+
83
+ ### Adding a column (with explicit connection)
84
+
85
+ ```php
86
+ return new class extends Migration {
87
+ public function up(): void
88
+ {
89
+ Schema::connection('my_connection')->table('example', function (Blueprint $table): void {
90
+ $table->unsignedInteger('new_column')->after('existing_column');
91
+ });
92
+ }
93
+
94
+ public function down(): void
95
+ {
96
+ Schema::connection('my_connection')->table('example', function (Blueprint $table): void {
97
+ $table->dropColumn('new_column');
98
+ });
99
+ }
100
+ };
101
+ ```
102
+
103
+ ### Running migrations
104
+
105
+ ```bash
106
+ # Default connection
107
+ php artisan migrate # development
108
+ php artisan migrate --env=testing # testing
109
+
110
+ # Multi-tenant / custom — check AGENTS.md or module docs for project-specific commands
111
+ # Example: php artisan migrate:tenants, php artisan migrate --database=tenant
112
+ ```
113
+
114
+ ## Composer / legacy projects
115
+
116
+ - Check where existing migrations live (e.g. `core/migrations/`).
117
+ - Use the existing migration format and naming conventions in the project.
118
+
119
+ ## Column conventions
120
+
121
+ - Foreign keys: `{entity}_id` (e.g. `customer_id`, `user_id`)
122
+ - Booleans: `is_` prefix (e.g. `is_active`, `is_default`)
123
+ - Dates: descriptive suffix (e.g. `upload_date`, `deleted_at`)
124
+ - Always use `unsignedBigInteger` for foreign keys referencing `id()` columns
125
+ - Use `->after('column')` to place new columns logically
126
+
127
+ ## Output format
128
+
129
+ 1. Migration file with up() and down() methods
130
+ 2. Model updates if columns or relationships changed
131
+
132
+ ## Gotcha
133
+
134
+ - Always check if the table/column already exists before creating the migration — the model doesn't always check.
135
+ - Multi-tenant migrations need special handling — customer tables use different prefixes.
136
+ - Don't modify existing migrations that have been deployed — create a new migration instead.
137
+ - The model forgets `->after('column')` for column ordering — MariaDB respects it, and it matters for readability.
138
+
139
+ ## Do NOT
140
+
141
+ - Do NOT create migrations without specifying the correct connection when multiple databases exist.
142
+ - Do NOT create tables without checking the project's naming conventions (prefixes, casing).
143
+ - Do NOT use raw SQL in migrations when Schema builder works.
144
+ - Do NOT forget to make migrations reversible (down method).
145
+ - Do NOT use `float` for money — use `decimal`.
146
+ - Do NOT forget indexes on foreign keys and frequently filtered columns.
147
+
148
+ ## Adversarial review
149
+
150
+ Before finalizing a migration, run the **`adversarial-review`** skill.
151
+ Focus on the "Database migrations" attack questions: Can this destroy data? Is rollback possible?
152
+
153
+ ## Auto-trigger keywords
154
+
155
+ - database migration
156
+ - create migration
157
+ - table prefix
158
+ - column naming
159
+ - add column
160
+ - create table
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: module-management
3
+ description: "Use when the user says "create module", "explore module", or works within app/Modules/. Understands module structure, auto-loading, route registration, and namespace conventions."
4
+ source: package
5
+ ---
6
+
7
+ # module
8
+
9
+ ## When to use
10
+
11
+ Use this skill when creating, exploring, or working within a module in `app/Modules/`.
12
+
13
+ ## Procedure: Work with modules
14
+
15
+ 1. Read `app/Modules/README.md` for the full module documentation.
16
+ 2. Check `app/Providers/ModuleServiceProvider.php` for auto-loading behavior.
17
+ 3. If module-level agent docs exist (`app/Modules/{Module}/agents/`), read them.
18
+
19
+ ## Detection
20
+
21
+ Check if `app/Modules/` exists in the project. If it doesn't, the project doesn't use modules.
22
+
23
+ ## Architecture
24
+
25
+ ### ModuleServiceProvider
26
+
27
+ `app/Providers/ModuleServiceProvider.php` auto-discovers modules by scanning `app/Modules/`:
28
+
29
+ 1. **Route loading** — automatically loads `Routes/api.php`, `Routes/web.php`, `Routes/console.php`
30
+ - API routes: prefixed with `/api`, `api` middleware
31
+ - Web routes: `web` middleware
32
+ - Console routes: loaded via `require_once`
33
+ - Fallback: also checks lowercase `routes/` for legacy modules
34
+ 2. **Command registration** — auto-discovers commands in `App/Console/Commands/`
35
+ - Fallback: also checks `Console/Commands/` for legacy modules
36
+
37
+ ### Module structure
38
+
39
+ ```
40
+ app/Modules/{ModuleName}/
41
+ ├── App/ # All application code (PSR-4)
42
+ │ ├── Console/Commands/ # Artisan commands (auto-registered)
43
+ │ ├── Enums/
44
+ │ ├── Http/
45
+ │ │ ├── Controllers/
46
+ │ │ ├── Middleware/
47
+ │ │ └── Requests/
48
+ │ ├── Jobs/
49
+ │ ├── Models/
50
+ │ ├── Rules/
51
+ │ └── Services/
52
+ ├── Routes/ # Auto-loaded route files
53
+ │ ├── api.php
54
+ │ ├── web.php
55
+ │ └── console.php
56
+ ├── Tests/ # Module-specific tests
57
+ │ ├── Component/
58
+ │ ├── Integration/
59
+ │ └── Unit/
60
+ ├── Docs/ # Optional technical docs
61
+ ├── agents/ # Agent docs for this module
62
+ │ ├── features/
63
+ │ ├── roadmaps/
64
+ │ └── contexts/
65
+ └── README.md # Optional module description
66
+ ```
67
+
68
+ **Important:** Directory names use capital letters (App, Routes, Tests) for PSR-4 compliance.
69
+
70
+ ### Namespace convention
71
+
72
+ ```
73
+ App\Modules\{ModuleName}\App\{Layer}\{Class}
74
+ ```
75
+
76
+ Examples:
77
+ - `App\Modules\ClientSoftware\App\Services\ImportService`
78
+ - `App\Modules\ClientSoftware\App\Http\Controllers\Import\ImportDataController`
79
+ - `App\Modules\ClientSoftware\App\Console\Commands\ProcessImportUploadsCommand`
80
+
81
+ ### Route conventions
82
+
83
+ ```php
84
+ // Routes/api.php — auto-prefixed with /api by ModuleServiceProvider
85
+ Route::name('v1.')
86
+ ->prefix('v1/{module-prefix}')
87
+ ->group(function(): void {
88
+ Route::get('/', [Controller::class, 'index'])->name('{module-prefix}.index');
89
+ });
90
+ ```
91
+
92
+ - Route prefix: **kebab-case** (e.g., `client-software`, `grafana`)
93
+ - Route names: **dot notation** (e.g., `v1.imports.index`)
94
+ - Module name: **PascalCase** (e.g., `ClientSoftware`, `Grafana`)
95
+
96
+ ## Existing modules
97
+
98
+ | Module | Purpose |
99
+ |---|---|
100
+ | `ApiClient` | External API client utilities |
101
+ | `Backoff` | Retry/backoff logic |
102
+ | `ClientSoftware` | Client software imports, uploads, processing |
103
+ | `Grafana` | Grafana/Loki dashboard integration |
104
+ | `Stubbing` | Test stubs and mocks |
105
+
106
+ ## Template
107
+
108
+ The `.module-template` directory provides a scaffold for new modules:
109
+ - `app/Modules/.module-template/` — copy and rename to create a new module
110
+ - Contains placeholder route files, README, and directory structure
111
+ - Replace `[MODULE_NAME]` and `[module-prefix]` placeholders
112
+
113
+ ## Agent docs in modules
114
+
115
+ Modules can have their own agent documentation:
116
+
117
+ ```
118
+ app/Modules/{Module}/agents/
119
+ ├── features/ # Module-scoped feature plans
120
+ ├── roadmaps/ # Module-scoped roadmaps
121
+ └── contexts/ # Module-scoped context documents
122
+ ```
123
+
124
+ ## Output format
125
+
126
+ 1. Module directory structure following template conventions
127
+ 2. ServiceProvider, routes, and agent docs scaffolded
128
+
129
+ ## Auto-trigger keywords
130
+
131
+ - Laravel module
132
+ - module structure
133
+ - module creation
134
+ - module namespace
135
+
136
+ ### Validate
137
+
138
+ - Verify namespace follows `App\Modules\{Name}\App\{Layer}` pattern.
139
+ - Confirm `ModuleServiceProvider` auto-discovers the new module's routes and providers.
140
+ - Run PHPStan on the module — must pass.
141
+ - Run module tests — must pass.
142
+
143
+ ## Gotcha
144
+
145
+ - Module namespace is `App\Modules\{Name}\App\{Layer}` — don't forget the extra `App` segment.
146
+ - Routes in modules auto-register via `ModuleServiceProvider` — don't register them manually.
147
+ - Don't put shared code in a module — shared code belongs in `app/` not `app/Modules/`.
148
+
149
+ ## Do NOT
150
+
151
+ - Do NOT manually register module routes — `ModuleServiceProvider` handles this.
152
+ - Do NOT use lowercase directory names (`routes/`, `app/`) — use `Routes/`, `App/`.
153
+ - Do NOT put business logic in controllers — use module services.
154
+ - Do NOT create a module for trivial functionality — only when logical separation is needed.
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: multi-tenancy
3
+ description: "Use when working with the multi-tenant architecture — customer DB switching, FQDN routing, tenant isolation, or cross-tenant operations."
4
+ source: package
5
+ ---
6
+
7
+ # multi-tenancy
8
+
9
+ ## When to use
10
+
11
+ Use this skill when working with tenant-specific data, customer database connections, or any code that touches the dual-database architecture.
12
+
13
+
14
+ Do NOT use when:
15
+ - Single-database applications
16
+ - Frontend-only changes
17
+
18
+ ## Procedure: Work with multi-tenancy
19
+
20
+ 1. **Gather context** — read `agents/docs/` for multi-tenant architecture, `config/database.php` for connection definitions, and search for the tenant switching service.
21
+ 2. **Identify connection** — determine whether the code touches central, tenant, or both databases. Set `$connection` explicitly on any new model.
22
+ 3. **Implement** — write the feature using the correct connection. Use the tenant switching service for cross-tenant operations. Never mix connections in a single query.
23
+ 4. **Verify isolation** — inspect the code for tenant leaks: global scopes, missing `$connection`, shared caches, or job serialization without tenant context.
24
+ 5. **Test** — write a test that exercises the tenant boundary: seed tenant-specific data, switch context, verify correct data is returned and other tenants' data is invisible.
25
+
26
+ ## Architecture overview
27
+
28
+ ```
29
+ Request → Identify Tenant (JWT / subdomain / API key)
30
+ → Lookup credentials from central database
31
+ → Reconfigure tenant connection at runtime
32
+ → All tenant queries use tenant connection
33
+ ```
34
+
35
+ ### Dual-database pattern
36
+
37
+ | Connection type | Purpose | Scope |
38
+ |---|---|---|
39
+ | Central / shared | Global data — tenants, config, shared resources | Shared across all tenants |
40
+ | Tenant / customer | Tenant-specific data — domain entities | One per tenant |
41
+
42
+ The central connection is typically the **default connection**.
43
+ The tenant connection starts **empty** and is configured dynamically per request.
44
+
45
+ ### Additional connections
46
+
47
+ Projects may have additional connections for admin operations, provisioning, or monitoring. Check `config/database.php`.
48
+
49
+ ## Core tenant switching service
50
+
51
+ Search the codebase for the service responsible for tenant switching. Typical responsibilities:
52
+
53
+ 1. Store tenant context (e.g., in Laravel Context or a singleton)
54
+ 2. Load tenant configuration
55
+ 3. Set monitoring context (tenant ID, name, domain)
56
+ 4. Reconfigure the database connection with tenant credentials
57
+ 5. Bind tenant-specific services via the container
58
+
59
+ ## Model conventions
60
+
61
+ ### Setting `$connection`
62
+
63
+ Every model **must** explicitly set its connection:
64
+
65
+ ```php
66
+ // Central models
67
+ class Tenant extends Model
68
+ {
69
+ protected $connection = 'central_database';
70
+ }
71
+
72
+ // Tenant models
73
+ class Project extends Model
74
+ {
75
+ protected $connection = 'tenant_database';
76
+ }
77
+ ```
78
+
79
+ Check the project for the actual connection names and namespace conventions.
80
+
81
+ ## Tenant isolation rules
82
+
83
+ - **Never query the tenant connection before the tenant is set.**
84
+ - **Never mix connections in a single query** — use explicit joins or separate queries.
85
+ - **Always specify `$connection`** on new models — never rely on the default.
86
+ - **Use transactions per connection** — `DB::connection('tenant_database')->transaction(...)`.
87
+ - **Artisan commands** that need tenant access must use the appropriate trait (search for it in the project).
88
+
89
+ ## Testing with tenants
90
+
91
+ - Tests use dedicated tenant seeders (check `agents/docs/` for seeder conventions).
92
+ - The testing database may consolidate multiple connections into a single DB for simplicity.
93
+ - Use `RefreshDatabase` or manual seeding — never assume a specific tenant state from previous tests.
94
+
95
+ ## Common pitfalls
96
+
97
+ | Problem | Solution |
98
+ |---|---|
99
+ | Query on `customer_database` returns empty | Customer not set yet — check middleware order |
100
+ | Race condition in parallel tests | Each test process gets its own DB (parallel testing with separate DBs) |
101
+ | Wrong tenant data in background jobs | Serialize customer ID, re-resolve in job's `handle()` method |
102
+ | Migration on wrong connection | Specify `--database=customer_database` or set `$connection` in migration |
103
+
104
+
105
+ ## Output format
106
+
107
+ 1. Tenant-aware code with correct DB connection switching
108
+ 2. Verification that tenant isolation is maintained
109
+
110
+ ## Auto-trigger keywords
111
+
112
+ - multi-tenant
113
+ - tenant isolation
114
+ - customer database
115
+ - FQDN routing
116
+
117
+ ## Gotcha
118
+
119
+ - Always verify which database connection is active before running queries — cross-tenant data leaks are critical bugs.
120
+ - The model forgets to switch back to the main connection after tenant operations.
121
+ - Queue jobs serialize the connection state — ensure the tenant context is restored when the job runs.
122
+ - Don't use `DB::connection()` directly — use the tenant switching helpers.
123
+
124
+ ## Do NOT
125
+
126
+ - Do NOT hardcode database names — always use connection names.
127
+ - Do NOT assume `customer_database` is available in service providers or early boot.
128
+ - Do NOT access tenant data in global middleware that runs before customer identification.
129
+ - Do NOT store tenant DB credentials in code — they come from the `customer_databases` table.
@@ -0,0 +1,154 @@
1
+ ---
2
+ name: openapi
3
+ description: "Use when documenting APIs — OpenAPI/Swagger, PHP attributes, Redocly validation, versioned specs — even when the user just says 'document this endpoint' without naming OpenAPI."
4
+ source: package
5
+ ---
6
+
7
+ # openapi
8
+
9
+ ## When to use
10
+
11
+ Use this skill when adding or updating API documentation, writing OpenAPI annotations on controllers, or validating API specs.
12
+
13
+ ## Procedure: Add OpenAPI documentation
14
+
15
+ 1. **Gather context** — read `agents/docs/controller.md` for OpenAPI patterns, `agents/contexts/api-versioning.md` for versioning, and check 2-3 existing controllers for annotation style.
16
+ 2. **Detect tooling** — check `composer.json` for `l5-swagger` or `laravel-openapi`, look for `@OA\` vs `#[OA\` syntax in existing controllers, find the config file.
17
+ 3. **Write annotations** — add `#[OA\...]` attributes to the controller method. Include path, summary, tags, all parameters, and all response codes (200, 401, 403, 404, 422).
18
+ 4. **Define schemas** — create or reuse `#[OA\Schema]` for request/response types. Use `$ref` for shared types.
19
+ 5. **Validate** — run the spec validation (`npx @redocly/cli lint` or `php artisan l5-swagger:generate`). Fix any errors.
20
+ 6. **Verify accuracy** — compare the documented request/response with the actual controller + FormRequest + Resource to ensure they match.
21
+
22
+ ## OpenAPI attributes
23
+
24
+ ### Detection
25
+
26
+ Check the project for OpenAPI tooling:
27
+ - Look for `darkaonline/l5-swagger` or `vyuldashev/laravel-openapi` in `composer.json`.
28
+ - Check for `@OA\` or `#[OA\` annotations in controllers.
29
+ - Look for `config/l5-swagger.php` or similar config files.
30
+
31
+ ### PHP 8 attribute syntax
32
+
33
+ Modern Laravel projects use PHP 8 attributes instead of docblock annotations:
34
+
35
+ ```php
36
+ #[OA\Get(
37
+ path: '/projects',
38
+ summary: 'List all projects',
39
+ tags: ['Projects'],
40
+ parameters: [
41
+ new OA\Parameter(
42
+ name: 'page',
43
+ in: 'query',
44
+ required: false,
45
+ schema: new OA\Schema(type: 'integer'),
46
+ ),
47
+ ],
48
+ responses: [
49
+ new OA\Response(
50
+ response: 200,
51
+ description: 'Successful operation',
52
+ ),
53
+ ],
54
+ )]
55
+ public function __invoke(ListProjectsRequest $request): ProjectCollection
56
+ {
57
+ // ...
58
+ }
59
+ ```
60
+
61
+ ### Conventions
62
+
63
+ - Place OpenAPI attributes **directly on the controller method**.
64
+ - **Paths are relative to the server URL.** If the server is configured as `http://host/api/v1`,
65
+ then `path: '/projects'` resolves to `/api/v1/projects`. Never repeat the server prefix in the path.
66
+ - Use **tags** matching the resource name (e.g., `Projects`, `Users`).
67
+ - Document **all parameters** — path, query, and header.
68
+ - Document **all response codes** — 200, 201, 401, 403, 404, 422.
69
+ - Use **schema references** (`$ref`) for reusable types.
70
+
71
+ ## Response documentation
72
+
73
+ ### Resource schemas
74
+
75
+ Define reusable schemas for API Resources:
76
+
77
+ ```php
78
+ #[OA\Schema(
79
+ schema: 'Project',
80
+ properties: [
81
+ new OA\Property(property: 'id', type: 'integer'),
82
+ new OA\Property(property: 'name', type: 'string'),
83
+ new OA\Property(property: 'status', type: 'string', enum: ['active', 'archived']),
84
+ ],
85
+ )]
86
+ ```
87
+
88
+ ### Pagination schema
89
+
90
+ Document paginated responses with `meta` and `links`:
91
+
92
+ ```php
93
+ #[OA\Response(
94
+ response: 200,
95
+ description: 'Paginated list',
96
+ content: new OA\JsonContent(
97
+ properties: [
98
+ new OA\Property(property: 'data', type: 'array', items: new OA\Items(ref: '#/components/schemas/Project')),
99
+ new OA\Property(property: 'meta', ref: '#/components/schemas/PaginationMeta'),
100
+ ],
101
+ ),
102
+ )]
103
+ ```
104
+
105
+ ## Validation with Redocly
106
+
107
+ If the project uses Redocly for OpenAPI validation:
108
+
109
+ ```bash
110
+ # Validate the spec
111
+ npx @redocly/cli lint openapi.yaml
112
+
113
+ # Preview documentation
114
+ npx @redocly/cli preview-docs openapi.yaml
115
+ ```
116
+
117
+ Check for `.redocly.yaml` or `redocly.yaml` config in the project root.
118
+
119
+ ## Versioned documentation
120
+
121
+ When the API uses URL-based versioning (e.g., `/api/v1/`, `/api/v2/`):
122
+
123
+ - The version prefix is typically part of the **server URL**, not the individual endpoint paths.
124
+ - Check the OpenAPI server configuration to understand what prefix is already included.
125
+ - When creating a v2 endpoint, add new documentation — don't modify v1 docs.
126
+ - Mark deprecated endpoints with `deprecated: true`.
127
+
128
+
129
+ ## Output format
130
+
131
+ 1. OpenAPI annotations as PHP attributes on controllers/models
132
+ 2. Spec validation passing via Redocly
133
+
134
+ ## Auto-trigger keywords
135
+
136
+ - OpenAPI
137
+ - Swagger
138
+ - API documentation
139
+ - PHP attributes
140
+ - Redocly
141
+
142
+ ## Gotcha
143
+
144
+ - OpenAPI attributes must match the actual endpoint behavior — stale docs are worse than no docs.
145
+ - The model tends to define response schemas that don't match the Resource class output.
146
+ - Don't document internal endpoints in the public API spec.
147
+
148
+ ## Do NOT
149
+
150
+ - Do NOT skip OpenAPI documentation when creating new endpoints.
151
+ - Do NOT document internal/private endpoints that are not part of the public API.
152
+ - Do NOT use docblock `@OA\` annotations when the project uses PHP 8 attributes.
153
+ - Do NOT hardcode example values that contain real customer data.
154
+ - Do NOT create documentation that contradicts the actual implementation.