@event4u/agent-config 1.13.0 → 1.15.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 (291) hide show
  1. package/.agent-src/commands/agent-handoff.md +4 -1
  2. package/.agent-src/commands/agent-status.md +3 -0
  3. package/.agent-src/commands/agents-audit.md +4 -0
  4. package/.agent-src/commands/agents-cleanup.md +6 -1
  5. package/.agent-src/commands/agents-prepare.md +3 -0
  6. package/.agent-src/commands/analyze-reference-repo.md +4 -0
  7. package/.agent-src/commands/bug-fix.md +7 -3
  8. package/.agent-src/commands/bug-investigate.md +4 -0
  9. package/.agent-src/commands/chat-history-checkpoint.md +126 -0
  10. package/.agent-src/commands/chat-history-clear.md +6 -1
  11. package/.agent-src/commands/chat-history-resume.md +7 -2
  12. package/.agent-src/commands/chat-history.md +7 -2
  13. package/.agent-src/commands/check-current-md.md +137 -0
  14. package/.agent-src/commands/commit-in-chunks.md +118 -0
  15. package/.agent-src/commands/commit.md +4 -0
  16. package/.agent-src/commands/compress.md +37 -2
  17. package/.agent-src/commands/context-create.md +4 -0
  18. package/.agent-src/commands/context-refactor.md +4 -0
  19. package/.agent-src/commands/copilot-agents-init.md +3 -0
  20. package/.agent-src/commands/copilot-agents-optimize.md +3 -0
  21. package/.agent-src/commands/create-pr-description.md +4 -0
  22. package/.agent-src/commands/create-pr.md +4 -0
  23. package/.agent-src/commands/do-and-judge.md +4 -1
  24. package/.agent-src/commands/do-in-steps.md +3 -0
  25. package/.agent-src/commands/e2e-heal.md +4 -0
  26. package/.agent-src/commands/e2e-plan.md +4 -0
  27. package/.agent-src/commands/estimate-ticket.md +4 -1
  28. package/.agent-src/commands/feature-dev.md +4 -0
  29. package/.agent-src/commands/feature-explore.md +4 -0
  30. package/.agent-src/commands/feature-plan.md +4 -0
  31. package/.agent-src/commands/feature-refactor.md +4 -0
  32. package/.agent-src/commands/feature-roadmap.md +6 -0
  33. package/.agent-src/commands/fix-ci.md +4 -0
  34. package/.agent-src/commands/fix-portability.md +5 -2
  35. package/.agent-src/commands/fix-pr-bot-comments.md +4 -0
  36. package/.agent-src/commands/fix-pr-comments.md +4 -0
  37. package/.agent-src/commands/fix-pr-developer-comments.md +4 -0
  38. package/.agent-src/commands/fix-references.md +3 -0
  39. package/.agent-src/commands/fix-seeder.md +4 -0
  40. package/.agent-src/commands/implement-ticket.md +39 -13
  41. package/.agent-src/commands/jira-ticket.md +4 -0
  42. package/.agent-src/commands/judge.md +3 -0
  43. package/.agent-src/commands/memory-add.md +5 -3
  44. package/.agent-src/commands/memory-full.md +5 -2
  45. package/.agent-src/commands/memory-promote.md +7 -6
  46. package/.agent-src/commands/mode.md +3 -0
  47. package/.agent-src/commands/module-create.md +4 -0
  48. package/.agent-src/commands/module-explore.md +4 -0
  49. package/.agent-src/commands/onboard.md +33 -0
  50. package/.agent-src/commands/optimize-agents.md +4 -0
  51. package/.agent-src/commands/optimize-augmentignore.md +12 -0
  52. package/.agent-src/commands/optimize-rtk-filters.md +3 -0
  53. package/.agent-src/commands/optimize-skills.md +4 -0
  54. package/.agent-src/commands/override-create.md +4 -0
  55. package/.agent-src/commands/override-manage.md +4 -0
  56. package/.agent-src/commands/package-reset.md +3 -0
  57. package/.agent-src/commands/package-test.md +3 -0
  58. package/.agent-src/commands/prepare-for-review.md +4 -0
  59. package/.agent-src/commands/project-analyze.md +4 -0
  60. package/.agent-src/commands/project-health.md +4 -0
  61. package/.agent-src/commands/propose-memory.md +6 -8
  62. package/.agent-src/commands/quality-fix.md +4 -0
  63. package/.agent-src/commands/refine-ticket.md +12 -7
  64. package/.agent-src/commands/review-changes.md +39 -8
  65. package/.agent-src/commands/review-routing.md +4 -0
  66. package/.agent-src/commands/roadmap-create.md +18 -0
  67. package/.agent-src/commands/roadmap-execute.md +14 -1
  68. package/.agent-src/commands/rule-compliance-audit.md +4 -0
  69. package/.agent-src/commands/set-cost-profile.md +11 -0
  70. package/.agent-src/commands/sync-agent-settings.md +12 -0
  71. package/.agent-src/commands/sync-gitignore.md +3 -0
  72. package/.agent-src/commands/tests-create.md +4 -0
  73. package/.agent-src/commands/tests-execute.md +6 -3
  74. package/.agent-src/commands/threat-model.md +4 -0
  75. package/.agent-src/commands/update-form-request-messages.md +4 -0
  76. package/.agent-src/commands/upstream-contribute.md +4 -0
  77. package/.agent-src/commands/work.md +161 -0
  78. package/.agent-src/guidelines/agent-infra/engineering-memory-data-format.md +2 -6
  79. package/.agent-src/guidelines/agent-infra/layered-settings.md +0 -1
  80. package/.agent-src/guidelines/agent-infra/memory-access.md +0 -7
  81. package/.agent-src/guidelines/agent-infra/role-contracts.md +2 -4
  82. package/.agent-src/guidelines/agent-infra/self-improvement-pipeline.md +0 -1
  83. package/.agent-src/guidelines/php/patterns/strategy.md +180 -2
  84. package/.agent-src/personas/README.md +0 -1
  85. package/.agent-src/rules/artifact-drafting-protocol.md +7 -2
  86. package/.agent-src/rules/artifact-engagement-recording.md +133 -0
  87. package/.agent-src/rules/ask-when-uncertain.md +18 -13
  88. package/.agent-src/rules/augment-portability.md +64 -37
  89. package/.agent-src/rules/autonomous-execution.md +158 -0
  90. package/.agent-src/rules/chat-history-cadence.md +109 -0
  91. package/.agent-src/rules/chat-history-ownership.md +123 -0
  92. package/.agent-src/rules/chat-history-visibility.md +96 -0
  93. package/.agent-src/rules/cli-output-handling.md +27 -4
  94. package/.agent-src/rules/command-suggestion.md +134 -0
  95. package/.agent-src/rules/commit-policy.md +109 -0
  96. package/.agent-src/rules/direct-answers.md +114 -0
  97. package/.agent-src/rules/docs-sync.md +36 -0
  98. package/.agent-src/rules/downstream-changes.md +10 -9
  99. package/.agent-src/rules/improve-before-implement.md +9 -6
  100. package/.agent-src/rules/language-and-tone.md +85 -6
  101. package/.agent-src/rules/non-destructive-by-default.md +117 -0
  102. package/.agent-src/rules/package-ci-checks.md +4 -0
  103. package/.agent-src/rules/preservation-guard.md +20 -0
  104. package/.agent-src/rules/roadmap-progress-sync.md +159 -27
  105. package/.agent-src/rules/role-mode-adherence.md +1 -1
  106. package/.agent-src/rules/scope-control.md +42 -1
  107. package/.agent-src/rules/size-enforcement.md +2 -3
  108. package/.agent-src/rules/skill-quality.md +3 -8
  109. package/.agent-src/rules/ui-audit-before-build.md +106 -0
  110. package/.agent-src/rules/user-interaction.md +107 -51
  111. package/.agent-src/scripts/update_roadmap_progress.py +73 -9
  112. package/.agent-src/skills/blade-ui/SKILL.md +47 -3
  113. package/.agent-src/skills/command-routing/SKILL.md +32 -0
  114. package/.agent-src/skills/command-writing/SKILL.md +52 -2
  115. package/.agent-src/skills/description-assist/SKILL.md +21 -0
  116. package/.agent-src/skills/estimate-ticket/SKILL.md +0 -1
  117. package/.agent-src/skills/existing-ui-audit/SKILL.md +202 -0
  118. package/.agent-src/skills/fe-design/SKILL.md +78 -61
  119. package/.agent-src/skills/file-editor/SKILL.md +9 -0
  120. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +4 -0
  121. package/.agent-src/skills/flux/SKILL.md +31 -4
  122. package/.agent-src/skills/guideline-writing/SKILL.md +24 -2
  123. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +51 -9
  124. package/.agent-src/skills/livewire/SKILL.md +49 -4
  125. package/.agent-src/skills/md-language-check/SKILL.md +103 -0
  126. package/.agent-src/skills/php-coder/SKILL.md +24 -0
  127. package/.agent-src/skills/react-shadcn-ui/SKILL.md +121 -0
  128. package/.agent-src/skills/refine-prompt/SKILL.md +220 -0
  129. package/.agent-src/skills/refine-ticket/SKILL.md +32 -28
  130. package/.agent-src/skills/roadmap-management/SKILL.md +24 -11
  131. package/.agent-src/skills/rule-writing/SKILL.md +23 -1
  132. package/.agent-src/skills/skill-writing/SKILL.md +3 -5
  133. package/.agent-src/skills/upstream-contribute/SKILL.md +3 -3
  134. package/.agent-src/skills/using-git-worktrees/SKILL.md +3 -1
  135. package/.agent-src/templates/AGENTS.md +24 -6
  136. package/.agent-src/templates/agent-settings.md +149 -0
  137. package/.agent-src/templates/roadmaps.md +11 -4
  138. package/.agent-src/templates/scripts/implement_ticket/__init__.py +63 -26
  139. package/.agent-src/templates/scripts/implement_ticket/__main__.py +8 -2
  140. package/.agent-src/templates/scripts/memory_lookup.py +1 -1
  141. package/.agent-src/templates/scripts/telemetry/__init__.py +42 -0
  142. package/.agent-src/templates/scripts/telemetry/aggregator.py +154 -0
  143. package/.agent-src/templates/scripts/telemetry/boundary.py +171 -0
  144. package/.agent-src/templates/scripts/telemetry/engagement.py +238 -0
  145. package/.agent-src/templates/scripts/telemetry/report_renderer.py +170 -0
  146. package/.agent-src/templates/scripts/telemetry/settings.py +112 -0
  147. package/.agent-src/templates/scripts/telemetry_record.py +166 -0
  148. package/.agent-src/templates/scripts/telemetry_report.py +161 -0
  149. package/.agent-src/templates/scripts/telemetry_status.py +142 -0
  150. package/.agent-src/templates/scripts/work_engine/__init__.py +58 -0
  151. package/.agent-src/templates/scripts/work_engine/__main__.py +9 -0
  152. package/.agent-src/templates/scripts/work_engine/cli.py +195 -0
  153. package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
  154. package/.agent-src/templates/scripts/{implement_ticket → work_engine}/delivery_state.py +10 -3
  155. package/.agent-src/templates/scripts/work_engine/directives/__init__.py +33 -0
  156. package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +98 -0
  157. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/analyze.py +1 -1
  158. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/implement.py +3 -3
  159. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/memory.py +2 -2
  160. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/plan.py +2 -2
  161. package/.agent-src/templates/scripts/work_engine/directives/backend/refine.py +396 -0
  162. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/report.py +37 -5
  163. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/test.py +2 -2
  164. package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/verify.py +2 -2
  165. package/.agent-src/templates/scripts/work_engine/directives/mixed/__init__.py +116 -0
  166. package/.agent-src/templates/scripts/work_engine/directives/mixed/contract.py +254 -0
  167. package/.agent-src/templates/scripts/work_engine/directives/mixed/stitch.py +229 -0
  168. package/.agent-src/templates/scripts/work_engine/directives/mixed/ui.py +231 -0
  169. package/.agent-src/templates/scripts/work_engine/directives/ui/__init__.py +113 -0
  170. package/.agent-src/templates/scripts/work_engine/directives/ui/_passthrough.py +44 -0
  171. package/.agent-src/templates/scripts/work_engine/directives/ui/apply.py +241 -0
  172. package/.agent-src/templates/scripts/work_engine/directives/ui/audit.py +414 -0
  173. package/.agent-src/templates/scripts/work_engine/directives/ui/design.py +335 -0
  174. package/.agent-src/templates/scripts/work_engine/directives/ui/polish.py +510 -0
  175. package/.agent-src/templates/scripts/work_engine/directives/ui/review.py +468 -0
  176. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/__init__.py +119 -0
  177. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.py +37 -0
  178. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.py +165 -0
  179. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.py +66 -0
  180. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/report.py +62 -0
  181. package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/test.py +115 -0
  182. package/.agent-src/templates/scripts/work_engine/dispatcher.py +331 -0
  183. package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
  184. package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
  185. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
  186. package/.agent-src/templates/scripts/work_engine/hooks/__init__.py +54 -0
  187. package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +32 -0
  188. package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +103 -0
  189. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +44 -0
  190. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +42 -0
  191. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +50 -0
  192. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +49 -0
  193. package/.agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.py +53 -0
  194. package/.agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.py +50 -0
  195. package/.agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.py +52 -0
  196. package/.agent-src/templates/scripts/work_engine/hooks/builtin/trace.py +84 -0
  197. package/.agent-src/templates/scripts/work_engine/hooks/context.py +66 -0
  198. package/.agent-src/templates/scripts/work_engine/hooks/events.py +44 -0
  199. package/.agent-src/templates/scripts/work_engine/hooks/exceptions.py +79 -0
  200. package/.agent-src/templates/scripts/work_engine/hooks/registry.py +60 -0
  201. package/.agent-src/templates/scripts/work_engine/hooks/runner.py +73 -0
  202. package/.agent-src/templates/scripts/work_engine/hooks/settings.py +141 -0
  203. package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
  204. package/.agent-src/templates/scripts/work_engine/intent/__init__.py +47 -0
  205. package/.agent-src/templates/scripts/work_engine/intent/classify.py +280 -0
  206. package/.agent-src/templates/scripts/work_engine/migration/__init__.py +8 -0
  207. package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +231 -0
  208. package/.agent-src/templates/scripts/{implement_ticket → work_engine}/persona_policy.py +1 -1
  209. package/.agent-src/templates/scripts/work_engine/resolvers/__init__.py +22 -0
  210. package/.agent-src/templates/scripts/work_engine/resolvers/diff.py +106 -0
  211. package/.agent-src/templates/scripts/work_engine/resolvers/file.py +113 -0
  212. package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +90 -0
  213. package/.agent-src/templates/scripts/work_engine/scoring/__init__.py +14 -0
  214. package/.agent-src/templates/scripts/work_engine/scoring/confidence.py +300 -0
  215. package/.agent-src/templates/scripts/work_engine/stack/__init__.py +31 -0
  216. package/.agent-src/templates/scripts/work_engine/stack/detect.py +187 -0
  217. package/.agent-src/templates/scripts/work_engine/state.py +641 -0
  218. package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
  219. package/.claude-plugin/marketplace.json +105 -2
  220. package/AGENTS.md +38 -8
  221. package/CHANGELOG.md +609 -0
  222. package/README.md +136 -14
  223. package/config/agent-settings.template.yml +45 -0
  224. package/config/gitignore-block.txt +4 -0
  225. package/docs/MIGRATION.md +122 -0
  226. package/docs/architecture.md +111 -35
  227. package/docs/contracts/STABILITY.md +95 -0
  228. package/docs/contracts/adr-chat-history-split.md +132 -0
  229. package/docs/contracts/adr-command-suggestion.md +146 -0
  230. package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
  231. package/docs/contracts/adr-product-ui-track.md +384 -0
  232. package/docs/contracts/adr-prompt-driven-execution.md +187 -0
  233. package/docs/contracts/agent-memory-contract.md +149 -0
  234. package/docs/contracts/artifact-engagement-flow.md +262 -0
  235. package/docs/contracts/command-clusters.md +126 -0
  236. package/docs/contracts/command-suggestion-flow.md +148 -0
  237. package/docs/contracts/implement-ticket-flow.md +628 -0
  238. package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
  239. package/docs/contracts/linear-ai-three-layers.md +131 -0
  240. package/docs/contracts/rule-interactions.md +107 -0
  241. package/docs/contracts/rule-interactions.yml +142 -0
  242. package/docs/contracts/ui-stack-extension.md +236 -0
  243. package/docs/contracts/ui-track-flow.md +338 -0
  244. package/docs/development.md +1 -1
  245. package/docs/getting-started.md +3 -3
  246. package/docs/installation.md +124 -2
  247. package/docs/migrations/commands-1.15.0.md +112 -0
  248. package/docs/showcase.md +204 -0
  249. package/docs/ui-track-mental-model.md +121 -0
  250. package/package.json +1 -1
  251. package/scripts/agent-config +199 -0
  252. package/scripts/audit_cloud_compatibility.py +288 -0
  253. package/scripts/build_cloud_bundle.py +458 -0
  254. package/scripts/build_linear_digest.py +263 -0
  255. package/scripts/chat_history.py +796 -7
  256. package/scripts/check_compression.py +139 -0
  257. package/scripts/check_iron_law_prominence.py +143 -0
  258. package/scripts/check_md_language.py +159 -0
  259. package/scripts/check_portability.py +38 -0
  260. package/scripts/check_public_links.py +185 -0
  261. package/scripts/check_references.py +1 -0
  262. package/scripts/check_reply_consistency.py +140 -0
  263. package/scripts/command_suggester/__init__.py +51 -0
  264. package/scripts/command_suggester/cooldown.py +132 -0
  265. package/scripts/command_suggester/loader.py +70 -0
  266. package/scripts/command_suggester/match.py +180 -0
  267. package/scripts/command_suggester/rank.py +120 -0
  268. package/scripts/command_suggester/render.py +86 -0
  269. package/scripts/command_suggester/sanitize.py +113 -0
  270. package/scripts/command_suggester/settings.py +125 -0
  271. package/scripts/command_suggester/types.py +78 -0
  272. package/scripts/hooks/augment-chat-history.sh +56 -0
  273. package/scripts/install-hooks.sh +67 -0
  274. package/scripts/install.py +150 -33
  275. package/scripts/lint_marketplace.py +27 -0
  276. package/scripts/lint_no_new_atomic_commands.py +179 -0
  277. package/scripts/lint_rule_interactions.py +149 -0
  278. package/scripts/memory_lookup.py +1 -1
  279. package/scripts/migrate_command_suggestions.py +151 -0
  280. package/scripts/release.py +297 -64
  281. package/scripts/schemas/command.schema.json +41 -0
  282. package/scripts/skill_linter.py +81 -0
  283. package/scripts/sync_agent_settings.py +42 -12
  284. package/scripts/update_counts.py +10 -0
  285. package/templates/consumer-settings/augment-cli-hooks.json +54 -0
  286. package/templates/consumer-settings/claude-settings.json +55 -1
  287. package/.agent-src/rules/chat-history.md +0 -171
  288. package/.agent-src/templates/scripts/implement_ticket/cli.py +0 -171
  289. package/.agent-src/templates/scripts/implement_ticket/dispatcher.py +0 -134
  290. package/.agent-src/templates/scripts/implement_ticket/steps/__init__.py +0 -49
  291. package/.agent-src/templates/scripts/implement_ticket/steps/refine.py +0 -140
