@event4u/agent-config 14.22.0 → 15.0.0

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 (557) hide show
  1. package/.augment-plugin/marketplace.json +3 -3
  2. package/.augment-plugin/plugin.json +1 -1
  3. package/.claude-plugin/marketplace.json +1 -1
  4. package/CHANGELOG.md +333 -356
  5. package/README.md +1 -1
  6. package/dist/agent-src/commands/agent-handoff.md +8 -7
  7. package/dist/agent-src/commands/agents/init.md +1 -1
  8. package/dist/agent-src/commands/agents/user/accept.md +4 -4
  9. package/dist/agent-src/commands/agents/user/delete.md +2 -2
  10. package/dist/agent-src/commands/agents/user/init.md +3 -3
  11. package/dist/agent-src/commands/agents/user/review.md +3 -3
  12. package/dist/agent-src/commands/agents/user/show.md +3 -3
  13. package/dist/agent-src/commands/agents/user/update.md +2 -2
  14. package/dist/agent-src/commands/agents/user.md +6 -6
  15. package/dist/agent-src/commands/analytics/prune.md +1 -1
  16. package/dist/agent-src/commands/analytics/show.md +2 -2
  17. package/dist/agent-src/commands/analyze/decision.md +2 -2
  18. package/dist/agent-src/commands/analyze/inbox.md +5 -5
  19. package/dist/agent-src/commands/analyze/incident.md +3 -3
  20. package/dist/agent-src/commands/analyze/near-miss.md +3 -3
  21. package/dist/agent-src/commands/analyze/postmortem.md +4 -4
  22. package/dist/agent-src/commands/analyze/premortem.md +2 -2
  23. package/dist/agent-src/commands/analyze.md +2 -2
  24. package/dist/agent-src/commands/bug/fix.md +1 -1
  25. package/dist/agent-src/commands/bug/investigate.md +2 -2
  26. package/dist/agent-src/commands/cost/profile.md +3 -3
  27. package/dist/agent-src/commands/design.md +1 -1
  28. package/dist/agent-src/commands/feature/explore.md +1 -1
  29. package/dist/agent-src/commands/feature/plan.md +2 -2
  30. package/dist/agent-src/commands/feature/roadmap.md +2 -2
  31. package/dist/agent-src/commands/ghostwriter/fetch.md +4 -4
  32. package/dist/agent-src/commands/ghostwriter/list.md +1 -1
  33. package/dist/agent-src/commands/ghostwriter/show.md +1 -1
  34. package/dist/agent-src/commands/ghostwriter/write.md +9 -9
  35. package/dist/agent-src/commands/humanize.md +6 -6
  36. package/dist/agent-src/commands/jira-ticket.md +1 -1
  37. package/dist/agent-src/commands/judge/solo.md +1 -1
  38. package/dist/agent-src/commands/judge.md +1 -1
  39. package/dist/agent-src/commands/knowledge/cross-repo.md +1 -1
  40. package/dist/agent-src/commands/knowledge/forget.md +1 -1
  41. package/dist/agent-src/commands/knowledge/ingest.md +2 -2
  42. package/dist/agent-src/commands/knowledge/list.md +1 -1
  43. package/dist/agent-src/commands/memory/add.md +3 -3
  44. package/dist/agent-src/commands/memory/load.md +4 -4
  45. package/dist/agent-src/commands/memory/mine-session.md +1 -1
  46. package/dist/agent-src/commands/memory/promote.md +4 -4
  47. package/dist/agent-src/commands/memory/propose.md +2 -2
  48. package/dist/agent-src/commands/mode.md +5 -5
  49. package/dist/agent-src/commands/post-as/ghostwriter.md +3 -3
  50. package/dist/agent-src/commands/post-as/me.md +7 -7
  51. package/dist/agent-src/commands/pr/create.md +1 -1
  52. package/dist/agent-src/commands/pr/merge.md +48 -39
  53. package/dist/agent-src/commands/profile/activate.md +1 -1
  54. package/dist/agent-src/commands/profile/show.md +1 -1
  55. package/dist/agent-src/commands/research/deep.md +2 -2
  56. package/dist/agent-src/commands/research/report.md +2 -2
  57. package/dist/agent-src/commands/review/changes.md +1 -1
  58. package/dist/agent-src/commands/review/routing.md +1 -1
  59. package/dist/agent-src/commands/roadmap/create.md +1 -1
  60. package/dist/agent-src/commands/roadmap/materialize.md +2 -2
  61. package/dist/agent-src/commands/roadmap/next.md +9 -1
  62. package/dist/agent-src/commands/roadmap/process-full.md +2 -2
  63. package/dist/agent-src/commands/security-audit-config.md +3 -3
  64. package/dist/agent-src/commands/skill/preview.md +1 -1
  65. package/dist/agent-src/commands/skills/discover.md +1 -1
  66. package/dist/agent-src/commands/sync/agent-settings.md +2 -2
  67. package/dist/agent-src/commands/sync/gitignore/fix.md +1 -1
  68. package/dist/agent-src/commands/tests/create.md +1 -1
  69. package/dist/agent-src/commands/tests/e2e-heal.md +1 -1
  70. package/dist/agent-src/commands/tests/e2e-plan.md +1 -1
  71. package/dist/agent-src/contexts/authority/kernel-rule-edits.md +6 -6
  72. package/dist/agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -2
  73. package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +2 -2
  74. package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +88 -1
  75. package/dist/agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +1 -1
  76. package/dist/agent-src/contexts/contracts/frugality-charter.md +1 -1
  77. package/dist/agent-src/contexts/execution/auto-dispatch-classification.md +1 -1
  78. package/dist/agent-src/contexts/execution/auto-orchestration-activation.md +1 -1
  79. package/dist/agent-src/contexts/execution/autonomy-mechanics.md +13 -1
  80. package/dist/agent-src/contexts/execution/cheap-question-mechanics.md +1 -1
  81. package/dist/agent-src/contexts/execution/contract-decision-sheet.md +3 -3
  82. package/dist/agent-src/contexts/execution/mandated-lines.md +1 -1
  83. package/dist/agent-src/contexts/execution/non-interactive-contract.md +1 -1
  84. package/dist/agent-src/contexts/execution/orchestration-telemetry.md +1 -1
  85. package/dist/agent-src/contexts/execution/plan-confidence-gate.md +5 -5
  86. package/dist/agent-src/contexts/execution/roadmap-execution-contract.md +1 -1
  87. package/dist/agent-src/contexts/execution/subagent-modes-detail.md +1 -1
  88. package/dist/agent-src/contexts/execution/subagent-routing.md +2 -2
  89. package/dist/agent-src/contexts/execution/subagent-spawn-contract.md +1 -1
  90. package/dist/agent-src/contexts/execution/user-memory-channels.md +3 -3
  91. package/dist/agent-src/contexts/execution/verification-mechanics.md +1 -1
  92. package/dist/agent-src/contexts/judges/persona-voice-rubric.md +2 -2
  93. package/dist/agent-src/guidelines/abstraction-thresholds.md +88 -0
  94. package/dist/agent-src/guidelines/agent-infra/5w2h-analysis.md +260 -0
  95. package/dist/agent-src/guidelines/agent-infra/active-remediation-mechanics.md +99 -0
  96. package/dist/agent-src/guidelines/agent-infra/agent-interaction-and-decision-quality.md +325 -0
  97. package/dist/agent-src/guidelines/agent-infra/api-cost-levers.md +177 -0
  98. package/dist/agent-src/guidelines/agent-infra/artifact-drafting-protocol-mechanics.md +222 -0
  99. package/dist/agent-src/guidelines/agent-infra/ask-when-uncertain-demos.md +134 -0
  100. package/dist/agent-src/guidelines/agent-infra/asking-and-brevity-examples.md +198 -0
  101. package/dist/agent-src/guidelines/agent-infra/break-glass-usage.md +113 -0
  102. package/dist/agent-src/guidelines/agent-infra/carve-out-predicates.md +17 -0
  103. package/dist/agent-src/guidelines/agent-infra/comparison-matrix.md +179 -0
  104. package/dist/agent-src/guidelines/agent-infra/context-hygiene-mechanics.md +165 -0
  105. package/dist/agent-src/guidelines/agent-infra/corpus-grounding-authoring.md +91 -0
  106. package/dist/agent-src/guidelines/agent-infra/critical-thinking.md +156 -0
  107. package/dist/agent-src/guidelines/agent-infra/cross-source-consistency-mechanics.md +109 -0
  108. package/dist/agent-src/guidelines/agent-infra/developer-judgment.md +82 -0
  109. package/dist/agent-src/guidelines/agent-infra/direct-answers-demos.md +142 -0
  110. package/dist/agent-src/guidelines/agent-infra/domain-adoption-gates.md +112 -0
  111. package/dist/agent-src/guidelines/agent-infra/domain-eval-anti-pattern.md +53 -0
  112. package/dist/agent-src/guidelines/agent-infra/domain-pack-architecture.md +56 -0
  113. package/dist/agent-src/guidelines/agent-infra/downstream-changes-mechanics.md +91 -0
  114. package/dist/agent-src/guidelines/agent-infra/emphasis-budget.md +45 -0
  115. package/dist/agent-src/guidelines/agent-infra/engineering-memory-data-format.md +210 -0
  116. package/dist/agent-src/guidelines/agent-infra/evaluator-independence-mechanics.md +92 -0
  117. package/dist/agent-src/guidelines/agent-infra/existence-question-verdicts.md +80 -0
  118. package/dist/agent-src/guidelines/agent-infra/failure-signatures.md +70 -0
  119. package/dist/agent-src/guidelines/agent-infra/false-green.md +233 -0
  120. package/dist/agent-src/guidelines/agent-infra/first-principles.md +192 -0
  121. package/dist/agent-src/guidelines/agent-infra/framework-neutrality-patterns.md +66 -0
  122. package/dist/agent-src/guidelines/agent-infra/frontier-reasoning-operating-profile.md +169 -0
  123. package/dist/agent-src/guidelines/agent-infra/gate-authoring.md +177 -0
  124. package/dist/agent-src/guidelines/agent-infra/guarded-baseline.md +39 -0
  125. package/dist/agent-src/guidelines/agent-infra/installed-tools-manifest.md +142 -0
  126. package/dist/agent-src/guidelines/agent-infra/inversion-thinking.md +388 -0
  127. package/dist/agent-src/guidelines/agent-infra/ios-simulator-guide.md +378 -0
  128. package/dist/agent-src/guidelines/agent-infra/language-and-tone-examples.md +141 -0
  129. package/dist/agent-src/guidelines/agent-infra/layered-settings.md +317 -0
  130. package/dist/agent-src/guidelines/agent-infra/linked-projects-onboarding-gate.md +80 -0
  131. package/dist/agent-src/guidelines/agent-infra/mcp-request-signing.md +197 -0
  132. package/dist/agent-src/guidelines/agent-infra/memory-access.md +149 -0
  133. package/dist/agent-src/guidelines/agent-infra/mental-models.md +314 -0
  134. package/dist/agent-src/guidelines/agent-infra/minimal-safe-diff-mechanics.md +241 -0
  135. package/dist/agent-src/guidelines/agent-infra/missing-tool-handling.md +66 -0
  136. package/dist/agent-src/guidelines/agent-infra/model-recommendation.md +101 -0
  137. package/dist/agent-src/guidelines/agent-infra/naming.md +69 -0
  138. package/dist/agent-src/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  139. package/dist/agent-src/guidelines/agent-infra/output-patterns.md +117 -0
  140. package/dist/agent-src/guidelines/agent-infra/recurring-criticism-mechanics.md +96 -0
  141. package/dist/agent-src/guidelines/agent-infra/reuse-verdict-mechanics.md +71 -0
  142. package/dist/agent-src/guidelines/agent-infra/review-routing-data-format.md +143 -0
  143. package/dist/agent-src/guidelines/agent-infra/roadmap-deferred-resolution-provenance.md +54 -0
  144. package/dist/agent-src/guidelines/agent-infra/roadmap-progress-mechanics.md +274 -0
  145. package/dist/agent-src/guidelines/agent-infra/role-contracts.md +209 -0
  146. package/dist/agent-src/guidelines/agent-infra/role-mode-router.md +89 -0
  147. package/dist/agent-src/guidelines/agent-infra/rule-body-migration-inventory.md +241 -0
  148. package/dist/agent-src/guidelines/agent-infra/rule-type-governance.md +73 -0
  149. package/dist/agent-src/guidelines/agent-infra/runtime-layer.md +89 -0
  150. package/dist/agent-src/guidelines/agent-infra/scqa-framework.md +526 -0
  151. package/dist/agent-src/guidelines/agent-infra/security-lint-containment.md +121 -0
  152. package/dist/agent-src/guidelines/agent-infra/self-improvement-pipeline.md +134 -0
  153. package/dist/agent-src/guidelines/agent-infra/simplicity-and-goal-demos.md +211 -0
  154. package/dist/agent-src/guidelines/agent-infra/six-hats.md +353 -0
  155. package/dist/agent-src/guidelines/agent-infra/size-and-scope.md +229 -0
  156. package/dist/agent-src/guidelines/agent-infra/skill-quality-checklist.md +157 -0
  157. package/dist/agent-src/guidelines/agent-infra/source-confidentiality-mechanics.md +109 -0
  158. package/dist/agent-src/guidelines/agent-infra/symptom-driven-harvest-loop.md +104 -0
  159. package/dist/agent-src/guidelines/agent-infra/systems-thinking.md +220 -0
  160. package/dist/agent-src/guidelines/agent-infra/tool-description-as-policy.md +35 -0
  161. package/dist/agent-src/guidelines/agent-infra/tool-integration.md +73 -0
  162. package/dist/agent-src/guidelines/agent-infra/traceability-field-mechanics.md +50 -0
  163. package/dist/agent-src/guidelines/agent-infra/untrusted-input-spotlighting.md +166 -0
  164. package/dist/agent-src/guidelines/agent-infra/verify-before-complete-demos.md +128 -0
  165. package/dist/agent-src/guidelines/augment-portability-patterns.md +70 -0
  166. package/dist/agent-src/guidelines/code-clarity.md +350 -0
  167. package/dist/agent-src/guidelines/component-oriented-and-oop-development.md +189 -0
  168. package/dist/agent-src/guidelines/cross-role-handoff.md +127 -0
  169. package/dist/agent-src/guidelines/design-antipatterns-triggers.json +18 -0
  170. package/dist/agent-src/guidelines/design-antipatterns.md +327 -0
  171. package/dist/agent-src/guidelines/design-asset-discipline.md +38 -0
  172. package/dist/agent-src/guidelines/design-canon.md +63 -0
  173. package/dist/agent-src/guidelines/design-fidelity-mechanics.md +293 -0
  174. package/dist/agent-src/guidelines/design-fidelity-routing.md +78 -0
  175. package/dist/agent-src/guidelines/design-handover-extraction.md +117 -0
  176. package/dist/agent-src/guidelines/design-modes.md +143 -0
  177. package/dist/agent-src/guidelines/design-reconciliation.md +172 -0
  178. package/dist/agent-src/guidelines/docs/readme-size-and-splitting.md +209 -0
  179. package/dist/agent-src/guidelines/e2e/playwright.md +363 -0
  180. package/dist/agent-src/guidelines/gtm-handoff.md +114 -0
  181. package/dist/agent-src/guidelines/monorepo-antipatterns.md +141 -0
  182. package/dist/agent-src/guidelines/php/api-design.md +115 -0
  183. package/dist/agent-src/guidelines/php/artisan-commands.md +81 -0
  184. package/dist/agent-src/guidelines/php/blade-ui.md +78 -0
  185. package/dist/agent-src/guidelines/php/controllers.md +90 -0
  186. package/dist/agent-src/guidelines/php/database.md +194 -0
  187. package/dist/agent-src/guidelines/php/eloquent.md +208 -0
  188. package/dist/agent-src/guidelines/php/flux.md +80 -0
  189. package/dist/agent-src/guidelines/php/general.md +207 -0
  190. package/dist/agent-src/guidelines/php/git.md +164 -0
  191. package/dist/agent-src/guidelines/php/jobs.md +111 -0
  192. package/dist/agent-src/guidelines/php/livewire.md +71 -0
  193. package/dist/agent-src/guidelines/php/logging.md +79 -0
  194. package/dist/agent-src/guidelines/php/naming.md +89 -0
  195. package/dist/agent-src/guidelines/php/patterns/dependency-injection.md +57 -0
  196. package/dist/agent-src/guidelines/php/patterns/dtos.md +199 -0
  197. package/dist/agent-src/guidelines/php/patterns/events.md +67 -0
  198. package/dist/agent-src/guidelines/php/patterns/factory.md +53 -0
  199. package/dist/agent-src/guidelines/php/patterns/pipelines.md +66 -0
  200. package/dist/agent-src/guidelines/php/patterns/policies.md +66 -0
  201. package/dist/agent-src/guidelines/php/patterns/repositories.md +122 -0
  202. package/dist/agent-src/guidelines/php/patterns/service-layer.md +64 -0
  203. package/dist/agent-src/guidelines/php/patterns/strategy.md +247 -0
  204. package/dist/agent-src/guidelines/php/patterns.md +28 -0
  205. package/dist/agent-src/guidelines/php/performance.md +92 -0
  206. package/dist/agent-src/guidelines/php/php-coding-patterns.md +80 -0
  207. package/dist/agent-src/guidelines/php/resources.md +100 -0
  208. package/dist/agent-src/guidelines/php/security.md +110 -0
  209. package/dist/agent-src/guidelines/php/sql.md +97 -0
  210. package/dist/agent-src/guidelines/php/validations.md +119 -0
  211. package/dist/agent-src/guidelines/php/websocket.md +100 -0
  212. package/dist/agent-src/guidelines/prompt-templates.md +189 -0
  213. package/dist/agent-src/guidelines/redundancy-taxonomy.md +208 -0
  214. package/dist/agent-src/guidelines/wing4-handoff.md +127 -0
  215. package/dist/agent-src/personas/README.md +1 -1
  216. package/dist/agent-src/personas/_template-specialist/persona.md +1 -1
  217. package/dist/agent-src/personas/product-owner.md +1 -1
  218. package/dist/agent-src/rules/active-remediation.md +1 -1
  219. package/dist/agent-src/rules/architecture.md +2 -2
  220. package/dist/agent-src/rules/artifact-drafting-protocol.md +1 -1
  221. package/dist/agent-src/rules/ask-when-uncertain.md +2 -2
  222. package/dist/agent-src/rules/brand-source-of-truth.md +9 -7
  223. package/dist/agent-src/rules/code-comment-discipline.md +2 -2
  224. package/dist/agent-src/rules/code-provenance.md +1 -1
  225. package/dist/agent-src/rules/content-quoting-floor.md +1 -1
  226. package/dist/agent-src/rules/context-hygiene.md +5 -5
  227. package/dist/agent-src/rules/cross-source-consistency.md +1 -1
  228. package/dist/agent-src/rules/design-fidelity.md +36 -46
  229. package/dist/agent-src/rules/direct-answers.md +2 -2
  230. package/dist/agent-src/rules/domain-adoption-policy.md +1 -1
  231. package/dist/agent-src/rules/evaluator-independence.md +1 -1
  232. package/dist/agent-src/rules/framework-neutrality-in-generic-skills.md +1 -1
  233. package/dist/agent-src/rules/icon-consistency.md +5 -1
  234. package/dist/agent-src/rules/improve-before-implement.md +1 -1
  235. package/dist/agent-src/rules/language-and-tone.md +3 -3
  236. package/dist/agent-src/rules/minimal-safe-diff.md +1 -1
  237. package/dist/agent-src/rules/notes-first-reasoning.md +36 -25
  238. package/dist/agent-src/rules/recurring-criticism.md +1 -1
  239. package/dist/agent-src/rules/roadmap-progress-sync.md +1 -1
  240. package/dist/agent-src/rules/role-mode-adherence.md +2 -2
  241. package/dist/agent-src/rules/security-sensitive-stop.md +1 -1
  242. package/dist/agent-src/rules/size-enforcement.md +1 -1
  243. package/dist/agent-src/rules/source-confidentiality.md +2 -2
  244. package/dist/agent-src/rules/think-before-action.md +1 -1
  245. package/dist/agent-src/rules/token-efficiency.md +7 -5
  246. package/dist/agent-src/rules/ui-audit-gate.md +3 -2
  247. package/dist/agent-src/rules/untrusted-input-defense.md +3 -3
  248. package/dist/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  249. package/dist/agent-src/skills/activation-design/SKILL.md +2 -2
  250. package/dist/agent-src/skills/adr-create/SKILL.md +5 -5
  251. package/dist/agent-src/skills/ai-council/SKILL.md +1 -1
  252. package/dist/agent-src/skills/ai-council/references/advanced-modes.md +1 -1
  253. package/dist/agent-src/skills/blade-ui/SKILL.md +1 -1
  254. package/dist/agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  255. package/dist/agent-src/skills/brand-to-tokens/SKILL.md +24 -3
  256. package/dist/agent-src/skills/bug-analyzer/SKILL.md +1 -1
  257. package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
  258. package/dist/agent-src/skills/churn-prevention/SKILL.md +2 -2
  259. package/dist/agent-src/skills/code-intelligence/SKILL.md +57 -1
  260. package/dist/agent-src/skills/code-refactoring/SKILL.md +3 -3
  261. package/dist/agent-src/skills/code-review/SKILL.md +3 -3
  262. package/dist/agent-src/skills/command-writing/SKILL.md +3 -3
  263. package/dist/agent-src/skills/comp-banding/SKILL.md +1 -1
  264. package/dist/agent-src/skills/competitive-moat-analysis/SKILL.md +1 -1
  265. package/dist/agent-src/skills/competitive-positioning/SKILL.md +2 -2
  266. package/dist/agent-src/skills/complexity-first-planning/SKILL.md +1 -1
  267. package/dist/agent-src/skills/condense-memory/SKILL.md +1 -1
  268. package/dist/agent-src/skills/content-funnel-design/SKILL.md +2 -2
  269. package/dist/agent-src/skills/contracts-cognition/SKILL.md +1 -1
  270. package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  271. package/dist/agent-src/skills/corpus-grounding/SKILL.md +2 -2
  272. package/dist/agent-src/skills/customer-research/SKILL.md +2 -2
  273. package/dist/agent-src/skills/dashboard-design/SKILL.md +1 -1
  274. package/dist/agent-src/skills/data-handling-judgment/SKILL.md +1 -1
  275. package/dist/agent-src/skills/deal-qualification-meddic/SKILL.md +2 -2
  276. package/dist/agent-src/skills/decision-record/SKILL.md +3 -3
  277. package/dist/agent-src/skills/decision-review/SKILL.md +8 -8
  278. package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +22 -22
  279. package/dist/agent-src/skills/design-intelligence/SKILL.md +4 -4
  280. package/dist/agent-src/skills/design-intelligence/references/context-and-registers.md +2 -2
  281. package/dist/agent-src/skills/design-review/SKILL.md +4 -4
  282. package/dist/agent-src/skills/design-system-capture/references/design-system-json.md +20 -1
  283. package/dist/agent-src/skills/design-tokens/SKILL.md +17 -2
  284. package/dist/agent-src/skills/design-variations/SKILL.md +2 -2
  285. package/dist/agent-src/skills/developer-like-execution/SKILL.md +2 -2
  286. package/dist/agent-src/skills/discovery-interview/SKILL.md +2 -2
  287. package/dist/agent-src/skills/doc-coauthoring/SKILL.md +3 -3
  288. package/dist/agent-src/skills/editorial-calendar/SKILL.md +2 -2
  289. package/dist/agent-src/skills/existing-ui-audit/SKILL.md +44 -1
  290. package/dist/agent-src/skills/existing-ui-audit/references/anti-slop-cross-reference.md +2 -2
  291. package/dist/agent-src/skills/expansion-playbook/SKILL.md +2 -2
  292. package/dist/agent-src/skills/experiment-loop/SKILL.md +1 -1
  293. package/dist/agent-src/skills/experiment-loop/references/protocol.md +1 -1
  294. package/dist/agent-src/skills/fe-design/SKILL.md +3 -3
  295. package/dist/agent-src/skills/fe-design/references/design-patterns.md +1 -1
  296. package/dist/agent-src/skills/fe-design/references/design-read-and-memory.md +3 -3
  297. package/dist/agent-src/skills/fe-design/references/source-led-port.md +1 -1
  298. package/dist/agent-src/skills/feature-planning/SKILL.md +1 -1
  299. package/dist/agent-src/skills/flux/SKILL.md +1 -1
  300. package/dist/agent-src/skills/forecast-accuracy/SKILL.md +2 -2
  301. package/dist/agent-src/skills/forecasting/SKILL.md +2 -2
  302. package/dist/agent-src/skills/fundraising-narrative/SKILL.md +2 -2
  303. package/dist/agent-src/skills/funnel-analysis/SKILL.md +2 -2
  304. package/dist/agent-src/skills/git-workflow/references/push-closes-its-loop.md +9 -0
  305. package/dist/agent-src/skills/gtm-launch/SKILL.md +2 -2
  306. package/dist/agent-src/skills/hiring-loop-design/SKILL.md +1 -1
  307. package/dist/agent-src/skills/html-deck/SKILL.md +5 -5
  308. package/dist/agent-src/skills/humanizer/SKILL.md +1 -1
  309. package/dist/agent-src/skills/humanizer/data/patterns.md +1 -1
  310. package/dist/agent-src/skills/iconography/SKILL.md +3 -3
  311. package/dist/agent-src/skills/judge-synthesis/SKILL.md +1 -1
  312. package/dist/agent-src/skills/laravel-api-endpoint/SKILL.md +2 -2
  313. package/dist/agent-src/skills/launch-readiness/SKILL.md +3 -3
  314. package/dist/agent-src/skills/learning-to-rule-or-skill/SKILL.md +6 -6
  315. package/dist/agent-src/skills/livewire/SKILL.md +1 -1
  316. package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
  317. package/dist/agent-src/skills/mcp-builder/SKILL.md +1 -1
  318. package/dist/agent-src/skills/memory-consolidation/SKILL.md +3 -3
  319. package/dist/agent-src/skills/messaging-architecture/SKILL.md +2 -2
  320. package/dist/agent-src/skills/monorepo-workspace/SKILL.md +1 -1
  321. package/dist/agent-src/skills/onboarding-design/SKILL.md +2 -2
  322. package/dist/agent-src/skills/onboarding-program/SKILL.md +1 -1
  323. package/dist/agent-src/skills/one-on-one-cadence/SKILL.md +1 -1
  324. package/dist/agent-src/skills/org-design/SKILL.md +1 -1
  325. package/dist/agent-src/skills/overbuild-review-lens/SKILL.md +3 -3
  326. package/dist/agent-src/skills/override-management/SKILL.md +1 -1
  327. package/dist/agent-src/skills/perf-feedback-craft/SKILL.md +1 -1
  328. package/dist/agent-src/skills/persona-writing/SKILL.md +1 -1
  329. package/dist/agent-src/skills/php-coder/SKILL.md +1 -1
  330. package/dist/agent-src/skills/pipeline-strategy/SKILL.md +2 -2
  331. package/dist/agent-src/skills/playwright-testing/SKILL.md +3 -3
  332. package/dist/agent-src/skills/po-discovery/SKILL.md +1 -1
  333. package/dist/agent-src/skills/positioning-strategy/SKILL.md +2 -2
  334. package/dist/agent-src/skills/privacy-review/SKILL.md +1 -1
  335. package/dist/agent-src/skills/prompt-optimizer/SKILL.md +3 -3
  336. package/dist/agent-src/skills/react-shadcn-ui/SKILL.md +1 -1
  337. package/dist/agent-src/skills/reasoning-orchestrator/SKILL.md +2 -2
  338. package/dist/agent-src/skills/receiving-code-review/SKILL.md +1 -1
  339. package/dist/agent-src/skills/refine-ticket/SKILL.md +2 -2
  340. package/dist/agent-src/skills/release-comms/SKILL.md +2 -2
  341. package/dist/agent-src/skills/retention-loops/SKILL.md +2 -2
  342. package/dist/agent-src/skills/review-routing/SKILL.md +2 -2
  343. package/dist/agent-src/skills/roadmap-management/SKILL.md +1 -1
  344. package/dist/agent-src/skills/roadmap-management/references/archival.md +1 -1
  345. package/dist/agent-src/skills/roadmap-writing/SKILL.md +5 -5
  346. package/dist/agent-src/skills/rule-writing/SKILL.md +6 -6
  347. package/dist/agent-src/skills/runway-cognition/SKILL.md +2 -2
  348. package/dist/agent-src/skills/scenario-modeling/SKILL.md +2 -2
  349. package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
  350. package/dist/agent-src/skills/skill-writing/references/procedure.md +1 -1
  351. package/dist/agent-src/skills/skill-writing/references/section-patterns.md +3 -3
  352. package/dist/agent-src/skills/spreadsheet-authoring/SKILL.md +1 -1
  353. package/dist/agent-src/skills/stakeholder-tradeoff/SKILL.md +3 -3
  354. package/dist/agent-src/skills/subagent-orchestration/SKILL.md +1 -1
  355. package/dist/agent-src/skills/supply-chain-intake/SKILL.md +1 -1
  356. package/dist/agent-src/skills/systematic-debugging/SKILL.md +2 -2
  357. package/dist/agent-src/skills/tailwind-engineer/SKILL.md +60 -4
  358. package/dist/agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +1 -1
  359. package/dist/agent-src/skills/token-optimizer/SKILL.md +1 -1
  360. package/dist/agent-src/skills/typography-system/SKILL.md +2 -2
  361. package/dist/agent-src/skills/ui-component-architect/SKILL.md +28 -8
  362. package/dist/agent-src/skills/unit-economics-modeling/SKILL.md +2 -2
  363. package/dist/agent-src/skills/upstream-contribute/SKILL.md +1 -1
  364. package/dist/agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  365. package/dist/agent-src/skills/verify-repair-loop/SKILL.md +2 -2
  366. package/dist/agent-src/skills/vision-articulation/SKILL.md +1 -1
  367. package/dist/agent-src/skills/voc-extract/SKILL.md +2 -2
  368. package/dist/agent-src/skills/voice-and-tone-design/SKILL.md +2 -2
  369. package/dist/agent-src/skills/wireframe/SKILL.md +1 -1
  370. package/dist/agent-src/skills/workspace-link/SKILL.md +1 -1
  371. package/dist/agent-src/templates/agent-settings.md +6 -6
  372. package/dist/agent-src/templates/agents/agent-project-settings.example.yml +1 -1
  373. package/dist/agent-src/templates/contexts/knowledge-pages.md +2 -3
  374. package/dist/agent-src/templates/copilot-instructions.md +1 -1
  375. package/dist/agent-src/templates/roadmaps.md +1 -1
  376. package/dist/agent-src/templates/scripts/README.md +2 -2
  377. package/dist/agent-src/user-types/_template/user-type.md +1 -1
  378. package/dist/cli/registry.js +1 -1
  379. package/dist/cli-delegate/archive_completed_roadmaps.js +52 -4
  380. package/dist/cli-delegate/check_update_banner.js +12 -1
  381. package/dist/cli-delegate/{chunk-TGIPZBCW.js → chunk-2KKXJW25.js} +22 -8
  382. package/dist/cli-delegate/{chunk-NLP54U3J.js → chunk-2XY7ILBT.js} +13 -1
  383. package/dist/cli-delegate/{chunk-4FS4WRXP.js → chunk-3FKR64R5.js} +34 -6
  384. package/dist/cli-delegate/{chunk-J3RFNKG4.js → chunk-55ACLDUE.js} +2 -2
  385. package/dist/cli-delegate/{chunk-PKOBQADP.js → chunk-57PN4GYJ.js} +1 -1
  386. package/dist/cli-delegate/{chunk-BIXEDQPZ.js → chunk-AK6HODNQ.js} +4 -4
  387. package/dist/cli-delegate/{chunk-2FTMENJL.js → chunk-GYC3VRYN.js} +1 -1
  388. package/dist/cli-delegate/{chunk-LWTYTX6F.js → chunk-HZ52BRGG.js} +24 -18
  389. package/dist/cli-delegate/{chunk-6RJA2F5A.js → chunk-IVBPRCQO.js} +1 -1
  390. package/dist/cli-delegate/{chunk-I6RHFQEG.js → chunk-YUM5KURG.js} +17 -1
  391. package/dist/cli-delegate/cmd_analyze_session.js +1 -1
  392. package/dist/cli-delegate/cmd_brand_status.js +1 -1
  393. package/dist/cli-delegate/cmd_conformance.js +3 -3
  394. package/dist/cli-delegate/cmd_doctor.js +3 -3
  395. package/dist/cli-delegate/cmd_explain.js +2 -2
  396. package/dist/cli-delegate/cmd_export.js +4 -4
  397. package/dist/cli-delegate/cmd_handoff.js +24 -16
  398. package/dist/cli-delegate/cmd_mcp_available.js +1 -1
  399. package/dist/cli-delegate/cmd_memory_get.js +1 -1
  400. package/dist/cli-delegate/cmd_migrate.js +2 -2
  401. package/dist/cli-delegate/cmd_packs_active.js +2 -2
  402. package/dist/cli-delegate/cmd_prune.js +4 -4
  403. package/dist/cli-delegate/cmd_route_audit.js +3 -3
  404. package/dist/cli-delegate/cmd_route_explain.js +1 -1
  405. package/dist/cli-delegate/cmd_session_recycle.js +4 -14
  406. package/dist/cli-delegate/cmd_settings_get.js +15 -9
  407. package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
  408. package/dist/cli-delegate/cmd_settings_set.js +41 -11
  409. package/dist/cli-delegate/cmd_sync.js +4 -4
  410. package/dist/cli-delegate/cmd_uninstall.js +4 -4
  411. package/dist/cli-delegate/cmd_update.js +1 -1
  412. package/dist/cli-delegate/cmd_upgrade.js +1 -1
  413. package/dist/cli-delegate/cmd_validate.js +4 -4
  414. package/dist/cli-delegate/cmd_versions.js +1 -1
  415. package/dist/discovery/deprecation-report.md +1 -1
  416. package/dist/discovery/discovery-manifest.json +27 -80
  417. package/dist/discovery/discovery-manifest.json.sha256 +1 -1
  418. package/dist/discovery/discovery-manifest.summary.md +3 -3
  419. package/dist/discovery/dormancy-report.md +1 -1
  420. package/dist/discovery/orphan-report.md +1 -1
  421. package/dist/discovery/packs.json +5 -7
  422. package/dist/discovery/trust-report.md +2 -2
  423. package/dist/discovery/workspaces.json +4 -6
  424. package/dist/hooks/dispatch.js +9249 -8981
  425. package/dist/install/install.mjs +47 -8
  426. package/dist/mcp/registry-manifest.json +3 -3
  427. package/dist/mcp/server.json +2 -2
  428. package/dist/mcp/server.mjs +5496 -2400
  429. package/dist/router.json +1 -1
  430. package/dist/scripts/_lib/agent_settings.js +73 -0
  431. package/dist/scripts/_lib/agent_src.js +20 -0
  432. package/dist/scripts/_lib/guidelines_lane.js +158 -0
  433. package/dist/scripts/_lib/lean_projection_mode.js +108 -0
  434. package/dist/scripts/_lib/router_match.js +243 -0
  435. package/dist/scripts/_lib/rule_injection.js +216 -0
  436. package/dist/scripts/condense.js +22 -25
  437. package/dist/scripts/project_thin_rules.js +139 -19
  438. package/dist/server/io/yamlIO.js +125 -17
  439. package/dist/server/schemas/settings.js +32 -5
  440. package/dist/shared/settingsSurface.js +6 -1
  441. package/docs/MIGRATION.md +56 -0
  442. package/docs/contracts/settings-classes.md +48 -7
  443. package/docs/guidelines/abstraction-thresholds.md +35 -0
  444. package/docs/guidelines/agent-infra/active-remediation-mechanics.md +3 -3
  445. package/docs/guidelines/agent-infra/false-green.md +2 -2
  446. package/docs/guidelines/agent-infra/notes-horizon-mechanics.md +90 -0
  447. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +1 -1
  448. package/docs/guidelines/agent-infra/skill-quality-checklist.md +1 -1
  449. package/docs/guidelines/design-fidelity-mechanics.md +4 -0
  450. package/docs/guidelines/design-fidelity-routing.md +78 -0
  451. package/docs/guidelines/design-reconciliation.md +172 -0
  452. package/docs/guidelines/gtm-handoff.md +2 -2
  453. package/docs/guidelines/wing4-handoff.md +2 -2
  454. package/llms.txt +1 -1
  455. package/package.json +7 -3
  456. package/src/agent-src/scripts/archive_completed_roadmaps.ts +106 -4
  457. package/src/config/agent-settings.template.yml +94 -1
  458. package/src/config/ci-local-parity.yml +34 -0
  459. package/src/config/continuity-surface.json +8 -29
  460. package/src/config/evaluator-budgets.json +4 -4
  461. package/src/config/gate-coverage.yml +31 -8
  462. package/src/config/gate-reachability-exemptions.json +1 -0
  463. package/src/config/gate-violation-baselines.json +3 -3
  464. package/src/config/hook-token-budget.json +8 -7
  465. package/src/config/host-injection-effect.json +2 -2
  466. package/src/config/pack-size-budget.json +55 -4
  467. package/src/config/packed-binary-manifest.json +1 -1
  468. package/src/config/platform-anchor.json +47 -0
  469. package/src/config/preamble-payload-budget.json +2 -3
  470. package/src/config/publish-surface.json +4 -2
  471. package/src/config/ratification-policy.json +7 -0
  472. package/src/config/routing-coverage-seed.json +9 -2
  473. package/src/config/rule-stub-ceilings.json +16 -9
  474. package/src/scripts/_cli/cmd_session_recycle.ts +2 -25
  475. package/src/scripts/_cli/cmd_settings_get.ts +22 -7
  476. package/src/scripts/_cli/handoff_sessions.ts +14 -44
  477. package/src/scripts/_lib/agent_settings.ts +85 -0
  478. package/src/scripts/_lib/agent_src.ts +21 -0
  479. package/src/scripts/_lib/artifact_maturity.ts +242 -0
  480. package/src/scripts/_lib/conformance_report.ts +403 -0
  481. package/src/scripts/_lib/continuity_slot.ts +295 -0
  482. package/src/scripts/_lib/continuity_writer.ts +312 -0
  483. package/src/scripts/_lib/design_system_import.ts +20 -0
  484. package/src/scripts/_lib/design_tolerance.ts +281 -0
  485. package/src/scripts/_lib/guidelines_lane.ts +164 -0
  486. package/src/scripts/_lib/hook_settings.ts +85 -0
  487. package/src/scripts/_lib/lean_projection_mode.ts +127 -0
  488. package/src/scripts/_lib/obligation_frequency.ts +2 -3
  489. package/src/scripts/_lib/packed_binary_predicate.ts +37 -0
  490. package/src/scripts/_lib/platform_anchor.ts +1053 -0
  491. package/src/scripts/_lib/ratification_artifact.ts +278 -0
  492. package/src/scripts/_lib/recycle_envelope_paths.ts +109 -21
  493. package/src/scripts/_lib/regression_neighbourhood.ts +159 -22
  494. package/src/scripts/_lib/security_lint.ts +23 -2
  495. package/src/scripts/_lib/self_repair.ts +21 -0
  496. package/src/scripts/_lib/session_eol.ts +44 -0
  497. package/src/scripts/_lib/session_index_trust.ts +387 -0
  498. package/src/scripts/_lib/standing_bound_ratchet.ts +220 -0
  499. package/src/scripts/_lib/tolerance_shadow.ts +177 -0
  500. package/src/scripts/_lib/vendored_grammar_upstream.ts +280 -0
  501. package/src/scripts/ai_council/redact_low_impact_entry.ts +8 -0
  502. package/src/scripts/audit_mcp_tools.ts +69 -25
  503. package/src/scripts/autonomy_friction_traffic.ts +379 -0
  504. package/src/scripts/build_mcp_catalog.ts +24 -1
  505. package/src/scripts/check_host_tree_parity.ts +291 -0
  506. package/src/scripts/check_kernel_edit_ratified.ts +462 -0
  507. package/src/scripts/check_loss_class_declared.ts +793 -46
  508. package/src/scripts/check_platform_anchor.ts +390 -0
  509. package/src/scripts/check_preamble_payload_budget.ts +424 -7
  510. package/src/scripts/check_projected_rule_routes.ts +395 -0
  511. package/src/scripts/check_rule_projection_integrity.ts +102 -2
  512. package/src/scripts/ci_settle.ts +205 -5
  513. package/src/scripts/code_graph/build.ts +79 -0
  514. package/src/scripts/code_graph/cli.ts +264 -7
  515. package/src/scripts/code_graph/detect.ts +38 -0
  516. package/src/scripts/code_graph/query.ts +25 -2
  517. package/src/scripts/code_graph/sqlite_store.ts +16 -1
  518. package/src/scripts/code_graph/types.ts +52 -3
  519. package/src/scripts/code_graph/validate.ts +3 -1
  520. package/src/scripts/code_graph/verbs.ts +590 -0
  521. package/src/scripts/condense.ts +22 -26
  522. package/src/scripts/generate_host_cost_table.ts +354 -0
  523. package/src/scripts/handoff_context_hook.ts +39 -1
  524. package/src/scripts/hook_manifest.json +1 -1
  525. package/src/scripts/hook_manifest.yaml +59 -28
  526. package/src/scripts/hooks/block_speaking_inbox_dir.ts +182 -16
  527. package/src/scripts/hooks/category_a.ts +1 -1
  528. package/src/scripts/hooks/chain_nudge_hook.ts +311 -25
  529. package/src/scripts/hooks/code_graph_context_hook.ts +7 -18
  530. package/src/scripts/hooks/push_settle_hook.ts +3 -2
  531. package/src/scripts/hooks/rule_inject_hook.ts +107 -20
  532. package/src/scripts/hooks/session_eol_hook.ts +177 -145
  533. package/src/scripts/hooks/source_first_gate_hook.ts +12 -0
  534. package/src/scripts/hooks/ui_route_nudge_hook.ts +52 -15
  535. package/src/scripts/hot_context_hook.ts +103 -408
  536. package/src/scripts/lint_evidence_artifacts.ts +1 -0
  537. package/src/scripts/lint_knowledge_scale.ts +0 -26
  538. package/src/scripts/lint_roadmap_blockers.ts +164 -1
  539. package/src/scripts/mcp_server/consumer_tool_catalog.json +152 -2
  540. package/src/scripts/mcp_server/graph_tools.ts +294 -0
  541. package/src/scripts/mcp_server/path_util.ts +31 -0
  542. package/src/scripts/mcp_server/tool_catalog_source.ts +7 -1
  543. package/src/scripts/mcp_server/tools.ts +3 -13
  544. package/src/scripts/memory_lookup.ts +9 -9
  545. package/src/scripts/model_rule_injection.ts +61 -4
  546. package/src/scripts/project_thin_rules.ts +149 -16
  547. package/src/scripts/report_standing_payload_by_host.ts +650 -0
  548. package/src/scripts/schemas/agent-settings.schema.json +7 -1
  549. package/src/scripts/session_memory_index.ts +86 -8
  550. package/src/scripts/sync_agent_settings.ts +270 -10
  551. package/src/server/io/yamlIO.ts +127 -17
  552. package/src/server/schemas/settings.ts +45 -6
  553. package/src/shared/settingsSurface.ts +13 -2
  554. package/src/templates/compact-instructions.md +8 -3
  555. package/src/vendor/grammars/README.md +27 -2
  556. package/dist/agent-src/commands/chat-history/import.md +0 -170
  557. package/dist/agent-src/commands/chat-history.md +0 -63
