@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
package/README.md CHANGED
@@ -1,11 +1,13 @@
1
1
  # Agent Config — Governed Agent System
2
2
 
3
- Teach your AI agents Laravel, PHP, testing, Git workflows, and **120+ more skills** with quality guardrails built in.
3
+ > **agent-config is not a runtime, but it ships a deterministic orchestration contract / state machine for host agents.**
4
4
 
5
- > Your agent learns to write Laravel code, run tests, create PRs, fix CI and follows your team's coding standards while doing it.
5
+ Give your AI agents an audit-disciplined orchestration contract testing, Git, CI, code review, and **120+ stack-aware skills** with quality guardrails built in.
6
+
7
+ > Your agent picks up the project's stack, runs tests, prepares PRs, fixes CI — and follows your team's coding standards while doing it. Stack-aware skill sets ship for PHP (Laravel · Symfony · Zend/Laminas), JavaScript (Next.js · React · Node), and cross-stack concerns (API · testing · security · observability).
6
8
 
7
9
  <p align="center">
8
- <strong>128 Skills</strong> · <strong>53 Rules</strong> · <strong>77 Commands</strong> · <strong>46 Guidelines</strong> · <strong>8 AI Tools</strong>
10
+ <strong>129 Skills</strong> · <strong>57 Rules</strong> · <strong>69 Commands</strong> · <strong>47 Guidelines</strong> · <strong>8 AI Tools</strong>
9
11
  </p>
10
12
 
11
13
  ---
@@ -91,7 +93,7 @@ Install in the same project (dev-only):
91
93
  npm install --save-dev @event4u/agent-memory