package/README.md CHANGED
@@ -1,11 +1,13 @@
1
1
  # Agent Config — Governed Agent System
2
2
 
3
+ > **agent-config is not a runtime, but it ships a deterministic orchestration contract / state machine for host agents.**
4
+
3
5
  Teach your AI agents Laravel, PHP, testing, Git workflows, and **120+ more skills** — with quality guardrails built in.
4
6
 
5
7
  > Your agent learns to write Laravel code, run tests, create PRs, fix CI — and follows your team's coding standards while doing it.
6
8
 
7
9
  <p align="center">
8
- <strong>124 Skills</strong> · <strong>46 Rules</strong> · <strong>73 Commands</strong> · <strong>46 Guidelines</strong> · <strong>8 AI Tools</strong>
10
+ <strong>128 Skills</strong> · <strong>55 Rules</strong> · <strong>77 Commands</strong> · <strong>46 Guidelines</strong> · <strong>8 AI Tools</strong>
9
11
  </p>
10
12
 
11
13
  ---
@@ -69,7 +71,8 @@ Install directly in your agent for global, cross-project use:
69
71
  2. `"Add caching to this"` → watch: agent asks instead of guessing
70
72
  3. `"Implement this feature"` → watch: agent respects your codebase
71
73
 
72
- → [Full getting started guide](docs/getting-started.md)
74
+ → [Full getting started guide](docs/getting-started.md) ·
75
+ [More examples & expected behavior](docs/showcase.md)
73
76
 
