@event4u/agent-config 1.16.0 → 1.17.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 (203) hide show
  1. package/.agent-src/commands/{agents-audit.md → agents/audit.md} +4 -3
  2. package/.agent-src/commands/{agents-cleanup.md → agents/cleanup.md} +12 -6
  3. package/.agent-src/commands/{agents-prepare.md → agents/prepare.md} +4 -3
  4. package/.agent-src/commands/agents.md +46 -0
  5. package/.agent-src/commands/{chat-history-checkpoint.md → chat-history/checkpoint.md} +4 -4
  6. package/.agent-src/commands/{chat-history-clear.md → chat-history/clear.md} +4 -4
  7. package/.agent-src/commands/{chat-history-resume.md → chat-history/resume.md} +4 -4
  8. package/.agent-src/commands/chat-history/show.md +107 -0
  9. package/.agent-src/commands/chat-history.md +33 -89
  10. package/.agent-src/commands/{commit-in-chunks.md → commit/in-chunks.md} +15 -13
  11. package/.agent-src/commands/commit.md +22 -2
  12. package/.agent-src/commands/{context-create.md → context/create.md} +4 -3
  13. package/.agent-src/commands/{context-refactor.md → context/refactor.md} +4 -3
  14. package/.agent-src/commands/context.md +44 -0
  15. package/.agent-src/commands/{copilot-agents-init.md → copilot-agents/init.md} +4 -3
  16. package/.agent-src/commands/{copilot-agents-optimize.md → copilot-agents/optimize.md} +4 -3
  17. package/.agent-src/commands/copilot-agents.md +44 -0
  18. package/.agent-src/commands/council/default.md +221 -0
  19. package/.agent-src/commands/{council-design.md → council/design.md} +6 -5
  20. package/.agent-src/commands/{council-optimize.md → council/optimize.md} +7 -6
  21. package/.agent-src/commands/{council-pr.md → council/pr.md} +6 -5
  22. package/.agent-src/commands/council.md +47 -212
  23. package/.agent-src/commands/{create-pr-description.md → create-pr/description-only.md} +4 -2
  24. package/.agent-src/commands/create-pr.md +26 -5
  25. package/.agent-src/commands/{feature-dev.md → feature/dev.md} +5 -10
  26. package/.agent-src/commands/{feature-explore.md → feature/explore.md} +4 -8
  27. package/.agent-src/commands/{feature-plan.md → feature/plan.md} +4 -8
  28. package/.agent-src/commands/{feature-refactor.md → feature/refactor.md} +4 -8
  29. package/.agent-src/commands/{feature-roadmap.md → feature/roadmap.md} +6 -10
  30. package/.agent-src/commands/feature.md +6 -12
  31. package/.agent-src/commands/{fix-ci.md → fix/ci.md} +4 -8
  32. package/.agent-src/commands/{fix-portability.md → fix/portability.md} +4 -8
  33. package/.agent-src/commands/{fix-pr-bot-comments.md → fix/pr-bots.md} +4 -8
  34. package/.agent-src/commands/{fix-pr-developer-comments.md → fix/pr-developers.md} +4 -8
  35. package/.agent-src/commands/{fix-pr-comments.md → fix/pr.md} +7 -11
  36. package/.agent-src/commands/{fix-references.md → fix/refs.md} +4 -8
  37. package/.agent-src/commands/{fix-seeder.md → fix/seeder.md} +4 -8
  38. package/.agent-src/commands/fix.md +7 -13
  39. package/.agent-src/commands/{do-and-judge.md → judge/on-diff.md} +4 -3
  40. package/.agent-src/commands/judge/solo.md +90 -0
  41. package/.agent-src/commands/{do-in-steps.md → judge/steps.md} +4 -3
  42. package/.agent-src/commands/judge.md +35 -70
  43. package/.agent-src/commands/{memory-add.md → memory/add.md} +4 -3
  44. package/.agent-src/commands/{memory-full.md → memory/load.md} +4 -3
  45. package/.agent-src/commands/{memory-promote.md → memory/promote.md} +4 -3
  46. package/.agent-src/commands/{propose-memory.md → memory/propose.md} +4 -3
  47. package/.agent-src/commands/memory.md +48 -0
  48. package/.agent-src/commands/{module-create.md → module/create.md} +4 -3
  49. package/.agent-src/commands/{module-explore.md → module/explore.md} +4 -3
  50. package/.agent-src/commands/module.md +44 -0
  51. package/.agent-src/commands/{optimize-agents.md → optimize/agents.md} +4 -8
  52. package/.agent-src/commands/{optimize-augmentignore.md → optimize/augmentignore.md} +4 -9
  53. package/.agent-src/commands/{optimize-rtk-filters.md → optimize/rtk.md} +4 -8
  54. package/.agent-src/commands/{optimize-skills.md → optimize/skills.md} +4 -8
  55. package/.agent-src/commands/optimize.md +4 -10
  56. package/.agent-src/commands/{override-create.md → override/create.md} +4 -3
  57. package/.agent-src/commands/{override-manage.md → override/manage.md} +4 -3
  58. package/.agent-src/commands/override.md +44 -0
  59. package/.agent-src/commands/{roadmap-create.md → roadmap/create.md} +4 -3
  60. package/.agent-src/commands/{roadmap-execute.md → roadmap/execute.md} +4 -3
  61. package/.agent-src/commands/roadmap.md +44 -0
  62. package/.agent-src/commands/{tests-create.md → tests/create.md} +4 -3
  63. package/.agent-src/commands/{tests-execute.md → tests/execute.md} +4 -3
  64. package/.agent-src/commands/tests.md +44 -0
  65. package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +72 -0
  66. package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +79 -0
  67. package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +98 -0
  68. package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +87 -0
  69. package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +62 -0
  70. package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +78 -0
  71. package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +85 -0
  72. package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +65 -0
  73. package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +78 -0
  74. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +62 -0
  75. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +55 -0
  76. package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +53 -0
  77. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +77 -0
  78. package/.agent-src/contexts/judges/no-consolidate-rationale.md +102 -0
  79. package/.agent-src/contexts/judges/persona-voice-rubric.md +140 -0
  80. package/.agent-src/rules/artifact-engagement-recording.md +13 -69
  81. package/.agent-src/rules/ask-when-uncertain.md +27 -42
  82. package/.agent-src/rules/augment-portability.md +15 -61
  83. package/.agent-src/rules/augment-source-of-truth.md +27 -93
  84. package/.agent-src/rules/cli-output-handling.md +10 -76
  85. package/.agent-src/rules/command-suggestion-policy.md +18 -59
  86. package/.agent-src/rules/commit-conventions.md +17 -14
  87. package/.agent-src/rules/direct-answers.md +34 -49
  88. package/.agent-src/rules/docker-commands.md +5 -5
  89. package/.agent-src/rules/docs-sync.md +15 -69
  90. package/.agent-src/rules/language-and-tone.md +48 -72
  91. package/.agent-src/rules/missing-tool-handling.md +28 -22
  92. package/.agent-src/rules/no-cheap-questions.md +45 -52
  93. package/.agent-src/rules/no-roadmap-references.md +73 -0
  94. package/.agent-src/rules/package-ci-checks.md +21 -61
  95. package/.agent-src/rules/preservation-guard.md +64 -29
  96. package/.agent-src/rules/review-routing-awareness.md +24 -43
  97. package/.agent-src/rules/roadmap-progress-sync.md +10 -71
  98. package/.agent-src/rules/security-sensitive-stop.md +8 -8
  99. package/.agent-src/rules/skill-quality.md +16 -48
  100. package/.agent-src/rules/slash-command-routing-policy.md +7 -4
  101. package/.agent-src/rules/think-before-action.md +52 -42
  102. package/.agent-src/rules/tool-safety.md +19 -16
  103. package/.agent-src/rules/ui-audit-gate.md +24 -38
  104. package/.agent-src/rules/user-interaction.md +13 -68
  105. package/.agent-src/skills/ai-council/SKILL.md +2 -0
  106. package/.agent-src/skills/api-testing/SKILL.md +1 -1
  107. package/.agent-src/skills/check-refs/SKILL.md +59 -40
  108. package/.agent-src/skills/conventional-commits-writing/SKILL.md +86 -28
  109. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +5 -5
  110. package/.agent-src/skills/developer-like-execution/SKILL.md +4 -4
  111. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +101 -65
  112. package/.agent-src/skills/flux/SKILL.md +30 -10
  113. package/.agent-src/skills/github-ci/SKILL.md +2 -2
  114. package/.agent-src/skills/judge-code-quality/SKILL.md +7 -8
  115. package/.agent-src/skills/judge-security-auditor/SKILL.md +4 -5
  116. package/.agent-src/skills/judge-test-coverage/SKILL.md +3 -4
  117. package/.agent-src/skills/lint-skills/SKILL.md +57 -39
  118. package/.agent-src/skills/md-language-check/SKILL.md +61 -39
  119. package/.agent-src/skills/override-management/SKILL.md +5 -5
  120. package/.agent-src/skills/quality-tools/SKILL.md +2 -2
  121. package/.agent-src/skills/react-shadcn-ui/SKILL.md +116 -43
  122. package/.agent-src/skills/readme-reviewer/SKILL.md +30 -29
  123. package/.agent-src/skills/readme-writing/SKILL.md +78 -53
  124. package/.agent-src/skills/readme-writing-package/SKILL.md +50 -47
  125. package/.agent-src/skills/receiving-code-review/SKILL.md +52 -47
  126. package/.agent-src/skills/refine-prompt/SKILL.md +0 -1
  127. package/.agent-src/skills/requesting-code-review/SKILL.md +35 -30
  128. package/.agent-src/skills/security/SKILL.md +7 -2
  129. package/.agent-src/skills/security-audit/SKILL.md +7 -3
  130. package/.agent-src/skills/systematic-debugging/SKILL.md +68 -60
  131. package/.agent-src/skills/test-driven-development/SKILL.md +59 -57
  132. package/.agent-src/skills/test-performance/SKILL.md +0 -1
  133. package/.agent-src/skills/traefik/SKILL.md +4 -4
  134. package/.agent-src/skills/verify-completion-evidence/SKILL.md +28 -26
  135. package/.claude-plugin/marketplace.json +22 -11
  136. package/AGENTS.md +2 -2
  137. package/CHANGELOG.md +90 -1
  138. package/README.md +18 -17
  139. package/docs/architecture.md +4 -6
  140. package/docs/catalog.md +67 -39
  141. package/docs/contracts/STABILITY.md +13 -7
  142. package/docs/contracts/adr-chat-history-split.md +1 -3
  143. package/docs/contracts/adr-command-suggestion.md +0 -2
  144. package/docs/contracts/adr-implement-ticket-runtime.md +1 -2
  145. package/docs/contracts/adr-product-ui-track.md +3 -6
  146. package/docs/contracts/adr-prompt-driven-execution.md +3 -4
  147. package/docs/contracts/agent-memory-contract.md +6 -11
  148. package/docs/contracts/artifact-engagement-flow.md +6 -9
  149. package/docs/contracts/command-clusters.md +56 -46
  150. package/docs/contracts/command-suggestion-flow.md +1 -3
  151. package/docs/contracts/context-paths.md +99 -0
  152. package/docs/contracts/file-ownership-matrix.json +6722 -0
  153. package/docs/contracts/file-ownership-matrix.md +134 -0
  154. package/docs/contracts/implement-ticket-flow.md +6 -9
  155. package/docs/contracts/linear-ai-rules-inclusion.md +0 -1
  156. package/docs/contracts/linear-ai-three-layers.md +0 -2
  157. package/docs/contracts/load-context-budget-model.md +178 -0
  158. package/docs/contracts/load-context-schema.md +1 -3
  159. package/docs/contracts/rule-interactions.md +0 -1
  160. package/docs/contracts/rule-priority-hierarchy.md +1 -1
  161. package/docs/contracts/ui-track-flow.md +7 -17
  162. package/docs/customization.md +2 -0
  163. package/docs/getting-started.md +5 -4
  164. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +100 -0
  165. package/package.json +1 -1
  166. package/scripts/_one_off_phase4_dispatch_latency.py +108 -0
  167. package/scripts/_one_off_phase6_trigger_jaccard.py +92 -0
  168. package/scripts/_phase2_shim_helper.py +109 -0
  169. package/scripts/agent-config +10 -0
  170. package/scripts/ai_council/_one_off_2a4_acceptance.py +208 -0
  171. package/scripts/ai_council/_one_off_context_layer_v1_estimate.py +67 -0
  172. package/scripts/ai_council/_one_off_context_layer_v1_review.py +292 -0
  173. package/scripts/ai_council/_one_off_followups_review.py +259 -0
  174. package/scripts/ai_council/_one_off_nondestructive_inline_audit.py +209 -0
  175. package/scripts/ai_council/_one_off_phase_2a_budget_rebalance.py +257 -0
  176. package/scripts/ai_council/_one_off_phase_2a_post_revert.py +197 -0
  177. package/scripts/ai_council/_one_off_rule_hardening_v1.py +251 -0
  178. package/scripts/ai_council/_one_off_structural_open_questions.py +232 -0
  179. package/scripts/ai_council/_one_off_structural_optimization.py +144 -0
  180. package/scripts/ai_council/_one_off_structural_v3_gaps.py +252 -0
  181. package/scripts/ai_council/_one_off_structural_v3_review.py +240 -0
  182. package/scripts/check_always_budget.py +363 -45
  183. package/scripts/check_cluster_patterns.py +159 -0
  184. package/scripts/check_command_count_messaging.py +14 -7
  185. package/scripts/check_context_paths.py +201 -0
  186. package/scripts/check_no_roadmap_refs.py +155 -0
  187. package/scripts/check_phase_coupling.py +148 -0
  188. package/scripts/check_portability.py +2 -0
  189. package/scripts/check_references.py +29 -2
  190. package/scripts/check_safety_floor_untouched.py +125 -0
  191. package/scripts/command_suggester/loader.py +4 -1
  192. package/scripts/compress.py +59 -13
  193. package/scripts/generate_index.py +6 -2
  194. package/scripts/generate_ownership_matrix.py +323 -0
  195. package/scripts/hooks/augment-roadmap-progress.sh +57 -0
  196. package/scripts/install.py +49 -28
  197. package/scripts/lint_no_new_atomic_commands.py +12 -11
  198. package/scripts/requirements-evals.txt +1 -0
  199. package/scripts/roadmap_progress_hook.py +159 -0
  200. package/scripts/schemas/command.schema.json +4 -3
  201. package/scripts/skill_linter.py +1 -0
  202. package/scripts/sync_agent_settings.py +25 -2
  203. package/scripts/update_counts.py +7 -0
