@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.
- package/.agent-src/commands/agent-handoff.md +4 -1
- package/.agent-src/commands/agent-status.md +3 -0
- package/.agent-src/commands/agents-audit.md +4 -0
- package/.agent-src/commands/agents-cleanup.md +6 -1
- package/.agent-src/commands/agents-prepare.md +3 -0
- package/.agent-src/commands/analyze-reference-repo.md +4 -0
- package/.agent-src/commands/bug-fix.md +7 -3
- package/.agent-src/commands/bug-investigate.md +4 -0
- package/.agent-src/commands/chat-history-checkpoint.md +126 -0
- package/.agent-src/commands/chat-history-clear.md +6 -1
- package/.agent-src/commands/chat-history-resume.md +7 -2
- package/.agent-src/commands/chat-history.md +7 -2
- package/.agent-src/commands/check-current-md.md +137 -0
- package/.agent-src/commands/commit-in-chunks.md +118 -0
- package/.agent-src/commands/commit.md +4 -0
- package/.agent-src/commands/compress.md +37 -2
- package/.agent-src/commands/context-create.md +4 -0
- package/.agent-src/commands/context-refactor.md +4 -0
- package/.agent-src/commands/copilot-agents-init.md +3 -0
- package/.agent-src/commands/copilot-agents-optimize.md +3 -0
- package/.agent-src/commands/create-pr-description.md +4 -0
- package/.agent-src/commands/create-pr.md +4 -0
- package/.agent-src/commands/do-and-judge.md +4 -1
- package/.agent-src/commands/do-in-steps.md +3 -0
- package/.agent-src/commands/e2e-heal.md +4 -0
- package/.agent-src/commands/e2e-plan.md +4 -0
- package/.agent-src/commands/estimate-ticket.md +4 -1
- package/.agent-src/commands/feature-dev.md +4 -0
- package/.agent-src/commands/feature-explore.md +4 -0
- package/.agent-src/commands/feature-plan.md +4 -0
- package/.agent-src/commands/feature-refactor.md +4 -0
- package/.agent-src/commands/feature-roadmap.md +6 -0
- package/.agent-src/commands/fix-ci.md +4 -0
- package/.agent-src/commands/fix-portability.md +5 -2
- package/.agent-src/commands/fix-pr-bot-comments.md +4 -0
- package/.agent-src/commands/fix-pr-comments.md +4 -0
- package/.agent-src/commands/fix-pr-developer-comments.md +4 -0
- package/.agent-src/commands/fix-references.md +3 -0
- package/.agent-src/commands/fix-seeder.md +4 -0
- package/.agent-src/commands/implement-ticket.md +39 -13
- package/.agent-src/commands/jira-ticket.md +4 -0
- package/.agent-src/commands/judge.md +3 -0
- package/.agent-src/commands/memory-add.md +5 -3
- package/.agent-src/commands/memory-full.md +5 -2
- package/.agent-src/commands/memory-promote.md +7 -6
- package/.agent-src/commands/mode.md +3 -0
- package/.agent-src/commands/module-create.md +4 -0
- package/.agent-src/commands/module-explore.md +4 -0
- package/.agent-src/commands/onboard.md +33 -0
- package/.agent-src/commands/optimize-agents.md +4 -0
- package/.agent-src/commands/optimize-augmentignore.md +12 -0
- package/.agent-src/commands/optimize-rtk-filters.md +3 -0
- package/.agent-src/commands/optimize-skills.md +4 -0
- package/.agent-src/commands/override-create.md +4 -0
- package/.agent-src/commands/override-manage.md +4 -0
- package/.agent-src/commands/package-reset.md +3 -0
- package/.agent-src/commands/package-test.md +3 -0
- package/.agent-src/commands/prepare-for-review.md +4 -0
- package/.agent-src/commands/project-analyze.md +4 -0
- package/.agent-src/commands/project-health.md +4 -0
- package/.agent-src/commands/propose-memory.md +6 -8
- package/.agent-src/commands/quality-fix.md +4 -0
- package/.agent-src/commands/refine-ticket.md +12 -7
- package/.agent-src/commands/review-changes.md +39 -8
- package/.agent-src/commands/review-routing.md +4 -0
- package/.agent-src/commands/roadmap-create.md +18 -0
- package/.agent-src/commands/roadmap-execute.md +14 -1
- package/.agent-src/commands/rule-compliance-audit.md +4 -0
- package/.agent-src/commands/set-cost-profile.md +11 -0
- package/.agent-src/commands/sync-agent-settings.md +12 -0
- package/.agent-src/commands/sync-gitignore.md +3 -0
- package/.agent-src/commands/tests-create.md +4 -0
- package/.agent-src/commands/tests-execute.md +6 -3
- package/.agent-src/commands/threat-model.md +4 -0
- package/.agent-src/commands/update-form-request-messages.md +4 -0
- package/.agent-src/commands/upstream-contribute.md +4 -0
- package/.agent-src/commands/work.md +161 -0
- package/.agent-src/guidelines/agent-infra/engineering-memory-data-format.md +2 -6
- package/.agent-src/guidelines/agent-infra/layered-settings.md +0 -1
- package/.agent-src/guidelines/agent-infra/memory-access.md +0 -7
- package/.agent-src/guidelines/agent-infra/role-contracts.md +2 -4
- package/.agent-src/guidelines/agent-infra/self-improvement-pipeline.md +0 -1
- package/.agent-src/guidelines/php/patterns/strategy.md +180 -2
- package/.agent-src/personas/README.md +0 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +7 -2
- package/.agent-src/rules/artifact-engagement-recording.md +133 -0
- package/.agent-src/rules/ask-when-uncertain.md +18 -13
- package/.agent-src/rules/augment-portability.md +64 -37
- package/.agent-src/rules/autonomous-execution.md +158 -0
- 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 +27 -4
- package/.agent-src/rules/command-suggestion.md +134 -0
- package/.agent-src/rules/commit-policy.md +109 -0
- package/.agent-src/rules/direct-answers.md +114 -0
- package/.agent-src/rules/docs-sync.md +36 -0
- package/.agent-src/rules/downstream-changes.md +10 -9
- package/.agent-src/rules/improve-before-implement.md +9 -6
- package/.agent-src/rules/language-and-tone.md +85 -6
- package/.agent-src/rules/non-destructive-by-default.md +117 -0
- package/.agent-src/rules/package-ci-checks.md +4 -0
- package/.agent-src/rules/preservation-guard.md +20 -0
- package/.agent-src/rules/roadmap-progress-sync.md +159 -27
- package/.agent-src/rules/role-mode-adherence.md +1 -1
- package/.agent-src/rules/scope-control.md +42 -1
- package/.agent-src/rules/size-enforcement.md +2 -3
- package/.agent-src/rules/skill-quality.md +3 -8
- package/.agent-src/rules/ui-audit-before-build.md +106 -0
- package/.agent-src/rules/user-interaction.md +107 -51
- package/.agent-src/scripts/update_roadmap_progress.py +73 -9
- package/.agent-src/skills/blade-ui/SKILL.md +47 -3
- package/.agent-src/skills/command-routing/SKILL.md +32 -0
- package/.agent-src/skills/command-writing/SKILL.md +52 -2
- package/.agent-src/skills/description-assist/SKILL.md +21 -0
- package/.agent-src/skills/estimate-ticket/SKILL.md +0 -1
- package/.agent-src/skills/existing-ui-audit/SKILL.md +202 -0
- package/.agent-src/skills/fe-design/SKILL.md +78 -61
- package/.agent-src/skills/file-editor/SKILL.md +9 -0
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +4 -0
- package/.agent-src/skills/flux/SKILL.md +31 -4
- package/.agent-src/skills/guideline-writing/SKILL.md +24 -2
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +51 -9
- package/.agent-src/skills/livewire/SKILL.md +49 -4
- package/.agent-src/skills/md-language-check/SKILL.md +103 -0
- package/.agent-src/skills/php-coder/SKILL.md +24 -0
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +121 -0
- package/.agent-src/skills/refine-prompt/SKILL.md +220 -0
- package/.agent-src/skills/refine-ticket/SKILL.md +32 -28
- package/.agent-src/skills/roadmap-management/SKILL.md +24 -11
- package/.agent-src/skills/rule-writing/SKILL.md +23 -1
- package/.agent-src/skills/skill-writing/SKILL.md +3 -5
- package/.agent-src/skills/upstream-contribute/SKILL.md +3 -3
- package/.agent-src/skills/using-git-worktrees/SKILL.md +3 -1
- package/.agent-src/templates/AGENTS.md +24 -6
- package/.agent-src/templates/agent-settings.md +149 -0
- package/.agent-src/templates/roadmaps.md +11 -4
- package/.agent-src/templates/scripts/implement_ticket/__init__.py +63 -26
- package/.agent-src/templates/scripts/implement_ticket/__main__.py +8 -2
- package/.agent-src/templates/scripts/memory_lookup.py +1 -1
- package/.agent-src/templates/scripts/telemetry/__init__.py +42 -0
- package/.agent-src/templates/scripts/telemetry/aggregator.py +154 -0
- package/.agent-src/templates/scripts/telemetry/boundary.py +171 -0
- package/.agent-src/templates/scripts/telemetry/engagement.py +238 -0
- package/.agent-src/templates/scripts/telemetry/report_renderer.py +170 -0
- package/.agent-src/templates/scripts/telemetry/settings.py +112 -0
- package/.agent-src/templates/scripts/telemetry_record.py +166 -0
- package/.agent-src/templates/scripts/telemetry_report.py +161 -0
- package/.agent-src/templates/scripts/telemetry_status.py +142 -0
- package/.agent-src/templates/scripts/work_engine/__init__.py +58 -0
- package/.agent-src/templates/scripts/work_engine/__main__.py +9 -0
- package/.agent-src/templates/scripts/work_engine/cli.py +195 -0
- package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
- package/.agent-src/templates/scripts/{implement_ticket → work_engine}/delivery_state.py +10 -3
- package/.agent-src/templates/scripts/work_engine/directives/__init__.py +33 -0
- package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +98 -0
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/analyze.py +1 -1
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/implement.py +3 -3
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/memory.py +2 -2
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/plan.py +2 -2
- package/.agent-src/templates/scripts/work_engine/directives/backend/refine.py +396 -0
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/report.py +37 -5
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/test.py +2 -2
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/verify.py +2 -2
- package/.agent-src/templates/scripts/work_engine/directives/mixed/__init__.py +116 -0
- package/.agent-src/templates/scripts/work_engine/directives/mixed/contract.py +254 -0
- package/.agent-src/templates/scripts/work_engine/directives/mixed/stitch.py +229 -0
- package/.agent-src/templates/scripts/work_engine/directives/mixed/ui.py +231 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/__init__.py +113 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/_passthrough.py +44 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/apply.py +241 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/audit.py +414 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/design.py +335 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/polish.py +510 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui/review.py +468 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/__init__.py +119 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/_skipped.py +37 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/apply.py +165 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/refine.py +66 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/report.py +62 -0
- package/.agent-src/templates/scripts/work_engine/directives/ui_trivial/test.py +115 -0
- package/.agent-src/templates/scripts/work_engine/dispatcher.py +331 -0
- 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/hooks/__init__.py +54 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +32 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +103 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +44 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +42 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +50 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +49 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/directive_set_guard.py +53 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/halt_surface_audit.py +50 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/state_shape_validation.py +52 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/trace.py +84 -0
- package/.agent-src/templates/scripts/work_engine/hooks/context.py +66 -0
- package/.agent-src/templates/scripts/work_engine/hooks/events.py +44 -0
- package/.agent-src/templates/scripts/work_engine/hooks/exceptions.py +79 -0
- package/.agent-src/templates/scripts/work_engine/hooks/registry.py +60 -0
- package/.agent-src/templates/scripts/work_engine/hooks/runner.py +73 -0
- package/.agent-src/templates/scripts/work_engine/hooks/settings.py +141 -0
- package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
- package/.agent-src/templates/scripts/work_engine/intent/__init__.py +47 -0
- package/.agent-src/templates/scripts/work_engine/intent/classify.py +280 -0
- package/.agent-src/templates/scripts/work_engine/migration/__init__.py +8 -0
- package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +231 -0
- package/.agent-src/templates/scripts/{implement_ticket → work_engine}/persona_policy.py +1 -1
- package/.agent-src/templates/scripts/work_engine/resolvers/__init__.py +22 -0
- package/.agent-src/templates/scripts/work_engine/resolvers/diff.py +106 -0
- package/.agent-src/templates/scripts/work_engine/resolvers/file.py +113 -0
- package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +90 -0
- package/.agent-src/templates/scripts/work_engine/scoring/__init__.py +14 -0
- package/.agent-src/templates/scripts/work_engine/scoring/confidence.py +300 -0
- package/.agent-src/templates/scripts/work_engine/stack/__init__.py +31 -0
- package/.agent-src/templates/scripts/work_engine/stack/detect.py +187 -0
- package/.agent-src/templates/scripts/work_engine/state.py +641 -0
- package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
- package/.claude-plugin/marketplace.json +105 -2
- package/AGENTS.md +38 -8
- package/CHANGELOG.md +609 -0
- package/README.md +136 -14
- package/config/agent-settings.template.yml +45 -0
- package/config/gitignore-block.txt +4 -0
- package/docs/MIGRATION.md +122 -0
- package/docs/architecture.md +111 -35
- 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/development.md +1 -1
- package/docs/getting-started.md +3 -3
- package/docs/installation.md +124 -2
- package/docs/migrations/commands-1.15.0.md +112 -0
- package/docs/showcase.md +204 -0
- package/docs/ui-track-mental-model.md +121 -0
- package/package.json +1 -1
- package/scripts/agent-config +199 -0
- package/scripts/audit_cloud_compatibility.py +288 -0
- package/scripts/build_cloud_bundle.py +458 -0
- package/scripts/build_linear_digest.py +263 -0
- package/scripts/chat_history.py +796 -7
- package/scripts/check_compression.py +139 -0
- package/scripts/check_iron_law_prominence.py +143 -0
- package/scripts/check_md_language.py +159 -0
- package/scripts/check_portability.py +38 -0
- package/scripts/check_public_links.py +185 -0
- package/scripts/check_references.py +1 -0
- package/scripts/check_reply_consistency.py +140 -0
- package/scripts/command_suggester/__init__.py +51 -0
- package/scripts/command_suggester/cooldown.py +132 -0
- package/scripts/command_suggester/loader.py +70 -0
- package/scripts/command_suggester/match.py +180 -0
- package/scripts/command_suggester/rank.py +120 -0
- package/scripts/command_suggester/render.py +86 -0
- package/scripts/command_suggester/sanitize.py +113 -0
- package/scripts/command_suggester/settings.py +125 -0
- package/scripts/command_suggester/types.py +78 -0
- package/scripts/hooks/augment-chat-history.sh +56 -0
- package/scripts/install-hooks.sh +67 -0
- package/scripts/install.py +150 -33
- package/scripts/lint_marketplace.py +27 -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/migrate_command_suggestions.py +151 -0
- package/scripts/release.py +297 -64
- package/scripts/schemas/command.schema.json +41 -0
- package/scripts/skill_linter.py +81 -0
- package/scripts/sync_agent_settings.py +42 -12
- package/scripts/update_counts.py +10 -0
- package/templates/consumer-settings/augment-cli-hooks.json +54 -0
- package/templates/consumer-settings/claude-settings.json +55 -1
- package/.agent-src/rules/chat-history.md +0 -171
- package/.agent-src/templates/scripts/implement_ticket/cli.py +0 -171
- package/.agent-src/templates/scripts/implement_ticket/dispatcher.py +0 -134
- package/.agent-src/templates/scripts/implement_ticket/steps/__init__.py +0 -49
- package/.agent-src/templates/scripts/implement_ticket/steps/refine.py +0 -140
|
@@ -30,12 +30,13 @@ the dashboard **in the same response**.
|
|
|
30
30
|
`count_open == 0` (pure `[x]`, or `[x]` + `[~]`/`[-]`), `git mv`
|
|
31
31
|
it into `agents/roadmaps/archive/` **before** regenerating — see
|
|
32
32
|
the auto-archive decision table under "Check completion status"
|
|
33
|
-
below. A 100%-complete roadmap left in `agents/roadmaps/` makes
|
|
34
|
-
|
|
33
|
+
below. A 100%-complete roadmap left in `agents/roadmaps/` makes the
|
|
34
|
+
next reader think work is still open.
|
|
35
35
|
|
|
36
|
-
|
|
37
|
-
Batching edits in one response is fine — one final
|
|
38
|
-
replying is enough. But the response must not end
|
|
36
|
+
This is enforced by the [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md)
|
|
37
|
+
rule. Batching multiple edits in one response is fine — one final
|
|
38
|
+
regeneration before replying is enough. But the response must not end
|
|
39
|
+
without it.
|
|
39
40
|
|
|
40
41
|
## Procedure: Manage a roadmap
|
|
41
42
|
|
|
@@ -100,11 +101,13 @@ Every roadmap follows this structure:
|
|
|
100
101
|
|
|
101
102
|
## Key rules for roadmaps
|
|
102
103
|
|
|
103
|
-
### Checkboxes
|
|
104
|
+
### Checkboxes — mandatory, not decorative
|
|
104
105
|
|
|
106
|
+
- **Every active roadmap MUST contain at least one `- [ ]` per non-intro phase.** Decision tables, ICE matrices, and block-sequencing tables are valid rationale, but they do not satisfy this rule on their own — pair them with a `## Phase N` or `## Implementation Checklist` section whose checkboxes execute the decision. A roadmap without checkboxes is invisible to `agents/roadmaps-progress.md` and violates [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md) Iron Law #2.
|
|
105
107
|
- Every actionable step uses `- [ ]` (unchecked) or `- [x]` (completed).
|
|
106
108
|
- Mark steps as `[x]` immediately after completing them.
|
|
107
109
|
- Never remove completed steps — they serve as history.
|
|
110
|
+
- **Status is binary: `ready` (default, implicit) or `draft`.** New roadmaps are created **ready** unless the user explicitly says otherwise — `ready` is implicit and need not be written. A roadmap that is still being authored, awaiting upstream decisions, or capturing options without a worked plan declares `status: draft` in YAML frontmatter at the top of the file. Drafts are hidden from `agents/roadmaps-progress.md` until the flag is removed or flipped to `ready`. There are no other status values; legacy banners (`**Status: directional**`, `Status: capture-only`, `mode: feedback`) are removed.
|
|
108
111
|
|
|
109
112
|
### Phases
|
|
110
113
|
|
|
@@ -138,8 +141,15 @@ Every roadmap implicitly includes these gates (run after each step that changes
|
|
|
138
141
|
1. Ask the user for goal, context-create, and phases.
|
|
139
142
|
2. Use the template structure from `.augment/templates/roadmaps.md`.
|
|
140
143
|
3. Review with the user iteratively until approved.
|
|
141
|
-
4.
|
|
142
|
-
|
|
144
|
+
4. **Branch & release questions — at most once, only if genuinely useful.**
|
|
145
|
+
Default: stay on the current branch, no version numbers in the
|
|
146
|
+
roadmap. Only propose a separate branch when there is concrete,
|
|
147
|
+
evidence-based reason (e.g. risky migration benefits from a spike).
|
|
148
|
+
Never include release versions, deprecation dates, or git tags in
|
|
149
|
+
the roadmap text. If the user declines, do **not** re-propose during
|
|
150
|
+
`roadmap-execute`. Decline = silence. See [`scope-control`](../../rules/scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
151
|
+
5. Save with a kebab-case filename (e.g. `optimize-webhook-jobs.md`).
|
|
152
|
+
6. Regenerate the dashboard so the new roadmap is included.
|
|
143
153
|
|
|
144
154
|
### Executing a roadmap
|
|
145
155
|
|
|
@@ -266,8 +276,10 @@ Command:
|
|
|
266
276
|
./agent-config roadmap:progress-check # CI: fail if stale
|
|
267
277
|
```
|
|
268
278
|
|
|
269
|
-
The `./agent-config` wrapper
|
|
270
|
-
installer and
|
|
279
|
+
The `./agent-config` wrapper lives in the project root (written by the
|
|
280
|
+
package installer, gitignored) and delegates to the master CLI inside
|
|
281
|
+
`node_modules/@event4u/agent-config/` or `vendor/event4u/agent-config/`.
|
|
282
|
+
No global tooling required.
|
|
271
283
|
|
|
272
284
|
The dashboard is a **read-only snapshot**. Do not edit it by hand — regenerate it.
|
|
273
285
|
|
|
@@ -303,4 +315,5 @@ The dashboard is a **read-only snapshot**. Do not edit it by hand — regenerate
|
|
|
303
315
|
- Do NOT archive roadmaps with open `[ ]` items without asking the user.
|
|
304
316
|
- Do NOT delete roadmaps — always move to `archive/` or `skipped/`.
|
|
305
317
|
- Do NOT use `skipped/` as a dumping ground for partially-finished work — that is what `archive/` with deferred items is for.
|
|
306
|
-
- Do NOT assign version numbers, git tags, or release identifiers to phases. Roadmaps plan work; releases and tags are decided by the user separately.
|
|
318
|
+
- Do NOT assign version numbers, git tags, deprecation dates, or release identifiers to phases. Roadmaps plan work; releases and tags are decided by the user separately. Hard rule — see [`scope-control`](../../rules/scope-control.md#git-operations--permission-gated).
|
|
319
|
+
- Do NOT propose a branch switch while executing a roadmap. The branch question is settled at creation time; if the user already declined (or you never asked because it wasn't sensible), stay silent. See [`scope-control`](../../rules/scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
@@ -4,6 +4,8 @@ description: "Use when creating or editing a rule in .agent-src.uncompressed/rul
|
|
|
4
4
|
source: package
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
+
<!-- cloud_safe: degrade -->
|
|
8
|
+
|
|
7
9
|
# rule-writing
|
|
8
10
|
|
|
9
11
|
## When to use
|
|
@@ -100,7 +102,8 @@ the PR or split by responsibility.
|
|
|
100
102
|
→ must report **0 FAIL**.
|
|
101
103
|
* Run `bash scripts/compress.sh --sync` to regenerate `.agent-src/rules/{name}.md`.
|
|
102
104
|
* Run `python3 scripts/compress.py --generate-tools` to project into `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`.
|
|
103
|
-
* Run the full CI pipeline locally
|
|
105
|
+
* Run the full CI pipeline locally (see `Taskfile.yml` in this repo for
|
|
106
|
+
the script list) — must exit 0 except for tolerated warnings.
|
|
104
107
|
|
|
105
108
|
## Frontmatter shape
|
|
106
109
|
|
|
@@ -137,6 +140,25 @@ source: package # or project for consumer-local rules
|
|
|
137
140
|
* Do NOT skip the linter
|
|
138
141
|
* Do NOT create a rule when a guideline or skill is the right shape
|
|
139
142
|
|
|
143
|
+
## Cloud Behavior
|
|
144
|
+
|
|
145
|
+
On cloud surfaces (Claude.ai Web, Skills API) the package's
|
|
146
|
+
`scripts/skill_linter.py`, `scripts/compress.py`, and `task` runner
|
|
147
|
+
are not reachable. The skill still applies — with prose-only
|
|
148
|
+
validation:
|
|
149
|
+
|
|
150
|
+
* Emit the full rule file as a copyable Markdown block. Do not
|
|
151
|
+
attempt to write to disk.
|
|
152
|
+
* Self-check the frontmatter against the rules: `type` is `always`
|
|
153
|
+
or `auto`, `description` is trigger-shaped, `alwaysApply` matches
|
|
154
|
+
`type`.
|
|
155
|
+
* Self-check the body: under the size budget (200 lines hard,
|
|
156
|
+
120 soft), trigger sentence first, no embedded procedures.
|
|
157
|
+
* Tell the user to save under `.agent-src.uncompressed/rules/{name}.md`
|
|
158
|
+
and run `task sync && task lint-skills` locally before committing.
|
|
159
|
+
* Do not call the linter or compressor — they only run on the
|
|
160
|
+
user's machine.
|
|
161
|
+
|
|
140
162
|
## Examples
|
|
141
163
|
|
|
142
164
|
Good description (trigger-shaped, names domain + symptoms):
|
|
@@ -173,11 +173,9 @@ Present the stub as a numbered-options prompt (per `user-interaction`):
|
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
Nothing is committed without the user's pick. If the user picks *skip*,
|
|
176
|
-
record it in the commit message (`Eval stub: deferred`).
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
`php-coder/evals/triggers.json`, `eloquent/evals/triggers.json`,
|
|
180
|
-
`skill-writing/evals/triggers.json`.
|
|
176
|
+
record it in the commit message (`Eval stub: deferred`). Peer examples
|
|
177
|
+
for the expected format: `php-coder/evals/triggers.json`,
|
|
178
|
+
`eloquent/evals/triggers.json`, `skill-writing/evals/triggers.json`.
|
|
181
179
|
|
|
182
180
|
Rules / commands / guidelines do **not** get eval stubs — only skills
|
|
183
181
|
route through the top-level catalogue.
|
|
@@ -182,10 +182,10 @@ If the contribution originates from a proposal under `agents/proposals/`
|
|
|
182
182
|
run the Stage-4 gate before opening the PR:
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
|
-
|
|
185
|
+
./agent-config proposal:check agents/proposals/{slug}.md
|
|
186
186
|
```
|
|
187
187
|
|
|
188
|
-
**Hard refusal rule:** if `
|
|
188
|
+
**Hard refusal rule:** if `./agent-config proposal:check` exits non-zero, STOP —
|
|
189
189
|
do not create the branch, do not push, do not open the PR. Surface the
|
|
190
190
|
findings to the user, ask them to fix the proposal (add evidence,
|
|
191
191
|
remove TODO markers, complete required sections), then rerun.
|
|
@@ -247,7 +247,7 @@ The shared version now replaces the local override.
|
|
|
247
247
|
## Do NOT
|
|
248
248
|
|
|
249
249
|
- **Do NOT create any upstream artifact without explicit user consent** — this is the #1 rule
|
|
250
|
-
- **Do NOT open a PR if `
|
|
250
|
+
- **Do NOT open a PR if `./agent-config proposal:check` blocks** — fix the proposal first (step 6b)
|
|
251
251
|
- Do NOT edit `.augment/` in the consumer project — it's managed by the package
|
|
252
252
|
- Do NOT submit project-specific content without generalizing it first
|
|
253
253
|
- Do NOT skip the compressed version — both files are mandatory
|
|
@@ -68,10 +68,12 @@ Stop at the first match — do not ask if discovered:
|
|
|
68
68
|
|
|
69
69
|
Ask format:
|
|
70
70
|
|
|
71
|
-
> 1. `.worktrees/` — project-local, hidden
|
|
71
|
+
> 1. `.worktrees/` — project-local, hidden
|
|
72
72
|
> 2. `worktrees/` — project-local, visible
|
|
73
73
|
> 3. `~/.config/agent-config/worktrees/<project>/` — global
|
|
74
74
|
|
|
75
|
+
**Recommendation: 1 — `.worktrees/`** — project-local keeps the worktree next to the repo (easy cleanup), and the leading dot keeps it out of `ls`. Caveat: pick 3 if multiple repos must share a single worktree root.
|
|
76
|
+
|
|
75
77
|
### 3. Verify ignore-safety (project-local only)
|
|
76
78
|
|
|
77
79
|
```bash
|
|
@@ -34,12 +34,30 @@
|
|
|
34
34
|
|
|
35
35
|
### Recommended entry flow
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
37
|
+
Two entrypoints share the same engine and Option-A loop; pick by input shape:
|
|
38
|
+
|
|
39
|
+
| You have | Command | Envelope |
|
|
40
|
+
|---|---|---|
|
|
41
|
+
| Ticket id, URL, or pasted ticket payload | [`/implement-ticket`](.augment/commands/implement-ticket.md) | `input.kind="ticket"` |
|
|
42
|
+
| Free-form goal, no ticket | [`/work`](.augment/commands/work.md) | `input.kind="prompt"` |
|
|
43
|
+
|
|
44
|
+
Both drive the linear flow `refine → memory → analyze → plan → implement →
|
|
45
|
+
test → verify → report` with block-on-ambiguity semantics and no auto-git.
|
|
46
|
+
|
|
47
|
+
`/work` adds a confidence-band gate at `refine`: the
|
|
48
|
+
[`refine-prompt`](.augment/skills/refine-prompt/SKILL.md) skill scores the
|
|
49
|
+
prompt on five dimensions and the engine proceeds **silently** on `high`,
|
|
50
|
+
halts with an **assumptions report** on `medium`, or halts with **one
|
|
51
|
+
clarifying question** on `low` (per the `ask-when-uncertain` Iron Law).
|
|
52
|
+
UI-shaped prompts route through the product UI track (`directive_set`
|
|
53
|
+
`ui` / `ui-trivial` / `mixed`) — `audit → design → apply → review →
|
|
54
|
+
polish` with a hard audit gate before any `apply`.
|
|
55
|
+
|
|
56
|
+
Persona comes from `.agent-settings.yml` (`roles.active_role`). Use
|
|
57
|
+
`/commit` and `/create-pr` explicitly after the delivery report. The two
|
|
58
|
+
flows are mutually exclusive at the state-file level: one
|
|
59
|
+
`.work-state.json` carries one envelope at a time; the engine refuses to
|
|
60
|
+
switch mid-flight.
|
|
43
61
|
|
|
44
62
|
### Multi-Agent Support
|
|
45
63
|
|
|
@@ -84,6 +84,15 @@ personal:
|
|
|
84
84
|
# Personal preference — each developer decides for themselves.
|
|
85
85
|
pr_comment_bot_icon: false
|
|
86
86
|
|
|
87
|
+
# Autonomous execution — suppress trivial workflow questions (on, off, auto)
|
|
88
|
+
# on = act on the obvious next step; never ask "Step 2 or 3?", "should I commit?", etc.
|
|
89
|
+
# off = ask trivial workflow questions (legacy behavior)
|
|
90
|
+
# auto = behaves like 'off' until the user says "arbeite selbstständig" / "work autonomously"
|
|
91
|
+
# in the conversation, then switches to 'on' for the rest of the chat.
|
|
92
|
+
# Blocking decisions (security, scope expansion, push/merge/branch/PR) are NEVER suppressed.
|
|
93
|
+
# See rules/autonomous-execution.md for the full definition.
|
|
94
|
+
autonomy: auto
|
|
95
|
+
|
|
87
96
|
# --- Project / team preferences ---
|
|
88
97
|
project:
|
|
89
98
|
# Path to the PR template file (relative to project root)
|
|
@@ -132,6 +141,74 @@ chat_history:
|
|
|
132
141
|
# Overflow behavior: rotate (drop oldest) | compress (summarize)
|
|
133
142
|
on_overflow: rotate
|
|
134
143
|
|
|
144
|
+
# Heartbeat marker visibility: on | off | hybrid
|
|
145
|
+
# on — print marker every reply (~20 tokens/reply, legacy)
|
|
146
|
+
# off — never print (zero tokens, no drift signal)
|
|
147
|
+
# hybrid — print only on drift (missing/foreign/returning); silent otherwise
|
|
148
|
+
# YAML 1.1 booleanizes bare on/off — both are accepted, no quoting needed.
|
|
149
|
+
heartbeat: hybrid
|
|
150
|
+
|
|
151
|
+
# Population path: hook | checkpoint | manual
|
|
152
|
+
# hook — platform fires lifecycle hooks; agent observes only
|
|
153
|
+
# (Claude Code, Augment CLI, Cursor 1.7+, Cline non-Windows,
|
|
154
|
+
# Windsurf, Gemini CLI). scripts/install.py wires hooks.
|
|
155
|
+
# checkpoint — agent invokes /chat-history-checkpoint at phase boundaries
|
|
156
|
+
# (Augment IDE plugin, Cursor < 1.7, Cline on Windows).
|
|
157
|
+
# Cooperative three-gate Iron Law applies.
|
|
158
|
+
# manual — rule is inert (cloud surfaces). Persistence is local-only.
|
|
159
|
+
# Default `checkpoint` is the safest cooperative fallback. HOOK platforms
|
|
160
|
+
# set this to `hook` automatically when scripts/install.py merges the
|
|
161
|
+
# platform's settings file.
|
|
162
|
+
path: checkpoint
|
|
163
|
+
|
|
164
|
+
# --- Work-engine hooks ---
|
|
165
|
+
#
|
|
166
|
+
# Lifecycle hook surface of the `work_engine` Python engine
|
|
167
|
+
# (scripts/work_engine/). Hooks observe, validate, or persist around the
|
|
168
|
+
# six CLI events (before_load, after_load, before_dispatch,
|
|
169
|
+
# after_dispatch, before_save, after_save) and the dispatcher events
|
|
170
|
+
# (before_step, after_step, on_halt). See agents/contexts/
|
|
171
|
+
# work-engine-hooks.md for the full lifecycle and registration contract.
|
|
172
|
+
#
|
|
173
|
+
# Default-off by construction: when the `hooks:` block is absent the
|
|
174
|
+
# registry stays empty and golden-replay flows are byte-stable. Enable
|
|
175
|
+
# the master switch to opt in; per-hook flags then control individual
|
|
176
|
+
# registration.
|
|
177
|
+
hooks:
|
|
178
|
+
# Master switch — when false (default) the registry stays empty
|
|
179
|
+
# regardless of the per-hook fields below.
|
|
180
|
+
enabled: false
|
|
181
|
+
|
|
182
|
+
# TraceHook — emits per-event trace lines on stderr. Useful for
|
|
183
|
+
# debugging engine flow; off by default because it is noisy.
|
|
184
|
+
trace: false
|
|
185
|
+
|
|
186
|
+
# HaltSurfaceAuditHook — defense-in-depth check that every halt
|
|
187
|
+
# surfaced by the dispatcher carries the expected shape. Cheap.
|
|
188
|
+
halt_surface_audit: true
|
|
189
|
+
|
|
190
|
+
# StateShapeValidationHook — re-runs the state schema validator on
|
|
191
|
+
# AFTER_LOAD and BEFORE_SAVE. Cheap, catches drift between the
|
|
192
|
+
# in-memory state and the persisted JSON.
|
|
193
|
+
state_shape_validation: true
|
|
194
|
+
|
|
195
|
+
# DirectiveSetGuardHook — verifies the directive-set resolved by the
|
|
196
|
+
# dispatcher matches the input envelope's intent. Cheap, catches
|
|
197
|
+
# routing drift.
|
|
198
|
+
directive_set_guard: true
|
|
199
|
+
|
|
200
|
+
# Chat-history hooks — populate .agent-chat-history structurally from
|
|
201
|
+
# the engine. Gated by BOTH this block AND the global
|
|
202
|
+
# chat_history.enabled above; either off → no chat-history hook
|
|
203
|
+
# registers. Keep both on for the HOOK path; flip either off to fall
|
|
204
|
+
# back to the cooperative CHECKPOINT path.
|
|
205
|
+
chat_history:
|
|
206
|
+
enabled: true
|
|
207
|
+
# Override path to the chat-history CLI (defaults to
|
|
208
|
+
# scripts/chat_history.py). Only set this when the script lives
|
|
209
|
+
# outside the standard location.
|
|
210
|
+
# script: scripts/chat_history.py
|
|
211
|
+
|
|
135
212
|
# --- Optional pipelines ---
|
|
136
213
|
pipelines:
|
|
137
214
|
# Skill improvement pipeline (true, false)
|
|
@@ -193,6 +270,58 @@ onboarding:
|
|
|
193
270
|
# Set to true automatically by /onboard at the end. Flip to false
|
|
194
271
|
# if you want to re-run the flow.
|
|
195
272
|
onboarded: false
|
|
273
|
+
|
|
274
|
+
# --- Command suggestion (numbered-options shortcut finder) ---
|
|
275
|
+
#
|
|
276
|
+
# When the user's free-form prompt matches an eligible slash command,
|
|
277
|
+
# the agent surfaces a numbered-options block with the recommendation
|
|
278
|
+
# plus an always-present "run as-is" option. The suggestion layer
|
|
279
|
+
# never auto-executes — the user picks. See `rules/command-suggestion.md`.
|
|
280
|
+
commands:
|
|
281
|
+
suggestion:
|
|
282
|
+
# Master switch (true, false). `false` = the layer is silent;
|
|
283
|
+
# explicit `/commands` still work as today.
|
|
284
|
+
enabled: true
|
|
285
|
+
# Minimum match score (0.0–1.0) before a suggestion surfaces.
|
|
286
|
+
confidence_floor: 0.6
|
|
287
|
+
# Cooldown in seconds between re-suggestions of the same
|
|
288
|
+
# (command, evidence) pair. Default 600 = 10m.
|
|
289
|
+
cooldown_seconds: 600
|
|
290
|
+
# Max number of command suggestions before the as-is option.
|
|
291
|
+
# The as-is option is always extra (total rendered = max_options + 1).
|
|
292
|
+
max_options: 4
|
|
293
|
+
# Commands to never suggest. Still work when typed explicitly.
|
|
294
|
+
blocklist: []
|
|
295
|
+
|
|
296
|
+
# --- Telemetry (artefact engagement, default-off) ---
|
|
297
|
+
#
|
|
298
|
+
# Records — at task / phase-step boundaries — which artefacts (skills,
|
|
299
|
+
# rules, commands, guidelines, personas) the agent consulted and
|
|
300
|
+
# applied. Local only, append-only JSONL, never reaches a consumer
|
|
301
|
+
# repo (gitignored). Maintainer-targeted feature; consumers leave it
|
|
302
|
+
# off. See `docs/contracts/artifact-engagement-flow.md` (once Phase 3
|
|
303
|
+
# of road-to-artifact-engagement-telemetry lands).
|
|
304
|
+
telemetry:
|
|
305
|
+
artifact_engagement:
|
|
306
|
+
# Master switch. `false` (default) produces zero file IO and zero
|
|
307
|
+
# token cost. Flip to `true` only as a maintainer; the very first
|
|
308
|
+
# `record` call prints a one-line stderr warning to make accidental
|
|
309
|
+
# enables visible.
|
|
310
|
+
enabled: false
|
|
311
|
+
# `task` = one event per /implement-ticket or /work run.
|
|
312
|
+
# `phase-step` = one event per refine|memory|analyze|plan|implement|test|verify|report step.
|
|
313
|
+
# `tool-call` = one event per tool invocation; expensive, opt-in only.
|
|
314
|
+
granularity: task
|
|
315
|
+
# Which categories the agent records. Both default to `true`;
|
|
316
|
+
# flip individually if a maintainer wants applied-only or
|
|
317
|
+
# consulted-only data.
|
|
318
|
+
record:
|
|
319
|
+
consulted: true
|
|
320
|
+
applied: true
|
|
321
|
+
output:
|
|
322
|
+
# Append-only JSONL log. Path is relative to the project root.
|
|
323
|
+
# Always gitignored (see config/gitignore-block.txt).
|
|
324
|
+
path: .agent-engagement.jsonl
|
|
196
325
|
```
|
|
197
326
|
|
|
198
327
|
## Settings Reference
|
|
@@ -213,6 +342,7 @@ lives under `personal:` in YAML.
|
|
|
213
342
|
| `personal.minimal_output` | `true`, `false` | `true` | When `true`: short bullet points during work, concise summary at end. When `false`: verbose explanations. |
|
|
214
343
|
| `personal.play_by_play` | `true`, `false` | `false` | When `true`: share intermediate findings during investigation. When `false`: work silently, report only the conclusion. |
|
|
215
344
|
| `personal.pr_comment_bot_icon` | `true`, `false` | `false` | Prefix PR comment replies with 🤖 to indicate bot-authored replies. Personal preference — each developer decides. |
|
|
345
|
+
| `personal.autonomy` | `on`, `off`, `auto` | `auto` | Suppress trivial workflow questions and act on the obvious next step. `auto` defaults to `off` but flips to `on` after a prose opt-in like "arbeite selbstständig". `on` suppresses trivial questions unconditionally. Blocking decisions (security, scope expansion, push/merge/branch/PR/tag) are never suppressed. See `rules/autonomous-execution.md`. |
|
|
216
346
|
| `project.pr_template` | file path | `.github/pull_request_template.md` | Path to PR template file. Read this instead of searching for it. |
|
|
217
347
|
| `project.upstream_repo` | `org/repo` | _(empty)_ | Target repository for universal improvement PRs (e.g., `org/agent-config`). |
|
|
218
348
|
| `project.improvement_pr_branch_prefix` | string | `improve/agent-` | Branch prefix for agent improvement PRs. |
|
|
@@ -222,6 +352,15 @@ lives under `personal:` in YAML.
|
|
|
222
352
|
| `chat_history.frequency` | `per_turn`, `per_phase`, `per_tool` | per profile | Logging granularity. Defaults: `minimal`→`per_turn`, `balanced`→`per_phase`, `full`→`per_tool`. |
|
|
223
353
|
| `chat_history.max_size_kb` | integer | per profile | Max file size before overflow handling. Defaults: `minimal`→`128`, `balanced`→`256`, `full`→`512`. |
|
|
224
354
|
| `chat_history.on_overflow` | `rotate`, `compress` | per profile | On overflow: `rotate` drops oldest entries; `compress` marks the file for summarization on the next turn. Defaults: `minimal`/`balanced`→`rotate`, `full`→`compress`. |
|
|
355
|
+
| `chat_history.heartbeat` | `on`, `off`, `hybrid` | `hybrid` | Visibility of the `📒 chat-history:` marker. `on` = every reply (~20 tokens), `off` = silent, `hybrid` = print only on drift states (`missing`/`foreign`/`returning`). YAML `on`/`off` accepted bare. |
|
|
356
|
+
| `chat_history.path` | `hook`, `checkpoint`, `manual` | `checkpoint` | Population path. `hook` = platform fires lifecycle hooks; `checkpoint` = agent invokes `/chat-history-checkpoint` at phase boundaries; `manual` = rule inert (cloud). `scripts/install.py` flips this to `hook` when the platform's hook config is deployed. See [`agents/contexts/chat-history-platform-hooks.md`](../../../agents/contexts/chat-history-platform-hooks.md). |
|
|
357
|
+
| `hooks.enabled` | `true`, `false` | `false` | Master switch for the work-engine hook layer. When `false` (default) the registry stays empty and golden replay is byte-stable. See [`agents/contexts/work-engine-hooks.md`](../../../agents/contexts/work-engine-hooks.md). |
|
|
358
|
+
| `hooks.trace` | `true`, `false` | `false` | Emit per-event trace lines on stderr. Useful for debugging; off by default because it is noisy. |
|
|
359
|
+
| `hooks.halt_surface_audit` | `true`, `false` | `true` | Defense-in-depth check that every halt surfaced by the dispatcher carries the expected shape. Cheap. |
|
|
360
|
+
| `hooks.state_shape_validation` | `true`, `false` | `true` | Re-run the state schema validator on `AFTER_LOAD` and `BEFORE_SAVE`. Cheap, catches drift. |
|
|
361
|
+
| `hooks.directive_set_guard` | `true`, `false` | `true` | Verify the dispatcher-resolved directive set matches the input envelope intent. Cheap, catches routing drift. |
|
|
362
|
+
| `hooks.chat_history.enabled` | `true`, `false` | `true` | Register the four chat-history hooks (turn-check, append, halt-append, heartbeat). Gated by **both** this flag AND `chat_history.enabled`; either off → no chat-history hook registers. |
|
|
363
|
+
| `hooks.chat_history.script` | path | `scripts/chat_history.py` | Override path to the chat-history CLI. Set only when the script lives outside the standard location. |
|
|
225
364
|
| `pipelines.skill_improvement` | `true`, `false` | `true` | When `true`: propose learning capture after meaningful tasks. When `false`: silent. Included in every profile except `custom`. |
|
|
226
365
|
| `subagents.implementer_model` | model alias or empty | _(empty)_ | Model for implementer subagents. Empty = same tier as session model. See [subagent-configuration](../contexts/subagent-configuration.md). |
|
|
227
366
|
| `subagents.judge_model` | model alias or empty | _(empty)_ | Model for judge subagents. Empty = one tier above implementer (opus if sonnet, sonnet if haiku). |
|
|
@@ -231,6 +370,16 @@ lives under `personal:` in YAML.
|
|
|
231
370
|
| `personas.override` | list of persona ids | `[]` | Developer-local override of the team default lens cast. Empty = inherit `personas.default` from `.agent-project-settings.yml`. See [`layered-settings`](../guidelines/agent-infra/layered-settings.md). |
|
|
232
371
|
| `personas.ignore` | list of persona ids | `[]` | Persona ids dropped from the default cast locally. Ignored personas stay invokable via `--personas=<id>`. |
|
|
233
372
|
| `onboarding.onboarded` | `true`, `false` | `false` | Whether `/onboard` has run on this project. The `onboarding-gate` rule prompts for `/onboard` when this is `false`. Missing entirely = legacy project, treated as onboarded. |
|
|
373
|
+
| `commands.suggestion.enabled` | `true`, `false` | `true` | Master switch for the command-suggestion layer. `false` = the layer is silent; explicit `/commands` still work. See `rules/command-suggestion.md`. |
|
|
374
|
+
| `commands.suggestion.confidence_floor` | `0.0`–`1.0` | `0.6` | Minimum match score before a suggestion surfaces. Per-command frontmatter (`suggestion.confidence_floor`) overrides this global floor. |
|
|
375
|
+
| `commands.suggestion.cooldown_seconds` | integer | `600` | Cooldown between re-suggestions of the same `(command, evidence)` pair. `600` = 10m. |
|
|
376
|
+
| `commands.suggestion.max_options` | integer | `4` | Max number of command suggestions before the always-present "run as-is" option (total rendered = `max_options + 1`). |
|
|
377
|
+
| `commands.suggestion.blocklist` | list of command names | `[]` | Commands that never appear as a suggestion. They still work when typed explicitly. |
|
|
378
|
+
| `telemetry.artifact_engagement.enabled` | `true`, `false` | `false` | Master switch for the artefact engagement log. Default-off; zero file IO and zero token cost when `false`. Maintainer-targeted; consumers leave it off. |
|
|
379
|
+
| `telemetry.artifact_engagement.granularity` | `task`, `phase-step`, `tool-call` | `task` | Boundary at which events are recorded. `tool-call` is expensive — opt-in only. |
|
|
380
|
+
| `telemetry.artifact_engagement.record.consulted` | `true`, `false` | `true` | When `true`: record artefacts loaded into context. |
|
|
381
|
+
| `telemetry.artifact_engagement.record.applied` | `true`, `false` | `true` | When `true`: record artefacts cited or driving a decision. |
|
|
382
|
+
| `telemetry.artifact_engagement.output.path` | path | `.agent-engagement.jsonl` | Append-only JSONL log path, relative to the project root. Always gitignored. |
|
|
234
383
|
|
|
235
384
|
### Rename-Map (migration)
|
|
236
385
|
|
|
@@ -7,7 +7,8 @@ Templates for roadmap files stored in `agents/roadmaps/` or `app/Modules/{Module
|
|
|
7
7
|
## Rules for Roadmaps
|
|
8
8
|
|
|
9
9
|
1. **Be precise and concise.** Aim for 500–1000 lines max. If larger, split into multiple files.
|
|
10
|
-
2. **
|
|
10
|
+
2. **Checkboxes are mandatory, not decorative.** Every active roadmap MUST contain at least one `- [ ]` per non-intro phase. Decision tables, ICE matrices, and block-sequencing tables capture the *why*; checkboxes capture the *what to do next*. A roadmap without checkboxes is invisible to `agents/roadmaps-progress.md` — the dashboard cannot count it, the next reader thinks no work is planned. Enforced by [`roadmap-progress-sync`](../rules/roadmap-progress-sync.md) Iron Law #2.
|
|
11
|
+
- **Status is binary: `ready` (default) or `draft`.** New roadmaps are created **ready** unless the user explicitly says draft — `ready` is implicit and need not be written. Drafts declare it via frontmatter at the top of the file (`---\nstatus: draft\n---`) and are hidden from the dashboard until the flag is removed or flipped to `ready`. Use `draft` while the roadmap is still being authored, while waiting for upstream decisions, or as a capture-only synthesis that has not been promoted to executable phases. There are no other status values; legacy banners like `**Status: directional**` are removed.
|
|
11
12
|
3. **State the goal first.** One sentence at the top — what is the outcome?
|
|
12
13
|
4. **List prerequisites** — what must exist or be running before starting.
|
|
13
14
|
5. **Reference existing code** — point to files, classes, or modules.
|
|
@@ -24,11 +25,17 @@ Templates for roadmap files stored in `agents/roadmaps/` or `app/Modules/{Module
|
|
|
24
25
|
- `agents/roadmaps/skipped/` — decision against pursuit; typically 0 items `[x]` (superseded, scope rejected)
|
|
25
26
|
|
|
26
27
|
See the `roadmap-management` skill for the exact trigger matrix and user-confirmation flow.
|
|
27
|
-
|
|
28
28
|
13. **No tags, releases, or version numbers.** Roadmaps describe work, not shipping.
|
|
29
29
|
Never assign version suffixes to phases (`Phase 1 — v1.8.0`), never write
|
|
30
|
-
"Target release: X.Y.Z", never plan git tags
|
|
31
|
-
belong to the user and are taken outside the roadmap.
|
|
30
|
+
"Target release: X.Y.Z", never plan git tags or deprecation dates. Release
|
|
31
|
+
and tag decisions belong to the user and are taken outside the roadmap.
|
|
32
|
+
This is enforced by [`scope-control`](../rules/scope-control.md#git-operations--permission-gated).
|
|
33
|
+
14. **No automatic branch switches mid-roadmap.** Roadmap work runs on the
|
|
34
|
+
branch the user is on. If a separate branch (spike, hotfix, experiment)
|
|
35
|
+
would be genuinely useful, the agent may propose it **once** while
|
|
36
|
+
creating the roadmap — not during execution. Default: stay on the
|
|
37
|
+
current branch. If the user declines, the topic is closed for this
|
|
38
|
+
roadmap. See [`scope-control`](../rules/scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
32
39
|
|
|
33
40
|
---
|
|
34
41
|
|
|
@@ -1,40 +1,77 @@
|
|
|
1
|
-
"""
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
``agents/contexts/implement-ticket-flow.md``):
|
|
12
|
-
|
|
13
|
-
- Runtime is Python 3.10+.
|
|
14
|
-
- The dispatcher is linear, not a DAG. Eight fixed steps, fixed order.
|
|
15
|
-
- ``DeliveryState`` is the only object shared between steps — no
|
|
16
|
-
hidden state, no side channels.
|
|
17
|
-
- Every step terminates in ``success | blocked | partial``. ``blocked``
|
|
18
|
-
and ``partial`` halt the flow and surface numbered questions.
|
|
19
|
-
- The dispatcher never calls git, writes commits, or opens PRs.
|
|
1
|
+
"""``implement_ticket`` — deprecated shim, retained for one release.
|
|
2
|
+
|
|
3
|
+
The engine moved to :mod:`work_engine` in R1 Phase 3. This module
|
|
4
|
+
re-exports the public surface so existing imports keep working, but
|
|
5
|
+
emits :class:`DeprecationWarning` on import. The Golden-Transcript
|
|
6
|
+
freeze-guard pins ``./agent-config implement-ticket`` against the
|
|
7
|
+
locked baseline; the shim keeps that path byte-stable while internal
|
|
8
|
+
callers migrate to ``work_engine``.
|
|
9
|
+
|
|
10
|
+
Remove after the next public release of this package.
|
|
20
11
|
"""
|
|
21
12
|
from __future__ import annotations
|
|
22
13
|
|
|
23
|
-
|
|
14
|
+
import sys as _sys
|
|
15
|
+
import warnings as _warnings
|
|
16
|
+
|
|
17
|
+
_warnings.warn(
|
|
18
|
+
"implement_ticket has moved to work_engine; importing implement_ticket "
|
|
19
|
+
"is deprecated and will be removed in a future release. Update imports "
|
|
20
|
+
"to `from work_engine import …`.",
|
|
21
|
+
DeprecationWarning,
|
|
22
|
+
stacklevel=2,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
# Register submodule aliases so `from implement_ticket.steps.plan import …`
|
|
26
|
+
# and friends keep resolving to the work_engine implementation. The legacy
|
|
27
|
+
# package no longer ships these submodules on disk; sys.modules entries
|
|
28
|
+
# keep dotted-path imports working until the shim is removed.
|
|
29
|
+
import work_engine as _we_pkg # noqa: E402
|
|
30
|
+
import work_engine.cli as _we_cli # noqa: E402
|
|
31
|
+
import work_engine.delivery_state as _we_delivery_state # noqa: E402
|
|
32
|
+
import work_engine.dispatcher as _we_dispatcher # noqa: E402
|
|
33
|
+
import work_engine.persona_policy as _we_persona_policy # noqa: E402
|
|
34
|
+
import work_engine.directives.backend as _we_steps # noqa: E402
|
|
35
|
+
from work_engine.directives.backend import ( # noqa: E402
|
|
36
|
+
analyze as _we_step_analyze,
|
|
37
|
+
implement as _we_step_implement,
|
|
38
|
+
memory as _we_step_memory,
|
|
39
|
+
plan as _we_step_plan,
|
|
40
|
+
refine as _we_step_refine,
|
|
41
|
+
report as _we_step_report,
|
|
42
|
+
test as _we_step_test,
|
|
43
|
+
verify as _we_step_verify,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
_sys.modules.setdefault("implement_ticket.cli", _we_cli)
|
|
47
|
+
_sys.modules.setdefault("implement_ticket.delivery_state", _we_delivery_state)
|
|
48
|
+
_sys.modules.setdefault("implement_ticket.dispatcher", _we_dispatcher)
|
|
49
|
+
_sys.modules.setdefault("implement_ticket.persona_policy", _we_persona_policy)
|
|
50
|
+
_sys.modules.setdefault("implement_ticket.steps", _we_steps)
|
|
51
|
+
_sys.modules.setdefault("implement_ticket.steps.analyze", _we_step_analyze)
|
|
52
|
+
_sys.modules.setdefault("implement_ticket.steps.implement", _we_step_implement)
|
|
53
|
+
_sys.modules.setdefault("implement_ticket.steps.memory", _we_step_memory)
|
|
54
|
+
_sys.modules.setdefault("implement_ticket.steps.plan", _we_step_plan)
|
|
55
|
+
_sys.modules.setdefault("implement_ticket.steps.refine", _we_step_refine)
|
|
56
|
+
_sys.modules.setdefault("implement_ticket.steps.report", _we_step_report)
|
|
57
|
+
_sys.modules.setdefault("implement_ticket.steps.test", _we_step_test)
|
|
58
|
+
_sys.modules.setdefault("implement_ticket.steps.verify", _we_step_verify)
|
|
59
|
+
|
|
60
|
+
from work_engine import ( # noqa: E402,F401 — re-export for backwards compat
|
|
24
61
|
AGENT_DIRECTIVE_PREFIX,
|
|
62
|
+
DEFAULT_PERSONA,
|
|
63
|
+
DEFAULT_STATE_FILE,
|
|
25
64
|
DeliveryState,
|
|
26
65
|
Outcome,
|
|
66
|
+
PersonaPolicy,
|
|
67
|
+
STEP_ORDER,
|
|
27
68
|
Step,
|
|
28
69
|
StepResult,
|
|
29
70
|
agent_directive,
|
|
71
|
+
dispatch,
|
|
30
72
|
is_agent_directive,
|
|
31
|
-
)
|
|
32
|
-
from .cli import DEFAULT_STATE_FILE, main
|
|
33
|
-
from .dispatcher import STEP_ORDER, dispatch
|
|
34
|
-
from .persona_policy import (
|
|
35
|
-
DEFAULT_PERSONA,
|
|
36
|
-
PersonaPolicy,
|
|
37
73
|
known_personas,
|
|
74
|
+
main,
|
|
38
75
|
resolve_policy,
|
|
39
76
|
)
|
|
40
77
|
|
|
@@ -1,9 +1,15 @@
|
|
|
1
|
-
"""
|
|
1
|
+
"""Deprecated CLI entry point — delegates to :mod:`work_engine`.
|
|
2
|
+
|
|
3
|
+
``python3 -m implement_ticket`` still works because the Golden-Transcript
|
|
4
|
+
freeze-guard pins that invocation. Internally it forwards to
|
|
5
|
+
``work_engine.cli.main`` after emitting a ``DeprecationWarning`` from
|
|
6
|
+
the package ``__init__``.
|
|
7
|
+
"""
|
|
2
8
|
from __future__ import annotations
|
|
3
9
|
|
|
4
10
|
import sys
|
|
5
11
|
|
|
6
|
-
from .cli import main
|
|
12
|
+
from work_engine.cli import main
|
|
7
13
|
|
|
8
14
|
if __name__ == "__main__":
|
|
9
15
|
sys.exit(main())
|
|
@@ -246,7 +246,7 @@ def _apply_conflict_rule(
|
|
|
246
246
|
# says retrieval should route through `@event4u/agent-memory`. The package
|
|
247
247
|
# CLI is purely **semantic** (`memory retrieve <query> --type T …`); the
|
|
248
248
|
# shared `retrieve(types, keys, …)` API is **key-based**. The hybrid
|
|
249
|
-
# resolution agreed in `
|
|
249
|
+
# resolution agreed in `docs/contracts/agent-memory-contract.md` synthesises
|
|
250
250
|
# `keys` into a single natural-language query for the package call, while
|
|
251
251
|
# the file fallback continues to do glob/substring matching on the same
|
|
252
252
|
# keys. Both legs land in the same `Hit` shape so the conflict rule can
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""``telemetry`` — artefact engagement recording (default-off).
|
|
2
|
+
|
|
3
|
+
The package owns the local-only engagement log
|
|
4
|
+
(``.agent-engagement.jsonl``) that records, at task boundaries, which
|
|
5
|
+
artefacts (skills, rules, commands, guidelines, personas) the agent
|
|
6
|
+
``consulted`` (loaded into context) and ``applied`` (cited or directly
|
|
7
|
+
drove a decision).
|
|
8
|
+
|
|
9
|
+
Architectural constraints (from
|
|
10
|
+
``agents/roadmaps/road-to-artifact-engagement-telemetry.md`` Phase 1):
|
|
11
|
+
|
|
12
|
+
- Default-off. ``telemetry.artifact_engagement.enabled: false`` in
|
|
13
|
+
``.agent-settings.yml`` produces zero file IO and zero token cost.
|
|
14
|
+
- Local only. No server-side aggregation, no cross-repo sync.
|
|
15
|
+
- ID-only payloads. No paths, no file contents, no prompts, no
|
|
16
|
+
secrets ever reach the log.
|
|
17
|
+
- Append-only JSONL. One event per task / phase-step boundary.
|
|
18
|
+
- Strict schema. Unknown artefact kinds are rejected.
|
|
19
|
+
"""
|
|
20
|
+
from __future__ import annotations
|
|
21
|
+
|
|
22
|
+
from .engagement import (
|
|
23
|
+
ALLOWED_BOUNDARY_KINDS,
|
|
24
|
+
ALLOWED_KINDS,
|
|
25
|
+
SCHEMA_VERSION,
|
|
26
|
+
EngagementEvent,
|
|
27
|
+
EngagementSchemaError,
|
|
28
|
+
append_event,
|
|
29
|
+
now_utc_iso,
|
|
30
|
+
parse_event,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
__all__ = [
|
|
34
|
+
"ALLOWED_BOUNDARY_KINDS",
|
|
35
|
+
"ALLOWED_KINDS",
|
|
36
|
+
"SCHEMA_VERSION",
|
|
37
|
+
"EngagementEvent",
|
|
38
|
+
"EngagementSchemaError",
|
|
39
|
+
"append_event",
|
|
40
|
+
"now_utc_iso",
|
|
41
|
+
"parse_event",
|
|
42
|
+
]
|