74
77
  ### Optional: persistent agent memory
75
78
 
@@ -90,7 +93,7 @@ Install in the same project (dev-only):
90
93
  npm install --save-dev @event4u/agent-memory
91
94
  ```
92
95
 
93
- → [Memory contract & retrieval API](agents/contexts/agent-memory-contract.md)
96
+ → [Memory contract & retrieval API](docs/contracts/agent-memory-contract.md) (beta)
94
97
 
95
98
  ---
96
99
 
@@ -128,7 +131,69 @@ so you decide — never a silent guess. Persona comes from
128
131
  (plan-only, skips implementation).
129
132
 
130
133
  → [Command reference](.agent-src/commands/implement-ticket.md) ·
131
- [Flow contract](agents/contexts/implement-ticket-flow.md)
134
+ [Flow contract](docs/contracts/implement-ticket-flow.md) (beta)
135
+
136
+ ### Sibling entrypoint: `/work` (free-form prompt)
137
+
138
+ Same engine, different envelope. Use `/work` when you have a goal
139
+ but no ticket yet:
140
+
141
+ ```
142
+ /work add a CSV export endpoint to the audit-log controller
143
+ ```
144
+
145
+ The first pass scores the prompt on five dimensions
146
+ (`goal_clarity`, `scope_boundary`, `ac_evidence`, `stack_data`,
147
+ `reversibility`) and routes on the resulting band:
148
+
149
+ | Band | Score | Engine action |
150
+ |---|---|---|
151
+ | **high** | `≥ 0.8` | Silent proceed — reconstructed AC + assumptions land in the delivery report |
152
+ | **medium** | `0.5–0.79` | Halts with assumptions report; you confirm or edit before plan |
153
+ | **low** | `< 0.5` | Halts with **one** clarifying question on the weakest dimension |
154
+
155
+ After the band gate releases, the rest of the flow is identical
156
+ to `/implement-ticket`. UI-shaped prompts are routed through the
157
+ **product UI track** — see below.
158
+
159
+ → [Command reference](.agent-src/commands/work.md) ·
160
+ [`refine-prompt` skill](.agent-src/skills/refine-prompt/SKILL.md) ·
161
+ [ADR](docs/contracts/adr-prompt-driven-execution.md)
162
+
163
+ **Pick which one:** ticket id or pasted ticket payload → `/implement-ticket`.
164
+ Free-form goal, no ticket → `/work`. The two share `.work-state.json`
165
+ and refuse to switch envelopes mid-flight.
166
+
167
+ ### Product UI track
168
+
169
+ UI-shaped work (build a screen, improve a component, fix microcopy)
170
+ switches the engine to one of three directive sets:
171
+
172
+ | `directive_set` | When | Flow |
173
+ |---|---|---|
174
+ | `ui` | Non-trivial UI surface | `audit → design → apply → review → polish → report` |
175
+ | `ui-trivial` | Bounded edit (≤ 1 file, ≤ 5 changed lines) | `apply → test → report` |
176
+ | `mixed` | Backend + UI | `contract → ui → stitch` |
177
+
178
+ Four load-bearing properties: (1) **existing-UI audit is a hard gate** —
179
+ no `apply` without audit, enforced at dispatcher AND
180
+ [`ui-audit-before-build`](.agent-src/rules/ui-audit-before-build.md) rule;
181
+ (2) **design brief is locked microcopy** — placeholders (`<placeholder>`,
182
+ `Lorem`, `TODO:`) rejected at both ends; (3) **polish has a 2-round
183
+ ceiling**, then halts ship-as-is / abort / hand-off; (4) **a11y precedence**
184
+ — unresolved axe-core / pa11y violations must be fixed or explicitly
185
+ accepted before ship, regardless of round counter (one-shot extension
186
+ allowed). The engine never renders UI itself: rendering happens
187
+ out-of-process, the engine consumes a `preview_envelope` (status /
188
+ screenshots / findings) via a defined contract. Stack detection routes
189
+ (`composer.json` + `package.json`) to `blade-livewire-flux` /
190
+ `react-shadcn` / `vue` / `plain`; trivial path reclassifies loudly when
191
+ preconditions fail. Halt budget on the happy path is 2.
192
+
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)
132
197
 
133
198
  ---
134
199
 
@@ -190,16 +255,16 @@ Start with **Rules + Skills**. Everything else is optional.
190
255
  | Mode | What's active | Token overhead |
191
256
  |---|---|---|
192
257
  | **Minimal** (default) | Rules, Skills, Commands | Zero |
193
- | **Balanced** | + Runtime dispatcher for skills that declare a shell command | Low |
194
- | **Full** | + Tool adapters (GitHub / Jira read-only, opt-in) | Moderate |
258
+ | **Balanced** | + Runtime Dispatcher for skills that declare a shell command | Low |
259
+ | **Full** | + Tool Adapters (GitHub / Jira read-only, opt-in) | Moderate |
195
260
 
196
261
  Nothing runs automatically without your control. [Configure modes →](docs/customization.md)
197
262
 
198
- > **Experimental modules:** the runtime (dispatcher + shell handler) runs
199
- > two pilot skills in CI (`lint-skills`, `check-refs`). The tool registry
200
- > ships two read-only adapters (GitHub, Jira) behind the `full` profile.
201
- > Other handlers (`php`, `node`) are still scaffold. The `minimal`
202
- > 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.
203
268
 
204
269
  ---
205
270
 
@@ -259,7 +324,7 @@ can prioritize the right skills for extraction.
259
324
  | [`/jira-ticket`](.agent-src/commands/jira-ticket.md) | Read ticket from branch, implement feature |
260
325
  | [`/compress`](.agent-src/commands/compress.md) | Compress skills for token efficiency |
261
326
 
262
- → [Browse all 73 commands](.agent-src/commands/)
327
+ → [Browse all 77 commands](.agent-src/commands/)
263
328
 
264
329
  ---
265
330
 
@@ -284,7 +349,7 @@ Every developer gets the same behavior. No per-user setup needed.
284
349
  native slash-commands)
285
350
 
286
351
  > **What this means in practice:** Augment Code and Claude Code get the full
287
- > package (rules + 124 skills + 73 native commands). Cursor, Cline, Windsurf,
352
+ > package (rules + 128 skills + 77 native commands). Cursor, Cline, Windsurf,
288
353
  > Gemini CLI, and GitHub Copilot only get the **rules** natively; skills and
289
354
  > commands are available to them as documentation the agent can read, not as
290
355
  > first-class features.
@@ -303,6 +368,23 @@ Skills use a `SKILL.md` format with YAML frontmatter that is compatible with
303
368
  the [Agent Skills](https://agentskills.io) community spec and with Claude
304
369
  Code's Agent Skills specification.
305
370
 
371
+ ### Cloud / Hosted-agent surfaces (paste-in or upload)
372
+
373
+ For platforms where the package's scripts cannot run, the package
374
+ builds artefacts you upload or paste into the platform's own surface.
375
+
376
+ | Surface | Output | How to install |
377
+ |---|---|---|
378
+ | **Linear AI** (Codegen, Charlie, …) | `dist/linear/{workspace,team,personal}.md` | [Install →](docs/installation.md#linear-ai-codegen-charlie-) |
379
+ | **Claude.ai Web Skills** | `dist/cloud/<skill>.zip` | [Install →](docs/installation.md#claudeai-web-skills-ui) |
380
+
381
+ The Linear digest is split into three layers — workspace (universal
382
+ coding posture), team (framework-specific), personal (empty stub). See
383
+ [`docs/contracts/linear-ai-three-layers.md`](docs/contracts/linear-ai-three-layers.md) (beta)
384
+ for the rationale and
385
+ [`docs/contracts/linear-ai-rules-inclusion.md`](docs/contracts/linear-ai-rules-inclusion.md) (beta)
386
+ for the per-rule routing.
387
+
306
388
  ---
307
389
 
308
390
  ## Core Principles
@@ -325,12 +407,53 @@ Code's Agent Skills specification.
325
407
  | [**Development**](docs/development.md) | Prerequisites, editing workflow, all `task` commands, project structure |
326
408
  | [**Customization**](docs/customization.md) | Overrides, AGENTS.md, agent settings, cost profiles |
327
409
  | [**Quality & CI**](docs/quality.md) | Linting, CI pipeline, compression system |
410
+ | [**Migration**](docs/MIGRATION.md) | Per-version upgrade steps (e.g. `implement_ticket → work_engine` in 1.15.0) |
328
411
 
329
412
  Uninstalling: see
330
413
  [docs/installation.md#uninstalling](docs/installation.md#uninstalling) —
331
414
  there is no dedicated uninstall command; removal is a documented manual
332
415
  step (package manager + `rm -rf` of generated dirs).
333
416
 
417
+ ### Maintainer telemetry (opt-in, default-off)
418
+
419
+ A local-only artefact-engagement log can be enabled by maintainers to see
420
+ which skills, rules, commands, and guidelines the agent actually consults
421
+ and applies during a `/implement-ticket` or `/work` run. The log is a
422
+ JSONL file under the project root; nothing is uploaded, nothing is shared
423
+ across projects. Default is off; consumers see no prompts.
424
+
425
+ ```yaml
426
+ # .agent-settings.yml — opt in only when you want measurement
427
+ telemetry:
428
+ artifact_engagement:
429
+ enabled: true
430
+ ```
431
+
432
+ Reports: `./agent-config telemetry:report`. Full contract,
433
+ privacy/redaction floor, and quartile semantics:
434
+ [`docs/contracts/artifact-engagement-flow.md`](docs/contracts/artifact-engagement-flow.md) (beta).
435
+
436
+ ### Context-aware command suggestion
437
+
438
+ When a user prompt matches a command's purpose ("setze ticket ABC-123 um"
439
+ → `/implement-ticket`), the agent surfaces matches as a numbered-options
440
+ block with an always-present "run the prompt as-is" escape. **Nothing
441
+ auto-executes** — the user picks every time. Three opt-out paths:
442
+
443
+ ```yaml
444
+ # .agent-settings.yml
445
+ commands:
446
+ suggestion:
447
+ enabled: true # global on/off
448
+ blocklist: [] # specific commands never suggested
449
+ confidence_floor: 0.6 # tunable per command in frontmatter
450
+ ```
451
+
452
+ Per-conversation: `/command-suggestion-off` disables the layer until
453
+ re-enabled or the chat ends. Full scoring contract and hardening:
454
+ [`adr-command-suggestion`](docs/contracts/adr-command-suggestion.md),
455
+ [`command-suggestion-flow`](docs/contracts/command-suggestion-flow.md) (beta).
456
+
334
457
  ---
335
458
 
336
459
  ## Development
@@ -371,7 +494,6 @@ task lint-skills # Lint skills, rules, commands
371
494
  **For contributors only** (rebuilding `.augment/` locally):
372
495
 
373
496
  - [Task](https://taskfile.dev/) — runs the CI pipeline (`task ci`).
374
- - No runtime dependencies — the package ships static markdown files.
375
497
 
376
498
  ## License
377
499
 
@@ -46,6 +46,15 @@ personal:
46
46
  # Personal preference — each developer decides for themselves.
47
47
  pr_comment_bot_icon: false
48
48
 
49
+ # Autonomous execution — suppress trivial workflow questions (on, off, auto)
50
+ # on = act on the obvious next step; never ask "Step 2 or 3?", "should I commit?", etc.
51
+ # off = ask trivial workflow questions (legacy behavior)
52
+ # auto = behaves like 'off' until the user says "arbeite selbstständig" / "work autonomously"
53
+ # in the conversation, then switches to 'on' for the rest of the chat.
54
+ # Blocking decisions (security, scope expansion, push/merge/branch/PR) are NEVER suppressed.
55
+ # See rules/autonomous-execution.md for the full definition.
56
+ autonomy: auto
57
+
49
58
  # --- Project / team preferences ---
50
59
  project:
51
60
  # Path to the PR template file (relative to project root)
@@ -96,6 +105,13 @@ chat_history:
96
105
  # compress = mark for summarization on the next agent turn
97
106
  on_overflow: __CHAT_HISTORY_ON_OVERFLOW__
98
107
 
108
+ # Heartbeat marker visibility (token-cost knob)
109
+ # on = print the 📒 marker every reply (~20 tokens/reply, legacy)
110
+ # off = never print (zero tokens, drift only visible by reading the file)
111
+ # hybrid = print only on drift states (missing/foreign/returning); silent otherwise
112
+ # YAML 1.1 booleanizes bare on/off — both are accepted, no quoting needed.
113
+ heartbeat: hybrid
114
+
99
115
  # --- Optional pipelines ---
100
116
  pipelines:
101
117
  # Skill improvement pipeline (true, false)
@@ -133,3 +149,32 @@ onboarding:
133
149
  # Set to true automatically by /onboard at the end. Flip to false if
134
150
  # you want to re-run the flow.
135
151
  onboarded: false
152
+
153
+ # --- Command suggestion (numbered-options shortcut finder) ---
154
+ #
155
+ # When the user's free-form prompt matches an eligible slash command,
156
+ # the agent surfaces a numbered-options block with the recommendation
157
+ # plus an always-present "run as-is" option. The suggestion layer
158
+ # never auto-executes — the user picks. See rules/command-suggestion.md.
159
+ commands:
160
+ suggestion:
161
+ # Master switch (true, false). false = the layer is silent; explicit
162
+ # /commands still work as today.
163
+ enabled: true
164
+
165
+ # Minimum match score (0.0–1.0) before a suggestion surfaces.
166
+ # 0.6 = default; raise to 0.7 for stricter behaviour, lower to 0.5
167
+ # if too many useful suggestions are being suppressed.
168
+ confidence_floor: 0.6
169
+
170
+ # Cooldown in seconds between re-suggestions of the same
171
+ # (command, evidence) pair. Default 600s = 10m.
172
+ cooldown_seconds: 600
173
+
174
+ # Max number of command suggestions before the as-is option.
175
+ # The as-is option is always extra (so total = max_options + 1).
176
+ max_options: 4
177
+
178
+ # Commands to never suggest. Still work when typed explicitly.
179
+ # Example: ["/refine-ticket", "/work"]
180
+ blocklist: []
@@ -22,3 +22,7 @@
22
22
  .agent-chat-history
23
23
  .agent-chat-history.bak
24
24
  .agent-chat-history.*.bak
25
+
26
+ # Agent config — artefact engagement telemetry (default-off, maintainer-only, never commit)
27
+ .agent-engagement.jsonl
28
+ .agent-engagement.jsonl.bak
@@ -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
@@ -29,16 +34,40 @@ wired up yet.
29
34
  ↓ install.sh (Cursor, Cline, Windsurf, Augment VSCode) / plugin system
30
35
  .claude/ .cursor/ .clinerules/ ← Tool-specific symlinks/copies (auto-generated)
31
36
  .windsurfrules GEMINI.md
37
+ ↓ scripts/build_cloud_bundle.py (Phase 1 — cloud distribution)
38
+ dist/cloud/<skill>.zip ← Anthropic Skills bundles (Claude.ai Web / Skills API)
32
39
  ```
