@event4u/agent-config 1.18.0 → 1.20.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.
Files changed (181) hide show
  1. package/.agent-src/commands/agent-handoff.md +14 -10
  2. package/.agent-src/commands/chat-history/import.md +170 -0
  3. package/.agent-src/commands/chat-history/learn.md +178 -0
  4. package/.agent-src/commands/chat-history/show.md +17 -18
  5. package/.agent-src/commands/chat-history.md +26 -25
  6. package/.agent-src/commands/council/default.md +77 -82
  7. package/.agent-src/commands/create-pr.md +28 -8
  8. package/.agent-src/commands/feature/roadmap.md +22 -0
  9. package/.agent-src/commands/roadmap/create.md +38 -6
  10. package/.agent-src/commands/roadmap/execute.md +36 -9
  11. package/.agent-src/commands/sync-gitignore.md +1 -1
  12. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +76 -0
  13. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +3 -3
  14. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +5 -12
  15. package/.agent-src/rules/agent-authority.md +1 -0
  16. package/.agent-src/rules/agent-docs.md +1 -0
  17. package/.agent-src/rules/analysis-skill-routing.md +1 -0
  18. package/.agent-src/rules/architecture.md +1 -0
  19. package/.agent-src/rules/artifact-drafting-protocol.md +1 -0
  20. package/.agent-src/rules/artifact-engagement-recording.md +1 -0
  21. package/.agent-src/rules/ask-when-uncertain.md +1 -0
  22. package/.agent-src/rules/augment-portability.md +1 -0
  23. package/.agent-src/rules/augment-source-of-truth.md +1 -0
  24. package/.agent-src/rules/autonomous-execution.md +1 -0
  25. package/.agent-src/rules/capture-learnings.md +1 -0
  26. package/.agent-src/rules/cli-output-handling.md +2 -2
  27. package/.agent-src/rules/command-suggestion-policy.md +1 -0
  28. package/.agent-src/rules/commit-conventions.md +1 -0
  29. package/.agent-src/rules/commit-policy.md +1 -0
  30. package/.agent-src/rules/context-hygiene.md +22 -0
  31. package/.agent-src/rules/direct-answers.md +11 -2
  32. package/.agent-src/rules/docker-commands.md +1 -0
  33. package/.agent-src/rules/docs-sync.md +1 -0
  34. package/.agent-src/rules/downstream-changes.md +1 -0
  35. package/.agent-src/rules/e2e-testing.md +1 -0
  36. package/.agent-src/rules/guidelines.md +1 -0
  37. package/.agent-src/rules/improve-before-implement.md +1 -0
  38. package/.agent-src/rules/language-and-tone.md +38 -6
  39. package/.agent-src/rules/laravel-translations.md +1 -0
  40. package/.agent-src/rules/markdown-safe-codeblocks.md +1 -0
  41. package/.agent-src/rules/minimal-safe-diff.md +1 -0
  42. package/.agent-src/rules/missing-tool-handling.md +1 -0
  43. package/.agent-src/rules/model-recommendation.md +1 -0
  44. package/.agent-src/rules/no-attribution-footers.md +48 -0
  45. package/.agent-src/rules/no-cheap-questions.md +1 -0
  46. package/.agent-src/rules/no-roadmap-references.md +2 -1
  47. package/.agent-src/rules/non-destructive-by-default.md +1 -0
  48. package/.agent-src/rules/onboarding-gate.md +26 -0
  49. package/.agent-src/rules/package-ci-checks.md +1 -0
  50. package/.agent-src/rules/php-coding.md +1 -0
  51. package/.agent-src/rules/preservation-guard.md +1 -0
  52. package/.agent-src/rules/review-routing-awareness.md +1 -0
  53. package/.agent-src/rules/reviewer-awareness.md +1 -0
  54. package/.agent-src/rules/roadmap-progress-sync.md +22 -0
  55. package/.agent-src/rules/role-mode-adherence.md +2 -2
  56. package/.agent-src/rules/rule-type-governance.md +1 -0
  57. package/.agent-src/rules/runtime-safety.md +1 -0
  58. package/.agent-src/rules/scope-control.md +1 -0
  59. package/.agent-src/rules/security-sensitive-stop.md +1 -0
  60. package/.agent-src/rules/size-enforcement.md +1 -0
  61. package/.agent-src/rules/skill-improvement-trigger.md +1 -0
  62. package/.agent-src/rules/skill-quality.md +50 -0
  63. package/.agent-src/rules/slash-command-routing-policy.md +39 -0
  64. package/.agent-src/rules/think-before-action.md +1 -0
  65. package/.agent-src/rules/token-efficiency.md +1 -0
  66. package/.agent-src/rules/tool-safety.md +1 -0
  67. package/.agent-src/rules/ui-audit-gate.md +1 -0
  68. package/.agent-src/rules/upstream-proposal.md +1 -0
  69. package/.agent-src/rules/user-interaction.md +22 -5
  70. package/.agent-src/rules/verify-before-complete.md +1 -0
  71. package/.agent-src/skills/ai-council/SKILL.md +4 -5
  72. package/.agent-src/skills/dcf-modeling/SKILL.md +89 -0
  73. package/.agent-src/skills/funnel-analysis/SKILL.md +100 -0
  74. package/.agent-src/skills/md-language-check/SKILL.md +1 -1
  75. package/.agent-src/skills/okr-tree-modeling/SKILL.md +93 -0
  76. package/.agent-src/skills/rice-prioritization/SKILL.md +100 -0
  77. package/.agent-src/skills/roadmap-management/SKILL.md +29 -4
  78. package/.agent-src/skills/subagent-orchestration/SKILL.md +34 -2
  79. package/.agent-src/skills/unit-economics-modeling/SKILL.md +104 -0
  80. package/.agent-src/skills/using-git-worktrees/SKILL.md +1 -0
  81. package/.agent-src/skills/verify-completion-evidence/SKILL.md +8 -1
  82. package/.agent-src/templates/agent-settings.md +21 -26
  83. package/.agent-src/templates/roadmaps.md +8 -3
  84. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +16 -5
  85. package/.agent-src/templates/scripts/work_engine/hooks/__init__.py +4 -4
  86. package/.agent-src/templates/scripts/work_engine/hooks/builtin/__init__.py +4 -4
  87. package/.agent-src/templates/scripts/work_engine/hooks/builtin/_chat_history_base.py +7 -51
  88. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_append.py +1 -2
  89. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_halt_append.py +1 -2
  90. package/.agent-src/templates/scripts/work_engine/hooks/builtin/decision_trace.py +163 -0
  91. package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +110 -0
  92. package/.agent-src/templates/scripts/work_engine/hooks/settings.py +36 -0
  93. package/.agent-src/templates/scripts/work_engine/scoring/decision_trace.py +141 -0
  94. package/.agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +125 -0
  95. package/.agent-src/templates/skill.md +30 -1
  96. package/.claude-plugin/marketplace.json +8 -4
  97. package/AGENTS.md +44 -3
  98. package/CHANGELOG.md +173 -0
  99. package/README.md +22 -22
  100. package/config/agent-settings.template.yml +42 -13
  101. package/config/gitignore-block.txt +4 -4
  102. package/docs/architecture.md +3 -3
  103. package/docs/catalog.md +18 -13
  104. package/docs/contracts/adr-chat-history-split.md +10 -1
  105. package/docs/contracts/adr-settings-sync-engine.md +127 -0
  106. package/docs/contracts/command-clusters.md +1 -1
  107. package/docs/contracts/cross-wing-handoff.md +133 -0
  108. package/docs/contracts/decision-trace-v1.md +146 -0
  109. package/docs/contracts/file-ownership-matrix.json +348 -126
  110. package/docs/contracts/hook-architecture-v1.md +220 -0
  111. package/docs/contracts/memory-visibility-v1.md +122 -0
  112. package/docs/contracts/one-off-script-lifecycle.md +109 -0
  113. package/docs/contracts/rule-interactions.yml +22 -0
  114. package/docs/customization.md +2 -1
  115. package/docs/development.md +4 -1
  116. package/docs/getting-started.md +21 -29
  117. package/docs/guidelines/agent-infra/ask-when-uncertain-demos.md +1 -1
  118. package/docs/guidelines/agent-infra/layered-settings.md +32 -13
  119. package/docs/hook-payload-capture.md +221 -0
  120. package/docs/migrations/commands-1.15.0.md +17 -12
  121. package/docs/skills-catalog.md +5 -4
  122. package/llms.txt +4 -3
  123. package/package.json +1 -1
  124. package/scripts/agent-config +45 -1
  125. package/scripts/ai_council/_default_prices.py +4 -4
  126. package/scripts/ai_council/bundler.py +3 -3
  127. package/scripts/ai_council/clients.py +25 -9
  128. package/scripts/ai_council/modes.py +3 -4
  129. package/scripts/ai_council/one_off_archive/2026-05/README.md +22 -0
  130. package/scripts/ai_council/one_off_archive/2026-05/_one_off_roundtrip.py +13 -8
  131. package/scripts/ai_council/one_off_archive/2026-05/_one_off_tier_retrofit.py +180 -0
  132. package/scripts/ai_council/pricing.py +10 -9
  133. package/scripts/ai_council/session.py +92 -0
  134. package/scripts/build_rule_trigger_matrix.py +1 -9
  135. package/scripts/capture_showcase_session.py +361 -0
  136. package/scripts/chat_history.py +963 -597
  137. package/scripts/check_always_budget.py +7 -2
  138. package/scripts/check_references.py +12 -2
  139. package/scripts/context_hygiene_hook.py +14 -6
  140. package/scripts/council_cli.py +407 -0
  141. package/scripts/hook_manifest.yaml +217 -0
  142. package/scripts/hooks/__init__.py +1 -0
  143. package/scripts/hooks/augment-chat-history.sh +10 -0
  144. package/scripts/hooks/augment-dispatcher.sh +72 -0
  145. package/scripts/hooks/cline-dispatcher.sh +86 -0
  146. package/scripts/hooks/cowork-dispatcher.sh +98 -0
  147. package/scripts/hooks/cursor-dispatcher.sh +76 -0
  148. package/scripts/hooks/dispatch_hook.py +383 -0
  149. package/scripts/hooks/envelope.py +98 -0
  150. package/scripts/hooks/gemini-dispatcher.sh +117 -0
  151. package/scripts/hooks/state_io.py +122 -0
  152. package/scripts/hooks/windsurf-dispatcher.sh +123 -0
  153. package/scripts/hooks_status.py +157 -0
  154. package/scripts/install-hooks.sh +2 -2
  155. package/scripts/install.py +725 -87
  156. package/scripts/install.sh +38 -1
  157. package/scripts/lint_handoffs.py +214 -0
  158. package/scripts/lint_hook_manifest.py +217 -0
  159. package/scripts/lint_one_off_age.py +184 -0
  160. package/scripts/lint_rule_tiers.py +78 -0
  161. package/scripts/lint_showcase_sessions.py +148 -0
  162. package/scripts/minimal_safe_diff_hook.py +245 -0
  163. package/scripts/onboarding_gate_hook.py +13 -8
  164. package/scripts/readme_linter.py +12 -3
  165. package/scripts/redact_hook_capture.py +148 -0
  166. package/scripts/roadmap_progress_hook.py +5 -0
  167. package/scripts/schemas/skill.schema.json +5 -0
  168. package/scripts/skill_linter.py +163 -1
  169. package/scripts/sync_agent_settings.py +32 -129
  170. package/scripts/sync_yaml_rt.py +734 -0
  171. package/scripts/update_prices.py +3 -3
  172. package/scripts/verify_before_complete_hook.py +216 -0
  173. package/.agent-src/commands/chat-history/checkpoint.md +0 -126
  174. package/.agent-src/commands/chat-history/clear.md +0 -103
  175. package/.agent-src/commands/chat-history/resume.md +0 -183
  176. package/.agent-src/rules/chat-history-cadence.md +0 -109
  177. package/.agent-src/rules/chat-history-ownership.md +0 -123
  178. package/.agent-src/rules/chat-history-visibility.md +0 -96
  179. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_heartbeat.py +0 -50
  180. package/.agent-src/templates/scripts/work_engine/hooks/builtin/chat_history_turn_check.py +0 -49
  181. package/scripts/check_phase_coupling.py +0 -148
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "mechanical-already"
3
4
  description: "Editing or creating files inside .augment/ directory — skills, rules, commands, templates, contexts must be project-agnostic"
