@event4u/agent-config 1.14.0 → 1.16.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 (293) hide show
  1. package/.agent-src/commands/agent-handoff.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +3 -3
  3. package/.agent-src/commands/bug-investigate.md +2 -2
  4. package/.agent-src/commands/chat-history-checkpoint.md +3 -3
  5. package/.agent-src/commands/chat-history-clear.md +2 -2
  6. package/.agent-src/commands/chat-history-resume.md +2 -2
  7. package/.agent-src/commands/chat-history.md +3 -3
  8. package/.agent-src/commands/check-current-md.md +44 -33
  9. package/.agent-src/commands/commit-in-chunks.md +43 -23
  10. package/.agent-src/commands/compress.md +34 -2
  11. package/.agent-src/commands/council-design.md +96 -0
  12. package/.agent-src/commands/council-optimize.md +115 -0
  13. package/.agent-src/commands/council-pr.md +123 -0
  14. package/.agent-src/commands/council.md +219 -0
  15. package/.agent-src/commands/create-pr.md +23 -0
  16. package/.agent-src/commands/do-and-judge.md +3 -3
  17. package/.agent-src/commands/do-in-steps.md +4 -4
  18. package/.agent-src/commands/e2e-heal.md +1 -1
  19. package/.agent-src/commands/e2e-plan.md +1 -1
  20. package/.agent-src/commands/feature-dev.md +8 -0
  21. package/.agent-src/commands/feature-explore.md +6 -1
  22. package/.agent-src/commands/feature-plan.md +33 -2
  23. package/.agent-src/commands/feature-refactor.md +5 -0
  24. package/.agent-src/commands/feature-roadmap.md +8 -3
  25. package/.agent-src/commands/feature.md +58 -0
  26. package/.agent-src/commands/fix-ci.md +5 -0
  27. package/.agent-src/commands/fix-portability.md +7 -2
  28. package/.agent-src/commands/fix-pr-bot-comments.md +5 -0
  29. package/.agent-src/commands/fix-pr-comments.md +5 -0
  30. package/.agent-src/commands/fix-pr-developer-comments.md +5 -0
  31. package/.agent-src/commands/fix-references.md +5 -0
  32. package/.agent-src/commands/fix-seeder.md +5 -0
  33. package/.agent-src/commands/fix.md +60 -0
  34. package/.agent-src/commands/jira-ticket.md +1 -1
  35. package/.agent-src/commands/judge.md +1 -1
  36. package/.agent-src/commands/memory-add.md +3 -3
  37. package/.agent-src/commands/memory-full.md +2 -2
  38. package/.agent-src/commands/memory-promote.md +2 -2
  39. package/.agent-src/commands/mode.md +5 -5
  40. package/.agent-src/commands/onboard.md +17 -8
  41. package/.agent-src/commands/optimize-agents.md +6 -1
  42. package/.agent-src/commands/optimize-augmentignore.md +14 -0
  43. package/.agent-src/commands/optimize-rtk-filters.md +5 -0
  44. package/.agent-src/commands/optimize-skills.md +6 -1
  45. package/.agent-src/commands/optimize.md +54 -0
  46. package/.agent-src/commands/propose-memory.md +2 -2
  47. package/.agent-src/commands/refine-ticket.md +9 -7
  48. package/.agent-src/commands/review-changes.md +61 -9
  49. package/.agent-src/commands/review-routing.md +1 -1
  50. package/.agent-src/commands/roadmap-create.md +42 -4
  51. package/.agent-src/commands/roadmap-execute.md +9 -7
  52. package/.agent-src/commands/set-cost-profile.md +11 -3
  53. package/.agent-src/commands/sync-agent-settings.md +11 -2
  54. package/.agent-src/commands/tests-create.md +1 -1
  55. package/.agent-src/commands/tests-execute.md +2 -3
  56. package/.agent-src/commands/upstream-contribute.md +1 -1
  57. package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
  58. package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
  59. package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
  60. package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
  61. package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
  62. package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
  63. package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
  64. package/.agent-src/personas/README.md +1 -1
  65. package/.agent-src/rules/agent-authority.md +24 -0
  66. package/.agent-src/rules/architecture.md +1 -1
  67. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  68. package/.agent-src/rules/artifact-engagement-recording.md +2 -2
  69. package/.agent-src/rules/ask-when-uncertain.md +1 -1
  70. package/.agent-src/rules/augment-portability.md +56 -37
  71. package/.agent-src/rules/autonomous-execution.md +78 -114
  72. package/.agent-src/rules/capture-learnings.md +1 -1
  73. package/.agent-src/rules/chat-history-cadence.md +109 -0
  74. package/.agent-src/rules/chat-history-ownership.md +123 -0
  75. package/.agent-src/rules/chat-history-visibility.md +96 -0
  76. package/.agent-src/rules/cli-output-handling.md +1 -1
  77. package/.agent-src/rules/{command-suggestion.md → command-suggestion-policy.md} +10 -9
  78. package/.agent-src/rules/commit-conventions.md +1 -1
  79. package/.agent-src/rules/commit-policy.md +43 -61
  80. package/.agent-src/rules/context-hygiene.md +3 -3
  81. package/.agent-src/rules/direct-answers.md +2 -2
  82. package/.agent-src/rules/docs-sync.md +1 -1
  83. package/.agent-src/rules/e2e-testing.md +1 -1
  84. package/.agent-src/rules/guidelines.md +4 -4
  85. package/.agent-src/rules/improve-before-implement.md +2 -2
  86. package/.agent-src/rules/language-and-tone.md +41 -96
  87. package/.agent-src/rules/minimal-safe-diff.md +3 -3
  88. package/.agent-src/rules/model-recommendation.md +4 -4
  89. package/.agent-src/rules/no-cheap-questions.md +89 -0
  90. package/.agent-src/rules/non-destructive-by-default.md +25 -59
  91. package/.agent-src/rules/onboarding-gate.md +5 -5
  92. package/.agent-src/rules/review-routing-awareness.md +9 -9
  93. package/.agent-src/rules/roadmap-progress-sync.md +132 -80
  94. package/.agent-src/rules/role-mode-adherence.md +3 -3
  95. package/.agent-src/rules/scope-control.md +65 -46
  96. package/.agent-src/rules/security-sensitive-stop.md +2 -2
  97. package/.agent-src/rules/size-enforcement.md +3 -2
  98. package/.agent-src/rules/think-before-action.md +5 -5
  99. package/.agent-src/rules/token-efficiency.md +4 -4
  100. package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +3 -3
  101. package/.agent-src/rules/user-interaction.md +31 -7
  102. package/.agent-src/rules/verify-before-complete.md +12 -67
  103. package/.agent-src/scripts/update_roadmap_progress.py +65 -8
  104. package/.agent-src/skills/ai-council/SKILL.md +333 -0
  105. package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
  106. package/.agent-src/skills/blade-ui/SKILL.md +30 -11
  107. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  108. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
  109. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  110. package/.agent-src/skills/command-writing/SKILL.md +16 -5
  111. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -1
  112. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  113. package/.agent-src/skills/developer-like-execution/SKILL.md +2 -2
  114. package/.agent-src/skills/existing-ui-audit/SKILL.md +24 -9
  115. package/.agent-src/skills/fe-design/SKILL.md +20 -15
  116. package/.agent-src/skills/file-editor/SKILL.md +9 -0
  117. package/.agent-src/skills/flux/SKILL.md +1 -1
  118. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  119. package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
  120. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  121. package/.agent-src/skills/livewire/SKILL.md +27 -8
  122. package/.agent-src/skills/override-management/SKILL.md +2 -2
  123. package/.agent-src/skills/php-coder/SKILL.md +1 -1
  124. package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
  125. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  126. package/.agent-src/skills/readme-writing/SKILL.md +1 -1
  127. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -1
  128. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -1
  129. package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
  130. package/.agent-src/skills/review-routing/SKILL.md +2 -2
  131. package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
  132. package/.agent-src/skills/rule-writing/SKILL.md +1 -1
  133. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  134. package/.agent-src/skills/skill-writing/SKILL.md +6 -6
  135. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
  136. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -1
  137. package/.agent-src/skills/upstream-contribute/SKILL.md +3 -3
  138. package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  139. package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +2 -2
  140. package/.agent-src/templates/agent-settings.md +9 -9
  141. package/.agent-src/templates/contexts/auth-model.md +1 -1
  142. package/.agent-src/templates/roadmaps.md +9 -8
  143. package/.agent-src/templates/scripts/README.md +2 -2
  144. package/.agent-src/templates/scripts/memory_lookup.py +1 -1
  145. package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
  146. package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
  147. package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
  148. package/.agent-src/templates/scripts/telemetry_record.py +14 -1
  149. package/.agent-src/templates/scripts/work_engine/__init__.py +2 -2
  150. package/.agent-src/templates/scripts/work_engine/cli.py +64 -461
  151. package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
  152. package/.agent-src/templates/scripts/work_engine/delivery_state.py +3 -3
  153. package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +1 -1
  154. package/.agent-src/templates/scripts/work_engine/directives/backend/implement.py +1 -1
  155. package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +1 -1
  156. package/.agent-src/templates/scripts/work_engine/directives/backend/plan.py +1 -1
  157. package/.agent-src/templates/scripts/work_engine/directives/backend/report.py +1 -1
  158. package/.agent-src/templates/scripts/work_engine/dispatcher.py +1 -1
  159. package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
  160. package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
  161. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
  162. package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
  163. package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +34 -2
  164. package/.agent-src/templates/scripts/work_engine/persona_policy.py +1 -1
  165. package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +1 -1
  166. package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
  167. package/.claude-plugin/marketplace.json +10 -2
  168. package/AGENTS.md +16 -12
  169. package/CHANGELOG.md +206 -9
  170. package/README.md +51 -52
  171. package/config/agent-settings.template.yml +58 -1
  172. package/config/gitignore-block.txt +3 -0
  173. package/docs/MIGRATION.md +122 -0
  174. package/docs/architecture.md +83 -34
  175. package/docs/catalog.md +331 -0
  176. package/docs/contracts/STABILITY.md +134 -0
  177. package/docs/contracts/adr-chat-history-split.md +132 -0
  178. package/docs/contracts/adr-command-suggestion.md +146 -0
  179. package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
  180. package/docs/contracts/adr-product-ui-track.md +384 -0
  181. package/docs/contracts/adr-prompt-driven-execution.md +187 -0
  182. package/docs/contracts/agent-memory-contract.md +149 -0
  183. package/docs/contracts/artifact-engagement-flow.md +262 -0
  184. package/docs/contracts/command-clusters.md +126 -0
  185. package/docs/contracts/command-suggestion-flow.md +148 -0
  186. package/docs/contracts/implement-ticket-flow.md +628 -0
  187. package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
  188. package/docs/contracts/linear-ai-three-layers.md +131 -0
  189. package/docs/contracts/load-context-schema.md +186 -0
  190. package/docs/contracts/rule-interactions.md +107 -0
  191. package/docs/contracts/rule-interactions.yml +238 -0
  192. package/docs/contracts/rule-priority-hierarchy.md +87 -0
  193. package/docs/contracts/ui-stack-extension.md +236 -0
  194. package/docs/contracts/ui-track-flow.md +338 -0
  195. package/docs/customization.md +14 -0
  196. package/docs/end-to-end-walkthroughs.md +165 -0
  197. package/docs/getting-started.md +27 -9
  198. package/docs/github-topics.md +12 -3
  199. package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
  200. package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
  201. package/docs/guidelines/php/git.md +164 -0
  202. package/docs/installation.md +42 -6
  203. package/docs/migrations/commands-1.15.0.md +112 -0
  204. package/docs/showcase.md +9 -4
  205. package/docs/skills-catalog.md +14 -8
  206. package/docs/ui-track-mental-model.md +121 -0
  207. package/llms.txt +13 -7
  208. package/package.json +1 -1
  209. package/scripts/agent-config +23 -0
  210. package/scripts/ai_council/__init__.py +39 -0
  211. package/scripts/ai_council/_default_prices.py +41 -0
  212. package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
  213. package/scripts/ai_council/_one_off_roundtrip.py +106 -0
  214. package/scripts/ai_council/budget_guard.py +172 -0
  215. package/scripts/ai_council/bundler.py +261 -0
  216. package/scripts/ai_council/clients.py +381 -0
  217. package/scripts/ai_council/modes.py +127 -0
  218. package/scripts/ai_council/orchestrator.py +350 -0
  219. package/scripts/ai_council/pricing.py +213 -0
  220. package/scripts/ai_council/project_context.py +159 -0
  221. package/scripts/ai_council/prompts.py +232 -0
  222. package/scripts/ai_council/session.py +144 -0
  223. package/scripts/build_linear_digest.py +4 -4
  224. package/scripts/check_always_budget.py +126 -0
  225. package/scripts/check_augmentignore.py +69 -0
  226. package/scripts/check_command_count_messaging.py +120 -0
  227. package/scripts/check_portability.py +57 -0
  228. package/scripts/check_public_catalog_links.py +122 -0
  229. package/scripts/check_public_links.py +185 -0
  230. package/scripts/check_references.py +5 -1
  231. package/scripts/check_roadmap_trackable.py +111 -0
  232. package/scripts/command_suggester/cooldown.py +1 -1
  233. package/scripts/generate_index.py +266 -0
  234. package/scripts/install_anthropic_key.sh +5 -0
  235. package/scripts/install_openai_key.sh +106 -0
  236. package/scripts/lint_load_context.py +163 -0
  237. package/scripts/lint_no_new_atomic_commands.py +179 -0
  238. package/scripts/lint_rule_interactions.py +149 -0
  239. package/scripts/memory_lookup.py +1 -1
  240. package/scripts/release.py +297 -64
  241. package/scripts/schemas/command.schema.json +20 -0
  242. package/scripts/schemas/rule.schema.json +10 -0
  243. package/scripts/skill_linter.py +26 -4
  244. package/scripts/sync_agent_settings.py +1 -1
  245. package/scripts/update_counts.py +19 -4
  246. package/scripts/update_prices.py +124 -0
  247. package/.agent-src/guidelines/php/git.md +0 -96
  248. package/.agent-src/rules/chat-history.md +0 -200
  249. /package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +0 -0
  250. /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
  251. /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
  252. /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
  253. /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
  254. /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
  255. /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
  256. /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
  257. /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
  258. /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
  259. /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
  260. /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
  261. /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
  262. /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
  263. /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
  264. /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
  265. /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
  266. /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
  267. /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
  268. /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
  269. /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
  270. /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
  271. /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
  272. /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
  273. /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
  274. /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
  275. /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
  276. /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
  277. /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
  278. /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
  279. /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
  280. /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
  281. /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
  282. /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
  283. /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
  284. /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
  285. /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
  286. /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
  287. /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
  288. /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
  289. /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
  290. /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
  291. /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
  292. /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
  293. /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