33
40
 
41
+ ### Cloud-bundle pipeline
42
+
43
+ `task build-cloud-bundles-all` produces one ZIP per skill at
44
+ `dist/cloud/<skill>.zip`, ready for upload to Claude.ai Web (Settings →
45
+ Customize → Skills) or the Anthropic Skills API. Per-skill behavior
46
+ follows the cloud-tier classification from `scripts/audit_cloud_compatibility.py`:
47
+
48
+ | Tier | Bundle action |
49
+ |-------|-------------------------------------------------------------------|
50
+ | T1 | Bundle as-is — pure guidance, sandbox-safe |
51
+ | T2 | Bundle with prepended sandbox note + package-internal path-swap |
52
+ | T3-S | Same as T2; optional script calls degrade gracefully on cloud |
53
+ | T3-H | **Skipped** — Phase 2 cloud-aware variant required before bundling |
54
+
55
+ Cloud-side caps enforced by the builder: `description` ≤ 200 chars
56
+ (Claude.ai Web) with a 1024-char hard cap (Anthropic spec). The sandbox
57
+ note explains to the agent that `.agent-src/`, `agents/`, and `task …`
58
+ references are descriptive — the host has no filesystem access.
59
+
60
+ CI gate: `task ci-cloud-bundle` runs the builder in `--check` mode and
61
+ fails on any source-side violation, without producing artifacts.
62
+
34
63
  ## What's inside
