@event4u/agent-config 1.24.0 → 1.25.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 (72) hide show
  1. package/.agent-src/commands/review-routing.md +7 -10
  2. package/.agent-src/contexts/authority/kernel-rule-edits.md +48 -0
  3. package/.agent-src/contexts/authority/scope-mechanics.md +15 -0
  4. package/.agent-src/contexts/contracts/consumer-agents-md-guide.md +127 -0
  5. package/.agent-src/contexts/contracts/emergency-triage-block.md +53 -0
  6. package/.agent-src/rules/analysis-skill-routing.md +1 -1
  7. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  8. package/.agent-src/rules/artifact-engagement-recording.md +1 -1
  9. package/.agent-src/rules/augment-source-of-truth.md +1 -1
  10. package/.agent-src/rules/autonomous-execution.md +1 -1
  11. package/.agent-src/rules/caveman-speak.md +1 -1
  12. package/.agent-src/rules/cli-output-handling.md +1 -1
  13. package/.agent-src/rules/command-suggestion-policy.md +1 -1
  14. package/.agent-src/rules/docs-sync.md +1 -1
  15. package/.agent-src/rules/guidelines.md +1 -1
  16. package/.agent-src/rules/improve-before-implement.md +1 -1
  17. package/.agent-src/rules/invite-challenge.md +1 -1
  18. package/.agent-src/rules/minimal-safe-diff.md +1 -1
  19. package/.agent-src/rules/model-recommendation.md +1 -1
  20. package/.agent-src/rules/no-attribution-footers.md +1 -1
  21. package/.agent-src/rules/no-roadmap-references.md +56 -20
  22. package/.agent-src/rules/onboarding-gate.md +1 -1
  23. package/.agent-src/rules/package-ci-checks.md +1 -1
  24. package/.agent-src/rules/reviewer-awareness.md +9 -2
  25. package/.agent-src/rules/roadmap-progress-sync.md +1 -1
  26. package/.agent-src/rules/scope-control.md +6 -0
  27. package/.agent-src/rules/security-sensitive-stop.md +1 -1
  28. package/.agent-src/rules/size-enforcement.md +1 -1
  29. package/.agent-src/rules/token-optimizer-maintenance.md +1 -1
  30. package/.agent-src/rules/ui-audit-gate.md +1 -1
  31. package/.agent-src/skills/adr-create/SKILL.md +2 -1
  32. package/.agent-src/skills/agents-md-thin-root/SKILL.md +125 -0
  33. package/.agent-src/skills/ai-council/SKILL.md +9 -7
  34. package/.agent-src/skills/review-routing/SKILL.md +3 -4
  35. package/.agent-src/templates/AGENTS.md +18 -148
  36. package/.agent-src/templates/copilot-instructions.md +41 -17
  37. package/.agent-src/templates/github-workflows/pr-risk-review.yml +1 -1
  38. package/.agent-src/templates/scripts/pr_review_routing.py +1 -1
  39. package/.claude-plugin/marketplace.json +2 -1
  40. package/AGENTS.md +18 -216
  41. package/CHANGELOG.md +44 -0
  42. package/README.md +2 -2
  43. package/docs/architecture.md +13 -7
  44. package/docs/catalog.md +26 -27
  45. package/docs/contracts/agents-md-tech-stack.md +74 -0
  46. package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
  47. package/docs/contracts/package-self-orientation.md +135 -0
  48. package/docs/contracts/rule-classification.md +4 -4
  49. package/docs/decisions/ADR-004-rule-governance-pruning.md +240 -0
  50. package/docs/getting-started.md +1 -1
  51. package/docs/guidelines/agent-infra/review-routing-data-format.md +1 -2
  52. package/package.json +1 -1
  53. package/scripts/_p4_migrate.py +5 -5
  54. package/scripts/audit_auto_rules.py +159 -0
  55. package/scripts/audit_likelihood.py +148 -0
  56. package/scripts/audit_overlap.py +145 -0
  57. package/scripts/build_rule_trigger_matrix.py +3 -5
  58. package/scripts/check_augment_description_cap.py +79 -0
  59. package/scripts/check_council_references.py +3 -3
  60. package/scripts/check_kernel_rule_bundle.py +151 -0
  61. package/scripts/check_references.py +21 -1
  62. package/scripts/compile_router.py +3 -0
  63. package/scripts/install.sh +0 -1
  64. package/scripts/lint_agents_md.py +168 -0
  65. package/scripts/measure_augment_budget.py +208 -0
  66. package/scripts/schemas/rule.schema.json +2 -1
  67. package/scripts/skill_linter.py +10 -4
  68. package/scripts/spotcheck_thin_root.py +134 -0
  69. package/scripts/update_counts.py +6 -10
  70. package/.agent-src/rules/no-council-references.md +0 -76
  71. package/.agent-src/rules/review-routing-awareness.md +0 -19
  72. package/.agent-src/templates/copilot-review-instructions.md +0 -76
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: review-routing
3
- skills: [review-routing, reviewer-awareness, review-routing-awareness]
3
+ skills: [review-routing, reviewer-awareness]
4
4
  description: Compute reviewer roles and matched historical bug patterns for the current diff, using project-local ownership-map.yml and historical-bug-patterns.yml
