@event4u/agent-config 1.23.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.
- package/.agent-src/commands/analyze-reference-repo.md +3 -0
- package/.agent-src/commands/review-routing.md +7 -10
- package/.agent-src/commands/roadmap/process-full.md +41 -1
- 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/contexts/execution/roadmap-process-loop.md +29 -6
- 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 +37 -3
- 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/learning-to-rule-or-skill/SKILL.md +9 -0
- package/.agent-src/skills/markitdown/SKILL.md +239 -0
- package/.agent-src/skills/review-routing/SKILL.md +3 -4
- package/.agent-src/skills/universal-project-analysis/SKILL.md +8 -0
- 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 +7 -5
- package/AGENTS.md +18 -205
- package/CHANGELOG.md +70 -0
- package/README.md +2 -2
- package/docs/architecture.md +13 -7
- package/docs/catalog.md +45 -29
- package/docs/contracts/agents-md-tech-stack.md +74 -0
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -1
- 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/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_markitdown_lift.py +127 -0
- package/scripts/schemas/rule.schema.json +2 -1
- package/scripts/skill_linter.py +10 -4
- 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
|
@@ -192,4 +192,7 @@ Never create the roadmap without explicit confirmation.
|
|
|
192
192
|
- Skill: `project-analyzer` — base analysis workflow.
|
|
193
193
|
- Skill: `learning-to-rule-or-skill` — turn adopt items into content.
|
|
194
194
|
- Skill: `upstream-contribute` — push learnings back to this package.
|
|
195
|
+
- Skill: `markitdown` — preferred ingestion path when the reference
|
|
196
|
+
ships PDFs, DOCX, XLSX, PPTX, EPUB, images, or audio. Never read a
|
|
197
|
+
binary office format raw — convert first, then analyze.
|
|
195
198
|
- Roadmaps: `agents/roadmaps/` — consumers of findings (e.g. `archive/road-to-anthropic-alignment.md`).
|
|
@@ -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
|
|
@@ -28,7 +28,8 @@ with the **scope delta below**.
|
|
|
28
28
|
## Scope delta
|
|
29
29
|
|
|
30
30
|
- **Working set:** every open step across every phase, in document
|
|
31
|
-
order.
|
|
31
|
+
order. **Horizon markers do not narrow the working set** — see
|
|
32
|
+
Iron Law below.
|
|
32
33
|
- **Stop after:** the entire roadmap reaches `count_open == 0`, or a
|
|
33
34
|
halt condition fires (Hard-Floor, council-off + ambiguity,
|
|
34
35
|
security-sensitive, scope-out-of-roadmap, test/quality red).
|
|
@@ -40,10 +41,49 @@ with the **scope delta below**.
|
|
|
40
41
|
archival check from
|
|
41
42
|
[`roadmap-process-loop § 6`](../../contexts/execution/roadmap-process-loop.md#6-final-report-and-archival).
|
|
42
43
|
|
|
44
|
+
## Iron Law — Full is Full
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
/roadmap:process-full PROCESSES EVERY OPEN STEP IN THE FILE.
|
|
48
|
+
HORIZON MARKERS, "OUT-OF-HORIZON" LABELS, "GATED ON PHASE X"
|
|
49
|
+
NOTES, AND PHASE-INTERNAL "OPTIONAL" TAGS DO NOT NARROW THE
|
|
50
|
+
WORKING SET. ONLY THE FIVE HALT CONDITIONS STOP THE RUN.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Roadmaps frequently carry a "Horizon (N-week visible plate)" section
|
|
54
|
+
or "(out-of-horizon, gated on Phase N)" sub-headings as an authoring
|
|
55
|
+
device. Those are **archival annotations**, not execution gates.
|
|
56
|
+
`/roadmap:process-full` ignores them by construction. If the user
|
|
57
|
+
wants horizon-respecting execution, they invoke `/roadmap:process-phase`
|
|
58
|
+
(scope = single phase) or `/roadmap:process-step` (scope = single
|
|
59
|
+
step) instead.
|
|
60
|
+
|
|
61
|
+
## Iron Law — Real-time dashboard
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
EVERY DONE STEP FLIPS [ ] → [x] BEFORE THE LOOP MOVES TO THE NEXT STEP.
|
|
65
|
+
DASHBOARD REGENERATES IN THE SAME REPLY THAT FLIPPED THE BOX.
|
|
66
|
+
NO BATCH FLIP AT THE ARCHIVE COMMIT. NO "I'LL DO IT AT THE END."
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`/roadmap:process-full` is the worst offender for batching because it
|
|
70
|
+
runs continuously across many steps. Flipping all 13 boxes in the
|
|
71
|
+
single archive commit defeats the dashboard's purpose — the user
|
|
72
|
+
loses progress visibility for the entire run. Per Iron Law 2 of
|
|
73
|
+
[`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md): the
|
|
74
|
+
flip + regen pair is atomic with the step's work, executed inside
|
|
75
|
+
[`roadmap-process-loop § 5`](../../contexts/execution/roadmap-process-loop.md#5-step-loop)
|
|
76
|
+
step 5.
|
|
77
|
+
|
|
43
78
|
## Rules
|
|
44
79
|
|
|
45
80
|
- **No silent acceleration past a halt.** Every halt condition stops
|
|
46
81
|
the run; the user resumes on the next turn.
|
|
82
|
+
- **No silent stop at a horizon marker.** Encountering "out-of-horizon",
|
|
83
|
+
"gated on Phase N", "deferred", or any equivalent annotation is
|
|
84
|
+
**not** a halt condition. Continue.
|
|
85
|
+
- **No silent batch flip.** Each step's checkbox flips in the same
|
|
86
|
+
reply that lands its work — never deferred to the archive commit.
|
|
47
87
|
- **Phase quality pipeline runs at every phase boundary** when cadence
|
|
48
88
|
is `per_phase` or `per_step`. `end_of_roadmap` skips per-phase and
|
|
49
89
|
runs only at the final archival check.
|
|
@@ -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.
|
|
@@ -86,10 +86,17 @@ For each open step in the working set (scope-bound — see wrapper):
|
|
|
86
86
|
- **Council on** → invoke per [`ai-council`](../../skills/ai-council/SKILL.md),
|
|
87
87
|
integrate convergence, proceed. Token spend was opted in.
|
|
88
88
|
- **Council off** → halt, surface once, wait. Resume on next turn.
|
|
89
|
-
5.
|
|
90
|
-
|
|
91
|
-
the
|
|
92
|
-
|
|
89
|
+
5. **Atomic flip + regen** — before moving to step N+1, in the **same
|
|
90
|
+
reply** that landed step N's work:
|
|
91
|
+
1. Flip the checkbox in `agents/roadmaps/<file>.md`: `[x]` done ·
|
|
92
|
+
`[~]` partial · `[-]` skipped.
|
|
93
|
+
2. Run `./agent-config roadmap:progress` to regenerate the
|
|
94
|
+
dashboard.
|
|
95
|
+
This pair is **non-skippable** and **non-batchable** per Iron Law 2
|
|
96
|
+
of [`roadmap-progress-sync`](../../rules/roadmap-progress-sync.md). A
|
|
97
|
+
loop iteration that lands work without flipping its box is a rule
|
|
98
|
+
violation. Do not save flips for the archive commit.
|
|
99
|
+
6. Run quality pipeline if cadence is `per_step`.
|
|
93
100
|
|
|
94
101
|
### Halt conditions
|
|
95
102
|
|
|
@@ -101,6 +108,20 @@ For each open step in the working set (scope-bound — see wrapper):
|
|
|
101
108
|
|
|
102
109
|
On halt: stop, surface state, do **not** auto-fix outside the failing step.
|
|
103
110
|
|
|
111
|
+
### Non-halt — horizon markers, gating notes, "optional" tags
|
|
112
|
+
|
|
113
|
+
The following are **authoring annotations**, never halt conditions. Do
|
|
114
|
+
**not** stop execution when the roadmap text contains them:
|
|
115
|
+
|
|
116
|
+
- `Horizon (N-week visible plate)` section headers
|
|
117
|
+
- `(out-of-horizon, gated on Phase N)` phase-header suffixes
|
|
118
|
+
- `(deferred)` / `(later)` / `(optional)` tags on a step
|
|
119
|
+
- "Gate: Phase 1 ships and …" prose inside an out-of-horizon phase
|
|
120
|
+
|
|
121
|
+
`process-step` and `process-phase` honor scope by stopping at their
|
|
122
|
+
configured boundary anyway. `process-full` is **defined by** ignoring
|
|
123
|
+
these markers — see [`/roadmap:process-full § Iron Law`](../../commands/roadmap/process-full.md#iron-law--full-is-full).
|
|
124
|
+
|
|
104
125
|
## 6. Final report and archival
|
|
105
126
|
|
|
106
127
|
- Summary: scope-bound (steps/phases done in this run), council
|
|
@@ -118,8 +139,10 @@ On halt: stop, surface state, do **not** auto-fix outside the failing step.
|
|
|
118
139
|
|---|---|---|
|
|
119
140
|
| `process-step` | Single first open step | One iteration of § 5 |
|
|
120
141
|
| `process-phase` | All open steps in first phase with `count_open > 0` | Phase boundary; per-phase quality if cadence ≠ `end_of_roadmap` |
|
|
121
|
-
| `process-full` | Every open step across every phase, in order | Roadmap fully closed (or halt) |
|
|
142
|
+
| `process-full` | Every open step across every phase, in order — **horizon markers do not narrow this set** | Roadmap fully closed (or halt) |
|
|
122
143
|
|
|
123
144
|
`process-full` runs the per-phase quality pipeline at every phase
|
|
124
145
|
boundary when cadence is `per_phase` or `per_step`; on red it halts
|
|
125
|
-
before the next phase.
|
|
146
|
+
before the next phase. It does **not** stop at horizon markers,
|
|
147
|
+
"out-of-horizon" labels, or "gated on Phase N" notes — those are
|
|
148
|
+
archival annotations, not halt conditions.
|
|
@@ -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"
|