@@ -0,0 +1,53 @@
1
+ # Factory Pattern
2
+
3
+ > Encapsulate complex object creation.
4
+
5
+ ## Idea
6
+
7
+ When creating an object requires configuration, conditional logic, or multiple steps,
8
+ extract that logic into a Factory class.
9
+
10
+ ## Laravel Context
11
+
12
+ - **Model Factories** — Laravel ships with factories for test/seed data (`database/factories/`)
13
+ - **Custom Factories** — for domain objects, API clients, or composed objects
14
+
15
+ ## When to Use
16
+
17
+ ✅ Object creation involves multiple steps or configuration
18
+ ✅ Different implementations based on a type/config value
19
+ ✅ API client setup with auth, base URL, middleware
20
+
21
+ ## When NOT to Use
22
+
23
+ ❌ Simple `new MyClass()` or `MyClass::create()` — no factory needed
24
+ ❌ Laravel Model Factories already cover the use case (test data)
25
+
26
+ ## Example
27
+
28
+ ```php
29
+ final class ApiClientFactory
30
+ {
31
+ public function __construct(private ConfigRepository $config) {}
32
+
33
+ public function create(ClientSoftwareType $type): ApiClient
34
+ {
35
+ return match ($type) {
36
+ ClientSoftwareType::KS21 => new Ks21ApiClient(
37
+ baseUrl: $this->config->get('services.ks21.url'),
38
+ apiKey: $this->config->get('services.ks21.key'),
39
+ ),
40
+ ClientSoftwareType::PROBAUS => new ProBauSApiClient(
41
+ baseUrl: $this->config->get('services.probaus.url'),
42
+ ),
43
+ };
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Rules
49
+
50
+ - Factory methods should return typed interfaces, not concrete classes (when possible)
51
+ - Keep factory logic focused — don't add business logic here
52
+ - Name: `{Thing}Factory` or static `{Thing}::create()` for simple cases
53
+
@@ -0,0 +1,66 @@
1
+ # Pipeline / Middleware Pattern
2
+
3
+ > Sequential processing steps — already built into Laravel.
4
+
5
+ ## Idea
6
+
7
+ Pass data through a series of steps (pipes), where each step can transform,
8
+ validate, or filter the data. Each pipe has a single responsibility.
9
+
10
+ ## Laravel Built-in
11
+
12
+ - **HTTP Middleware** — request/response pipeline (authentication, CORS, logging)
13
+ - **Pipeline facade** — `Illuminate\Pipeline\Pipeline` for custom pipelines
14
+ - **Filter pipeline** — used in controllers for query filtering (see [controllers.md](../controllers.md))
15
+
16
+ ## Typical Use Cases
17
+
18
+ ✅ Request processing (middleware)
19
+ ✅ Import/export data transformation
20
+ ✅ Multi-step validation or enrichment
21
+ ✅ Query filter chains
22
+
23
+ ## Example: Custom Pipeline
24
+
25
+ ```php
26
+ $result = Pipeline::send($importData)
27
+ ->through([
28
+ ValidateHeaders::class,
29
+ NormalizeEncoding::class,
30
+ MapColumns::class,
31
+ FilterInvalidRows::class,
32
+ ])
33
+ ->thenReturn();
34
+ ```
35
+
36
+ Each pipe implements `handle()`:
37
+
38
+ ```php
39
+ final class NormalizeEncoding
40
+ {
41
+ public function handle(ImportData $data, Closure $next): mixed
42
+ {
43
+ $data->normalize();
44
+ return $next($data);
45
+ }
46
+ }
47
+ ```
48
+
49
+ ## Query Filter Pipeline
50
+
51
+ Already used in this project via `paginatedPipeline`:
52
+
53
+ ```php
54
+ $results = Model::query()
55
+ ->paginatedPipeline([
56
+ StringFilter::on('name')->isLike()->some(),
57
+ DateFilter::on('created_at')->all(),
58
+ OrderFilter::on(['id', 'name'])->default(['id' => 'asc']),
59
+ ]);
60
+ ```
61
+
62
+ ## When NOT to Use
63
+
64
+ ❌ Only 2 steps with trivial logic — sequential method calls are clearer
65
+ ❌ Steps have complex dependencies on each other — pipelines assume independence
66
+
@@ -0,0 +1,66 @@
1
+ # Policy Pattern
2
+
3
+ > Centralized authorization logic — built into Laravel.
4
+
5
+ ## Idea
6
+
7
+ Authorization rules belong in **Policy classes**, not scattered across controllers,
8
+ middleware, or model methods.
9
+
10
+ ## Laravel Mechanism
11
+
12
+ - One Policy per Model (or resource)
13
+ - Methods map to actions: `view`, `create`, `update`, `delete`, `restore`
14
+ - Called via `$this->authorize()` in controllers or `Gate::allows()` anywhere
15
+ - FormRequests call policies in `authorize()` method
16
+
17
+ ## Example
18
+
19
+ ```php
20
+ final class OrderPolicy
21
+ {
22
+ public function view(User $user, Order $order): bool
23
+ {
24
+ return $user->getId() === $order->getUserId();
25
+ }
26
+
27
+ public function update(User $user, Order $order): bool
28
+ {
29
+ return $user->getId() === $order->getUserId()
30
+ && $order->getStatus() !== OrderStatus::COMPLETED;
31
+ }
32
+
33
+ public function delete(User $user, Order $order): bool
34
+ {
35
+ return $user->isAdmin();
36
+ }
37
+ }
38
+ ```
39
+
40
+ ## In FormRequests
41
+
42
+ ```php
43
+ public function authorize(): bool
44
+ {
45
+ /** @var Order $order */
46
+ $order = $this->route('order');
47
+
48
+ /** @var User $user */
49
+ $user = $this->user();
50
+
51
+ return $user->can('update', $order);
52
+ }
53
+ ```
54
+
55
+ ## Rules
56
+
57
+ - One Policy per Model — `App\Policies\{Model}Policy`
58
+ - Keep policy methods simple — delegate complex checks to the model or a service
59
+ - Return `bool` — no exceptions in policies
60
+ - Laravel auto-discovers policies by convention (no manual registration needed)
61
+
62
+ ## When NOT to Use
63
+
64
+ ❌ Global rules (e.g., "must be authenticated") — use middleware instead
65
+ ❌ Business rules (e.g., "order must have items") — that's validation, not authorization
66
+
@@ -0,0 +1,122 @@
1
+ # Repository Pattern
2
+
3
+ > Only use when it solves a real problem. Eloquent already has many repository-like features built in.
4
+
5
+ ## Purpose
6
+
7
+ Repositories encapsulate **complex or reusable** database queries. They keep controllers and
8
+ services clean by hiding query details behind expressive method names.
9
+
10
+ ## Rule of Thumb
11
+
12
+ - **CRUD app** → usually no separate repository needed
13
+ - **Complex business app** → use selectively where it adds value
14
+ - **Never** create a repository automatically for every model
15
+
16
+ ## When to Use a Repository
17
+
18
+ ✅ **Multiple data sources** — DB + API + Cache behind one interface
19
+
20
+ ✅ **Complex queries** — joins, subqueries, raw expressions, aggregations:
21
+
22
+ ```php
23
+ // ✅ Good — complex query with joins, eager loading, raw ordering
24
+ class DatabasePlanningRepository
25
+ {
26
+ public function findByDateAndCrewIds(CarbonInterface $date, array $crewIds): Collection
27
+ {
28
+ return Appointment::with([
29
+ 'project' => ['manager', 'capacityPlanningItem'],
30
+ 'plannedUsers' => fn ($q) => $q->where('termin_date', $date->format('Y-m-d')),
31
+ ])
32
+ ->selectRaw("*, IF(termin_uhrzeit IS NULL OR termin_uhrzeit = '00:00:00', 1, 0) as sort_order")
33
+ ->whereDate('termin_date', $date)
34
+ ->whereIn('tree_group_id', $crewIds)
35
+ ->orderByRaw('termin_order, sort_order, termin_uhrzeit')
36
+ ->get();
37
+ }
38
+ }
39
+ ```
40
+
41
+ ✅ **Reusable queries** — same complex query needed in multiple services or controllers
42
+
43
+ ✅ **Domain-centric access** — the method name documents business intent:
44
+
45
+ ```php
46
+ $repository->findActiveEmployeesWithExpiredCertificates();
47
+ $repository->findOverdueAppointmentsByCustomer($customerId);
48
+ ```
49
+
50
+ ## When NOT to Use a Repository
51
+
52
+ ❌ **Thin CRUD wrappers** — wrapping `findById`, `create`, `update`, `delete` around
53
+ Eloquent adds a layer with zero value. Eloquent already provides all of this:
54
+
55
+ ```php
56
+ // ❌ Overengineering — don't do this
57
+ class UserRepository
58
+ {
59
+ public function findById(int $id): ?User { return User::find($id); }
60
+ public function create(array $data): User { return User::create($data); }
61
+ public function delete(int $id): void { User::destroy($id); }
62
+ }
63
+
64
+ // ✅ Just use the model directly
65
+ $user = User::find($id);
66
+ $user = User::where('email', $email)->first();
67
+ $activeUsers = User::where('is_active', true)->get();
68
+ ```
69
+
70
+ ❌ **Single-use queries** — if a query is only used in one place and is not complex,
71
+ keep it inline in the service or controller.
72
+
73
+ ## Better Alternatives for Simple Cases
74
+
75
+ Instead of a repository for every model, prefer:
76
+
77
+ - **Query Scopes** — reusable query fragments on the model itself
78
+ - **Services / Actions** — business logic with inline queries
79
+ - **Specialized query classes** — for one complex, reusable query
80
+
81
+ ## Structure
82
+
83
+ - Namespace: `App\Repositories\{Domain}\` or `App\Modules\{Module}\App\Repositories\`
84
+ - Use an **interface** (contract) when the repository is injected via DI and may need mocking:
85
+
86
+ ```php
87
+ // Contract
88
+ interface UserRepositoryContract
89
+ {
90
+ public function findByCredentials(string $username, string $password): User;
91
+ }
92
+
93
+ // Implementation
94
+ class DatabaseUserRepository implements UserRepositoryContract
95
+ {
96
+ public function findByCredentials(string $username, string $password): User
97
+ {
98
+ // complex query logic...
99
+ }
100
+ }
101
+ ```
102
+
103
+ - Bind interface → implementation in a ServiceProvider
104
+ - Do **NOT** mark repository classes `final` — they may need to be mocked in tests
105
+
106
+ ## Naming
107
+
108
+ | Pattern | Example |
109
+ |----------------------------|--------------------------------------|
110
+ | Contract (interface) | `UserRepositoryContract` |
111
+ | Implementation | `DatabaseUserRepository` |
112
+ | Module repository | `ClientSoftwareImportTemplateRepository` |
113
+
114
+ ## Rules
115
+
116
+ - Return **typed** results: `Collection<int, Model>`, `?Model`, `Model`
117
+ - Throw domain exceptions (e.g., `EntityNotFoundException`) instead of returning `null`
118
+ when the caller expects a result
119
+ - Use `@param` and `@return` DocBlocks for generic collection types
120
+ - Keep repositories focused — one repository per model/aggregate, not one giant "query bag"
121
+ - Prefer Eloquent/Query Builder over raw SQL
122
+
@@ -0,0 +1,64 @@
1
+ # Service Layer / Action Pattern
2
+
3
+ > The most valuable pattern in Laravel projects.
4
+
5
+ ## Idea
6
+
7
+ Controllers stay thin and delegate business logic to dedicated classes.
8
+ These classes have a single responsibility and an expressive name.
9
+
10
+ ## Naming
11
+
12
+ - **Action** — single operation: `CreateOrderAction`, `PublishArticle`
13
+ - **Service** — broader domain scope: `PaymentService`, `ImportService`
14
+
15
+ Use Actions for focused, one-off operations. Use Services when grouping related operations.
16
+
17
+ ## When to Use
18
+
19
+ ✅ Logic is more than "validate + save"
20
+ ✅ Logic is reused across controllers, commands, observers or jobs
21
+ ✅ Logic involves multiple models, external APIs, or side effects
22
+ ✅ You want to test business logic independently from HTTP layer
23
+
24
+ ## When NOT to Use
25
+
26
+ ❌ Simple CRUD — `$model->update($request->validated())` can stay in the controller
27
+ ❌ One-liner logic — don't create a class for a single Eloquent call
28
+
29
+ ## Example
30
+
31
+ ```php
32
+ final class CreateOrderAction
33
+ {
34
+ public function __construct(
35
+ private PaymentService $paymentService,
36
+ private NotificationService $notificationService,
37
+ ) {}
38
+
39
+ public function execute(CreateOrderDTO $data): Order
40
+ {
41
+ $order = Order::create($data->toArray());
42
+
43
+ $this->paymentService->charge($order);
44
+ $this->notificationService->sendOrderConfirmation($order);
45
+
46
+ return $order;
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## In Controllers
52
+
53
+ Inject via constructor or method injection:
54
+
55
+ ```php
56
+ public function __invoke(
57
+ CreateOrderRequest $request,
58
+ CreateOrderAction $action,
59
+ ): OrderResource {
60
+ $order = $action->execute(CreateOrderDTO::fromRequest($request));
61
+ return OrderResource::make($order);
62
+ }
63
+ ```
64
+
@@ -0,0 +1,247 @@
1
+ # Strategy Pattern
2
+
3
+ > Choose the right algorithm at runtime — instead of if/else chains.
4
+
5
+ ## Idea
6
+
7
+ Define a family of interchangeable algorithms behind an interface.
8
+ Select the implementation based on context (config, user input, enum value).
9
+
10
+ ## Typical Use Cases
11
+
12
+ - Payment providers (Stripe, PayPal, Invoice)
13
+ - Export formats (CSV, PDF, Excel)
14
+ - Pricing / discount rules
15
+ - Notification channels (Email, SMS, Push)
16
+ - Import parsers (JSON, XML, CSV)
17
+
18
+ ## Sniff test — when an enum/string discriminator wants to become a Strategy
19
+
20
+ Run these three questions **before** writing a second `match`/`switch` arm,
21
+ a second `if/elseif` branch, or a second hardcoded class per provider/type.
22
+ Two "yes" answers → extract Strategy + Registry. Three "yes" → it is
23
+ already overdue.
24
+
25
+ 1. **Same-shape branches?** Do two or more branches/classes implement the
26
+ *same operation* on the *same data*, differing only in provider-specific
27
+ details (URL, field mapping, credentials, response parsing)?
28
+ 2. **Closed-list edits?** Adding a new case requires editing an enum, a
29
+ `match` block, an allowlist constant, *and* a service class — i.e. the
30
+ change is mechanical but spans ≥3 files?
31
+ 3. **Discriminator leakage?** Does the discriminator (`Type::FOO`,
32
+ `'stripe'`, an `is_csv()` check) appear in ≥3 places that should not
33
+ have to know about `FOO` specifically?
34
+
35
+ If yes → see *Refactoring recipe* below.
36
+
37
+ ## Example
38
+
39
+ ```php
40
+ interface DiscountStrategy
41
+ {
42
+ public function calculate(int $subtotalInCents): int;
43
+ }
44
+
45
+ final class PercentageDiscount implements DiscountStrategy
46
+ {
47
+ public function __construct(private int $percent) {}
48
+
49
+ public function calculate(int $subtotalInCents): int
50
+ {
51
+ return Math::divide(Math::multiply($subtotalInCents, $this->percent), 100);
52
+ }
53
+ }
54
+
55
+ final class FixedDiscount implements DiscountStrategy
56
+ {
57
+ public function __construct(private int $amountInCents) {}
58
+
59
+ public function calculate(int $subtotalInCents): int
60
+ {
61
+ return min($this->amountInCents, $subtotalInCents);
62
+ }
63
+ }
64
+ ```
65
+
66
+ ## Selection via Enum
67
+
68
+ ```php
69
+ enum DiscountType: string
70
+ {
71
+ case PERCENTAGE = 'percentage';
72
+ case FIXED = 'fixed';
73
+
74
+ public function strategy(int $value): DiscountStrategy
75
+ {
76
+ return match ($this) {
77
+ self::PERCENTAGE => new PercentageDiscount($value),
78
+ self::FIXED => new FixedDiscount($value),
79
+ };
80
+ }
81
+ }
82
+ ```
83
+
84
+ ## Refactoring recipe — from discriminator to Strategy
85
+
86
+ Two anti-patterns appear in real codebases and both refactor into the same
87
+ Strategy + Registry shape. Each step is a separate commit so reviewers can
88
+ follow the safety chain.
89
+
90
+ ### Sub-pattern A — *hardcoded single provider per class*
91
+
92
+ Each provider gets its own `FooImportService`, `FooJob`, `FooCommand`,
93
+ and every method body repeats `Provider::FOO->value` or
94
+ `Provider::FOO->getId()`. Adding a new provider means copy-pasting an
95
+ entire class tree.
96
+
97
+ ```php
98
+ // Before — one class per provider, discriminator hardcoded.
99
+ final class StripeImportService
100
+ {
101
+ public function id(): int { return Provider::STRIPE->getId(); }
102
+ public function name(): string { return Provider::STRIPE->value; }
103
+ public function import(): void { /* Stripe-specific logic */ }
104
+ }
105
+
106
+ final class PaypalImportService
107
+ {
108
+ public function id(): int { return Provider::PAYPAL->getId(); }
109
+ public function name(): string { return Provider::PAYPAL->value; }
110
+ public function import(): void { /* PayPal-specific logic */ }
111
+ }
112
+ ```
113
+
114
+ ```php
115
+ // After — one interface, N strategies, one registry.
116
+ interface ImportStrategy
117
+ {
118
+ public function provider(): Provider;
119
+ public function import(): void;
120
+ }
121
+
122
+ final class StripeImport implements ImportStrategy
123
+ {
124
+ public function provider(): Provider { return Provider::STRIPE; }
125
+ public function import(): void { /* Stripe-specific logic */ }
126
+ }
127
+ // ...PaypalImport implements ImportStrategy similarly.
128
+ ```
129
+
130
+ Recipe (one commit per step):
131
+
132
+ 1. Extract the interface (`ImportStrategy`) and move one provider class
133
+ to implement it. Existing call sites keep using the old class.
134
+ 2. Repeat for the remaining providers — still no callers changed.
135
+ 3. Introduce the Registry (next section). Migrate call sites one by one
136
+ from `new StripeImportService()` to `$registry->for(Provider::STRIPE)`.
137
+ 4. Delete the old per-provider classes.
138
+
139
+ ### Sub-pattern B — *allowlist constant on a single coordinator*
140
+
141
+ A central service holds an allowlist of supported discriminator values.
142
+ Every new provider edits the constant *and* a method that branches on it.
143
+
144
+ ```php
145
+ // Before — closed-list edit per new provider.
146
+ final class EquipmentImportService
147
+ {
148
+ private const FULL_SYNC_PROVIDERS = [
149
+ Provider::STRIPE,
150
+ Provider::PAYPAL,
151
+ Provider::INVOICE,
152
+ ];
153
+
154
+ public function supportsFullSync(Provider $p): bool
155
+ {
156
+ return in_array($p, self::FULL_SYNC_PROVIDERS, true);
157
+ }
158
+ }
159
+ ```
160
+
161
+ The fix is a **capability flag on the strategy interface** — the strategy
162
+ declares its own capabilities, and the coordinator asks the strategy
163
+ instead of consulting an allowlist.
164
+
165
+ ```php
166
+ interface ImportStrategy
167
+ {
168
+ public function provider(): Provider;
169
+ public function import(): void;
170
+ public function supportsFullSync(): bool; // capability flag
171
+ }
172
+ ```
173
+
174
+ A new provider now adds itself by implementing the interface — no central
175
+ list to edit, no in_array call to maintain. The coordinator becomes:
176
+
177
+ ```php
178
+ $strategy = $registry->for($provider);
179
+ if ($strategy->supportsFullSync()) {
180
+ $strategy->fullSync();
181
+ }
182
+ ```
183
+
184
+ ## Registry companion
185
+
186
+ A Registry resolves the discriminator → strategy lookup that previously
187
+ lived in the `match` block. It owns the only place the enum is mapped to
188
+ classes; everything downstream sees only the interface.
189
+
190
+ ```php
191
+ final class ImportStrategyRegistry
192
+ {
193
+ /** @var array<string, ImportStrategy> */
194
+ private array $byProvider;
195
+
196
+ /** @param iterable<ImportStrategy> $strategies */
197
+ public function __construct(iterable $strategies)
198
+ {
199
+ foreach ($strategies as $strategy) {
200
+ $this->byProvider[$strategy->provider()->value] = $strategy;
201
+ }
202
+ }
203
+
204
+ public function for(Provider $provider): ImportStrategy
205
+ {
206
+ return $this->byProvider[$provider->value]
207
+ ?? throw new InvalidArgumentException(
208
+ "No import strategy registered for {$provider->value}"
209
+ );
210
+ }
211
+ }
212
+ ```
213
+
214
+ Wire-up in Laravel — tag the strategies, inject the tag into the registry:
215
+
216
+ ```php
217
+ // In a ServiceProvider::register()
218
+ $this->app->tag([
219
+ StripeImport::class,
220
+ PaypalImport::class,
221
+ InvoiceImport::class,
222
+ ], 'import.strategies');
223
+
224
+ $this->app->bind(
225
+ ImportStrategyRegistry::class,
226
+ fn ($app) => new ImportStrategyRegistry($app->tagged('import.strategies')),
227
+ );
228
+ ```
229
+
230
+ A new provider now adds itself by:
231
+
232
+ 1. Implementing `ImportStrategy`.
233
+ 2. Adding one line to the `tag()` call.
234
+
235
+ No `match` block grows. No allowlist edits. No coordinator method changes.
236
+
237
+ ## When NOT to Use
238
+
239
+ ❌ Only two cases with **trivial logic** — a simple `match` or ternary is
240
+ enough. *"Trivial"* means the two arms each fit on one line and share
241
+ no structural shape. Two arms that each call a method on a service
242
+ are not trivial — see the sniff test.
243
+ ❌ The "strategies" share no common interface or behavior — if the
244
+ operations differ, you do not have a Strategy candidate.
245
+ ❌ The discriminator is set once at boot and never re-evaluated — a
246
+ single binding in the container is simpler than a Registry.
247
+
@@ -0,0 +1,28 @@
1
+ # Design Patterns
2
+
3
+ > Proven patterns for PHP / Laravel projects. Use them when they reduce complexity, not when they add it.
4
+
5
+ **Related Skills:** `php-service`, `dto-creator`, `jobs-events`, `security`, `eloquent`
6
+ **Related Rules:** `scope-control.md`, `architecture.md`
7
+
8
+ ## Overview
9
+
10
+ | Pattern | Skill | When to use |
11
+ |---|---|---|
12
+ | [Service Layer / Actions](patterns/service-layer.md) | `php-service` | Business logic that doesn't belong in controllers |
13
+ | [Dependency Injection](patterns/dependency-injection.md) | `php-service` | Decouple classes from concrete implementations |
14
+ | [Strategy](patterns/strategy.md) | `php-coder` | Multiple interchangeable algorithms at runtime |
15
+ | [Factory](patterns/factory.md) | `php-coder` | Complex object creation |
16
+ | [DTOs / Value Objects](patterns/dtos.md) | `dto-creator` | Structured data instead of untyped arrays |
17
+ | [Policies](patterns/policies.md) | `security` | Centralized authorization logic |
18
+ | [Events / Listeners](patterns/events.md) | `jobs-events` | Decoupled side effects (mails, logs, syncs) |
19
+ | [Pipeline / Middleware](patterns/pipelines.md) | `laravel` | Sequential processing steps / filter chains |
20
+ | [Repository](patterns/repositories.md) | `eloquent` | Complex or reusable database queries |
21
+
22
+ ## When NOT to Use Patterns
23
+
24
+ - Don't introduce a pattern for a 5-line function
25
+ - Don't create an interface if there will only ever be one implementation
26
+ - Don't use events for everything — direct calls are easier to follow
27
+ - Don't wrap simple Eloquent queries in repositories
28
+ - KISS and YAGNI always trump pattern purity