5
5
  disable-model-invocation: true
6
6
  suggestion:
@@ -18,10 +18,9 @@ reviewer roles plus any matched historical bug patterns — so the author
18
18
  knows *who* to request and *what* to test before opening a PR.
19
19
 
20
20
  Dispatches to [`review-routing`](../skills/review-routing/SKILL.md) for
21
- the core resolution logic. The rules
22
- [`reviewer-awareness`](../rules/reviewer-awareness.md) and
23
- [`review-routing-awareness`](../rules/review-routing-awareness.md) govern
24
- the output format and data handling.
21
+ the core resolution logic. The rule
22
+ [`reviewer-awareness`](../rules/reviewer-awareness.md) governs reviewer
23
+ choice, routing, and data handling.
25
24
 
26
25
  ### 1. Gather the diff
27
26
 
@@ -73,7 +72,7 @@ After the block, ask:
73
72
  ```
74
73
 
75
74
  - On **1**: hand off to
76
- [`create-pr-description`](../skills/create-pr-description/SKILL.md).
75
+ [`create-pr-description`](../skills/create-pr:description-only/SKILL.md).
77
76
  - On **2**: respect CODEOWNERS — request the *roles* resolved to people
78
77
  by the consumer's own mapping, never invent usernames.
79
78
  - On **3**: the user wants to curate the map first. Stop.
@@ -104,12 +103,10 @@ After the block, ask:
104
103
  ## See also
105
104
 
106
105
  - [`review-routing`](../skills/review-routing/SKILL.md) — the resolver
107
- - [`reviewer-awareness`](../rules/reviewer-awareness.md) — role vocabulary
108
- - [`review-routing-awareness`](../rules/review-routing-awareness.md) —
109
- data-source rules
106
+ - [`reviewer-awareness`](../rules/reviewer-awareness.md) — role vocabulary + data-source rules
110
107
  - [`review-routing-data-format`](../docs/guidelines/agent-infra/review-routing-data-format.md)
111
108
  — YAML schemas
112
- - [`create-pr-description`](../skills/create-pr-description/SKILL.md) —
109
+ - [`create-pr-description`](../skills/create-pr:description-only/SKILL.md) —
113
110
  consumes the routing block
114
111
  - [`verify-before-complete`](../rules/verify-before-complete.md) —
115
112
  consumes the `required_test` list
@@ -0,0 +1,48 @@
1
+ # Kernel-Rule Edits — Slow-Rollout Guarantee
2
+
3
+ Loaded by [`scope-control`](../../rules/scope-control.md). Codifies the
4
+ soak-time guarantee for edits to always-loaded (kernel) rules under
5
+ `.agent-src.uncompressed/rules/`.
6
+
7
+ **Size budget:** ≤ 1,500 chars.
8
+
9
+ ## The guarantee
10
+
11
+ Each kernel-rule edit ships in **its own PR**, with **≥ 24 h between
12
+ merges** of consecutive kernel-rule PRs. Autonomous mandate, roadmap
13
+ authorization, and standing "just keep going" directives **do not lift
14
+ this** — it is a behaviour-soak guarantee, not a governance preference.
15
+
16
+ The 24 h window exists so that a regression introduced by the first
17
+ edit (a rule that stops firing, an Iron Law that loses rhetorical
18
+ weight, a trigger that swallows a sibling rule's domain) surfaces in
19
+ real interactions before the second edit lands and confounds the
20
+ diagnosis.
21
+
22
+ ## Trigger
23
+
24
+ A PR is a "kernel-rule edit" iff it modifies any file in
25
+ `.agent-src.uncompressed/rules/` that is in the locked kernel set
26
+ (see [`docs/contracts/kernel-membership.md`](../../../docs/contracts/kernel-membership.md)).
27
+
28
+ The CI guard (Phase 4.2 of the always-budget-relief roadmap) fails
29
+ any PR that touches **> 1** kernel rule in the same diff. Override is
30
+ a single PR label: `bundled-always-rules-acknowledged` — the maintainer
31
+ records why the bundle is necessary in the PR body.
32
+
33
+ ## Out of scope
34
+
35
+ - Auto-tier rules. Auto rules load on demand; the soak rationale does
36
+ not apply with the same force.
37
+ - Context files cited by kernel rules. Context edits are reversible
38
+ cheaply and do not change rule firing surface.
39
+ - Whitespace / typo / link fixes inside a single kernel rule. Same-rule
40
+ cosmetic edits are not subject to the 24 h window — they ship as a
41
+ normal PR.
42
+
43
+ ## Source
44
+
45
+ - Roadmap Phase 4: always-budget-relief roadmap § Phase 4 (transient — see `agents/roadmaps/archive/`).
46
+ - Lesson: PR #36 (2026-05-04) compressed the rollout schedule under
47
+ autonomous mandate; the slow-rollout note was deferred until this
48
+ ADR pass.
@@ -58,6 +58,21 @@ Then present numbered options (`user-interaction`) with "stay on the
58
58
  current branch" as the default. The user decides. Do not branch
59
59
  first and explain later.
60
60
 
61
+ ## Branch-base inventory — ALWAYS before starting work
62
+
63
+ Before the first commit on related work, scan: `git branch --show-current` (is this branch shaped for the task?), `gh pr list --state open --limit 10` (overlapping open PR?), `git branch --sort=-committerdate | head -10` (in-flight branch to extend?).
64
+
65
+ A plausible base beyond the current branch exists → STOP and ask with numbered options:
66
+
67
+ 1. Branch off the **current branch** — stacked PR.
68
+ 2. Branch off **`main`** — independent PR.
69
+ 3. **Continue on the current branch** — extend the in-flight PR.
70
+ 4. **Cancel**.
71
+
72
+ User decides. Default: **3** when the current branch's name and scope match the task; otherwise **2**. Never improvise the base.
73
+
74
+ **Failure mode — diverging stacked PRs.** Skipping the inventory and committing to the wrong base creates two PRs that should have been one stack: merge conflicts when the parent lands, rebase / force-push churn, duplicate review effort. The 30-second inventory cost up front beats hours of rebase reconciliation later.
75
+
61
76
  ## Decline = silence — context
62
77
 
63
78
  The right moment to ask is **before** the work starts (writing the
@@ -0,0 +1,127 @@
1
+ # Consumer `AGENTS.md` — fill-out guide
2
+
3
+ > Outboard target for the placeholder sections that used to live verbatim
4
+ > in the consumer-template `AGENTS.md`. The template is now Thin-Root; this
5
+ > guide carries the prose / examples / `<!-- … -->` hints that the
6
+ > consumer copies in only when they need them.
7
+
8
+ After installing `event4u/agent-config`, the consumer project gets:
9
+
10
+ - `AGENTS.md` at project root — Thin-Root, points here.
11
+ - `.augment/`, `.agent-src/`, `.claude/`, `.cursor/`, `.clinerules/`,
12
+ `.windsurfrules` — installed artifacts, never hand-edited.
13
+ - `agents/` — project docs / roadmaps / sessions / overrides.
14
+ - `.agent-settings.yml` — project config consumed by skills.
15
+
16
+ ## Recommended `AGENTS.md` shape
17
+
18
+ The installed Thin-Root carries: project name + description, layer table,
19
+ five-question emergency triage block, pointers to this guide. Copy any of
20
+ the sections below into AGENTS.md only when the project actually needs
21
+ the content there (e.g. an unusual stack note that no `agents/` doc
22
+ covers). Default: leave AGENTS.md thin and put detail under `agents/`.
23
+
24
+ ## Tech-stack section (optional copy-in)
25
+
26
+ ```markdown
27
+ ## Tech Stack
28
+
29
+ - **Language:** {{primary_language}}
30
+ - **Framework:** {{framework}} # Laravel 11 / Next.js 15 / Rails 7 / Django 5
31
+ - **Database:** {{database}} # PostgreSQL / MySQL / MariaDB / SQLite
32
+ - **Testing:** {{test_framework}} # Pest / PHPUnit / Jest / Vitest / pytest
33
+ - **Code style:** {{code_style_tool}} # ECS / PHPStan / Ruff / ESLint
34
+ ```
35
+
36
+ ## Development-setup section (optional copy-in)
37
+
38
+ ```markdown
39
+ ## Development Setup
40
+
41
+ ​```bash
42
+ {{dev_start_command}} # make start / docker compose up / npm run dev / php artisan serve
43
+ {{dev_test_command}} # make test / docker compose exec app bash / npm test / php artisan test
44
+ ​```
45
+
46
+ ### Environment files
47
+
48
+ | File | Purpose |
49
+ |---|---|
50
+ | `.env` | Main environment |
51
+ | `.env.local` | Local overrides |
52
+ | `.env.testing` | Testing environment |
53
+ ```
54
+
55
+ ## Project-structure section (optional copy-in)
56
+
57
+ ```markdown
58
+ ## Project Structure
59
+
60
+ {{project_structure_notes}} # Where new features go, module/component
61
+ # boundaries, namespace conventions.
62
+ ```
63
+
64
+ ## Testing section (optional copy-in)
65
+
66
+ ```markdown
67
+ ## Testing
68
+
69
+ {{testing_notes}} # Framework quirks, how to run all/targeted
70
+ # tests, test data strategy (seeders /
71
+ # factories / fixtures), performance-critical
72
+ # suites.
73
+ ```
74
+
75
+ ## Quality-tools section (optional copy-in)
76
+
77
+ ```markdown
78
+ ## Quality Tools
79
+
80
+ {{quality_tools_notes}} # Which linters/formatters run, whether
81
+ # they auto-fix or report only, CI
82
+ # enforcement level.
83
+ ```
84
+
85
+ ## Recommended entry flow
86
+
87
+ Two entrypoints share the same engine and Option-A loop; pick by input shape:
88
+
89
+ | You have | Command | Envelope |
90
+ |---|---|---|
91
+ | Ticket id, URL, or pasted ticket payload | [`/implement-ticket`](.augment/commands/implement-ticket.md) | `input.kind="ticket"` |
92
+ | Free-form goal, no ticket | [`/work`](.augment/commands/work.md) | `input.kind="prompt"` |
93
+
94
+ Both drive the linear flow `refine → memory → analyze → plan → implement
95
+ → test → verify → report` with block-on-ambiguity semantics and no
96
+ auto-git.
97
+
98
+ `/work` adds a confidence-band gate at `refine`: the
99
+ [`refine-prompt`](.augment/skills/refine-prompt/SKILL.md) skill scores
100
+ the prompt on five dimensions and the engine proceeds **silently** on
101
+ `high`, halts with an **assumptions report** on `medium`, or halts with
102
+ **one clarifying question** on `low` (per the `ask-when-uncertain` Iron
103
+ Law). UI-shaped prompts route through the product UI track (`directive_set`
104
+ `ui` / `ui-trivial` / `mixed`) — `audit → design → apply → review →
105
+ polish` with a hard audit gate before any `apply`.
106
+
107
+ Persona comes from `.agent-settings.yml` (`roles.active_role`). Use
108
+ `/commit` and `/create-pr` explicitly after the delivery report. The
109
+ two flows are mutually exclusive at the state-file level: one
110
+ `.work-state.json` carries one envelope at a time; the engine refuses to
111
+ switch mid-flight.
112
+
113
+ ## Multi-agent support
114
+
115
+ | Tool | Rules | Skills | How |
116
+ |---|---|---|---|
117
+ | **Augment Code** | `.augment/rules/` | `.augment/skills/` | Native (source) |
118
+ | **Claude Code** | `.claude/rules/` | `.claude/skills/` | Symlinks + Agent Skills standard |
119
+ | **Cursor** | `.cursor/rules/` | — | Symlinks |
120
+ | **Cline** | `.clinerules/` | — | Symlinks |
121
+ | **Windsurf** | `.windsurfrules` | — | Concatenated file |
122
+ | **Gemini CLI** | `GEMINI.md` | — | Symlink → AGENTS.md |
123
+
124
+ Reinstall agent-config: `composer update event4u/agent-config` (PHP) or
125
+ `npm update @event4u/agent-config` (JS). Don't run package-internal
126
+ `task` commands from a consumer project; they only work in the
127
+ agent-config repo itself.
@@ -0,0 +1,53 @@
1
+ # Emergency Triage Block — canonical source
2
+
3
+ > Canonical content of the **Emergency Triage** block referenced by the
4
+ > `agents-md-thin-root` skill. Both the package-root `AGENTS.md` and
5
+ > `.agent-src.uncompressed/templates/AGENTS.md` (consumer template)
6
+ > embed this block verbatim. Drift is caught by the `lint-agents-md`
7
+ > task in the package's CI pipeline.
8
+
9
+ The block exists so a host agent can answer five basic questions from
10
+ the root file alone when network access, context-engine retrieval, or
11
+ linked-file fetches are degraded. Each answer fits on one line.
12
+
13
+ ## Package-root variant
14
+
15
+ Use this variant in `AGENTS.md` at the package root.
16
+
17
+ ```
18
+ ## Emergency triage — read this when nothing else is reachable
19
+
20
+ 1. **What is this repo?** — `event4u/agent-config`, a governed skill / rule / command suite for AI coding tools (no application runtime).
21
+ 2. **What language?** — All `.md` content is English; agents mirror the user's language at runtime.
22
+ 3. **Where do I edit?** — `.agent-src.uncompressed/` only. Never `.agent-src/`, `.augment/`, `.claude/`, `.cursor/`, `.clinerules/`, `.windsurfrules`.
23
+ 4. **Lint / test / sync entry point?** — `task ci` (full pipeline). Subsets: `task sync`, `task generate-tools`, `task lint-skills`, `task test`.
24
+ 5. **Where do the always-active rules live?** — `.agent-src/rules/` (kernel = 9 Iron-Law rules; tier-1 / tier-2 routed via `.agent-src/router.json`).
25
+ ```
26
+
27
+ ## Consumer-template variant
28
+
29
+ Use this variant in `.agent-src.uncompressed/templates/AGENTS.md`. The
30
+ consumer's `AGENTS.md` lands at the consumer-project root after install.
31
+
32
+ ```
33
+ ## Emergency triage — read this when nothing else is reachable
34
+
35
+ 1. **What is this repo?** — Consumer project; agent-config is installed as a shared skill / rule / command suite at `.augment/` and `.agent-src/`.
36
+ 2. **What language?** — Project-specific; agents mirror the user's language at runtime.
37
+ 3. **Where do I edit agent-config?** — Do not edit `.augment/` or `.agent-src/` here; they are installed artifacts. Project edits live in `agents/` and project source.
38
+ 4. **Lint / test / sync entry point?** — Project-specific (see project README); agent-config itself reinstalls via `composer update event4u/agent-config` or `npm update @event4u/agent-config`.
39
+ 5. **Where do the always-active rules live?** — `.agent-src/rules/` (kernel = 9 Iron-Law rules; tier-1 / tier-2 routed via `.agent-src/router.json`).
40
+ ```
41
+
42
+ ## Why two variants
43
+
44
+ The package-root and the consumer template answer the same five
45
+ questions but in different repos:
46
+
47
+ - The package-root variant points at this repo's authoring layer
48
+ (`.agent-src.uncompressed/`) and the package's CI entry point.
49
+ - The consumer variant tells the agent it is in a **consumer** project
50
+ where `.augment/` is an installed artifact and editing it is wrong.
51
+
52
+ The questions stay identical so a host agent can recognise the block
53
+ visually regardless of which repo it landed in.
@@ -1,5 +1,5 @@
1
1
  ---
2
- type: "auto"
2
+ type: "manual"
3
3
  tier: "3"
4
4
  description: "When choosing an analysis skill, route to the narrowest matching skill instead of defaulting to broad analysis"
5
5
  source: package
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "2a"
4
4
  alwaysApply: false
5
- description: "Creating a new skill, rule, command, or guideline, or significantly rewriting one — runs a mandatory Understand → Research → Draft sequence before any artifact content is written."
5
+ description: "Creating a new skill, rule, command, or guideline, or significantly rewriting one — runs mandatory Understand → Research → Draft before drafting"
6
6
  source: package
7
7
  triggers:
8
8
  - intent: "create new skill"
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "mechanical-already"
4
4
  alwaysApply: false
5
- description: "After a /implement-ticket or /work phase-step (refine/memory/analyze/plan/implement/test/verify/report) or full task — emit one telemetry:record call with consulted+applied ids when enabled"
5
+ description: "After a /implement-ticket or /work phase-step (refine/memory/analyze/plan/implement/test/verify/report) or full task — emit one telemetry:record call"
6
6
  source: package
7
7
  triggers:
8
8
  - phrase: "/implement-ticket"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
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
+ description: "Creating, editing, or modifying files in .agent-src/ or .augment/ — source of truth is .agent-src.uncompressed/, never edit generated dirs directly"
5
5
  source: package
6
6
  load_context:
7
7
  - ../contexts/communication/rules-auto/augment-source-of-truth-mechanics.md
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "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
+ description: "Whether to ask or act on a workflow step — trivial-vs-blocking, autonomy opt-in, commit default; Hard Floor in non-destructive-by-default"
5
5
  alwaysApply: false
6
6
  source: package
7
7
  load_context:
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
4
- description: "When caveman.speak_scope != off — compress reply prose to caveman grammar with byte-for-byte carve-outs for numbered options, Iron-Law literals, code, paths, and error markers."
4
+ description: "When caveman.speak_scope != off — compress reply prose to caveman grammar with carve-outs for numbered options, Iron-Law, code, paths, error markers"
5
5
  source: package
6
6
  triggers:
7
7
  - intent: "any reply"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
4
- 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."
4
+ description: "Running CLI commands that produce verbose output — git, tests, linters, docker, build tools, artisan, npm, composer. Wrap with rtk; tail/grep fallback"
5
5
  source: package
6
6
  triggers:
7
7
  - keyword: "git"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "mechanical-already"
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
+ description: "User prompt without /command matching an eligible slash command — surface matches as numbered options with as-is escape; never auto-executes"
5
5
  source: package
6
6
  triggers:
7
7
  - phrase: "free-form prompt"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
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
+ description: "Keeping .augment/ contexts, counts, cross-references in sync when creating, renaming, or deleting skills, rules, commands, templates, agent infra"
5
5
  source: package
6
6
  triggers:
7
7
  - path_prefix: ".agent-src.uncompressed/"
@@ -1,5 +1,5 @@
1
1
  ---
2
- type: "auto"
2
+ type: "manual"
3
3
  tier: "3"
4
4
  description: "Writing or reviewing code — check relevant guideline before writing or reviewing code"
5
5
  alwaysApply: false
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2b"
4
- description: "Before implementing features or architectural changes — validate the request against existing code, challenge weak requirements, and suggest improvements"
4
+ description: "Before implementing features or architectural changes — validate the request against existing code, challenge weak requirements, suggest improvements"
5
5
  alwaysApply: false
6
6
  source: package
7
7
  council_depth: deep
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2b"
4
- description: "Before executing a complex plan or non-trivial design — proactively ask 'am I solving the right problem?' and pause for user confirmation, even when no ambiguity is detected"
4
+ description: "Before executing a complex plan or non-trivial design — ask 'am I solving the right problem?' and pause for user confirmation, even when no ambiguity"
5
5
  alwaysApply: false
6
6
  source: package
7
7
  council_depth: deep
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "2a"
4
4
  alwaysApply: false
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
+ description: "When writing or reviewing a diff — the smallest change that solves the stated problem; no drive-by edits, opportunistic refactors, or reformatting"
6
6
  source: package
7
7
  triggers:
8
8
  - intent: "writing a diff"
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
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
+ description: "Starting a new task, switching task type, or invoking a command — detect complexity and recommend optimal model (Opus/Sonnet/GPT) before work"
5
5
  source: package
6
6
  triggers:
7
7
  - phrase: "switch task"
@@ -2,7 +2,7 @@
2
2
  type: "auto"
3
3
  tier: "3"
4
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"
5
+ description: "Generating PR/issue/comment/commit-message bodies — forbids 'Generated with', 'Co-authored by', or 'Pull Request opened by' attribution footers"
6
6
  source: package
7
7
  triggers:
8
8
  - intent: "PR body"
@@ -1,31 +1,49 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "mechanical-already"
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
+ description: "Linking transient files (agents/roadmaps/, agents/council-{questions,responses,sessions}/) from a stable artifact — both layers expire; promote findings"
5
5
  alwaysApply: false
6
6
  source: package
7
7
  triggers:
8
8
  - path_prefix: "agents/roadmaps/"
9
+ - path_prefix: "agents/council-questions/"
10
+ - path_prefix: "agents/council-responses/"
11
+ - path_prefix: "agents/council-sessions/"
9
12
  - intent: "link from stable artifact"
13
+ - intent: "link to council artefact"
14
+ routes_to:
15
+ - "skill:ai-council"
10
16
  validator_ignore:
11
17
  - type: "substring"
12
18
  pattern: ".agent-src.uncompressed/"
13
- reason: "Rule contrasts the authoring tree with transient roadmap files."
19
+ reason: "Rule contrasts the authoring tree with transient layers."
14
20
  ---
15
21
 
16
- # No Roadmap References from Stable Artifacts
22
+ # No Transient References from Stable Artifacts
17
23
 
18
- Roadmaps in `agents/roadmaps/` are **transient** archived, skipped,
19
- or deleted as work completes. Stable artifacts (rules, skills,
20
- commands, contexts, guidelines, AGENTS.md, README) outlive them. A
21
- stable artifact citing a specific roadmap file becomes a broken
22
- reference the moment that roadmap is deleted.
24
+ Two transient layers under `agents/` outlive nothing: roadmaps in
25
+ `agents/roadmaps/` are archived, skipped, or deleted as work
26
+ completes; council artefacts in `agents/council-{questions,responses,
27
+ sessions}/` are **gitignored, local-only, and auto-pruned** after
28
+ `ai_council.session_retention_days` (default 7). Stable artifacts
29
+ (rules, skills, commands, contexts, guidelines, AGENTS.md, README,
30
+ copilot-instructions) outlive both. A stable artifact citing a
31
+ specific transient file becomes a broken reference the moment that
32
+ file is deleted or pruned.
33
+
34
+ Council links rot three ways: gitignored (not in cloned repo),
35
+ pruned after retention window (gone even locally), and the installed
36
+ `.augment/` projection cannot follow a path that does not exist in
37
+ the consumer.
23
38
 
24
39
  ## The Iron Law
25
40
 
26
41
  ```