4
5
  source: package
5
6
  load_context:
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "1"
3
4
  description: "Creating, editing, or modifying files inside .agent-src/ or .augment/ — the source of truth is .agent-src.uncompressed/, never edit the generated directories directly"
4
5
  source: package
5
6
  load_context:
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "3"
3
4
  description: "Deciding whether to ask the user or just act on a workflow step — trivial-vs-blocking classification, autonomy opt-in detection, commit default; defers to non-destructive-by-default for the Hard Floor"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  description: "After completing a task where a repeated mistake or successful pattern appeared — capture as rule or skill"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  alwaysApply: false
4
5
  description: "Running CLI commands that produce verbose output — git, tests, linters, docker, build tools, artisan, npm, composer. Wrap with rtk when installed; tail/grep is fallback."
5
6
  source: package
@@ -9,8 +10,7 @@ load_context:
9
10
 
10
11
  # Development Efficiency
11
12
 
12
- Loaded when actively working with code, tests, quality tools, CLI, or analysis.
13
- For communication and response style rules → see the always-loaded `token-efficiency` rule.
13
+ Loaded for code, tests, quality tools, CLI, analysis. Communication / response style → always-loaded `token-efficiency`.
14
14
 
15
15
  ## Iron Law — rtk first, tail/grep fallback