@@ -6,34 +6,38 @@ description: "When a CLI tool needed for the task is not installed — ask befor
6
6
 
7
7
  # Missing Tool Handling
8
8
 
9
- When a CLI tool is needed and **not installed** (`command not found`,
10
- `which X` empty), **STOP and ask** before working around it or installing it.
9
+ When a CLI tool is needed to solve the task cleanly and is **not installed**
10
+ (`command not found`, `which X` empty, missing from `$PATH`), **STOP and ask**
11
+ before working around it or installing it.
11
12
 
12
13
  ## The rule
13
14
 
14
- - **Never install silently.** Installing changes the user's system —
15
- requires explicit permission (`scope-control`).
15
+ - **Never install silently.** Installing is an action that changes the user's
16
+ system — it requires explicit permission (see `scope-control`).
16
17
  - **Never silently work around** a missing tool with a brittle substitute
17
- (awk for YAML, `grep` for JSON, string splicing) when a proper tool is
18
- the standard answer. The workaround hides the dependency.
19
- - **Ask with numbered options** (`user-interaction`). State the tool, why
20
- it fits, the install command, and the workaround cost.
18
+ (awk-regex for YAML, `grep` for JSON, string splicing) when a proper tool
19
+ is the standard answer for the job. The workaround hides the real
20
+ dependency and makes the decision invisible to the user.
21
+ - **Ask with numbered options** (see `user-interaction`). State which tool,
22
+ why it's the best fit, the install command, and the workaround cost.
21
23
 