92
94
  ```
93
95
 
94
- → [Memory contract & retrieval API](agents/contexts/agent-memory-contract.md)
96
+ → [Memory contract & retrieval API](docs/contracts/agent-memory-contract.md) (beta)
95
97
 
96
98
  ---
97
99
 
@@ -129,7 +131,7 @@ so you decide — never a silent guess. Persona comes from
129
131
  (plan-only, skips implementation).
130
132
 
131
133
  → [Command reference](.agent-src/commands/implement-ticket.md) ·
132
- [Flow contract](agents/contexts/implement-ticket-flow.md)
134
+ [Flow contract](docs/contracts/implement-ticket-flow.md) (beta)
133
135
 
134
136
  ### Sibling entrypoint: `/work` (free-form prompt)
135
137
 
@@ -156,7 +158,7 @@ to `/implement-ticket`. UI-shaped prompts are routed through the
156
158
 
157
159
  → [Command reference](.agent-src/commands/work.md) ·
158
160
  [`refine-prompt` skill](.agent-src/skills/refine-prompt/SKILL.md) ·
159
- [ADR](agents/contexts/adr-prompt-driven-execution.md)
161
+ [ADR](docs/contracts/adr-prompt-driven-execution.md)
160
162
 
161
163
  **Pick which one:** ticket id or pasted ticket payload → `/implement-ticket`.
162
164
  Free-form goal, no ticket → `/work`. The two share `.work-state.json`
@@ -175,7 +177,7 @@ switches the engine to one of three directive sets:
175
177
 
176
178
  Four load-bearing properties: (1) **existing-UI audit is a hard gate** —
177
179
  no `apply` without audit, enforced at dispatcher AND
178
- [`ui-audit-before-build`](.agent-src/rules/ui-audit-before-build.md) rule;
180
+ [`ui-audit-gate`](.agent-src/rules/ui-audit-gate.md) rule;
179
181
  (2) **design brief is locked microcopy** — placeholders (`<placeholder>`,
180
182
  `Lorem`, `TODO:`) rejected at both ends; (3) **polish has a 2-round
181
183
  ceiling**, then halts ship-as-is / abort / hand-off; (4) **a11y precedence**
@@ -188,9 +190,10 @@ screenshots / findings) via a defined contract. Stack detection routes
188
190
  `react-shadcn` / `vue` / `plain`; trivial path reclassifies loudly when
189
191
  preconditions fail. Halt budget on the happy path is 2.
190
192
 
191
- → [Flow contract](agents/contexts/ui-track-flow.md) ·
192
- [ADR](agents/contexts/adr-product-ui-track.md) ·
193
- [Stack-extension recipe](agents/contexts/ui-stack-extension.md)
193
+ → [Mental model](docs/ui-track-mental-model.md) (1 page — when each set, where it stops, what the agent must never do) ·
194
+ [Flow contract](docs/contracts/ui-track-flow.md) (beta) ·
195
+ [ADR](docs/contracts/adr-product-ui-track.md) ·
196
+ [Stack-extension recipe](docs/contracts/ui-stack-extension.md) (beta)
194
197
 
195
198
  ---
196
199
 
@@ -203,11 +206,11 @@ description of intent — not a guarantee of output.
203
206
  | Default behavior | With agent-config (the agent is instructed to) |
204
207
  |---|---|
205
208
  | Guess and edit blindly | Analyze code before changing it — no blind edits |
206
- | Drift from project conventions | Follow the project's PHP/Laravel coding standards |
207
- | Skip or invent tests | Write Pest tests following the project's conventions |
208
- | Write generic commit messages | Use Conventional Commits with scope and Jira links |
209
- | Skip quality checks | Run PHPStan, Rector, ECS and fix reported errors |
210
- | Open PRs without context | Produce structured PR descriptions from Jira tickets |
209
+ | Drift from project conventions | Follow the project's coding standards (detected from the stack) |
210
+ | Skip or invent tests | Write tests in the project's framework (Pest, PHPUnit, Vitest, Jest, …) |
211
+ | Write generic commit messages | Use Conventional Commits with scope and ticket links |
212
+ | Skip quality checks | Run the project's quality pipeline (PHPStan/Rector/ECS, ESLint/Prettier/tsc, …) and fix reported errors |
213
+ | Open PRs without context | Produce structured PR descriptions from Jira / Linear / GitHub tickets |
211
214
  | Claim "done" without proof | Verify with real execution before claiming "done" |
212
215
 
213
216
  ---
@@ -249,39 +252,35 @@ session is explicitly not.
249
252
 
250
253
  Start with **Rules + Skills**. Everything else is optional.
251
254
 
252
- | Mode | What's active | Token overhead |
255
+ | Mode | What's active | Runtime process overhead |
253
256
  |---|---|---|
254
- | **Minimal** (default) | Rules, Skills, Commands | Zero |
255
- | **Balanced** | + Runtime dispatcher for skills that declare a shell command | Low |
256
- | **Full** | + Tool adapters (GitHub / Jira read-only, opt-in) | Moderate |
257
+ | **Minimal** (default) | Rules, Skills, Commands | None |
258
+ | **Balanced** | + Runtime Dispatcher for skills that declare a shell command | Low |
259
+ | **Full** | + Tool Adapters (GitHub / Jira read-only, opt-in) | Moderate |
257
260
 
258
261
  Nothing runs automatically without your control. [Configure modes →](docs/customization.md)
259
262
 
260
- > **Experimental modules:** the runtime (dispatcher + shell handler) runs
261
- > two pilot skills in CI (`lint-skills`, `check-refs`). The tool registry
262
- > ships two read-only adapters (GitHub, Jira) behind the `full` profile.
263
- > Other handlers (`php`, `node`) are still scaffold. The `minimal`
264
- > profile which most users should pick — is unaffected.
263
+ > **Stability tiers** [`STABILITY.md`](docs/contracts/STABILITY.md) for
264
+ > the full matrix. Runtime Dispatcher: **stable** (`php` / `node` handlers
265
+ > scaffold). Work Engine: **beta (beta)** — orchestrator behind `/work`
266
+ > + `/implement-ticket`. Tool Adapters: **experimental**, read-only,
267
+ > behind `full`. `minimal` profile unaffected.
265
268
 
266
269
  ---
267
270
 
268
271
  ## Who this is for
269
272
 
270
- The content is **built for PHP / Laravel teams** and is where the package
271
- is most useful out of the box. Skills, rules, and quality-tool integration
272
- assume a Laravel-style repository (Pest, PHPStan, Rector, ECS, Artisan,
273
- Composer workflows). You can install it on any project, but:
273
+ `agent-config` ships a **stack-agnostic governance core** (orchestration contract, role modes, command clusters, quality gates, audit-discipline) plus **parallel stack-specific skill sets** at varying depth:
274
274
 
275
- | Stack | Fit |
275
+ | Stack | Coverage |
276
276
  |---|---|
277
- | **Laravel / modern PHP** | Primary audience most skills apply directly |
278
- | **Other PHP frameworks** (Symfony, Zend/Laminas) | ☑️ Deep-analysis skills apply; framework-specific ones do not |
279
- | **JavaScript / TypeScript / Next.js / Node** | ☑️ General skills + governance apply; PHP-specific skills are noise |
280
- | **Other stacks** | ⚠️ Cherry-pick rules/commands; expect to disable a lot |
277
+ | Laravel · modern PHP | Skills, rules, project-analysis, quality-tool wiring (Pest · PHPStan · Rector · ECS) |
278
+ | Symfony · Zend / Laminas | Project-analysis skills + shared PHP coder/quality skills |
279
+ | Next.js · React · Node / Express | Project-analysis skills + UI directive set (`react-shadcn`) |
280
+ | Vue · plain HTML | UI directive set (`vue` / `plain`) analysis skills as they ship |
281
+ | Cross-stack | API design · testing · security · database · Docker · Git · CI · review · threat modeling · observability |
281
282
 
282
- A language-agnostic core is on the roadmap but not yet extracted. If you
283
- adopt the package outside the primary audience, please open an issue so we
284
- can prioritize the right skills for extraction.
283
+ **Deepest reference stack today: Laravel.** Skill density covers Pest, PHPStan, Rector, Eloquent, Livewire/Flux, Horizon, Pulse, Reverb, Pennant — the stack the package was first proven on. Other stacks ship in the order they are battle-tested, not second-class. Adopting on a thin stack? Open an issue so we can prioritize the right skills for extraction.
285
284
 
286
285
  ---
287
286
 
@@ -294,8 +293,8 @@ can prioritize the right skills for extraction.
294
293
  | [`eloquent`](.agent-src/skills/eloquent/SKILL.md) | Eloquent models, relationships, scopes, eager loading, type safety |
295
294
  | [`create-pr`](.agent-src/commands/create-pr.md) | Create GitHub PRs with structured descriptions from Jira tickets |
296
295
  | [`commit`](.agent-src/commands/commit.md) | Stage and commit changes following Conventional Commits |
297
- | [`fix-ci`](.agent-src/commands/fix-ci.md) | Fetch CI errors from GitHub Actions and fix them |
298
- | [`fix-pr-comments`](.agent-src/commands/fix-pr-comments.md) | Fix and reply to all open review comments on a PR |
296
+ | [`/fix ci`](.agent-src/commands/fix.md) | Fetch CI errors from GitHub Actions and fix them |
297
+ | [`/fix pr-comments`](.agent-src/commands/fix.md) | Fix and reply to all open review comments on a PR |
299
298
  | [`quality-fix`](.agent-src/commands/quality-fix.md) | Run PHPStan/Rector/ECS and fix all errors |
300
299
  | [`bug-analyzer`](.agent-src/skills/bug-analyzer/SKILL.md) | Root cause analysis from Sentry errors or Jira tickets |
301
300
  | [`improve-before-implement`](.agent-src/rules/improve-before-implement.md) | Challenge weak requirements before coding |
@@ -304,7 +303,7 @@ can prioritize the right skills for extraction.
304
303
  | [`api-design`](.agent-src/skills/api-design/SKILL.md) | REST conventions, versioning, deprecation |
305
304
  | [`database`](.agent-src/skills/database/SKILL.md) | MariaDB optimization, indexing, query performance |
306
305
 
307
- → [Browse all skills](docs/skills-catalog.md) · [llms.txt](llms.txt)
306
+ → [Public catalog](docs/catalog.md) (all rules, skills, commands, guidelines) · [Skills only](docs/skills-catalog.md) · [llms.txt](llms.txt)
308
307
 
309
308
  ---
310
309
 
@@ -314,14 +313,16 @@ can prioritize the right skills for extraction.
314
313
  |---|---|
315
314
  | [`/commit`](.agent-src/commands/commit.md) | Stage and commit with Conventional Commits |
316
315
  | [`/create-pr`](.agent-src/commands/create-pr.md) | Create PR with Jira-linked description |
317
- | [`/fix-ci`](.agent-src/commands/fix-ci.md) | Fetch and fix GitHub Actions failures |
318
- | [`/fix-pr-comments`](.agent-src/commands/fix-pr-comments.md) | Fix and reply to review comments |
316
+ | [`/fix ci`](.agent-src/commands/fix.md) | Fetch and fix GitHub Actions failures |
317
+ | [`/fix pr-comments`](.agent-src/commands/fix.md) | Fix and reply to review comments |
318
+ | [`/optimize skills`](.agent-src/commands/optimize.md) | Audit skills, find duplicates, run linter |
319
+ | [`/feature plan`](.agent-src/commands/feature.md) | Interactively plan a feature |
319
320
  | [`/quality-fix`](.agent-src/commands/quality-fix.md) | Run and fix all quality checks |
320
321
  | [`/review-changes`](.agent-src/commands/review-changes.md) | Self-review before creating a PR |
321
322
  | [`/jira-ticket`](.agent-src/commands/jira-ticket.md) | Read ticket from branch, implement feature |
322
323
  | [`/compress`](.agent-src/commands/compress.md) | Compress skills for token efficiency |
323
324
 
324
- → [Browse all 77 commands](.agent-src/commands/)
325
+ → [Browse all 69 active commands](.agent-src/commands/) &nbsp;<sub>(84 files total — 15 are deprecation shims that redirect to clustered commands)</sub>
325
326
 
326
327
  ---
327
328
 
@@ -346,7 +347,7 @@ Every developer gets the same behavior. No per-user setup needed.
346
347
  native slash-commands)
347
348
 
348
349
  > **What this means in practice:** Augment Code and Claude Code get the full
349
- > package (rules + 128 skills + 77 native commands). Cursor, Cline, Windsurf,
350
+ > package (rules + 129 skills + 69 native commands). Cursor, Cline, Windsurf,
350
351
  > Gemini CLI, and GitHub Copilot only get the **rules** natively; skills and
351
352
  > commands are available to them as documentation the agent can read, not as
352
353
  > first-class features.
@@ -377,9 +378,9 @@ builds artefacts you upload or paste into the platform's own surface.
377
378
 
378
379
  The Linear digest is split into three layers — workspace (universal
379
380
  coding posture), team (framework-specific), personal (empty stub). See
380
- [`agents/contexts/linear-ai-three-layers.md`](agents/contexts/linear-ai-three-layers.md)
381
+ [`docs/contracts/linear-ai-three-layers.md`](docs/contracts/linear-ai-three-layers.md) (beta)
381
382
  for the rationale and
382
- [`agents/contexts/linear-ai-rules-inclusion.md`](agents/contexts/linear-ai-rules-inclusion.md)
383
+ [`docs/contracts/linear-ai-rules-inclusion.md`](docs/contracts/linear-ai-rules-inclusion.md) (beta)
383
384
  for the per-rule routing.
384
385
 
385
386
  ---
@@ -404,6 +405,7 @@ for the per-rule routing.
404
405
  | [**Development**](docs/development.md) | Prerequisites, editing workflow, all `task` commands, project structure |
405
406
  | [**Customization**](docs/customization.md) | Overrides, AGENTS.md, agent settings, cost profiles |
406
407
  | [**Quality & CI**](docs/quality.md) | Linting, CI pipeline, compression system |
408
+ | [**Migration**](docs/MIGRATION.md) | Per-version upgrade steps (e.g. `implement_ticket → work_engine` in 1.15.0) |
407
409
 
408
410
  Uninstalling: see
409
411
  [docs/installation.md#uninstalling](docs/installation.md#uninstalling) —
@@ -427,7 +429,7 @@ telemetry:
427
429
 
428
430
  Reports: `./agent-config telemetry:report`. Full contract,
429
431
  privacy/redaction floor, and quartile semantics:
430
- [`agents/contexts/artifact-engagement-flow.md`](agents/contexts/artifact-engagement-flow.md).
432
+ [`docs/contracts/artifact-engagement-flow.md`](docs/contracts/artifact-engagement-flow.md) (beta).
431
433
 
432
434
  ### Context-aware command suggestion
433
435
 
@@ -446,11 +448,9 @@ commands:
446
448
  ```