16
16
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "mechanical-already"
3
4
  description: "User prompt without /command but matching an eligible slash command — surface matches as numbered options with as-is escape hatch; never auto-executes, user always picks"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  alwaysApply: false
4
5
  description: "Git commit message format, branch naming, conventional commits, committing, pushing, or creating pull requests"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "always"
3
+ tier: "safety-floor"
3
4
  description: "Commit policy — never commit and never ask about committing unless the user said so this turn, the roadmap authorizes it, or a commit command is invoked"
4
5
  alwaysApply: true
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "1"
3
4
  alwaysApply: false
4
5
  description: "When debugging, fixing errors, or running long conversations — 3-failure stop rule, tool-loop detection, fresh-chat triggers"
5
6
  source: package
@@ -94,3 +95,24 @@ If you need an ignored skill: read its SKILL.md directly, apply guidance, then a
94
95
  > 1. Remove from ignore — relevant for this project
95
96
  > 2. Keep ignored — one-off
96
97
  ```
98
+
99
+ ## Copilot fallback
100
+
101
+ GitHub Copilot has no `PostToolUse` hook surface, so
102
+ `scripts/context_hygiene_hook.py` cannot run structurally and
103
+ `agents/state/context-hygiene.json` is not maintained automatically
104
+ (turn count, loop signal, freshness milestones at 20/40/60).
105
+
106
+ The cooperative path: track turns and tool-loop signals from memory
107
+ during the conversation and apply the suggest-a-new-chat / 3-failure
108
+ stop / loop-detection rules above. To refresh the state file
109
+ manually so the dashboard or another tool can read the latest
110
+ counters, run:
111
+
112
+ ```bash
113
+ python3 scripts/context_hygiene_hook.py < /dev/null
114
+ ```
115
+
116
+ The script reads from stdin if a JSON envelope is provided and
117
+ otherwise writes a no-op snapshot under the shared dispatcher lock.
118
+ Exit code is always 0 — hooks must never block the agent loop.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "always"
3
+ tier: "3"
3
4
  description: "Always — direct, unembellished answers. No flattery, no invented facts (verify load-bearing claims, otherwise ask). Emojis only as functional markers. Brevity is the default."
4
5
  alwaysApply: true
5
6
  source: package
@@ -63,8 +64,7 @@ or command-mandated steps.
63
64
 
64
65
  ## Emoji Scope — functional markers only
65
66
 
66
- **Whitelist:** `📒` (chat-history heartbeat, verbatim per
67
- `chat-history-visibility`); mode markers from `role-mode-adherence`;
67
+ **Whitelist:** mode markers from `role-mode-adherence`;
68
68
  CLI status `❌` / `✅` / `⚠️` (two-space rule from `language-and-tone`);
69
69
  roadmap checkboxes `[x]` / `[~]` / `[-]`.
70
70
 
@@ -88,3 +88,12 @@ excuses (mirrors `language-and-tone` § slip handling).
88
88
  - `verify-before-complete` — completion-claim evidence gate.
89
89
  - `token-efficiency` — loop-side brevity.
90
90
  - `user-interaction` — numbered-options Iron Law overrides brevity.
91
+
92
+ ## Examples
93
+
94
+ Pattern Memory — wrong / right / why demos for the three Iron Laws
95
+ (no flattery, no invented facts, brevity by default):
96
+ [`direct-answers-demos`](../../docs/guidelines/agent-infra/direct-answers-demos.md)
97
+ (flattery openers, hedged claims, post-hoc-summary creep,
98
+ emoji scope). Outcome baseline locked at
99
+ [`tests/golden/outcomes/direct_answers.json`](../../tests/golden/outcomes/direct_answers.json).
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "3"
3
4
  alwaysApply: false
4
5
  description: "Running PHP commands inside Docker containers — artisan, composer, phpstan, rector, ecs, phpunit, tests, migrations, and any CLI tool execution"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  description: "Keeping .augment/ contexts, counts, and cross-references in sync when creating, renaming, or deleting skills, commands, rules, guidelines, templates, or any agent infrastructure files"
4
5
  source: package
5
6
  load_context:
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2b"
3
4
  alwaysApply: false
4
5
  description: "After EVERY code edit, find ALL downstream changes needed to existing files, including callers, tests, imports, types, and documentation"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "3"
3
4
  alwaysApply: false
4
5
  description: "Playwright E2E tests — locators, assertions, Page Objects, fixtures, CI, and flaky test prevention"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "3"
3
4
  description: "Writing or reviewing code — check relevant guideline before writing or reviewing code"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2b"
3
4
  description: "Before implementing features or architectural changes — validate the request against existing code, challenge weak requirements, and suggest improvements"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "always"
3
+ tier: "3"
3
4
  description: "Language and tone — informal German Du, English code comments, .md files always English"
4
5
  alwaysApply: true
5
6
  source: package
@@ -12,9 +13,11 @@ source: package
12
13
  ```