22
24
  ## When it applies
23
25
 
24
- - Shell returns `command not found` for a tool the task genuinely needs
25
- (yq, jq, rtk, gh, docker, mkcert, terraform, …).
26
- - A skill or spike needs the idiomatic tool but it's absent locally.
27
- - You're about to substitute a verbose script for a single tool call
26
+ - Any shell command fails with `command not found` for a tool the task
27
+ genuinely needs (yq, jq, rtk, gh, docker, mkcert, terraform, …).
28
+ - A skill or spike requires a tool that is the idiomatic answer but is
29
+ absent locally.
30
+ - You are about to substitute a verbose script for a single tool invocation
28
31
  because the tool isn't there.
29
32
 
30
33
  ## When it does NOT apply
31
34
 
32
- - Nice-to-have clean substitute already present (e.g. `jq` available →
33
- no `yq` needed just for JSON).
34
- - Tool is forbidden by project policy (check `scope-control` and
35
- tool-allowlists first).
36
- - Missing library dependency use `composer`, `npm`, `pip` per package
35
+ - The tool is a nice-to-have and a clean substitute already exists in the
36
+ repo (e.g. `jq` present → no need for `yq` just for JSON).
37
+ - The tool is explicitly forbidden by project policy (check
38
+ `scope-control` and tool-allowlists first).
39
+ - The missing artefact is a library dependency those go through
40
+ `composer require`, `npm install`, `pip install` per the package-manager
37
41
  rules, still with explicit permission.