27
- NEVER LINK TO A SPECIFIC FILE IN agents/roadmaps/ FROM A STABLE ARTIFACT.
42
+ NEVER LINK TO A SPECIFIC FILE IN agents/roadmaps/
43
+ OR IN agents/council-{questions,responses,sessions}/
44
+ FROM A STABLE ARTIFACT.
28
45
  PROMOTE DURABLE CONCLUSIONS TO agents/contexts/ AND CITE THAT INSTEAD.
46
+ INLINE COUNCIL CONVERGENCE WITH DATE + MEMBERS, NEVER THE PATH.
29
47
  ```
30
48
 
31
49
  Stable artifact = anything that is **not** a roadmap, council
@@ -37,6 +55,9 @@ These paths must not appear inside a stable artifact:
37
55
 
38
56
  - `agents/roadmaps/<file>.md`, `agents/roadmaps/archive/<file>.md`,
39
57
  `agents/roadmaps/skipped/<file>.md`
58
+ - `agents/council-questions/<file>.md`,
59
+ `agents/council-responses/<file>.json`,
60
+ `agents/council-sessions/<file>.json` or `<timestamp>/...`
40
61
 
41
62
  Stable artifact = any file under `.agent-src.uncompressed/{rules,
42
63
  skills,commands,contexts,templates,personas}/`, `agents/contexts/`,
@@ -44,38 +65,53 @@ skills,commands,contexts,templates,personas}/`, `agents/contexts/`,
44
65
  `docs/customization.md`, `docs/getting-started.md`, `docs/catalog.md`,