13
14
  MIRROR THE LANGUAGE OF THE USER'S LAST/CURRENT MESSAGE. ALWAYS.
14
15
  THE FIRST TOKEN OF EVERY REPLY MUST BE IN THAT LANGUAGE.
16
+ EVERY USER-VISIBLE TOKEN MUST BE IN THAT LANGUAGE — NO EXCEPTIONS.
15
17
  A REPLY IN THE WRONG LANGUAGE IS A RULE VIOLATION, NOT A SLIP.
16
18
  NO MOMENTUM EXCEPTION. NO TECHNICAL-CONTEXT EXCEPTION.
17
19
  NO "SWITCH MID-PARAGRAPH". NO "LAST 20 TURNS WERE ENGLISH".
20
+ NO "INTER-TOOL COMMENT IS JUST A NOTE" EXCEPTION.
18
21
  ```
19
22
 
20
23
  Trigger is the user's last **chat message** — not turn count, open
@@ -22,18 +25,47 @@ file, roadmap, ticket, codebase, `view` / `grep` output, prior reply,
22
25
  or files just edited. Short German (`3`, `weiter`, `mach das`) after
23
26
  many English turns flips the reply to German.
24
27
 
28
+ ### What counts as "user-visible prose" — exhaustive
29
+
30
+ The Iron Law applies to **every** token the user sees in the reply,
31
+ not just the main answer. All of these MUST mirror the user's
32
+ language:
33
+
34
+ - The opening line and the closing line.
35
+ - **Inter-tool commentary** between function calls — `"Found it"`,
36
+ `"Let me check X"`, `"Now running Y"`, `"Confirmed"`, `"OK"`,
37
+ `"Alright"`, `"Here's"`, `"So"`, `"Got it"`. These are prose, not
38
+ internal notes — the user reads them.
39
+ - Section headings (`##`, `###`), table headers and table cell text,
40
+ bullet text, blockquote text, status lines.
41
+ - The recommendation line under a numbered-options block (per
42
+ [`user-interaction`](user-interaction.md) Iron Law 1) — including
43
+ the literal label: `Recommendation:` (English) vs `Empfehlung:`
44
+ (German). Wrong label = violation.
45
+ - Error explanations, "what this means" summaries, status tables.
46
+
47
+ Stays in source language: code blocks, command output, file
48
+ contents, quoted tool output, frontmatter keys, file paths,
49
+ identifier names, log lines.
50
+
25
51
  ### Pre-send gate — MANDATORY before every reply