38
42
 
39
43
  ## How to ask
@@ -49,14 +53,16 @@ When a CLI tool is needed and **not installed** (`command not found`,
49
53
  > 4. Skip this path — I propose a different approach
50
54
  ```
51
55
 
52
- After the user picks: if **install**, wait for confirmation or run the
53
- documented command only if explicitly authorised this turn. If
54
- **workaround**, record the decision in the artefact (comment or ADR).
56
+ After the user picks: if **install**, wait for confirmation that it is
57
+ done (or run the documented install command only if the user explicitly
58
+ authorises it in this turn). If **workaround**, record the decision in
59
+ the artefact (comment or ADR) so the cost is visible.
55
60
 
56
61
  ## Capture the learning
57
62
 
58
- If the same tool keeps missing across tasks, flag it in the project's
59
- setup docs or `.agent-settings.yml` prerequisites.
63
+ If the same tool keeps coming up as missing across multiple tasks, flag
64
+ it in the project's setup docs or `.agent-settings.yml` prerequisites.
65
+ Don't make every session re-discover the gap.
60
66
 
61
67
  See also: `scope-control` · `ask-when-uncertain` · `user-interaction` ·
62
68
  `tool-safety`.
@@ -8,14 +8,14 @@ source: package
8
8
  # No Cheap Questions
9
9
 
10
10
  A question is **cheap** when the answer follows from stated context,
11
- when an option would breach an Iron Law, when choices differ only in
12
- sequencing or format, or when one option is obviously dominant. Cheap
13
- questions are noise, regardless of `personal.autonomy`.
11
+ an option breaches an Iron Law, choices differ only in sequencing /
12
+ format, or one option is obviously dominant. Cheap questions are
13
+ noise, regardless of `personal.autonomy`.
14
14
 
15
- Mode-independent. The "trivial" failure modes in
16
- [`autonomous-execution`](autonomous-execution.md) are scoped to
17
- `personal.autonomy: on` (or `auto`-after-opt-in); this rule lifts the
18
- **no-trade-off** subset to apply in `off` and pre-opt-in `auto` too.
15
+ Mode-independent. [`autonomous-execution`](autonomous-execution.md)'s
16
+ "trivial" failure modes scope to `personal.autonomy: on` (or
17
+ `auto`-after-opt-in); this rule lifts the **no-trade-off** subset to
18
+ `off` and pre-opt-in `auto` too.
19
19
 
20
20
  ## The Iron Laws
21
21
 
@@ -29,61 +29,54 @@ Hold in `off`, `auto`, and `on`. Autonomy never lifts them.
29
29
 
30
30
  ## What counts as cheap
31
31
 
32
- | Class | Pattern · why cheap |
33
- |---|---|
34
- | **Sequencing** | "Step 2 or 3 next?" when roadmap orders them answer is in the roadmap |
35
- | **Format-only** | "Table or paragraph?" no semantic trade-off |
36
- | **Commit asks** | "Commit now?" [`commit-policy`](commit-policy.md): never ask |
37
- | **CI / test asks** | "Run tests now?" — [`verify-before-complete`](verify-before-complete.md) decides |
38
- | **Fenced-step re-asks** | "Start Phase 1?" after "plan only" [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates) |
39
- | **Iron-Law option** | Option breaches `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default` — does not exist |
40
- | **Context-derived** | Answer follows from prior turn / standing instruction / roadmap — act, state assumption inline |
41
- | **Dominant option** | One choice obviously correct; alternatives carry no upside — pick it |
42
- | **Re-ask after decline** | Same path after user said no [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task) |
32
+ - **Sequencing** "Step 2 or 3 next?" when the roadmap orders them.
33
+ - **Format-only** — "Table or paragraph?"; no semantic trade-off.
34
+ - **Commit asks** — forbidden by [`commit-policy`](commit-policy.md).
35
+ - **CI / test asks**[`verify-before-complete`](verify-before-complete.md) decides, not the user.
36
+ - **Fenced-step re-asks** "Start Phase 1?" after *"plan only"*; see
37
+ [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
38
+ - **Iron-Law option** — option breaches `commit-policy`,
39
+ `scope-control § git-ops`, or `non-destructive-by-default`.
40
+ - **Context-derived** answer follows from prior turn / standing
41
+ instruction / roadmap; act, state the assumption inline.
42
+ - **Dominant option** — one choice obviously correct; alternatives
43
+ carry no upside.
44
+ - **Re-ask after decline** — forbidden per
45
+ [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
46
+
47
+ Concrete examples per class:
48
+ [`asking-and-brevity-examples`](../../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
43
49
 
44
50
  ## Pre-Send Self-Check — MANDATORY before every question
45
51
 
46
- Before drafting any numbered-options block, run silently:
47
-
48
- 1. Does the answer follow from already-stated context?
49
- 2. Does any option violate [`commit-policy`](commit-policy.md),
50
- [`scope-control § git-ops`](scope-control.md), or
51
- [`non-destructive-by-default`](non-destructive-by-default.md)?
52
- 3. Are options pure sequencing / format with no trade-off?
53
- 4. Is one option obviously dominant?
54
- 5. Did the user fence the next step (*"plan only"*, *"review first"*)?
55
- deliver + handback per [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
56
- 6. Did the user already decline? Re-asking is forbidden per
57
- [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
58
-
59
- Any "yes" → **do not ask**. Pick the dominant path, state the
60
- assumption inline (*"assuming X — adjust if wrong"*), hand back. The
61
- one-question-per-turn Iron Law from
62
- [`ask-when-uncertain`](ask-when-uncertain.md) still applies when the
63
- question is genuine.
52
+ Run silently before any numbered-options block:
53
+
54
+ 1. Answer already in stated context?
55
+ 2. Any option violates [`commit-policy`](commit-policy.md), [`scope-control § git-ops`](scope-control.md), or [`non-destructive-by-default`](non-destructive-by-default.md)?
56
+ 3. Options pure sequencing / format, no trade-off?
57
+ 4. One option obviously dominant?
58
+ 5. User fenced next step (*"plan only"*, *"review first"*) → deliver + handback per [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
59
+ 6. User already declined? Re-ask forbidden per [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
60
+
61
+ Any "yes" **do not ask**. Pick the dominant path, state assumption
62
+ inline (*"assuming X adjust if wrong"*), hand back. One-question-per-turn
63
+ from [`ask-when-uncertain`](ask-when-uncertain.md) still applies when
64
+ the question is genuine.
64
65
 
65
66
  ## When asking IS allowed
66
67
 
67
68
  - Real architectural / scope decision with non-obvious trade-offs.
68
- - Vague-request trigger per
69
- [`ask-when-uncertain`](ask-when-uncertain.md#vague-request-triggers--must-ask).
70
- - Security-sensitive path per
71
- [`security-sensitive-stop`](security-sensitive-stop.md).
72
- - Hard Floor in [`non-destructive-by-default`](non-destructive-by-default.md)
73
- fires — confirmation is mandatory, never cheap.
69
+ - Vague-request trigger per [`ask-when-uncertain`](ask-when-uncertain.md#vague-request-triggers--must-ask).
70
+ - Security-sensitive path per [`security-sensitive-stop`](security-sensitive-stop.md).
71
+ - Hard Floor in [`non-destructive-by-default`](non-destructive-by-default.md) confirmation mandatory.
74
72
  - Two genuinely-equivalent paths; user preference is the tiebreaker.
75
73
 
76
- In doubt → genuine. Ask. This rule narrows asking, never widens silence.
74
+ In doubt → ask. This rule narrows asking, never widens silence.
77
75
 
78
76
  ## Interactions
79
77
 
80
- - [`ask-when-uncertain`](ask-when-uncertain.md) — vague triggers +
81
- one-question-per-turn; this rule narrows the cheap subset.
82
- - [`autonomous-execution`](autonomous-execution.md) — mode-scoped
83
- triviality there; mode-independent floor here.
84
- - [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) ·
85
- [`non-destructive-by-default`](non-destructive-by-default.md) —
86
- the Iron Laws this rule defends.
87
- - [`user-interaction`](user-interaction.md) — numbered-options shape;
88
- this rule decides whether the block is sent at all.
78
+ - [`ask-when-uncertain`](ask-when-uncertain.md) — vague triggers + one-question-per-turn; narrows the cheap subset.
79
+ - [`autonomous-execution`](autonomous-execution.md) mode-scoped triviality there; mode-independent floor here.
80
+ - [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) Iron Laws this rule defends.
81
+ - [`user-interaction`](user-interaction.md) — numbered-options shape; this rule decides whether to send.
89
82
  - [`direct-answers`](direct-answers.md) — brevity, no flattery.
@@ -0,0 +1,73 @@
1
+ ---
2
+ type: "auto"
3
+ 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
+ alwaysApply: false
5
+ source: package
6
+ ---
7
+
8
+ # No Roadmap References from Stable Artifacts
9
+
10
+ Roadmaps in `agents/roadmaps/` are **transient** — archived, skipped,
11
+ or deleted as work completes. Stable artifacts (rules, skills,
12
+ commands, contexts, guidelines, AGENTS.md, README) outlive them. A
13
+ stable artifact citing a specific roadmap file becomes a broken
14
+ reference the moment that roadmap is deleted.
15
+
16
+ ## The Iron Law
17
+
18
+ ```
19
+ NEVER LINK TO A SPECIFIC FILE IN agents/roadmaps/ FROM A STABLE ARTIFACT.
20
+ PROMOTE DURABLE CONCLUSIONS TO agents/contexts/ AND CITE THAT INSTEAD.
21
+ ```
22
+
23
+ Stable artifact = anything that is **not** a roadmap, council
24
+ session, chat-history archive, commit message, or PR description.
25
+
26
+ ## Forbidden patterns
27
+
28
+ These paths must not appear inside a stable artifact:
29
+
30
+ - `agents/roadmaps/<file>.md`, `agents/roadmaps/archive/<file>.md`,
31
+ `agents/roadmaps/skipped/<file>.md`
32
+
33
+ Stable artifact = any file under `.agent-src.uncompressed/{rules,
34
+ skills,commands,contexts,templates,personas}/`, `agents/contexts/`,
35
+ `docs/guidelines/`, `docs/contracts/`, `docs/architecture.md`,
36
+ `docs/customization.md`, `docs/getting-started.md`, `docs/catalog.md`,
37
+ `AGENTS.md`, `README.md`, `copilot-instructions.md`.
38
+
39
+ CI enforcement: `scripts/check_no_roadmap_refs.py` (companion linter
40
+ — fails the build on any new violation).
41
+
42
+ ## Allowed patterns
43
+
44
+ - `agents/roadmaps/` and its subdirectories as directory mentions
45
+ (talking about the layer, not a specific file)
46
+ - Roadmap → roadmap references (siblings within the transient layer)
47
+ - Council sessions, `.agent-chat-history`, commit messages, PR
48
+ descriptions — transient by construction, not part of the package
49
+ surface
50
+
51
+ ## What to do instead
52
+
53
+ When a stable artifact needs to cite a roadmap finding:
54
+
55
+ 1. Identify the durable conclusion — decision, contract, lesson,
56
+ mechanic.
57
+ 2. Promote it to a context file under `agents/contexts/` (ADR,
58
+ mechanics doc, locked decision). The roadmap can then point at
59
+ the context, not the other way around.
60
+ 3. Reference the context from the stable artifact.
61
+
62
+ Failure mode: *"I'll just link to the roadmap, it's evidence."* The
63
+ roadmap gets archived, then deleted, then the link rots. **Promote
64
+ first, link second.**
65
+
66
+ ## See also
67
+
68
+ - [`docs-sync`](docs-sync.md) — cross-reference sync after rename / delete
69
+ - [`agent-docs`](agent-docs.md) — roadmap layer conventions
70
+ - [`roadmap-progress-sync`](roadmap-progress-sync.md) — sync dashboard on
71
+ roadmap touch
72
+ - [`augment-source-of-truth`](augment-source-of-truth.md) — edit
73
+ `.agent-src.uncompressed/`
@@ -3,11 +3,16 @@ type: "auto"
3
3
  alwaysApply: false
4
4
  description: "Before pushing to remote or creating a PR in the agent-config package — run all CI checks locally first"
5
5
  source: package
6
+ load_context:
7
+ - .agent-src.uncompressed/contexts/communication/rules-auto/package-ci-checks-mechanics.md
6
8
  ---
7
9
 
8
10
  # Package CI Checks
9
11
 
10
- Before **any** push/PR in agent-config: run ALL CI checks locally.
12
+ ## When this applies
13
+
14
+ Before **any** push to remote or PR creation in the **agent-config** package.
15
+ This rule is specific to this package — it does NOT apply to consumer projects.
11
16
 
12
17
  ## The Iron Law
13
18
 
@@ -17,69 +22,24 @@ NEVER push without running ALL CI checks locally first.
17
22
 
18
23
  Every CI pipeline failure is preventable by running these checks before pushing.
19
24
 
20
- ## Required checks
21
-
22
- ### 1. Sync
23
-
24
- ```bash
25
- bash scripts/compress.sh --check # .agent-src/ matches .agent-src.uncompressed/
26
- bash scripts/compress.sh --check-hashes # compression hashes are clean
27
- ```
28
-
29
- ### 2. Consistency
30
-
31
- ```bash
32
- python3 scripts/check_compression.py # compressed variants are valid
33
- python3 scripts/check_references.py # no broken cross-references
34
- python3 scripts/check_portability.py # no project-specific references in shared files
35
- ```
36
-
37
- ### 3. Linter (0 FAIL required)
38
-
39
- ```bash
40
- python3 scripts/skill_linter.py --all # 0 FAIL required
41
- ```
42
-
43
- ### 4. Tests
44
-
45
- ```bash
46
- python3 -m pytest tests/ --tb=short # all tests must pass
47
- ```
48
-
49
- ### 5. README
50
-
51
- ```bash
52
- python3 scripts/readme_linter.py README.md --root .
53
- ```
54
-
55
- ## Quick one-liner
56
-
57
- ```bash
58
- bash scripts/compress.sh --check && \
59
- bash scripts/compress.sh --check-hashes && \
60
- python3 scripts/check_compression.py && \
61
- python3 scripts/check_references.py && \
62
- python3 scripts/check_portability.py && \
63
- python3 scripts/skill_linter.py --all && \
64
- python3 -m pytest tests/ --tb=short && \
65
- python3 scripts/readme_linter.py README.md --root .
66
- ```
67
-
68
- ## After editing skills/rules in .agent-src.uncompressed/
69
-
70
- 1. Edit uncompressed file
71
- 2. Edit compressed file in `.agent-src/` to match
72
- 3. `bash scripts/compress.sh --mark-done {relative-path}` — update hash
73
- 4. `bash scripts/compress.sh --check-hashes` — verify
25
+ ## Required checks — see mechanics
74
26
 
75
- **Skip step 3 CI WILL fail.**
27
+ Five checks must pass locally before push, in this order:
76
28
 
77
- ## After editing scripts/compress.py
29
+ 1. **Sync** `compress.sh --check` and `--check-hashes`.
30
+ 2. **Consistency** — `check_compression.py`, `check_references.py`, `check_portability.py`.
31
+ 3. **Linter** — `skill_linter.py --all`, 0 FAIL required.
32
+ 4. **Tests** — `pytest tests/`.
33
+ 5. **README** — `readme_linter.py`.
78
34
 
79
- Run `python3 -m pytest tests/test_compress.py -v` **immediately** don't wait.
35
+ The full command snippets, common-failure notes per step, the quick
36
+ chained one-liner, and the post-edit workflow ("after editing
37
+ skills/rules", "after editing `scripts/compress.py`") all live in
38
+ [`contexts/communication/rules-auto/package-ci-checks-mechanics.md`](../contexts/communication/rules-auto/package-ci-checks-mechanics.md).
39
+ Pull it whenever pre-push verification is needed.
80
40
 
81
41
  ## Do NOT
82
42
 
83
- - Push "to see if CI passes" — wastes pipeline minutes
84
- - Skip hash checks for "small changes"
85
- - Assume tests pass because linter passes
43
+ - Do NOT push "to see if CI passes" — that wastes pipeline minutes
44
+ - Do NOT skip hash checks because "I only changed one file"
45
+ - Do NOT assume tests pass because linter passes — they check different things
@@ -7,43 +7,78 @@ source: package
7
7
 
8
8
  # Preservation Guard
9
9
 
10
- Transformations (merge, refactor, compress, split) must produce output **at least as strong** as input.
10
+ When transforming any agent artifact (merge, refactor, compress, split, restructure),
11
+ the result must be **at least as strong** as the original.
11
12
 
12
13
  ## Iron Laws — every passage stays, caveman is fine
13
14
 
14
- Sections marked **Iron Law** (heading matches `# Iron Law`, `# Iron Laws`,
15
- `# The Iron Law`, any level, numbered like `Iron Law 1`, `Iron Law 2`)
16
- are **non-negotiable**, strictest preservation:
15
+ Sections marked **Iron Law** (any heading matching `# Iron Law`, `# Iron Laws`,
16
+ `# The Iron Law`, at any heading level, including numbered variants like
17
+ `Iron Law 1`, `Iron Law 2`) are **non-negotiable** and require the strictest
18
+ preservation:
17
19
 
