@event4u/agent-config 1.14.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 (106) hide show
  1. package/.agent-src/commands/agent-handoff.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +2 -2
  3. package/.agent-src/commands/chat-history-checkpoint.md +2 -2
  4. package/.agent-src/commands/chat-history-clear.md +1 -1
  5. package/.agent-src/commands/chat-history-resume.md +2 -2
  6. package/.agent-src/commands/chat-history.md +2 -2
  7. package/.agent-src/commands/check-current-md.md +43 -32
  8. package/.agent-src/commands/commit-in-chunks.md +43 -23
  9. package/.agent-src/commands/compress.md +34 -2
  10. package/.agent-src/commands/feature-roadmap.md +2 -2
  11. package/.agent-src/commands/fix-portability.md +2 -2
  12. package/.agent-src/commands/onboard.md +14 -5
  13. package/.agent-src/commands/optimize-augmentignore.md +9 -0
  14. package/.agent-src/commands/refine-ticket.md +9 -7
  15. package/.agent-src/commands/review-changes.md +35 -8
  16. package/.agent-src/commands/roadmap-create.md +13 -2
  17. package/.agent-src/commands/roadmap-execute.md +9 -7
  18. package/.agent-src/commands/set-cost-profile.md +8 -0
  19. package/.agent-src/commands/sync-agent-settings.md +9 -0
  20. package/.agent-src/commands/tests-execute.md +2 -3
  21. package/.agent-src/rules/artifact-engagement-recording.md +1 -1
  22. package/.agent-src/rules/augment-portability.md +56 -37
  23. package/.agent-src/rules/chat-history-cadence.md +109 -0
  24. package/.agent-src/rules/chat-history-ownership.md +123 -0
  25. package/.agent-src/rules/chat-history-visibility.md +96 -0
  26. package/.agent-src/rules/cli-output-handling.md +1 -1
  27. package/.agent-src/rules/command-suggestion.md +3 -2
  28. package/.agent-src/rules/commit-policy.md +44 -34
  29. package/.agent-src/rules/direct-answers.md +1 -1
  30. package/.agent-src/rules/language-and-tone.md +19 -15
  31. package/.agent-src/rules/non-destructive-by-default.md +18 -18
  32. package/.agent-src/rules/roadmap-progress-sync.md +133 -74
  33. package/.agent-src/rules/role-mode-adherence.md +1 -1
  34. package/.agent-src/rules/size-enforcement.md +2 -1
  35. package/.agent-src/rules/user-interaction.md +28 -4
  36. package/.agent-src/scripts/update_roadmap_progress.py +56 -4
  37. package/.agent-src/skills/blade-ui/SKILL.md +29 -10
  38. package/.agent-src/skills/command-writing/SKILL.md +15 -4
  39. package/.agent-src/skills/existing-ui-audit/SKILL.md +24 -9
  40. package/.agent-src/skills/fe-design/SKILL.md +20 -15
  41. package/.agent-src/skills/file-editor/SKILL.md +9 -0
  42. package/.agent-src/skills/livewire/SKILL.md +26 -7
  43. package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
  44. package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
  45. package/.agent-src/skills/skill-writing/SKILL.md +3 -3
  46. package/.agent-src/skills/upstream-contribute/SKILL.md +2 -2
  47. package/.agent-src/templates/agent-settings.md +1 -1
  48. package/.agent-src/templates/roadmaps.md +9 -8
  49. package/.agent-src/templates/scripts/memory_lookup.py +1 -1
  50. package/.agent-src/templates/scripts/work_engine/__init__.py +2 -2
  51. package/.agent-src/templates/scripts/work_engine/cli.py +64 -461
  52. package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
  53. package/.agent-src/templates/scripts/work_engine/delivery_state.py +3 -3
  54. package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +1 -1
  55. package/.agent-src/templates/scripts/work_engine/directives/backend/implement.py +1 -1
  56. package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +1 -1
  57. package/.agent-src/templates/scripts/work_engine/directives/backend/plan.py +1 -1
  58. package/.agent-src/templates/scripts/work_engine/directives/backend/report.py +1 -1
  59. package/.agent-src/templates/scripts/work_engine/dispatcher.py +1 -1
  60. package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
  61. package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
  62. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
  63. package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
  64. package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +34 -2
  65. package/.agent-src/templates/scripts/work_engine/persona_policy.py +1 -1
  66. package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +1 -1
  67. package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
  68. package/.claude-plugin/marketplace.json +1 -1
  69. package/AGENTS.md +6 -4
  70. package/CHANGELOG.md +83 -8
  71. package/README.md +24 -23
  72. package/docs/MIGRATION.md +122 -0
  73. package/docs/architecture.md +83 -34
  74. package/docs/contracts/STABILITY.md +95 -0
  75. package/docs/contracts/adr-chat-history-split.md +132 -0
  76. package/docs/contracts/adr-command-suggestion.md +146 -0
  77. package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
  78. package/docs/contracts/adr-product-ui-track.md +384 -0
  79. package/docs/contracts/adr-prompt-driven-execution.md +187 -0
  80. package/docs/contracts/agent-memory-contract.md +149 -0
  81. package/docs/contracts/artifact-engagement-flow.md +262 -0
  82. package/docs/contracts/command-clusters.md +126 -0
  83. package/docs/contracts/command-suggestion-flow.md +148 -0
  84. package/docs/contracts/implement-ticket-flow.md +628 -0
  85. package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
  86. package/docs/contracts/linear-ai-three-layers.md +131 -0
  87. package/docs/contracts/rule-interactions.md +107 -0
  88. package/docs/contracts/rule-interactions.yml +142 -0
  89. package/docs/contracts/ui-stack-extension.md +236 -0
  90. package/docs/contracts/ui-track-flow.md +338 -0
  91. package/docs/getting-started.md +2 -2
  92. package/docs/installation.md +42 -6
  93. package/docs/migrations/commands-1.15.0.md +112 -0
  94. package/docs/ui-track-mental-model.md +121 -0
  95. package/package.json +1 -1
  96. package/scripts/build_linear_digest.py +4 -4
  97. package/scripts/check_portability.py +2 -0
  98. package/scripts/check_public_links.py +185 -0
  99. package/scripts/check_references.py +1 -0
  100. package/scripts/lint_no_new_atomic_commands.py +179 -0
  101. package/scripts/lint_rule_interactions.py +149 -0
  102. package/scripts/memory_lookup.py +1 -1
  103. package/scripts/release.py +297 -64
  104. package/scripts/skill_linter.py +14 -0
  105. package/scripts/update_counts.py +10 -0
  106. package/.agent-src/rules/chat-history.md +0 -200
