@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.
Files changed (238) hide show
  1. package/.agent-src/commands/agents.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +1 -1
  3. package/.agent-src/commands/bug-investigate.md +2 -2
  4. package/.agent-src/commands/chat-history/import.md +60 -64
  5. package/.agent-src/commands/compress.md +12 -0
  6. package/.agent-src/commands/context/create.md +2 -2
  7. package/.agent-src/commands/context.md +1 -1
  8. package/.agent-src/commands/copilot-agents.md +1 -1
  9. package/.agent-src/commands/council/default.md +17 -5
  10. package/.agent-src/commands/council.md +1 -1
  11. package/.agent-src/commands/e2e-heal.md +1 -1
  12. package/.agent-src/commands/e2e-plan.md +1 -1
  13. package/.agent-src/commands/feature/dev.md +3 -3
  14. package/.agent-src/commands/feature.md +1 -1
  15. package/.agent-src/commands/fix/seeder.md +2 -2
  16. package/.agent-src/commands/fix.md +1 -1
  17. package/.agent-src/commands/jira-ticket.md +1 -1
  18. package/.agent-src/commands/judge.md +2 -2
  19. package/.agent-src/commands/memory.md +1 -1
  20. package/.agent-src/commands/mode.md +5 -5
  21. package/.agent-src/commands/module.md +1 -1
  22. package/.agent-src/commands/onboard.md +4 -4
  23. package/.agent-src/commands/optimize/augmentignore.md +1 -1
  24. package/.agent-src/commands/optimize-prompt.md +61 -0
  25. package/.agent-src/commands/optimize.md +1 -1
  26. package/.agent-src/commands/override.md +1 -1
  27. package/.agent-src/commands/review-changes.md +1 -1
  28. package/.agent-src/commands/review-routing.md +1 -1
  29. package/.agent-src/commands/roadmap.md +1 -1
  30. package/.agent-src/commands/set-cost-profile.md +3 -3
  31. package/.agent-src/commands/sync-agent-settings.md +2 -2
  32. package/.agent-src/commands/tests/create.md +2 -2
  33. package/.agent-src/commands/tests.md +1 -1
  34. package/.agent-src/commands/threat-model.md +4 -4
  35. package/.agent-src/contexts/authority/commit-mechanics.md +14 -1
  36. package/.agent-src/contexts/authority/destructive-mechanics.md +14 -1
  37. package/.agent-src/contexts/authority/scope-mechanics.md +5 -0
  38. package/.agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +76 -0
  39. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +1 -1
  40. package/.agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +98 -0
  41. package/.agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +93 -0
  42. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +128 -5
  43. package/.agent-src/contexts/execution/autonomy-mechanics.md +44 -0
  44. package/.agent-src/contexts/model-recommendations.md +2 -2
  45. package/.agent-src/contexts/override-system.md +1 -1
  46. package/.agent-src/personas/product-owner.md +2 -2
  47. package/.agent-src/personas/qa.md +1 -1
  48. package/.agent-src/rules/agent-authority.md +5 -6
  49. package/.agent-src/rules/agent-docs.md +11 -53
  50. package/.agent-src/rules/analysis-skill-routing.md +10 -40
  51. package/.agent-src/rules/architecture.md +6 -1
  52. package/.agent-src/rules/artifact-drafting-protocol.md +5 -0
  53. package/.agent-src/rules/artifact-engagement-recording.md +23 -59
  54. package/.agent-src/rules/ask-when-uncertain.md +24 -47
  55. package/.agent-src/rules/augment-portability.md +14 -62
  56. package/.agent-src/rules/augment-source-of-truth.md +10 -1
  57. package/.agent-src/rules/autonomous-execution.md +17 -98
  58. package/.agent-src/rules/capture-learnings.md +9 -80
  59. package/.agent-src/rules/cli-output-handling.md +12 -42
  60. package/.agent-src/rules/command-suggestion-policy.md +25 -73
  61. package/.agent-src/rules/commit-conventions.md +9 -58
  62. package/.agent-src/rules/commit-policy.md +16 -47
  63. package/.agent-src/rules/context-hygiene.md +5 -0
  64. package/.agent-src/rules/direct-answers.md +21 -50
  65. package/.agent-src/rules/docker-commands.md +11 -45
  66. package/.agent-src/rules/docs-sync.md +10 -56
  67. package/.agent-src/rules/downstream-changes.md +5 -0
  68. package/.agent-src/rules/e2e-testing.md +9 -44
  69. package/.agent-src/rules/guidelines.md +13 -75
  70. package/.agent-src/rules/improve-before-implement.md +10 -2
  71. package/.agent-src/rules/language-and-tone.md +41 -106
  72. package/.agent-src/rules/laravel-translations.md +11 -40
  73. package/.agent-src/rules/markdown-safe-codeblocks.md +4 -0
  74. package/.agent-src/rules/minimal-safe-diff.md +4 -0
  75. package/.agent-src/rules/missing-tool-handling.md +4 -0
  76. package/.agent-src/rules/model-recommendation.md +9 -61
  77. package/.agent-src/rules/no-attribution-footers.md +5 -0
  78. package/.agent-src/rules/no-cheap-questions.md +11 -27
  79. package/.agent-src/rules/no-council-references.md +76 -0
  80. package/.agent-src/rules/no-roadmap-references.md +7 -0
  81. package/.agent-src/rules/non-destructive-by-default.md +13 -43
  82. package/.agent-src/rules/onboarding-gate.md +9 -117
  83. package/.agent-src/rules/package-ci-checks.md +10 -37
  84. package/.agent-src/rules/php-coding.md +10 -55
  85. package/.agent-src/rules/preservation-guard.md +9 -0
  86. package/.agent-src/rules/review-routing-awareness.md +9 -97
  87. package/.agent-src/rules/reviewer-awareness.md +8 -83
  88. package/.agent-src/rules/roadmap-progress-sync.md +7 -170
  89. package/.agent-src/rules/role-mode-adherence.md +6 -2
  90. package/.agent-src/rules/rule-type-governance.md +8 -66
  91. package/.agent-src/rules/runtime-safety.md +5 -0
  92. package/.agent-src/rules/scope-control.md +17 -62
  93. package/.agent-src/rules/security-sensitive-stop.md +7 -1
  94. package/.agent-src/rules/size-enforcement.md +6 -1
  95. package/.agent-src/rules/skill-improvement-trigger.md +9 -49
  96. package/.agent-src/rules/skill-quality.md +7 -113
  97. package/.agent-src/rules/slash-command-routing-policy.md +11 -63
  98. package/.agent-src/rules/think-before-action.md +22 -87
  99. package/.agent-src/rules/token-efficiency.md +10 -74
  100. package/.agent-src/rules/token-optimizer-maintenance.md +68 -0
  101. package/.agent-src/rules/tool-safety.md +4 -0
  102. package/.agent-src/rules/ui-audit-gate.md +25 -61
  103. package/.agent-src/rules/upstream-proposal.md +9 -67
  104. package/.agent-src/rules/user-interaction.md +22 -108
  105. package/.agent-src/rules/verify-before-complete.md +1 -1
  106. package/.agent-src/skills/agent-docs-writing/SKILL.md +1 -1
  107. package/.agent-src/skills/ai-council/SKILL.md +65 -0
  108. package/.agent-src/skills/analysis-autonomous-mode/SKILL.md +1 -1
  109. package/.agent-src/skills/analysis-skill-router/SKILL.md +3 -3
  110. package/.agent-src/skills/artisan-commands/SKILL.md +2 -2
  111. package/.agent-src/skills/authz-review/SKILL.md +1 -1
  112. package/.agent-src/skills/aws-infrastructure/SKILL.md +5 -5
  113. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +8 -8
  114. package/.agent-src/skills/bug-analyzer/SKILL.md +5 -5
  115. package/.agent-src/skills/code-refactoring/SKILL.md +4 -4
  116. package/.agent-src/skills/code-review/SKILL.md +2 -2
  117. package/.agent-src/skills/command-writing/SKILL.md +11 -0
  118. package/.agent-src/skills/composer-packages/SKILL.md +2 -2
  119. package/.agent-src/skills/context-authoring/SKILL.md +11 -0
  120. package/.agent-src/skills/context-document/SKILL.md +1 -1
  121. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +23 -0
  122. package/.agent-src/skills/copilot-config/SKILL.md +1 -1
  123. package/.agent-src/skills/dependency-upgrade/SKILL.md +2 -2
  124. package/.agent-src/skills/devcontainer/SKILL.md +2 -2
  125. package/.agent-src/skills/developer-like-execution/SKILL.md +1 -1
  126. package/.agent-src/skills/docker/SKILL.md +1 -1
  127. package/.agent-src/skills/dto-creator/SKILL.md +1 -1
  128. package/.agent-src/skills/estimate-ticket/SKILL.md +2 -2
  129. package/.agent-src/skills/fe-design/SKILL.md +4 -4
  130. package/.agent-src/skills/feature-planning/SKILL.md +5 -5
  131. package/.agent-src/skills/funnel-analysis/SKILL.md +1 -1
  132. package/.agent-src/skills/laravel/SKILL.md +1 -1
  133. package/.agent-src/skills/laravel-notifications/SKILL.md +5 -5
  134. package/.agent-src/skills/laravel-pennant/SKILL.md +1 -1
  135. package/.agent-src/skills/laravel-pulse/SKILL.md +4 -4
  136. package/.agent-src/skills/laravel-reverb/SKILL.md +2 -2
  137. package/.agent-src/skills/laravel-scheduling/SKILL.md +1 -1
  138. package/.agent-src/skills/migration-creator/SKILL.md +7 -7
  139. package/.agent-src/skills/multi-tenancy/SKILL.md +8 -8
  140. package/.agent-src/skills/performance-analysis/SKILL.md +3 -3
  141. package/.agent-src/skills/pest-testing/SKILL.md +6 -6
  142. package/.agent-src/skills/php-service/SKILL.md +2 -2
  143. package/.agent-src/skills/project-analysis-hypothesis-driven/SKILL.md +3 -3
  144. package/.agent-src/skills/project-analysis-react/SKILL.md +1 -1
  145. package/.agent-src/skills/project-analysis-symfony/SKILL.md +1 -1
  146. package/.agent-src/skills/project-analysis-zend-laminas/SKILL.md +2 -2
  147. package/.agent-src/skills/project-analyzer/SKILL.md +4 -4
  148. package/.agent-src/skills/prompt-optimizer/SKILL.md +108 -0
  149. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  150. package/.agent-src/skills/rule-writing/SKILL.md +33 -0
  151. package/.agent-src/skills/sentry-integration/SKILL.md +1 -1
  152. package/.agent-src/skills/skill-writing/SKILL.md +14 -0
  153. package/.agent-src/skills/terraform/SKILL.md +2 -2
  154. package/.agent-src/skills/terragrunt/SKILL.md +8 -8
  155. package/.agent-src/skills/test-performance/SKILL.md +5 -5
  156. package/.agent-src/skills/threat-modeling/SKILL.md +2 -2
  157. package/.agent-src/skills/token-optimizer/SKILL.md +110 -0
  158. package/.agent-src/skills/universal-project-analysis/SKILL.md +1 -1
  159. package/.agent-src/templates/AGENTS.md +1 -1
  160. package/.agent-src/templates/agent-settings.md +21 -16
  161. package/.agent-src/templates/contexts/tenant-boundaries.md +2 -2
  162. package/.agent-src/templates/contexts.md +1 -1
  163. package/.agent-src/templates/copilot-instructions.md +21 -0
  164. package/.agent-src/templates/copilot-review-instructions.md +76 -0
  165. package/.agent-src/templates/features.md +1 -1
  166. package/.agent-src/templates/rule.md +127 -0
  167. package/.claude-plugin/marketplace.json +4 -1
  168. package/AGENTS.md +32 -5
  169. package/CHANGELOG.md +69 -3
  170. package/README.md +22 -21
  171. package/config/agent-settings.template.yml +44 -10
  172. package/config/gitignore-block.txt +7 -0
  173. package/docs/architecture.md +86 -5
  174. package/docs/catalog.md +16 -6
  175. package/docs/contracts/agent-memory-contract.md +1 -1
  176. package/docs/contracts/context-paths.md +2 -1
  177. package/docs/contracts/file-ownership-matrix.json +354 -500
  178. package/docs/contracts/iron-law-overrides.txt +25 -0
  179. package/docs/contracts/kernel-membership.md +273 -0
  180. package/docs/contracts/load-context-schema.md +26 -11
  181. package/docs/contracts/pilot/agent-authority.md +24 -0
  182. package/docs/contracts/pilot/direct-answers.md +70 -0
  183. package/docs/contracts/pilot/language-and-tone.md +63 -0
  184. package/docs/contracts/rule-classification.md +170 -0
  185. package/docs/contracts/rule-router.md +153 -0
  186. package/docs/customization.md +17 -6
  187. package/docs/decisions/ADR-001-kernel-swap-deferred.md +109 -0
  188. package/docs/decisions/ADR-002-kernel-bucket-overrides.md +124 -0
  189. package/docs/decisions/ADR-rule-kernel-and-router.md +122 -0
  190. package/docs/getting-started.md +2 -2
  191. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +176 -0
  192. package/docs/guidelines/agent-infra/rule-type-governance.md +73 -0
  193. package/docs/guidelines/agent-infra/size-and-scope.md +13 -2
  194. package/docs/guidelines/agent-infra/skill-quality-checklist.md +119 -0
  195. package/docs/guidelines/augment-portability-patterns.md +68 -0
  196. package/docs/guidelines/php/php-coding-patterns.md +62 -0
  197. package/package.json +1 -1
  198. package/scripts/_p43_bodies.py +235 -0
  199. package/scripts/_p43_compress.py +118 -0
  200. package/scripts/_p4_migrate.py +199 -0
  201. package/scripts/_pilot_council_question.py +57 -0
  202. package/scripts/_pilot_measure.py +53 -0
  203. package/scripts/ai_council/session.py +107 -5
  204. package/scripts/build_linear_digest.py +3 -5
  205. package/scripts/check_always_budget.py +39 -6
  206. package/scripts/check_compressed_paths.py +213 -0
  207. package/scripts/check_compression.py +15 -0
  208. package/scripts/check_context_paths.py +1 -0
  209. package/scripts/check_council_layout.py +105 -0
  210. package/scripts/check_council_references.py +145 -0
  211. package/scripts/check_portability.py +2 -0
  212. package/scripts/check_references.py +2 -0
  213. package/scripts/check_token_optimizer_freshness.py +131 -0
  214. package/scripts/compile_router.py +148 -0
  215. package/scripts/compress.py +219 -11
  216. package/scripts/council_cli.py +9 -5
  217. package/scripts/council_prune.py +81 -0
  218. package/scripts/count_token_optimizer_usage.sh +54 -0
  219. package/scripts/install.sh +44 -2
  220. package/scripts/iron_law_sha.py +98 -0
  221. package/scripts/lint_load_context.py +35 -5
  222. package/scripts/measure_rule_budget.py +314 -0
  223. package/scripts/prototype_lint_contradictions.py +150 -0
  224. package/scripts/schemas/rule.schema.json +55 -6
  225. package/scripts/skill_linter.py +196 -6
  226. package/scripts/smoke_path_resolution.py +93 -0
  227. package/scripts/validate_frontmatter.py +41 -1
  228. package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +0 -72
  229. package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +0 -79
  230. package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +0 -87
  231. package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +0 -62
  232. package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +0 -78
  233. package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +0 -85
  234. package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +0 -65
  235. package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +0 -78
  236. package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +0 -53
  237. /package/{docs → .agent-src/contexts}/contracts/artifact-engagement-flow.md +0 -0
  238. /package/{docs → .agent-src/contexts}/contracts/command-suggestion-flow.md +0 -0