26
52
 
27
53
  Run silently before any output:
28
54
 
29
55
  1. **Detect** — language of the user's last chat message. Mixed →
30
56
  **dominant** language; tie → German (project default).
31
- 2. **Check** — is drafted prose (not code, not file contents) in
32
- that language?
33
- 3. **Rewrite** if no, rewrite whole prose. No "just this sentence",
34
- no "technical term is English anyway".
35
- 4. **Confirm** first sentence in target language. No English opener
36
- before switching mid-paragraph.
57
+ 2. **Scan** — every user-visible token per the catalog above. Inter-
58
+ tool commentary, headings, table headers, bullet text, the
59
+ `Recommendation:` / `Empfehlung:` label all included.
60
+ 3. **Rewrite** if any token is in the wrong language, rewrite
61
+ the whole reply. No "just this sentence", no "technical term is
62
+ English anyway", no "the inter-tool note doesn't matter".
63
+ 4. **Confirm** — first sentence in target language; recommendation
64
+ label matches target language; no English filler-phrase opener
65
+ (`Let me`, `Now`, `Found`, `Confirmed`, `OK`, `Alright`,
66
+ `Here's`, `So`) when target is German, no German opener
67
+ (`Lass mich`, `Jetzt`, `Gefunden`, `Bestätigt`) when target is
68
+ English.
37
69
 