@@ -1,6 +1,6 @@
1
1
  # Skills Catalog
2
2
 
3
- All **122 skills** available in this package, in alphabetical order.
3
+ All **128 skills** available in this package, in alphabetical order.
4
4
  Click a skill name to open its SKILL.md and read the full guidance.
5
5
 
6
6
  > **Regenerate:** `python3 scripts/generate_catalog.py`
@@ -18,7 +18,7 @@ Click a skill name to open its SKILL.md and read the full guidance.
18
18
  | [`artisan-commands`](../.agent-src/skills/artisan-commands/SKILL.md) | Use when creating or modifying Artisan commands. Covers clear signatures, safe execution flow, helpful output, and project conventions for console tooling. |
19
19
  | [`authz-review`](../.agent-src/skills/authz-review/SKILL.md) | Use when reviewing authorization end-to-end — route → gate → policy → query scope → response filter — before changes to permissions, tenants, ownership, or admin flows. |
20
20
  | [`aws-infrastructure`](../.agent-src/skills/aws-infrastructure/SKILL.md) | Use when working with AWS resources — ECS Fargate, ECR, EFS, Secrets Manager, gomplate templates, multi-env deployments — even when the user says 'deploy to staging' without naming AWS. |
21
- | [`blade-ui`](../.agent-src/skills/blade-ui/SKILL.md) | Use when creating or editing Blade views, components, partials, layouts, or view logic even when the user says 'add a new page' or 'render this data' without naming Blade. |
21
+ | [`blade-ui`](../.agent-src/skills/blade-ui/SKILL.md) | Stack-implementation skill for Laravel Blade dispatched by `directives/ui/apply.py` (and `review.py` / `polish.py`) when the project's frontend stack is Blade. Covers views, components, partials, layouts, and view logic. |
22
22
  | [`blast-radius-analyzer`](../.agent-src/skills/blast-radius-analyzer/SKILL.md) | Use BEFORE editing shared code — enumerates every call site, event consumer, queue worker, API client, migration, and test that a planned change will touch, with a file:line citation per dependency. |