35
64
 
36
65
  | Layer | Count | Purpose |
37
66
  |---|---|---|
38
- | **Skills** | 93 | On-demand expertise — Laravel, testing, Docker, API design, security, ... |
39
- | **Rules** | 31 | Always-active constraints — coding standards, scope control, verification |
40
- | **Commands** | 51 | Slash-command workflows — `/commit`, `/create-pr`, `/fix-ci`, `/compress`, ... |
41
- | **Guidelines** | 34 | Coding guidelines by language — PHP patterns, Eloquent, Playwright, ... |
67
+ | **Skills** | 128 | On-demand expertise — Laravel, testing, Docker, API design, security, ... |
68
+ | **Rules** | 55 | Always-active constraints — coding standards, scope control, verification |
69
+ | **Commands** | 77 | Slash-command workflows — `/commit`, `/create-pr`, `/fix-ci`, `/compress`, ... |
70
+ | **Guidelines** | 46 | Coding guidelines by language — PHP patterns, Eloquent, Playwright, ... |
42
71
  | **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
43
72
  | **Contexts** | 5 | Shared knowledge about the system itself |
44
73
 
@@ -55,18 +84,25 @@ wired up yet.
55
84
 
56
85
  Ensures: no guessing, analysis before action, real verification, consistent outputs.