45
66
  `AGENTS.md`, `README.md`, `copilot-instructions.md`.
46
67
 
47
- CI enforcement: `scripts/check_no_roadmap_refs.py` (companion linter
48
- fails the build on any new violation).
68
+ CI enforcement: `scripts/check_no_roadmap_refs.py` (roadmap layer)
69
+ and `scripts/check_council_references.py` (council layer) both
70
+ fail the build on any new violation.
49
71
 
50
72
  ## Allowed patterns
51
73
 
52
- - `agents/roadmaps/` and its subdirectories as directory mentions
74
+ - `agents/roadmaps/` and `agents/council-*/` as **directory** mentions
53
75
  (talking about the layer, not a specific file)
54
76
  - Roadmap → roadmap references (siblings within the transient layer)
77
+ - The `ai-council` skill and `/council:*` commands documenting the
78
+ output path schema
79
+ - Inline council convergence summary — e.g. *"Council
80
+ (claude-sonnet-4-5 + gpt-4o, 2026-05-06) converged on …"* with
81
+ date + members, no filepath
55
82
  - Council sessions, `agents/.agent-chat-history`, commit messages, PR
56
83
  descriptions — transient by construction, not part of the package
57
84
  surface
58
85
 
59
86
  ## What to do instead
60
87
 