23
23
  | [`bug-analyzer`](../.agent-src/skills/bug-analyzer/SKILL.md) | Use when the user shares a Sentry error, Jira bug ticket, or error description and wants root cause analysis. Also for proactive bug hunting and code audits for hidden bugs. |
24
24
  | [`check-refs`](../.agent-src/skills/check-refs/SKILL.md) | Use when verifying cross-references between skills, rules, commands, guidelines, and context documents are not broken after edits, renames, or deletions. |
@@ -43,15 +43,17 @@ Click a skill name to open its SKILL.md and read the full guidance.
43
43
  | [`docker`](../.agent-src/skills/docker/SKILL.md) | Use when working with Docker — Dockerfile edits, docker-compose services, containers, or the dual-container (fast + Xdebug) setup — even when the user just says 'my container won't start'. |
44
44
  | [`dto-creator`](../.agent-src/skills/dto-creator/SKILL.md) | Use when the user says "create a DTO", "new data transfer object", or needs to convert request/response data into a typed PHP class. Creates DTOs with SimpleDto base class and attribute mapping. |
45
45
  | [`eloquent`](../.agent-src/skills/eloquent/SKILL.md) | Use when writing Eloquent models, relationships, scopes, or queries via Model:: — 'fetch users with their orders'. NOT for PHPStan output, non-Eloquent services, or raw SQL questions. |
46
- | [`fe-design`](../.agent-src/skills/fe-design/SKILL.md) | Use when designing frontend interfaces component architecture, layout patterns, form design, table patterns, responsive strategies, and UX principles for Blade/Livewire/Flux/Tailwind. |
46
+ | [`"estimate-ticket"`](../.agent-src/skills/"estimate-ticket"/SKILL.md) | Estimate a Jira/Linear ticket'estimate PROJ-123', 'wie groß ist das?', 'should we split this?' size + risk + split + uncertainty, sibling of /refine-ticket, close-prompt. |
47
+ | [`existing-ui-audit`](../.agent-src/skills/existing-ui-audit/SKILL.md) | Use BEFORE writing or editing any non-trivial UI — inventories components, design tokens, shadcn primitives, and reusable patterns into state.ui_audit. Hard gate for the ui directive set. |
48
+ | [`fe-design`](../.agent-src/skills/fe-design/SKILL.md) | Reference for frontend-design heuristics — component architecture, layout patterns, form/table design, responsive strategy, a11y, UX principles. Stack-agnostic; cited by directives/ui/design.py. |
47
49
  | [`feature-planning`](../.agent-src/skills/feature-planning/SKILL.md) | Use when the user says "plan a feature", "brainstorm", "explore this idea", or wants to go from idea to structured plan and roadmap. |
48
50
  | [`file-editor`](../.agent-src/skills/file-editor/SKILL.md) | Use when opening edited files in the user's IDE. Reads settings from .agent-settings.yml to determine IDE and whether auto-open is enabled. |
49
51
  | [`finishing-a-development-branch`](../.agent-src/skills/finishing-a-development-branch/SKILL.md) | Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up, and routes to merge/PR/park/discard — even when the user just says 'I'm done, what now?'. |
50
- | [`flux`](../.agent-src/skills/flux/SKILL.md) | Use when writing Laravel Flux UI components the official Livewire component library by the Laravel team. Covers components, slots, and variants. |
52
+ | [`flux`](../.agent-src/skills/flux/SKILL.md) | Stack-implementation skill for Laravel Flux dispatched by `directives/ui/apply.py` (and `review.py` / `polish.py`) when the project uses `livewire/flux`. Covers Flux components, slots, variants, and form primitives. |
51
53
  | [`git-workflow`](../.agent-src/skills/git-workflow/SKILL.md) | Use when working with Git — branch naming, commit messages, PR creation, rebasing, or the code review process — even when the user says 'push this' or 'merge the branch' without naming Git. |
52
54
  | [`github-ci`](../.agent-src/skills/github-ci/SKILL.md) | Use when working with GitHub Actions — workflow YAML, quality gates, test matrices, deployment triggers, reusable workflows — even when the user just says 'my CI is failing' or 'add a check'. |
53
55
  | [`grafana`](../.agent-src/skills/grafana/SKILL.md) | Use when working with Grafana — dashboards, Loki LogQL queries, alerting rules, monitoring panels — even when the user just says 'build me a dashboard' or 'query the logs' without naming Grafana. |
54
- | [`guideline-writing`](../.agent-src/skills/guideline-writing/SKILL.md) | Use when creating or editing a guideline in .agent-src.uncompressed/guidelines/ — reference material cited by skills, no auto-triggers — even when the user just says 'write up our naming conventions'. |
56
+ | [`guideline-writing`](../.agent-src/skills/guideline-writing/SKILL.md) | Use when creating or editing a guideline in docs/guidelines/ — reference material cited by skills, no auto-triggers — even when the user just says 'write up our naming conventions'. |
55
57
  | [`jira-integration`](../.agent-src/skills/jira-integration/SKILL.md) | Use when the user says "check Jira", "create ticket", "update issue", or needs JQL queries, ticket transitions, or branch-to-ticket linking. |
56
58
  | [`jobs-events`](../.agent-src/skills/jobs-events/SKILL.md) | Use when creating Laravel jobs, queued workflows, events, or listeners. Covers clear responsibilities, safe serialization, and retry/failure handling. |
57
59
  | [`judge-bug-hunter`](../.agent-src/skills/judge-bug-hunter/SKILL.md) | Use when a diff needs correctness review — null-safety, edge cases, off-by-one, races, error handling — dispatched by /review-changes, /do-and-judge, /judge, even without 'judge'. |
@@ -70,9 +72,10 @@ Click a skill name to open its SKILL.md and read the full guidance.
70
72
  | [`laravel-validation`](../.agent-src/skills/laravel-validation/SKILL.md) | Use when writing validation — Form Requests, rules, custom rule objects, request-boundary design — even when the user just says 'validate this input' or 'check the request' without naming it. |
71
73
  | [`learning-to-rule-or-skill`](../.agent-src/skills/learning-to-rule-or-skill/SKILL.md) | Use when a repeated learning, mistake, or successful pattern should be turned into a new rule or skill. Also use after completing a task to capture learnings from the work. |
72
74
  | [`lint-skills`](../.agent-src/skills/lint-skills/SKILL.md) | Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata. |
73
- | [`livewire`](../.agent-src/skills/livewire/SKILL.md) | Use when writing Livewire components reactive state, events, lifecycle hooks, and clean separation between component logic and Blade templates. |
75
+ | [`livewire`](../.agent-src/skills/livewire/SKILL.md) | Stack-implementation skill for Livewire — dispatched by `directives/ui/apply.py` (and `review.py` / `polish.py`) when the project's frontend stack is Livewire. Covers reactive state, events, lifecycle hooks, and component/view separation. |
74
76
  | [`logging-monitoring`](../.agent-src/skills/logging-monitoring/SKILL.md) | Use when working with logging or monitoring — Sentry error tracking, Grafana/Loki log aggregation, structured logging channels, or monitoring helpers. |
75
77
  | [`mcp`](../.agent-src/skills/mcp/SKILL.md) | Use when working with MCP (Model Context Protocol) servers — their tools, capabilities, and best practices for effective agent workflows. |
78
+ | [`md-language-check`](../.agent-src/skills/md-language-check/SKILL.md) | Use BEFORE saving any .md under .augment/, .agent-src*/, or agents/ — scans umlauts, German function words, and quoted German phrases outside DE:/EN: anchor blocks. Hard gate per language-and-tone. |
76
79
  | [`merge-conflicts`](../.agent-src/skills/merge-conflicts/SKILL.md) | Use when the user has merge conflicts or says "resolve conflicts". Understands conflict markers, resolution strategies, and verification workflow. |
77
80
  | [`migration-creator`](../.agent-src/skills/migration-creator/SKILL.md) | Use when the user says "create migration", "add column", or "new table". Creates migrations with correct table prefixes, column naming, and multi-tenant awareness. |