57
86
 
58
- ### 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).
59
93
 
60
94
  > **Status:**
61
- > - **Real:** shell-handler path — skills that declare an `execution.command`
62
- > argv are dispatched and executed by `scripts/runtime_handler.py`. A typed
63
- > `ExecutionResult` (exit code, stdout, stderr, duration, artifacts) is
64
- > returned and can be persisted as JSON via `--output FILE`. Pilots:
65
- > `lint-skills`, `check-refs`. Both run on every PR and appear in the
66
- > GitHub Step Summary via `scripts/ci_summary.py`.
67
- > - **Scaffold:** `php` and `node` handlers the frontmatter accepts them
68
- > and the registry validates them, but no handler implementation exists
69
- > 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.
70
106
 
71
107
  Skills opt into runtime by declaring execution metadata:
72
108
 
@@ -89,14 +125,49 @@ Invoke a runtime-capable skill end-to-end:
89
125
  python3 scripts/runtime_dispatcher.py run --skill lint-skills
90
126
  ```
91
127
 
92
- The dispatcher resolves the skill, enforces safety constraints, then hands
93
- off to the matching handler. Environment is scrubbed to an explicit
94
- allowlist; `subprocess.run` is invoked with `shell=False` (argv only).
95
-
96
- Planned scope (still to come): `php` / `node` handlers, tool-registry
97
- wiring for `allowed_tools`, streaming output.
98
-
99
- ### 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
100
171
 
101
172
  > **Status: scaffold + read-only GitHub calls.** With a `GITHUB_TOKEN` the
102
173
  > GitHub adapter performs real read calls; without one it returns scaffold
@@ -110,14 +181,16 @@ Controlled integration via adapters:
110
181
  - Tool registry with safety rules for execution
111
182
  - Structured responses with error classification
112
183
 
113
- ### 4. Cost Control
184
+ ### 5. Cost Control
114
185
 
115
186
  > **Key principle:** Opt-in by default.
116
187
 
117
- The dispatcher and tool adapters activate only under the `balanced` or
118
- `full` profile. The default `minimal` profile ships rules, skills, and
119
- commands and nothing else. All settings and their profile defaults are
120
- 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
121
194
  [`.agent-src.uncompressed/templates/agent-settings.md`](../.agent-src.uncompressed/templates/agent-settings.md).
122
195
 
123
196
  ---
@@ -134,10 +207,13 @@ documented in
134
207
  | **Cline** | ✅ | — | — | — | install.sh (symlinks) |
135
208
  | **Windsurf** | ✅ | — | — | — | install.sh (concatenated) |
136
209
  | **Gemini CLI** | ✅ | — | — | — | install.sh (symlink → AGENTS.md) |
210
+ | **Claude.ai Web / Skills API** | — | ✅ | — | — | `task build-cloud-bundles-all` → `dist/cloud/<skill>.zip` |
137
211
 
138
212
  Skills use a `SKILL.md` format with YAML frontmatter, compatible with the
139
213
  [Agent Skills](https://agentskills.io) community spec and with Claude Code's
140
- Agent Skills specification.
214
+ Agent Skills specification. Cloud bundles produced by
215
+ `scripts/build_cloud_bundle.py` follow the same format with cloud-side
216
+ adjustments (description budget, sandbox note, package-internal path-swap).
141
217
 
142
218
  ---
143
219