61
- When a stable artifact needs to cite a roadmap finding:
88
+ When a stable artifact needs to cite a transient finding:
62
89
 
63
90
  1. Identify the durable conclusion — decision, contract, lesson,
64
91
  mechanic.
65
92
  2. Promote it to a context file under `agents/contexts/` (ADR,
66
- mechanics doc, locked decision). The roadmap can then point at
67
- the context, not the other way around.
93
+ mechanics doc, locked decision). The roadmap or council session
94
+ can then point at the context, not the other way around.
68
95
  3. Reference the context from the stable artifact.
96
+ 4. For council convergences specifically: inline a convergence-summary
97
+ block (members, date, cost if relevant — see `ai-council`
98
+ § Output format) instead of linking the session JSON.
99
+
100
+ Failure modes:
69
101
 
70
- Failure mode: *"I'll just link to the roadmap, it's evidence."* The
71
- roadmap gets archived, then deleted, then the link rots. **Promote
72
- first, link second.**
102
+ - *"I'll just link to the roadmap, it's evidence."* The roadmap
103
+ gets archived, then deleted, then the link rots. **Promote first,
104
+ link second.**
105
+ - *"I'll just link to the session JSON, it's evidence."* The session
106
+ is gone in 7 days. **Inline first, link never.**
73
107
 