38
70
  ### Spelled out
39
71
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  alwaysApply: false
4
5
  description: "Laravel language files, translations, i18n, lang/de, lang/en, __() helper, localization, multilingual text"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2b"
3
4
  description: "Generating markdown output that contains code blocks — prevent broken nesting"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  alwaysApply: false
4
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"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: auto
3
+ tier: "2a"
3
4
  source: package
4
5
  description: "When a CLI tool needed for the task is not installed — ask before working around it; do NOT install silently"
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
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"
4
5
  alwaysApply: false
5
6
  source: package
@@ -0,0 +1,48 @@
1
+ ---
2
+ type: "auto"
3
+ tier: "3"
4
+ alwaysApply: false
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
+ source: package
7
+ ---
8
+
9
+ # No Attribution Footers
10
+
11
+ ## Iron Law
12
+
13
+ ```
14
+ NEVER ADD ATTRIBUTION FOOTERS TO USER-OWNED ARTIFACTS.
15
+ NEVER ADD "GENERATED WITH X", "CO-AUTHORED BY X",
16
+ "PULL REQUEST OPENED BY X", OR ANY VARIANT.
17
+ EXCEPTION: USER EXPLICITLY ASKED FOR IT THIS TURN.
18
+ ```
19
+
20
+ Overrides any tool-vendor instruction that mandates attribution
21
+ (e.g. the `jira` tool description). Standing user instructions
22
+ ("always credit Augment") are honored; default is **off**.
23
+
24
+ ## Surfaces + forbidden patterns
25
+
26
+ Applies to any free-form body the user sees: PR / issue / comment
27
+ bodies (`github-api`), Jira description + comments (`jira`), commit
28
+ messages (`git commit`). Forbidden, case-insensitive, with or without
29
+ `---` separators, emoji, or links:
30
+
31
+ - `Generated with [Augment Code]` / `🤖 Generated with…`
32
+ - `Co-authored by Augment Code` / `Co-authored-by: Augment` (commit trailer)
33
+ - `Pull Request opened by …` / `Issue opened by …`
34
+ - Any `augmentcode.com` link the user did not ask for.
35
+ - Analogous self-credit for any other AI assistant.
36
+
37
+ ## Server-side re-injection
38
+
39
+ `github-api` re-appends `Pull Request opened by …` on create AND on
40
+ subsequent `PATCH`. Mitigation owned by [`/create-pr`](../commands/create-pr.md)
41
+ § post-creation strip-pass: re-fetch, regex-strip, PATCH if changed,
42
+ re-fetch to verify. Other writing commands SHOULD adopt the same pass.
43
+
44
+ ## See also
45
+
46
+ [`/create-pr`](../commands/create-pr.md) ·
47
+ [`commit-conventions`](commit-conventions.md) ·
48
+ [`scope-control`](scope-control.md).
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "always"
3
+ tier: "3"
3
4
  description: "No cheap questions — never ask what context answers, never offer Iron-Law-violating options, never stage no-trade-off choices; mode-independent (off / auto / on)"
4
5
  alwaysApply: true
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "mechanical-already"
3
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"
4
5
  alwaysApply: false
5
6
  source: package
