@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
|
@@ -1,49 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "2a"
|
|
4
|
-
alwaysApply: false
|
|
5
4
|
description: "Laravel language files, translations, i18n, lang/de, lang/en, __() helper, localization, multilingual text"
|
|
6
5
|
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- path_prefix: "lang/"
|
|
8
|
+
- keyword: "translation"
|
|
9
|
+
- keyword: "__()"
|
|
10
|
+
- keyword: "trans("
|
|
11
|
+
routes_to:
|
|
12
|
+
- "skill:laravel"
|
|
7
13
|
---
|
|
8
14
|
|
|
9
|
-
# Laravel
|
|
15
|
+
# Laravel Translations
|
|
10
16
|
|
|
11
|
-
|
|
17
|
+
**Iron Law.** Use `__()`/`trans()` with language keys for every user-visible string; mirror keys across `lang/<locale>/` files.
|
|
12
18
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
**Correct** (`lang/en/report.php`):
|
|
16
|
-
```php
|
|
17
|
-
return [
|
|
18
|
-
'type.daily_report' => 'Daily Report',
|
|
19
|
-
'type.care_report' => 'Care Report',
|
|
20
|
-
];
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
**Wrong** — nested arrays are forbidden:
|
|
24
|
-
```php
|
|
25
|
-
return [
|
|
26
|
-
'type' => [
|
|
27
|
-
'daily_report' => 'Daily Report',
|
|
28
|
-
'care_report' => 'Care Report',
|
|
29
|
-
],
|
|
30
|
-
];
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Both languages are mandatory
|
|
34
|
-
|
|
35
|
-
Every language line **must exist in both** `lang/de/` and `lang/en/`.
|
|
36
|
-
When you add a key to one file, immediately add the translated key to the other.
|
|
37
|
-
|
|
38
|
-
Missing translations are a bug — the app ships to both German and English users.
|
|
39
|
-
|
|
40
|
-
## Referencing language lines
|
|
41
|
-
|
|
42
|
-
Use the `__()` helper with the dot-notation key:
|
|
43
|
-
|
|
44
|
-
```php
|
|
45
|
-
__('report.type.daily_report')
|
|
46
|
-
__('email.report.created.subject', ['number' => $number])
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Never hardcode user-visible strings in PHP — always use language files.
|
|
19
|
+
Body migrated to `skill:laravel` (per P4 of `road-to-kernel-and-router.md`).
|
|
20
|
+
Trigger-set above activates this routing under the `balanced` and `full` profiles.
|
|
@@ -4,6 +4,10 @@ tier: "2b"
|
|
|
4
4
|
description: "Generating markdown output that contains code blocks — prevent broken nesting"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
source: package
|
|
7
|
+
triggers:
|
|
8
|
+
- intent: "markdown with code blocks"
|
|
9
|
+
- keyword: "triple backticks"
|
|
10
|
+
- file_pattern: "*.md"
|
|
7
11
|
---
|
|
8
12
|
|
|
9
13
|
# Markdown Safe Codeblocks
|
|
@@ -4,6 +4,10 @@ tier: "2a"
|
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
description: "When writing or reviewing a diff — the smallest change that solves the stated problem; no drive-by edits, no opportunistic refactors, no reformatting of untouched code"
|
|
6
6
|
source: package
|
|
7
|
+
triggers:
|
|
8
|
+
- intent: "writing a diff"
|
|
9
|
+
- intent: "reviewing a diff"
|
|
10
|
+
- keyword: "drive-by"
|
|
7
11
|
---
|
|
8
12
|
|
|
9
13
|
# Minimal Safe Diff
|
|
@@ -3,6 +3,10 @@ type: auto
|
|
|
3
3
|
tier: "2a"
|
|
4
4
|
source: package
|
|
5
5
|
description: "When a CLI tool needed for the task is not installed — ask before working around it; do NOT install silently"
|
|
6
|
+
triggers:
|
|
7
|
+
- keyword: "command not found"
|
|
8
|
+
- keyword: "not installed"
|
|
9
|
+
- intent: "install tool"
|
|
6
10
|
---
|
|
7
11
|
|
|
8
12
|
# Missing Tool Handling
|
|
@@ -2,70 +2,18 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "2a"
|
|
4
4
|
description: "Starting a new task, switching task type, or invoking a command — detect task complexity and recommend the optimal model (Opus/Sonnet/GPT) before any work"
|
|
5
|
-
alwaysApply: false
|
|
6
5
|
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- phrase: "switch task"
|
|
8
|
+
- phrase: "new task"
|
|
9
|
+
- phrase: "which model"
|
|
10
|
+
routes_to:
|
|
11
|
+
- "command:set-cost-profile"
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# Model Recommendation
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
"Claude Sonnet" → `sonnet`, "GPT" → `gpt`, "Gemini" → `gemini`).
|
|
16
|
+
**Iron Law.** On task / model switch, recommend the optimal model for the task complexity before any work begins.
|
|
13
17
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
## When to act
|
|
17
|
-
|
|
18
|
-
**BEFORE starting any work**, classify the task the user is asking for:
|
|
19
|
-
|
|
20
|
-
- **opus**: refactoring, architecture, complex debugging, code review, multi-file changes
|
|
21
|
-
- **sonnet**: daily coding, bug fixes, tests, simple features, quality checks, PRs, commits, config
|
|
22
|
-
- **gpt**: complex agent flows, automations, research
|
|
23
|
-
|
|
24
|
-
**This check is MANDATORY** — not optional, not "nice to have". It runs:
|
|
25
|
-
- On the **first user message** of a conversation
|
|
26
|
-
- On **every clear topic/task change** (e.g., from refactoring to "create PR")
|
|
27
|
-
- **When a command is invoked** (e.g., `/create-pr` → sonnet task)
|
|
28
|
-
|
|
29
|
-
**⚠️ COMMAND INVOCATIONS ARE TASK CHANGES.** When the user invokes a command (e.g., `/create-pr`,
|
|
30
|
-
`/commit`, `/fix-ci`), ALWAYS re-evaluate the model before executing. Commands like `/create-pr`,
|
|
31
|
-
`/commit`, `/fix-pr-comments` are sonnet tasks — even if the previous task was opus-level.
|
|
32
|
-
This is the most commonly missed check. Do NOT skip it.
|
|
33
|
-
|
|
34
|
-
**Priority over commands rule**: This check runs BEFORE the `slash-command-routing-policy` rule. If a model switch
|
|
35
|
-
is recommended, show the suggestion first. Only after the user responds, execute the command.
|
|
36
|
-
|
|
37
|
-
**If ambiguous** (could be opus or sonnet): default to **sonnet** — cheaper, and the user can escalate.
|
|
38
|
-
|
|
39
|
-
If the recommended model ≠ detected model, suggest switching **before doing any work**:
|
|
40
|
-
|
|
41
|
-
```
|
|
42
|
-
> 💡 This looks like {task type} — best suited for **{recommended model}**.
|
|
43
|
-
> You're currently on **{detected model}**.
|
|
44
|
-
>
|
|
45
|
-
> 1. I've switched to {recommended} — continue
|
|
46
|
-
> 2. Stay on {detected model}
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**⛔ STOP AND WAIT.** After showing this suggestion, your response ENDS.
|
|
50
|
-
Do NOT read files, create tasks, start coding, or do anything else in the same response.
|
|
51
|
-
The ONLY content after the numbered options is the end of your message.
|
|
52
|
-
Wait for the user to pick 1 or 2 before proceeding.
|
|
53
|
-
|
|
54
|
-
→ Full mapping and heuristics: `.augment/contexts/model-recommendations.md`
|
|
55
|
-
|
|
56
|
-
## Switch confirmation
|
|
57
|
-
|
|
58
|
-
- If user picks **1**: accept and continue. No follow-up question.
|
|
59
|
-
- If user picks **2**: accept. Don't ask again until the task type changes.
|
|
60
|
-
- **Never ask more than once per task** unless the task type changes significantly.
|
|
61
|
-
|
|
62
|
-
## Downgrade after Opus
|
|
63
|
-
|
|
64
|
-
After completing an opus-level phase (architecture done, root cause found, refactoring plan ready),
|
|
65
|
-
suggest switching back to sonnet for implementation. Same numbered options.
|
|
66
|
-
|
|
67
|
-
## Gemini warning
|
|
68
|
-
|
|
69
|
-
If detected model is `gemini`: warn that Gemini is **not recommended** for this project.
|
|
70
|
-
Suggest switching to the best model for the current task (opus/sonnet/gpt).
|
|
71
|
-
Show the same numbered options as above. Repeat once if dismissed — then accept.
|
|
18
|
+
Body migrated to `command:set-cost-profile` (per P4 of `road-to-kernel-and-router.md`).
|
|
19
|
+
Trigger-set above activates this routing under the `balanced` and `full` profiles.
|
|
@@ -4,6 +4,11 @@ tier: "3"
|
|
|
4
4
|
alwaysApply: false
|
|
5
5
|
description: "Generating PR/issue/comment/commit-message bodies — forbids unsolicited 'Generated with', 'Co-authored by', or 'Pull Request opened by' attribution footers in any user-owned artifact"
|
|
6
6
|
source: package
|
|
7
|
+
triggers:
|
|
8
|
+
- intent: "PR body"
|
|
9
|
+
- intent: "commit message"
|
|
10
|
+
- intent: "Jira comment"
|
|
11
|
+
- keyword: "co-authored"
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# No Attribution Footers
|
|
@@ -8,12 +8,7 @@ source: package
|
|
|
8
8
|
|
|
9
9
|
# No Cheap Questions
|
|
10
10
|
|
|
11
|
-
A question is **cheap** when
|
|
12
|
-
an option breaches an Iron Law, choices differ only in sequencing /
|
|
13
|
-
format, or one option is obviously dominant. Mode-independent — holds
|
|
14
|
-
in `off`, `auto`, and `on`; autonomy never lifts the no-trade-off
|
|
15
|
-
floor (cf. [`autonomous-execution`](autonomous-execution.md), whose
|
|
16
|
-
"trivial" failure modes only scope to `on` / opted-in `auto`).
|
|
11
|
+
A question is **cheap** when context already answers, an option breaches an Iron Law, choices differ only in sequencing / format, or one option is dominant. Mode-independent — `off`, `auto`, `on`. Autonomy never lifts the floor.
|
|
17
12
|
|
|
18
13
|
## The Iron Laws
|
|
19
14
|
|
|
@@ -23,54 +18,43 @@ NEVER PRESENT AN OPTION THAT VIOLATES AN IRON LAW.
|
|
|
23
18
|
NEVER OFFER NUMBERED CHOICES WITHOUT A REAL TRADE-OFF.
|
|
24
19
|
```
|
|
25
20
|
|
|
26
|
-
Hold in `off`, `auto`, and `on`. Autonomy never lifts them.
|
|
27
|
-
|
|
28
21
|
## What counts as cheap
|
|
29
22
|
|
|
30
23
|
- **Sequencing** — "Step 2 or 3 next?" when the roadmap orders them.
|
|
31
24
|
- **Format-only** — "Table or paragraph?"; no semantic trade-off.
|
|
32
25
|
- **Commit asks** — forbidden by [`commit-policy`](commit-policy.md).
|
|
33
26
|
- **CI / test asks** — [`verify-before-complete`](verify-before-complete.md) decides, not the user.
|
|
34
|
-
- **Fenced-step re-asks** — "Start Phase 1?" after *"plan only"*; see
|
|
35
|
-
|
|
36
|
-
- **Iron-Law option** — breaches `commit-policy`, `scope-control` § git-ops, or `non-destructive-by-default`.
|
|
27
|
+
- **Fenced-step re-asks** — "Start Phase 1?" after *"plan only"*; see [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
|
|
28
|
+
- **Iron-Law option** — breaches `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default`.
|
|
37
29
|
- **Context-derived** — answer follows from prior turn / standing instruction / roadmap; act, state the assumption inline.
|
|
38
30
|
- **Dominant option** — one choice obviously correct; alternatives carry no upside.
|
|
39
31
|
- **Re-ask after decline** — forbidden per [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
|
|
40
32
|
|
|
41
|
-
Examples per class:
|
|
42
|
-
[`asking-and-brevity-examples`](../../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
|
|
33
|
+
Examples per class: [`asking-and-brevity-examples § cheap-question-catalog`](../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
|
|
43
34
|
|
|
44
35
|
## Pre-Send Self-Check — MANDATORY before every question
|
|
45
36
|
|
|
46
37
|
Run silently before any numbered-options block:
|
|
47
38
|
|
|
48
39
|
1. Answer already in stated context?
|
|
49
|
-
2. Any option violates `commit-policy`, `scope-control
|
|
40
|
+
2. Any option violates `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default`?
|
|
50
41
|
3. Options pure sequencing / format, no trade-off?
|
|
51
42
|
4. One option obviously dominant?
|
|
52
|
-
5. User fenced next step (*"plan only"*, *"review first"*) → deliver + handback per `scope-control
|
|
53
|
-
6. User already declined? Re-ask forbidden per `scope-control
|
|
43
|
+
5. User fenced next step (*"plan only"*, *"review first"*) → deliver + handback per `scope-control § fenced step`.
|
|
44
|
+
6. User already declined? Re-ask forbidden per `scope-control § decline = silence`.
|
|
54
45
|
|
|
55
|
-
Any "yes" → **do not ask**. Pick the dominant path, state assumption
|
|
56
|
-
inline (*"assuming X — adjust if wrong"*), hand back. One-question-per-turn
|
|
57
|
-
from [`ask-when-uncertain`](ask-when-uncertain.md) still applies when
|
|
58
|
-
the question is genuine.
|
|
46
|
+
Any "yes" → **do not ask**. Pick the dominant path, state assumption inline (*"assuming X — adjust if wrong"*), hand back. One-question-per-turn from [`ask-when-uncertain`](ask-when-uncertain.md) still applies when the question is genuine.
|
|
59
47
|
|
|
60
48
|
## When asking IS allowed
|
|
61
49
|
|
|
62
50
|
- Real architectural / scope decision with non-obvious trade-offs.
|
|
63
|
-
- Vague-request trigger per [`ask-when-uncertain`](ask-when-uncertain.md#vague-request-triggers--must-ask).
|
|
51
|
+
- Vague-request trigger per [`ask-when-uncertain § vague-triggers`](ask-when-uncertain.md#vague-request-triggers--must-ask).
|
|
64
52
|
- Security-sensitive path per [`security-sensitive-stop`](security-sensitive-stop.md).
|
|
65
|
-
- Hard Floor per `non-destructive-by-default` — confirmation mandatory.
|
|
53
|
+
- Hard Floor per [`non-destructive-by-default`](non-destructive-by-default.md) — confirmation mandatory.
|
|
66
54
|
- Two genuinely-equivalent paths; user preference is the tiebreaker.
|
|
67
55
|
|
|
68
56
|
In doubt → ask. This rule narrows asking, never widens silence.
|
|
69
57
|
|
|
70
58
|
## Interactions
|
|
71
59
|
|
|
72
|
-
|
|
73
|
-
- [`autonomous-execution`](autonomous-execution.md) — mode-scoped triviality there; mode-independent floor here.
|
|
74
|
-
- [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) — Iron Laws this rule defends.
|
|
75
|
-
- [`user-interaction`](user-interaction.md) — numbered-options shape; this rule decides whether to send.
|
|
76
|
-
- [`direct-answers`](direct-answers.md) — brevity, no flattery.
|
|
60
|
+
[`ask-when-uncertain`](ask-when-uncertain.md) · [`autonomous-execution`](autonomous-execution.md) · [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) · [`user-interaction`](user-interaction.md) · [`direct-answers`](direct-answers.md).
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: "auto"
|
|
3
|
+
tier: "mechanical-already"
|
|
4
|
+
description: "Linking a specific file in agents/council-{questions,responses,sessions}/ from any artifact — council files are gitignored, local-only, auto-pruned; inline the convergence instead"
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
source: package
|
|
7
|
+
triggers:
|
|
8
|
+
- path_prefix: "agents/council-questions/"
|
|
9
|
+
- path_prefix: "agents/council-responses/"
|
|
10
|
+
- path_prefix: "agents/council-sessions/"
|
|
11
|
+
- intent: "link to council artefact"
|
|
12
|
+
routes_to:
|
|
13
|
+
- "skill:ai-council"
|
|
14
|
+
validator_ignore:
|
|
15
|
+
- type: "substring"
|
|
16
|
+
pattern: ".agent-src.uncompressed/"
|
|
17
|
+
reason: "Rule references the authoring tree when contrasting transient council files."
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# No Council References from Any Artifact
|
|
21
|
+
|
|
22
|
+
Council artefacts under `agents/council-{questions,responses,sessions}/`
|
|
23
|
+
are **gitignored, local-only, and auto-pruned** after
|
|
24
|
+
`ai_council.session_retention_days` (default 7). They are
|
|
25
|
+
disposable scratch — never part of the repo, never visible to a
|
|
26
|
+
reviewer who clones, never durable across the retention window.
|
|
27
|
+
|
|
28
|
+
A link to a specific council file rots three ways: gitignored
|
|
29
|
+
(not in cloned repo), pruned after retention window (gone even
|
|
30
|
+
locally), and the installed `.augment/` projection cannot follow a
|
|
31
|
+
path that does not exist in the consumer.
|
|
32
|
+
|
|
33
|
+
## The Iron Law
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
NEVER LINK TO A SPECIFIC FILE INSIDE
|
|
37
|
+
agents/council-{questions,responses,sessions}/
|
|
38
|
+
FROM ANY ARTIFACT — ROADMAPS INCLUDED.
|
|
39
|
+
INLINE THE CONVERGENCE WITH DATE + MEMBERS, NEVER THE PATH.
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Applies to **every** artifact. Council artefacts are more transient
|
|
43
|
+
than roadmaps — the local copy disappears too.
|
|
44
|
+
|
|
45
|
+
## Forbidden vs allowed
|
|
46
|
+
|
|
47
|
+
**Forbidden** in any `*.md` / `*.yml` / `*.json` / `*.py`:
|
|
48
|
+
`agents/council-questions/<file>.md`,
|
|
49
|
+
`agents/council-responses/<file>.json`,
|
|
50
|
+
`agents/council-sessions/<file>.json` or `<timestamp>/...`.
|
|
51
|
+
|
|
52
|
+
**Allowed**: directory mentions (talking about the output convention,
|
|
53
|
+
not a specific file); the `ai-council` skill and `/council:*` commands
|
|
54
|
+
documenting the output path schema; inline convergence summary —
|
|
55
|
+
e.g. *"Council (claude-sonnet-4-5 + gpt-4o, 2026-05-06) converged
|
|
56
|
+
on …"* with date + members, no filepath.
|
|
57
|
+
|
|
58
|
+
## What to do instead
|
|
59
|
+
|
|
60
|
+
Identify the durable conclusion (decision, contract, lesson),
|
|
61
|
+
inline a convergence-summary block (members, date, cost if relevant
|
|
62
|
+
— see `ai-council` § Output format), and optionally promote the
|
|
63
|
+
lesson to `agents/contexts/`. The context is durable; the council
|
|
64
|
+
file was the catalyst.
|
|
65
|
+
|
|
66
|
+
Failure mode: *"I'll just link to the session JSON, it's evidence."*
|
|
67
|
+
The session is gone in 7 days. **Inline first, link never.**
|
|
68
|
+
|
|
69
|
+
## See also
|
|
70
|
+
|
|
71
|
+
- [`no-roadmap-references`](no-roadmap-references.md) — sibling rule
|
|
72
|
+
for the roadmap layer
|
|
73
|
+
- [`augment-source-of-truth`](augment-source-of-truth.md) — edit
|
|
74
|
+
`.agent-src.uncompressed/`
|
|
75
|
+
- [`ai-council`](../skills/ai-council/SKILL.md) — output path
|
|
76
|
+
convention and convergence-summary format
|
|
@@ -4,6 +4,13 @@ tier: "mechanical-already"
|
|
|
4
4
|
description: "Adding a link to a specific file in agents/roadmaps/ from any stable artifact (rule, skill, command, context, guideline) — roadmaps are transient; promote durable findings to agents/contexts/ instead"
|
|
5
5
|
alwaysApply: false
|
|
6
6
|
source: package
|
|
7
|
+
triggers:
|
|
8
|
+
- path_prefix: "agents/roadmaps/"
|
|
9
|
+
- intent: "link from stable artifact"
|
|
10
|
+
validator_ignore:
|
|
11
|
+
- type: "substring"
|
|
12
|
+
pattern: ".agent-src.uncompressed/"
|
|
13
|
+
reason: "Rule contrasts the authoring tree with transient roadmap files."
|
|
7
14
|
---
|
|
8
15
|
|
|
9
16
|
# No Roadmap References from Stable Artifacts
|
|
@@ -5,16 +5,12 @@ description: "Agent is never destructive — Hard Floor always asks for prod-tru
|
|
|
5
5
|
alwaysApply: true
|
|
6
6
|
source: package
|
|
7
7
|
load_context:
|
|
8
|
-
-
|
|
8
|
+
- ../contexts/authority/destructive-mechanics.md
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Non-Destructive by Default
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
or production systems. This is the universal safety floor — it applies
|
|
15
|
-
in every mode, every conversation, every turn. Autonomy settings, "just
|
|
16
|
-
keep going" directives, roadmap authorizations, and standing
|
|
17
|
-
permissions narrow other rules; **none of them lift this one**.
|
|
13
|
+
Universal safety floor. Applies in every mode, every conversation, every turn. Autonomy, "just keep going", roadmap authorizations, and standing permissions narrow other rules — **none lift this one**.
|
|
18
14
|
|
|
19
15
|
## The Iron Law
|
|
20
16
|
|
|
@@ -24,61 +20,35 @@ NO AUTONOMY SETTING, NO ROADMAP STEP, NO STANDING INSTRUCTION,
|
|
|
24
20
|
NO "JUST KEEP GOING" CAN BYPASS IT.
|
|
25
21
|
```
|
|
26
22
|
|
|
27
|
-
Triggers below require explicit user confirmation **on this turn** —
|
|
28
|
-
not from a previous turn, not from a roadmap, not from a standing
|
|
29
|
-
autonomy directive (see [`autonomous-execution`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)
|
|
30
|
-
for the anchor list of recognized phrases):
|
|
23
|
+
Triggers below require explicit user confirmation **on this turn** — not from a previous turn, not from a roadmap, not from a standing autonomy directive (anchor list: [`autonomous-execution § opt-in detection`](autonomous-execution.md#opt-in-detection--match-by-intent-not-exact-string)):
|
|
31
24
|
|
|
32
25
|
| Trigger | Examples |
|
|
33
26
|
|---|---|
|
|
34
|
-
| **Production-branch merge** |
|
|
27
|
+
| **Production-branch merge** | `main`, `master`, `prod`, `production`, `release/*`, or any branch the project marks as deployment trunk |
|
|
35
28
|
| **Deploy / release** | `terraform apply` on prod, `kubectl apply` on prod, deploy scripts, release commands, tag pushes that trigger CI deployment |
|
|
36
29
|
| **Push to remote** | any `git push` (also covered by [`scope-control`](scope-control.md), restated so the floor never weakens) |
|
|
37
|
-
| **Production data / infra** | prod DB writes
|
|
38
|
-
| **Whimsical
|
|
39
|
-
| **Commit containing bulk deletions or infra changes** |
|
|
30
|
+
| **Production data / infra** | prod DB writes / migrations, prod config, secrets rotation, IAM / role / policy, DNS, anything in a `prod`-scoped path or pipeline |
|
|
31
|
+
| **Whimsical / unscoped bulk deletion** | `rm -rf <dir>`, `git rm -r`, glob deletions, `DROP TABLE`, `TRUNCATE`, `git reset --hard` past unpushed work — when **not required** by the current task. Task-aligned WIP deletions are allowed (below) |
|
|
32
|
+
| **Commit containing bulk deletions or infra changes** | commit whose diff removes a directory, deletes ≥5 unrelated files, or touches Terraform / Pulumi / k8s manifests / Ansible / cloud-config — surface diff and confirm even when [`commit-policy`](commit-policy.md) otherwise authorizes |
|
|
40
33
|
|
|
41
|
-
Standing "just keep going" + next step crosses the floor → STOP,
|
|
42
|
-
surface what's about to happen (one numbered-options block per
|
|
43
|
-
[`user-interaction`](user-interaction.md)), wait. Other rules still
|
|
44
|
-
apply to every other step.
|
|
34
|
+
Standing "just keep going" + next step crosses the floor → STOP, surface what's about to happen (one numbered-options block per [`user-interaction`](user-interaction.md)), wait. Other rules still apply to every other step.
|
|
45
35
|
|
|
46
36
|
## Not in scope — deterministic regeneration
|
|
47
37
|
|
|
48
|
-
Output regenerated from a tracked source (compression, code-gen,
|
|
49
|
-
formatter passes, lock-file rebuilds) is not destructive — the source
|
|
50
|
-
of truth makes it reversible. Lives in
|
|
51
|
-
[`autonomous-execution`](autonomous-execution.md#trivial--just-act-do-not-ask)
|
|
52
|
-
§ Trivial, not here. Per-file diff approval is theater.
|
|
38
|
+
Output regenerated from a tracked source (compression, code-gen, formatter passes, lock-file rebuilds) is reversible from source — **not destructive**. Lives in [`autonomous-execution § Trivial`](autonomous-execution.md#trivial--just-act-do-not-ask). Per-file diff approval is theater.
|
|
53
39
|
|
|
54
40
|
## Bulk deletions during WIP — allowed if task-connected
|
|
55
41
|
|
|
56
|
-
Deletions inside an **active, user-stated task** are allowed in the
|
|
57
|
-
working tree, **even multiple files or multiple folders** — the Hard
|
|
58
|
-
Floor moves to the **commit** (row 6 above), not the in-progress edit.
|
|
59
|
-
Whimsical / drive-by / unnamed-scope deletions still trip the floor on
|
|
60
|
-
the edit. Full allowed/forbidden lists in
|
|
61
|
-
[`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
|
|
62
|
-
§ Bulk deletions during WIP.
|
|
42
|
+
Deletions inside an **active, user-stated task** are allowed in the working tree, even multiple files / folders — the Hard Floor moves to the **commit** (row 6), not the in-progress edit. Whimsical / drive-by / unnamed-scope deletions still trip the floor on the edit. Allowed / forbidden lists: [`destructive-mechanics § Bulk deletions during WIP`](../contexts/authority/destructive-mechanics.md).
|
|
63
43
|
|
|
64
44
|
## Failure modes
|
|
65
45
|
|
|
66
|
-
|
|
67
|
-
refusing-named-deletions, commit-without-diff-surface,
|
|
68
|
-
roadmap-step-≠-commit-authorization) lives in
|
|
69
|
-
[`destructive-mechanics`](../contexts/authority/destructive-mechanics.md)
|
|
70
|
-
§ Failure modes. Reach for it when a Hard-Floor situation feels
|
|
71
|
-
ambiguous; the rule itself stays focused on the trigger table.
|
|
46
|
+
Full catalog (autonomy-as-cover, roadmap-as-authorization, refusing-named-deletions, commit-without-diff-surface, roadmap-step ≠ commit-authorization): [`destructive-mechanics § Failure modes`](../contexts/authority/destructive-mechanics.md).
|
|
72
47
|
|
|
73
48
|
## Cloud Behavior
|
|
74
49
|
|
|
75
|
-
|
|
76
|
-
Skills API, and any cloud agent. There is no "cloud override" — the
|
|
77
|
-
floor predates and outranks any platform-specific autonomy default.
|
|
50
|
+
Floor applies on every surface — Claude.ai Web, Skills API, any cloud agent. No "cloud override".
|
|
78
51
|
|
|
79
52
|
## See also
|
|
80
53
|
|
|
81
|
-
|
|
82
|
-
- [`commit-policy`](commit-policy.md) — four commit-exception paths; row 6 of the floor still applies on top of all four
|
|
83
|
-
- [`scope-control`](scope-control.md) — git-ops permission gate; the floor is the never-overridable subset
|
|
84
|
-
- [`user-interaction`](user-interaction.md) — numbered-options Iron Law for the confirmation prompt
|
|
54
|
+
[`autonomous-execution`](autonomous-execution.md) · [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`user-interaction`](user-interaction.md).
|
|
@@ -2,126 +2,18 @@
|
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "1"
|
|
4
4
|
description: "First turn of a conversation on a project — check onboarding.onboarded in .agent-settings.yml; when false, prompt the user to run /onboard before executing any other request"
|
|
5
|
-
alwaysApply: false
|
|
6
5
|
source: package
|
|
6
|
+
triggers:
|
|
7
|
+
- phrase: "first turn"
|
|
8
|
+
- keyword: "onboarding"
|
|
9
|
+
- path_prefix: ".agent-settings.yml"
|
|
10
|
+
routes_to:
|
|
11
|
+
- "command:onboard"
|
|
7
12
|
---
|
|
8
13
|
|
|
9
14
|
# Onboarding Gate
|
|
10
15
|
|
|
11
|
-
|
|
12
|
-
> on Augment + Claude Code (`SessionStart`). The hook refreshes
|
|
13
|
-
> `agents/state/onboarding-gate.json` from `.agent-settings.yml`; the
|
|
14
|
-
> prose below is the spec the hook implements and the fallback for
|
|
15
|
-
> platforms without a hook surface.
|
|
16
|
+
**Iron Law.** First turn of a project: if `onboarding.onboarded` is false, prompt `/onboard` before executing any other request.
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
`personal.ide`, `personal.rtk_installed`, and cost profile confirmation.
|
|
20
|
-
|
|
21
|
-
## When to activate
|
|
22
|
-
|
|
23
|
-
Read `onboarding.onboarded` from `.agent-settings.yml` **once per
|
|
24
|
-
conversation**, on the very first agent turn.
|
|
25
|
-
|
|
26
|
-
- Key missing entirely → **legacy project**. Treat as onboarded, do
|
|
27
|
-
nothing. Do not write the key.
|
|
28
|
-
- `true` → do nothing. Rule is inert for the rest of the conversation.
|
|
29
|
-
- `false` → gate is active for this conversation (see below).
|
|
30
|
-
|
|
31
|
-
Cache the result for the whole conversation. Do not re-read on every turn.
|
|
32
|
-
|
|
33
|
-
## Gate behavior when `onboarded: false`
|
|
34
|
-
|
|
35
|
-
On the **first** turn of the conversation, before executing the user's
|
|
36
|
-
request, emit this prompt and stop:
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
> 👋 First-run setup hasn't been completed for this project.
|
|
40
|
-
>
|
|
41
|
-
> Run /onboard once (≈2 minutes) to capture:
|
|
42
|
-
> • your name, IDE, and rtk status
|
|
43
|
-
> • cost profile + learning loop confirmation
|
|
44
|
-
>
|
|
45
|
-
> 1. Run /onboard now
|
|
46
|
-
> 2. Skip — mark as onboarded and continue with the request
|
|
47
|
-
> 3. Snooze — continue just this turn; ask again next conversation
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
- `1` → invoke `/onboard`. Resume the user's original request afterwards.
|
|
51
|
-
- `2` → set `onboarding.onboarded: true` in `.agent-settings.yml` (touch
|
|
52
|
-
only that field; preserve comments and order). Then execute the
|
|
53
|
-
original request.
|
|
54
|
-
- `3` → proceed with the original request. Do not ask again in this
|
|
55
|
-
conversation. Do not write the file.
|
|
56
|
-
|
|
57
|
-
Free-text replies (`"mach weiter"`, `"just do it"`) count as `3`.
|
|
58
|
-
|
|
59
|
-
## Exceptions — do NOT block
|
|
60
|
-
|
|
61
|
-
Skip the gate when the user's request already is an onboarding or
|
|
62
|
-
settings operation, so we don't prompt users mid-setup:
|
|
63
|
-
|
|
64
|
-
- `/onboard`, `/set-cost-profile`, `/mode`
|
|
65
|
-
- The user explicitly asks about `.agent-settings.yml` or onboarding
|
|
66
|
-
- Incident / break-glass signals (`hotfix`, `break-glass`, `"prod is
|
|
67
|
-
down"`). The gate waits for normal operations to resume.
|
|
68
|
-
|
|
69
|
-
## Non-blocking for legacy projects
|
|
70
|
-
|
|
71
|
-
If `.agent-settings.yml` exists but has no `onboarding` section at all,
|
|
72
|
-
treat as onboarded. Only `onboarded: false` (explicit) triggers the
|
|
73
|
-
gate. This protects projects that were set up before this rule shipped.
|
|
74
|
-
|
|
75
|
-
## What this rule does NOT do
|
|
76
|
-
|
|
77
|
-
- Write `onboarded: true` automatically. Only `/onboard` (step 6) and
|
|
78
|
-
the user's explicit `2` choice do that.
|
|
79
|
-
- Re-prompt across turns in the same conversation. One prompt per
|
|
80
|
-
conversation, max.
|
|
81
|
-
- Replace normal settings edits. Mid-life changes are ad-hoc (edit the
|
|
82
|
-
file directly or ask the agent, which follows
|
|
83
|
-
[`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md#section-aware-merge-rules));
|
|
84
|
-
this rule is a one-time gate.
|
|
85
|
-
- Run on every agent turn. First turn only.
|
|
86
|
-
|
|
87
|
-
## Interactions
|
|
88
|
-
|
|
89
|
-
- `ask-when-uncertain` — the gate uses its numbered-options iron law;
|
|
90
|
-
one question per turn.
|
|
91
|
-
- `language-and-tone` — prompt is translated to the user's language at
|
|
92
|
-
runtime; `.md` source stays English.
|
|
93
|
-
- `scope-control` — option `2` writes exactly one key; no side effects.
|
|
94
|
-
- `role-mode-adherence` — gate runs BEFORE the mode marker is emitted.
|
|
95
|
-
|
|
96
|
-
## Copilot fallback
|
|
97
|
-
|
|
98
|
-
GitHub Copilot has no `SessionStart` hook surface, so
|
|
99
|
-
`scripts/onboarding_gate_hook.py` cannot run structurally and
|
|
100
|
-
`agents/state/onboarding-gate.json` is not refreshed for the agent.
|
|
101
|
-
On the first turn of a Copilot conversation:
|
|
102
|
-
|
|
103
|
-
1. Read `onboarding.onboarded` from `.agent-settings.yml` directly
|
|
104
|
-
(one read per conversation, then cache as the prose above
|
|
105
|
-
describes).
|
|
106
|
-
2. Optionally refresh the state file manually so other tooling sees
|
|
107
|
-
the same value the hook would have written:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
python3 scripts/onboarding_gate_hook.py < /dev/null
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
The script reads `.agent-settings.yml`, atomically writes
|
|
114
|
-
`agents/state/onboarding-gate.json`, and exits 0 — same payload
|
|
115
|
-
the Augment / Claude / Cursor / Cline / Windsurf / Gemini hook
|
|
116
|
-
would have produced.
|
|
117
|
-
3. Apply the gate behavior from "Gate behavior when `onboarded:
|
|
118
|
-
false`" above. The cooperative path is the spec; the hook is the
|
|
119
|
-
cache.
|
|
120
|
-
|
|
121
|
-
## See also
|
|
122
|
-
|
|
123
|
-
- [`/onboard`](../commands/onboard.md) — the command this gate invokes
|
|
124
|
-
- [`layered-settings`](../../docs/guidelines/agent-infra/layered-settings.md) — merge rules for mid-life edits
|
|
125
|
-
- [`agent-settings` template](../templates/agent-settings.md) — `onboarding.onboarded` reference
|
|
126
|
-
- [`rule-type-governance`](rule-type-governance.md) — why this is `always`
|
|
127
|
-
- [`hardening-pattern`](../../agents/contexts/hardening-pattern.md) — Tier 1 mechanical-rule contract
|
|
18
|
+
Body migrated to `command:onboard` (per P4 of `road-to-kernel-and-router.md`).
|
|
19
|
+
Trigger-set above activates this routing under the `balanced` and `full` profiles.
|
|
@@ -1,46 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "mechanical-already"
|
|
4
|
-
alwaysApply: false
|
|
5
4
|
description: "Before pushing to remote or creating a PR in the agent-config package — run all CI checks locally first"
|
|
6
5
|
source: package
|
|
7
|
-
|
|
8
|
-
-
|
|
6
|
+
triggers:
|
|
7
|
+
- phrase: "task ci"
|
|
8
|
+
- phrase: "before push"
|
|
9
|
+
- phrase: "before pr"
|
|
10
|
+
routes_to:
|
|
11
|
+
- "skill:lint-skills"
|
|
9
12
|
---
|
|
10
13
|
|
|
11
|
-
# Package
|
|
14
|
+
# Package Ci Checks
|
|
12
15
|
|
|
13
|
-
|
|
16
|
+
**Iron Law.** Run `task ci` locally and confirm green before pushing or opening a PR in this package.
|
|
14
17
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## The Iron Law
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
NEVER push without running ALL CI checks locally first.
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
Every CI pipeline failure is preventable by running these checks before pushing.
|
|
25
|
-
|
|
26
|
-
## Required checks — see mechanics
|
|
27
|
-
|
|
28
|
-
Five checks must pass locally before push, in this order:
|
|
29
|
-
|
|
30
|
-
1. **Sync** — `compress.sh --check` and `--check-hashes`.
|
|
31
|
-
2. **Consistency** — `check_compression.py`, `check_references.py`, `check_portability.py`.
|
|
32
|
-
3. **Linter** — `skill_linter.py --all`, 0 FAIL required.
|
|
33
|
-
4. **Tests** — `pytest tests/`.
|
|
34
|
-
5. **README** — `readme_linter.py`.
|
|
35
|
-
|
|
36
|
-
The full command snippets, common-failure notes per step, the quick
|
|
37
|
-
chained one-liner, and the post-edit workflow ("after editing
|
|
38
|
-
skills/rules", "after editing `scripts/compress.py`") all live in
|
|
39
|
-
[`contexts/communication/rules-auto/package-ci-checks-mechanics.md`](../contexts/communication/rules-auto/package-ci-checks-mechanics.md).
|
|
40
|
-
Pull it whenever pre-push verification is needed.
|
|
41
|
-
|
|
42
|
-
## Do NOT
|
|
43
|
-
|
|
44
|
-
- Do NOT push "to see if CI passes" — that wastes pipeline minutes
|
|
45
|
-
- Do NOT skip hash checks because "I only changed one file"
|
|
46
|
-
- Do NOT assume tests pass because linter passes — they check different things
|
|
18
|
+
Body migrated to `skill:lint-skills` (per P4 of `road-to-kernel-and-router.md`).
|
|
19
|
+
Trigger-set above activates this routing under the `balanced` and `full` profiles.
|