@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,81 @@
1
+ # Artisan Command Guidelines
2
+
3
+ > Console command conventions — naming, structure, input/output, safety, scheduling.
4
+
5
+ **Related Skills:** `artisan-commands`
6
+ **Related Guidelines:** [patterns/service-layer.md](patterns/service-layer.md)
7
+
8
+ ## Naming
9
+
10
+ - Clear, intention-revealing names: `users:cleanup`, `orders:sync`, `reports:generate`
11
+ - Follow Laravel naming style: `{domain}:{action}`
12
+
13
+ ## Structure
14
+
15
+ - Commands **orchestrate** — they accept input, validate conditions, call services, report results.
16
+ - Heavy business logic belongs in services/actions, not in `handle()`.
17
+ - Keep `handle()` readable and linear.
18
+
19
+ ## Input
20
+
21
+ - **Arguments** for required primary input.
22
+ - **Options** for toggles, filters, execution modes.
23
+ - Validate critical inputs before expensive/destructive work.
24
+ - Provide safe defaults where appropriate.
25
+ - Use `--force` flag for destructive commands — always check it.
26
+
27
+ ## Output
28
+
29
+ - Use `$this->info()`, `$this->warn()`, `$this->error()`, `$this->table()`, progress bars.
30
+ - Keep output readable for both humans and logs.
31
+ - Don't flood the console — use verbose mode for noisy output.
32
+ - `$this->info()` is suppressed in quiet mode — use `$this->line()` for critical info.
33
+
34
+ ## Interactive vs Automated
35
+
36
+ - Use confirmations for destructive operations in manual commands.
37
+ - **Never** add interactive prompts to scheduler/CI commands.
38
+ - Support non-interactive execution (`--no-interaction`).
39
+
40
+ ## Batch and Long-Running
41
+
42
+ - Use chunking, cursors, or batching for large datasets.
43
+ - Report progress for long-running tasks.
44
+ - Handle partial failures intentionally.
45
+ - Avoid loading large datasets into memory at once.
46
+
47
+ ## Safety
48
+
49
+ - Treat cleanup, repair, sync, and deletion as high-risk.
50
+ - Add safeguards for destructive operations.
51
+ - Be explicit about dry-run behavior if supported.
52
+ - Never perform irreversible work silently.
53
+ - Add environment checks for production commands.
54
+
55
+ ## Scheduling
56
+
57
+ Commands for the scheduler must:
58
+ - Run non-interactively
59
+ - Be idempotent where possible
60
+ - Log/report useful status
61
+ - Fail loudly enough for monitoring
62
+
63
+ ## Error Handling
64
+
65
+ - Fail with meaningful messages.
66
+ - Don't swallow exceptions silently.
67
+ - Return appropriate exit codes.
68
+ - Surface enough context to diagnose without exposing sensitive data.
69
+
70
+ ## Testing
71
+
72
+ - Test behavior, not just class existence.
73
+ - Assert: exit codes, console output, side effects, option/argument behavior.
74
+
75
+ ## Do NOT
76
+
77
+ - Put business logic in commands — delegate to services.
78
+ - Use `dd()` or `var_dump()` — use `$this->info()` / `$this->error()`.
79
+ - Skip input validation in command signatures.
80
+ - Make scheduled commands interactive.
81
+ - Run destructive operations without safeguards.
@@ -0,0 +1,78 @@
1
+ # Blade UI Guidelines
2
+
3
+ > Blade template conventions — views, components, partials, forms, escaping, styling.
4
+
5
+ **Related Skills:** `blade-ui`, `livewire`, `flux`
6
+ **Related Guidelines:** [controllers.md](controllers.md)
7
+
8
+ ## View Structure
9
+
10
+ - Use the project's existing layout system.
11
+ - Organize templates into clear sections.
12
+ - Extract repeated sections into partials or components.
13
+ - Prefer semantic HTML.
14
+ - Avoid deeply nested conditionals — use a partial/component instead.
15
+
16
+ ## Blade Logic
17
+
18
+ - Use Blade directives for **simple presentation logic** only.
19
+ - Keep conditionals small and view-focused.
20
+ - No business calculations or database access in templates.
21
+ - No heavy data transformations in Blade.
22
+ - Move non-trivial formatting to controllers, view models, presenters, or components.
23
+
24
+ ## Components
25
+
26
+ - Use Blade components for reusable UI pieces (when project already uses them).
27
+ - Keep component APIs clean and explicit — clear prop/slot names.
28
+ - Don't create a component for something used only once (unless it significantly improves clarity).
29
+
30
+ ## Partials
31
+
32
+ - Use partials for repeated markup fragments when a full component is unnecessary.
33
+ - Name partials clearly per project conventions.
34
+ - Avoid deep partial hierarchies that make UI hard to trace.
35
+
36
+ ## Forms
37
+
38
+ - Follow the project's form style for labels, inputs, validation messages, old values, session feedback.
39
+ - Use CSRF protection correctly.
40
+ - Render validation errors consistently.
41
+ - Preserve user input using project conventions.
42
+ - Reuse existing field components/partials — don't duplicate.
43
+
44
+ ## Validation and Feedback
45
+
46
+ - Display validation errors clearly and consistently.
47
+ - Show success/error flash messages per project conventions.
48
+ - Keep feedback near the relevant UI.
49
+ - Don't invent a second feedback pattern if one already exists.
50
+
51
+ ## Escaping and Output Safety
52
+
53
+ - Escape output by default — use `{{ }}`.
54
+ - Use `{!! !!}` only when intentionally safe and already sanitized.
55
+ - Be careful with rich content, HTML snippets, and user-generated content.
56
+
57
+ ## Styling
58
+
59
+ - Reuse existing CSS/Tailwind conventions.
60
+ - Don't introduce a new styling approach in one template.
61
+ - Match class usage with neighboring templates.
62
+ - If the project uses design-system components, follow them.
63
+ - Always use utility classes — not inline styles.
64
+
65
+ ## Accessibility
66
+
67
+ - Use labels for form fields.
68
+ - Prefer semantic elements.
69
+ - Add ARIA only where it meaningfully improves accessibility.
70
+
71
+ ## Do NOT
72
+
73
+ - Place business logic in Blade templates.
74
+ - Query the database from views.
75
+ - Echo unescaped user data without explicit sanitization.
76
+ - Inline large blocks of CSS or JS — use asset files.
77
+ - Duplicate repeated markup when a component/partial exists.
78
+ - `@include` shares parent scope — components don't. Know the difference.
@@ -0,0 +1,90 @@
1
+ # Controller Guidelines
2
+
3
+ > Project-specific controller conventions. Thin controllers, single-action pattern, OpenAPI annotations.
4
+
5
+ **Related Skills:** `api-endpoint`, `laravel`, `openapi`
6
+ **Related Guidelines:** [validations.md](validations.md), [resources.md](resources.md)
7
+
8
+ ## Core Rules
9
+
10
+ - **Single Action Controllers** only (`__invoke()`) — no Resource Controllers
11
+ - Each controller must have: FormRequest, OpenAPI schema attributes
12
+ - Use Resource responses where applicable (not all controllers return JSON — e.g. Delete returns an empty response, file downloads return a file stream)
13
+ - Thin controllers — business logic in Services/Actions
14
+
15
+ ## Naming Schema
16
+
17
+ | Action | Controller | FormRequest | Resource |
18
+ |---------|-----------------------------|----------------------------|----------------------|
19
+ | Create | `Create{Entity}Controller` | `Create{Entity}Request` | `{Entity}Resource` |
20
+ | List | `List{Entities}Controller` | `List{Entities}Request` | `{Entity}Resource` |
21
+ | Show | `Show{Entity}Controller` | `Show{Entity}Request` | `{Entity}Resource` |
22
+ | Update | `Update{Entity}Controller` | `Update{Entity}Request` | `{Entity}Resource` |
23
+ | Delete | `Delete{Entity}Controller` | `Delete{Entity}Request` | empty `Response` |
24
+ | Restore | `Restore{Entity}Controller` | `Restore{Entity}Request` | `{Entity}Resource` |
25
+
26
+ > List uses **plural** entity name. All others use **singular**.
27
+
28
+ ## HTTP Actions
29
+
30
+ | Action | Method | Path | Notes |
31
+ |---------|--------|----------------------|-------------------------------------------|
32
+ | Create | POST | `/api/{entities}` | JSON body |
33
+ | List | GET | `/api/{entities}` | Filters, Pagination |
34
+ | Show | GET | `/api/{entities}/{id}` | |
35
+ | Update | PATCH | `/api/{entities}/{id}` | JSON body |
36
+ | Delete | DELETE | `/api/{entities}/{id}` | `?force=true` for hard delete |
37
+ | Restore | GET | `/api/{entities}/{id}/restore` | |
38
+
39
+ ## Controller Pattern
40
+
41
+ ```php
42
+ class CreateLinkController extends Controller
43
+ {
44
+ #[CreateLinkRequestSchema(path: '/links', version: '1', resource: LinkResource::class)]
45
+ #[CreateResourceResponseSchema(LinkResource::class)]
46
+ #[ValidationErrorResponse]
47
+ public function __invoke(CreateLinkRequest $request): LinkResource
48
+ {
49
+ $link = Link::create($request->validated());
50
+ return LinkResource::make($link);
51
+ }
52
+ }
53
+ ```
54
+
55
+ **Key points:**
56
+ - Use `$request->validated()` — never `$request->all()`
57
+ - Use `Resource::make()` instead of `new Resource()` (easier to test)
58
+ - Simple CRUD can live directly in the controller
59
+ - Complex logic → Service class / Repository
60
+
61
+ ## Filters & Ordering
62
+
63
+ Use the `pipeline` / `paginatedPipeline` macros with filter classes:
64
+
65
+ ```php
66
+ $links = Link::query()
67
+ ->paginatedPipeline([
68
+ StringFilter::on('text')->isLike()->some(),
69
+ DateFilter::on('created_at')->all(),
70
+ OrderFilter::on(['id', 'name'])->default(['id' => 'asc']),
71
+ ]);
72
+ ```
73
+
74
+ ## OpenAPI Documentation
75
+
76
+ - Always extend `{Action}ResourceRequestSchema` for Create/Update/List (keeps controllers clean)
77
+ - Show/Delete/Restore use the base schema classes directly
78
+ - No per-endpoint auth/permission error schemas (documented globally)
79
+ - **`ValidationErrorResponse`** must be added to **every** controller that accepts input (Create, Update, etc.)
80
+ - **`ResourceNotFoundResponse`** must be added to every controller that queries a single entity (Show, Update, Delete, Restore)
81
+
82
+ | Action | Request Schema | Response Schema | Error Responses |
83
+ |---------|--------------------------|----------------------------|----------------------------------------------------|
84
+ | Create | Extended (custom class) | `CreateResourceResponseSchema` | `ValidationErrorResponse` |
85
+ | List | Extended (custom class) | `ListResourceResponseSchema` | |
86
+ | Show | `ShowResourceRequestSchema` | `ShowResourceResponseSchema` | `ResourceNotFoundResponse` |
87
+ | Update | Extended (custom class) | `UpdateResourceResponseSchema` | `ValidationErrorResponse`, `ResourceNotFoundResponse` |
88
+ | Delete | `DeleteResourceRequestSchema` | `DeleteResourceResponseSchema` | `ResourceNotFoundResponse` |
89
+ | Restore | `RestoreResourceRequestSchema` | `RestoreResourceResponseSchema` | `ResourceNotFoundResponse` |
90
+
@@ -0,0 +1,111 @@
1
+ # Database Guidelines
2
+
3
+ > Database conventions — indexing, query optimization, migrations, transactions, multi-connection patterns.
4
+
5
+ **Related Skills:** `database`, `eloquent`, `multi-tenancy`
6
+ **Related Guidelines:** [eloquent.md](eloquent.md)
7
+
8
+ ## Indexing
9
+
10
+ ### When to add indexes
11
+
12
+ - Columns in `WHERE` clauses
13
+ - Columns in `JOIN` conditions
14
+ - Columns in `ORDER BY` (especially with pagination)
15
+ - Foreign key columns (Laravel adds with `foreignId()`)
16
+
17
+ ### When NOT to add indexes
18
+
19
+ - Boolean columns with low selectivity (99% same value)
20
+ - Small tables (< 1000 rows)
21
+ - Frequently updated columns (indexes slow writes)
22
+
23
+ ### Composite indexes
24
+
25
+ Order matters — most selective column first:
26
+
27
+ ```php
28
+ $table->index(['customer_id', 'created_at']);
29
+ ```
30
+
31
+ ## Query Optimization
32
+
33
+ ### EXPLAIN analysis
34
+
35
+ | Column | Bad value | Meaning |
36
+ |---|---|---|
37
+ | `type` | `ALL` | Full table scan — needs index |
38
+ | `rows` | High number | Too many rows examined |
39
+ | `Extra` | `Using filesort` | Sorting without index |
40
+ | `Extra` | `Using temporary` | Temp table — optimize GROUP BY/DISTINCT |
41
+ | `key` | `NULL` | No index used |
42
+
43
+ Good values: `type` = `ref`, `eq_ref`, `const`; `Extra` = `Using index`.
44
+
45
+ ### Anti-patterns
46
+
47
+ | Anti-pattern | Fix |
48
+ |---|---|
49
+ | `SELECT *` in production | Select only needed columns |
50
+ | `LIKE '%search%'` | Fulltext search or `LIKE 'search%'` |
51
+ | `OFFSET` on large tables | Cursor pagination |
52
+ | Subquery in WHERE | Rewrite as JOIN |
53
+ | `ORDER BY RAND()` | Application-level randomization |
54
+
55
+ ### Pagination
56
+
57
+ Always paginate list endpoints — never `get()` on unbounded queries:
58
+
59
+ ```php
60
+ // Standard
61
+ $users = User::query()->paginate(15);
62
+
63
+ // Cursor pagination for large tables
64
+ $users = User::query()->orderBy('id')->cursorPaginate(15);
65
+ ```
66
+
67
+ ## Migrations
68
+
69
+ - Use `php artisan make:migration` to generate.
70
+ - Use `decimal` for money — never `float`.
71
+ - Add foreign keys with `constrained()` + proper `onDelete()`.
72
+ - Always add indexes for searchable/filterable columns.
73
+ - One logical change per migration.
74
+ - Make reversible when possible (`down()` method).
75
+
76
+ ### Multi-connection migrations
77
+
78
+ ```php
79
+ Schema::connection('tenant_database')->create('projects', function (Blueprint $table) {
80
+ // ...
81
+ });
82
+ ```
83
+
84
+ ## Transactions
85
+
86
+ ```php
87
+ // Single connection
88
+ DB::transaction(function () use ($order, $items): void {
89
+ $order->save();
90
+ $order->items()->createMany($items);
91
+ });
92
+
93
+ // Explicit connection
94
+ DB::connection('tenant_database')->transaction(function () {
95
+ // Tenant-specific operations
96
+ });
97
+ ```
98
+
99
+ ## Multi-Connection Architecture
100
+
101
+ - Always specify `$connection` on models.
102
+ - Use explicit connection in migrations targeting specific databases.
103
+ - Transactions are per-connection — cross-connection requires manual begin/commit/rollback.
104
+
105
+ ## Do NOT
106
+
107
+ - Use raw SQL with user input — always parameterize.
108
+ - Use `float` for money — use `decimal`.
109
+ - Use `get()` or `all()` on large tables without pagination.
110
+ - Run migrations without specifying connection in multi-DB project.
111
+ - Add indexes without checking existing ones — duplicates waste write performance.
@@ -0,0 +1,208 @@
1
+ # Eloquent Model Guidelines
2
+
3
+ > Project-specific Eloquent conventions. Getter/setter pattern, casts, fillable, defaults.
4
+
5
+ **Related Skills:** `eloquent`, `database`, `migration-creator`
6
+ **Related Guidelines:** [patterns/repositories.md](patterns/repositories.md)
7
+
8
+ ## Core Rules
9
+
10
+ - Add `$attributes` array for all columns with database defaults
11
+ - Use `$casts` for type casting (encrypted, arrays, enums, dates, booleans)
12
+ - Every model attribute MUST have a **getter** and a **fluent setter**
13
+ - Fluent setters: prefer `static` as return type (preserves subclass types). Use `self` when the class is `final` or when `self` is intentionally more precise.
14
+
15
+ ## Getter/Setter Architecture
16
+
17
+ There are **two layers** — inside the model vs. outside the model. Never mix them up.
18
+
19
+ ### Inside the model (implementing getters/setters)
20
+
21
+ **ALWAYS** use `getAttribute()` / `setAttribute()` — these are the Eloquent internals
22
+ that respect `$casts`, accessors, and mutators. **NEVER** use `$this->column_name`
23
+ magic property access inside the model — not for attributes, not for relationships.
24
+
25
+ **Cast the return value** when the attribute is NOT in `$casts`:
26
+
27
+ ```php
28
+ // ✅ Good — getAttribute() with explicit cast (attribute NOT in $casts)
29
+ public function isActive(): bool
30
+ {
31
+ return (bool) $this->getAttribute('active');
32
+ }
33
+
34
+ // user_id is not in $casts, so cast explicitly
35
+ public function getUserId(): ?int
36
+ {
37
+ $value = $this->getAttribute('user_id');
38
+
39
+ return null === $value ? null : (int) $value;
40
+ }
41
+
42
+ // ✅ Good — NO manual cast needed (attribute IS in $casts)
43
+ // protected $casts = ['is_paused' => 'boolean'];
44
+ public function isPaused(): bool
45
+ {
46
+ return $this->getAttribute('is_paused');
47
+ }
48
+
49
+ // ❌ Bad — magic property access
50
+ public function isActive(): bool
51
+ {
52
+ return (bool) $this->active;
53
+ }
54
+ ```
55
+
56
+ Fluent setter pattern:
57
+ ```php
58
+ public function setUserId(?int $userId): static
59
+ {
60
+ $this->setAttribute('user_id', $userId);
61
+ return $this;
62
+ }
63
+ ```
64
+
65
+ ### Outside the model (calling code: services, controllers, jobs, tests, etc.)
66
+
67
+ **Always use getters and setters. Never use `getAttribute()` / `setAttribute()` directly.**
68
+
69
+ ```php
70
+ // ✅ Good — use getters/setters
71
+ $config->isPaused();
72
+ $config->setIsPaused(true)->save();
73
+ $name = $customer->getName();
74
+
75
+ // ❌ Bad — calling getAttribute/setAttribute from outside the model
76
+ $config->getAttribute('is_paused');
77
+ $config->setAttribute('is_paused', true)->save();
78
+
79
+ // ❌ Bad — direct property access
80
+ $config->is_paused;
81
+ $config->is_paused = true;
82
+ ```
83
+
84
+ **Why:** Getters/setters provide type safety, IDE autocompletion, and a stable API.
85
+ If the underlying column changes, only the model internals need updating.
86
+
87
+ ## Relationship Getters
88
+
89
+ Every relationship MUST have a **typed getter method** placed directly **above** the relationship method.
90
+ Outside the model, always use the getter — never access the magic property.
91
+
92
+ ```php
93
+ // ✅ Good — getter uses getAttribute(), placed above the relationship method
94
+ public function getEquipment(): ?Equipment
95
+ {
96
+ return $this->getAttribute('equipment');
97
+ }
98
+
99
+ public function equipment(): BelongsTo
100
+ {
101
+ return $this->belongsTo(Equipment::class, 'item_id', 'item_id');
102
+ }
103
+
104
+ // ✅ Good — calling code uses getter
105
+ $equipment = $repair->getEquipment();
106
+
107
+ // ❌ Bad — magic property inside getter
108
+ public function getEquipment(): ?Equipment
109
+ {
110
+ return $this->equipment; // NEVER do this
111
+ }
112
+
113
+ // ❌ Bad — accessing magic property from outside the model
114
+ $equipment = $repair->equipment;
115
+ ```
116
+
117
+ When checking if a relationship result exists, use `instanceof` instead of `null ===`:
118
+
119
+ ```php
120
+ // ✅ Good — type-safe check
121
+ if (!$equipment instanceof Equipment) {
122
+ return;
123
+ }
124
+
125
+ // ❌ Bad — less type-safe
126
+ if (null === $equipment) {
127
+ return;
128
+ }
129
+ ```
130
+
131
+ ## Observers over `booted()`
132
+
133
+ Do NOT use `booted()` / `boot()` for model lifecycle hooks (`saving`, `saved`, `deleted`, etc.).
134
+ Use a dedicated **Observer** class registered via the `#[ObservedBy]` attribute.
135
+
136
+ ```php
137
+ // ✅ Good — Observer registered via attribute
138
+ #[ObservedBy([RepairObserver::class])]
139
+ class Repair extends Model { /* ... */ }
140
+
141
+ // ❌ Bad — lifecycle logic in booted()
142
+ class Repair extends Model
143
+ {
144
+ protected static function booted(): void
145
+ {
146
+ static::saving(static function (Repair $repair): void { /* ... */ });
147
+ }
148
+ }
149
+ ```
150
+
151
+ **Why:** Observers keep models slim, make lifecycle logic testable and discoverable,
152
+ and follow the established project pattern (all other models use `#[ObservedBy]`).
153
+
154
+ ## Default Attributes
155
+
156
+ ```php
157
+ protected $attributes = [
158
+ 'options' => [],
159
+ 'default_role' => 'staff',
160
+ 'verified' => false,
161
+ ];
162
+ ```
163
+
164
+ ### Expressive Setters
165
+
166
+ Prefer expressive method names over generic setters when they improve readability:
167
+
168
+ ```php
169
+ // ✅ Better — intent is clear
170
+ $model->activate();
171
+
172
+ // 🆗 OK but less expressive
173
+ $model->setActive(true);
174
+ ```
175
+
176
+ ## Model Updates
177
+
178
+ Always use validated data — never `$request->all()`:
179
+
180
+ ```php
181
+ // ✅ Good
182
+ $model->update($request->validated());
183
+
184
+ // ❌ Bad — passes unvalidated data
185
+ $model->update($request->all());
186
+ ```
187
+
188
+ ## Prefer Model Casts — No Redundant Manual Casting
189
+
190
+ When an attribute is defined in `$casts` (or `casts()` method), do **not** manually cast it again
191
+ in getters. The model already handles the conversion.
192
+
193
+ ```php
194
+ // ✅ Good — no manual cast needed, model handles it
195
+ public function isPaused(): bool
196
+ {
197
+ return $this->getAttribute('is_paused');
198
+ }
199
+
200
+ // ❌ Bad — redundant (bool) cast when already in $casts
201
+ public function isPaused(): bool
202
+ {
203
+ return (bool) $this->getAttribute('is_paused');
204
+ }
205
+ ```
206
+
207
+ This applies to all cast types: `boolean`, `integer`, `float`, `array`, `datetime`, enums, etc.
208
+ If the attribute is cast, trust the cast — do not re-cast in PHP.
@@ -0,0 +1,80 @@
1
+ # Flux UI Guidelines
2
+
3
+ > Flux component conventions — usage, variants, forms, icons, Livewire integration.
4
+
5
+ **Related Skills:** `flux`, `livewire`, `blade-ui`
6
+
7
+ ## Component Usage
8
+
9
+ - Use Flux components (`<flux:*>`) instead of raw HTML where a Flux equivalent exists.
10
+ - Follow the project's existing Flux usage patterns.
11
+ - Check Flux docs at https://fluxui.dev/docs for latest API.
12
+
13
+ ## Common Components
14
+
15
+ ```blade
16
+ {{-- Button --}}
17
+ <flux:button variant="primary">Save</flux:button>
18
+ <flux:button variant="danger" wire:click="delete">Delete</flux:button>
19
+
20
+ {{-- Input --}}
21
+ <flux:input wire:model="name" label="Name" placeholder="Enter name" />
22
+
23
+ {{-- Select --}}
24
+ <flux:select wire:model="status" label="Status">
25
+ <flux:option value="active">Active</flux:option>
26
+ <flux:option value="inactive">Inactive</flux:option>
27
+ </flux:select>
28
+
29
+ {{-- Modal --}}
30
+ <flux:modal name="confirm-delete">
31
+ <flux:heading>Delete item?</flux:heading>
32
+ <flux:text>This action cannot be undone.</flux:text>
33
+ <flux:button variant="danger" wire:click="delete">Confirm</flux:button>
34
+ </flux:modal>
35
+
36
+ {{-- Table --}}
37
+ <flux:table>
38
+ <flux:columns>
39
+ <flux:column>Name</flux:column>
40
+ </flux:columns>
41
+ <flux:rows>
42
+ @foreach($items as $item)
43
+ <flux:row :key="$item->id">
44
+ <flux:cell>{{ $item->name }}</flux:cell>
45
+ </flux:row>
46
+ @endforeach
47
+ </flux:rows>
48
+ </flux:table>
49
+ ```
50
+
51
+ ## Variants and Styling
52
+
53
+ - Use `variant` prop: `primary`, `danger`, `ghost`, `subtle`, `outline`.
54
+ - Use `size` prop: `sm`, `base`, `lg`.
55
+ - Add custom Tailwind via `class` only when Flux doesn't cover the need.
56
+ - Don't override Flux's built-in styling with conflicting classes.
57
+
58
+ ## Forms
59
+
60
+ - Use `<flux:input>`, `<flux:textarea>`, `<flux:select>`, `<flux:checkbox>`.
61
+ - Use `label` prop — Flux handles the `<label>` element.
62
+ - Use `wire:model` for Livewire binding.
63
+ - Flux components automatically display validation errors.
64
+
65
+ ## Icons
66
+
67
+ - `<flux:icon name="heroicon-name" />` — Heroicons naming convention.
68
+
69
+ ## Livewire Integration
70
+
71
+ - `wire:click`, `wire:submit`, `wire:model` work directly on Flux components.
72
+ - Modals: `$this->modal('name')->show()`.
73
+
74
+ ## Do NOT
75
+
76
+ - Use raw `<button>`, `<input>`, `<select>` when Flux equivalent exists.
77
+ - Override Flux component styles globally — use variants or slots.
78
+ - Mix Flux with a different UI library in the same view.
79
+ - Skip `label` prop on form fields — accessibility matters.
80
+ - Add manual error rendering alongside Flux (it's built-in).