package/AGENTS.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # event4u/agent-config
2
2
 
3
+ > **agent-config is not a runtime, but it ships a deterministic orchestration contract / state machine for host agents.**
4
+
3
5
  **Shared agent configuration** — skills, rules, commands, guidelines, and templates
4
6
  for AI coding tools (Augment Code, Claude Code, Cursor, Cline, Windsurf, Gemini CLI,
5
7
  GitHub Copilot).
@@ -66,7 +68,7 @@ want to measure which skills/rules/commands the agent actually applies set
66
68
  `telemetry.artifact_engagement.enabled: true` in `.agent-settings.yml`. The
67
69
  log is local-only JSONL (no upload, no cross-project share) and is bound
68
70
  by the redaction floor described in
69
- [`agents/contexts/artifact-engagement-flow.md`](agents/contexts/artifact-engagement-flow.md).
71
+ [`docs/contracts/artifact-engagement-flow.md`](docs/contracts/artifact-engagement-flow.md) (beta).
70
72
  The recording rule lives at
71
73
  [`.agent-src/rules/artifact-engagement-recording.md`](.agent-src/rules/artifact-engagement-recording.md).
72
74
 
@@ -78,9 +80,9 @@ surfaces matches as a numbered-options block with an always-present
78
80
  picks every time. Engine: `scripts/command_suggester/`. Rule:
79
81
  [`.agent-src/rules/command-suggestion.md`](.agent-src/rules/command-suggestion.md).
80
82
  Locked eligibility table, scoring contract, and hardening list:
81
- [`agents/contexts/adr-command-suggestion.md`](agents/contexts/adr-command-suggestion.md)
83
+ [`docs/contracts/adr-command-suggestion.md`](docs/contracts/adr-command-suggestion.md)
82
84
  and
83
- [`agents/contexts/command-suggestion-flow.md`](agents/contexts/command-suggestion-flow.md).
85
+ [`docs/contracts/command-suggestion-flow.md`](docs/contracts/command-suggestion-flow.md) (beta).
84
86
 
85
87
  ## Key rules for agents editing this repo
86
88
 
@@ -99,7 +101,7 @@ and
99
101
  ```
100
102
  .agent-src.uncompressed/ ← edit here
101
103
  skills/ (128 skills)
102
- rules/ (53 rules)
104
+ rules/ (55 rules)
103
105
  commands/ (77 commands)
104
106
  guidelines/ (46 guidelines)
105
107
  personas/ (7 personas)
package/CHANGELOG.md CHANGED
@@ -103,10 +103,10 @@ baselines pin the R3 contract.
103
103
  * **ADR (R1):** [`agents/contexts/adr-work-engine-rename.md`](agents/contexts/adr-work-engine-rename.md)
104
104
  — rationale, scope of the rename, compatibility shim policy, state
105
105
  migration, golden-test contract, tradeoffs, non-goals.
106
- * **ADR (R2):** [`agents/contexts/adr-prompt-driven-execution.md`](agents/contexts/adr-prompt-driven-execution.md)
106
+ * **ADR (R2):** [`docs/contracts/adr-prompt-driven-execution.md`](docs/contracts/adr-prompt-driven-execution.md)
107
107
  — naming decision (`/work` over `/do`), confidence-band gate,
108
108
  AC-projection fix, R3 deferral boundary, and golden contract.
109
- * **flow:** `agents/contexts/implement-ticket-flow.md` gains a "Replay
109
+ * **flow:** `docs/contracts/implement-ticket-flow.md` gains a "Replay
110
110
  protocol — Strict-Verb comparison" section (R1) and a
111
111
  "Prompt envelopes and confidence bands (R2)" section pinning the
112
112
  band-action mapping to the scorer module.
@@ -170,17 +170,17 @@ baselines pin the R3 contract.
170
170
 
171
171
  ### Documentation (R3)
172
172
 
173
- * **ADR (R3):** [`agents/contexts/adr-product-ui-track.md`](agents/contexts/adr-product-ui-track.md)
173
+ * **ADR (R3):** [`docs/contracts/adr-product-ui-track.md`](docs/contracts/adr-product-ui-track.md)
174
174
  — audit-as-hard-gate rationale, design-review loop, halt-budget
175
175
  reasoning, trivial-path-and-reclassification, stack-detection
176
176
  strategy, fe-design migration, tradeoffs, non-goals.
177
- * **flow contract:** [`agents/contexts/ui-track-flow.md`](agents/contexts/ui-track-flow.md)
177
+ * **flow contract:** [`docs/contracts/ui-track-flow.md`](docs/contracts/ui-track-flow.md)
178
178
  — slot-by-slot wiring for `ui` / `ui-trivial` / `mixed`, the
179
179
  audit-path table (`STRONG_SIMILARITY = 0.7`, `TIE_GAP = 0.05`),
180
180
  design-brief lock + placeholder patterns, stack-dispatch tables,
181
181
  polish ceiling, trivial preconditions, mixed sentinels,
182
182
  idempotency table, declared ambiguities across all eight directives.
183
- * **extension recipe:** [`agents/contexts/ui-stack-extension.md`](agents/contexts/ui-stack-extension.md)
183
+ * **extension recipe:** [`docs/contracts/ui-stack-extension.md`](docs/contracts/ui-stack-extension.md)
184
184
  — how to add a new stack (Svelte, SolidJS, Astro, …): label
185
185
  conventions, detector heuristic, three required skills, dispatch
186
186
  wiring, version anchor, Golden fixture, end-to-end verification.
@@ -232,7 +232,7 @@ Maintainer-targeted; consumers see no prompts.
232
232
  * **ADR:** [`agents/contexts/adr-artifact-engagement.md`](agents/contexts/adr-artifact-engagement.md)
233
233
  — rationale, default-off doctrine, privacy contract, schema
234
234
  versioning, deprecation horizon.
235
- * **flow:** `agents/contexts/artifact-engagement-flow.md` is the
235
+ * **flow:** `docs/contracts/artifact-engagement-flow.md` is the
236
236
  cross-cutting reference for what gets recorded, when, and under
237
237
  which constraints; includes the maintainer hand-audit recipe.
238
238
  * **AGENTS.md + README.md:** short *Maintainer telemetry (opt-in)*
@@ -288,15 +288,90 @@ the as-is option is always present and always last.
288
288
 
289
289
  ### Documentation
290
290
 
291
- * **ADR:** [`agents/contexts/adr-command-suggestion.md`](agents/contexts/adr-command-suggestion.md)
291
+ * **ADR:** [`docs/contracts/adr-command-suggestion.md`](docs/contracts/adr-command-suggestion.md)
292
292
  — "suggest, never invoke" anchor, eligibility rubric, anti-noise
293
293
  heuristics, hardening list, three opt-out paths.
294
- * **flow:** [`agents/contexts/command-suggestion-flow.md`](agents/contexts/command-suggestion-flow.md)
294
+ * **flow:** [`docs/contracts/command-suggestion-flow.md`](docs/contracts/command-suggestion-flow.md)
295
295
  — scoring breakdown, evidence semantics, subordination order, and
296
296
  hardening tests.
297
297
  * **README + AGENTS.md:** short *Context-aware command suggestion*
298
298
  section pointing to the ADR and the flow doc.
299
299
 
300
+ **Install-path pruning (relabel only)** — `docs/installation.md`
301
+ reorders install paths by recommendation prominence. Composer + npm
302
+ remain the default; manual / submodule / VS Code Git URL are tagged
303
+ `advanced`; Claude.ai Web Skills UI is tagged `experimental`; Linear
304
+ AI workspace guidance is tagged `staged`. **No installer or shipped
305
+ artefact is removed in 1.15.0** — every path on the page still works
306
+ and is still tested. The labels describe how prominent the path is in
307
+ our recommendation order, not its support status.
308
+
309
+ ### Documentation
310
+
311
+ * **`docs/installation.md`:** new label table at the top
312
+ (`(no label)` / `advanced` / `experimental` / `staged`) plus a
313
+ preamble that calls out the no-removal contract explicitly. Section
314
+ headers carry their label inline for skim-readers.
315
+ * **rationale:** see R9 in
316
+ [`agents/roadmaps/archive/road-to-post-pr29-optimize.md`](agents/roadmaps/archive/road-to-post-pr29-optimize.md)
317
+ — relabelling addresses the "four install paths at zero external
318
+ users" tension without removing any path that an existing user
319
+ might rely on.
320
+
321
+ ## [1.15.0](https://github.com/event4u-app/agent-config/compare/1.14.0...1.15.0) (2026-05-02)
322
+
323
+ ### Features
324
+
325
+ * **governance:** rule-interaction matrix + linter (P2.2) ([cd68591](https://github.com/event4u-app/agent-config/commit/cd6859174d289737b829fe49a4c7f92bd318a290))
326
+ * **rules:** split chat-history into ownership/cadence/visibility (P2.1) ([7b5348d](https://github.com/event4u-app/agent-config/commit/7b5348d2656c12000fca667c2e577c026839aa11))
327
+ * **governance:** command-collapse contract + atomic-command linter (P0.8) ([5f1ebb7](https://github.com/event4u-app/agent-config/commit/5f1ebb72484da28679f7a49fffc5cbb4bd7a07f6))
328
+ * **work_engine:** default state file → .work-state.json + collision-safe backup ([b0f487a](https://github.com/event4u-app/agent-config/commit/b0f487a3f261797320b3726211206f813f2c2c1a))
329
+ * **docs:** public contracts to docs/contracts/ + STABILITY policy + link checker ([7c6ac17](https://github.com/event4u-app/agent-config/commit/7c6ac17609d19505625cb4fa9a76798a403997ad))
330
+ * support capture-only roadmaps in dashboard generator ([c0df2dc](https://github.com/event4u-app/agent-config/commit/c0df2dc3c680a6cfa6c87f2e64868360695fa3ec))
331
+
332
+ ### Bug Fixes
333
+
334
+ * **rules:** restore Iron Law heading + code blocks in compressed roadmap-progress-sync ([96c633b](https://github.com/event4u-app/agent-config/commit/96c633b583fc17ea560fe1ddf7b915ab5a3be3f3))
335
+ * **ci:** clear check-refs regressions in roadmap files ([56b40f3](https://github.com/event4u-app/agent-config/commit/56b40f397e632337f5f69a507b13aa2b475453c3))
336
+
337
+ ### Performance
338
+
339
+ * **ci:** smoke GT subset + duration line + nightly full replay (P2.4) ([7b0608d](https://github.com/event4u-app/agent-config/commit/7b0608d3f51bac534f835424860049483ae6004a))
340
+
341
+ ### Documentation
342
+
343
+ * **ui-track:** 1-page mental model + archive Phase 2 roadmap — P2.10/P2.11 ([d87673d](https://github.com/event4u-app/agent-config/commit/d87673d75ec8cd0136336a1954b356a953b79e4e))
344
+ * **install:** relabel install paths (advanced/experimental/staged) — P2.5 ([66e5389](https://github.com/event4u-app/agent-config/commit/66e53894f3dd12ff0762a56f677e302d1ca726c1))
345
+ * add visible (beta) markers to public-surface contract links ([282b74f](https://github.com/event4u-app/agent-config/commit/282b74fccab2c0ba585271013c5fe61b396aaa09))
346
+ * positioning headline + work_engine vs runtime_dispatcher separation ([ccf833f](https://github.com/event4u-app/agent-config/commit/ccf833f07b34ff2c6c5cf64e8328fb67b7629c4d))
347
+ * **roadmaps:** reviewer feedback + directional → out-of-horizon ([6af0320](https://github.com/event4u-app/agent-config/commit/6af03205537d761a0cbe6c205662c34854deea6a))
348
+ * **rules:** position-agnostic recommendation in user-interaction ([ee57ae0](https://github.com/event4u-app/agent-config/commit/ee57ae0d233b3332f30dfd3d3f67b3954ce153ef))
349
+ * **roadmaps:** retire stale open-questions and placeholder sections ([c1ec177](https://github.com/event4u-app/agent-config/commit/c1ec17782521bb5688260d1873423fbf4d4adc99))
350
+ * **roadmaps:** synthesize decisions from multi-AI review ([4d9dcc1](https://github.com/event4u-app/agent-config/commit/4d9dcc19929fe7d3fa2657509a4b8a2e9a1ee7e2))
351
+ * add capture-only synthesis roadmaps ([d2bdb76](https://github.com/event4u-app/agent-config/commit/d2bdb76ec562d8a00313f49b388083fdad8f1b42))
352
+
353
+ ### Refactoring
354
+
355
+ * **work_engine:** modularise cli.py into 7 focused modules (P2.3) ([ad92366](https://github.com/event4u-app/agent-config/commit/ad9236681c1537beec3d407bead9b7386c57c73d))
356
+ * **roadmaps:** binary status model — ready (implicit) / draft (hidden) ([2d3d713](https://github.com/event4u-app/agent-config/commit/2d3d713a52ac039c08317817331ba6aaa81fcb12))
357
+
358
+ ### Tests
359
+
360
+ * **work_engine:** cover default state file + UI-prompt routing + medium-band halt (P0.7) ([e97c499](https://github.com/event4u-app/agent-config/commit/e97c499fa7daaf0478423efbdb34d648b6e400c8))
361
+
362
+ ### Chores
363
+
364
+ * **generated:** sync compressed projections for chat-history split (P2.1) ([f53a44f](https://github.com/event4u-app/agent-config/commit/f53a44f31fd7d93c28122b945f8059bd112dc854))
365
+ * **generated:** regenerate .windsurfrules after rule edits ([0090392](https://github.com/event4u-app/agent-config/commit/00903924eaf1955ad2049dc03c3c57d9f4ff016e))
366
+ * **roadmaps:** mark Phase 1 progress in road-to-post-pr29-optimize + dashboard ([a2160af](https://github.com/event4u-app/agent-config/commit/a2160afd6e7280bd3d4a71641fb4dba8234edf21))
367
+ * **scripts:** whitelist scripts/mcp_server/ in portability check ([259745e](https://github.com/event4u-app/agent-config/commit/259745e9f52ea0a60e3e92a553a5938b15adc0ca))
368
+
369
+ ### Other
370
+
371
+ * **readme:** drop redundant 'no runtime deps' bullet — clear 500-line limit ([53b5df4](https://github.com/event4u-app/agent-config/commit/53b5df481122ccbd70ce358a3192643c7fff73b0))
372
+ * **readme:** trim Stability tiers + command-suggestion blocks to clear 500-line limit ([5bb50ba](https://github.com/event4u-app/agent-config/commit/5bb50ba43d8734f5deb02c0b34c9c6e26475c52b))
373
+ * **rules:** trim roadmap-progress-sync to 199 lines (clear CI hard limit) ([12c3a2e](https://github.com/event4u-app/agent-config/commit/12c3a2e1357dfca7ec0bd2f6b507e606ec2de596))
374
+
300
375
  ## [1.14.0](https://github.com/event4u-app/agent-config/compare/1.13.0...1.14.0) (2026-05-01)
301
376
 
302
377
  ### Features
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>128 Skills</strong> · <strong>53 Rules</strong> · <strong>77 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
  ---
@@ -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`
@@ -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
 