@@ -2,63 +2,18 @@
2
2
  type: "auto"
3
3
  tier: "3"
4
4
  description: "Writing or reviewing PHP code — strict types, naming, comparisons, early returns, Eloquent conventions"
5
- alwaysApply: false
6
5
  source: package
6
+ triggers:
7
+ - file_pattern: "*.php"
8
+ - keyword: "phpstan"
9
+ - keyword: "ecs"
10
+ routes_to:
11
+ - "guideline:php/php-coding-patterns"
7
12
  ---
8
13
 
9
- # PHP Coding Rules
14
+ # Php Coding
10
15
 
11
- - Use `declare(strict_types=1)` in every **new** PHP file. Not required when modifying existing files that don't have it.
12
- - If the project has a `Math` helper class, use it for ALL business calculations. Never use native PHP arithmetic operators (`+`, `-`, `*`, `/`) for business calculations. Search for the `Math` class in the project.
13
- - Never use `var_dump()`, `print_r()`, or `dd()` — they are disallowed by PHPStan config. Exception: legacy projects where these are already used and no alternative is feasible.
14
- - Never use `float` for money — use `decimal` or the `Math` helper.
15
- - Always use `===` / `!==` (strict comparison), Yoda style: `null === $var`.
16
- - Early return over nested if/else.
17
- - No one-liner if statements.
18
- - Single quotes for strings without interpolation. `sprintf()` for complex strings.
19
- - Variables: `camelCase`. Array keys: `snake_case`. Constants: `UPPER_SNAKE_CASE`.
20
- - Typed properties, parameters, and return types — always.
21
- - Constructor property promotion where it makes sense.
16
+ **Iron Law.** PHP: strict types, named comparisons, early returns, Eloquent conventions full pattern library in the guideline.
22
17
 
