@event4u/agent-config 1.13.0 → 1.14.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 +3 -0
- 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 +5 -1
- 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 +5 -0
- package/.agent-src/commands/chat-history-resume.md +5 -0
- package/.agent-src/commands/chat-history.md +5 -0
- package/.agent-src/commands/check-current-md.md +126 -0
- package/.agent-src/commands/commit-in-chunks.md +98 -0
- package/.agent-src/commands/commit.md +4 -0
- package/.agent-src/commands/compress.md +3 -0
- 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 +3 -0
- 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 +24 -0
- package/.agent-src/commands/optimize-agents.md +4 -0
- package/.agent-src/commands/optimize-augmentignore.md +3 -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 +4 -1
- package/.agent-src/commands/review-changes.md +4 -0
- package/.agent-src/commands/review-routing.md +4 -0
- package/.agent-src/commands/roadmap-create.md +7 -0
- package/.agent-src/commands/roadmap-execute.md +12 -1
- package/.agent-src/commands/rule-compliance-audit.md +4 -0
- package/.agent-src/commands/set-cost-profile.md +3 -0
- package/.agent-src/commands/sync-agent-settings.md +3 -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 +4 -0
- 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 +8 -0
- package/.agent-src/rules/autonomous-execution.md +158 -0
- package/.agent-src/rules/chat-history.md +147 -118
- package/.agent-src/rules/cli-output-handling.md +26 -3
- package/.agent-src/rules/command-suggestion.md +133 -0
- package/.agent-src/rules/commit-policy.md +99 -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 +81 -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 +103 -30
- package/.agent-src/rules/scope-control.md +42 -1
- package/.agent-src/rules/size-enforcement.md +1 -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 +82 -50
- package/.agent-src/scripts/update_roadmap_progress.py +17 -5
- package/.agent-src/skills/blade-ui/SKILL.md +30 -5
- package/.agent-src/skills/command-routing/SKILL.md +32 -0
- package/.agent-src/skills/command-writing/SKILL.md +41 -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 +187 -0
- package/.agent-src/skills/fe-design/SKILL.md +72 -60
- 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 +30 -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 +2 -4
- package/.agent-src/skills/roadmap-management/SKILL.md +10 -3
- package/.agent-src/skills/rule-writing/SKILL.md +23 -1
- package/.agent-src/skills/skill-writing/SKILL.md +1 -3
- package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
- 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 +8 -2
- 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/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 +592 -0
- package/.agent-src/templates/scripts/{implement_ticket → work_engine}/delivery_state.py +7 -0
- 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 +2 -2
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/memory.py +1 -1
- package/.agent-src/templates/scripts/{implement_ticket/steps → work_engine/directives/backend}/plan.py +1 -1
- 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 +36 -4
- 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/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/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 +199 -0
- 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/.claude-plugin/marketplace.json +105 -2
- package/AGENTS.md +36 -8
- package/CHANGELOG.md +534 -0
- package/README.md +125 -4
- package/config/agent-settings.template.yml +45 -0
- package/config/gitignore-block.txt +4 -0
- package/docs/architecture.md +28 -1
- package/docs/development.md +1 -1
- package/docs/getting-started.md +2 -2
- package/docs/installation.md +86 -0
- package/docs/showcase.md +204 -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 +36 -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/migrate_command_suggestions.py +151 -0
- package/scripts/schemas/command.schema.json +41 -0
- package/scripts/skill_linter.py +67 -0
- package/scripts/sync_agent_settings.py +42 -12
- package/templates/consumer-settings/augment-cli-hooks.json +54 -0
- package/templates/consumer-settings/claude-settings.json +55 -1
- 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
- /package/.agent-src/templates/scripts/{implement_ticket → work_engine}/persona_policy.py +0 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "refine-prompt"
|
|
3
|
+
description: "Reconstruct a free-form prompt into actionable AC + assumptions + confidence band before the engine plans — '/work \"…\"', 'baue X', 'ist der Prompt klar genug für die Engine?'."
|
|
4
|
+
personas:
|
|
5
|
+
- developer
|
|
6
|
+
- senior-engineer
|
|
7
|
+
- ai-agent
|
|
8
|
+
source: package
|
|
9
|
+
execution:
|
|
10
|
+
type: assisted
|
|
11
|
+
handler: internal
|
|
12
|
+
allowed_tools: []
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Refine Prompt
|
|
16
|
+
|
|
17
|
+
> Move a free-form prompt from "raw text" to "engine-ready" in one run.
|
|
18
|
+
> Produces reconstructed acceptance criteria, explicit assumptions,
|
|
19
|
+
> and a confidence band that decides whether the engine proceeds
|
|
20
|
+
> silently, halts for confirmation, or refuses to plan.
|
|
21
|
+
>
|
|
22
|
+
> Sibling of [`refine-ticket`](../refine-ticket/SKILL.md) — same
|
|
23
|
+
> reconstruction-of-intent pattern, different input shape. Tickets
|
|
24
|
+
> arrive structured (id, title, AC); prompts arrive as one string.
|
|
25
|
+
|
|
26
|
+
## When to use
|
|
27
|
+
|
|
28
|
+
- The user invokes `/work "<prompt>"` or pastes a free-form request.
|
|
29
|
+
- The dispatcher hits `input.kind="prompt"` in the `refine` step.
|
|
30
|
+
- A prompt looks ambiguous, broad, or scope-undefined and the user
|
|
31
|
+
asks "ist das klar genug, um loszulegen?".
|
|
32
|
+
- Before any plan/apply step on prompt-driven work — never after.
|
|
33
|
+
|
|
34
|
+
## When NOT to use (near-misses)
|
|
35
|
+
|
|
36
|
+
| Phrasing | Route to |
|
|
37
|
+
|---|---|
|
|
38
|
+
| "refine this ticket" | [`refine-ticket`](../refine-ticket/SKILL.md) |
|
|
39
|
+
| "estimate this prompt" | not supported — score then estimate downstream |
|
|
40
|
+
| "plan this feature" | `/feature-plan` (downstream) |
|
|
41
|
+
| "is this a duplicate?" | `validate-feature-fit` (sub-skill, post-refine) |
|
|
42
|
+
|
|
43
|
+
`refine-prompt` is the *first* gate on prompt-driven flow. It does not
|
|
44
|
+
plan, does not implement, does not write back anywhere.
|
|
45
|
+
|
|
46
|
+
## Input
|
|
47
|
+
|
|
48
|
+
Exactly one path: a non-empty raw string carried in
|
|
49
|
+
`state.input.data.raw` (built by [`work_engine.resolvers.prompt`](../../templates/scripts/work_engine/resolvers/prompt.py)).
|
|
50
|
+
No branch detection, no URL parsing, no clipboard fallback — the
|
|
51
|
+
calling command (`/work`) owns prompt capture; this skill only refines.
|
|
52
|
+
|
|
53
|
+
If `raw` is missing, empty, or whitespace-only the resolver already
|
|
54
|
+
raised `PromptResolverError`. The skill never receives that input.
|
|
55
|
+
|
|
56
|
+
## Procedure
|
|
57
|
+
|
|
58
|
+
### 1. Read and analyze the prompt
|
|
59
|
+
|
|
60
|
+
Examine the raw text top to bottom *before* changing anything in
|
|
61
|
+
state. Identify the *single* desired outcome in one sentence —
|
|
62
|
+
verb + object + observable result. If the prompt names two
|
|
63
|
+
unrelated outcomes (e.g. "fix login AND refactor the dashboard"),
|
|
64
|
+
record both but flag scope-overload in step 5; the score will
|
|
65
|
+
land in `medium` or `low`.
|
|
66
|
+
|
|
67
|
+
This is an analysis pass, not an execution pass. The skill does
|
|
68
|
+
not modify the prompt, infer code changes, or call any tool — it
|
|
69
|
+
investigates the input and produces a structured envelope the
|
|
70
|
+
dispatcher reads.
|
|
71
|
+
|
|
72
|
+
### 2. Enumerate explicit constraints
|
|
73
|
+
|
|
74
|
+
Pull every concrete signal from the prompt verbatim:
|
|
75
|
+
|
|
76
|
+
- **Files / modules** named in the text (`UserController`,
|
|
77
|
+
`auth.service.ts`, `migrations/2024_…`).
|
|
78
|
+
- **Behaviour anchors** — endpoints, routes, commands, fixtures.
|
|
79
|
+
- **Hard rules** — "must not break X", "without changing the API",
|
|
80
|
+
"keep backwards compat".
|
|
81
|
+
|
|
82
|
+
Constraints come from the prompt only. Inferred constraints belong in
|
|
83
|
+
step 3 (assumptions), never here.
|
|
84
|
+
|
|
85
|
+
### 3. Infer reasonable assumptions
|
|
86
|
+
|
|
87
|
+
Anything the prompt implies but does not state. Examples:
|
|
88
|
+
|
|
89
|
+
- "fix the login bug" → assumes the bug is in the existing `auth/`
|
|
90
|
+
module (no new auth provider).
|
|
91
|
+
- "add caching" → assumes the project's primary cache driver
|
|
92
|
+
(per `.agent-settings.yml` / `config/cache.php`).
|
|
93
|
+
- "speed up the export" → assumes "faster" means runtime, not memory.
|
|
94
|
+
|
|
95
|
+
Each assumption is a single line, prefixed with `assumes:`. The
|
|
96
|
+
medium-band halt surfaces them verbatim — no rewording, no
|
|
97
|
+
explanations.
|
|
98
|
+
|
|
99
|
+
### 4. Generate the AC list
|
|
100
|
+
|
|
101
|
+
Three to seven bullet points. Each bullet is observable and
|
|
102
|
+
testable in the project's existing test surface (Pest / Jest /
|
|
103
|
+
pytest / etc.). Avoid:
|
|
104
|
+
|
|
105
|
+
- "works correctly" / "is fast" / "looks better" (untestable)
|
|
106
|
+
- "no regressions" (the test suite already covers that)
|
|
107
|
+
- "follows best practices" (not an AC)
|
|
108
|
+
|
|
109
|
+
Anchor each bullet to a constraint from step 2 or an assumption from
|
|
110
|
+
step 3 — never both implicit.
|
|
111
|
+
|
|
112
|
+
### 5. Score confidence
|
|
113
|
+
|
|
114
|
+
Delegate to [`scripts.work_engine.scoring.confidence`](../../templates/scripts/work_engine/scoring/confidence.py):
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
from work_engine.scoring.confidence import score
|
|
118
|
+
result = score(raw=prompt_raw, ac=reconstructed_ac, assumptions=assumptions)
|
|
119
|
+
# result.band ∈ {"high", "medium", "low"}
|
|
120
|
+
# result.score ∈ [0.0, 1.0]
|
|
121
|
+
# result.dimensions: dict[str, int] # 0–2 per dimension
|
|
122
|
+
# result.reasons: list[str] # human-readable rationale
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
The rubric (5 dimensions × 0–2, sum / 10) and band thresholds
|
|
126
|
+
(`high ≥ 0.8`, `medium 0.5–0.79`, `low < 0.5`) are owned by
|
|
127
|
+
`confidence.py`. Do not re-derive them in prose.
|
|
128
|
+
|
|
129
|
+
## Band-action mapping
|
|
130
|
+
|
|
131
|
+
The `refine` dispatcher step in `directives/backend/refine.py` reads
|
|
132
|
+
the score and returns one of three outcomes — the skill does not
|
|
133
|
+
decide the action, only produces the inputs.
|
|
134
|
+
|
|
135
|
+
| Band | Outcome | What the user sees |
|
|
136
|
+
|---|---|---|
|
|
137
|
+
| `high` | `SUCCESS` | Silent proceed; AC + assumptions land in the delivery report |
|
|
138
|
+
| `medium` | `PARTIAL` | Assumptions report halt: numbered list of `assumes:` lines + AC, user confirms or edits |
|
|
139
|
+
| `low` | `BLOCKED` | One clarifying question (per [`ask-when-uncertain`](../../rules/ask-when-uncertain.md) Iron Law) |
|
|
140
|
+
|
|
141
|
+
## Output format
|
|
142
|
+
|
|
143
|
+
The skill emits a structured envelope; the dispatcher renders it.
|
|
144
|
+
Required fields, in order:
|
|
145
|
+
|
|
146
|
+
1. **Goal** — single sentence, verb + object + observable result
|
|
147
|
+
2. **Acceptance criteria** — numbered list, 3–7 entries, each
|
|
148
|
+
anchored to a step-2 constraint or a step-3 assumption
|
|
149
|
+
3. **Assumptions** — bullet list, each line prefixed `assumes:`
|
|
150
|
+
4. **Confidence** — band + score + per-dimension breakdown from
|
|
151
|
+
`work_engine.scoring.confidence`
|
|
152
|
+
|
|
153
|
+
The shape below is the rendered surface for `medium` / `low`
|
|
154
|
+
halts; for `high` the same envelope lands in the delivery report
|
|
155
|
+
without a halt.
|
|
156
|
+
|
|
157
|
+
````markdown
|
|
158
|
+
## Reconstructed prompt
|
|
159
|
+
|
|
160
|
+
**Goal:** <one sentence, verb + object + observable result>
|
|
161
|
+
|
|
162
|
+
**Acceptance criteria:**
|
|
163
|
+
1. <bullet>
|
|
164
|
+
2. <bullet>
|
|
165
|
+
3. <bullet>
|
|
166
|
+
|
|
167
|
+
**Assumptions:**
|
|
168
|
+
- assumes: <line>
|
|
169
|
+
- assumes: <line>
|
|
170
|
+
|
|
171
|
+
**Confidence:** medium (0.62) — goal_clarity 2 · scope_boundary 1 · ac_evidence 2 · stack_data 1 · reversibility 0
|
|
172
|
+
````
|
|
173
|
+
|
|
174
|
+
For `low`, the question replaces the AC list:
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
> The prompt does not name <missing dimension>.
|
|
178
|
+
>
|
|
179
|
+
> 1. <option that resolves the gap>
|
|
180
|
+
> 2. <alternative resolution>
|
|
181
|
+
> 3. <skip / abandon>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Gotchas
|
|
185
|
+
|
|
186
|
+
- The model invents AC that *sound* observable but aren't anchored
|
|
187
|
+
in the prompt or a concrete file. Every AC must trace to a step-2
|
|
188
|
+
constraint or a step-3 assumption — no free-floating bullets.
|
|
189
|
+
- Assumptions are not commitments. The medium-band halt is the
|
|
190
|
+
user's chance to flip them; the skill never asserts an assumption
|
|
191
|
+
as fact.
|
|
192
|
+
- The scorer is heuristic, not LLM-based. Token count is not a
|
|
193
|
+
signal — a 200-word prompt can score `low` if the goal is vague,
|
|
194
|
+
and a 20-word prompt can score `high` if scope is unambiguous.
|
|
195
|
+
- UI-shaped prompts ("redesign the dashboard", "make the form
|
|
196
|
+
prettier") score `low` on `stack_data` until R3 lands the UI
|
|
197
|
+
directive set; band-action is a pointer to R3, not a refusal.
|
|
198
|
+
|
|
199
|
+
## Do NOT
|
|
200
|
+
|
|
201
|
+
- Do NOT call this skill on `input.kind="ticket"` — that path runs
|
|
202
|
+
through [`refine-ticket`](../refine-ticket/SKILL.md).
|
|
203
|
+
- Do NOT auto-confirm assumptions on the user's behalf in the
|
|
204
|
+
medium-band halt. The halt is the contract.
|
|
205
|
+
- Do NOT stack multiple clarifying questions in the low-band halt.
|
|
206
|
+
Iron Law: one question per turn.
|
|
207
|
+
- Do NOT mutate `state.input.data.raw`. The original prompt stays
|
|
208
|
+
verbatim for replay; reconstructed output lands in
|
|
209
|
+
`data.reconstructed_ac` and `data.assumptions`.
|
|
210
|
+
- Do NOT re-derive band thresholds in prose. They live in
|
|
211
|
+
`confidence.py` and only there.
|
|
212
|
+
|
|
213
|
+
## See also
|
|
214
|
+
|
|
215
|
+
- [`refine-ticket`](../refine-ticket/SKILL.md) — sibling for ticket-shaped input
|
|
216
|
+
- [`work_engine.resolvers.prompt`](../../templates/scripts/work_engine/resolvers/prompt.py) — envelope builder
|
|
217
|
+
- [`work_engine.scoring.confidence`](../../templates/scripts/work_engine/scoring/confidence.py) — rubric + band thresholds
|
|
218
|
+
- [`ask-when-uncertain`](../../rules/ask-when-uncertain.md) — one-question-per-turn Iron Law
|
|
219
|
+
- [`artifact-drafting-protocol`](../../rules/artifact-drafting-protocol.md) — this skill was drafted under it
|
|
220
|
+
- `agents/roadmaps/archive/road-to-prompt-driven-execution.md` — Phase 3 owns this skill (archived on completion)
|
|
@@ -130,7 +130,7 @@ Then run the deterministic detection helper — do **not** re-derive trigger
|
|
|
130
130
|
logic in prose:
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
|
-
|
|
133
|
+
./agent-config refine-ticket:detect <ticket-body-file>
|
|
134
134
|
# or, inside the skill run:
|
|
135
135
|
from scripts.refine_ticket_detect import detect, load_map
|
|
136
136
|
decision = detect(ticket_body, load_map(), cwd=Path.cwd())
|
|
@@ -206,8 +206,7 @@ open a planning doc.
|
|
|
206
206
|
|
|
207
207
|
## Output template
|
|
208
208
|
|
|
209
|
-
Frozen per Q25
|
|
210
|
-
[`road-to-ticket-refinement.md`](../../../agents/roadmaps/road-to-ticket-refinement.md)).
|
|
209
|
+
Frozen per Q25.
|
|
211
210
|
|
|
212
211
|
````markdown
|
|
213
212
|
## Refined ticket
|
|
@@ -306,5 +305,4 @@ re-probe on project change.
|
|
|
306
305
|
- [`feature-explore`](../../commands/feature-explore.md) — upstream idea capture; hints at `/refine-ticket` when input looks like a ticket
|
|
307
306
|
- [`feature-plan`](../../commands/feature-plan.md) — downstream planning
|
|
308
307
|
- [`adversarial-review`](../adversarial-review/SKILL.md) — same `critical-challenger` persona, different stage (post-plan)
|
|
309
|
-
- [`road-to-ticket-refinement.md`](../../../agents/roadmaps/road-to-ticket-refinement.md) — governing roadmap
|
|
310
308
|
- [`artifact-drafting-protocol`](../../rules/artifact-drafting-protocol.md) — this skill was drafted under it
|
|
@@ -138,8 +138,14 @@ Every roadmap implicitly includes these gates (run after each step that changes
|
|
|
138
138
|
1. Ask the user for goal, context-create, and phases.
|
|
139
139
|
2. Use the template structure from `.augment/templates/roadmaps.md`.
|
|
140
140
|
3. Review with the user iteratively until approved.
|
|
141
|
-
4.
|
|
142
|
-
|
|
141
|
+
4. **Branch & release questions — ask at most once, only if genuinely useful.**
|
|
142
|
+
Default: stay on current branch, no version numbers in roadmap.
|
|
143
|
+
Only propose a separate branch with concrete evidence (e.g. risky
|
|
144
|
+
migration → spike branch). Never include releases, deprecation dates,
|
|
145
|
+
or git tags in roadmap text. If user declines, do **not** re-propose
|
|
146
|
+
during `roadmap-execute`. Decline = silence. See [`scope-control`](../../rules/scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
147
|
+
5. Save with a kebab-case filename (e.g. `optimize-webhook-jobs.md`).
|
|
148
|
+
6. Regenerate the dashboard so the new roadmap is included.
|
|
143
149
|
|
|
144
150
|
### Executing a roadmap
|
|
145
151
|
|
|
@@ -303,4 +309,5 @@ The dashboard is a **read-only snapshot**. Do not edit it by hand — regenerate
|
|
|
303
309
|
- Do NOT archive roadmaps with open `[ ]` items without asking the user.
|
|
304
310
|
- Do NOT delete roadmaps — always move to `archive/` or `skipped/`.
|
|
305
311
|
- 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.
|
|
312
|
+
- Do NOT assign version numbers, git tags, deprecation dates, or release identifiers to phases. Hard rule — see [`scope-control`](../../rules/scope-control.md#git-operations--permission-gated).
|
|
313
|
+
- Do NOT propose a branch switch while executing a roadmap. Branch question is settled at creation; declined or never-asked = 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,9 +173,7 @@ 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
|
-
[`road-to-trigger-evals.md`](../../../agents/roadmaps/archive/road-to-trigger-evals.md)
|
|
178
|
-
Phase 1 for the runner and expected format; peer examples:
|
|
176
|
+
record it in the commit message (`Eval stub: deferred`). Peer examples:
|
|
179
177
|
`php-coder/evals/triggers.json`, `eloquent/evals/triggers.json`,
|
|
180
178
|
`skill-writing/evals/triggers.json`.
|
|
181
179
|
|
|
@@ -182,7 +182,7 @@ 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
188
|
**Hard refusal rule:** if `check_proposal.py` exits non-zero, STOP —
|
|
@@ -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 `agents/contexts/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
|
|
|
@@ -27,8 +27,14 @@ Templates for roadmap files stored in `agents/roadmaps/` or `app/Modules/{Module
|
|
|
27
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
|
|
30
|
+
"Target release: X.Y.Z", never plan git tags or deprecation dates. Release
|
|
31
|
+
and tag decisions belong to the user, taken outside the roadmap. Enforced by
|
|
32
|
+
[`scope-control`](../rules/scope-control.md#git-operations--permission-gated).
|
|
33
|
+
14. **No automatic branch switches mid-roadmap.** Roadmap work runs on the
|
|
34
|
+
current branch. If a separate branch (spike, hotfix, experiment) would
|
|
35
|
+
be useful, agent may propose it **once** during creation — not during
|
|
36
|
+
execution. Default: stay on current branch. If user declines, topic is
|
|
37
|
+
closed for this roadmap. See [`scope-control`](../rules/scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
32
38
|
|
|
33
39
|
---
|
|
34
40
|
|