18
- - [ ] **Heading verbatim** — exact text, exact level. Drop heading → law gone, even if code block survives.
19
- - [ ] **Fenced code blocks byte-for-byte** the law itself.
20
- - [ ] **Negation clauses kept** `NO X`, `NEVER Y`, `NOT Z` stay. Load-bearing exception denials, not filler.
21
- - [ ] **Every passage stays** — every paragraph, every list item, every fenced code block from source survives in compressed output, in order. One paragraph → one paragraph; one bullet → one bullet. Dropping whole sentences, merging two paragraphs, skipping a list item is forbidden, even if surviving prose still "makes the point".
22
- - [ ] **No Iron Law downgrades** — `## Iron Law` MUST NOT become `### Iron Law`, `**Iron Law:**`, or inline prose. Heading level is part of prominence.
20
+ - [ ] **Heading preserved verbatim** — exact text and exact heading level. Drop the
21
+ heading the law is gone, even if the code block underneath survives.
22
+ - [ ] **Fenced code blocks preserved byte-for-byte** the law itself.
23
+ - [ ] **Negation clauses preserved** — `NO X`, `NEVER Y`, `NOT Z` stay in. These
24
+ are the load-bearing exception denials, not filler.
25
+ - [ ] **Every passage stays** — every paragraph, every list item, and every
26
+ fenced code block from the source survives in the compressed output, in
27
+ order. One paragraph → one paragraph; one bullet → one bullet. Dropping
28
+ whole sentences, merging two paragraphs into one, or skipping a list item
29
+ is forbidden, even if the surviving prose still "makes the point".
30
+ - [ ] **No Iron Law downgrades** — `## Iron Law` MUST NOT become `### Iron Law`,
31
+ `**Iron Law:**`, or inline prose. Heading level is part of the prominence.
23
32
 