74
108
  ## See also
75
109
 
76
110
  - [`docs-sync`](docs-sync.md) — cross-reference sync after rename / delete
77
111
  - [`agent-docs`](agent-docs.md) — roadmap layer conventions
78
- - [`roadmap-progress-sync`](roadmap-progress-sync.md) — sync dashboard on
79
- roadmap touch
112
+ - [`roadmap-progress-sync`](roadmap-progress-sync.md) — sync dashboard
113
+ on roadmap touch
80
114
  - [`augment-source-of-truth`](augment-source-of-truth.md) — edit
81
115
  `.agent-src.uncompressed/`
116
+ - [`ai-council`](../skills/ai-council/SKILL.md) — output path
117
+ convention and convergence-summary format
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
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
+ description: "First turn of a conversation on a project — check onboarding.onboarded in .agent-settings.yml; when false, prompt to run /onboard before any request"
5
5
  source: package
6
6
  triggers:
7
7
  - phrase: "first turn"
@@ -1,5 +1,5 @@
1
1
  ---
2
- type: "auto"
2
+ type: "manual"
3
3
  tier: "mechanical-already"
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
@@ -1,18 +1,25 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "2a"
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
+ description: "When suggesting reviewers or flagging risk hotspots — anchor in paths/risk + ownership-map + bug-patterns; medium/high needs primary + secondary"
5
5
  source: package
