@event4u/agent-config 9.15.0 → 9.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +74 -0
- package/README.md +1 -1
- package/dist/agent-src/commands/agent-handoff.md +100 -48
- package/dist/agent-src/commands/commit.md +1 -1
- package/dist/agent-src/commands/condense.md +19 -64
- package/dist/agent-src/commands/evals/agent-handoff.json +13 -1
- package/dist/agent-src/commands/memory/promote.md +14 -1
- package/dist/agent-src/commands/mode.md +9 -5
- package/dist/agent-src/commands/optimize/deep.md +72 -11
- package/dist/agent-src/contexts/authority/commit-mechanics.md +5 -5
- package/dist/agent-src/contexts/communication/rules-auto/guidelines-mechanics.md +1 -0
- package/dist/agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +1 -1
- package/dist/agent-src/contexts/communication/rules-auto/think-before-action-mechanics.md +6 -1
- package/dist/agent-src/contexts/communication/rules-auto/token-efficiency-mechanics.md +4 -1
- package/dist/agent-src/contexts/execution/autonomy-mechanics.md +27 -1
- package/dist/agent-src/contexts/execution/roadmap-process-loop.md +5 -2
- package/dist/agent-src/profiles/agency.yml +3 -3
- package/dist/agent-src/profiles/content_creator.yml +2 -2
- package/dist/agent-src/profiles/developer.yml +2 -2
- package/dist/agent-src/profiles/finance.yml +1 -1
- package/dist/agent-src/profiles/founder.yml +2 -2
- package/dist/agent-src/profiles/ops.yml +2 -2
- package/dist/agent-src/rules/architecture.md +2 -2
- package/dist/agent-src/rules/autonomous-execution.md +1 -1
- package/dist/agent-src/rules/context-hygiene.md +3 -2
- package/dist/agent-src/rules/domain-safety-pii.md +1 -1
- package/dist/agent-src/rules/output-discipline.md +9 -2
- package/dist/agent-src/rules/token-budget-discipline.md +2 -2
- package/dist/agent-src/rules/user-interaction.md +3 -4
- package/dist/agent-src/skills/build-buy-partner/SKILL.md +1 -1
- package/dist/agent-src/skills/copilot-agents-optimization/SKILL.md +4 -4
- package/dist/agent-src/skills/copilot-config/SKILL.md +1 -1
- package/dist/agent-src/skills/deep-reading-analyst/SKILL.md +7 -4
- package/dist/agent-src/skills/description-assist/SKILL.md +1 -1
- package/dist/agent-src/skills/fe-design/SKILL.md +1 -1
- package/dist/agent-src/skills/market-entry-analysis/SKILL.md +1 -1
- package/dist/agent-src/skills/persona-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/readme-reviewer/SKILL.md +2 -1
- package/dist/agent-src/skills/rule-writing/SKILL.md +4 -2
- package/dist/agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/dist/agent-src/skills/skill-writing/SKILL.md +2 -2
- package/dist/agent-src/skills/tailwind-engineer/SKILL.md +3 -1
- package/dist/agent-src/skills/token-optimizer/SKILL.md +2 -2
- package/dist/agent-src/skills/ui-component-architect/SKILL.md +6 -3
- package/dist/agent-src/templates/agent-settings.md +13 -15
- package/dist/agent-src/templates/agents/agent-project-settings.example.yml +6 -2
- package/dist/agent-src/templates/persona.md +2 -2
- package/dist/agent-src/templates/roadmaps.md +1 -1
- package/dist/agent-src/templates/rule.md +1 -1
- package/dist/agent-src/templates/skill.md +1 -1
- package/dist/cli/mcp/content.js +1 -1
- package/dist/cli/mcp/content.js.map +1 -1
- package/dist/cli/registry.js +1 -0
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli-delegate/{chunk-ZXXJLL5K.js → chunk-BSLUHV2F.js} +127 -1487
- package/dist/cli-delegate/{chunk-H574KOUH.js → chunk-IMSXPRVH.js} +24 -1
- package/dist/cli-delegate/chunk-VSYT7OHO.js +1382 -0
- package/dist/cli-delegate/chunk-XGA2NTU4.js +3727 -0
- package/dist/cli-delegate/cmd_conformance.js +4 -3
- package/dist/cli-delegate/cmd_converge.js +3 -3
- package/dist/cli-delegate/cmd_doctor.js +3 -2
- package/dist/cli-delegate/cmd_export.js +4 -4
- package/dist/cli-delegate/cmd_handoff.js +3194 -0
- package/dist/cli-delegate/cmd_memory_get.js +35 -3754
- package/dist/cli-delegate/cmd_migrate.js +2 -2
- package/dist/cli-delegate/cmd_prune.js +4 -4
- package/dist/cli-delegate/cmd_settings_migrate.js +4 -4
- package/dist/cli-delegate/cmd_sync.js +4 -4
- package/dist/cli-delegate/cmd_uninstall.js +4 -4
- package/dist/cli-delegate/cmd_update.js +3 -3
- package/dist/cli-delegate/cmd_upgrade.js +3 -3
- package/dist/cli-delegate/cmd_validate.js +4 -4
- package/dist/cli-delegate/cmd_versions.js +3 -3
- package/dist/discovery/deprecation-report.md +1 -1
- package/dist/discovery/discovery-manifest.json +31 -31
- package/dist/discovery/discovery-manifest.json.sha256 +1 -1
- package/dist/discovery/discovery-manifest.summary.md +1 -1
- package/dist/discovery/orphan-report.md +1 -1
- package/dist/discovery/packs.json +2 -2
- package/dist/discovery/trust-report.md +1 -1
- package/dist/discovery/workspaces.json +2 -2
- package/dist/hooks/dispatch.js +602 -507
- package/dist/install/install.mjs +23 -0
- package/dist/mcp/awesome-mcp-servers.row.md +1 -1
- package/dist/mcp/mcp-cloudflare-catalogue.json +2 -2
- package/dist/mcp/registry-manifest.json +4 -4
- package/dist/mcp/server.json +2 -2
- package/dist/mcp/server.mjs +25 -3
- package/dist/scripts/_lib/agent_src.js +39 -6
- package/dist/scripts/_lib/agent_src.js.map +1 -1
- package/dist/server/routes/workspace.js +1 -1
- package/dist/server/routes/workspace.js.map +1 -1
- package/dist/server/schemas/settings.js +13 -0
- package/dist/server/schemas/settings.js.map +1 -1
- package/dist/shared/userMd/utils.js +1 -1
- package/dist/shared/userMd/utils.js.map +1 -1
- package/dist/ui/assets/index-DmR0mbk4.js +26 -0
- package/dist/ui/assets/index-DmR0mbk4.js.map +1 -0
- package/dist/ui/index.html +1 -1
- package/docs/guidelines/abstraction-thresholds.md +53 -0
- package/docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md +1 -1
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +7 -0
- package/docs/guidelines/agent-infra/context-hygiene-mechanics.md +2 -2
- package/docs/guidelines/agent-infra/minimal-safe-diff-mechanics.md +5 -3
- package/docs/guidelines/agent-infra/size-and-scope.md +8 -2
- package/docs/guidelines/component-oriented-and-oop-development.md +11 -6
- package/docs/guidelines/docs/readme-size-and-splitting.md +5 -2
- package/llms.txt +1 -0
- package/package.json +4 -4
- package/src/config/agent-settings.template.yml +25 -1
- package/src/config/budget-routing.json +7 -0
- package/src/config/evaluator-budgets.json +8 -11
- package/src/config/gate-coverage.yml +30 -0
- package/src/scripts/_cli/cmd_handoff.ts +405 -0
- package/src/scripts/_cli/handoff_generate.ts +453 -0
- package/src/scripts/_cli/handoff_sessions.ts +435 -0
- package/src/scripts/_dispatch.bash +9 -0
- package/src/scripts/_lib/agent_src.ts +36 -6
- package/src/scripts/_lib/release_material.ts +156 -0
- package/src/scripts/_lib/tier_budget_routing.ts +154 -28
- package/src/scripts/anchor_scoring_run.ts +1 -1
- package/src/scripts/bench_persona_placebo.ts +1 -1
- package/src/scripts/bench_quality_run.ts +1 -1
- package/src/scripts/check_cli_registry_budget_sync.ts +168 -0
- package/src/scripts/check_condensation.ts +2 -1
- package/src/scripts/check_finding_dispositions.ts +278 -0
- package/src/scripts/check_gate_coverage.ts +1 -1
- package/src/scripts/check_pack_size.ts +4 -3
- package/src/scripts/check_references.ts +1 -0
- package/src/scripts/check_release_highlights.ts +300 -0
- package/src/scripts/check_release_pr_shape.ts +4 -0
- package/src/scripts/check_release_surface_equality.ts +132 -0
- package/src/scripts/check_reply_consistency.ts +187 -138
- package/src/scripts/check_token_quality_golden.ts +1 -1
- package/src/scripts/cost/budget.mjs +18 -4
- package/src/scripts/handoff_context_hook.ts +148 -0
- package/src/scripts/hook_manifest.yaml +17 -7
- package/src/scripts/hooks/concern_registry.ts +2 -0
- package/src/scripts/lint_abstraction_thresholds.ts +325 -0
- package/src/scripts/lint_framework_leakage_allowlist.json +2 -2
- package/src/scripts/lint_profile_personas.ts +153 -0
- package/src/scripts/lint_token_budget_discipline.ts +148 -0
- package/src/scripts/release.ts +264 -37
- package/src/scripts/release_drill.ts +491 -0
- package/src/scripts/routing_doctor.ts +76 -1
- package/src/scripts/schemas/command.schema.json +33 -0
- package/src/scripts/self_review_gate.ts +41 -3
- package/src/scripts/skill_linter.ts +3 -1
- package/src/scripts/smoke/router.sh +1 -1
- package/src/scripts/update_counts.ts +60 -12
- package/src/server/schemas/settings.ts +23 -0
- package/src/shared/userMd/utils.ts +1 -1
- package/dist/ui/assets/index-DJY_vQVn.js +0 -40
- package/dist/ui/assets/index-DJY_vQVn.js.map +0 -1
- package/dist/cli-delegate/{chunk-XX6TOPD7.js → chunk-WR6GTRHJ.js} +3 -3
package/dist/ui/index.html
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
document.documentElement.setAttribute('data-theme', theme);
|
|
28
28
|
})();
|
|
29
29
|
</script>
|
|
30
|
-
<script type="module" crossorigin src="/assets/index-
|
|
30
|
+
<script type="module" crossorigin src="/assets/index-DmR0mbk4.js"></script>
|
|
31
31
|
<link rel="stylesheet" crossorigin href="/assets/index-jSfMW8_t.css">
|
|
32
32
|
</head>
|
|
33
33
|
<body>
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Abstraction Thresholds — the per-class canon
|
|
2
|
+
|
|
3
|
+
> The single source of truth for "how many repetitions before you extract". Every
|
|
4
|
+
> other artifact that states a numeric extraction threshold cites this table and
|
|
5
|
+
> names its artifact class — a bare number outside this file is drift
|
|
6
|
+
> (enforced by `src/scripts/lint_abstraction_thresholds.ts`).
|
|
7
|
+
|
|
8
|
+
_Origin: council convergence 2026-08-03 (claude-sonnet-4-5 + gpt-4o, unanimous), recorded in ADR-213. Before this file, four artifacts stated four bare numbers (2 / 3+ / ≥4 / ≥3) with no scope tags — an agent loading them together received contradictory instructions._
|
|
9
|
+
|
|
10
|
+
## Why the bars differ — cost scales with the artifact class
|
|
11
|
+
|
|
12
|
+
Extracting a pure helper function is a near-zero-cost act; extracting a stateful
|
|
13
|
+
UI component creates a file, a props contract, and a test surface. The threshold
|
|
14
|
+
is a price signal: the heavier the extraction, the more proven repetition it
|
|
15
|
+
must buy. These are **deliberately different bars for different acts**, not
|
|
16
|
+
editorial drift.
|
|
17
|
+
|
|
18
|
+
## The canon
|
|
19
|
+
|
|
20
|
+
| Artifact class | Concrete tag (what to check) | Threshold |
|
|
21
|
+
|---|---|---|
|
|
22
|
+
| **Code-level abstraction** — helper, method, class, Strategy, generic, config layer | any non-UI code shape | **2 real repetitions** (or a genuine second axis of change) |
|
|
23
|
+
| **Pure-markup UI shell** — props-only fragment, no state (button shell, card frame, header) | renders props, holds no state | **3+ uses** |
|
|
24
|
+
| **Stateful UI component** — carries real props/state (form, table, filter) | repeats **AND** has varying props / local state | **~4+ repeats AND real state** (both conditions) |
|
|
25
|
+
| **Utility-class string** (Tailwind et al.) — repeated class list | identical class string | **≥ 3 duplications** (mechanism table: [`tailwind-engineer`](../../src/skills/tailwind-engineer/SKILL.md)) |
|
|
26
|
+
|
|
27
|
+
The code-level bar of **two** is this suite's settled base decision (the
|
|
28
|
+
borrowed "Rule of Three" for code was evaluated and not adopted — see
|
|
29
|
+
[`minimal-safe-diff-mechanics`](agent-infra/minimal-safe-diff-mechanics.md)).
|
|
30
|
+
The UI rows are scoped carve-outs **above** that base bar, never a license to
|
|
31
|
+
lower it.
|
|
32
|
+
|
|
33
|
+
## The qualitative floor — applies to every row
|
|
34
|
+
|
|
35
|
+
A number alone never justifies an extraction. In every class, a reviewer must
|
|
36
|
+
be able to name the **concrete duplication or the concrete second axis of
|
|
37
|
+
change** the abstraction removes. One occurrence is not a component; one branch
|
|
38
|
+
is not a Strategy; a repeat with no varying props is inlined, not extracted.
|
|
39
|
+
|
|
40
|
+
## Precedence
|
|
41
|
+
|
|
42
|
+
[`minimal-safe-diff`](../../src/rules/minimal-safe-diff.md) / YAGNI win on every
|
|
43
|
+
conflict: these thresholds authorize extraction when repetition is **already
|
|
44
|
+
present in the diff** — never speculative abstraction for "this could grow
|
|
45
|
+
later". See [`component-oriented-and-oop-development`](component-oriented-and-oop-development.md)
|
|
46
|
+
§ The load-bearing caveat.
|
|
47
|
+
|
|
48
|
+
## See also
|
|
49
|
+
|
|
50
|
+
- [`architecture`](../../src/rules/architecture.md) — the rule that carries the code-level bar.
|
|
51
|
+
- [`fe-design`](../../src/skills/fe-design/SKILL.md) § Component granularity — the UI-shell bar in context.
|
|
52
|
+
- [`ui-component-architect`](../../src/skills/ui-component-architect/SKILL.md) § Componentization threshold — the stateful-component bar in context.
|
|
53
|
+
- ADR-213 — the decision record scoping the bars.
|
|
@@ -135,7 +135,7 @@ source's remote lookup is dropped — a lethal-trifecta egress concern).
|
|
|
135
135
|
- Is the scope bounded? (not "make it better" but "add X to Y")
|
|
136
136
|
- Are edge cases considered?
|
|
137
137
|
|
|
138
|
-
**If unclear** → ask ONE focused question
|
|
138
|
+
**If unclear** → ask ONE focused question per turn (`ask-when-uncertain` Iron Law — serial, never batched), never an interrogation.
|
|
139
139
|
|
|
140
140
|
### 8b. Does it fit the existing architecture?
|
|
141
141
|
|
|
@@ -120,6 +120,13 @@ is a fabricated fact wearing a number:
|
|
|
120
120
|
|
|
121
121
|
A step list is honest ("A → B → C, C depends on B"); a schedule is invention.
|
|
122
122
|
|
|
123
|
+
**Carve-out — world-knowledge ranges.** An industry-typical duration sourced
|
|
124
|
+
from public benchmarks in strategy-advisory output ("integrations of this
|
|
125
|
+
class typically run 4–8 weeks") is a statement about the world, not a
|
|
126
|
+
prediction of the agent's or the user's own latency — allowed, but it MUST
|
|
127
|
+
carry an "industry-typical, not a prediction" qualifier. Unqualified, it
|
|
128
|
+
reads as the banned schedule.
|
|
129
|
+
|
|
123
130
|
### Never cite the rule as the reason
|
|
124
131
|
|
|
125
132
|
When declining or constraining an action, give the **actual, substantive
|
|
@@ -68,8 +68,8 @@ If you need an ignored skill: read its SKILL.md directly, apply guidance, then a
|
|
|
68
68
|
|
|
69
69
|
GitHub Copilot has no `PostToolUse` hook surface, so
|
|
70
70
|
`scripts/context_hygiene_hook.ts` cannot run structurally and
|
|
71
|
-
`agents/
|
|
72
|
-
(
|
|
71
|
+
`agents/state/context-hygiene.json` is not maintained automatically
|
|
72
|
+
(tool-call count, loop signal, freshness milestones at 20/40/60).
|
|
73
73
|
|
|
74
74
|
The cooperative path: track turns and tool-loop signals from memory
|
|
75
75
|
during the conversation and apply the suggest-a-new-chat / 3-failure
|
|
@@ -27,12 +27,14 @@ The smallest change is also the least *abstract* and least *speculative* one:
|
|
|
27
27
|
/ generic / config layer to dedupe two or three call sites — inline
|
|
28
28
|
repetition is cheaper to read and change than the wrong abstraction. Per new
|
|
29
29
|
abstraction: **cite the second caller — or inline it.** The operative
|
|
30
|
-
threshold in this suite is the **second real repetition** (or a
|
|
31
|
-
axis of change), matching `architecture` and
|
|
30
|
+
**code-level** threshold in this suite is the **second real repetition** (or a
|
|
31
|
+
genuine second axis of change), matching `architecture` and
|
|
32
32
|
[`component-oriented-and-oop-development`](../component-oriented-and-oop-development.md);
|
|
33
33
|
the "three lines" phrasing is about *line* count inside one call site, not a
|
|
34
34
|
third-occurrence gate. A borrowed "wait for the third occurrence" rule is
|
|
35
|
-
**not** adopted — it would fork a threshold this repo already
|
|
35
|
+
**not** adopted for code — it would fork a threshold this repo already
|
|
36
|
+
decided. UI extractions carry deliberately higher, scoped bars (ADR-213) —
|
|
37
|
+
the per-class canon is [`abstraction-thresholds`](../abstraction-thresholds.md).
|
|
36
38
|
- **No speculative features.** Nothing beyond what was asked: no
|
|
37
39
|
configurability or "flexibility" nobody requested, no parameters with one
|
|
38
40
|
call site, no error handling for scenarios that cannot occur in this
|
|
@@ -81,8 +81,11 @@ Commands orchestrate — not implement.
|
|
|
81
81
|
|
|
82
82
|
## AGENTS.md
|
|
83
83
|
|
|
84
|
-
-
|
|
85
|
-
|
|
84
|
+
- Enforced budget: **character caps** via `lint_agents_md.ts` — package
|
|
85
|
+
root fails at **3,000 chars** (warns 2,800); consumer template fails at
|
|
86
|
+
**2,500 chars** (warns 2,300).
|
|
87
|
+
- Word guidance: aim for **≤ ~450 words** — that is roughly what fits
|
|
88
|
+
under the 3,000-char cap.
|
|
86
89
|
|
|
87
90
|
High-level only.
|
|
88
91
|
|
|
@@ -92,6 +95,9 @@ High-level only.
|
|
|
92
95
|
|
|
93
96
|
- Ideal: **< 60 lines**
|
|
94
97
|
- Acceptable: **< 100–150 lines**
|
|
98
|
+
- Note: Copilot Code Review reads only the **first 4,000 characters**
|
|
99
|
+
(see `src/agent-src/templates/copilot-instructions.md`), so the
|
|
100
|
+
effective cap is character-based — highest-priority rules go up top.
|
|
95
101
|
|
|
96
102
|
Must stay lightweight.
|
|
97
103
|
|
|
@@ -48,9 +48,13 @@ package's restraint posture and defers to it on every conflict:
|
|
|
48
48
|
pattern for a five-line function, no class where a function is clearer.
|
|
49
49
|
|
|
50
50
|
Rule of thumb: **two real repetitions (or a genuine second axis of change)
|
|
51
|
-
before you extract.** One occurrence is not a
|
|
52
|
-
Strategy. A reviewer should be able to name the
|
|
53
|
-
concrete change-axis the abstraction removes.
|
|
51
|
+
before you extract a code-level abstraction.** One occurrence is not a
|
|
52
|
+
component; one branch is not a Strategy. A reviewer should be able to name the
|
|
53
|
+
concrete duplication or the concrete change-axis the abstraction removes.
|
|
54
|
+
UI extractions carry deliberately higher, scoped bars (shell 3+ · stateful
|
|
55
|
+
component ~4 + real state) — the per-class canon is
|
|
56
|
+
[`abstraction-thresholds`](abstraction-thresholds.md); this file does not
|
|
57
|
+
restate it.
|
|
54
58
|
|
|
55
59
|
**Precedence (explicit): `minimal-safe-diff` / YAGNI always trump OOP
|
|
56
60
|
advocacy.** When "prefer OO shape" and "smallest change" conflict, the smallest
|
|
@@ -67,11 +71,12 @@ when they repeat. Depth and mechanics already live in dedicated skills — consu
|
|
|
67
71
|
them, don't duplicate:
|
|
68
72
|
|
|
69
73
|
- [`fe-design`](../../src/skills/fe-design/SKILL.md) § Component Architecture —
|
|
70
|
-
the stack-agnostic "kind, not framework" taxonomy, granularity,
|
|
74
|
+
the stack-agnostic "kind, not framework" taxonomy, granularity, and the
|
|
75
|
+
UI-shell bar (per [`abstraction-thresholds`](abstraction-thresholds.md)).
|
|
71
76
|
- [`ui-component-architect`](../../src/skills/ui-component-architect/SKILL.md) —
|
|
72
77
|
how to *shape* a reusable component: composition over inheritance, slot
|
|
73
|
-
contracts, prop-API caps, controlled/uncontrolled, the
|
|
74
|
-
|
|
78
|
+
contracts, prop-API caps, controlled/uncontrolled, the stateful-component
|
|
79
|
+
bar (repeat **and** real state, per the same canon).
|
|
75
80
|
- [`existing-ui-audit`](../../src/skills/existing-ui-audit/SKILL.md) — the
|
|
76
81
|
reuse-before-invent gate: inventory existing components/tokens/primitives
|
|
77
82
|
first (enforced by [`ui-audit-gate`](../../src/rules/ui-audit-gate.md)).
|
|
@@ -18,7 +18,10 @@ and `readme-reviewer` skills.
|
|
|
18
18
|
| **< 150** | Healthy | No splitting needed |
|
|
19
19
|
| **150–300** | Busy | Add a Table of Contents; review for padding |
|
|
20
20
|
| **300–500** | Overloaded | Split deep content to `/docs/` or `references/` |
|
|
21
|
-
| **> 500** | Broken |
|
|
21
|
+
| **> 500** | Broken | Split strongly recommended; README has stopped being an entry point |
|
|
22
|
+
|
|
23
|
+
These bands are editorial; the **enforced** limit is **750 lines** —
|
|
24
|
+
`lint_readme_size.ts` fails the build above it.
|
|
22
25
|
|
|
23
26
|
Lines, not bytes — tables, code blocks, and badges inflate bytes but stay
|
|
24
27
|
scannable. The real signal is: **can a new reader reach install/usage
|
|
@@ -61,7 +64,7 @@ docs/
|
|
|
61
64
|
api.md ← full API reference
|
|
62
65
|
```
|
|
63
66
|
|
|
64
|
-
README
|
|
67
|
+
After a split, aim for a README < 200 lines. Each `/docs/` file is a self-contained chapter.
|
|
65
68
|
|
|
66
69
|
### Strategy 2 — Deep-link tables for multi-platform repos
|
|
67
70
|
|
package/llms.txt
CHANGED
|
@@ -180,6 +180,7 @@ onboarding-program: Use when shaping employee onboarding — time-to-productivit
|
|
|
180
180
|
one-on-one-cadence: Use when designing engineering 1:1s — cadence, agenda mix, growth-vs-blocker-vs-trust shape, cancellation anti-patterns. Triggers on 'fix my 1:1s', 'should I cancel 1:1s this week'.
|
|
181
181
|
openapi: Use when documenting APIs — OpenAPI/Swagger, PHP attributes, Redocly validation, versioned specs — even when the user just says 'document this endpoint' without naming OpenAPI.
|
|
182
182
|
org-design: Use when shaping team structure — functional vs squad, span-of-control, reorg cost, Conway-aware boundaries. Triggers on 'should we reorg', 'how do we split this team'.
|
|
183
|
+
overbuild-review-lens: Use when a diff builds more than the task needs — code that should not exist, a dependency the platform already covers, or a clever form where a flat one reads better. Deletion-hunting, not quality.
|
|
183
184
|
override-management: Creates and manages project-level overrides for shared skills, rules, and commands — extending or replacing originals from .augment/ with project-specific behavior in agents/overrides/.
|
|
184
185
|
pdf-tools: Use when creating, merging, splitting, filling, or extracting from a PDF — library-per-task, output validated. Triggers on 'merge these PDFs', 'fill this PDF form', 'split the PDF', 'create a PDF'.
|
|
185
186
|
perf-feedback-craft: Use when shaping feedback — situation-behavior-impact, growth-vs-corrective split, cadence design, ladder-of-inference checks. Triggers on 'how do I give this feedback', 'perf review shape'.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@event4u/agent-config",
|
|
3
3
|
"mcpName": "io.github.event4u-app/agent-config",
|
|
4
|
-
"version": "9.
|
|
4
|
+
"version": "9.17.0",
|
|
5
5
|
"description": "Governed skills, rules and commands for AI coding tools (Claude Code, Cursor, Windsurf, Copilot) — every claim machine-checked, including \"zero runtime daemon\".",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"private": false,
|
|
@@ -110,11 +110,11 @@
|
|
|
110
110
|
"@fastify/static": "^10.1.2",
|
|
111
111
|
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
112
112
|
"@preact/signals": "^2.10.0",
|
|
113
|
-
"commander": "^
|
|
113
|
+
"commander": "^15.0.0",
|
|
114
114
|
"execa": "^9.5.0",
|
|
115
115
|
"fastify": "^5.11.0",
|
|
116
|
-
"js-yaml": "^
|
|
117
|
-
"open": "^
|
|
116
|
+
"js-yaml": "^5.2.0",
|
|
117
|
+
"open": "^11.0.0",
|
|
118
118
|
"preact": "^10.29.0",
|
|
119
119
|
"yaml": "^2.9.0",
|
|
120
120
|
"zod": "^3.25.0",
|
|
@@ -321,6 +321,28 @@ personal:
|
|
|
321
321
|
# See user-types/README.md for the per-id contract.
|
|
322
322
|
user_type: "__USER_TYPE__"
|
|
323
323
|
|
|
324
|
+
# --- Reply verbosity ---
|
|
325
|
+
verbosity:
|
|
326
|
+
# Announce intent before tool batches ("Let me check X…") — only honored
|
|
327
|
+
# when personal.play_by_play is ALSO true (the direct-answers narration
|
|
328
|
+
# carve-out requires both). Default false = no intent narration.
|
|
329
|
+
intent_announcements: false
|
|
330
|
+
|
|
331
|
+
# Show generated commit messages, PR titles/bodies, branch names before
|
|
332
|
+
# acting. false = use generated content directly (/commit terse path).
|
|
333
|
+
preview_artifacts: false
|
|
334
|
+
|
|
335
|
+
# Confirmation prompts for routine workflow steps with one obvious answer.
|
|
336
|
+
# Iron-Law gates (commit-policy, scope-control git-ops, Hard Floor) ALWAYS
|
|
337
|
+
# ask regardless of this setting.
|
|
338
|
+
routine_confirmations: false
|
|
339
|
+
|
|
340
|
+
# Offer "run AI Council on this?" inside delivery commands.
|
|
341
|
+
offer_council_in_delivery: false
|
|
342
|
+
|
|
343
|
+
# Status blocks after a successful action: off | minimal | full.
|
|
344
|
+
post_action_reports: minimal
|
|
345
|
+
|
|
324
346
|
# --- Project / team preferences ---
|
|
325
347
|
project:
|
|
326
348
|
# Path to the PR template file (relative to project root)
|
|
@@ -724,7 +746,9 @@ subagents:
|
|
|
724
746
|
# the resource-availability gate (council 2026-08-03).
|
|
725
747
|
# ask = (default) first budget-motivated downshift of a session asks once
|
|
726
748
|
# auto = apply the relation silently (telemetry line per routed request)
|
|
727
|
-
# off = today's behavior; single-flip rollback
|
|
749
|
+
# off = today's behavior; single-flip rollback — QUOTE it ("off") when
|
|
750
|
+
# editing: bare off is YAML-1.1 boolean false (readers coerce, but
|
|
751
|
+
# the quoted form is the unambiguous one, same as `auto: "on"`)
|
|
728
752
|
budget_routing: ask
|
|
729
753
|
|
|
730
754
|
# Prefer a separate-quota-pool model for delegable sub-tasks WHERE the host
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$comment": "Single source of truth for the budget-routing reserve lifecycle (docs/contracts/budget-routing.md). Read by BOTH reserve readers — src/scripts/_lib/tier_budget_routing.ts (acquireBudgetPermit) and src/scripts/cost/budget.mjs (tier subcommand) — so the reserve window can never diverge between them. reserve_ttl_ms: reserves are RACE PROTECTION, not spend accounting — a pending entry older than this is dead and is dropped at the next compaction. lock_break_ms: an .lock file older than this is a crash leftover and is broken (unlink + one retry).",
|
|
3
|
+
"owner": "maintainer",
|
|
4
|
+
"review_by": "2027-08-03",
|
|
5
|
+
"reserve_ttl_ms": 600000,
|
|
6
|
+
"lock_break_ms": 30000
|
|
7
|
+
}
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
"on_release": "fail",
|
|
9
9
|
"on_main_and_prs": "warn",
|
|
10
10
|
"on_local": "fail",
|
|
11
|
-
"always_blocking": [
|
|
11
|
+
"always_blocking": [
|
|
12
|
+
"a metric with no measurement supplied"
|
|
13
|
+
],
|
|
12
14
|
"rationale": "road-to-gates-that-can-fail Phase 5. A hard fail on main turns every legitimate command addition into a blocked merge, which is how budgets get quietly raised with a cushion instead of consciously — so budget / regression / drift findings are ADVISORY on main, the nightly and ordinary PRs, and BLOCKING on a release ref. Not a weakening: before the Phase-4 path triggers, this gate ran on release PRs and the nightly only, so the surfaces that now warn never saw it at all. A LOCAL run (no CI env) is strict, because a maintainer running it by hand — including release.ts — wants the strict answer and blocks nobody. A metric with NO measurement is always blocking in either posture: that is a broken harness reporting green on nothing. Implemented in src/scripts/check_evaluator_budgets.ts::detectPosture; override with --posture warn|fail.",
|
|
13
15
|
"delivery": "This posture IS the nightly-visibility route (council 2026-08-02, blocker nightly-visibility-owner), not a second mechanism beside it: the nightly publishes measurement_record below, a later run re-measures and compares, and the contradiction warns on main / fails on release. No notification channel, no auto-managed issue — a one-maintainer channel producing routine noise gets muted, and a muted channel reproduces the original failure."
|
|
14
16
|
},
|
|
@@ -25,13 +27,8 @@
|
|
|
25
27
|
},
|
|
26
28
|
"not_re_measured": "unpacked_size_mb, node_modules_mb, runtime_dep_count, cli_version_cold_ms, mcp_boot_to_initialize_ms. All five require the packed-tarball harness (npm pack of a fully built tree, then a clean `npm install --omit=dev <tarball>` into a scratch project) that evaluator_umbrella.sh runs in CI. They were NOT re-measured in this pass and their values remain the 2026-07-27 acceptance numbers — stated rather than invented. The next nightly writes the real numbers into measurement_record, and the drift check then reports any contradiction with last_measured on the PR that carries it."
|
|
27
29
|
},
|
|
30
|
+
"removed_2026_08_04": "unpacked_size_mb (max 28) — removed by maintainer decision at the 9.17.0 release: the gate turned every legitimate payload addition into a blocked release (measured 28.22 vs max 28 with all functional gates green), and the maintainer judged tarball size not worth gating. evaluator_umbrella.sh still MEASURES and records unpacked_size_mb as evidence; only the budget enforcement is gone. ADR-204 review_trigger (a) fired and was resolved this way.",
|
|
28
31
|
"budgets": {
|
|
29
|
-
"unpacked_size_mb": {
|
|
30
|
-
"max": 28,
|
|
31
|
-
"last_measured": 26.05,
|
|
32
|
-
"last_measured_at": "2026-07-27",
|
|
33
|
-
"method": "npm pack --json → dist.unpackedSize / 1e6 — includes the Phase-1 precompiled bundles (dist/hooks/dispatch.js + dist/mcp/server.mjs, ~2.1 MB) that bought the 23x hook-latency win and the tsx removal, plus dist/cli-delegate/ (~1.40 MB, ADR-204) which finished that removal for the consumer command surface. This gate is the ONLY size trip-wire on those bundles by design: a dedicated per-bundle budget key would need its own measurement wired into evaluator_umbrella.sh, and an unwired key fails check_evaluator_budgets with 'no measurement supplied' instead of guarding anything. ADR-204 projected 27.45 against max 28 without packing — the next real measurement here is the confirming one, and headroom is thin"
|
|
34
|
-
},
|
|
35
32
|
"node_modules_mb": {
|
|
36
33
|
"max": 140,
|
|
37
34
|
"last_measured": 127,
|
|
@@ -61,11 +58,11 @@
|
|
|
61
58
|
"deterministic": false
|
|
62
59
|
},
|
|
63
60
|
"cli_help_command_count": {
|
|
64
|
-
"max":
|
|
65
|
-
"last_measured":
|
|
66
|
-
"last_measured_at": "2026-08-
|
|
61
|
+
"max": 82,
|
|
62
|
+
"last_measured": 82,
|
|
63
|
+
"last_measured_at": "2026-08-04",
|
|
67
64
|
"method": "registry enumeration — count of `{ name: '...', disposition` entries in src/cli/registry.ts (NOT --help prose parsing; methods historically disagreed 74 vs 76 vs 79)",
|
|
68
|
-
"baseline_note": "80 → 81 on 2026-08-03 (release 9.15.0 gate). This RECORDS growth that already shipped through its own reviewed PR; it does not authorize new surface. The +1 is f02db54c2 (fix(cli): register routing:doctor in the CLI registry) — the command existed, only its registry entry was missing, and the registering PR did not move this budget. The gate did its job again: breach WARNS on main and BLOCKS on release, which is the conscious-decision point rather than a silently raised cap. Re-measured 2026-08-03 via the pinned method: 81. Headroom stays zero by design — the next registry addition must move this number in its own PR."
|
|
65
|
+
"baseline_note": "80 → 81 on 2026-08-03 (release 9.15.0 gate). This RECORDS growth that already shipped through its own reviewed PR; it does not authorize new surface. The +1 is f02db54c2 (fix(cli): register routing:doctor in the CLI registry) — the command existed, only its registry entry was missing, and the registering PR did not move this budget. The gate did its job again: breach WARNS on main and BLOCKS on release, which is the conscious-decision point rather than a silently raised cap. Re-measured 2026-08-03 via the pinned method: 81. Headroom stays zero by design — the next registry addition must move this number in its own PR. 81 → 82 on 2026-08-04: the `handoff` subcommand (road-to-agent-handoff-resume Phase 4) registers in the same PR that adds the surface, per this record's own contract. Re-measured via the pinned method: 82."
|
|
69
66
|
},
|
|
70
67
|
"mcp_public_tool_count": {
|
|
71
68
|
"max": 19,
|
|
@@ -260,6 +260,36 @@ gates:
|
|
|
260
260
|
failure direction was false-positive rather than false-green, but the
|
|
261
261
|
cause was the same dead root.
|
|
262
262
|
|
|
263
|
+
- id: lint_abstraction_thresholds
|
|
264
|
+
argv: []
|
|
265
|
+
min_scanned: 400
|
|
266
|
+
corpus: "src/rules + src/skills + src/agent-src/commands + docs/guidelines .md (533 at baseline)"
|
|
267
|
+
status: enforced
|
|
268
|
+
note: >
|
|
269
|
+
A collapse below the floor would mean the gate stopped reading the tree
|
|
270
|
+
that states extraction thresholds, so a bare or diverging threshold
|
|
271
|
+
(ADR-213 drift) could land while the gate still printed green.
|
|
272
|
+
|
|
273
|
+
- id: lint_profile_personas
|
|
274
|
+
argv: []
|
|
275
|
+
min_scanned: 5
|
|
276
|
+
corpus: "src/agent-src/profiles/*.yml (6 seed profiles at baseline)"
|
|
277
|
+
status: enforced
|
|
278
|
+
note: >
|
|
279
|
+
Fewer than 5 profiles scanned would mean the gate stopped reading the
|
|
280
|
+
seed-profile dir, so a defaults.personas id that resolves to no persona
|
|
281
|
+
file could land while the gate still printed green.
|
|
282
|
+
|
|
283
|
+
- id: lint_token_budget_discipline
|
|
284
|
+
argv: []
|
|
285
|
+
min_scanned: 200
|
|
286
|
+
corpus: "src/skills/*/SKILL.md (288 at baseline)"
|
|
287
|
+
status: enforced
|
|
288
|
+
note: >
|
|
289
|
+
A collapse below the floor would mean the gate stopped reading the skills
|
|
290
|
+
tree, so a rich-tagged skill without its justification section (or a cap
|
|
291
|
+
breach) could land while the gate still printed green.
|
|
292
|
+
|
|
263
293
|
- id: lint_framework_leakage
|
|
264
294
|
argv: []
|
|
265
295
|
min_scanned: 350
|