78
81
  | [`module-management`](../.agent-src/skills/module-management/SKILL.md) | Use when the user says "create module", "explore module", or works within app/Modules/. Understands module structure, auto-loading, route registration, and namespace conventions. |
@@ -97,10 +100,13 @@ Click a skill name to open its SKILL.md and read the full guidance.
97
100
  | [`project-analyzer`](../.agent-src/skills/project-analyzer/SKILL.md) | ONLY when user explicitly requests: full project analysis, tech stack detection, or structured analysis documents for agents/analysis/. NOT for regular feature work. |
98
101
  | [`project-docs`](../.agent-src/skills/project-docs/SKILL.md) | Use when looking for project-specific documentation. Knows which docs exist in agents/docs/ and agents/contexts/ and maps work areas to relevant docs. |
99
102
  | [`quality-tools`](../.agent-src/skills/quality-tools/SKILL.md) | Use when PHPStan, Rector, or ECS output appears — \"phpstan says mixed\", type errors, \"fix code style\", \"run rector\" — even when Eloquent/Laravel/model code is also mentioned. |
103
+ | [`react-shadcn-ui`](../.agent-src/skills/react-shadcn-ui/SKILL.md) | Use when building React UI on shadcn/ui primitives + Tailwind — the apply/review/polish skill dispatched by `directives/ui/*` for the `react-shadcn` stack. |
100
104
  | [`readme-reviewer`](../.agent-src/skills/readme-reviewer/SKILL.md) | Use when reviewing a README for accuracy, usability, and alignment with the actual repository. Detects invented content, broken setup steps, and structural issues. |
101
105
  | [`readme-writing`](../.agent-src/skills/readme-writing/SKILL.md) | Use when creating, rewriting, or significantly improving a README based on the actual repository structure, commands, and intended audience. |
102
106
  | [`readme-writing-package`](../.agent-src/skills/readme-writing-package/SKILL.md) | Use when creating or rewriting a README for a reusable package or library. Focus on installability, minimal usage example, compatibility, and developer onboarding. |
103
107
  | [`receiving-code-review`](../.agent-src/skills/receiving-code-review/SKILL.md) | Use when processing code review feedback (bot or human) before changing anything — triages, verifies, and pushes back with technical reasoning — even when the user just says 'fix the comments'. |
108
+ | [`"refine-prompt"`](../.agent-src/skills/"refine-prompt"/SKILL.md) | Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans — '/work \"…\"', 'baue X', 'ist der Prompt klar genug für die Engine?'. |
109
+ | [`"refine-ticket"`](../.agent-src/skills/"refine-ticket"/SKILL.md) | Refine a Jira/Linear ticket before planning — 'refine ticket', 'tighten AC on PROJ-123', 'ist das Ticket klar?' — rewritten ticket, Top-5 risks, persona voices, sub-skills orchestrated, close-prompt. |
104
110
  | [`requesting-code-review`](../.agent-src/skills/requesting-code-review/SKILL.md) | Use when asking for a review or creating a PR — self-review first, frame the right context, test plan included — even when the user just says 'open a PR' or 'ready to merge'. |
105
111
  | [`review-routing`](../.agent-src/skills/review-routing/SKILL.md) | Use when preparing a PR description, suggesting reviewers, or flagging risk — produces owner-mapped roles plus historical bug-pattern matches from project-local YAML. |
106
112
  | [`roadmap-management`](../.agent-src/skills/roadmap-management/SKILL.md) | Use when the user says "create roadmap", "show roadmap", or "execute roadmap". Creates, reads, and manages roadmap files with phase tracking. |
@@ -115,7 +121,7 @@ Click a skill name to open its SKILL.md and read the full guidance.
115
121
  | [`skill-reviewer`](../.agent-src/skills/skill-reviewer/SKILL.md) | Use when reviewing, auditing, or optimizing skills — validates against the 7 Skill Killers checklist and produces fix recommendations. |
116
122
  | [`skill-writing`](../.agent-src/skills/skill-writing/SKILL.md) | Use when deciding 'should this be a skill or a rule?', creating/improving/reviewing agent skills, SKILL.md frontmatter, or procedure sections — even without saying 'skill-writing'. |
117
123
  | [`sql-writing`](../.agent-src/skills/sql-writing/SKILL.md) | Use when writing raw SQL — MariaDB/MySQL syntax, parameterization, raw migrations, seeders with `DB::statement` — even when the user just pastes a query and asks 'why is this slow' without naming SQL. |
118
- | [`subagent-orchestration`](../.agent-src/skills/subagent-orchestration/SKILL.md) | Use when orchestrating implementer/judge subagents — five modes (do-and-judge, do-in-steps, do-in-parallel, do-competitively, judge-with-debate) — model pairing and parallelism from .agent-settings.yml. |
124
+ | [`subagent-orchestration`](../.agent-src/skills/subagent-orchestration/SKILL.md) | Use when orchestrating implementer/judge subagents — five modes (do-and-judge, do-in-steps, do-in-parallel, do-competitively, judge-with-debate) — models from .agent-settings.yml. |
119
125
  | [`systematic-debugging`](../.agent-src/skills/systematic-debugging/SKILL.md) | Use when hitting a bug, test failure, crash, or unexpected behavior — enforces reproduce → isolate → hypothesize → verify before any fix — even when the user just says 'this is broken' or 'quick fix'. |
120
126
  | [`technical-specification`](../.agent-src/skills/technical-specification/SKILL.md) | Use when the user says "write a spec", "create RFC", or "document this decision". Writes technical specifications, RFCs, and ADRs with clear structure. |
121
127
  | [`terraform`](../.agent-src/skills/terraform/SKILL.md) | Use when writing Terraform — AWS modules, resources, variables, outputs, remote state — even when the user just says 'provision this infra' or 'add an S3 bucket' without naming Terraform. |
@@ -128,7 +134,7 @@ Click a skill name to open its SKILL.md and read the full guidance.
128
134
  | [`upstream-contribute`](../.agent-src/skills/upstream-contribute/SKILL.md) | Use when a learning, new skill, rule improvement, or bug fix from a consumer project should be contributed back to the shared agent-config package. |
129
135
  | [`using-git-worktrees`](../.agent-src/skills/using-git-worktrees/SKILL.md) | Use when starting parallel work in isolation from the current branch — spawn a git worktree with ignore-safety checks and a clean test baseline — even when the user says 'try this on the side'. |
130
136
  | [`"validate-feature-fit"`](../.agent-src/skills/"validate-feature-fit"/SKILL.md) | Validate whether a feature request fits the existing codebase — check for duplicates, contradictions, scope creep, and architectural misfit |
131
- | [`verify-before-complete`](../.agent-src/skills/verify-before-complete/SKILL.md) | Use when claiming 'done', suggesting a commit, push, or PR — runs the evidence gate so completion claims come from fresh output in this message, not memory or earlier runs. |
137
+ | [`verify-completion-evidence`](../.agent-src/skills/verify-completion-evidence/SKILL.md) | Use when claiming 'done', suggesting a commit, push, or PR — runs the evidence gate so completion claims come from fresh output in this message, not memory or earlier runs. |
132
138
  | [`websocket`](../.agent-src/skills/websocket/SKILL.md) | Use when building real-time features — WebSocket broadcasting, live updates, presence channels, connection state — even when the user just says 'push this to the client live'. |
133
139
 
134
140
  ---
