@event4u/agent-config 2.8.0 → 2.10.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/personas/engineering-manager.md +133 -0
- package/.agent-src/personas/finance-partner.md +129 -0
- package/.agent-src/personas/people-strategist.md +126 -0
- package/.agent-src/personas/strategist.md +129 -0
- package/.agent-src/rules/no-roadmap-references.md +19 -0
- package/.agent-src/skills/build-buy-partner/SKILL.md +145 -0
- package/.agent-src/skills/comp-banding/SKILL.md +160 -0
- package/.agent-src/skills/competitive-moat-analysis/SKILL.md +152 -0
- package/.agent-src/skills/contracts-cognition/SKILL.md +147 -0
- package/.agent-src/skills/data-handling-judgment/SKILL.md +155 -0
- package/.agent-src/skills/forecasting/SKILL.md +164 -0
- package/.agent-src/skills/hiring-loop-design/SKILL.md +167 -0
- package/.agent-src/skills/market-entry-analysis/SKILL.md +144 -0
- package/.agent-src/skills/onboarding-program/SKILL.md +157 -0
- package/.agent-src/skills/one-on-one-cadence/SKILL.md +161 -0
- package/.agent-src/skills/org-design/SKILL.md +158 -0
- package/.agent-src/skills/perf-feedback-craft/SKILL.md +157 -0
- package/.agent-src/skills/privacy-review/SKILL.md +160 -0
- package/.agent-src/skills/runway-cognition/SKILL.md +136 -0
- package/.agent-src/skills/scenario-modeling/SKILL.md +139 -0
- package/.agent-src/skills/throughput-vs-morale-tradeoff/SKILL.md +165 -0
- package/.agent-src/skills/unit-economics-modeling/SKILL.md +54 -7
- package/.agent-src/skills/vision-articulation/SKILL.md +146 -0
- package/.agent-src/templates/agents/agent-project-settings.example.yml +1 -1
- package/.agent-src/templates/scripts/telemetry/settings.py +65 -0
- package/.agent-src/templates/scripts/tier_usage_report.py +183 -0
- package/.agent-src/templates/scripts/work_engine/hooks/builtin/memory_visibility.py +32 -3
- package/.agent-src/templates/scripts/work_engine/scoring/memory_visibility.py +147 -1
- package/.claude-plugin/marketplace.json +18 -1
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +134 -0
- package/README.md +34 -14
- package/config/agent-settings.template.yml +28 -0
- package/docs/architecture.md +37 -11
- package/docs/catalog.md +22 -4
- package/docs/contracts/adr-forecast-construction-shape.md +89 -0
- package/docs/contracts/adr-wing4-context-spine.md +125 -0
- package/docs/contracts/command-clusters.md +41 -0
- package/docs/contracts/command-surface-tiers.md +25 -9
- package/docs/contracts/context-spine.md +8 -0
- package/docs/contracts/decision-trace-v1.md +30 -0
- package/docs/contracts/hook-architecture-v1.md +46 -0
- package/docs/contracts/mcp-beta-criteria.md +129 -0
- package/docs/contracts/memory-visibility-v1.md +33 -0
- package/docs/contracts/settings-sync-yaml-subset.md +138 -0
- package/docs/guidelines/wing4-handoff.md +127 -0
- package/docs/mcp-server.md +1 -1
- package/docs/readme-split-plan.md +102 -0
- package/package.json +1 -1
- package/scripts/_cli/cmd_doctor.py +527 -14
- package/scripts/_cli/cmd_settings_check.py +171 -0
- package/scripts/_cli/cmd_validate.py +10 -0
- package/scripts/agent-config +59 -18
- package/scripts/chat_history.py +19 -0
- package/scripts/check_council_references.py +46 -5
- package/scripts/hooks/dispatch_hook.py +5 -1
- package/scripts/hooks/replay_hook.py +144 -0
- package/scripts/hooks/state_io.py +24 -1
- package/scripts/hooks_doctor.py +184 -0
- package/scripts/install.py +5 -0
- package/scripts/lint_context_spine_usage.py +1 -0
- package/scripts/lint_hook_concern_budget.py +203 -0
- package/scripts/mcp_server/__init__.py +1 -0
- package/scripts/mcp_server/server.py +4 -3
- package/scripts/roadmap_progress_hook.py +11 -0
- package/scripts/schemas/skill.schema.json +2 -2
- package/scripts/skill_linter.py +107 -3
|
@@ -4,6 +4,12 @@ Implements the v1 line shape from
|
|
|
4
4
|
``docs/contracts/memory-visibility-v1.md``:
|
|
5
5
|
|
|
6
6
|
🧠 Memory: <hits>/<asks> · ids=[<comma-separated-ids>]
|
|
7
|
+
🧠 Memory: <hits>/<asks> · ids=[<...>] · affected: <keys>
|
|
8
|
+
|
|
9
|
+
The optional ``· affected: <keys>`` trailing segment surfaces which
|
|
10
|
+
closed-list decision-trace keys diverged because memory was
|
|
11
|
+
consulted — see ``docs/contracts/decision-trace-v1.md`` "Memory
|
|
12
|
+
consequence keys".
|
|
7
13
|
|
|
8
14
|
The semantics matched to the work-engine model:
|
|
9
15
|
|
|
@@ -23,6 +29,8 @@ from __future__ import annotations
|
|
|
23
29
|
|
|
24
30
|
from typing import Any, Iterable
|
|
25
31
|
|
|
32
|
+
from .decision_trace import derive_confidence_band, derive_risk_class
|
|
33
|
+
|
|
26
34
|
ICON = "\U0001F9E0" # 🧠
|
|
27
35
|
DEFAULT_MAX_INLINE_IDS = 5
|
|
28
36
|
DEFAULT_ASKED_TYPES = (
|
|
@@ -32,6 +40,13 @@ DEFAULT_ASKED_TYPES = (
|
|
|
32
40
|
"historical-patterns",
|
|
33
41
|
)
|
|
34
42
|
|
|
43
|
+
CONSEQUENCE_KEYS: tuple[str, ...] = (
|
|
44
|
+
"confidence_band",
|
|
45
|
+
"risk_class",
|
|
46
|
+
"applied_rules",
|
|
47
|
+
"test_plan",
|
|
48
|
+
)
|
|
49
|
+
|
|
35
50
|
|
|
36
51
|
def summarise_visibility(
|
|
37
52
|
memory: Any,
|
|
@@ -69,16 +84,111 @@ def summarise_visibility(
|
|
|
69
84
|
return {"asks": asks, "hits": hits, "ids": ids}
|
|
70
85
|
|
|
71
86
|
|
|
87
|
+
def _normalise_key_value(value: Any) -> Any:
|
|
88
|
+
"""Return a comparable shape for a consequence-key value.
|
|
89
|
+
|
|
90
|
+
List-shaped keys (``applied_rules``, ``test_plan``) compare as
|
|
91
|
+
sorted tuples so order is not a divergence; scalar keys
|
|
92
|
+
(``confidence_band``, ``risk_class``) compare as-is.
|
|
93
|
+
"""
|
|
94
|
+
if isinstance(value, list):
|
|
95
|
+
return tuple(sorted(str(item) for item in value))
|
|
96
|
+
return value
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def diff_consequence_keys(
|
|
100
|
+
trace_with: dict[str, Any], trace_without: dict[str, Any],
|
|
101
|
+
) -> list[str]:
|
|
102
|
+
"""Return sorted keys whose values diverge between two traces.
|
|
103
|
+
|
|
104
|
+
Iterates the closed ``CONSEQUENCE_KEYS`` list defined in
|
|
105
|
+
``docs/contracts/decision-trace-v1.md``. A key is considered
|
|
106
|
+
*diverged* when its normalised value differs between the two
|
|
107
|
+
traces. Per the contract, when both sides are ``None`` the key
|
|
108
|
+
is suppressed from the diff entirely.
|
|
109
|
+
"""
|
|
110
|
+
affected: list[str] = []
|
|
111
|
+
for key in CONSEQUENCE_KEYS:
|
|
112
|
+
a = trace_with.get(key)
|
|
113
|
+
b = trace_without.get(key)
|
|
114
|
+
if a is None and b is None:
|
|
115
|
+
continue
|
|
116
|
+
if _normalise_key_value(a) != _normalise_key_value(b):
|
|
117
|
+
affected.append(key)
|
|
118
|
+
return sorted(affected)
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
def compute_affected(
|
|
122
|
+
*,
|
|
123
|
+
memory_hits: int,
|
|
124
|
+
verify_claims: int = 0,
|
|
125
|
+
verify_first_try_passes: int = 0,
|
|
126
|
+
ambiguity_flag: bool = False,
|
|
127
|
+
changes: Any = None,
|
|
128
|
+
applied_rules: list[str] | None = None,
|
|
129
|
+
test_plan: list[str] | None = None,
|
|
130
|
+
) -> list[str] | None:
|
|
131
|
+
"""Compute the ``affected`` consequence keys for the visibility line.
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
* ``None`` when no memory was consulted (``memory_hits <= 0``)
|
|
135
|
+
— caller MUST omit the ``· affected: …`` segment.
|
|
136
|
+
* ``[]`` when memory was consulted but no closed-list key
|
|
137
|
+
diverged — caller MUST render ``· affected: none``.
|
|
138
|
+
* sorted list of keys otherwise.
|
|
139
|
+
|
|
140
|
+
The counterfactual trace is "what the heuristics would have
|
|
141
|
+
emitted if ``memory_hits`` had been ``0``". v1 covers
|
|
142
|
+
``confidence_band`` and ``risk_class`` via the existing scoring
|
|
143
|
+
helpers; ``applied_rules`` and ``test_plan`` pass through
|
|
144
|
+
unchanged because they are not yet memory-derived in the
|
|
145
|
+
engine — the keys stay in the closed list so the diff
|
|
146
|
+
infrastructure is in place when they wire in.
|
|
147
|
+
"""
|
|
148
|
+
if memory_hits <= 0:
|
|
149
|
+
return None
|
|
150
|
+
trace_with = {
|
|
151
|
+
"confidence_band": derive_confidence_band(
|
|
152
|
+
memory_hits=memory_hits,
|
|
153
|
+
verify_claims=verify_claims,
|
|
154
|
+
verify_first_try_passes=verify_first_try_passes,
|
|
155
|
+
ambiguity_flag=ambiguity_flag,
|
|
156
|
+
),
|
|
157
|
+
"risk_class": derive_risk_class(changes),
|
|
158
|
+
"applied_rules": list(applied_rules) if applied_rules else None,
|
|
159
|
+
"test_plan": list(test_plan) if test_plan else None,
|
|
160
|
+
}
|
|
161
|
+
trace_without = {
|
|
162
|
+
"confidence_band": derive_confidence_band(
|
|
163
|
+
memory_hits=0,
|
|
164
|
+
verify_claims=verify_claims,
|
|
165
|
+
verify_first_try_passes=verify_first_try_passes,
|
|
166
|
+
ambiguity_flag=ambiguity_flag,
|
|
167
|
+
),
|
|
168
|
+
"risk_class": derive_risk_class(changes),
|
|
169
|
+
"applied_rules": list(applied_rules) if applied_rules else None,
|
|
170
|
+
"test_plan": list(test_plan) if test_plan else None,
|
|
171
|
+
}
|
|
172
|
+
return diff_consequence_keys(trace_with, trace_without)
|
|
173
|
+
|
|
174
|
+
|
|
72
175
|
def format_line(
|
|
73
176
|
summary: dict[str, Any],
|
|
74
177
|
*,
|
|
75
178
|
max_inline_ids: int = DEFAULT_MAX_INLINE_IDS,
|
|
179
|
+
affected: list[str] | None = None,
|
|
76
180
|
) -> str | None:
|
|
77
181
|
"""Render the visibility line; return ``None`` when ``asks == 0``.
|
|
78
182
|
|
|
79
183
|
Cap inline ids at ``max_inline_ids`` and append ``…+N`` when the
|
|
80
184
|
list is longer. Returning ``None`` enforces the contract clause
|
|
81
185
|
"If ``asks == 0``, the engine MUST suppress the line entirely".
|
|
186
|
+
|
|
187
|
+
When ``affected`` is not ``None``, append the
|
|
188
|
+
``· affected: <keys>`` trailing segment from
|
|
189
|
+
``docs/contracts/memory-visibility-v1.md``: empty list renders as
|
|
190
|
+
``affected: none`` (consulted but no key diverged);
|
|
191
|
+
non-empty list renders the comma-separated keys.
|
|
82
192
|
"""
|
|
83
193
|
asks = int(summary.get("asks", 0) or 0)
|
|
84
194
|
if asks <= 0:
|
|
@@ -94,7 +204,39 @@ def format_line(
|
|
|
94
204
|
if overflow > 0:
|
|
95
205
|
suffix = ", " if rendered_ids else ""
|
|
96
206
|
rendered_ids = f"{rendered_ids}{suffix}\u2026+{overflow}"
|
|
97
|
-
|
|
207
|
+
line = f"{ICON} Memory: {hits}/{asks} \u00b7 ids=[{rendered_ids}]"
|
|
208
|
+
if affected is not None:
|
|
209
|
+
rendered_affected = ",".join(affected) if affected else "none"
|
|
210
|
+
line = f"{line} \u00b7 affected: {rendered_affected}"
|
|
211
|
+
return line
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def format_changed_decisions_block(
|
|
215
|
+
ids: Iterable[str], affected: Iterable[str] | None,
|
|
216
|
+
) -> str | None:
|
|
217
|
+
"""Render the end-of-run "Memory changed decisions" report block.
|
|
218
|
+
|
|
219
|
+
Per ``docs/contracts/memory-visibility-v1.md``: lists
|
|
220
|
+
``<id> → <key>`` rows derived from the same diff source as the
|
|
221
|
+
visibility line's ``affected`` segment. Returns ``None`` when
|
|
222
|
+
no key diverged (``affected`` empty / ``None``) so the caller
|
|
223
|
+
suppresses the block entirely.
|
|
224
|
+
|
|
225
|
+
Attribution in v1 is aggregate: each consulted id pairs with
|
|
226
|
+
each affected key. Per-id attribution is captured as a
|
|
227
|
+
follow-up risk in the roadmap Risk register.
|
|
228
|
+
"""
|
|
229
|
+
if not affected:
|
|
230
|
+
return None
|
|
231
|
+
affected_list = sorted(affected)
|
|
232
|
+
id_list = [str(i) for i in ids if isinstance(i, (str, int))]
|
|
233
|
+
if not id_list:
|
|
234
|
+
return None
|
|
235
|
+
lines = ["Memory changed decisions:"]
|
|
236
|
+
for entry_id in id_list:
|
|
237
|
+
for key in affected_list:
|
|
238
|
+
lines.append(f"- {entry_id} \u2192 {key}")
|
|
239
|
+
return "\n".join(lines)
|
|
98
240
|
|
|
99
241
|
|
|
100
242
|
def should_emit(
|
|
@@ -116,9 +258,13 @@ def should_emit(
|
|
|
116
258
|
|
|
117
259
|
|
|
118
260
|
__all__ = [
|
|
261
|
+
"CONSEQUENCE_KEYS",
|
|
119
262
|
"DEFAULT_ASKED_TYPES",
|
|
120
263
|
"DEFAULT_MAX_INLINE_IDS",
|
|
121
264
|
"ICON",
|
|
265
|
+
"compute_affected",
|
|
266
|
+
"diff_consequence_keys",
|
|
267
|
+
"format_changed_decisions_block",
|
|
122
268
|
"format_line",
|
|
123
269
|
"should_emit",
|
|
124
270
|
"summarise_visibility",
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
},
|
|
7
7
|
"metadata": {
|
|
8
8
|
"description": "Shared agent configuration \u2014 skills for AI coding tools (Claude Code, Augment, Cursor, Cline, Windsurf, Gemini CLI).",
|
|
9
|
-
"version": "2.
|
|
9
|
+
"version": "2.10.0",
|
|
10
10
|
"keywords": [
|
|
11
11
|
"agent-config",
|
|
12
12
|
"skills",
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"./.claude/skills/bug-analyzer",
|
|
71
71
|
"./.claude/skills/bug-fix",
|
|
72
72
|
"./.claude/skills/bug-investigate",
|
|
73
|
+
"./.claude/skills/build-buy-partner",
|
|
73
74
|
"./.claude/skills/challenge-me",
|
|
74
75
|
"./.claude/skills/challenge-me-vision",
|
|
75
76
|
"./.claude/skills/challenge-me-with-docs",
|
|
@@ -86,6 +87,8 @@
|
|
|
86
87
|
"./.claude/skills/command-writing",
|
|
87
88
|
"./.claude/skills/commit",
|
|
88
89
|
"./.claude/skills/commit-in-chunks",
|
|
90
|
+
"./.claude/skills/comp-banding",
|
|
91
|
+
"./.claude/skills/competitive-moat-analysis",
|
|
89
92
|
"./.claude/skills/competitive-positioning",
|
|
90
93
|
"./.claude/skills/composer-packages",
|
|
91
94
|
"./.claude/skills/compress",
|
|
@@ -95,6 +98,7 @@
|
|
|
95
98
|
"./.claude/skills/context-create",
|
|
96
99
|
"./.claude/skills/context-document",
|
|
97
100
|
"./.claude/skills/context-refactor",
|
|
101
|
+
"./.claude/skills/contracts-cognition",
|
|
98
102
|
"./.claude/skills/conventional-commits-writing",
|
|
99
103
|
"./.claude/skills/copilot-agents-optimization",
|
|
100
104
|
"./.claude/skills/copilot-config",
|
|
@@ -109,6 +113,7 @@
|
|
|
109
113
|
"./.claude/skills/customer-research",
|
|
110
114
|
"./.claude/skills/dashboard-design",
|
|
111
115
|
"./.claude/skills/data-flow-mapper",
|
|
116
|
+
"./.claude/skills/data-handling-judgment",
|
|
112
117
|
"./.claude/skills/database",
|
|
113
118
|
"./.claude/skills/dcf-modeling",
|
|
114
119
|
"./.claude/skills/deal-qualification-meddic",
|
|
@@ -151,6 +156,7 @@
|
|
|
151
156
|
"./.claude/skills/fix-seeder",
|
|
152
157
|
"./.claude/skills/flux",
|
|
153
158
|
"./.claude/skills/forecast-accuracy",
|
|
159
|
+
"./.claude/skills/forecasting",
|
|
154
160
|
"./.claude/skills/form-handler",
|
|
155
161
|
"./.claude/skills/fundraising-narrative",
|
|
156
162
|
"./.claude/skills/funnel-analysis",
|
|
@@ -160,6 +166,7 @@
|
|
|
160
166
|
"./.claude/skills/grill-me",
|
|
161
167
|
"./.claude/skills/gtm-launch",
|
|
162
168
|
"./.claude/skills/guideline-writing",
|
|
169
|
+
"./.claude/skills/hiring-loop-design",
|
|
163
170
|
"./.claude/skills/implement-ticket",
|
|
164
171
|
"./.claude/skills/incident-commander",
|
|
165
172
|
"./.claude/skills/jira-integration",
|
|
@@ -189,6 +196,7 @@
|
|
|
189
196
|
"./.claude/skills/livewire",
|
|
190
197
|
"./.claude/skills/livewire-architect",
|
|
191
198
|
"./.claude/skills/logging-monitoring",
|
|
199
|
+
"./.claude/skills/market-entry-analysis",
|
|
192
200
|
"./.claude/skills/markitdown",
|
|
193
201
|
"./.claude/skills/mcp",
|
|
194
202
|
"./.claude/skills/mcp-builder",
|
|
@@ -214,6 +222,8 @@
|
|
|
214
222
|
"./.claude/skills/okr-tree-modeling",
|
|
215
223
|
"./.claude/skills/onboard",
|
|
216
224
|
"./.claude/skills/onboarding-design",
|
|
225
|
+
"./.claude/skills/onboarding-program",
|
|
226
|
+
"./.claude/skills/one-on-one-cadence",
|
|
217
227
|
"./.claude/skills/openapi",
|
|
218
228
|
"./.claude/skills/optimize",
|
|
219
229
|
"./.claude/skills/optimize-agents-dir",
|
|
@@ -222,12 +232,14 @@
|
|
|
222
232
|
"./.claude/skills/optimize-rtk",
|
|
223
233
|
"./.claude/skills/optimize-skills",
|
|
224
234
|
"./.claude/skills/orchestrate",
|
|
235
|
+
"./.claude/skills/org-design",
|
|
225
236
|
"./.claude/skills/override",
|
|
226
237
|
"./.claude/skills/override-create",
|
|
227
238
|
"./.claude/skills/override-manage",
|
|
228
239
|
"./.claude/skills/override-management",
|
|
229
240
|
"./.claude/skills/package-reset",
|
|
230
241
|
"./.claude/skills/package-test",
|
|
242
|
+
"./.claude/skills/perf-feedback-craft",
|
|
231
243
|
"./.claude/skills/performance",
|
|
232
244
|
"./.claude/skills/performance-analysis",
|
|
233
245
|
"./.claude/skills/persona-writing",
|
|
@@ -241,6 +253,7 @@
|
|
|
241
253
|
"./.claude/skills/po-discovery",
|
|
242
254
|
"./.claude/skills/positioning-strategy",
|
|
243
255
|
"./.claude/skills/prepare-for-review",
|
|
256
|
+
"./.claude/skills/privacy-review",
|
|
244
257
|
"./.claude/skills/project-analysis-core",
|
|
245
258
|
"./.claude/skills/project-analysis-hypothesis-driven",
|
|
246
259
|
"./.claude/skills/project-analysis-laravel",
|
|
@@ -287,6 +300,8 @@
|
|
|
287
300
|
"./.claude/skills/rtk-output-filtering",
|
|
288
301
|
"./.claude/skills/rule-compliance-audit",
|
|
289
302
|
"./.claude/skills/rule-writing",
|
|
303
|
+
"./.claude/skills/runway-cognition",
|
|
304
|
+
"./.claude/skills/scenario-modeling",
|
|
290
305
|
"./.claude/skills/script-writing",
|
|
291
306
|
"./.claude/skills/secrets-management",
|
|
292
307
|
"./.claude/skills/security",
|
|
@@ -318,6 +333,7 @@
|
|
|
318
333
|
"./.claude/skills/tests-execute",
|
|
319
334
|
"./.claude/skills/threat-model",
|
|
320
335
|
"./.claude/skills/threat-modeling",
|
|
336
|
+
"./.claude/skills/throughput-vs-morale-tradeoff",
|
|
321
337
|
"./.claude/skills/token-optimizer",
|
|
322
338
|
"./.claude/skills/traefik",
|
|
323
339
|
"./.claude/skills/ui-component-architect",
|
|
@@ -328,6 +344,7 @@
|
|
|
328
344
|
"./.claude/skills/using-git-worktrees",
|
|
329
345
|
"./.claude/skills/validate-feature-fit",
|
|
330
346
|
"./.claude/skills/verify-completion-evidence",
|
|
347
|
+
"./.claude/skills/vision-articulation",
|
|
331
348
|
"./.claude/skills/voc-extract",
|
|
332
349
|
"./.claude/skills/voice-and-tone-design",
|
|
333
350
|
"./.claude/skills/websocket",
|
package/AGENTS.md
CHANGED
|
@@ -20,7 +20,7 @@ task ci # full pipeline — green before PR
|
|
|
20
20
|
- **Kernel + Router** (beta) — 9 always-loaded Iron-Law rules, tier-1 / tier-2 routing, cost profiles, per-rule char caps enforced by `task lint-rule-budget`: [`kernel-membership`](docs/contracts/kernel-membership.md) + [`rule-router`](docs/contracts/rule-router.md).
|
|
21
21
|
- **Content pipelines** — A [compression](docs/architecture/compression.md), B [Augment projection](docs/architecture/augment-projection.md), C [multi-tool projection](docs/architecture/multi-tool-projection.md), D [Claude.ai bundle](docs/architecture/claude-bundle.md). Index: [`docs/architecture.md`](docs/architecture.md).
|
|
22
22
|
- **Editing this repo** — Iron-Law rules (portability, source-of-truth, skill-quality) + Thin-Root contract: [`augment-portability`](.agent-src/rules/augment-portability.md), [`augment-source-of-truth`](.agent-src/rules/augment-source-of-truth.md), [`skill-quality`](.agent-src/rules/skill-quality.md), [`agents-md-thin-root`](.agent-src/skills/agents-md-thin-root/SKILL.md).
|
|
23
|
-
- **Consumer story** — `
|
|
23
|
+
- **Consumer story** — `npx` + `scripts/install.sh` + `.agent-settings.yml` opt-in flags, sandbox/offline install paths, verified-offline manifest: [`README.md`](README.md).
|
|
24
24
|
- **Personas** — 11 review-lens cast (6 core · 5 specialist), `personas:` vs `/mode` axes, citation map, override pattern: [`docs/personas.md`](docs/personas.md), schema [`docs/contracts/persona-schema.md`](docs/contracts/persona-schema.md) (beta).
|
|
25
25
|
|
|
26
26
|
## Emergency triage — read this when nothing else is reachable
|
package/CHANGELOG.md
CHANGED
|
@@ -18,6 +18,78 @@ Entry-shape contract: [`docs/contracts/CHANGELOG-conventions.md`](docs/contracts
|
|
|
18
18
|
|
|
19
19
|
Four roadmaps land in this release.
|
|
20
20
|
|
|
21
|
+
**Tier-0 trim (`road-to-surface-discipline` Phase 1)** — six CLI
|
|
22
|
+
commands moved from Tier-0 to Tier-1 in `./agent-config --help` to
|
|
23
|
+
collapse the daily-driver surface down to the seven commands a new
|
|
24
|
+
contributor actually needs in their first session. Commands stay
|
|
25
|
+
fully invokable by full name — only the default `--help` view
|
|
26
|
+
changed. Source of truth: `docs/contracts/command-surface-tiers.md`.
|
|
27
|
+
|
|
28
|
+
Pre/post diff of `./agent-config --help` Tier-0 block:
|
|
29
|
+
|
|
30
|
+
| Command | Pre | Post | Rationale |
|
|
31
|
+
|---|:-:|:-:|---|
|
|
32
|
+
| `init` | Tier-0 | Tier-0 | daily-driver entrypoint |
|
|
33
|
+
| `sync` | Tier-0 | Tier-0 | daily-driver entrypoint |
|
|
34
|
+
| `validate` | Tier-0 | Tier-0 | daily-driver entrypoint |
|
|
35
|
+
| `work` | Tier-0 | Tier-0 | daily-driver entrypoint |
|
|
36
|
+
| `implement-ticket` | Tier-0 | Tier-0 | daily-driver entrypoint |
|
|
37
|
+
| `help` | Tier-0 | Tier-0 | help meta-command |
|
|
38
|
+
| `--version` | Tier-0 | Tier-0 | help meta-command |
|
|
39
|
+
| `first-run` | Tier-0 | **Tier-1** | one-time setup; not in daily loop |
|
|
40
|
+
| `keys:install-anthropic` | Tier-0 | **Tier-1** | one-time credential setup |
|
|
41
|
+
| `keys:install-openai` | Tier-0 | **Tier-1** | one-time credential setup |
|
|
42
|
+
| `council:estimate` | Tier-0 | **Tier-1** | on-demand review tool |
|
|
43
|
+
| `council:run` | Tier-0 | **Tier-1** | on-demand review tool |
|
|
44
|
+
| `council:render` | Tier-0 | **Tier-1** | on-demand review tool |
|
|
45
|
+
|
|
46
|
+
Net surface delta: **0 new commands, 0 removed commands.** Only the
|
|
47
|
+
`--help` surfacing changed. Run `./agent-config --help --tier=1` for
|
|
48
|
+
the full power-user view (15 commands) or `--tier=all` for
|
|
49
|
+
maintenance / hooks / MCP / telemetry (26 additional commands).
|
|
50
|
+
|
|
51
|
+
**Diagnostic Hub (`road-to-surface-discipline` Phase 2)** — the
|
|
52
|
+
existing `./agent-config doctor` is repositioned as the single
|
|
53
|
+
entrypoint for health checks. New `CHECK_IDS` registry plus
|
|
54
|
+
`doctor --check <id>` filter; `--list-checks` enumerates every
|
|
55
|
+
runner; failing checks print the literal command line that
|
|
56
|
+
reproduces the failure. Surface delta: **0 new commands** — only
|
|
57
|
+
flags and registry plumbing.
|
|
58
|
+
|
|
59
|
+
**MCP beta gating (`road-to-surface-discipline` Phase 3)** — MCP
|
|
60
|
+
promotion criteria pinned in
|
|
61
|
+
[`docs/contracts/mcp-beta-criteria.md`](docs/contracts/mcp-beta-criteria.md)
|
|
62
|
+
with a four-gate contract (offline-readiness, scope, drift, runtime).
|
|
63
|
+
`doctor --check mcp-beta-readiness` enforces the gates; failing tests
|
|
64
|
+
under `tests/test_mcp_beta_gates.py` codify the promotion bar.
|
|
65
|
+
Cloud-scope behaviour cross-referenced from
|
|
66
|
+
[`docs/contracts/mcp-cloud-scope.md`](docs/contracts/mcp-cloud-scope.md).
|
|
67
|
+
|
|
68
|
+
**Architecture refresh (`road-to-surface-discipline` Phase 4)** —
|
|
69
|
+
[`docs/architecture.md`](docs/architecture.md) and
|
|
70
|
+
[`docs/mcp-server.md`](docs/mcp-server.md) re-anchor the 6-layer
|
|
71
|
+
system model (consumer → tools → installer → package → kernel →
|
|
72
|
+
runtime). `AGENTS.md` re-trimmed to honour the Thin-Root contract
|
|
73
|
+
(< 3,000 chars). No code churn — docs only.
|
|
74
|
+
|
|
75
|
+
**Tier-usage telemetry (`road-to-surface-discipline` Phase 5)** —
|
|
76
|
+
empirical retiering signal added behind a default-off opt-in. New
|
|
77
|
+
`telemetry.tier_usage` namespace in `.agent-settings.yml`; signal
|
|
78
|
+
contract pinned in
|
|
79
|
+
[`docs/contracts/command-clusters.md`](docs/contracts/command-clusters.md)
|
|
80
|
+
§ tier-usage (whitelist: `ts_bucket`, `command`, `tier`, `outcome`,
|
|
81
|
+
`user_hash`; hourly time buckets; 16-char salted user hash; no paths,
|
|
82
|
+
no argv). Retiering thresholds (≥ 20 invocations and ≥ 3 distinct
|
|
83
|
+
users over 30 days) live in the same contract. A new
|
|
84
|
+
`tier_usage_report.py` template script aggregates the local log into
|
|
85
|
+
a frequency table and refuses to render rows that violate the
|
|
86
|
+
privacy floor. The existing `doctor` gains a `tier-usage-readiness`
|
|
87
|
+
check (warn when disabled or empty; fail when every record is
|
|
88
|
+
poisoned; ok when ≥ 1 record passes the floor). Surface delta: **0
|
|
89
|
+
new commands, 0 new skills, 0 new personas** — telemetry rides on
|
|
90
|
+
the existing dispatcher and the existing `doctor` entrypoint.
|
|
91
|
+
|
|
92
|
+
|
|
21
93
|
**Package consolidation** — the standalone wrapper package
|
|
22
94
|
`@event4u/create-agent-config` is retired. `npx @event4u/agent-config init`
|
|
23
95
|
is now the canonical one-shot entrypoint; the bundle package gains an
|
|
@@ -357,6 +429,68 @@ our recommendation order, not its support status.
|
|
|
357
429
|
> that forces a new era split (`# Era: 2.8.x`, etc.) — see
|
|
358
430
|
> [`docs/contracts/CHANGELOG-conventions.md § Era splits`](docs/contracts/CHANGELOG-conventions.md).
|
|
359
431
|
|
|
432
|
+
## [2.10.0](https://github.com/event4u-app/agent-config/compare/2.9.0...2.10.0) (2026-05-14)
|
|
433
|
+
|
|
434
|
+
### Features
|
|
435
|
+
|
|
436
|
+
* **ci:** lint-hook-concern-budget Tier-1 fail-closed gate ([8d60b8a](https://github.com/event4u-app/agent-config/commit/8d60b8ab464c4c5bdc6d072bb2a9b0123942e13b))
|
|
437
|
+
* **cli:** settings:check command + YAML subset contract ([638e740](https://github.com/event4u-app/agent-config/commit/638e74017ffea8d7c08073a949e86fde047db109))
|
|
438
|
+
* **hooks:** hooks:doctor + hooks:replay subcommands + fixture corpus ([3156e25](https://github.com/event4u-app/agent-config/commit/3156e25fd3253fc926a57b92e14b407a9ed54b58))
|
|
439
|
+
* **work-engine:** add decision-trace memory_visibility hook + scoring ([bf056ac](https://github.com/event4u-app/agent-config/commit/bf056ace877a696afa5fe758053ea1eb350e5dff))
|
|
440
|
+
|
|
441
|
+
### Bug Fixes
|
|
442
|
+
|
|
443
|
+
* **roadmap:** point productization P6 gate at archived proof-not-features path ([35a1009](https://github.com/event4u-app/agent-config/commit/35a1009cffdfde28c7b0384c890c31a7e62b70cf))
|
|
444
|
+
|
|
445
|
+
### Documentation
|
|
446
|
+
|
|
447
|
+
* **roadmap:** complete road-to-proof-not-features 16/16 + sync dashboard ([89af72d](https://github.com/event4u-app/agent-config/commit/89af72d5514b74c19d533b5a2e69ff7ddf16ecbc))
|
|
448
|
+
* **readme:** split README by audience + audience-order contract ([60a87c0](https://github.com/event4u-app/agent-config/commit/60a87c056555a80585d25555f3d5b87d54c7283a))
|
|
449
|
+
|
|
450
|
+
### Refactoring
|
|
451
|
+
|
|
452
|
+
* **check-council-references:** structural carve-outs for immutable inputs and decision provenance ([3ed7784](https://github.com/event4u-app/agent-config/commit/3ed77841c42c5e3ebf4191611bb7fa4a52ed2fa0))
|
|
453
|
+
|
|
454
|
+
### Chores
|
|
455
|
+
|
|
456
|
+
* **roadmap:** archive road-to-proof-not-features (16/16 done, Phase 1 deferred) ([9d05aed](https://github.com/event4u-app/agent-config/commit/9d05aed79a46023b1e95c5488a1e3d5e78748e67))
|
|
457
|
+
|
|
458
|
+
Tests: 3663 (+60 since 2.9.0)
|
|
459
|
+
|
|
460
|
+
## [2.9.0](https://github.com/event4u-app/agent-config/compare/2.8.0...2.9.0) (2026-05-13)
|
|
461
|
+
|
|
462
|
+
### Features
|
|
463
|
+
|
|
464
|
+
* tier-usage telemetry settings + report template ([22172f2](https://github.com/event4u-app/agent-config/commit/22172f2a59b530034633ff72226506006c5fd81b))
|
|
465
|
+
* mcp beta-readiness criteria with pending gate tests ([3653788](https://github.com/event4u-app/agent-config/commit/36537880e03546e9baf424b2fdd70aa69d41eb03))
|
|
466
|
+
* expand doctor diagnostic hub to 10 checks ([372c193](https://github.com/event4u-app/agent-config/commit/372c19362f8037c76f919a2d918780ae5ec9cb40))
|
|
467
|
+
* **roadmap:** add road-to-surface-discipline (council-reviewed) ([d9da987](https://github.com/event4u-app/agent-config/commit/d9da9870989ccdb7594cd693e9b18608b957ab79))
|
|
468
|
+
* **linter:** wing-4 cognition-boundary checks + spine slot vocab ([c4d9a4b](https://github.com/event4u-app/agent-config/commit/c4d9a4ba8e5c7184b9be0a58d4d8b220a60cab7c))
|
|
469
|
+
|
|
470
|
+
### Bug Fixes
|
|
471
|
+
|
|
472
|
+
* **skills:** clear missing_inspect_step + bare_noun warnings ([0c88c6e](https://github.com/event4u-app/agent-config/commit/0c88c6ee45873e47fd8c7d356ec82b28b63b12c5))
|
|
473
|
+
* **docs:** drop roadmap-file pointers from wing-4 ADRs and handoff ([ccd7624](https://github.com/event4u-app/agent-config/commit/ccd7624127094d0a01eda0901fa41c31319f7bc5))
|
|
474
|
+
* **template:** bump agent_config_version pin to 2.8.0 ([f21e916](https://github.com/event4u-app/agent-config/commit/f21e916c6bb793fa6efe7d264a1e069e11ab4c62))
|
|
475
|
+
* **skills:** spine slot citations + finance-partner polish ([9072783](https://github.com/event4u-app/agent-config/commit/90727831b223bd970d8425d158940bf3e3bc104f))
|
|
476
|
+
|
|
477
|
+
### Documentation
|
|
478
|
+
|
|
479
|
+
* archive surface-discipline roadmap + 2.8.0 changelog ([551e306](https://github.com/event4u-app/agent-config/commit/551e306e43fa82fffda9178bdaa690b19d8bec4e))
|
|
480
|
+
* 6-layer architecture refresh + thin-root sync ([91d25a8](https://github.com/event4u-app/agent-config/commit/91d25a80b37fb1c1782c2d5f00f23925ba6ec1b3))
|
|
481
|
+
* **roadmap:** complete road-to-money-strategy-ops phase 1 ([83cf9fe](https://github.com/event4u-app/agent-config/commit/83cf9fe99c034b71e146099eddc9ce5b3137f434))
|
|
482
|
+
* **contracts:** register wing-4 spine slots + marketplace entries ([75b829d](https://github.com/event4u-app/agent-config/commit/75b829d162bc18ab3dc2dda6614d15a087a4f32a))
|
|
483
|
+
|
|
484
|
+
### Refactoring
|
|
485
|
+
|
|
486
|
+
* trim tier-0 surface from 13 to 7 commands ([a9eafd1](https://github.com/event4u-app/agent-config/commit/a9eafd1c5226c10209e3dee2b972f38d9c0f3dd9))
|
|
487
|
+
|
|
488
|
+
### Chores
|
|
489
|
+
|
|
490
|
+
* **generated:** regenerate derived outputs for wing-4 additions ([54f3779](https://github.com/event4u-app/agent-config/commit/54f3779a6d2161ed06bfb327c3e416ec107b4016))
|
|
491
|
+
|
|
492
|
+
Tests: 3603 (+26 since 2.8.0)
|
|
493
|
+
|
|
360
494
|
## [2.8.0](https://github.com/event4u-app/agent-config/compare/2.7.0...2.8.0) (2026-05-13)
|
|
361
495
|
|
|
362
496
|
### Features
|
package/README.md
CHANGED
|
@@ -7,22 +7,42 @@ Give your AI agents an audit-disciplined orchestration contract — testing, Git
|
|
|
7
7
|
> Your agent picks up the project's stack, runs tests, prepares PRs, fixes CI — and follows your team's coding standards while doing it. Stack-aware skill sets ship for PHP (Laravel · Symfony · Zend/Laminas), JavaScript (Next.js · React · Node), and cross-stack concerns (API · testing · security · observability).
|
|
8
8
|
|
|
9
9
|
<p align="center">
|
|
10
|
-
<strong>
|
|
10
|
+
<strong>206 Skills</strong> · <strong>61 Rules</strong> · <strong>106 Commands</strong> · <strong>72 Guidelines</strong> · <strong>8 AI Tools</strong>
|
|
11
11
|
</p>
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
15
|
+
## Use it in your project
|
|
16
|
+
|
|
17
|
+
You run the package from a consumer repo — bootstrap via `npx`, let the
|
|
18
|
+
agent pick up your stack, and ship work end-to-end. New install? Start
|
|
19
|
+
with the [Quickstart](#quickstart) to write `.agent-settings.yml`,
|
|
20
|
+
`.augment/`, `.claude/`, …. Already installed? [Supported Tools](#supported-tools)
|
|
21
|
+
shows which AIs the package wires up, and [Featured Commands](#featured-commands)
|
|
22
|
+
lists the end-to-end workflows (`/implement-ticket`, `/work`, `/commit`,
|
|
23
|
+
`/create-pr`). For a deeper tour, see the
|
|
24
|
+
[2-minute demo: `/implement-ticket`](#2-minute-demo-implement-ticket).
|
|
25
|
+
|
|
26
|
+
## Prove it
|
|
27
|
+
|
|
28
|
+
The package is audit-disciplined by construction — every memory consult,
|
|
29
|
+
decision key, and hook concern lands in `agents/state/` so you can
|
|
30
|
+
replay it. [Core Principles](#core-principles) names the four invariants.
|
|
31
|
+
[What this package is — and what it isn't](#what-this-package-is--and-what-it-isnt)
|
|
32
|
+
draws the scope boundary. [Documentation](#documentation) lists the
|
|
33
|
+
contracts the package ships against, including
|
|
34
|
+
[`memory-visibility-v1`](docs/contracts/memory-visibility-v1.md) and
|
|
35
|
+
[`decision-trace-v1`](docs/contracts/decision-trace-v1.md).
|
|
36
|
+
|
|
37
|
+
## Contribute
|
|
38
|
+
|
|
39
|
+
Working on the package itself rather than with it?
|
|
40
|
+
[Development](#development) covers the `task ci` pipeline,
|
|
41
|
+
[Requirements](#requirements) the toolchain, and
|
|
42
|
+
[Maintainer telemetry](#maintainer-telemetry-opt-in-default-off) the
|
|
43
|
+
opt-in measurement loop. The source-of-truth tree is
|
|
44
|
+
`.agent-src.uncompressed/`; never hand-edit the generated `.augment/`
|
|
45
|
+
or `.agent-src/`.
|
|
26
46
|
|
|
27
47
|
## Quickstart
|
|
28
48
|
|
|
@@ -244,7 +264,7 @@ Install in the same project (dev-only):
|
|
|
244
264
|
npm install --save-dev @event4u/agent-memory
|
|
245
265
|
```
|
|
246
266
|
|
|
247
|
-
→ [Memory contract & retrieval API](docs/contracts/agent-memory-contract.md) (beta) · [Built-in MCP server](docs/mcp-server.md) (experimental — local stdio access from Claude Desktop / Cursor / Zed / Continue, install with `task mcp:setup`)
|
|
267
|
+
→ [Memory contract & retrieval API](docs/contracts/agent-memory-contract.md) (beta) · [Built-in MCP server](docs/mcp-server.md) (experimental — local stdio access from Claude Desktop / Cursor / Zed / Continue, install with `task mcp:setup`; promotion to beta gated on [`mcp-beta-criteria.md`](docs/contracts/mcp-beta-criteria.md))
|
|
248
268
|
|
|
249
269
|
---
|
|
250
270
|
|
|
@@ -510,7 +530,7 @@ slash-commands) 📌 = informational marker only (no auto-discovery
|
|
|
510
530
|
or manual wiring required)
|
|
511
531
|
|
|
512
532
|
> **What this means in practice:** Claude Code gets the full project-scoped
|
|
513
|
-
> package (rules +
|
|
533
|
+
> package (rules + 206 skills + 106 native commands); Augment Code gets the
|
|
514
534
|
> same content but only from a single global install at `~/.augment/`.
|
|
515
535
|
> Cursor, Cline, Windsurf, Gemini CLI, GitHub Copilot, Roo Code, Codex CLI,
|
|
516
536
|
> and Continue.dev only get the **rules** natively; skills and commands are
|
|
@@ -390,6 +390,34 @@ memory:
|
|
|
390
390
|
# Example: ["api[_-]?key", "/Users/[a-z]+/Library"]
|
|
391
391
|
redact_patterns: []
|
|
392
392
|
|
|
393
|
+
# --- Hooks ---
|
|
394
|
+
#
|
|
395
|
+
# Configuration surface for the hook dispatcher (see
|
|
396
|
+
# docs/contracts/hook-architecture-v1.md). Each subkey targets one
|
|
397
|
+
# concern script under scripts/hooks/ or scripts/. Defaults are safe;
|
|
398
|
+
# tune only when CI surfaces a real signal.
|
|
399
|
+
hooks:
|
|
400
|
+
# Concern budget gate (P3.3, lint_hook_concern_budget.py). Caps how
|
|
401
|
+
# many concerns may bind to a single (platform, event) cell and
|
|
402
|
+
# restricts fail_closed=true to an explicit Tier-1 allowlist.
|
|
403
|
+
#
|
|
404
|
+
# max_per_event — placeholder until Phase 1 of
|
|
405
|
+
# road-to-proof-not-features.md captures real session evidence.
|
|
406
|
+
# Threshold rule per roadmap: max(observed-in-Phase-1) × 1.5, rounded
|
|
407
|
+
# up. 8 = current-observed-max (5) × 1.5 = 7.5 → 8.
|
|
408
|
+
#
|
|
409
|
+
# tier1_concerns — concerns allowed to block agent execution on
|
|
410
|
+
# failure (fail_closed: true in the manifest). Promotion is explicit
|
|
411
|
+
# opt-in; keep empty until Phase 1 evidence justifies an entry.
|
|
412
|
+
#
|
|
413
|
+
# hard_fail — false = warn-only (default). Flip to true after ≥10
|
|
414
|
+
# captured sessions across host agents per
|
|
415
|
+
# road-to-distribution-and-adoption.md.
|
|
416
|
+
concern_budget:
|
|
417
|
+
max_per_event: 8
|
|
418
|
+
tier1_concerns: []
|
|
419
|
+
hard_fail: false
|
|
420
|
+
|
|
393
421
|
# --- Update check ---
|
|
394
422
|
#
|
|
395
423
|
# Daily background check against the npm registry for a newer
|