447
449
 
448
450
  Per-conversation: `/command-suggestion-off` disables the layer until
449
- the user re-enables or the chat ends. Full scoring contract and
450
- hardening list:
451
- [`agents/contexts/adr-command-suggestion.md`](agents/contexts/adr-command-suggestion.md)
452
- and
453
- [`agents/contexts/command-suggestion-flow.md`](agents/contexts/command-suggestion-flow.md).
451
+ re-enabled or the chat ends. Full scoring contract and hardening:
452
+ [`adr-command-suggestion`](docs/contracts/adr-command-suggestion.md),
453
+ [`command-suggestion-flow`](docs/contracts/command-suggestion-flow.md) (beta).
454
454
 
455
455
  ---
456
456
 
@@ -492,7 +492,6 @@ task lint-skills # Lint skills, rules, commands
492
492
  **For contributors only** (rebuilding `.augment/` locally):
493
493
 
494
494
  - [Task](https://taskfile.dev/) — runs the CI pipeline (`task ci`).
495
- - No runtime dependencies — the package ships static markdown files.
496
495
 
497
496
  ## License
498
497
 
@@ -138,6 +138,63 @@ subagents:
138
138
  # Integer, default 3. Set to 1 to serialize. Hard cap enforced by runtime.
139
139
  max_parallel: 3
140
140
 
141
+ # --- AI Council (external second-opinion network) ---
142
+ #
143
+ # When enabled, the /council command lets the agent poll independent
144
+ # external models (OpenAI, Anthropic) for a neutral critique of a
145
+ # roadmap, diff, prompt, or file set. Council members never see the
146
+ # host agent's reasoning — only the artefact + a neutral system prompt.
147
+ #
148
+ # Tokens are NEVER stored here. They live in ~/.config/agent-config/
149
+ # <provider>.key (mode 0600), installed via:
150
+ # bash scripts/install_anthropic_key.sh
151
+ # bash scripts/install_openai_key.sh
152
+ #
153
+ # Cost note: every consultation makes real, paid API calls. The
154
+ # autonomy directive does NOT silently spend tokens — the /council
155
+ # command always asks before invoking, even under autonomy: on.
156
+ ai_council:
157
+ # Master switch (true, false). Default false — installing a key is
158
+ # not the same as wanting the agent to spend money on it.
159
+ enabled: false
160
+
161
+ # Default transport mode for every member (overridable per-member
162
+ # below, and per-invocation via `/council mode:<x>`).
163
+ #
164
+ # api = direct SDK call against the provider's API (billable).
165
+ # manual = copy-paste loop, user is the transport (free).
166
+ # playwright = browser automation (Phase 2c, not yet wired).
167
+ #
168
+ # Precedence: invocation flag > per-member mode > global mode > "api".
169
+ mode: "api"
170
+
171
+ # Per-member configuration. Set enabled=true on the providers you want
172
+ # to consult. The model field selects which model receives the query.
173
+ # Optional `mode:` overrides the global setting for that member only.
174
+ members:
175
+ anthropic:
176
+ enabled: false
177
+ model: "claude-sonnet-4-5"
178
+ # mode: "api" # uncomment to override ai_council.mode
179
+ openai:
180
+ enabled: false
181
+ model: "gpt-4o"
182
+ # mode: "manual" # uncomment to override ai_council.mode
183
+
184
+ # Hard cost ceiling per /council invocation. The orchestrator pauses
185
+ # before any member whose projected spend would breach a cap and asks
186
+ # the user to continue. `max_total_usd: 0` disables the USD ceiling
187
+ # (token caps still apply).
188
+ #
189
+ # Prices come from `.agent-prices.md` (gitignored, refreshed weekly
190
+ # by `python3 scripts/update_prices.py`; bootstrapped from
191
+ # scripts/ai_council/_default_prices.py on first run).
192
+ cost_budget:
193
+ max_input_tokens: 50000
194
+ max_output_tokens: 20000
195
+ max_calls: 10
196
+ max_total_usd: 0.50
197
+
141
198
  # --- Onboarding ---
142
199
  #
143
200
  # Tracks whether the initial setup flow (/onboard) has been completed
@@ -155,7 +212,7 @@ onboarding:
155
212
  # When the user's free-form prompt matches an eligible slash command,
156
213
  # the agent surfaces a numbered-options block with the recommendation
157
214
  # plus an always-present "run as-is" option. The suggestion layer
158
- # never auto-executes — the user picks. See rules/command-suggestion.md.
215
+ # never auto-executes — the user picks. See rules/command-suggestion-policy.md.
159
216
  commands:
160
217
  suggestion:
161
218
  # Master switch (true, false). false = the layer is silent; explicit
@@ -26,3 +26,6 @@
26
26
  # Agent config — artefact engagement telemetry (default-off, maintainer-only, never commit)
27
27
  .agent-engagement.jsonl
28
28
  .agent-engagement.jsonl.bak
29
+
30
+ # Agent config — AI Council price table (refreshed weekly, never commit)
31
+ .agent-prices.md
@@ -0,0 +1,122 @@
1
+ # Migration Guide
2
+
3
+ How to move existing checkouts forward when `event4u/agent-config`
4
+ ships breaking layout changes. Each section is self-contained: read
5
+ only the version you are upgrading to.
6
+
7
+ > Symbol legend — 🔄 automatic, ✋ manual, 💡 advisory.
8
+
9
+ ## 1.14.x → 1.15.0 — `implement_ticket` → `work_engine`
10
+
11
+ 1.15.0 finishes the rename started with PR #29: the orchestration
12
+ package is now `work_engine` and the default state file is
13
+ `.work-state.json`. A back-compat shim keeps `implement_ticket`
14
+ imports working for one minor release; the legacy state filename is
15
+ detected on load and surfaces a one-shot migration hint instead of
16
+ failing silently.
17
+
18
+ ### What changed
19
+
20
+ | Surface | 1.14.x | 1.15.0 |
21
+ |---|---|---|
22
+ | Orchestration package | `implement_ticket/` | `work_engine/` |
23
+ | Default state file | `.implement-ticket-state.json` | `.work-state.json` |
24
+ | Legacy package import | native | thin shim, removed in 1.16.0 |
25
+ | State schema | v0 (flat `ticket`) | v1 (`input.kind` envelope) |
26
+
27
+ The schema migration itself shipped in 1.14.0 (`migrate_payload`
28
+ already wraps v0 → v1). 1.15.0 only flips the *default* output
29
+ filename and the shipped package name; v0 files on disk are still
30
+ recognised on a clear error path.
31
+
32
+ ### Required action
33
+
34
+ ✋ **Run the one-shot migration** if your project still has a
35
+ `.implement-ticket-state.json` file:
36
+
37
+ ```bash
38
+ python3 -m work_engine.migration.v0_to_v1 .implement-ticket-state.json
39
+ ```
40
+
41
+ This:
42
+
43
+ 1. Writes `.work-state.json` with the v1 envelope alongside the
44
+ legacy file.
45
+ 2. Rotates the v0 file to `.implement-ticket-state.json.bak` (or
46
+ `.bak.1`, `.bak.2`, … if a previous backup is already present —
47
+ no silent overwrites).
48
+ 3. Refuses to overwrite an existing `.work-state.json`.
49
+ 4. Exits `0` on success, `2` on schema errors.
50
+
51
+ Pass `--no-backup` if you do not want the v0 file kept around, or
52
+ `--destination <path>` for a custom location.
53
+
54
+ 🔄 **Detection on load.** If the engine is invoked with
55
+ `--state-file .work-state.json` (or no `--state-file` at all) and
56
+ finds only the legacy file, it stops with:
57
+
58
+ ```
59
+ error: Found legacy state file .implement-ticket-state.json but no
60
+ .work-state.json. The default state file was renamed in 1.15.0. Run
61
+ `python3 -m work_engine.migration.v0_to_v1 .implement-ticket-state.json`
62
+ to migrate, or pass `--state-file .implement-ticket-state.json` to
63
+ keep using the old name. See docs/MIGRATION.md.
64
+ ```
65
+
66
+ The detection only fires when the requested state file uses the
67
+ canonical name; explicit `--state-file <other>.json` bypasses it,
68
+ so power users with their own naming scheme stay in control.
69
+
70
+ ### Optional — keep using the legacy name
71
+
72
+ 💡 You do **not** have to migrate immediately. Both of these keep
73
+ working through the 1.15.x cycle:
74
+
75
+ - Pass `--state-file .implement-ticket-state.json` on every CLI
76
+ invocation. The loader reads v0 and v1 transparently; format is
77
+ preserved on save.
78
+ - Keep importing from `implement_ticket` — the shim under
79
+ `templates/scripts/implement_ticket/` re-exports the
80
+ `work_engine` API verbatim. Removed in 1.16.0.
81
+
82
+ The legacy hint is a UX nudge, not a hard cutover.
83
+
84
+ ### Rolling back
85
+
86
+ If something goes wrong:
87
+
88
+ ```bash
89
+ mv .work-state.json /tmp/work-state-bad.json
90
+ mv .implement-ticket-state.json.bak .implement-ticket-state.json
91
+ ```
92
+
93
+ Then either re-run the migration or pin to 1.14.x until the issue
94
+ is reported. The v0 backup is byte-equal with the input —
95
+ `migrate_file` only renames the source after successfully writing
96
+ the v1 destination.
97
+
98
+ ### CI / repository hygiene
99
+
100
+ If your project commits state files (uncommon but supported):
101
+
102
+ - Update `.gitignore` to exclude both `.implement-ticket-state.json`
103
+ and `.work-state.json` if you want them transient.
104
+ - Otherwise, commit the new `.work-state.json` and either delete
105
+ the `.bak` rotation or move it under an archive path — the
106
+ loader never reads `.bak` files.
107
+
108
+ ### Reference
109
+
110
+ - Schema and field-by-field semantics:
111
+ [`docs/contracts/implement-ticket-flow.md`](contracts/implement-ticket-flow.md#workstate-v1-schema).
112
+ - Stability level: `work_engine` is **beta** — see
113
+ [`docs/contracts/STABILITY.md`](contracts/STABILITY.md).
114
+ - Source of truth for the migrator:
115
+ [`templates/scripts/work_engine/migration/v0_to_v1.py`](../.agent-src.uncompressed/templates/scripts/work_engine/migration/v0_to_v1.py).
116
+
117
+ ## Older versions
118
+
119
+ No formal migration was required before 1.15.0. The pre-1.14.0 v0
120
+ state schema (flat `ticket`, `.implement-ticket-state.json`) is
121
+ documented in `docs/contracts/implement-ticket-flow.md` and is
122
+ covered by the same `v0_to_v1` migrator above.
@@ -1,17 +1,22 @@
1
1
  # Architecture
2
2
 
3
+ > **agent-config is not a runtime, but it ships a deterministic orchestration contract / state machine for host agents.**
4
+
3
5
  ## System overview
4
6
 
5
7
  ```
6
- Rules → Behavior enforcement (always active) ← stable
7
- Skills → Execution logic (on-demand expertise) ← stable
8
- Runtime Dispatcher + shell handler (pilot skills) partial
9
- ToolsExternal integrations (GitHub, Jira) experimental
8
+ Rules → Behavior enforcement (always active) ← stable
9
+ Skills → Execution logic (on-demand expertise) ← stable
10
+ Runtime Dispatcher Single-skill shell execution (pilot skills) stable (mechanism)
11
+ Work EngineMulti-step orchestration for /work + /implement beta
12
+ Tool Adapters → External integrations (GitHub, Jira) ← experimental
10
13
  ```
11
14
 
12
- **Stable** = shipped, documented, exercised by the default (`minimal`) profile.
13
- **Experimental** = scaffold with tests and data model, but no real execution
14
- wired up yet.
15
+ Stability tiers follow [`docs/contracts/STABILITY.md`](contracts/STABILITY.md):
16
+
17
+ - **stable** = shipped, documented, exercised by the default (`minimal`) profile or by CI on every PR; SemVer-major for breaks.
18
+ - **beta** = shipped and load-bearing for one or more flows, but the surface is expected to evolve; minor-version breaks allowed under a `### Breaking` CHANGELOG note.
19
+ - **experimental** = scaffold or pilot status; breaks allowed in any release.
15
20
 
16
21
  > The previous "observability, feedback, lifecycle" layers were removed in
17
22
  > 1.5 — they were scaffolds without production consumers. See the
@@ -59,10 +64,10 @@ fails on any source-side violation, without producing artifacts.
59
64
 
60
65
  | Layer | Count | Purpose |
61
66
  |---|---|---|
62
- | **Skills** | 93 | On-demand expertise — Laravel, testing, Docker, API design, security, ... |
63
- | **Rules** | 31 | Always-active constraints — coding standards, scope control, verification |
64
- | **Commands** | 51 | Slash-command workflows — `/commit`, `/create-pr`, `/fix-ci`, `/compress`, ... |
65
- | **Guidelines** | 34 | Coding guidelines by language — PHP patterns, Eloquent, Playwright, ... |
67
+ | **Skills** | 129 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, |
68
+ | **Rules** | 57 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
69
+ | **Commands** | 84 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, |
70
+ | **Guidelines** | 47 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, |
66
71
  | **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
67
72
  | **Contexts** | 5 | Shared knowledge about the system itself |
68
73
 
@@ -79,18 +84,25 @@ fails on any source-side violation, without producing artifacts.
79
84
 
80
85
  Ensures: no guessing, analysis before action, real verification, consistent outputs.
81
86
 
82
- ### 2. Execution Layer (Runtime) partially real, partially scaffold
87
+ ### 2. Runtime Dispatcherstable mechanism, pilot coverage
88
+
89
+ > **Scope:** single-skill execution. Resolves a `SKILL.md` with
90
+ > `execution.command` argv, enforces safety constraints, hands off to
91
+ > the matching handler. **Not** a multi-step orchestrator — that is
92
+ > the Work Engine (next section).
83
93
 
84
94
  > **Status:**
85
- > - **Real:** shell-handler path — skills that declare an `execution.command`
86
- > argv are dispatched and executed by `scripts/runtime_handler.py`. A typed
87
- > `ExecutionResult` (exit code, stdout, stderr, duration, artifacts) is
88
- > returned and can be persisted as JSON via `--output FILE`. Pilots:
89
- > `lint-skills`, `check-refs`. Both run on every PR and appear in the
90
- > GitHub Step Summary via `scripts/ci_summary.py`.
91
- > - **Scaffold:** `php` and `node` handlers the frontmatter accepts them
92
- > and the registry validates them, but no handler implementation exists
93
- > yet.
95
+ > - **Stable mechanism:** the dispatcher itself
96
+ > (`scripts/runtime_dispatcher.py`), the shell handler
97
+ > (`scripts/runtime_handler.py`), and the `ExecutionResult` shape.
98
+ > `subprocess.run` is invoked with `shell=False` (argv only); the
99
+ > environment is scrubbed to an explicit allowlist.
100
+ > - **Pilot coverage:** two skills ship as live pilots —
101
+ > `lint-skills` and `check-refs` — both run on every PR and appear
102
+ > in the GitHub Step Summary via `scripts/ci_summary.py`.
103
+ > - **Scaffold:** `php` and `node` handlers — the frontmatter accepts
104
+ > them and the registry validates them, but no handler
105
+ > implementation exists yet.
94
106
 
95
107
  Skills opt into runtime by declaring execution metadata:
96
108
 
@@ -113,14 +125,49 @@ Invoke a runtime-capable skill end-to-end:
113
125
  python3 scripts/runtime_dispatcher.py run --skill lint-skills
114
126
  ```
115
127
 
116
- The dispatcher resolves the skill, enforces safety constraints, then hands
117
- off to the matching handler. Environment is scrubbed to an explicit
118
- allowlist; `subprocess.run` is invoked with `shell=False` (argv only).
119
-
120
- Planned scope (still to come): `php` / `node` handlers, tool-registry
121
- wiring for `allowed_tools`, streaming output.
122
-
123
- ### 3. Tool Integrationexperimental
128
+ A typed `ExecutionResult` (exit code, stdout, stderr, duration,
129
+ artifacts) is returned and can be persisted as JSON via
130
+ `--output FILE`.
131
+
132
+ Planned scope: `php` / `node` handlers, tool-registry wiring for
133
+ `allowed_tools`, streaming output.
134
+
135
+ ### 3. Work Enginebeta, multi-step orchestration
136
+
137
+ > **Scope:** multi-step phase dispatch for `/work` and
138
+ > `/implement-ticket`. Drives the
139
+ > `refine → score → plan → implement → test → verify → report` loop,
140
+ > persists state in `.work-state.json`, and routes UI-shaped work
141
+ > through the product UI track. Lives at
142
+ > [`templates/scripts/work_engine/`](../.agent-src.uncompressed/templates/scripts/work_engine/);
143
+ > shipped to consumer projects via `scripts/install.py`.
144
+
145
+ > **Status: beta.** The contract (directive sets, halt budgets,
146
+ > envelope shape) has shipped one full SemVer-minor cycle, but the
147
+ > surface is still expected to evolve. Breaks are allowed in
148
+ > minor-version releases under a `### Breaking` CHANGELOG note. See
149
+ > [`docs/contracts/STABILITY.md`](contracts/STABILITY.md).
150
+
151
+ Key responsibilities:
152
+
153
+ - **Directive routing** — `ui` / `ui-trivial` / `mixed` directive
154
+ sets, locked into the contract at
155
+ [`adr-product-ui-track.md`](contracts/adr-product-ui-track.md) (beta).
156
+ - **Halt protocol** — every phase emits a structured halt; the
157
+ agent re-enters with the user's answer, never improvises.
158
+ - **State machine** — `.work-state.json` is the single source of
159
+ truth across resumes; the engine refuses to switch envelope
160
+ mid-flight. Legacy `.implement-ticket-state.json` files are
161
+ detected on load and routed through
162
+ [`docs/MIGRATION.md`](MIGRATION.md).
163
+ - **Hooks** — chat-history, telemetry, and platform hooks fire
164
+ through the engine's hook layer.
165
+
166
+ The Work Engine **uses** the Runtime Dispatcher when a phase needs
167
+ to execute a single skill (e.g. lint, refs check), but the two are
168
+ independent components with separate stability tiers.
169
+
170
+ ### 4. Tool Adapters — experimental
124
171
 
125
172
  > **Status: scaffold + read-only GitHub calls.** With a `GITHUB_TOKEN` the
126
173
  > GitHub adapter performs real read calls; without one it returns scaffold
@@ -134,14 +181,16 @@ Controlled integration via adapters:
134
181
  - Tool registry with safety rules for execution
135
182
  - Structured responses with error classification
136
183
 
137
- ### 4. Cost Control
184
+ ### 5. Cost Control
138
185
 
139
186
  > **Key principle:** Opt-in by default.
140
187
 
141
- The dispatcher and tool adapters activate only under the `balanced` or
142
- `full` profile. The default `minimal` profile ships rules, skills, and
143
- commands and nothing else. All settings and their profile defaults are
144
- documented in
188
+ The Runtime Dispatcher and Tool Adapters activate only under the
189
+ `balanced` or `full` profile. The Work Engine activates whenever
190
+ `/work` or `/implement-ticket` is invoked and is independent of the
191
+ cost profile. The default `minimal` profile ships rules, skills, and
192
+ commands and nothing else. All settings and their profile defaults
193
+ are documented in
145
194
  [`.agent-src.uncompressed/templates/agent-settings.md`](../.agent-src.uncompressed/templates/agent-settings.md).
146
195
 
147
196
  ---