@@ -0,0 +1,121 @@
1
+ ---
2
+ stability: stable
3
+ ---
4
+
5
+ # UI Track — Mental Model (1 page)
6
+
7
+ > **Audience:** anyone driving `/work` or `/implement-ticket` on a UI-shaped
8
+ > prompt, or reading code that touches `state.directive_set`.
9
+ > **Not a contract.** For shapes, schemas, and slot wiring see
10
+ > [`ui-track-flow.md`](contracts/ui-track-flow.md) and
11
+ > [`adr-product-ui-track.md`](contracts/adr-product-ui-track.md).
12
+ > **Not a roadmap.** Phased delivery lives in
13
+ > [`road-to-product-ui-track.md`](../agents/roadmaps/archive/road-to-product-ui-track.md)
14
+ > and [`road-to-visual-review-loop.md`](../agents/roadmaps/archive/road-to-visual-review-loop.md).
15
+ > This page is the picture you keep in your head while the engine runs.
16
+
17
+ ## The three (+1) directive sets
18
+
19
+ | Set | Shape | Halt budget |
20
+ |---|---|---:|
21
+ | `backend` | `refine → memory → analyze → plan → implement → test → verify → report` | depends on confidence band |
22
+ | `ui` | `audit → design → apply → review → polish → report` | **2** (audit pick + design sign-off) |
23
+ | `ui-trivial` | `refine → apply → test → report` | **0** on the happy path |
24
+ | `mixed` | `refine → memory → analyze → contract → ui → stitch → verify → report` | inherits both |
25
+
26
+ The first three are sibling routes; `mixed` stitches `backend` and `ui`
27
+ in one envelope. The dispatcher picks one and refuses to switch
28
+ mid-flight.
29
+
30
+ ## When to pick which
31
+
32
+ | Signal | Set |
33
+ |---|---|
34
+ | No UI keywords, no UI envelope, prompt edits services / migrations / tests / config | `backend` |
35
+ | New component / screen / partial; "improve this dashboard"; "build a settings panel"; major edit to a screen | `ui` |
36
+ | Bounded edit, **provably** ≤ 1 file, ≤ 5 changed lines, no new component, no new state, no new dependency | `ui-trivial` |
37
+ | One prompt that adds a backend endpoint **and** the screen that consumes it | `mixed` |
38
+
39
+ The classifier picks; the agent does not override the pick silently.
40
+ A misclassified `ui-trivial` that grows during edit must reclassify
41
+ **loudly** (stop, restart at `audit`) — never quietly upgrade in place.
42
+
43
+ ## What the agent must never do
44
+
45
+ 1. **Skip the audit.** No new component, screen, or partial without
46
+ `state.ui_audit` populated (or `greenfield_decision` recorded).
47
+ Defense-in-depth: dispatcher refuses *and* `ui-audit-gate`
48
+ refuses, even when the engine is not in the loop.
49
+ 2. **Render the UI.** The engine never opens a browser, never takes a
50
+ screenshot, never runs axe. Rendering and a11y scanning happen
51
+ out-of-process; the engine consumes the `preview_envelope` /
52
+ `a11y` envelope written by the skill.
53
+ 3. **Edit microcopy.** The design brief is **locked**. `apply` reads
54
+ strings verbatim. `<placeholder>`, `lorem`, `todo:`, `tbd`, `xxx`
55
+ are rejected at the producer (design) **and** the consumer (apply).
56
+ 4. **Loop polish indefinitely.** Hard ceiling is 2 rounds, +1 with
57
+ the explicit Extend pick (one-shot, never returns). Round 4 is
58
+ rejected on disk regardless of flags.
59
+ 5. **Confuse "ship as-is" with "review clean".** `review_clean=False`
60
+ plus `findings=[]` is a malformed envelope, not a green light.
61
+
62
+ ## Where each set stops
63
+
64
+ | Set | Stops cleanly when … | Stops with a halt when … |
65
+ |---|---|---|
66
+ | `ui` | `report` written; design brief + audit + apply + review + polish all `SUCCESS` | audit ambiguous · greenfield decision missing · design unconfirmed · review dirty at ceiling · a11y violation un-accepted · preview render failed |
67
+ | `ui-trivial` | `report` written; classifier preconditions held throughout | preconditions fail mid-flight → reclassify to `ui` (loud halt) |
68
+ | `mixed` | `stitch` joins both subtrees; `verify` + `report` clean | either subtree halts → mixed waits, never auto-completes the other |
69
+
70
+ ## What "audit" actually means
71
+
72
+ A non-empty `state.ui_audit` carrying **at least one of**:
73
+
74
+ - `components_found` — `[{path, name, kind, similarity?}]` from
75
+ [`existing-ui-audit`](../.agent-src/skills/existing-ui-audit/SKILL.md).
76
+ - `greenfield: true` plus `greenfield_decision ∈ {scaffold, bare, external_reference}`.
77
+ - Legacy `components` alias — same shape.
78
+
79
+ Empty dict, `null`, or a dict without those keys is **not** an audit.
80
+ The gate fires; the dispatcher emits `@agent-directive: existing-ui-audit`
81
+ instead of advancing.
82
+
83
+ ## What "design locked" actually means
84
+
85
+ The brief carries `layout`, `components`, `states`, `microcopy`,
86
+ `a11y`. State coverage requires `empty`, `loading`, `error`, `success`,
87
+ `disabled`. `apply` does not re-decide microcopy — it copies strings.
88
+ "The button label feels off" is a **new** design pass, not a polish
89
+ fix.
90
+
91
+ ## Polish termination — subjective vs objective
92
+
93
+ | Findings at ceiling | Halt branch | User options |
94
+ |---|---|---|
95
+ | Non-a11y only | `polish_ceiling_reached` | ship as-is · abort · hand off |
96
+ | Includes a11y violation | `polish_a11y_blocking` | extend (one-shot, sets `extension_used=True`) · accept (rule ids land in `accepted_violations`) · abort |
97
+
98
+ Pre-existing a11y violations recorded in `state.ui_audit.a11y_baseline`
99
+ stay informational and never block.
100
+
101
+ ## Stack dispatch (apply / review / polish)
102
+
103
+ `state.stack.frontend` decides which skill bundle runs:
104
+
105
+ | Stack | Skill bundle |
106
+ |---|---|
107
+ | `blade-livewire-flux` | `flux` + `livewire` + `blade-ui` |
108
+ | `react-shadcn` | `react-shadcn-ui` |
109
+ | `vue` | `ui-apply-vue` |
110
+ | `plain` (or unknown) | `blade-ui` + Tailwind base |
111
+
112
+ The directive set stays `ui`; only the skill changes. Adding a new
113
+ stack ships as a new skill bundle and a recipe — see
114
+ [`ui-stack-extension.md`](contracts/ui-stack-extension.md).
115
+
116
+ ## See also
117
+
118
+ - [`adr-product-ui-track.md`](contracts/adr-product-ui-track.md) — *why* this shape.
119
+ - [`ui-track-flow.md`](contracts/ui-track-flow.md) — slot-by-slot contract.
120
+ - [`ui-stack-extension.md`](contracts/ui-stack-extension.md) — adding a stack.
121
+ - [`ui-audit-gate`](../.agent-src/rules/ui-audit-gate.md) — the always-on rule that mirrors the dispatcher gate.
package/llms.txt CHANGED
@@ -16,7 +16,7 @@ api-testing: Use when writing API endpoint tests — integration tests, contract
16
16
  artisan-commands: Use when creating or modifying Artisan commands. Covers clear signatures, safe execution flow, helpful output, and project conventions for console tooling.
17
17
  authz-review: Use when reviewing authorization end-to-end — route → gate → policy → query scope → response filter — before changes to permissions, tenants, ownership, or admin flows.
18
18
  aws-infrastructure: Use when working with AWS resources — ECS Fargate, ECR, EFS, Secrets Manager, gomplate templates, multi-env deployments — even when the user says 'deploy to staging' without naming AWS.
19
- blade-ui: Use when creating or editing Blade views, components, partials, layouts, or view logic even when the user says 'add a new page' or 'render this data' without naming Blade.
19
+ blade-ui: Stack-implementation skill for Laravel Blade dispatched by `directives/ui/apply.py` (and `review.py` / `polish.py`) when the project's frontend stack is Blade. Covers views, components, partials, layouts, and view logic.
20
20
  blast-radius-analyzer: Use BEFORE editing shared code — enumerates every call site, event consumer, queue worker, API client, migration, and test that a planned change will touch, with a file:line citation per dependency.
21
21
  bug-analyzer: Use when the user shares a Sentry error, Jira bug ticket, or error description and wants root cause analysis. Also for proactive bug hunting and code audits for hidden bugs.
22
22
  check-refs: Use when verifying cross-references between skills, rules, commands, guidelines, and context documents are not broken after edits, renames, or deletions.
@@ -41,15 +41,17 @@ developer-like-execution: Use when implementing, debugging, refactoring, or revi
41
41
  docker: Use when working with Docker — Dockerfile edits, docker-compose services, containers, or the dual-container (fast + Xdebug) setup — even when the user just says 'my container won't start'.
42
42
  dto-creator: Use when the user says "create a DTO", "new data transfer object", or needs to convert request/response data into a typed PHP class. Creates DTOs with SimpleDto base class and attribute mapping.