24
- **Caveman style encouraged for Iron Law bodies** — drop articles ("the", "a"), shorten phrasing, primitive grammar, terse cave-speak. Word count not a budget; structural unit count is. Every paragraph, bullet, code block from source present → compress as hard as you want. Forbidden is **deletion**: rationale paragraph stays, canonical-failure example stays, every "NEVER X" bullet stays.
33
+ **Caveman style is encouraged for Iron Law bodies** — drop articles ("the",
34
+ "a"), shorten phrasing, primitive grammar, terse cave-speak. Word count is
35
+ not a budget; the structural unit count is. As long as every paragraph,
36
+ bullet, and code block from the source is present, compress as hard as you
37
+ want. What's forbidden is **deletion**: the rationale paragraph stays, the
38
+ canonical-failure example stays, every "NEVER X" bullet stays.
25
39
 
26
- `scripts/check_compression.py` enforces mechanically — any violation is `error`, not warning.
40
+ `scripts/check_compression.py` enforces these mechanically — any violation is
41
+ an `error`, not a warning.
27
42
 
28
- ## Checklist verify before completing
43
+ ## Mandatory preservation checklist
29
44
 
30
- - [ ] **Iron Law sections** preserved per rules above — heading, body, fenced blocks, rationale
31
- - [ ] Strongest validation step preserved
32
- - [ ] Strongest example preserved
33
- - [ ] Strongest anti-pattern / "Do NOT" preserved
34
- - [ ] Essential decision hints (if/when/unless) preserved
35
- - [ ] Required sections preserved
36
- - [ ] Single clear responsibility preserved
37
- - [ ] Strong language ("MUST"/"NEVER") not weakened
45
+ Before completing any transformation, verify:
38
46
 