6
6
  triggers:
7
7
  - keyword: "reviewer"
8
8
  - phrase: "suggest reviewers"
9
+ - phrase: "risk hotspot"
10
+ - phrase: "ownership map"
9
11
  routes_to:
10
12
  - "skill:review-routing"
11
13
  ---
12
14
 
13
15
  # Reviewer Awareness
14
16
 
15
- **Iron Law.** Anchor reviewer choice in paths and risk, never seniority; medium / high risk requires primary + secondary role.
17
+ **Iron Law (reviewer choice).** Anchor reviewer choice in paths and risk, never seniority; medium / high risk requires primary + secondary role.
18
+
19
+ **Iron Law (routing / risk).** Consult ownership-map and historical-bug-patterns before suggesting reviewers or claiming a change is safe.
16
20
 
17
21
  Body migrated to `skill:review-routing` (per P4 of `road-to-kernel-and-router.md`).
18
22
  Trigger-set above activates this routing under the `balanced` and `full` profiles.
23
+
24
+ Consolidates the former review-routing-awareness rule per the
25
+ package's adr-auto-rule-consolidation decision.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
4
- description: "Any roadmap touch (file move, checkbox flip, phase change) regens dashboard same response; archive at 0 open. Autonomous runs flip each checkbox the SAME reply, never batched at the end."
4
+ description: "Any roadmap touch (file move, checkbox flip, phase change) regens dashboard same response; archive at 0 open. Autonomous runs flip checkboxes inline"
5
5
  source: package
6
6
  triggers:
7
7
  - path_prefix: "agents/roadmaps/"