43
43
  eloquent: Use when writing Eloquent models, relationships, scopes, or queries via Model:: — 'fetch users with their orders'. NOT for PHPStan output, non-Eloquent services, or raw SQL questions.
44
- fe-design: Use when designing frontend interfaces component architecture, layout patterns, form design, table patterns, responsive strategies, and UX principles for Blade/Livewire/Flux/Tailwind.
44
+ "estimate-ticket": Estimate a Jira/Linear ticket'estimate PROJ-123', 'wie groß ist das?', 'should we split this?' size + risk + split + uncertainty, sibling of /refine-ticket, close-prompt.
45
+ existing-ui-audit: Use BEFORE writing or editing any non-trivial UI — inventories components, design tokens, shadcn primitives, and reusable patterns into state.ui_audit. Hard gate for the ui directive set.
46
+ fe-design: Reference for frontend-design heuristics — component architecture, layout patterns, form/table design, responsive strategy, a11y, UX principles. Stack-agnostic; cited by directives/ui/design.py.
45
47
  feature-planning: Use when the user says "plan a feature", "brainstorm", "explore this idea", or wants to go from idea to structured plan and roadmap.
46
48
  file-editor: Use when opening edited files in the user's IDE. Reads settings from .agent-settings.yml to determine IDE and whether auto-open is enabled.
47
49
  finishing-a-development-branch: Use when the feature is implementation-complete and the next step is 'ship it' — verifies, cleans up, and routes to merge/PR/park/discard — even when the user just says 'I'm done, what now?'.
48
- flux: Use when writing Laravel Flux UI components the official Livewire component library by the Laravel team. Covers components, slots, and variants.
50
+ flux: Stack-implementation skill for Laravel Flux dispatched by `directives/ui/apply.py` (and `review.py` / `polish.py`) when the project uses `livewire/flux`. Covers Flux components, slots, variants, and form primitives.
49
51
  git-workflow: Use when working with Git — branch naming, commit messages, PR creation, rebasing, or the code review process — even when the user says 'push this' or 'merge the branch' without naming Git.
50
52
  github-ci: Use when working with GitHub Actions — workflow YAML, quality gates, test matrices, deployment triggers, reusable workflows — even when the user just says 'my CI is failing' or 'add a check'.
51
53
  grafana: Use when working with Grafana — dashboards, Loki LogQL queries, alerting rules, monitoring panels — even when the user just says 'build me a dashboard' or 'query the logs' without naming Grafana.
52
- guideline-writing: Use when creating or editing a guideline in .agent-src.uncompressed/guidelines/ — reference material cited by skills, no auto-triggers — even when the user just says 'write up our naming conventions'.
54
+ guideline-writing: Use when creating or editing a guideline in docs/guidelines/ — reference material cited by skills, no auto-triggers — even when the user just says 'write up our naming conventions'.
53
55
  jira-integration: Use when the user says "check Jira", "create ticket", "update issue", or needs JQL queries, ticket transitions, or branch-to-ticket linking.
54
56
  jobs-events: Use when creating Laravel jobs, queued workflows, events, or listeners. Covers clear responsibilities, safe serialization, and retry/failure handling.
55
57
  judge-bug-hunter: Use when a diff needs correctness review — null-safety, edge cases, off-by-one, races, error handling — dispatched by /review-changes, /do-and-judge, /judge, even without 'judge'.
@@ -68,9 +70,10 @@ laravel-scheduling: Use when configuring Laravel task scheduling — cron expres
68
70
  laravel-validation: Use when writing validation — Form Requests, rules, custom rule objects, request-boundary design — even when the user just says 'validate this input' or 'check the request' without naming it.
69
71
  learning-to-rule-or-skill: Use when a repeated learning, mistake, or successful pattern should be turned into a new rule or skill. Also use after completing a task to capture learnings from the work.
70
72
  lint-skills: Use when running the package's skill linter against all skills and rules to validate frontmatter, required sections, and execution metadata.
71
- livewire: Use when writing Livewire components reactive state, events, lifecycle hooks, and clean separation between component logic and Blade templates.
73
+ livewire: Stack-implementation skill for Livewire — dispatched by `directives/ui/apply.py` (and `review.py` / `polish.py`) when the project's frontend stack is Livewire. Covers reactive state, events, lifecycle hooks, and component/view separation.
72
74
  logging-monitoring: Use when working with logging or monitoring — Sentry error tracking, Grafana/Loki log aggregation, structured logging channels, or monitoring helpers.
73
75
  mcp: Use when working with MCP (Model Context Protocol) servers — their tools, capabilities, and best practices for effective agent workflows.
76
+ md-language-check: Use BEFORE saving any .md under .augment/, .agent-src*/, or agents/ — scans umlauts, German function words, and quoted German phrases outside DE:/EN: anchor blocks. Hard gate per language-and-tone.
74
77
  merge-conflicts: Use when the user has merge conflicts or says "resolve conflicts". Understands conflict markers, resolution strategies, and verification workflow.
75
78
  migration-creator: Use when the user says "create migration", "add column", or "new table". Creates migrations with correct table prefixes, column naming, and multi-tenant awareness.
76
79
  module-management: Use when the user says "create module", "explore module", or works within app/Modules/. Understands module structure, auto-loading, route registration, and namespace conventions.
@@ -95,10 +98,13 @@ project-analysis-zend-laminas: Use for deep Zend Framework or Laminas project an
95
98
  project-analyzer: ONLY when user explicitly requests: full project analysis, tech stack detection, or structured analysis documents for agents/analysis/. NOT for regular feature work.
96
99
  project-docs: Use when looking for project-specific documentation. Knows which docs exist in agents/docs/ and agents/contexts/ and maps work areas to relevant docs.
97
100
  quality-tools: Use when PHPStan, Rector, or ECS output appears — \"phpstan says mixed\", type errors, \"fix code style\", \"run rector\" — even when Eloquent/Laravel/model code is also mentioned.
101
+ react-shadcn-ui: Use when building React UI on shadcn/ui primitives + Tailwind — the apply/review/polish skill dispatched by `directives/ui/*` for the `react-shadcn` stack.
98
102
  readme-reviewer: Use when reviewing a README for accuracy, usability, and alignment with the actual repository. Detects invented content, broken setup steps, and structural issues.
99
103
  readme-writing: Use when creating, rewriting, or significantly improving a README based on the actual repository structure, commands, and intended audience.
100
104
  readme-writing-package: Use when creating or rewriting a README for a reusable package or library. Focus on installability, minimal usage example, compatibility, and developer onboarding.
101
105
  receiving-code-review: Use when processing code review feedback (bot or human) before changing anything — triages, verifies, and pushes back with technical reasoning — even when the user just says 'fix the comments'.
106
+ "refine-prompt": Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans — '/work \"…\"', 'baue X', 'ist der Prompt klar genug für die Engine?'.
107
+ "refine-ticket": Refine a Jira/Linear ticket before planning — 'refine ticket', 'tighten AC on PROJ-123', 'ist das Ticket klar?' — rewritten ticket, Top-5 risks, persona voices, sub-skills orchestrated, close-prompt.
102
108
  requesting-code-review: Use when asking for a review or creating a PR — self-review first, frame the right context, test plan included — even when the user just says 'open a PR' or 'ready to merge'.
103
109
  review-routing: Use when preparing a PR description, suggesting reviewers, or flagging risk — produces owner-mapped roles plus historical bug-pattern matches from project-local YAML.
104
110
  roadmap-management: Use when the user says "create roadmap", "show roadmap", or "execute roadmap". Creates, reads, and manages roadmap files with phase tracking.
@@ -113,7 +119,7 @@ skill-management: Use when compressing, decompressing, refactoring, or improving
113
119
  skill-reviewer: Use when reviewing, auditing, or optimizing skills — validates against the 7 Skill Killers checklist and produces fix recommendations.
114
120
  skill-writing: Use when deciding 'should this be a skill or a rule?', creating/improving/reviewing agent skills, SKILL.md frontmatter, or procedure sections — even without saying 'skill-writing'.
115
121
  sql-writing: Use when writing raw SQL — MariaDB/MySQL syntax, parameterization, raw migrations, seeders with `DB::statement` — even when the user just pastes a query and asks 'why is this slow' without naming SQL.