39
- ## Reject if
47
+ - [ ] **Iron Law sections** preserved per the rules above — heading, body, fenced blocks, rationale
48
+ - [ ] **Strongest validation step** preserved — concrete verify/confirm actions survive
49
+ - [ ] **Strongest example** preserved — the most illustrative code block or scenario stays
50
+ - [ ] **Strongest anti-pattern** preserved — the most important "Do NOT" or failure mode stays
51
+ - [ ] **Essential decision hints** preserved — if/when/unless logic that prevents mistakes
52
+ - [ ] **Required sections** preserved — When to use, Procedure, Output, Gotchas, Do NOT
53
+ - [ ] **Single clear responsibility** preserved — no scope creep from merging unrelated concerns
54
+ - [ ] **Strong language** preserved — "MUST", "NEVER", "Do NOT" not weakened to "should", "avoid"
40
55
 
41
- - Iron Law heading removed or downgraded
42
- - Paragraph, list item, or fenced code block dropped from Iron Law section
43
- - Negation clauses or canonical-failure prose stripped from Iron Law
44
- - Validation, example, or anti-pattern removed without replacement
45
- - Decision logic weakened
46
- - Scope broadened by merging unrelated concerns
47
- - Strong language downgraded
56
+ ## Reject criteria
48
57
 
