@event4u/agent-config 1.24.0 → 1.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agent-src/commands/review-routing.md +7 -10
- package/.agent-src/contexts/authority/kernel-rule-edits.md +48 -0
- package/.agent-src/contexts/authority/scope-mechanics.md +15 -0
- package/.agent-src/contexts/contracts/consumer-agents-md-guide.md +127 -0
- package/.agent-src/contexts/contracts/emergency-triage-block.md +53 -0
- package/.agent-src/rules/analysis-skill-routing.md +1 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/.agent-src/rules/artifact-engagement-recording.md +1 -1
- package/.agent-src/rules/augment-source-of-truth.md +1 -1
- package/.agent-src/rules/autonomous-execution.md +1 -1
- package/.agent-src/rules/caveman-speak.md +1 -1
- package/.agent-src/rules/cli-output-handling.md +1 -1
- package/.agent-src/rules/command-suggestion-policy.md +1 -1
- package/.agent-src/rules/docs-sync.md +1 -1
- package/.agent-src/rules/guidelines.md +1 -1
- package/.agent-src/rules/improve-before-implement.md +1 -1
- package/.agent-src/rules/invite-challenge.md +1 -1
- package/.agent-src/rules/minimal-safe-diff.md +1 -1
- package/.agent-src/rules/model-recommendation.md +1 -1
- package/.agent-src/rules/no-attribution-footers.md +1 -1
- package/.agent-src/rules/no-roadmap-references.md +56 -20
- package/.agent-src/rules/onboarding-gate.md +1 -1
- package/.agent-src/rules/package-ci-checks.md +1 -1
- package/.agent-src/rules/reviewer-awareness.md +9 -2
- package/.agent-src/rules/roadmap-progress-sync.md +1 -1
- package/.agent-src/rules/scope-control.md +6 -0
- package/.agent-src/rules/security-sensitive-stop.md +1 -1
- package/.agent-src/rules/size-enforcement.md +1 -1
- package/.agent-src/rules/token-optimizer-maintenance.md +1 -1
- package/.agent-src/rules/ui-audit-gate.md +1 -1
- package/.agent-src/skills/adr-create/SKILL.md +2 -1
- package/.agent-src/skills/agents-md-thin-root/SKILL.md +125 -0
- package/.agent-src/skills/ai-council/SKILL.md +9 -7
- package/.agent-src/skills/review-routing/SKILL.md +3 -4
- package/.agent-src/templates/AGENTS.md +18 -148
- package/.agent-src/templates/copilot-instructions.md +41 -17
- package/.agent-src/templates/github-workflows/pr-risk-review.yml +1 -1
- package/.agent-src/templates/scripts/pr_review_routing.py +1 -1
- package/.claude-plugin/marketplace.json +2 -1
- package/AGENTS.md +18 -216
- package/CHANGELOG.md +58 -0
- package/README.md +2 -2
- package/docs/architecture.md +13 -7
- package/docs/catalog.md +26 -27
- package/docs/contracts/agents-md-tech-stack.md +74 -0
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
- package/docs/contracts/linter-structural-model.md +180 -0
- package/docs/contracts/package-self-orientation.md +135 -0
- package/docs/contracts/rule-classification.md +4 -4
- package/docs/decisions/ADR-004-rule-governance-pruning.md +240 -0
- package/docs/getting-started.md +1 -1
- package/docs/guidelines/agent-infra/review-routing-data-format.md +1 -2
- package/docs/guidelines/agent-infra/size-and-scope.md +18 -12
- package/package.json +1 -1
- package/scripts/_p4_migrate.py +5 -5
- package/scripts/audit_auto_rules.py +159 -0
- package/scripts/audit_likelihood.py +148 -0
- package/scripts/audit_overlap.py +145 -0
- package/scripts/build_rule_trigger_matrix.py +3 -5
- package/scripts/check_augment_description_cap.py +79 -0
- package/scripts/check_council_references.py +3 -3
- package/scripts/check_kernel_rule_bundle.py +151 -0
- package/scripts/check_references.py +21 -1
- package/scripts/compile_router.py +3 -0
- package/scripts/install.sh +0 -1
- package/scripts/lint_agents_md.py +168 -0
- package/scripts/measure_augment_budget.py +208 -0
- package/scripts/measure_density.py +232 -0
- package/scripts/schemas/rule.schema.json +2 -1
- package/scripts/skill_linter.py +166 -31
- package/scripts/spotcheck_thin_root.py +134 -0
- package/scripts/update_counts.py +6 -10
- package/.agent-src/rules/no-council-references.md +0 -76
- package/.agent-src/rules/review-routing-awareness.md +0 -19
- 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
|
|
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
|
|
22
|
-
[`reviewer-awareness`](../rules/reviewer-awareness.md)
|
|
23
|
-
|
|
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-
|
|
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-
|
|
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.
|
|
@@ -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
|
|
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
|
|
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
|
|
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: "
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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,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,
|
|
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 —
|
|
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,
|
|
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
|
|
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
|
|
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: "
|
|
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
|
|
19
|
+
reason: "Rule contrasts the authoring tree with transient layers."
|
|
14
20
|
---
|
|
15
21
|
|
|
16
|
-
# No
|
|
22
|
+
# No Transient References from Stable Artifacts
|
|
17
23
|
|
|
18
|
-
|
|
19
|
-
or deleted as work
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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/
|
|
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` (
|
|
48
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
|
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
|
|
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,18 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
type: "auto"
|
|
3
3
|
tier: "2a"
|
|
4
|
-
description: "When suggesting reviewers
|
|
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
|
|
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/"
|