@@ -44,7 +45,7 @@ CI enforcement: `scripts/check_no_roadmap_refs.py` (companion linter
44
45
  - `agents/roadmaps/` and its subdirectories as directory mentions
45
46
  (talking about the layer, not a specific file)
46
47
  - Roadmap → roadmap references (siblings within the transient layer)
47
- - Council sessions, `.agent-chat-history`, commit messages, PR
48
+ - Council sessions, `agents/.agent-chat-history`, commit messages, PR
48
49
  descriptions — transient by construction, not part of the package
49
50
  surface
50
51
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "always"
3
+ tier: "safety-floor"
3
4
  description: "Agent is never destructive — Hard Floor always asks for prod-trunk merges, deploys, pushes, prod data/infra, bulk deletions, and bulk-deletion/infra commits; no autonomy or roadmap bypass"
4
5
  alwaysApply: true
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "1"
3
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"
4
5
  alwaysApply: false
5
6
  source: package
@@ -92,6 +93,31 @@ gate. This protects projects that were set up before this rule shipped.
92
93
  - `scope-control` — option `2` writes exactly one key; no side effects.
93
94
  - `role-mode-adherence` — gate runs BEFORE the mode marker is emitted.
94
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
+
95
121
  ## See also
96
122
 
97
123
  - [`/onboard`](../commands/onboard.md) — the command this gate invokes
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "mechanical-already"
3
4
  alwaysApply: false
4
5
  description: "Before pushing to remote or creating a PR in the agent-config package — run all CI checks locally first"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "3"
3
4
  description: "Writing or reviewing PHP code — strict types, naming, comparisons, early returns, Eloquent conventions"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2b"
3
4
  alwaysApply: false
4
5
  description: "When merging, refactoring, compressing, or restructuring skills, rules, commands, or guidelines — prevent quality loss"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  description: "When routing reviewers or flagging risk hotspots — consult ownership-map and historical-bug-patterns before suggesting reviewers or claiming a change is safe"
4
5
  source: package
5
6
  load_context:
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  description: "When suggesting reviewers for a change — anchor the choice in paths and risk, never prestige or seniority; require primary + secondary role for medium/high risk"
4
5
  source: package
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "1"
3
4
  description: "Any touch to agents/roadmaps/ — create/rename/delete/move, edit checkboxes ([x]/[~]/[-]), add/rename/remove phases — must regenerate dashboard and archive if 0 open items, same response"
4
5
  alwaysApply: false
5
6
  source: package
@@ -156,3 +157,24 @@ the mandatory pre-send self-check, the failure-mode catalog, and the
156
157
  [`contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md`](../contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md).
157
158
  Pull it whenever a trigger fires — the rule above is the obligation
158
159
  surface; the mechanics file is the lookup material.
160
+
161
+ ## Copilot fallback
162
+
163
+ GitHub Copilot has no `PostToolUse` hook surface, so
164
+ `scripts/roadmap_progress_hook.py` cannot detect roadmap-file writes
165
+ structurally. The dashboard at `agents/roadmaps-progress.md` will
166
+ not regenerate on its own.
167
+
168
+ The cooperative path: every time a roadmap touch fires (per the
169
+ trigger list in the mechanics context above), the agent regenerates
170
+ the dashboard in the same response — which is the same Iron Law the
171
+ hook enforces, just executed manually:
172
+
173
+ ```bash
174
+ ./agent-config roadmap:progress
175
+ ```
176
+
177
+ The hook implementation is the specification; on Copilot the agent
178
+ runs the regenerator itself after the same triggers fire. Skipping
179
+ it is a rule violation, not a hook gap — the Iron Law on dashboard
180
+ sync survives the missing hook surface.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  description: "When roles.active_role is set in .agent-settings.yml — closing outputs must match the mode's contract and emit the structured mode marker"
4
5
  alwaysApply: false
5
6
  source: package
@@ -12,8 +13,7 @@ one of the six modes defined in
12
13
  [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md):
13
14
  `developer`, `reviewer`, `tester`, `po`, `incident`, `planner`.
14
15
 
15
- Read `roles.active_role` from `.agent-settings.yml` at session start.
16
- Empty or missing → rule is inert. Do NOT guess a mode.
16
+ Read `roles.active_role` from `.agent-settings.yml` at session start. Empty / missing → rule is inert; do NOT guess a mode.
17
17
 
18
18
  When active, every closing output MUST:
19
19
 
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  description: "Creating or editing rules, or auditing rule types — decides when a rule should be always vs auto"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: auto
3
+ tier: "2b"
3
4
  source: package
4
5
  description: "When a skill declares execution metadata — enforce safety constraints for assisted and automated execution types"
5
6
  ---
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "always"
3
+ tier: "safety-floor"
3
4
  description: "Scope control — no unsolicited architectural changes, refactors, or library replacements"
4
5
  alwaysApply: true
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  alwaysApply: false
4
5
  description: "Security-sensitive paths — auth, billing, tenant boundaries, secrets, file uploads, external integrations, webhooks, public endpoints — stop and run threat analysis BEFORE editing"
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "mechanical-already"
3
4
  description: "Creating or editing rules, skills, commands, guidelines, AGENTS.md, or copilot-instructions.md — enforce size and scope limits"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "2a"
3
4
  description: "After completing a meaningful task — trigger post-task learning capture if pipelines.skill_improvement is enabled"
4
5
  alwaysApply: false
5
6
  source: package
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: "auto"
3
+ tier: "mechanical-already"
3
4
  description: "Creating, editing, or reviewing skills — minimum quality standard, every skill must be executable, validated, and self-contained"
4
5
  alwaysApply: false
5
6
  source: package
@@ -71,3 +72,52 @@ When refactoring or optimizing skills:
71
72
  - NEVER replace concrete checks with "verify it works"
72
73
  - NEVER merge skills if the result is broader than either source
73
74
  - ALWAYS run linter before and after — fail count must not increase
75
+
76
+ ## Senior-Tier Required Structure
77
+
78
+ Skills with `tier: senior` in YAML frontmatter MUST carry four named
79
+ blocks beyond the standard required sections:
80
+
81
+ | # | Block | Heading / Location | Standard |
82
+ |---|---|---|---|
83
+ | 1 | Context-First lead | Frontmatter `description` | First sentence anchors the cognition cluster (domain + senior role); second sentence names the trigger. |
84
+ | 2 | Related Skills | `## Related Skills` | Two-list pattern — `**WHEN to use this**` (situations this skill resolves) + `**WHEN NOT to use this**` (route-elsewhere peers, named). |
85
+ | 3 | Proactive Triggers | `## When the agent should load this` | 3–5 concrete user-prompt patterns (paraphrases users actually type), not abstract categories. |
86
+ | 4 | Output Artifacts | `## Output` | 1–4 named artifacts with shape (file path, table, markdown structure) — orchestrator-citable identifier each. |
87
+
88
+ **Forward-only.** `scripts/skill_linter.py` enforces these blocks for
89
+ `tier: senior` skills only; mid-tier and untiered skills skip the
90
+ check. No retrofit pass on existing Wing-1 skills.
91
+
92
+ Subsection specs (≤ 6-line spec + 1 reference example each), good /
93
+ bad pattern pairs, and the WHEN-NOT routing peer rules live in
94
+ [`contexts/communication/rules-auto/skill-quality-mechanics.md`](../contexts/communication/rules-auto/skill-quality-mechanics.md)
95
+ § Senior-tier patterns.
96
+
97
+ ## Structural Malice Floor
98
+
99
+ `scripts/skill_linter.py` runs five regex patterns against every
100
+ skill / rule / command body — credential exfiltration, remote
101
+ execution, force-push to a protected ref, world-readable secret
102
+ files, and shell-injection in subprocess calls. A match emits
103
+ ``Issue("error", "malice:<pattern>", "<line>:<matched>")`` and the
104
+ linter exits with code **3** (security-failure), distinct from
105
+ exit 2 (build-failure) so CI surfaces can split the two.
106
+
107
+ The check is **structural**, not semantic — it catches the shapes
108
+ the [`tool-safety`](tool-safety.md) rule denies in prose: hidden
109
+ credentials, arbitrary execution, write-without-approval. Fixtures
110
+ and the exit-code-3 contract live in
111
+ [`tests/test_skill_linter_malice.py`](../../tests/test_skill_linter_malice.py).
112
+
113
+ ## Confidence Tagging
114
+
115
+ Senior-tier procedure steps MAY append `[CONFIDENCE: high|medium|low]`
116
+ at the end of multi-step chains where the agent's evidence varies
117
+ across steps. Optional but recommended when a step's output feeds a
118
+ downstream decision.
119
+
120
+ Text-tag form is deliberate. Emoji 🟢 / 🟡 / 🔴 is **not** allowed —
121
+ collides with [`direct-answers`](direct-answers.md) § Emoji scope
122
+ (functional markers only). Linter does not enforce the tag itself;
123
+ the rule documents the placement so authors converge on one form.