@@ -252,16 +255,16 @@ Start with **Rules + Skills**. Everything else is optional.
252
255
  | Mode | What's active | Token overhead |
253
256
  |---|---|---|
254
257
  | **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 |
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
 
@@ -377,9 +380,9 @@ builds artefacts you upload or paste into the platform's own surface.
377
380
 
378
381
  The Linear digest is split into three layers — workspace (universal
379
382
  coding posture), team (framework-specific), personal (empty stub). See
380
- [`agents/contexts/linear-ai-three-layers.md`](agents/contexts/linear-ai-three-layers.md)
383
+ [`docs/contracts/linear-ai-three-layers.md`](docs/contracts/linear-ai-three-layers.md) (beta)
381
384
  for the rationale and
382
- [`agents/contexts/linear-ai-rules-inclusion.md`](agents/contexts/linear-ai-rules-inclusion.md)
385
+ [`docs/contracts/linear-ai-rules-inclusion.md`](docs/contracts/linear-ai-rules-inclusion.md) (beta)
383
386
  for the per-rule routing.
384
387
 
385
388
  ---
@@ -404,6 +407,7 @@ for the per-rule routing.
404
407
  | [**Development**](docs/development.md) | Prerequisites, editing workflow, all `task` commands, project structure |
405
408
  | [**Customization**](docs/customization.md) | Overrides, AGENTS.md, agent settings, cost profiles |
406
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) |
407
411
 
408
412
  Uninstalling: see
409
413
  [docs/installation.md#uninstalling](docs/installation.md#uninstalling) —
@@ -427,7 +431,7 @@ telemetry:
427
431
 
428
432
  Reports: `./agent-config telemetry:report`. Full contract,
429
433
  privacy/redaction floor, and quartile semantics:
430
- [`agents/contexts/artifact-engagement-flow.md`](agents/contexts/artifact-engagement-flow.md).
434
+ [`docs/contracts/artifact-engagement-flow.md`](docs/contracts/artifact-engagement-flow.md) (beta).
431
435
 
432
436
  ### Context-aware command suggestion
433
437
 
@@ -446,11 +450,9 @@ commands:
446
450
  ```
447
451
 
448
452
  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).
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).
454
456
 
455
457
  ---
456
458
 
@@ -492,7 +494,6 @@ task lint-skills # Lint skills, rules, commands
492
494
  **For contributors only** (rebuilding `.augment/` locally):
493
495
 
494
496
  - [Task](https://taskfile.dev/) — runs the CI pipeline (`task ci`).
495
- - No runtime dependencies — the package ships static markdown files.
496
497
 
497
498
  ## License
498
499
 
@@ -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** | 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, ... |
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
  ---