49
- Skills: `skill-management`, `skill-reviewer` · Command: `/compress` · Linter: `check_compression_quality()`
58
+ **REJECT** the transformation if it:
59
+
60
+ - Removes or downgrades an Iron Law heading
61
+ - Drops a paragraph, list item, or fenced code block from an Iron Law section
62
+ - Strips negation clauses or canonical-failure prose from an Iron Law
63
+ - Removes a concrete validation step without equivalent replacement
64
+ - Removes the strongest example without equivalent replacement
65
+ - Removes the strongest anti-pattern without equivalent replacement
66
+ - Weakens routing or decision logic
67
+ - Broadens scope by merging unrelated workflows
68
+ - Weakens strong enforcement language
69
+
70
+ ## Applies to
71
+
72
+ - Skill merges (combining two skills into one)
73
+ - Skill splits (extracting part of a skill)
74
+ - Refactoring (restructuring without behavior change)
75
+ - Compression (`.agent-src.uncompressed/` → `.agent-src/`)
76
+ - Rule consolidation
77
+ - Guideline restructuring
78
+
79
+ ## References
80
+
81
+ - Skill: `skill-management` — compression/refactoring modes
82
+ - Skill: `skill-reviewer` — compression safety checks
83
+ - Command: `/compress` — compression quality checklist
84
+ - Linter: `scripts/skill_linter.py` — `check_compression_quality()`
@@ -2,6 +2,8 @@
2
2
  type: "auto"
3
3
  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
4
  source: package
5
+ load_context:
6
+ - .agent-src.uncompressed/contexts/communication/rules-auto/review-routing-awareness-mechanics.md
5
7
  ---
6
8
 
7
9
  # Review Routing Awareness
@@ -37,24 +39,13 @@ Look, in order, for:
37
39
  - `.github/historical-bug-patterns.yml` (or
38
40
  `agents/historical-bug-patterns.yml`)
39
41
 
40
- If neither file exists, fall back to the engineering-memory layer via
41
- [`memory-access`](../../docs/guidelines/agent-infra/memory-access.md):
42
-
43
- ```python
44
- from scripts.memory_lookup import retrieve
45
- extra = retrieve(
46
- types=["ownership", "historical-patterns"],
47
- keys=<changed file paths>,
48
- limit=5,
49
- )
50
- ```
51
-
52
- Curated memory (`agents/memory/ownership.yml`,
53
- `agents/memory/historical-patterns.yml`) carries the same schema as the
54
- project-local YAMLs and is merged into the routing output alongside
55
- them. If both memory and project YAMLs are absent, skip this rule and
56
- rely on [`reviewer-awareness`](reviewer-awareness.md) defaults. **Do
57
- not invent owners or patterns** from context.
42
+ If neither file exists, fall back to the engineering-memory layer.
43
+ Memory-lookup snippet and merge semantics live in
44
+ [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
45
+ § Memory-lookup fallback. If both memory and project YAMLs are absent,
46
+ skip this rule and rely on
47
+ [`reviewer-awareness`](reviewer-awareness.md) defaults. **Do not
48
+ invent owners or patterns** from context.
58
49
 
59
50
  ### 2. Match the diff
60
51
 
@@ -71,25 +62,19 @@ for the schema).
71
62
 
72
63
  ### 3. Surface findings
73
64
 
74
- When producing a review plan, include:
75
-
76
- - **Owner-mapped roles** explicitly preferred over generic roles. If
77
- the ownership map says `app/Billing/**` is owned by `finance-engineering
78
- + security`, use those, not "backend + security".
79
- - **Historical-pattern warnings** — list every matched pattern with a
80
- short label and the required control, e.g. _"Pattern: N+1 on tenant
81
- listings → add an eager-load regression test"_.
82
- - **Confidence note** — if the ownership map is stale (last updated > 6
83
- months ago per the `updated` field), say so. Ownership maps rot.
65
+ When producing a review plan, include owner-mapped roles (preferred
66
+ over generic), historical-pattern warnings (with required control),
67
+ and a staleness note if the ownership map's `updated` field is older
68
+ than 6 months. Worked examples for each in
69
+ [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
70
+ § Surface findings.
84
71
 
85
72
  ### 4. Do NOT overreach
86
73
 
87
- - **Never rename paths** or add ownership entries as a side effect of a
88
- code change. Ownership map edits are a separate, explicit task.
89
- - **Never mark a change safe** only because no pattern matched. Pattern
90
- absence means "no known hit", not "no risk".
91
- - **Never copy historical-pattern names into the diff** as code comments
92
- or commit messages — they are routing metadata, not commentary.
74
+ The "do NOT overreach" guardrails (no path renames as side effects, no
75
+ "safe because no match", no pattern names in diffs/commits) live in
76
+ [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
77
+ § Do NOT overreach.
93
78
 
94
79
  ## Interaction with other rules
95
80
 
@@ -102,16 +87,12 @@ When producing a review plan, include:
102
87
  matched pattern is a reason to **add a test**, never a reason to
103
88
  expand scope into unrelated refactors.
104
89
 
105
- ## Anti-patterns — reject them
90
+ ## Anti-patterns
106
91
 
107
- - Suggesting owners "because this looks like billing code" without
108
- consulting the ownership map when one exists.
109
- - Inventing historical patterns from general knowledge — patterns must
110
- come from the project's own registry.
111
- - Downgrading a matched high-severity pattern because "the author said
112
- it's fine" — the pattern was registered because it bit before.
113
- - Treating an out-of-date map as absent. Flag staleness; do not silently
114
- skip.
92
+ The four anti-pattern rejections (invented owners, invented patterns,
93
+ downgrading high-severity hits, treating stale maps as absent) live in
94
+ [`contexts/communication/rules-auto/review-routing-awareness-mechanics.md`](../contexts/communication/rules-auto/review-routing-awareness-mechanics.md)
95
+ § Anti-patterns.
115
96
 
116
97
  ## See also
117
98