116
- subagent-orchestration: Use when orchestrating implementer/judge subagents — five modes (do-and-judge, do-in-steps, do-in-parallel, do-competitively, judge-with-debate) — model pairing and parallelism from .agent-settings.yml.
122
+ subagent-orchestration: Use when orchestrating implementer/judge subagents — five modes (do-and-judge, do-in-steps, do-in-parallel, do-competitively, judge-with-debate) — models from .agent-settings.yml.
117
123
  systematic-debugging: Use when hitting a bug, test failure, crash, or unexpected behavior — enforces reproduce → isolate → hypothesize → verify before any fix — even when the user just says 'this is broken' or 'quick fix'.
118
124
  technical-specification: Use when the user says "write a spec", "create RFC", or "document this decision". Writes technical specifications, RFCs, and ADRs with clear structure.
119
125
  terraform: Use when writing Terraform — AWS modules, resources, variables, outputs, remote state — even when the user just says 'provision this infra' or 'add an S3 bucket' without naming Terraform.
@@ -126,5 +132,5 @@ universal-project-analysis: ONLY when user explicitly requests: full project ana
126
132
  upstream-contribute: Use when a learning, new skill, rule improvement, or bug fix from a consumer project should be contributed back to the shared agent-config package.
127
133
  using-git-worktrees: Use when starting parallel work in isolation from the current branch — spawn a git worktree with ignore-safety checks and a clean test baseline — even when the user says 'try this on the side'.
128
134
  "validate-feature-fit": Validate whether a feature request fits the existing codebase — check for duplicates, contradictions, scope creep, and architectural misfit
129
- verify-before-complete: Use when claiming 'done', suggesting a commit, push, or PR — runs the evidence gate so completion claims come from fresh output in this message, not memory or earlier runs.
135
+ verify-completion-evidence: Use when claiming 'done', suggesting a commit, push, or PR — runs the evidence gate so completion claims come from fresh output in this message, not memory or earlier runs.
130
136
  websocket: Use when building real-time features — WebSocket broadcasting, live updates, presence channels, connection state — even when the user just says 'push this to the client live'.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@event4u/agent-config",
3
- "version": "1.14.0",
3
+ "version": "1.16.0",
4
4
  "description": "Shared agent configuration \u2014 skills, rules, commands, guidelines, and templates for AI coding tools",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -48,6 +48,10 @@ Commands:
48
48
  roadmap:progress-check Fail if agents/roadmaps-progress.md is stale (for CI)
49
49
  hooks:install Install the pre-commit roadmap-progress hook
50
50
  (use --print to dump it, --force to overwrite an existing hook)
51
+ keys:install-anthropic Install the Anthropic API key for the AI Council
52
+ (interactive, /dev/tty only, writes ~/.config/agent-config/anthropic.key 0600)
53
+ keys:install-openai Install the OpenAI API key for the AI Council
54
+ (interactive, /dev/tty only, writes ~/.config/agent-config/openai.key 0600)
51
55
  first-run Guided first-run setup — cost profile, settings, tooling
52
56
  implement-ticket Drive the work_engine Python engine on a ticket envelope
53
57
  (Option-A loop; called by the /implement-ticket command)
@@ -78,6 +82,8 @@ Examples:
78
82
  ./agent-config mcp:check
79
83
  ./agent-config roadmap:progress
80
84
  ./agent-config hooks:install
85
+ ./agent-config keys:install-anthropic
86
+ ./agent-config keys:install-openai
81
87
  ./agent-config first-run
82
88
  ./agent-config implement-ticket --state-file .work-state.json
83
89
  ./agent-config work --state-file .work-state.json --prompt-file prompt.txt
@@ -390,6 +396,21 @@ HELP
390
396
  echo " To uninstall: rm $target"
391
397
  }
392
398
 
399
+ # Wrap the interactive key installers under a stable CLI entry. The shell
400
+ # scripts themselves enforce /dev/tty, 0600, and atomic write — this is
401
+ # pure routing so consumers never have to know the package layout.
402
+ cmd_keys_install_anthropic() {
403
+ local script
404
+ script="$(resolve_script "scripts/install_anthropic_key.sh")" || return 1
405
+ exec bash "$script" "$@"
406
+ }
407
+
408
+ cmd_keys_install_openai() {
409
+ local script
410
+ script="$(resolve_script "scripts/install_openai_key.sh")" || return 1
411
+ exec bash "$script" "$@"
412
+ }
413
+
393
414
  main() {
394
415
  local cmd="${1-}"
395
416
  [[ $# -gt 0 ]] && shift || true
@@ -400,6 +421,8 @@ main() {
400
421
  roadmap:progress) cmd_roadmap_progress "$@" ;;
401
422
  roadmap:progress-check) cmd_roadmap_progress_check "$@" ;;
402
423
  hooks:install) cmd_hooks_install "$@" ;;
424
+ keys:install-anthropic) cmd_keys_install_anthropic "$@" ;;
425
+ keys:install-openai) cmd_keys_install_openai "$@" ;;
403
426
  first-run) cmd_first_run "$@" ;;
404
427
  implement-ticket) cmd_implement_ticket "$@" ;;
405
428
  work) cmd_work "$@" ;;
