@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,191 @@
1
+ # PHP Guidelines
2
+
3
+ > PHP conventions and coding standards.
4
+
5
+ **Related Skills:** `php`, `php-coder`, `php-service`
6
+ **Related Rules:** `php-coding.md`
7
+
8
+ ## Quick Reference
9
+
10
+ | Topic | Rule |
11
+ |-----------------|-------------------------------------------------------|
12
+ | Strict types | `declare(strict_types=1);` in every file |
13
+ | Variables | `camelCase` |
14
+ | Array keys | `snake_case` |
15
+ | Constants | `UPPER_SNAKE_CASE` |
16
+ | Strings | Single quotes (no interpolation), prefer concatenation (`.`), `sprintf()` only when complex |
17
+ | Comparisons | Always `===` / `!==`, Yoda style (`null === $var`) |
18
+ | Types | Explicit types for properties, parameters, returns |
19
+
20
+ ## Naming
21
+
22
+ - Method names must be **expressive**, not declarative. No abbreviations.
23
+ - Boolean checks: `isValid()`, `hasPermission()` — not `valid()`, `check()`
24
+ - Retrieving: `getUser()`, `fetchUserData()` — not `user()`, `userData()`
25
+ - Actions: `sendEmail()`, `processPayment()` — not `email()`, `payment()`
26
+
27
+ ## Strings
28
+
29
+ - Single quotes when no interpolation: `$table = 'users';`
30
+ - Prefer concatenation with `.` operator: `'Hi ' . $name . '!'`
31
+ - Use `sprintf()` only when concatenation becomes unreadable (many placeholders, formatting): `sprintf('There are %d items in %s', $count, $location)`
32
+
33
+ ## Control Structures
34
+
35
+ - **No one-liner IF** statements
36
+ - **Prefer early return** over `else` / nested `if`
37
+ - Ternary for short statements only
38
+
39
+ ```php
40
+ // ✅ Early return
41
+ if (!$conditionA) {
42
+ return;
43
+ }
44
+ // conditionA passed...
45
+ ```
46
+
47
+ ## Typed Properties
48
+
49
+ - Always use typed properties. Nullable with default `null`:
50
+
51
+ ```php
52
+ // ✅ Good
53
+ public ?int $age = null;
54
+
55
+ // ❌ Bad
56
+ public int | null $age;
57
+ ```
58
+
59
+ ## Typed Arguments
60
+
61
+ - Prefer typed method arguments over arrays. Named arguments with spread for bulk:
62
+
63
+ ```php
64
+ // ✅ Type-safe
65
+ public function createUser(int $id, string $name): void {}
66
+
67
+ // Call with array via spread
68
+ $data = ['id' => 1, 'name' => 'John'];
69
+ createUser(...$data);
70
+ ```
71
+
72
+ ## DocBlocks
73
+
74
+ - **Only** use DocBlocks to explain complex logic or when type hints are insufficient
75
+ - **Must** add DocBlock for iterable types: `@param array<int, MyObject> $items`
76
+ - Do NOT add DocBlocks that just repeat the type signature
77
+
78
+ ## Arrays
79
+
80
+ - Short syntax only (`[]`, not `array()`)
81
+ - Trailing comma on each line
82
+ - Each item on a separate line
83
+ - Keys in `snake_case`
84
+
85
+ ## Enums
86
+
87
+ - Cases must be **UPPERCASE**: `case MONDAY;`
88
+ - Use [backed enums](https://www.php.net/manual/en/language.enumerations.backed.php) for database values
89
+
90
+ ## Operator Precedence — Always Use Parentheses
91
+
92
+ When mixing `?:` (ternary/elvis), `??` (null coalessce), or `.` (concatenation),
93
+ **always use explicit parentheses** to make the intended evaluation order unambiguous.
94
+
95
+ ```php
96
+ // ❌ Bad — ambiguous: is it ($a ?: 'index ') . $i or $a ?: ('index ' . $i)?
97
+ $label = $a ?: 'index ' . $i;
98
+
99
+ // ✅ Good — explicit and unambiguous
100
+ $label = $a ?: ('index ' . $i);
101
+
102
+ // ❌ Bad — nested ternary/elvis without grouping
103
+ $value = $a ?: $b ?: $c . $d;
104
+
105
+ // ✅ Good
106
+ $value = $a ?: ($b ?: ($c . $d));
107
+ ```
108
+
109
+ This applies to **any** combination of operators where precedence is not immediately obvious.
110
+ When in doubt, add parentheses — readability beats brevity.
111
+
112
+ ## Performance Tips
113
+
114
+ ### ❌ Avoid `array_merge()` in Loops
115
+
116
+ `array_merge()` inside a loop copies the entire array each iteration → **O(n²)**.
117
+
118
+ ```php
119
+ // ❌ Bad — O(n²)
120
+ $all = [];
121
+ foreach ($pages as $page) {
122
+ $all = array_merge($all, $page->items());
123
+ }
124
+
125
+ // ✅ Good — O(n)
126
+ $all = [];
127
+ foreach ($pages as $page) {
128
+ array_push($all, ...$page->items());
129
+ }
130
+ ```
131
+
132
+ ## Traits
133
+
134
+ - One `use` statement per line:
135
+
136
+ ```php
137
+ // ✅ Good
138
+ use TraitA;
139
+ use TraitB;
140
+ ```
141
+
142
+ ## Interfaces
143
+
144
+ - Namespace: `App\Contracts` (grouped in subfolders)
145
+ - No `Interface` suffix: `SmsProvider`, not `SmsProviderInterface`
146
+
147
+ ## Return Types — `static` vs `self`
148
+
149
+ - **Prefer `static`** for fluent methods (setters, builders, chainable methods) — it preserves the actual class type in subclasses.
150
+ - **Use `self`** when it is intentionally more precise — e.g., `final` classes, named constructors, or when you explicitly want to lock the return type to the declaring class.
151
+ - This is especially important for Eloquent models, DTOs, and any class that may be extended.
152
+
153
+ ```php
154
+ // ✅ Preferred — preserves subclass type
155
+ public function setName(string $name): static
156
+ {
157
+ $this->name = $name;
158
+ return $this;
159
+ }
160
+
161
+ // ✅ Also fine — class is final, self is more precise
162
+ final class Config
163
+ {
164
+ public function setName(string $name): self
165
+ {
166
+ $this->name = $name;
167
+ return $this;
168
+ }
169
+ }
170
+ ```
171
+
172
+ ## Constructor Property Promotion
173
+
174
+ - Each property on a separate line, trailing comma on last property
175
+ - Preferred over manual assignment in constructor body
176
+
177
+ ## JSON Handling
178
+
179
+ - **Always validate** — `json_decode()` with `JSON_THROW_ON_ERROR`, never silent failure.
180
+ - **Fix malformed JSON** — trailing commas, single quotes, unquoted keys. Clean before parsing.
181
+ - **Pretty-print** — `JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE` for readability.
182
+ - **Type safety** — decode to typed DTOs or interfaces, not untyped arrays/objects.
183
+
184
+ ```php
185
+ // ✅ Safe JSON decoding
186
+ $data = json_decode($jsonString, true, 512, JSON_THROW_ON_ERROR);
187
+
188
+ // ❌ Silent failure
189
+ $data = json_decode($jsonString);
190
+ ```
191
+
@@ -0,0 +1,96 @@
1
+ # Git & Version Control Guidelines
2
+
3
+ > Project-specific Git conventions. Branch naming, commit messages, PR workflow.
4
+
5
+ **Related Skills:** `git-workflow`, `conventional-commits-writing`
6
+ **Related Rules:** `commit-conventions.md`
7
+
8
+ ## Branch Naming
9
+
10
+ ```
11
+ {type}/{ticket-id}/{short-description}
12
+ ```
13
+
14
+ Types: `feat/`, `fix/`, `hotfix/`, `chore/`, `docs/`, `test/`
15
+
16
+ ```
17
+ feat/DEV-1234/user-notification-preferences
18
+ fix/DEV-5678/null-pointer-in-import
19
+ chore/refactor-agent-setup
20
+ hotfix/DEV-999/critical-payment-bug
21
+ ```
22
+
23
+ ## Commit Messages
24
+
25
+ See `commit-conventions` rule for base format. Key type selection:
26
+
27
+ - `feat` — new capability. `fix` — bug/regression. `refactor` — structure only, NO behavior change.
28
+ - `docs` — docs only. `test` — tests only. `ci` — CI/workflows. `chore` — maintenance/cleanup.
29
+ - `perf` — performance. `build` — build tooling. `style` — formatting only.
30
+
31
+ **Scope:** Jira ID or area name (`api`, `auth`, `skills`). Only add when it improves clarity.
32
+
33
+ **Description:** Intent, not implementation. Imperative mood. Max 72 chars. No generic filler.
34
+
35
+ **Breaking:** `!` after type/scope or `BREAKING CHANGE:` footer.
36
+
37
+ ```
38
+ feat(api)!: rename invoice status values
39
+ refactor(auth)!: remove legacy session flow
40
+ ```
41
+
42
+ **Splitting:** Mixed concerns → split commits. Don't hide unrelated changes in one.
43
+
44
+ ```
45
+ refactor(skills): remove duplicate routing helpers
46
+ ci(lint): add skill-lint workflow
47
+ docs(readme): document new lint tasks
48
+ ```
49
+
50
+ **Squash merge titles:** Conventional Commit format, describe net effect, not every internal commit.
51
+
52
+ ### Anti-patterns
53
+
54
+ - `update stuff` / `fix bug` / `changes`
55
+ - `refactor` for bug fixes, `chore` for behavior changes
56
+ - Multiple unrelated concerns in one commit
57
+
58
+ ### Decision checklist
59
+
60
+ 1. Behavior changed? → `feat` or `fix`
61
+ 2. Structure only? → `refactor`
62
+ 3. Only docs/tests/CI? → `docs`/`test`/`ci`
63
+ 4. Scope useful or noise?
64
+ 5. Multiple commits hiding in one?
65
+
66
+ ### Examples by area
67
+
68
+ ```bash
69
+ # Features
70
+ feat(DEV-2133): send email to customer when product is shipped
71
+
72
+ # Bug fixes
73
+ fix(import): handle null values in equipment JSON
74
+
75
+ # Refactoring
76
+ refactor: extract user sync logic into dedicated service
77
+
78
+ # Skills / Rules / Agent config
79
+ refactor(skills): merge duplicate analysis skills
80
+ feat(rules): add analysis routing quality gate
81
+ fix(skills): restore concrete validation in skill reviewer
82
+
83
+ # CI / Tooling
84
+ ci(lint): add skill linter workflow
85
+ feat(linter): detect pointer-only skills
86
+
87
+ # Docs
88
+ docs(roadmap): add phase 3 implementation plan
89
+ docs(readme): clarify source-of-truth workflow
90
+ ```
91
+
92
+ ## Pull Requests
93
+
94
+ - PR title: Conventional Commit format — `feat(DEV-1234): short description`
95
+ - Fill PR template, link Jira ticket, ensure quality gates pass
96
+
@@ -0,0 +1,111 @@
1
+ # Job Guidelines
2
+
3
+ > Queue job conventions. Horizon tags, uniqueness, retries, rate limiting.
4
+
5
+ **Related Skills:** `jobs-events`, `performance`
6
+ **Related Guidelines:** [patterns/service-layer.md](patterns/service-layer.md)
7
+
8
+ ## Constructor
9
+
10
+ - Pass model **IDs** (not model instances) to reduce serialized job size
11
+ - Always set queue via `$this->onQueue()` — queue names from backed enums
12
+
13
+ ```php
14
+ public function __construct(public int $productId)
15
+ {
16
+ $this->onQueue(Queue::SEARCH->value);
17
+ }
18
+ ```
19
+
20
+ ## Tags (Horizon)
21
+
22
+ Always add `tags()` for filtering in Horizon:
23
+
24
+ ```php
25
+ public function tags(): array
26
+ {
27
+ return [
28
+ self::class,
29
+ Product::class . ':' . $this->productId,
30
+ ];
31
+ }
32
+ ```
33
+
34
+ ## Uniqueness
35
+
36
+ - Add `uniqueId()` if the job should not run twice concurrently
37
+ - **Must** also set `$uniqueFor` to prevent stuck locks:
38
+
39
+ ```php
40
+ public int $uniqueFor = 3600;
41
+
42
+ public function uniqueId(): string
43
+ {
44
+ return (string) $this->productId;
45
+ }
46
+ ```
47
+
48
+ ## Error Handling & Retries
49
+
50
+ - Set `$maxExceptions` to limit unhandled exceptions before failing
51
+ - Define `backoff()` for retry intervals:
52
+
53
+ ```php
54
+ public int $maxExceptions = 3;
55
+
56
+ /** @return int[] */
57
+ public function backoff(): array
58
+ {
59
+ return [5, 10, 30];
60
+ }
61
+ ```
62
+
63
+ ## Rate Limiting (External APIs)
64
+
65
+ Use `WithoutOverlapping` middleware for per-customer sequential execution:
66
+
67
+ ```php
68
+ public function middleware(): array
69
+ {
70
+ return [new WithoutOverlapping($this->customerId)];
71
+ }
72
+ ```
73
+
74
+ ## Serialization
75
+
76
+ - Pass IDs or compact DTOs — not full Eloquent models with loaded relations.
77
+ - Model may change between dispatch and execution — design for this.
78
+ - Never serialize closures, service instances, or large nested structures.
79
+
80
+ ## Idempotency
81
+
82
+ - Assume queued jobs may run more than once.
83
+ - Design handlers so retries don't create duplicate side effects.
84
+ - Especially careful with: emails, external APIs, payments, imports, record creation.
85
+ - Add explicit guards when duplicate execution would be harmful.
86
+
87
+ ## Events
88
+
89
+ - Use events for meaningful occurrences, not every internal method call.
90
+ - Past-tense naming: `OrderPlaced`, `InvoicePaid`, `UserRegistered`.
91
+ - Keep event payloads focused.
92
+ - **Laravel 11+:** automatic event/listener discovery — no manual registration.
93
+
94
+ ## Listeners
95
+
96
+ - One responsibility per listener.
97
+ - Delegate large business logic to services.
98
+ - Avoid deep hidden chains of listeners.
99
+
100
+ ## Dispatching
101
+
102
+ - Be explicit: immediately, after response, or on queue.
103
+ - Don't change sync/async behavior casually in existing flows.
104
+
105
+ ## General
106
+
107
+ - Avoid batches unless truly needed (relies on MySQL)
108
+ - Use Service classes for complex business logic inside `handle()`
109
+ - `ShouldQueue` is required for queued execution — without it, runs synchronously
110
+ - Set `$tries` and `$backoff` — unlimited retries can overwhelm the queue
111
+
@@ -0,0 +1,71 @@
1
+ # Livewire Guidelines
2
+
3
+ > Livewire component conventions — state, actions, forms, performance, Alpine.js, templates.
4
+
5
+ **Related Skills:** `livewire`, `flux`, `blade-ui`
6
+
7
+ ## Component Structure (Livewire 3.x)
8
+
9
+ ```php
10
+ #[Layout('layouts.app')]
11
+ #[Title('User List')]
12
+ final class UserList extends Component
13
+ {
14
+ public string $search = '';
15
+
16
+ public function render(): \Illuminate\View\View
17
+ {
18
+ return view('livewire.user-list', [
19
+ 'users' => User::query()->where('name', 'like', '%' . $this->search . '%')->paginate(20),
20
+ ]);
21
+ }
22
+ }
23
+ ```
24
+
25
+ ## State Management
26
+
27
+ - Use typed public properties for component state.
28
+ - Keep state minimal — only what the UI needs.
29
+ - `#[Locked]` for properties that must not be tampered with from frontend.
30
+ - `#[Url]` for properties that should sync with URL query string.
31
+
32
+ ## Actions
33
+
34
+ - Public methods are callable from frontend.
35
+ - Validate input before processing: `$this->validate()`.
36
+ - `$this->dispatch()` for cross-component communication (Livewire 3).
37
+
38
+ ## Forms
39
+
40
+ - Use Livewire Form Objects (`Livewire\Form`) for complex forms (Livewire 3).
41
+ - `wire:model` for two-way binding.
42
+ - `wire:model.live` for real-time updates, `wire:model.debounce` for delayed.
43
+ - Validate with Laravel validation rules.
44
+
45
+ ## Performance
46
+
47
+ - `wire:key` on list items for DOM tracking.
48
+ - `#[Computed]` for derived data cached per request (Livewire 3).
49
+ - Avoid large datasets — paginate or filter.
50
+ - `wire:loading` for loading indicators.
51
+
52
+ ## Alpine.js Integration
53
+
54
+ - `@entangle` to share state between Livewire and Alpine.
55
+ - `$wire` in Alpine to call Livewire methods.
56
+ - Alpine for client-side-only interactions (dropdowns, animations).
57
+
58
+ ## Template Rules
59
+
60
+ - Every Livewire view must have **one root element** (usually `<div>`).
61
+ - Use `wire:key` on dynamic lists.
62
+ - Use `wire:loading` for user feedback.
63
+
64
+ ## Do NOT
65
+
66
+ - Put heavy business logic in components — delegate to services.
67
+ - Use Livewire for purely static pages — use Blade.
68
+ - Expose sensitive data as public properties.
69
+ - Nest Livewire components deeply — keep tree shallow.
70
+ - Put heavy computation in `render()` — runs on every update.
71
+ - Skip `wire:key` on list items — causes DOM diffing issues.
@@ -0,0 +1,79 @@
1
+ # Logging Guidelines
2
+
3
+ > Logging conventions — levels, structured context, what to log, Sentry patterns.
4
+
5
+ **Related Skills:** `logging-monitoring`, `grafana`
6
+
7
+ ## Use Laravel's Log Facade
8
+
9
+ ```php
10
+ use Illuminate\Support\Facades\Log;
11
+
12
+ // Standard logging
13
+ Log::info('Import completed', ['customer_id' => $customerId, 'count' => $count]);
14
+
15
+ // Channel-specific
16
+ Log::channel('loki')->info('Import snapshot', ['data' => $snapshotData]);
17
+ ```
18
+
19
+ ## Structured Context — Always
20
+
21
+ ```php
22
+ // ✅ Correct — structured context
23
+ Log::warning('Import failed', ['customer_id' => $id, 'error' => $message]);
24
+
25
+ // ❌ Wrong — interpolated message
26
+ Log::warning("Import failed for customer {$id}: {$message}");
27
+ ```
28
+
29
+ Context keys must be `snake_case` — consistency matters for Loki queries.
30
+
31
+ ## Log Levels
32
+
33
+ | Level | When | Example |
34
+ |---|---|---|
35
+ | `emergency` | System unusable | Database unreachable |
36
+ | `critical` | Immediate action required | Payment gateway down |
37
+ | `error` | Needs investigation | Import failed for customer |
38
+ | `warning` | Unusual, may need attention | Rate limit approaching |
39
+ | `info` | Significant business events | Import completed, user created |
40
+ | `debug` | Diagnostic (dev/staging only) | Query params, intermediate values |
41
+
42
+ ## What to Log
43
+
44
+ - Business events: imports, state transitions, user actions
45
+ - Error context: what was happening, with which data, for which customer
46
+ - External interactions: API calls, webhook receipts
47
+ - Performance markers: long operations, batch sizes, durations
48
+
49
+ ## What NOT to Log
50
+
51
+ - Passwords, tokens, API keys, PII (GDPR)
52
+ - Entire request/response bodies — log summary or hash
53
+ - Expected conditions at high levels (validation failures ≠ `error`)
54
+ - Every loop iteration — log the summary
55
+
56
+ ## Correlation IDs
57
+
58
+ For multi-step operations:
59
+
60
+ ```php
61
+ $correlationId = Str::uuid()->toString();
62
+ Log::info('Import started', ['correlation_id' => $correlationId, ...]);
63
+ Log::info('Import completed', ['correlation_id' => $correlationId, ...]);
64
+ ```
65
+
66
+ ## Sentry
67
+
68
+ - Use `MonitoringHelper::captureException()` — never Sentry SDK directly.
69
+ - Breadcrumbs: use `BreadcrumbType` and `BreadcrumbLevel` enums.
70
+ - Context names: use `ContextName` enum.
71
+ - Sentry has 200KB event size limit — large context gets truncated.
72
+
73
+ ## Do NOT
74
+
75
+ - Use `var_dump()`, `print_r()`, `dd()` — disallowed by PHPStan.
76
+ - Use Sentry SDK directly — use `MonitoringHelper`.
77
+ - Hardcode log channel names in business logic — use config.
78
+ - Log at `error` for expected/handled conditions — use `warning` or `info`.
79
+ - Interpolate variables into log messages — use context array.
@@ -0,0 +1,89 @@
1
+ # Naming Guidelines
2
+
3
+ > Naming conventions — PHP classes, database, routes, variables, modules, agent infrastructure.
4
+
5
+ **Related Skills:** none (naming is a convention — use this guideline directly)
6
+ **Related Guidelines:** [controllers.md](controllers.md), [resources.md](resources.md)
7
+
8
+ ## PHP Classes
9
+
10
+ | Type | Pattern | Example |
11
+ |---|---|---|
12
+ | Controller | `{Action}{Entity}Controller` | `CreateProjectController` |
13
+ | FormRequest | `{Action}{Entity}Request` | `UpdateProjectRequest` |
14
+ | Resource | `{Entity}Resource` | `ProjectResource` |
15
+ | Minimal Resource | `{Entity}MinimalResource` | `ProjectMinimalResource` |
16
+ | Simple Resource | `Simple{Entity}Resource` | `SimpleUserResource` |
17
+ | Service | `{Domain}Service` | `ImportService` |
18
+ | DTO | `{Entity}{Purpose}Dto` | `ProjectCreateDto` |
19
+ | Job | `{Action}{Entity}Job` | `SyncCustomerJob` |
20
+ | Event | `{Entity}{PastTense}` | `ProjectCreated` |
21
+ | Enum | `{Entity}{Concept}` | `ImportStatus` |
22
+ | Policy | `{Entity}Policy` | `ProjectPolicy` |
23
+ | Interface | `{Capability}` (no suffix) | `SmsProvider` |
24
+
25
+ **Controller special cases:** List uses **plural** (`ListProjectsController`), all others singular.
26
+
27
+ ## Database
28
+
29
+ | Element | Convention | Example |
30
+ |---|---|---|
31
+ | Tables | snake_case, plural | `projects`, `import_rows` |
32
+ | Columns | snake_case | `created_at`, `user_id` |
33
+ | Foreign keys | `{entity}_id` | `project_id` |
34
+ | Booleans | `is_` or `has_` prefix | `is_active`, `has_permission` |
35
+ | Timestamps | `_at` suffix | `synced_at`, `imported_at` |
36
+ | Pivot tables | Alphabetical, singular | `project_user` |
37
+
38
+ ## Routes
39
+
40
+ | Element | Convention | Example |
41
+ |---|---|---|
42
+ | URL segments | kebab-case, plural | `/api/v1/import-uploads` |
43
+ | Route names | dot notation | `v1.import-uploads.index` |
44
+ | Route params | camelCase | `{importUpload}` |
45
+ | API versioning | Prefix | `/api/v1/`, `/api/v2/` |
46
+
47
+ ## Variables
48
+
49
+ | Element | Convention | Example |
50
+ |---|---|---|
51
+ | Variables | camelCase | `$projectId` |
52
+ | Constants | UPPER_SNAKE_CASE | `MAX_RETRIES` |
53
+ | Array keys | snake_case | `['user_id' => 1]` |
54
+ | Config keys | snake_case, dot notation | `config('import.max_rows')` |
55
+ | Env vars | UPPER_SNAKE_CASE | `APP_ENV` |
56
+
57
+ ## Modules
58
+
59
+ | Element | Convention | Example |
60
+ |---|---|---|
61
+ | Directory | PascalCase | `app/Modules/Import/` |
62
+ | Namespace | `App\Modules\{Name}\App\` | `App\Modules\Import\App\Services\` |
63
+ | Route prefix | kebab-case | `import`, `client-software` |
64
+
65
+ ## Agent Infrastructure
66
+
67
+ | Element | Convention | Example |
68
+ |---|---|---|
69
+ | Skills | kebab-case | `bug-analyzer` |
70
+ | Rules | kebab-case | `php-coding` |
71
+ | Commands | kebab-case | `feature-plan` |
72
+ | Guidelines | kebab-case | `controllers.md` |
73
+
74
+ ## Enums
75
+
76
+ - PascalCase class name
77
+ - UPPERCASE cases: `case PENDING;`, `case IN_PROGRESS;`
78
+ - Backed enums for DB values: `case PENDING = 'pending';`
79
+
80
+ ## Interfaces
81
+
82
+ - Namespace: `App\Contracts\{Subdomain}\`
83
+ - No `Interface` suffix: `SmsProvider`, not `SmsProviderInterface`
84
+
85
+ ## Do NOT
86
+
87
+ - Use abbreviations that aren't universally understood.
88
+ - Mix naming conventions within the same context.
89
+ - Use generic names (Manager, Helper, Utils) without specificity.
@@ -0,0 +1,57 @@
1
+ # Dependency Injection & Interfaces
2
+
3
+ > Decouple classes from concrete implementations.
4
+
5
+ ## Idea
6
+
7
+ Classes depend on **interfaces** (contracts), not on concrete classes.
8
+ Laravel's Service Container resolves the binding at runtime.
9
+
10
+ ## When to Use
11
+
12
+ ✅ Multiple implementations possible (e.g., payment gateways, notification channels)
13
+ ✅ External services that need mocking in tests
14
+ ✅ Repository pattern (contract + database implementation)
15
+
16
+ ## When NOT to Use
17
+
18
+ ❌ Only one implementation exists and is unlikely to change — just inject the concrete class
19
+ ❌ Simple utility classes with no side effects
20
+
21
+ ## Example
22
+
23
+ ```php
24
+ // Contract
25
+ interface PaymentGateway
26
+ {
27
+ public function charge(int $amountInCents): PaymentResult;
28
+ }
29
+
30
+ // Implementation
31
+ final class StripePaymentGateway implements PaymentGateway
32
+ {
33
+ public function charge(int $amountInCents): PaymentResult
34
+ {
35
+ // Stripe API call...
36
+ }
37
+ }
38
+ ```
39
+
40
+ ## Binding in ServiceProvider
41
+
42
+ ```php
43
+ $this->app->bind(PaymentGateway::class, StripePaymentGateway::class);
44
+ ```
45
+
46
+ ## Naming
47
+
48
+ - Interfaces (contracts): descriptive name without suffix — `PaymentGateway`, `SmsProvider`
49
+ - Implementations: prefixed with technology — `StripePaymentGateway`, `TwilioSmsProvider`
50
+ - Namespace: `App\Contracts\` for interfaces
51
+
52
+ ## Rules
53
+
54
+ - One interface = one responsibility (Interface Segregation)
55
+ - Bind in the module's ServiceProvider, not in AppServiceProvider
56
+ - Do **NOT** mark implementation classes `final` if they need mocking in tests
57
+