23
- ## Eloquent Models Attribute Access
24
-
25
- Read `eloquent.access_style` from `.agent-settings.yml` to determine the preferred style.
26
- Default: `getters_setters`. See the `eloquent` skill for the full reference table and examples.
27
-
28
- - **`getters_setters`** (strict): Every attribute has a typed getter + fluent setter. Inside the model: `getAttribute('column_name')`/`setAttribute('column_name', $value)`. Outside: always getters/setters. If a getter doesn't exist yet, create it first.
29
- - **`get_attribute`**: Use `getAttribute('column_name')`/`setAttribute('column_name', $value)` everywhere, no getters/setters needed.
30
- - **`magic_properties`**: Laravel default `$model->column_name` everywhere.
31
-
32
- ### Relationship Getters
33
-
34
- - Every relationship MUST have a typed getter method **above** the relationship method.
35
- - **Inside the getter:** use `$this->getAttribute('relationship_name')`, NEVER `$this->relationship_name`.
36
- - **Outside the model:** ALWAYS use the getter (`$model->getEquipment()`), NEVER access the magic property (`$model->equipment`).
37
- - Use `instanceof` checks instead of `null ===` when checking relationship results.
38
-
39
- ## Eloquent Models — Observers over `booted()`
40
-
41
- - Do NOT use `booted()` / `boot()` for model lifecycle hooks (saving, saved, deleted, etc.).
42
- - Use a dedicated **Observer** class registered via `#[ObservedBy]` attribute.
43
- - This keeps models slim and lifecycle logic testable and discoverable.
44
-
45
- ## PHPStan
46
-
47
- - Always fix the root cause. Do NOT add entries to `phpstan-baseline.neon`.
48
- - Adding `ignoreErrors` to `phpstan.neon` is allowed for **structural toolchain limitations** (e.g., Pest runtime bindings). NOT for individual code issues. **If unsure → ask the user.**
49
- - If a fix is truly impossible (confirmed false positive), use an inline ignore as last resort:
50
- ```php
51
- // @phpstan-ignore-next-line — false positive: reason here
52
- ```
53
-
54
- ## Testing
55
-
56
- - Always write tests in **Pest**, not PHPUnit class syntax — unless the user explicitly asks for PHPUnit.
57
- - Pest tests in `tests/Unit/` automatically use `UnitTestCase` as the base class (configured in `tests/Pest.php`).
58
-
59
- ## PHPDoc
60
-
61
- - Only add PHPDoc when type hints are insufficient (e.g. generic arrays: `@param array<int, MyObject> $items`).
62
- - Do NOT add PHPDoc that just repeats the method signature.
63
- - One docblock per method — never split into multiple `/** */` blocks.
64
- - Tag order: `@param` → `@return` → `@throws`.
18
+ Body migrated to `guideline:php/php-coding-patterns` (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,15 @@ tier: "2b"
4
4
  alwaysApply: false
5
5
  description: "When merging, refactoring, compressing, or restructuring skills, rules, commands, or guidelines — prevent quality loss"
6
6
  source: package
7
+ triggers:
8
+ - intent: "merge skill"
9
+ - intent: "compress rule"
10
+ - intent: "refactor artifact"
11
+ - keyword: "Iron Law"
12
+ validator_ignore:
13
+ - type: "substring"
14
+ pattern: ".agent-src.uncompressed/"
15
+ reason: "Rule references the authoring tree as the operand of compression/preservation."
7
16
  ---
8
17
 
9
18
  # Preservation Guard
@@ -3,105 +3,17 @@ type: "auto"
3
3
  tier: "2a"
4
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"
5
5
  source: package
6
- load_context:
7
- - .agent-src.uncompressed/contexts/communication/rules-auto/review-routing-awareness-mechanics.md
6
+ triggers:
7
+ - keyword: "reviewer"
8
+ - phrase: "risk hotspot"
9
+ - phrase: "ownership map"
10
+ routes_to:
11
+ - "skill:review-routing"
8
12
  ---
9
13
 
10
14
  # Review Routing Awareness
11
15
 
12
- Before suggesting reviewers or declaring a change safe, the agent consults
13
- two project-local data sources — if they exist — to ground the routing in
14
- the consumer's actual organizational memory:
16
+ **Iron Law.** Consult ownership-map and historical-bug-patterns before suggesting reviewers or claiming a change is safe.
15
17
 
16
- 1. **Ownership map** which roles/teams own which paths, with per-path
17
- risk notes.
18
- 2. **Historical bug patterns** — recurring failure modes or technical debt
19
- the project has paid for before.
20
-
21
- Both live in the consumer repository (never in package-shipped files) and
22
- are optional. Absence is not an error — the agent falls back to
23
- generic, role-based suggestions from [`reviewer-awareness`](reviewer-awareness.md).
24
-
25
- ## When this rule applies
26
-
27
- - The agent is classifying PR risk, suggesting reviewers, writing a PR
28
- description, or producing a review plan.
29
- - The agent is reviewing its own diff before asking for human review.
30
- - The change modifies more than a trivial amount of code (≥ 1 file
31
- outside docs).
32
-
33
- ## Required behavior
34
-
35
- ### 1. Check for project data
36
-
37
- Look, in order, for:
38
-
39
- - `.github/ownership-map.yml` (or `agents/ownership-map.yml`)
40
- - `.github/historical-bug-patterns.yml` (or
41
- `agents/historical-bug-patterns.yml`)
42
-
43
- If neither file exists, fall back to the engineering-memory layer.
44
- Memory-lookup snippet and merge semantics live in
45
- [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
46
- § Memory-lookup fallback. If both memory and project YAMLs are absent,
47
- skip this rule and rely on
48
- [`reviewer-awareness`](reviewer-awareness.md) defaults. **Do not
49
- invent owners or patterns** from context.
50
-
51
- ### 2. Match the diff
52
-
53
- For every changed file, collect:
54
-
55
- - **Matching ownership entries** — each yields a role, optional focus
56
- note, and optional risk hint.
57
- - **Matching historical patterns** — each yields a named prior failure
58
- mode and the minimum control or test the project expects.
59
-
60
- Matching uses glob patterns (see
61
- [`review-routing-data-format`](../../docs/guidelines/agent-infra/review-routing-data-format.md)
62
- for the schema).
63
-
64
- ### 3. Surface findings
65
-
66
- When producing a review plan, include owner-mapped roles (preferred
67
- over generic), historical-pattern warnings (with required control),
68
- and a staleness note if the ownership map's `updated` field is older
69
- than 6 months. Worked examples for each in
70
- [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
71
- § Surface findings.
72
-
73
- ### 4. Do NOT overreach
74
-
75
- The "do NOT overreach" guardrails (no path renames as side effects, no
76
- "safe because no match", no pattern names in diffs/commits) live in
77
- [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
78
- § Do NOT overreach.
79
-
80
- ## Interaction with other rules
81
-
82
- - Feeds [`reviewer-awareness`](reviewer-awareness.md) — this rule
83
- **resolves** owners; reviewer-awareness **formats** them.
84
- - Extends [`verify-before-complete`](verify-before-complete.md) — if a
85
- historical pattern demands a regression test, the verification gate
86
- requires that test before completion is claimed.
87
- - Does not override [`minimal-safe-diff`](minimal-safe-diff.md) — a
88
- matched pattern is a reason to **add a test**, never a reason to
89
- expand scope into unrelated refactors.
90
-
91
- ## Anti-patterns
92
-
93
- The four anti-pattern rejections (invented owners, invented patterns,
94
- downgrading high-severity hits, treating stale maps as absent) live in
95
- [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
96
- § Anti-patterns.
97
-
98
- ## See also
99
-
100
- - [`reviewer-awareness`](reviewer-awareness.md) — formatting reviewer
101
- suggestions.
102
- - [`review-routing-data-format`](../../docs/guidelines/agent-infra/review-routing-data-format.md)
103
- — YAML schemas for ownership-map and historical-bug-patterns.
104
- - [`review-routing`](../skills/review-routing/SKILL.md) — the skill
105
- that produces the merged routing report.
106
- - [`judge-test-coverage`](../skills/judge-test-coverage/SKILL.md) —
107
- consumes the "required test" output from historical patterns.
18
+ Body migrated to `skill:review-routing` (per P4 of `road-to-kernel-and-router.md`).
19
+ Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -3,91 +3,16 @@ type: "auto"
3
3
  tier: "2a"
4
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"
5
5
  source: package
6
+ triggers:
7
+ - keyword: "reviewer"
8
+ - phrase: "suggest reviewers"
9
+ routes_to:
10
+ - "skill:review-routing"
6
11
  ---
7
12
 
8
13
  # Reviewer Awareness
9
14
 
10
- When a change is medium- or high-risk, the agent suggests reviewer **roles**
11
- (not individuals) based on what the diff actually touches — not who is
12
- loudest, most senior, or who "usually reviews this kind of thing".
15
+ **Iron Law.** Anchor reviewer choice in paths and risk, never seniority; medium / high risk requires primary + secondary role.
13
16
 
14
- ## When this rule applies
15
-
16
- - The agent is asked to suggest reviewers, draft a PR description, or
17
- consolidate a review plan.
18
- - The change is classified medium or high risk by
19
- [`review-routing`](../skills/review-routing/SKILL.md), the
20
- `pr_risk_review.py` script, or explicit user judgment.
21
- - For **low-risk** changes, reviewer suggestions are optional and may be
22
- omitted.
23
-
24
- ## Required behavior
25
-
26
- 1. **Anchor every suggestion in the diff.** Name the path or change that
27
- triggered the role — "backend because `app/Services/PaymentGateway.php`
28
- changed", not "backend because it's a code change".
29
- 2. **Two roles minimum for medium/high risk** — one **primary** (the
30
- domain most at risk) and one **secondary** (cross-cutting sanity:
31
- security, infra, domain owner).
32
- 3. **Explain the focus area** for each reviewer — what they should look
33
- at, not just that they should look. "security: confirm the new
34
- authorization boundary actually denies cross-tenant reads".
35
- 4. **Prefer ownership-mapped owners** when an ownership map exists
36
- (see [`review-routing-awareness`](review-routing-awareness.md)). Fall
37
- back to generic roles only when no mapping matches.
38
- 5. **Never name individual reviewers** in package-shipped artifacts.
39
- The consumer repo's CODEOWNERS or ownership map does the mapping
40
- role → person.
41
-
42
- ## Reviewer roles
43
-
44
- The reference set — extend per project, but keep these as the common
45
- vocabulary:
46
-
47
- | Role | Typical focus |
48
- |---|---|
49
- | `backend` | business logic, validation, side effects, data integrity |
50
- | `frontend` | UX, accessibility, client-side state, rendering |
51
- | `security` | authz, secrets, trust boundaries, data exposure |
52
- | `infra` / `ops` | rollout, migration safety, observability, retries |
53
- | `database` | schema changes, indexes, query plans, rollback realism |
54
- | `domain owner` | business invariants, policy intent, edge-case correctness |
55
- | `qa` | test coverage, regression scenarios, flake risk |
56
-
57
- ## Anti-patterns — reject them
58
-
59
- - "Reviewers: @alice, @bob" inside a shared package artifact — individuals
60
- live in the consumer's CODEOWNERS, not in package output.
61
- - "Any senior engineer" — prestige is not a review strategy.
62
- - "Whoever reviewed this last time" — selection by habit, not by
63
- current risk.
64
- - One role for a 🔴 high-risk change — single-reviewer risk, especially
65
- when the change crosses an authorization or tenancy boundary.
66
- - Suggesting reviewers without naming what they should look at — a
67
- rubber-stamp invitation.
68
-
69
- ## Format
70
-
71
- When the agent proposes reviewers, use this block:
72
-
73
- ```
74
- Suggested reviewers (role-based):
75
- • primary: <role> — focus: <one line, anchored in diff>
76
- • secondary: <role> — focus: <one line, anchored in diff>
77
- (optional) additional: <role> — focus: …
78
- ```
79
-
80
- ## Rationale
81
-
82
- The right reviewer reduces blind spots more than the loudest reviewer.
83
- Blind-spot reduction comes from role diversity (different angles on the
84
- same diff), not from seniority.
85
-
86
- ## See also
87
-
88
- - [`review-routing-awareness`](review-routing-awareness.md) — how
89
- ownership maps and historical patterns feed reviewer selection.
90
- - [`review-routing`](../skills/review-routing/SKILL.md) — the skill that
91
- produces the reviewer block.
92
- - [`requesting-code-review`](../skills/requesting-code-review/SKILL.md) —
93
- PR preparation and self-review before asking for reviewers.
17
+ Body migrated to `skill:review-routing` (per P4 of `road-to-kernel-and-router.md`).
18
+ Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -2,179 +2,16 @@
2
2
  type: "auto"
3
3
  tier: "1"
4
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"
5
- alwaysApply: false
6
5
  source: package
7
- load_context:
8
- - .agent-src.uncompressed/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md
6
+ triggers:
7
+ - path_prefix: "agents/roadmaps/"
8
+ routes_to:
9
+ - "guideline:agent-infra/roadmap-progress-mechanics"
9
10
  ---
10
11
 
11
- <!-- cloud_safe: degrade -->
12
- <!-- Authoring discipline applies in cloud; local script + regen are no-ops there. -->
13
-
14
12
  # Roadmap Progress Sync
15
13
 
16
- > **Enforced by:** [`scripts/roadmap_progress_hook.py`](../../scripts/roadmap_progress_hook.py)
17
- > on Augment + Claude Code (`PostToolUse`). Hook is primary; the prose
18
- > below is the specification the hook implements and the fallback when
19
- > the platform has no hook surface.
20
-
21
- ## Iron Law — dashboard sync
22
-
23
- ```
24
- ANY ROADMAP TOUCH → REGENERATE THE DASHBOARD, SAME RESPONSE.
25
- NO EXCEPTIONS. NO "I'LL DO IT AT THE END". NO BATCHING ACROSS TURNS.
26
- A ROADMAP NOT IN THE DASHBOARD IS A RULE VIOLATION, NOT AN OVERSIGHT.
27
- ```
28
-
29
- **Roadmap touch =** create the file, rename it, delete it, move it
30
- between `roadmaps/` ↔ `archive/` ↔ `skipped/`, add/rename/remove a
31
- phase, **OR** flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`).
32
-
33
- `agents/roadmaps-progress.md` is the read-only dashboard. Every
34
- unsynced edit makes it lie to the next reader. Created a roadmap
35
- without regenerating? The dashboard claims it does not exist. Marked
36
- 8 steps `[x]` and forgot the regen? The dashboard says 0 done.
37
-
38
- ## Iron Law — every active roadmap is trackable
39
-
40
- ```
41
- EVERY ACTIVE ROADMAP MUST CONTAIN AT LEAST ONE TRACKABLE CHECKBOX
42
- (`- [ ]`) PER NON-INTRO PHASE. ROADMAPS WITHOUT EXECUTABLE STEPS
43
- EITHER GET A CHECKLIST OR THE `status: draft` FLAG.
44
- CI-ENFORCED: `scripts/check_roadmap_trackable.py` (CANNOT BE DEFERRED).
45
- ```
46
-
47
- **Active roadmap =** any file in `agents/roadmaps/` (root, not
48
- `archive/` or `skipped/`) without `status: draft` frontmatter.
49
-
50
- **Trackable checkbox =** an actionable `- [ ]` line under a `## Phase N`
51
- or `### Phase N` heading (numeric `Phase 1`, roman `Phase II`, or
52
- letter-track `Phase A1` — matched by the dashboard's `PHASE_RE`).
53
- Tables of decisions, ICE matrices, ADR captures, and "block
54
- sequencing" tables are valid **rationale**, but they do not satisfy
55
- this rule on their own — they must be paired with at least one
56
- `## Phase N` section whose checkboxes execute the decision.
57
- Headings such as `## Phase steps`, `### Sequencing — Phase 1 …`,
58
- `### P0 #1 — …`, or `## Block A` do **not** count — only the
59
- canonical `Phase <id>` form parsed by the dashboard.
60
-
61
- **CI backstop.** `scripts/check_roadmap_trackable.py` (package-shipped,
62
- wire into the consumer's pre-commit / pre-push / Actions gate) fails
63
- when an active roadmap has zero canonical `Phase` headings or when
64
- any parsed phase has zero checkboxes. Last line of defence — real-time
65
- authoring still flips checkboxes and regenerates the dashboard the
66
- same response.
67
-
68
- ## Status — binary `ready` (default) vs `draft`
69
-
70
- ```yaml
71
- ---
72
- status: draft # hidden from the dashboard until flipped
73
- ---
74
- ```
75
-
76
- Two values, no synonyms. Anything else — no frontmatter at all,
77
- `status: ready`, an unknown value — counts as **ready** and lands
78
- in the dashboard.
79
-
80
- - **Ready** is the implicit default. New roadmaps are created
81
- ready unless the user explicitly says draft. Ready roadmaps are
82
- listed in the dashboard, count towards open/done totals, and
83
- trip the "completed but not archived" warning when they close.
84
- - **Draft** hides the file from the dashboard entirely (not
85
- counted, not listed). Use it while the roadmap is still being
86
- authored, while waiting for upstream decisions, or as a
87
- capture-only synthesis that has not yet been promoted to
88
- executable phases. Flip to ready (or remove the field) the
89
- moment the roadmap is ready to track.
90
-
91
- **Completion = archival, same response.** When the edit takes a
92
- roadmap to `count_open == 0` (every item is `[x]`, `[~]`, or `[-]`),
93
- `git mv` it into `agents/roadmaps/archive/` (or `skipped/` if no `[x]`
94
- at all) **before** regenerating the dashboard. A 100%-complete
95
- roadmap left under `agents/roadmaps/` is a rule violation, not an
96
- optional cleanup. See `roadmap-management` skill for the archive vs
97
- skipped decision table.
98
-
99
- ## Agent-authored roadmaps — placement is mandatory
100
-
101
- ```
102
- A FILE THE AGENT DROPS INTO agents/roadmaps/ MUST EITHER
103
- (a) PASS check_roadmap_trackable.py AND LAND IN THE DASHBOARD, OR
104
- (b) NOT BE IN agents/roadmaps/ AT ALL.
105
- NO "DECISION MATRIX" / "DESIGN NOTE" SHORTCUT.
106
- ```
107
-
108
- When the agent autonomously creates a roadmap, it owns the placement
109
- in the **same response**:
110
-
111
- - **Phase plan** (checkboxes, multi-turn execution) → `agents/roadmaps/<name>.md`, `status: ready` (default), regen dashboard.
112
- - **Decision matrix / ADR / pattern / lookup** (no `Phase N`, durable rationale) → `agents/contexts/<name>.md`.
113
- - **Completed work snapshot** → `agents/roadmaps/archive/<name>.md`.
114
-
115
- A non-trackable file in `agents/roadmaps/` is a rule violation — the
116
- trackable CI fails it, the dashboard hides it. The agent that
117
- created it moves it the same response. If the autonomous run also
118
- **finishes** the roadmap within the session (every box `[x]`/`[~]`/`[-]`),
119
- the completion-archival rule above fires too — same response.
120
-
121
- ## Autonomous execution — checkbox cadence
122
-
123
- When executing a roadmap autonomously (multi-turn, no per-step user
124
- prompt), the user loses progress visibility unless checkboxes flip
125
- **as work lands**, not in a batch at the end. Iron Law:
126
-
127
- ```
128
- EVERY DONE STEP FLIPS [ ] → [x] IN NEXT REPLY THAT ACKNOWLEDGES IT.
129
- NO "I UPDATE ROADMAP AT END OF PHASE."
130
- NO "FOUR STEPS DONE, ONE COMMIT, ONE REGEN."
131
- ```
132
-
133
- Step counts as completed when:
134
-
135
- - Code / docs change for that step has been **written and saved** AND
136
- - Verification cited in the step (project CI command, targeted test, lint) has
137
- **passed in this response or an earlier one** — fresh output, not memory.
138
-
139
- Then in the **same reply**: flip the checkbox, regenerate the
140
- dashboard, commit if commit policy allows.
141
-
142
- **Forbidden:** four turns of step work, dashboard flat, single regen at the end.
143
- **Required:** each turn — implement step, flip `[x]`, regen, commit (if policy allows).
144
- A reply that lands a verified step without flipping its checkbox is a rule violation.
145
-
146
- **In-progress marker:** when a step takes more than one reply,
147
- mark it `[~]` the moment work starts on it and regenerate. The
148
- user sees one row move from `[ ]` to `[~]` to `[x]` instead of
149
- silent rows. `[~]` is treated as open for `count_open` but moves
150
- the phase percentage forward in the dashboard.
151
-
152
- ## Mechanics — triggers, regen command, self-check, failures
153
-
154
- The triggers table, the regen command (`./agent-config roadmap:progress`),
155
- the mandatory pre-send self-check, the failure-mode catalog, and the
156
- `Do NOT` list live in
157
- [`contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md`](../contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md).
158
- Pull it whenever a trigger fires — the rule above is the obligation
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
- ```
14
+ **Iron Law.** Any touch to `agents/roadmaps/` regenerates the dashboard in the same response; archive the roadmap when 0 open items remain.
176
15
 
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.
16
+ Body migrated to `guideline:agent-infra/roadmap-progress-mechanics` (per P4 of `road-to-kernel-and-router.md`).
17
+ Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -4,13 +4,17 @@ tier: "2a"
4
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"
5
5
  alwaysApply: false
6
6
  source: package
7
+ triggers:
8
+ - keyword: "active_role"
9
+ - keyword: "role-mode"
10
+ - intent: "mode marker"
7
11
  ---
8
12
 
9
13
  # Role Mode Adherence
10
14
 
11
15
  Auto-activates when `.agent-settings.yml` sets `roles.active_role` to
12
16
  one of the six modes defined in
13
- [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md):
17
+ [`role-contracts`](../docs/guidelines/agent-infra/role-contracts.md):
14
18
  `developer`, `reviewer`, `tester`, `po`, `incident`, `planner`.
15
19
 
16
20
  Read `roles.active_role` from `.agent-settings.yml` at session start. Empty / missing → rule is inert; do NOT guess a mode.
@@ -47,7 +51,7 @@ Infer the mode (Phase-3 router does that). Touch `.agent-settings.yml`
47
51
 
48
52
  ## See also
49
53
 
50
- - [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md)
54
+ - [`role-contracts`](../docs/guidelines/agent-infra/role-contracts.md)
51
55
  - [`/mode`](../commands/mode.md)
52
56
  - [`ask-when-uncertain`](ask-when-uncertain.md)
53
57
  - [`scope-control`](scope-control.md)
@@ -2,74 +2,16 @@
2
2
  type: "auto"
3
3
  tier: "2a"
4
4
  description: "Creating or editing rules, or auditing rule types — decides when a rule should be always vs auto"
5
- alwaysApply: false
6
5
  source: package
6
+ triggers:
7
+ - path_prefix: ".agent-src.uncompressed/rules/"
8
+ routes_to:
9
+ - "guideline:agent-infra/rule-type-governance"
7
10
  ---
8
11
 
9
- # rule-type-governance
12
+ # Rule Type Governance
10
13
 
11
- ## `always` = loaded every conversation
14
+ **Iron Law.** Choose `always` vs `auto` per the governance table; over-broad `always` rules degrade the kernel budget.
12
15
 
13
- Use ONLY when the rule applies to virtually every interaction:
14
-
15
- - Universal agent behavior (language, tone, interaction style)
16
- - Safety constraints (scope control, verification before completion)
17
- - Token/efficiency constraints
18
- - First-message checks that cannot wait for auto-trigger
19
-
20
- ## `auto` = loaded on demand by description match
21
-
22
- Use for everything else:
23
-
24
- - Language-specific rules (PHP, JS, SQL)
25
- - Tool-specific rules (Docker, Git, quality tools)
26
- - Workflow-specific rules (commands, skill creation, E2E testing)
27
- - Domain-specific rules (translations, architecture)
28
-
29
- ## Decision test
30
-
31
- > "Does this rule need to be active when the user asks a simple question, reviews a PR, or discusses architecture?"
32
-
33
- - Yes → `always`
34
- - No → `auto` with a clear trigger description
35
-
36
- ## Auto description quality
37
-
38
- The `description` field IS the trigger. It must describe **when** the rule applies, not **what** it contains.
39
-
40
- - ❌ `"PHP coding standards"` — too vague, won't match reliably
41
- - ✅ `"Writing or reviewing PHP code — strict types, naming, Eloquent conventions"`
42
-
43
- ## Hard constraint
44
-
45
- - Default to `auto`. Justify `always`.
46
- - If >50% of conversations don't need a rule → it must be `auto`.
47
- - `optimize-agents` command checks this and suggests changes.
48
-
49
- ## Hardening tier — required on new or edited rules
50
-
51
- Every new rule, and every edited rule whose body changes the trigger
52
- or the obligation, MUST classify itself against the hardening tiers
53
- documented in [`rule-trigger-matrix.md`](../../agents/contexts/rule-trigger-matrix.md):
54
-
55
- | Tier | Meaning |
56
- |---|---|
57
- | `1` | Mechanically enforceable — hook acts, rule body stays minimal. |
58
- | `2a` | Marker nudge — hook injects signal, agent acts on it. |
59
- | `2b` | Structured injection / tool-call gate — hook reads/writes state, may deny. |
60
- | `3` | Soft, judgment-bound — no platform surface; self-check rule. |
61
- | `safety-floor` | Iron-Law subset, never modified. |
62
- | `mechanical-already` | Precedent — script enforces, rule body documents. |
63
-
64
- Classification surface: the optional `tier:` frontmatter field
65
- (declared in `scripts/schemas/rule.schema.json`). Recommended for new
66
- rules; bulk-retrofit of existing rules is tracked separately.
67
-
68
- Tier 3 dispositions are recorded centrally in
69
- [`agents/contexts/tier-3-dispositions.md`](../../agents/contexts/tier-3-dispositions.md)
70
- with a 6-month re-audit clock. New Tier 3 rules append to that list
71
- on landing.
72
-
73
- The `optimize-agents` command checks the tier alongside `type`/`source`
74
- and suggests escalations when a rule's trigger matches a hardening
75
- opportunity that has shipped since the rule was authored.
16
+ Body migrated to `guideline:agent-infra/rule-type-governance` (per P4 of `road-to-kernel-and-router.md`).
17
+ Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -3,6 +3,11 @@ type: auto
3
3
  tier: "2b"
4
4
  source: package
5
5
  description: "When a skill declares execution metadata — enforce safety constraints for assisted and automated execution types"
6
+ triggers:
7
+ - keyword: "execution"
8
+ - keyword: "automated"
9
+ - keyword: "assisted"
10
+ - keyword: "handler"
6
11
  ---
7
12
 
8
13
  # Runtime Safety