@@ -0,0 +1,39 @@
1
+ """ai_council — external-AI consultation module.
2
+
3
+ The host agent uses this to poll independent models (OpenAI, Anthropic)
4
+ for second opinions on roadmaps, diffs, free-form prompts, or file sets.
5
+ Council members never see the host agent's reasoning — only the artefact
6
+ plus a neutral system prompt asking for an independent critique.
7
+
8
+ Architecture:
9
+ clients.py — ExternalAIClient ABC + concrete OpenAI/Anthropic
10
+ impls + 0600 key loaders (no env-var fallback).
11
+ bundler.py — Context bundling with redaction + size guard.
12
+ orchestrator.py — Parallel fan-out, error normalisation, cost cap.
13
+ prompts.py — Neutrality system-prompt templates per input mode.
14
+
15
+ Trust boundary: this module makes networked, paid calls. Tokens come
16
+ exclusively from ~/.config/agent-config/<provider>.key (mode 0600). The
17
+ module never edits files, never opens PRs, never merges — output is
18
+ text only, advisory.
19
+ """
20
+
21
+ from scripts.ai_council.clients import (
22
+ AnthropicClient,
23
+ CouncilResponse,
24
+ ExternalAIClient,
25
+ KeyGateError,
26
+ OpenAIClient,
27
+ load_anthropic_key,
28
+ load_openai_key,
29
+ )
30
+
31
+ __all__ = [
32
+ "AnthropicClient",
33
+ "CouncilResponse",
34
+ "ExternalAIClient",
35
+ "KeyGateError",
36
+ "OpenAIClient",
37
+ "load_anthropic_key",
38
+ "load_openai_key",
39
+ ]
@@ -0,0 +1,41 @@
1
+ """Shipped baseline prices for the AI Council.
2
+
3
+ This file is the bootstrap source for `.agent-prices.md` when the
4
+ runtime file is missing. It is also the network-fallback source for
5
+ `scripts/update_prices.py` when the upstream feed (LiteLLM) is
6
+ unreachable.
7
+
8
+ Prices are USD per **1 000 000** tokens. Models are identified by the
9
+ exact `model:` string the user puts into `.agent-settings.yml`.
10
+
11
+ Numbers below are a hand-curated snapshot — they will drift. The
12
+ runtime never reads them directly once `.agent-prices.md` exists; the
13
+ weekly refresh and user edits are the live source of truth.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ # YYYY-MM-DD of when this table was last hand-edited. Keep in sync with
19
+ # the test_default_prices freshness assertion if you bump this.
20
+ LAST_UPDATED = "2026-04-29"
21
+
22
+ # (provider, model) -> (input_per_1m_usd, output_per_1m_usd)
23
+ DEFAULT_PRICES: dict[tuple[str, str], tuple[float, float]] = {
24
+ # ── Anthropic ────────────────────────────────────────────────────
25
+ ("anthropic", "claude-sonnet-4-5"): (3.00, 15.00),
26
+ ("anthropic", "claude-opus-4-1"): (15.00, 75.00),
27
+ ("anthropic", "claude-haiku-4-5"): (1.00, 5.00),
28
+ # ── OpenAI ───────────────────────────────────────────────────────
29
+ ("openai", "gpt-4o"): (2.50, 10.00),
30
+ ("openai", "gpt-4o-mini"): (0.15, 0.60),
31
+ ("openai", "o1"): (15.00, 60.00),
32
+ ("openai", "o3-mini"): (1.10, 4.40),
33
+ }
34
+
35
+
36
+ def as_rows() -> list[tuple[str, str, float, float]]:
37
+ """Return the table sorted (provider, model) for stable Markdown output."""
38
+ return [
39
+ (provider, model, prices[0], prices[1])
40
+ for (provider, model), prices in sorted(DEFAULT_PRICES.items())
41
+ ]
@@ -0,0 +1,149 @@
1
+ """One-off council consultation — Phase 0 audit findings on rebalancing roadmap.
2
+
3
+ Validates whether the rebalancing roadmap premise still holds against the
4
+ actual PR #34 diff. Transient script; can be deleted after the consult runs.
5
+
6
+ Invocation:
7
+ .venv/bin/python -m scripts.ai_council._one_off_rebalancing_audit
8
+ """
9
+ from __future__ import annotations
10
+
11
+ import sys
12
+ from pathlib import Path
13
+
14
+ from scripts.ai_council.clients import AnthropicClient, load_anthropic_key
15
+ from scripts.ai_council.orchestrator import CostBudget, CouncilQuestion, consult, estimate
16
+ from scripts.ai_council.pricing import estimate_cost, load_prices
17
+ from scripts.ai_council.project_context import detect_project_context
18
+
19
+ REPO_ROOT = Path(__file__).resolve().parents[2]
20
+
21
+ ORIGINAL_ASK = (
22
+ "Phase 0 audit of the rebalancing roadmap. The roadmap was written based on "
23
+ "five rounds of external review claiming PR #34 over-deleted implicit "
24
+ "expertise. Validate whether the premise still holds against the actual diff. "
25
+ "Three concrete questions: (1) is the deletion narrative supported by the "
26
+ "numbers? (2) which of the 6 phases are already done or moot? "
27
+ "(3) what is the actual minimum-viable scope still worth executing?"
28
+ )
29
+
30
+ ARTEFACT = """# Phase 0 audit findings - road-to-rebalancing.md
31
+
32
+ ## Premise from the roadmap
33
+
34
+ The risk surface is whether implicit expertise (edge cases, decision forks,
35
+ failure modes, anti-patterns) was trimmed alongside the redundancy.
36
+ Rebalancing means restoring intelligence without re-inflating Always-rules.
37
+
38
+ ## Actual numbers from the PR #34 diff
39
+
40
+ Scope: git diff origin/main...HEAD, path .agent-src.uncompressed/rules/
41
+
42
+ - 35 files changed: 202 insertions, 204 deletions => net -2 lines total.
43
+ - Largest delta: language-and-tone.md 37 ins / 96 del. The 96 lines were
44
+ EXTRACTED to docs/guidelines/language-and-tone-examples.md (79 lines),
45
+ not deleted. Net knowledge loss: ~17 lines of duplicated phrasing.
46
+ - Second-largest: roadmap-progress-sync.md 26 ins / 33 del - minor.
47
+ - All other rules: <=8 line changes each, mostly renames.
48
+ - ZERO rule files deleted outright.
49
+
50
+ ## Phase-by-phase realities
51
+
52
+ ### Phase 0 - Removed-Knowledge Audit
53
+ This document IS Phase 0. Findings: 80% redundancy, examples extracted to
54
+ safe layer, zero decision-logic deletions. Phase 0 is now COMPLETE.
55
+
56
+ ### Phase 1 - Pilot Context Split (3 rules)
57
+ Candidates: autonomous-execution, minimal-safe-diff, scope-control.
58
+ - autonomous-execution: 8 line delta in PR, no extraction yet.
59
+ - minimal-safe-diff: already auto-trigger; 6 line delta.
60
+ - scope-control: 40 line ADDITION (not deletion) in this PR. Pilot value low.
61
+
62
+ ### Phase 2 - load_context: convention + linter
63
+ 0 rules use load_context: today. Convention does not exist.
64
+ Genuinely net-new work.
65
+
66
+ ### Phase 3 - Guidelines domain folders
67
+ Already done. 47 guidelines, 46 already in domain folders
68
+ (agent-infra/, docs/, e2e/, php/). Only language-and-tone-examples.md
69
+ is flat at root. Phase 3 reduces to deciding where the one flat file goes.
70
+
71
+ ### Phase 4 - Golden-Transcript-backed demos under examples/flows/
72
+ Partially shipped. docs/end-to-end-walkthroughs.md (built last cycle)
73
+ already does this with 4 traces anchored to GT-1, GT-P1, GT-U2, GT-2.
74
+ Required cases per roadmap: implement-ticket-demo, work-freeform-demo,
75
+ ui-track-demo, blocked-path-demo (all covered) plus mixed-flow-demo
76
+ (NOT covered yet).
77
+ Net-new: 1 mixed-flow demo + folder move from docs/ to examples/flows/.
78
+
79
+ ### Phase 5 - Rule priority hierarchy + interaction matrix
80
+ Partially shipped. docs/contracts/rule-interactions.yml and
81
+ rule-interactions.md exist (13 pairs across 9 rules).
82
+ rule-priority-hierarchy.md does NOT exist.
83
+
84
+ ### Phase 6 - Senior-agent behavior tests
85
+ Not started. Net-new work, but only valuable if Phase 1 actually runs
86
+ and produces something to validate.
87
+
88
+ ## Question to council
89
+
90
+ Given:
91
+ - The deletion narrative is empirically thin (-2 net lines after extraction).
92
+ - 3 of 6 phases are already done or near-done.
93
+ - Phase 1 pilot value is questionable on the 3 named candidates.
94
+
95
+ Should this roadmap:
96
+
97
+ (A) Close out as substantially-already-done. Execute only the small delta
98
+ (1 mixed-flow demo, move walkthroughs to examples/flows/, add the
99
+ priority-hierarchy doc, add load_context: convention if cheap),
100
+ then archive.
101
+
102
+ (B) Drop Phase 1 pilot - the three named candidates don't show evidence of
103
+ over-deletion. Execute Phase 2 + Phase 4 (1 missing demo + restructure)
104
+ + Phase 5 (priority-hierarchy doc) only.
105
+
106
+ (C) Original full scope - assume the audit missed something subtle and run
107
+ all 6 phases as written.
108
+
109
+ (D) Other framing - propose a tighter scope based on what the audit shows.
110
+
111
+ Identify blind spots: did the diff miss content moves between branches?
112
+ Are there rules whose implicit expertise lives in non-line-count signal?
113
+ Recommend (A/B/C/D) with rationale.
114
+ """
115
+
116
+
117
+ def main() -> int:
118
+ api_key = load_anthropic_key()
119
+ client = AnthropicClient(api_key=api_key)
120
+ project = detect_project_context(REPO_ROOT)
121
+ table = load_prices()
122
+
123
+ question = CouncilQuestion(mode="roadmap", user_prompt=ARTEFACT, max_tokens=2048)
124
+ estimates = estimate(question, [client], table, project=project, original_ask=ORIGINAL_ASK)
125
+ print(f"[estimate] ~{estimates[0].input_tokens} in + {estimates[0].output_tokens} out = ${estimates[0].total_usd:.4f}")
126
+
127
+ budget = CostBudget(
128
+ max_input_tokens=50_000, max_output_tokens=20_000,
129
+ max_calls=5, max_total_usd=0.50,
130
+ )
131
+
132
+ print(f"[consult] calling {client.name}/{client.model} ...")
133
+ responses = consult([client], question, budget, table=table, project=project, original_ask=ORIGINAL_ASK)
134
+ if not responses or responses[0].error:
135
+ err = responses[0].error if responses else "no response"
136
+ print(f"[error] {err}", file=sys.stderr)
137
+ return 1
138
+
139
+ r = responses[0]
140
+ actual = estimate_cost(r.provider, r.model, r.input_tokens, r.output_tokens, table)
141
+ print(f"[done] {r.input_tokens} in / {r.output_tokens} out, {r.latency_ms} ms, actual ${actual.total_usd:.4f}")
142
+ print("=" * 72)
143
+ print(r.text)
144
+ print("=" * 72)
145
+ return 0
146
+
147
+
148
+ if __name__ == "__main__":
149
+ raise SystemExit(main())