@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.
- package/.agent-src/commands/agent-handoff.md +1 -1
- package/.agent-src/commands/bug-fix.md +2 -2
- package/.agent-src/commands/chat-history-checkpoint.md +2 -2
- package/.agent-src/commands/chat-history-clear.md +1 -1
- package/.agent-src/commands/chat-history-resume.md +2 -2
- package/.agent-src/commands/chat-history.md +2 -2
- package/.agent-src/commands/check-current-md.md +43 -32
- package/.agent-src/commands/commit-in-chunks.md +43 -23
- package/.agent-src/commands/compress.md +34 -2
- package/.agent-src/commands/feature-roadmap.md +2 -2
- package/.agent-src/commands/fix-portability.md +2 -2
- package/.agent-src/commands/onboard.md +14 -5
- package/.agent-src/commands/optimize-augmentignore.md +9 -0
- package/.agent-src/commands/refine-ticket.md +9 -7
- package/.agent-src/commands/review-changes.md +35 -8
- package/.agent-src/commands/roadmap-create.md +13 -2
- package/.agent-src/commands/roadmap-execute.md +9 -7
- package/.agent-src/commands/set-cost-profile.md +8 -0
- package/.agent-src/commands/sync-agent-settings.md +9 -0
- package/.agent-src/commands/tests-execute.md +2 -3
- package/.agent-src/rules/artifact-engagement-recording.md +1 -1
- package/.agent-src/rules/augment-portability.md +56 -37
- package/.agent-src/rules/chat-history-cadence.md +109 -0
- package/.agent-src/rules/chat-history-ownership.md +123 -0
- package/.agent-src/rules/chat-history-visibility.md +96 -0
- package/.agent-src/rules/cli-output-handling.md +1 -1
- package/.agent-src/rules/command-suggestion.md +3 -2
- package/.agent-src/rules/commit-policy.md +44 -34
- package/.agent-src/rules/direct-answers.md +1 -1
- package/.agent-src/rules/language-and-tone.md +19 -15
- package/.agent-src/rules/non-destructive-by-default.md +18 -18
- package/.agent-src/rules/roadmap-progress-sync.md +133 -74
- package/.agent-src/rules/role-mode-adherence.md +1 -1
- package/.agent-src/rules/size-enforcement.md +2 -1
- package/.agent-src/rules/user-interaction.md +28 -4
- package/.agent-src/scripts/update_roadmap_progress.py +56 -4
- package/.agent-src/skills/blade-ui/SKILL.md +29 -10
- package/.agent-src/skills/command-writing/SKILL.md +15 -4
- package/.agent-src/skills/existing-ui-audit/SKILL.md +24 -9
- package/.agent-src/skills/fe-design/SKILL.md +20 -15
- package/.agent-src/skills/file-editor/SKILL.md +9 -0
- package/.agent-src/skills/livewire/SKILL.md +26 -7
- package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
- package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
- package/.agent-src/skills/skill-writing/SKILL.md +3 -3
- package/.agent-src/skills/upstream-contribute/SKILL.md +2 -2
- package/.agent-src/templates/agent-settings.md +1 -1
- package/.agent-src/templates/roadmaps.md +9 -8
- package/.agent-src/templates/scripts/memory_lookup.py +1 -1
- package/.agent-src/templates/scripts/work_engine/__init__.py +2 -2
- package/.agent-src/templates/scripts/work_engine/cli.py +64 -461
- package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
- package/.agent-src/templates/scripts/work_engine/delivery_state.py +3 -3
- package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/implement.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/plan.py +1 -1
- package/.agent-src/templates/scripts/work_engine/directives/backend/report.py +1 -1
- package/.agent-src/templates/scripts/work_engine/dispatcher.py +1 -1
- package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
- package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
- package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
- package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
- package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +34 -2
- package/.agent-src/templates/scripts/work_engine/persona_policy.py +1 -1
- package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +1 -1
- package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +6 -4
- package/CHANGELOG.md +83 -8
- package/README.md +24 -23
- package/docs/MIGRATION.md +122 -0
- package/docs/architecture.md +83 -34
- package/docs/contracts/STABILITY.md +95 -0
- package/docs/contracts/adr-chat-history-split.md +132 -0
- package/docs/contracts/adr-command-suggestion.md +146 -0
- package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
- package/docs/contracts/adr-product-ui-track.md +384 -0
- package/docs/contracts/adr-prompt-driven-execution.md +187 -0
- package/docs/contracts/agent-memory-contract.md +149 -0
- package/docs/contracts/artifact-engagement-flow.md +262 -0
- package/docs/contracts/command-clusters.md +126 -0
- package/docs/contracts/command-suggestion-flow.md +148 -0
- package/docs/contracts/implement-ticket-flow.md +628 -0
- package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
- package/docs/contracts/linear-ai-three-layers.md +131 -0
- package/docs/contracts/rule-interactions.md +107 -0
- package/docs/contracts/rule-interactions.yml +142 -0
- package/docs/contracts/ui-stack-extension.md +236 -0
- package/docs/contracts/ui-track-flow.md +338 -0
- package/docs/getting-started.md +2 -2
- package/docs/installation.md +42 -6
- package/docs/migrations/commands-1.15.0.md +112 -0
- package/docs/ui-track-mental-model.md +121 -0
- package/package.json +1 -1
- package/scripts/build_linear_digest.py +4 -4
- package/scripts/check_portability.py +2 -0
- package/scripts/check_public_links.py +185 -0
- package/scripts/check_references.py +1 -0
- package/scripts/lint_no_new_atomic_commands.py +179 -0
- package/scripts/lint_rule_interactions.py +149 -0
- package/scripts/memory_lookup.py +1 -1
- package/scripts/release.py +297 -64
- package/scripts/skill_linter.py +14 -0
- package/scripts/update_counts.py +10 -0
- 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
|
-
[`
|
|
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
|
-
[`
|
|
83
|
+
[`docs/contracts/adr-command-suggestion.md`](docs/contracts/adr-command-suggestion.md)
|
|
82
84
|
and
|
|
83
|
-
[`
|
|
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/ (
|
|
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):** [`
|
|
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:** `
|
|
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):** [`
|
|
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:** [`
|
|
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:** [`
|
|
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:** `
|
|
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:** [`
|
|
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:** [`
|
|
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>
|
|
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](
|
|
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](
|
|
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](
|
|
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
|
-
→ [
|
|
192
|
-
[
|
|
193
|
-
[
|
|
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
|
|
256
|
-
| **Full** | + Tool
|
|
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
|
-
> **
|
|
261
|
-
>
|
|
262
|
-
>
|
|
263
|
-
>
|
|
264
|
-
>
|
|
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
|
-
[`
|
|
383
|
+
[`docs/contracts/linear-ai-three-layers.md`](docs/contracts/linear-ai-three-layers.md) (beta)
|
|
381
384
|
for the rationale and
|
|
382
|
-
[`
|
|
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
|
-
[`
|
|
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
|
-
|
|
450
|
-
|
|
451
|
-
[`
|
|
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.
|
package/docs/architecture.md
CHANGED
|
@@ -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
|
|
7
|
-
Skills
|
|
8
|
-
Runtime
|
|
9
|
-
|
|
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 Engine → Multi-step orchestration for /work + /implement ← beta
|
|
12
|
+
Tool Adapters → External integrations (GitHub, Jira) ← experimental
|
|
10
13
|
```
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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** |
|
|
63
|
-
| **Rules** |
|
|
64
|
-
| **Commands** |
|
|
65
|
-
| **Guidelines** |
|
|
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.
|
|
87
|
+
### 2. Runtime Dispatcher — stable 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
|
-
> - **
|
|
86
|
-
>
|
|
87
|
-
> `
|
|
88
|
-
>
|
|
89
|
-
>
|
|
90
|
-
>
|
|
91
|
-
>
|
|
92
|
-
>
|
|
93
|
-
>
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
Planned scope
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
### 3.
|
|
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 Engine — beta, 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
|
-
###
|
|
184
|
+
### 5. Cost Control
|
|
138
185
|
|
|
139
186
|
> **Key principle:** Opt-in by default.
|
|
140
187
|
|
|
141
|
-
The
|
|
142
|
-
`full` profile. The
|
|
143
|
-
|
|
144
|
-
|
|
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
|
---
|