@event4u/agent-config 1.20.0 → 1.21.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/agents.md +1 -1
- package/.agent-src/commands/bug-fix.md +1 -1
- package/.agent-src/commands/bug-investigate.md +2 -2
- package/.agent-src/commands/chat-history/import.md +60 -64
- package/.agent-src/commands/compress.md +12 -0
- package/.agent-src/commands/context/create.md +2 -2
- package/.agent-src/commands/context.md +1 -1
- package/.agent-src/commands/copilot-agents.md +1 -1
- package/.agent-src/commands/council/default.md +17 -5
- package/.agent-src/commands/council.md +1 -1
- package/.agent-src/commands/e2e-heal.md +1 -1
- package/.agent-src/commands/e2e-plan.md +1 -1
- package/.agent-src/commands/feature/dev.md +3 -3
- package/.agent-src/commands/feature.md +1 -1
- package/.agent-src/commands/fix/seeder.md +2 -2
- package/.agent-src/commands/fix.md +1 -1
- package/.agent-src/commands/jira-ticket.md +1 -1
- package/.agent-src/commands/judge.md +2 -2
- package/.agent-src/commands/memory.md +1 -1
- package/.agent-src/commands/mode.md +5 -5
- package/.agent-src/commands/module.md +1 -1
- package/.agent-src/commands/onboard.md +4 -4
- package/.agent-src/commands/optimize/augmentignore.md +1 -1
- package/.agent-src/commands/optimize-prompt.md +61 -0
- package/.agent-src/commands/optimize.md +1 -1
- package/.agent-src/commands/override.md +1 -1
- package/.agent-src/commands/review-changes.md +1 -1
- package/.agent-src/commands/review-routing.md +1 -1
- package/.agent-src/commands/roadmap.md +1 -1
- package/.agent-src/commands/set-cost-profile.md +3 -3
- package/.agent-src/commands/sync-agent-settings.md +2 -2
- package/.agent-src/commands/tests/create.md +2 -2
- package/.agent-src/commands/tests.md +1 -1
- package/.agent-src/commands/threat-model.md +4 -4
- package/.agent-src/contexts/authority/commit-mechanics.md +14 -1
- package/.agent-src/contexts/authority/destructive-mechanics.md +14 -1
- package/.agent-src/contexts/authority/scope-mechanics.md +5 -0
- package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +76 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
- package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +98 -0
- package/.agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +93 -0
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +128 -5
- package/.agent-src/contexts/execution/autonomy-mechanics.md +44 -0
- package/.agent-src/contexts/model-recommendations.md +2 -2
- package/.agent-src/contexts/override-system.md +1 -1
- package/.agent-src/personas/product-owner.md +2 -2
- package/.agent-src/personas/qa.md +1 -1
- package/.agent-src/rules/agent-authority.md +5 -6
- package/.agent-src/rules/agent-docs.md +11 -53
- package/.agent-src/rules/analysis-skill-routing.md +10 -40
- package/.agent-src/rules/architecture.md +6 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +5 -0
- package/.agent-src/rules/artifact-engagement-recording.md +23 -59
- package/.agent-src/rules/ask-when-uncertain.md +24 -47
- package/.agent-src/rules/augment-portability.md +14 -62
- package/.agent-src/rules/augment-source-of-truth.md +10 -1
- package/.agent-src/rules/autonomous-execution.md +17 -98
- package/.agent-src/rules/capture-learnings.md +9 -80
- package/.agent-src/rules/cli-output-handling.md +12 -42
- package/.agent-src/rules/command-suggestion-policy.md +25 -73
- package/.agent-src/rules/commit-conventions.md +9 -58
- package/.agent-src/rules/commit-policy.md +16 -47
- package/.agent-src/rules/context-hygiene.md +5 -0
- package/.agent-src/rules/direct-answers.md +21 -50
- package/.agent-src/rules/docker-commands.md +11 -45
- package/.agent-src/rules/docs-sync.md +10 -56
- package/.agent-src/rules/downstream-changes.md +5 -0
- package/.agent-src/rules/e2e-testing.md +9 -44
- package/.agent-src/rules/guidelines.md +13 -75
- package/.agent-src/rules/improve-before-implement.md +10 -2
- package/.agent-src/rules/language-and-tone.md +41 -106
- package/.agent-src/rules/laravel-translations.md +11 -40
- package/.agent-src/rules/markdown-safe-codeblocks.md +4 -0
- package/.agent-src/rules/minimal-safe-diff.md +4 -0
- package/.agent-src/rules/missing-tool-handling.md +4 -0
- package/.agent-src/rules/model-recommendation.md +9 -61
- package/.agent-src/rules/no-attribution-footers.md +5 -0
- package/.agent-src/rules/no-cheap-questions.md +11 -27
- package/.agent-src/rules/no-council-references.md +76 -0
- package/.agent-src/rules/no-roadmap-references.md +7 -0
- package/.agent-src/rules/non-destructive-by-default.md +13 -43
- package/.agent-src/rules/onboarding-gate.md +9 -117
- package/.agent-src/rules/package-ci-checks.md +10 -37
- package/.agent-src/rules/php-coding.md +10 -55
- package/.agent-src/rules/preservation-guard.md +9 -0
- package/.agent-src/rules/review-routing-awareness.md +9 -97
- package/.agent-src/rules/reviewer-awareness.md +8 -83
- package/.agent-src/rules/roadmap-progress-sync.md +7 -170
- package/.agent-src/rules/role-mode-adherence.md +6 -2
- package/.agent-src/rules/rule-type-governance.md +8 -66
- package/.agent-src/rules/runtime-safety.md +5 -0
- package/.agent-src/rules/scope-control.md +17 -62
- package/.agent-src/rules/security-sensitive-stop.md +7 -1
- package/.agent-src/rules/size-enforcement.md +6 -1
- package/.agent-src/rules/skill-improvement-trigger.md +9 -49
- package/.agent-src/rules/skill-quality.md +7 -113
- package/.agent-src/rules/slash-command-routing-policy.md +11 -63
- package/.agent-src/rules/think-before-action.md +22 -87
- package/.agent-src/rules/token-efficiency.md +10 -74
- package/.agent-src/rules/token-optimizer-maintenance.md +68 -0
- package/.agent-src/rules/tool-safety.md +4 -0
- package/.agent-src/rules/ui-audit-gate.md +25 -61
- package/.agent-src/rules/upstream-proposal.md +9 -67
- package/.agent-src/rules/user-interaction.md +22 -108
- package/.agent-src/rules/verify-before-complete.md +1 -1
- package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -1
- package/.agent-src/skills/ai-council/SKILL.md +65 -0
- package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
- package/.agent-src/skills/analysis-skill-router/SKILL.md +3 -3
- package/.agent-src/skills/artisan-commands/SKILL.md +2 -2
- package/.agent-src/skills/authz-review/SKILL.md +1 -1
- package/.agent-src/skills/aws-infrastructure/SKILL.md +5 -5
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +8 -8
- package/.agent-src/skills/bug-analyzer/SKILL.md +5 -5
- package/.agent-src/skills/code-refactoring/SKILL.md +4 -4
- package/.agent-src/skills/code-review/SKILL.md +2 -2
- package/.agent-src/skills/command-writing/SKILL.md +11 -0
- package/.agent-src/skills/composer-packages/SKILL.md +2 -2
- package/.agent-src/skills/context-authoring/SKILL.md +11 -0
- package/.agent-src/skills/context-document/SKILL.md +1 -1
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +23 -0
- package/.agent-src/skills/copilot-config/SKILL.md +1 -1
- package/.agent-src/skills/dependency-upgrade/SKILL.md +2 -2
- package/.agent-src/skills/devcontainer/SKILL.md +2 -2
- package/.agent-src/skills/developer-like-execution/SKILL.md +1 -1
- package/.agent-src/skills/docker/SKILL.md +1 -1
- package/.agent-src/skills/dto-creator/SKILL.md +1 -1
- package/.agent-src/skills/estimate-ticket/SKILL.md +2 -2
- package/.agent-src/skills/fe-design/SKILL.md +4 -4
- package/.agent-src/skills/feature-planning/SKILL.md +5 -5
- package/.agent-src/skills/funnel-analysis/SKILL.md +1 -1
- package/.agent-src/skills/laravel/SKILL.md +1 -1
- package/.agent-src/skills/laravel-notifications/SKILL.md +5 -5
- package/.agent-src/skills/laravel-pennant/SKILL.md +1 -1
- package/.agent-src/skills/laravel-pulse/SKILL.md +4 -4
- package/.agent-src/skills/laravel-reverb/SKILL.md +2 -2
- package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -1
- package/.agent-src/skills/migration-creator/SKILL.md +7 -7
- package/.agent-src/skills/multi-tenancy/SKILL.md +8 -8
- package/.agent-src/skills/performance-analysis/SKILL.md +3 -3
- package/.agent-src/skills/pest-testing/SKILL.md +6 -6
- package/.agent-src/skills/php-service/SKILL.md +2 -2
- package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
- package/.agent-src/skills/project-analysis-react/SKILL.md +1 -1
- package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
- package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
- package/.agent-src/skills/project-analyzer/SKILL.md +4 -4
- package/.agent-src/skills/prompt-optimizer/SKILL.md +108 -0
- package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/rule-writing/SKILL.md +33 -0
- package/.agent-src/skills/sentry-integration/SKILL.md +1 -1
- package/.agent-src/skills/skill-writing/SKILL.md +14 -0
- package/.agent-src/skills/terraform/SKILL.md +2 -2
- package/.agent-src/skills/terragrunt/SKILL.md +8 -8
- package/.agent-src/skills/test-performance/SKILL.md +5 -5
- package/.agent-src/skills/threat-modeling/SKILL.md +2 -2
- package/.agent-src/skills/token-optimizer/SKILL.md +110 -0
- package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -1
- package/.agent-src/templates/AGENTS.md +1 -1
- package/.agent-src/templates/agent-settings.md +21 -16
- package/.agent-src/templates/contexts/tenant-boundaries.md +2 -2
- package/.agent-src/templates/contexts.md +1 -1
- package/.agent-src/templates/copilot-instructions.md +21 -0
- package/.agent-src/templates/copilot-review-instructions.md +76 -0
- package/.agent-src/templates/features.md +1 -1
- package/.agent-src/templates/rule.md +127 -0
- package/.claude-plugin/marketplace.json +4 -1
- package/AGENTS.md +32 -5
- package/CHANGELOG.md +69 -3
- package/README.md +22 -21
- package/config/agent-settings.template.yml +44 -10
- package/config/gitignore-block.txt +7 -0
- package/docs/architecture.md +86 -5
- package/docs/catalog.md +16 -6
- package/docs/contracts/agent-memory-contract.md +1 -1
- package/docs/contracts/context-paths.md +2 -1
- package/docs/contracts/file-ownership-matrix.json +354 -500
- package/docs/contracts/iron-law-overrides.txt +25 -0
- package/docs/contracts/kernel-membership.md +273 -0
- package/docs/contracts/load-context-schema.md +26 -11
- package/docs/contracts/pilot/agent-authority.md +24 -0
- package/docs/contracts/pilot/direct-answers.md +70 -0
- package/docs/contracts/pilot/language-and-tone.md +63 -0
- package/docs/contracts/rule-classification.md +170 -0
- package/docs/contracts/rule-router.md +153 -0
- package/docs/customization.md +17 -6
- package/docs/decisions/ADR-001-kernel-swap-deferred.md +109 -0
- package/docs/decisions/ADR-002-kernel-bucket-overrides.md +124 -0
- package/docs/decisions/ADR-rule-kernel-and-router.md +122 -0
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +176 -0
- package/docs/guidelines/agent-infra/rule-type-governance.md +73 -0
- package/docs/guidelines/agent-infra/size-and-scope.md +13 -2
- package/docs/guidelines/agent-infra/skill-quality-checklist.md +119 -0
- package/docs/guidelines/augment-portability-patterns.md +68 -0
- package/docs/guidelines/php/php-coding-patterns.md +62 -0
- package/package.json +1 -1
- package/scripts/_p43_bodies.py +235 -0
- package/scripts/_p43_compress.py +118 -0
- package/scripts/_p4_migrate.py +199 -0
- package/scripts/_pilot_council_question.py +57 -0
- package/scripts/_pilot_measure.py +53 -0
- package/scripts/ai_council/session.py +107 -5
- package/scripts/build_linear_digest.py +3 -5
- package/scripts/check_always_budget.py +39 -6
- package/scripts/check_compressed_paths.py +213 -0
- package/scripts/check_compression.py +15 -0
- package/scripts/check_context_paths.py +1 -0
- package/scripts/check_council_layout.py +105 -0
- package/scripts/check_council_references.py +145 -0
- package/scripts/check_portability.py +2 -0
- package/scripts/check_references.py +2 -0
- package/scripts/check_token_optimizer_freshness.py +131 -0
- package/scripts/compile_router.py +148 -0
- package/scripts/compress.py +219 -11
- package/scripts/council_cli.py +9 -5
- package/scripts/council_prune.py +81 -0
- package/scripts/count_token_optimizer_usage.sh +54 -0
- package/scripts/install.sh +44 -2
- package/scripts/iron_law_sha.py +98 -0
- package/scripts/lint_load_context.py +35 -5
- package/scripts/measure_rule_budget.py +314 -0
- package/scripts/prototype_lint_contradictions.py +150 -0
- package/scripts/schemas/rule.schema.json +55 -6
- package/scripts/skill_linter.py +196 -6
- package/scripts/smoke_path_resolution.py +93 -0
- package/scripts/validate_frontmatter.py +41 -1
- package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +0 -72
- package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +0 -79
- package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +0 -87
- package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +0 -62
- package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +0 -78
- package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +0 -85
- package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +0 -65
- package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +0 -78
- package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +0 -53
- /package/{docs → .agent-src/contexts}/contracts/artifact-engagement-flow.md +0 -0
- /package/{docs → .agent-src/contexts}/contracts/command-suggestion-flow.md +0 -0
|
@@ -4,6 +4,12 @@ tier: "2a"
|
|
|
4
4
|
description: "When running CLI tools, fetching logs, or producing replies — redirect verbose output, minimize tool calls, keep replies concise"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
source: package
|
|
7
|
+
load_context:
|
|
8
|
+
- ../contexts/communication/rules-auto/token-efficiency-mechanics.md
|
|
9
|
+
triggers:
|
|
10
|
+
- intent: "verbose CLI output"
|
|
11
|
+
- intent: "fetching logs"
|
|
12
|
+
- keyword: "minimize tool calls"
|
|
7
13
|
---
|
|
8
14
|
|
|
9
15
|
# Token Efficiency
|
|
@@ -19,82 +25,12 @@ NEVER call the same tool more than 2 times in a row with similar parameters.
|
|
|
19
25
|
If you catch yourself repeating a tool call — STOP, rethink, try a different approach, or ask the user.
|
|
20
26
|
```
|
|
21
27
|
|
|
22
|
-
### Anti-loop: Extended Reasoning
|
|
23
|
-
|
|
24
|
-
Do NOT use extended reasoning / chain-of-thought tools for simple tasks like viewing files,
|
|
25
|
-
running commands, or making straightforward edits. They are ONLY for genuinely complex
|
|
26
|
-
multi-step reasoning. If you find yourself calling such tools more than once per task —
|
|
27
|
-
you are looping. Stop immediately and act directly instead.
|
|
28
|
-
|
|
29
|
-
### Anti-loop: "CRITICAL INSTRUCTION" and self-prompting
|
|
30
|
-
|
|
31
|
-
If you find yourself generating text that starts with "CRITICAL INSTRUCTION", "I need to",
|
|
32
|
-
"Let me think", "Related tools:", or similar self-directed reasoning inside a tool call
|
|
33
|
-
or as a preamble before acting — **you are in a loop**. This happens after connection errors
|
|
34
|
-
or when the user says something like "continue" / "mach weiter".
|
|
35
|
-
|
|
36
|
-
**Immediate action:**
|
|
37
|
-
|
|
38
|
-
1. STOP generating self-instructions.
|
|
39
|
-
2. Read the last user message — what did they actually ask?
|
|
40
|
-
3. Do that ONE thing directly. No planning monologue, no tool selection reasoning.
|
|
41
|
-
4. If you don't know what the user wanted, ask: "Where were we?"
|
|
42
|
-
|
|
43
28
|
## Fresh Output Over Memory
|
|
44
29
|
|
|
45
|
-
|
|
46
|
-
use that EXACT value in subsequent API calls. NEVER substitute a value from earlier in
|
|
47
|
-
the conversation. Context decay causes silent mismatches — fresh output is the only source of truth.
|
|
48
|
-
|
|
49
|
-
## Conversation Efficiency
|
|
50
|
-
|
|
51
|
-
### Act, skip narration
|
|
52
|
-
|
|
53
|
-
- **Skip repeating the user's request.** They know what they asked.
|
|
54
|
-
- **Just do it** — skip announcing what you're about to do.
|
|
55
|
-
- **Skip explaining obvious tool calls.** Reading a file needs no justification.
|
|
56
|
-
- **Report only outcomes** — skip intermediate step summaries unless the user needs them.
|
|
57
|
-
|
|
58
|
-
**This rule NEVER overrides user-interaction or command rules.**
|
|
59
|
-
Token efficiency means fewer *unnecessary* words — NOT skipping required questions,
|
|
60
|
-
numbered options, or command steps. When a rule or command says "ask the user", you ask.
|
|
61
|
-
|
|
62
|
-
### Stop early — max 2 retries
|
|
63
|
-
|
|
64
|
-
- **Command fails twice with same error** → stop, rethink. Try a different approach.
|
|
65
|
-
- **grep/search returns nothing after 2 attempts** → switch approach or ask the user.
|
|
66
|
-
- **Max 3 diagnostic commands** per error. Read the error, think, act.
|
|
67
|
-
- **One hypothesis at a time.** Pick the most likely, try it. If it fails, ask.
|
|
68
|
-
|
|
69
|
-
### Keep intermediate output minimal
|
|
70
|
-
|
|
71
|
-
Read `personal.minimal_output` (default: `true`) and `personal.play_by_play`
|
|
72
|
-
(default: `false`) from `.agent-settings.yml`.
|
|
73
|
-
|
|
74
|
-
When `personal.minimal_output: true`:
|
|
75
|
-
- Multi-step work: short bullet points only, no paragraphs.
|
|
76
|
-
- No thinking out loud — user doesn't need your reasoning.
|
|
77
|
-
- When `personal.play_by_play: false`: silently investigate, report conclusion only.
|
|
78
|
-
- When `personal.play_by_play: true`: briefly share intermediate findings.
|
|
79
|
-
- At the end: concise summary — what changed, what user needs to know.
|
|
80
|
-
|
|
81
|
-
### Don't re-read what you already know
|
|
82
|
-
|
|
83
|
-
- Edited a file → edit tool showed result. Don't re-read.
|
|
84
|
-
- Ran a command → you have output. Don't re-run to "verify".
|
|
85
|
-
- File in context from recent messages → don't reload.
|
|
86
|
-
|
|
87
|
-
### Minimize tool calls
|
|
88
|
-
|
|
89
|
-
- Parallel reads — don't read 5 files sequentially.
|
|
90
|
-
- Regex search over full file reads. View specific line ranges.
|
|
91
|
-
- One codebase search call with all symbols — not 5 separate.
|
|
92
|
-
- Short question → short answer. Summary tables only for 3+ items.
|
|
30
|
+
When a tool or command returns a value (branch name, file path, PR number), use that EXACT value in subsequent API calls. NEVER substitute a value from earlier in the conversation. Context decay → silent mismatches — fresh output is the only source of truth.
|
|
93
31
|
|
|
94
|
-
|
|
32
|
+
## Mechanics — anti-loop patterns, conversation efficiency, exceptions
|
|
95
33
|
|
|
96
|
-
-
|
|
97
|
-
- Debugging: OK to read more context around one error.
|
|
98
|
-
- User explicitly asks for full output: show it.
|
|
34
|
+
The anti-loop patterns (extended-reasoning loops, "CRITICAL INSTRUCTION" self-prompting), the act-skip-narration / stop-early / keep-output-minimal / don't-re-read / minimize-tool-calls clauses, and the small-output / debugging / explicit-full-output exceptions all live in [`contexts/communication/rules-auto/token-efficiency-mechanics.md`](../contexts/communication/rules-auto/token-efficiency-mechanics.md). The rule above is the obligation surface; the mechanics file is the lookup material.
|
|
99
35
|
|
|
100
|
-
|
|
36
|
+
This rule NEVER overrides `user-interaction` or command rules. Token efficiency means fewer *unnecessary* words — NOT skipping required questions, numbered options, or command steps.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "2a"
|
|
4
|
+
description: "Editing a token-optimizer-cited asset (cli-output-handling, rtk-output-filtering, token-efficiency, agent-handoff, direct-answers, markitdown) — keep the catalog row in sync in the same commit."
|
|
5
|
+
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "cli-output-handling"
|
|
8
|
+
- keyword: "rtk-output-filtering"
|
|
9
|
+
- keyword: "token-efficiency"
|
|
10
|
+
- keyword: "agent-handoff"
|
|
11
|
+
- keyword: "markitdown"
|
|
12
|
+
- keyword: "token-optimizer"
|
|
13
|
+
routes_to:
|
|
14
|
+
- "skill:token-optimizer"
|
|
15
|
+
validator_ignore:
|
|
16
|
+
- type: "substring"
|
|
17
|
+
pattern: ".agent-src.uncompressed/"
|
|
18
|
+
reason: "Rule lists the authoring-tree paths that must stay in sync with the catalog."
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Token Optimizer Maintenance
|
|
22
|
+
|
|
23
|
+
## Iron Law
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
EDIT A CITED ASSET → UPDATE THE TOKEN-OPTIMIZER ROW IN THE SAME COMMIT.
|
|
27
|
+
THE CI LINK VALIDATOR IS A BACKSTOP, NOT A SUBSTITUTE FOR CARE.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## When this rule fires
|
|
31
|
+
|
|
32
|
+
About to edit any of:
|
|
33
|
+
|
|
34
|
+
- `.agent-src.uncompressed/rules/cli-output-handling.md`
|
|
35
|
+
- `.agent-src.uncompressed/rules/token-efficiency.md`
|
|
36
|
+
- `.agent-src.uncompressed/rules/direct-answers.md`
|
|
37
|
+
- `.agent-src.uncompressed/skills/rtk-output-filtering/SKILL.md`
|
|
38
|
+
- `.claude/skills/agent-handoff/SKILL.md`
|
|
39
|
+
- Any other asset cited by
|
|
40
|
+
[`token-optimizer`](../skills/token-optimizer/SKILL.md) (catalog
|
|
41
|
+
table is the canonical list).
|
|
42
|
+
|
|
43
|
+
## Obligation
|
|
44
|
+
|
|
45
|
+
If the edit touches:
|
|
46
|
+
|
|
47
|
+
- **Trigger keywords** the decision tree associates with the asset, OR
|
|
48
|
+
- **What the asset does** (the one-line "what it does" summary), OR
|
|
49
|
+
- **The asset's path / location** (rename, move, deletion)
|
|
50
|
+
|
|
51
|
+
then in the same commit, update the matching row in
|
|
52
|
+
`.agent-src.uncompressed/skills/token-optimizer/SKILL.md` —
|
|
53
|
+
the catalog table AND the relevant tree leaf.
|
|
54
|
+
|
|
55
|
+
## Out of scope
|
|
56
|
+
|
|
57
|
+
- Whitespace, comment, formatting, or grammar edits in the cited
|
|
58
|
+
asset → no token-optimizer update required.
|
|
59
|
+
- Internal restructuring that leaves trigger + summary + path
|
|
60
|
+
unchanged → no update required.
|
|
61
|
+
|
|
62
|
+
## Backstop
|
|
63
|
+
|
|
64
|
+
The CI pipeline runs `scripts/check_token_optimizer_freshness.py`
|
|
65
|
+
after the reference checker. The validator parses the catalog,
|
|
66
|
+
verifies every cited path exists, and `grep`s the trigger keywords
|
|
67
|
+
against each target. A failure is a **drift signal**, not a
|
|
68
|
+
substitute for keeping the catalog correct manually.
|
|
@@ -3,6 +3,10 @@ type: auto
|
|
|
3
3
|
tier: "2b"
|
|
4
4
|
source: package
|
|
5
5
|
description: "When a skill uses external tools — enforce allowlist, deny-by-default, and no hidden credential patterns"
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "allowed_tools"
|
|
8
|
+
- keyword: "tool registry"
|
|
9
|
+
- intent: "external API"
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
# Tool Safety
|
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "2b"
|
|
4
|
-
description: "Writing or editing UI — components, screens, partials, layouts, design tokens — require existing-ui-audit findings in state.ui_audit before non-trivial UI change; gate, not suggestion"
|
|
5
4
|
alwaysApply: false
|
|
5
|
+
description: "Writing or editing UI — components, screens, partials, layouts, design tokens — require existing-ui-audit findings in state.ui_audit before non-trivial UI change; gate, not suggestion"
|
|
6
6
|
source: package
|
|
7
|
-
|
|
8
|
-
-
|
|
7
|
+
triggers:
|
|
8
|
+
- path_prefix: "resources/views/"
|
|
9
|
+
- path_prefix: "resources/js/"
|
|
10
|
+
- keyword: "component"
|
|
11
|
+
- keyword: "design token"
|
|
12
|
+
routes_to:
|
|
13
|
+
- "skill:existing-ui-audit"
|
|
9
14
|
---
|
|
10
15
|
|
|
11
|
-
# UI
|
|
16
|
+
# UI Audit Gate
|
|
12
17
|
|
|
13
18
|
Defense-in-depth twin of the dispatcher gate in
|
|
14
19
|
[`directives/ui/audit.py`](../templates/scripts/work_engine/directives/ui/audit.py).
|
|
15
|
-
The dispatcher refuses to advance past `refine` without
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
The dispatcher refuses to advance past `refine` without `state.ui_audit`;
|
|
21
|
+
this rule refuses the write even when the agent acts outside the dispatcher.
|
|
22
|
+
|
|
23
|
+
Body migrated to [`skill:existing-ui-audit`](../skills/existing-ui-audit/SKILL.md)
|
|
24
|
+
(per P4 of `road-to-kernel-and-router.md`). Trigger-set above activates this
|
|
25
|
+
routing under the `balanced` and `full` profiles.
|
|
20
26
|
|
|
21
27
|
## The Iron Law
|
|
22
28
|
|
|
@@ -25,45 +31,6 @@ NO NEW COMPONENT, SCREEN, PARTIAL, OR PAGE WITHOUT AUDIT FINDINGS.
|
|
|
25
31
|
EXISTING-UI-AUDIT RUNS FIRST. ALWAYS.
|
|
26
32
|
```
|
|
27
33
|
|
|
28
|
-
Skipping the audit is the single biggest source of duplicated
|
|
29
|
-
components and drift from project tokens. The audit is cheap (60 s
|
|
30
|
-
on a primed cache); the cost of skipping is a refactor.
|
|
31
|
-
|
|
32
|
-
## When this rule activates
|
|
33
|
-
|
|
34
|
-
Before writing or editing any non-trivial UI surface:
|
|
35
|
-
|
|
36
|
-
- New page / screen / route component
|
|
37
|
-
- New Livewire / Flux / Blade / React / Vue / Svelte component or partial
|
|
38
|
-
- Major edit to an existing screen (new section, new state, new layout band)
|
|
39
|
-
|
|
40
|
-
Recognise the trigger from wording even when nobody says "audit":
|
|
41
|
-
"add a dashboard tile", "build a settings panel", "neue Komponente
|
|
42
|
-
für …", "render the orders table", "create the empty state for …".
|
|
43
|
-
|
|
44
|
-
## Allow-list — when to skip
|
|
45
|
-
|
|
46
|
-
Skip only when **all** hold:
|
|
47
|
-
|
|
48
|
-
- `directive_set == "ui-trivial"` (set by Phase 1's intent classifier).
|
|
49
|
-
- The change is provably bounded: ≤ 1 file, ≤ 5 changed lines, no
|
|
50
|
-
new component, no new state, no new dependency.
|
|
51
|
-
|
|
52
|
-
Any precondition fails at edit time → stop, reclassify as
|
|
53
|
-
`ui-improve`, re-enter the gate. Backend-only edits and
|
|
54
|
-
documentation work were never in scope for this rule.
|
|
55
|
-
|
|
56
|
-
## What to do when the gate fires
|
|
57
|
-
|
|
58
|
-
1. Stop. Do not open an editor on a component file.
|
|
59
|
-
2. Run [`existing-ui-audit`](../skills/existing-ui-audit/SKILL.md);
|
|
60
|
-
it writes the result to `state.ui_audit`.
|
|
61
|
-
3. On rebound, the dispatcher enters `design` with the audit as
|
|
62
|
-
defaults in the design-brief halt.
|
|
63
|
-
4. Greenfield → present the numbered scaffold / bare /
|
|
64
|
-
external-reference halt **before** code; record the pick in
|
|
65
|
-
`state.ui_audit.greenfield_decision`.
|
|
66
|
-
|
|
67
34
|
## What "audit findings" means
|
|
68
35
|
|
|
69
36
|
`state.ui_audit` is a non-empty dict carrying at least one of:
|
|
@@ -71,23 +38,20 @@ documentation work were never in scope for this rule.
|
|
|
71
38
|
- `components_found` — inventory entries from `existing-ui-audit`.
|
|
72
39
|
- `greenfield: true` plus `greenfield_decision` ∈
|
|
73
40
|
`{scaffold, bare, external_reference}`.
|
|
74
|
-
- Legacy `components` alias — back-compat
|
|
41
|
+
- Legacy `components` alias — back-compat.
|
|
42
|
+
|
|
43
|
+
`null` or `{}` is **not** findings; empty dict is rejected on purpose.
|
|
75
44
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
45
|
+
## Allow-list — `ui-trivial`
|
|
46
|
+
|
|
47
|
+
Skip only when **all** hold:
|
|
48
|
+
|
|
49
|
+
- `directive_set == "ui-trivial"`.
|
|
50
|
+
- ≤ 1 file, ≤ 5 changed lines, no new component, no new state.
|
|
79
51
|
|
|
80
52
|
## Failure modes
|
|
81
53
|
|
|
82
54
|
- Writing the component first and "thinking about reuse later".
|
|
83
|
-
- Citing a similar-looking component from memory without verifying.
|
|
55
|
+
- Citing a similar-looking component from memory without verifying via the audit.
|
|
84
56
|
- Treating `state.ui_audit = {}` as "audit ran, found nothing".
|
|
85
57
|
- Bypassing the gate for "just one tile".
|
|
86
|
-
|
|
87
|
-
## Lookup material — see mechanics
|
|
88
|
-
|
|
89
|
-
The full failure-mode catalog, cross-rule interactions, and the
|
|
90
|
-
cloud-surface adaptation live in
|
|
91
|
-
[`contexts/communication/rules-auto/ui-audit-gate-mechanics.md`](../contexts/communication/rules-auto/ui-audit-gate-mechanics.md).
|
|
92
|
-
Pull it whenever the gate fires or the agent is unsure whether a
|
|
93
|
-
recorded `state.ui_audit` qualifies.
|
|
@@ -2,76 +2,18 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "2a"
|
|
4
4
|
description: "After creating or significantly improving a skill, rule, guideline, or command — ask if it should be contributed upstream to the shared package"
|
|
5
|
-
alwaysApply: false
|
|
6
5
|
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- phrase: "after creating"
|
|
8
|
+
- phrase: "after improving"
|
|
9
|
+
- keyword: "upstream"
|
|
10
|
+
routes_to:
|
|
11
|
+
- "skill:upstream-contribute"
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# Upstream Proposal
|
|
10
15
|
|
|
11
|
-
|
|
16
|
+
**Iron Law.** After creating or significantly improving a skill / rule / guideline / command, ask whether to upstream it.
|
|
12
17
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
- Skill (new or major update)
|
|
16
|
-
- Rule (new or major update)
|
|
17
|
-
- Guideline (new or major update)
|
|
18
|
-
- Command (new or major update)
|
|
19
|
-
|
|
20
|
-
**Also activate when:**
|
|
21
|
-
|
|
22
|
-
- A project-specific skill/rule could be **generalized** to benefit all consumers
|
|
23
|
-
- An override was created that improves on the shared version
|
|
24
|
-
- A learning was captured that produced a high-quality new artifact
|
|
25
|
-
|
|
26
|
-
**Do NOT activate when:**
|
|
27
|
-
|
|
28
|
-
- Working inside the agent-config package itself (no self-referential proposals)
|
|
29
|
-
- The change is a trivial fix (typo, formatting)
|
|
30
|
-
- The user already declined upstream for this exact item in this conversation
|
|
31
|
-
|
|
32
|
-
## Consent check
|
|
33
|
-
|
|
34
|
-
**⛔ MANDATORY: Always ask the user. Never skip this step.**
|
|
35
|
-
|
|
36
|
-
After completing the creation/improvement, evaluate:
|
|
37
|
-
|
|
38
|
-
1. **Is this universal?** Could other projects benefit from this?
|
|
39
|
-
2. **Is this generalizable?** Even if project-specific, can it be abstracted?
|
|
40
|
-
3. **Is this high-quality?** Does it pass the promotion gate from `capture-learnings`?
|
|
41
|
-
|
|
42
|
-
If ANY of these is YES → propose to the user:
|
|
43
|
-
|
|
44
|
-
### For universal content (directly applicable):
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
> 🔄 The [skill/rule/guideline] `{name}` you just created could benefit all projects
|
|
48
|
-
> using the shared agent-config package.
|
|
49
|
-
>
|
|
50
|
-
> 1. Yes — contribute upstream via PR
|
|
51
|
-
> 2. No — keep project-local only
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### For project-specific content (needs generalization):
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
> 🔄 The [skill/rule/guideline] `{name}` is project-specific, but I could generalize
|
|
58
|
-
> it for the shared package. [Brief explanation of what would change]
|
|
59
|
-
>
|
|
60
|
-
> 1. Yes — generalize and contribute upstream
|
|
61
|
-
> 2. No — keep project-local only
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## After user response
|
|
65
|
-
|
|
66
|
-
- **User picks 1** → invoke `upstream-contribute` skill (which has its own consent gate for repo access)
|
|
67
|
-
- **User picks 2** → stop. Do NOT ask again for this item.
|
|
68
|
-
- **Max 1 proposal per created artifact** — never nag.
|
|
69
|
-
|
|
70
|
-
## Important
|
|
71
|
-
|
|
72
|
-
- **Consent is non-negotiable** — the user decides, always.
|
|
73
|
-
- **Do NOT batch proposals** — ask for each artifact separately.
|
|
74
|
-
- **Do NOT interrupt flow** — only propose AFTER the creation/improvement is complete.
|
|
75
|
-
- **Do NOT propose for trivial changes** — formatting, typos, comment updates.
|
|
76
|
-
- **Respect "no"** — if the user declines, do not revisit unless they bring it up.
|
|
77
|
-
- **Token efficiency** — this rule costs zero tokens when not triggered (auto type).
|
|
18
|
+
Body migrated to `skill:upstream-contribute` (per P4 of `road-to-kernel-and-router.md`).
|
|
19
|
+
Trigger-set above activates this routing under the `balanced` and `full` profiles.
|
|
@@ -5,14 +5,18 @@ description: "Asking the user a question, presenting options, or summarizing pro
|
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
source: package
|
|
7
7
|
load_context:
|
|
8
|
-
-
|
|
8
|
+
- ../contexts/communication/rules-auto/user-interaction-mechanics.md
|
|
9
|
+
triggers:
|
|
10
|
+
- intent: "ask user a question"
|
|
11
|
+
- intent: "numbered options"
|
|
12
|
+
- intent: "summarizing progress"
|
|
9
13
|
---
|
|
10
14
|
|
|
11
15
|
# User Interaction
|
|
12
16
|
|
|
13
|
-
Two Iron Laws govern every reply that contains numbered options.
|
|
14
|
-
override conversation momentum, brevity, and the urge to defer
|
|
15
|
-
user. **Missing a recommendation is a rule violation, not a slip.**
|
|
17
|
+
Two Iron Laws govern every reply that contains numbered options.
|
|
18
|
+
They override conversation momentum, brevity, and the urge to defer
|
|
19
|
+
to the user. **Missing a recommendation is a rule violation, not a slip.**
|
|
16
20
|
|
|
17
21
|
## Iron Law 1 — Single-Source Recommendation
|
|
18
22
|
|
|
@@ -27,57 +31,6 @@ PROSE NAMING A "RECOMMENDED" PATH ABOVE OR BEFORE THE OPTIONS BLOCK = NO RECOMME
|
|
|
27
31
|
WRONG-LANGUAGE LABEL (`Recommendation:` WHEN USER IS GERMAN, OR VICE VERSA) = NO RECOMMENDATION.
|
|
28
32
|
```
|
|
29
33
|
|
|
30
|
-
The agent has read the code, the contracts, the trade-offs. Refusing
|
|
31
|
-
to take a position dumps that work back on the user. Take the
|
|
32
|
-
position; be wrong out loud if needed. "Egal, was bevorzugst Du?" /
|
|
33
|
-
"no preference" is NEVER acceptable.
|
|
34
|
-
|
|
35
|
-
**Position-agnostic — closes the most common slip:** End-of-turn
|
|
36
|
-
"Wie weiter?" / "What next?" / "How to proceed?" / "How should we
|
|
37
|
-
continue?" blocks with numbered options are **numbered-options
|
|
38
|
-
blocks**. Same Iron Law applies — exactly one `Empfehlung: N` /
|
|
39
|
-
`Recommendation: N` line, every time. There is no "these are just
|
|
40
|
-
follow-up suggestions" exception, no "the user knows better here"
|
|
41
|
-
exception, no "I genuinely don't have a preference" exception. If
|
|
42
|
-
the agent prints `1. … 2. … 3. …` anywhere in the reply, the
|
|
43
|
-
recommendation line is mandatory.
|
|
44
|
-
|
|
45
|
-
**Format — non-negotiable:**
|
|
46
|
-
|
|
47
|
-
- Options block stays NEUTRAL — no `(recommended)`, no `(rec)`, no `←`, no bold, no checkmark.
|
|
48
|
-
- Directly after the options block, ONE line, bolded, in the user's language:
|
|
49
|
-
- English: `**Recommendation: N — <option-name>** — <why>. Caveat: <flip-condition>.`
|
|
50
|
-
- German: `**Empfehlung: N — <option-name>** — <warum>. Caveat: <flip-bedingung>.`
|
|
51
|
-
- Other numbers MAY appear later in the prose, but ONLY as caveats
|
|
52
|
-
(`escalate to 3 if …`, `flip to 1 when …`). NEVER as a primary recommendation.
|
|
53
|
-
- If the agent genuinely cannot pick (rare — true 50/50 with missing data),
|
|
54
|
-
say what data would break the tie and ask for that instead.
|
|
55
|
-
|
|
56
|
-
**No trailing open-ended question after numbered options:**
|
|
57
|
-
|
|
58
|
-
If the reply contains numbered options, the recommendation line IS
|
|
59
|
-
the closer. No `Welcher Pfad?` / `What's it gonna be?` / `Was meinst
|
|
60
|
-
Du?` / `Was sagst Du?` / `Welche willst Du?` / `What do you think?`
|
|
61
|
-
after the recommendation — that reframes the vote as an opinion poll
|
|
62
|
-
and is hedging in disguise. The user picks a number; the agent does
|
|
63
|
-
not re-ask. Permitted: a clarifying caveat sentence on the
|
|
64
|
-
recommendation line itself (`Caveat: flip to 2 if …`). Forbidden:
|
|
65
|
-
any standalone trailing question that re-opens the choice.
|
|
66
|
-
|
|
67
|
-
**What does NOT count as a recommendation:**
|
|
68
|
-
|
|
69
|
-
- "Both work" / "either is fine" / "depends on what you prefer"
|
|
70
|
-
- Listing pros and cons without picking a number
|
|
71
|
-
- "I'd lean towards X" without a reason
|
|
72
|
-
- Hiding behind "you know the project better"
|
|
73
|
-
- Inline `(recommended)` tag with no follow-up `Recommendation: N` line
|
|
74
|
-
|
|
75
|
-
**Slip handling — same protocol as [`language-and-tone`](language-and-tone.md#slip-handling).**
|
|
76
|
-
User calls out a missing or wrong recommendation → acknowledge once
|
|
77
|
-
in the user's language, rewrite the reply with a recommendation,
|
|
78
|
-
ship. No "from now on" promises — only the next reply proves
|
|
79
|
-
compliance.
|
|
80
|
-
|
|
81
34
|
## Iron Law 2 — Pre-Send Self-Check
|
|
82
35
|
|
|
83
36
|
```
|
|
@@ -85,59 +38,20 @@ EVERY REPLY WITH NUMBERED OPTIONS RUNS THE SELF-CHECK. NO EXCEPTIONS.
|
|
|
85
38
|
SKIPPING IT IS A RULE VIOLATION, NOT A SLIP.
|
|
86
39
|
```
|
|
87
40
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
its position or framing:
|
|
93
|
-
|
|
94
|
-
1. Count occurrences of `(recommended)` / `(rec)` / `(empfohlen)` inline next to a numbered option → MUST be **zero**. Found one → rewrite, drop the tag.
|
|
95
|
-
2. Count `1\.\s` / `2\.\s` / `3\.\s` patterns inside blockquotes or top-level prose → if **any** numbered-option block exists anywhere in the reply, the recommendation line is mandatory.
|
|
96
|
-
3. Count distinct `Recommendation:\s*N` / `Empfehlung:\s*N` lines (case-insensitive) → MUST be **exactly one per options block**. Zero → add one. Two or more distinct numbers → rewrite, pick one.
|
|
97
|
-
4. The number on the recommendation line MUST exist in the option block it follows.
|
|
98
|
-
5. If the reply has multiple options blocks (e.g. a clarification block AND an end-of-turn menu), each block gets its own `Recommendation: N` line directly underneath.
|
|
99
|
-
|
|
100
|
-
Mechanical backstop: `python3 scripts/check_reply_consistency.py --stdin < draft.md`
|
|
101
|
-
(non-zero exit on any rule above). Self-scan is the primary gate; the
|
|
102
|
-
script is the deterministic safety net for ambiguous cases.
|
|
103
|
-
|
|
104
|
-
### Common failure modes — known, named, no excuses
|
|
105
|
-
|
|
106
|
-
- **End-of-turn menu skipped.** Reply answers the question fine, then ends with `1. … 2. … 3. …` and no `Empfehlung:`. Iron Law 1 was violated — these are numbered options, position is irrelevant.
|
|
107
|
-
- **Trailing-question hedge.** Reply has options + recommendation, but ends with `Welcher Pfad?` / `What's it gonna be?` / `Was meinst Du?` — the open question reframes the vote as opinion-poll. Banned by Iron Law 1; the recommendation line is the closer.
|
|
108
|
-
- **"Genuinely no preference" hedge.** Pick anyway. The agent has more context than the user on the trade-off; refusing to pick dumps the work back. Pick the safest option, name the flip-condition.
|
|
109
|
-
- **"User knows the project better" hedge.** Same failure mode, different costume. The user asked for an opinion by virtue of accepting the options block; deliver it.
|
|
110
|
-
- **Multi-block reply with one recommendation.** Two options blocks but only one `Empfehlung:` line — the second block is unguarded. Rule 5 of Iron Law 2 closes this.
|
|
111
|
-
|
|
112
|
-
## Numbered Options — Always
|
|
113
|
-
|
|
114
|
-
When asking the user a question with predefined choices, **always
|
|
115
|
-
present numbered options**. The user should be able to reply with
|
|
116
|
-
just a number (e.g., `1`) instead of typing a sentence.
|
|
117
|
-
|
|
118
|
-
### Format
|
|
119
|
-
|
|
120
|
-
```
|
|
121
|
-
> 1. First option — brief explanation
|
|
122
|
-
> 2. Second option — brief explanation
|
|
123
|
-
> 3. Third option — brief explanation
|
|
124
|
-
|
|
125
|
-
**Recommendation: 2 — Second option** — <one-sentence reason>. Caveat: <flip-condition>.
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
### Rules
|
|
129
|
-
|
|
130
|
-
- **Every question with choices** must use numbered options — no exceptions.
|
|
131
|
-
- **Every numbered list with `1. … 2. … 3. …`** is a numbered-options block, regardless of position. End-of-turn "Wie weiter?" / "What next?" / "How to proceed?" menus, mid-reply continuation prompts, and clarification blocks all count.
|
|
132
|
-
- **Keep options short** — one line each, with a brief explanation after the dash.
|
|
133
|
-
- **Always include a "skip" or "no change" option** when applicable.
|
|
134
|
-
- **Always state a recommendation** — Iron Law 1 above. Per options block, every time, position-agnostic.
|
|
135
|
-
- **Use the user's language** for the question and options.
|
|
136
|
-
- **Accept both** the number and a natural language answer (e.g., "1" or "the first one").
|
|
41
|
+
Mechanical backstop:
|
|
42
|
+
`python3 scripts/check_reply_consistency.py --stdin < draft.md`
|
|
43
|
+
(non-zero exit on any rule below). Self-scan is the primary gate;
|
|
44
|
+
the script is the deterministic safety net.
|
|
137
45
|
|
|
138
|
-
|
|
46
|
+
## Mechanics — rationale, failure modes, format details, examples
|
|
139
47
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
48
|
+
The "why take a position", position-agnostic clause, format
|
|
49
|
+
specification (neutral block + bolded recommendation line + caveat),
|
|
50
|
+
no-trailing-open-question rule, "what does NOT count" catalog, full
|
|
51
|
+
five-step pre-send self-check, named failure-mode catalog (end-of-turn
|
|
52
|
+
menu, trailing-question hedge, no-preference hedge, multi-block reply,
|
|
53
|
+
…), slip-handling protocol, numbered-options rules, format examples,
|
|
54
|
+
progress indicators, and summary-table patterns all live in
|
|
143
55
|
[`contexts/communication/rules-auto/user-interaction-mechanics.md`](../contexts/communication/rules-auto/user-interaction-mechanics.md).
|
|
56
|
+
The rule above is the obligation surface; the mechanics file is the
|
|
57
|
+
lookup material.
|
|
@@ -5,7 +5,7 @@ description: "Verify before completion — run tests and quality tools before cl
|
|
|
5
5
|
alwaysApply: true
|
|
6
6
|
source: package
|
|
7
7
|
load_context:
|
|
8
|
-
-
|
|
8
|
+
- ../contexts/execution/verification-mechanics.md
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Verify Before Completion
|
|
@@ -187,7 +187,7 @@ After completing a significant code change, run this mental checklist:
|
|
|
187
187
|
| New API endpoint | OpenAPI annotations, `AGENTS.md` API section |
|
|
188
188
|
| New module created | Create `app/Modules/{Module}/agents/` |
|
|
189
189
|
| Service/repository signature changed | Check if referenced in `agents/docs/services-and-repos.md` |
|
|
190
|
-
| New environment variable | `.env.example`, `AGENTS.md`
|
|
190
|
+
| New environment variable | `.env.example`, `AGENTS.md` env section |
|
|
191
191
|
| Docker/compose change | `agents/docs/docker.md`, `Makefile` documentation |
|
|
192
192
|
| New Artisan command | `AGENTS.md` commands section |
|
|
193
193
|
| New pattern/convention introduced | Relevant guideline in `.augment/guidelines/` |
|
|
@@ -144,6 +144,48 @@ provider's reply, when available) for observability. Mixed runs
|
|
|
144
144
|
into concrete numbered options for the user. The user decides;
|
|
145
145
|
the council advises.
|
|
146
146
|
|
|
147
|
+
## Output path convention
|
|
148
|
+
|
|
149
|
+
Council artefacts (questions, responses, sessions) are **dev-time
|
|
150
|
+
scratch** — gitignored in both the package repo and consumer repos
|
|
151
|
+
and auto-pruned after `ai_council.session_retention_days` (default
|
|
152
|
+
7). They inform a decision; they are not the durable contract. The
|
|
153
|
+
durable contract lives in the roadmap / ADR / skill body that cites
|
|
154
|
+
the council's convergence inline.
|
|
155
|
+
|
|
156
|
+
**Linking to a specific council file is forbidden by
|
|
157
|
+
[`no-council-references`](../../rules/no-council-references.md)** —
|
|
158
|
+
gitignored, not in the cloned repo, gone after the retention window.
|
|
159
|
+
Inline the convergence with date + members instead.
|
|
160
|
+
|
|
161
|
+
Three directories, three modes:
|
|
162
|
+
|
|
163
|
+
| Mode | Path | Format |
|
|
164
|
+
|---|---|---|
|
|
165
|
+
| **Topic-anchored question** (paired with a roadmap or ADR) | `agents/council-questions/<topic-slug>.md` | Markdown |
|
|
166
|
+
| **Topic-anchored response** (paired with the question above) | `agents/council-responses/<topic-slug>.json` | JSON from `council:run --output` |
|
|
167
|
+
| **Ad-hoc session** (no durable artefact yet) | `agents/council-sessions/<UTC-timestamp>.json` | JSON from `council:run --output` |
|
|
168
|
+
|
|
169
|
+
`<topic-slug>` is kebab-case and **must match** the corresponding
|
|
170
|
+
roadmap / ADR slug if one exists (e.g. `path-fixes` mirrors the
|
|
171
|
+
matching `road-to-<topic-slug>` roadmap under `agents/roadmaps/`).
|
|
172
|
+
|
|
173
|
+
### Forbidden
|
|
174
|
+
|
|
175
|
+
- Files at `agents/` root (e.g. `agents/council-question-foo.md`).
|
|
176
|
+
- Dot-prefix scratch (e.g. `agents/.council-question-foo.md`).
|
|
177
|
+
- Any other directory below `agents/` (e.g. `agents/scratch/`,
|
|
178
|
+
`agents/tmp/`).
|
|
179
|
+
- Cross-references from any artefact to specific council files —
|
|
180
|
+
see [`no-council-references`](../../rules/no-council-references.md).
|
|
181
|
+
Inline the convergence summary instead, with date and member list
|
|
182
|
+
for traceability (`Council (claude-sonnet-4-5 + gpt-4o, YYYY-MM-DD)
|
|
183
|
+
reviewed N candidate strategies; converged on …`).
|
|
184
|
+
|
|
185
|
+
`scripts/check_council_layout.py` is the mechanical check for the
|
|
186
|
+
output path convention — wire it into the package's CI pipeline so
|
|
187
|
+
violations break the build.
|
|
188
|
+
|
|
147
189
|
## Output format
|
|
148
190
|
|
|
149
191
|
Every council reply MUST contain, in this order:
|
|
@@ -294,8 +336,16 @@ prompt as `<original artefact> + <prior round, anonymised>` so each
|
|
|
294
336
|
member can refine, agree, or push back on the previous critique
|
|
295
337
|
without seeing which provider produced which point.
|
|
296
338
|
|
|
339
|
+
The default round count comes from `ai_council.min_rounds` in
|
|
340
|
+
`.agent-settings.yml` (default `2` so members critique each other
|
|
341
|
+
at least once before convergence). The host agent does **not** ask
|
|
342
|
+
"how many rounds?" when the requested count is `<= min_rounds` —
|
|
343
|
+
the settings owner already made that decision. Ask only when a
|
|
344
|
+
genuinely complex artefact justifies more depth than the default.
|
|
345
|
+
|
|
297
346
|
| Property | Behaviour |
|
|
298
347
|
|---|---|
|
|
348
|
+
| Default count | `ai_council.min_rounds` (default `2`). Override per-invocation with `rounds:N` (or `--rounds N` to the CLI). |
|
|
299
349
|
| Anonymisation | Provider/model identity is stripped. Reviewers are labelled `Reviewer A / B / C…` in input order. |
|
|
300
350
|
| Errored prior responses | Skipped — they reveal nothing useful and can leak provider error formats. |
|
|
301
351
|
| Cost budget | Accumulates across rounds. A round-2 call that breaches the cap fires `on_overrun` exactly like a round-1 breach. |
|
|
@@ -322,6 +372,21 @@ Round 2: artefact + anonymised round 1 critiques
|
|
|
322
372
|
| **total** | | $0.0594 |
|
|
323
373
|
```
|
|
324
374
|
|
|
375
|
+
### Manual-mode parity
|
|
376
|
+
|
|
377
|
+
The orchestrator drives rounds the same way for `api` and `manual`
|
|
378
|
+
transports. One round = one full pass over every enabled member,
|
|
379
|
+
top-to-bottom, then `_augment_for_next_round()` folds the
|
|
380
|
+
anonymised critiques into the round-N+1 user prompt. For manual
|
|
381
|
+
mode this means: emit the round-1 block for member A → user
|
|
382
|
+
pastes A's reply → next member B → user pastes B's reply → host
|
|
383
|
+
agent consolidates round 1 → emit the round-2 block (now carrying
|
|
384
|
+
the anonymised round-1 critiques) for member A → … and so on
|
|
385
|
+
until the configured round count is reached. ManualClient's
|
|
386
|
+
internal "more feedback" follow-up loop (1 / 2 / 3 menu) is
|
|
387
|
+
**inside** a single member's chat thread and is orthogonal to the
|
|
388
|
+
orchestrator-level rounds.
|
|
389
|
+
|
|
325
390
|
## See also
|
|
326
391
|
|
|
327
392
|
- `/council` command — the user-facing entry point.
|
|
@@ -80,7 +80,7 @@ Route to the primary skill. Monitor findings for signals to chain additional ski
|
|
|
80
80
|
|
|
81
81
|
Merge all specialist findings into ONE prioritized output:
|
|
82
82
|
|
|
83
|
-
1. Confirmed root
|
|
83
|
+
1. Confirmed root → (with evidence)
|
|
84
84
|
2. Contributing factors
|
|
85
85
|
3. Risks not yet proven but worth checking
|
|
86
86
|
4. Concrete fixes (ordered by priority)
|