@event4u/agent-config 1.22.0 → 1.24.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/agents/cleanup.md +31 -17
- package/.agent-src/commands/analyze-reference-repo.md +3 -0
- package/.agent-src/commands/commit/in-chunks.md +30 -10
- package/.agent-src/commands/commit.md +46 -6
- package/.agent-src/commands/compress.md +19 -13
- package/.agent-src/commands/cost-report.md +120 -0
- package/.agent-src/commands/create-pr/description-only.md +8 -0
- package/.agent-src/commands/create-pr.md +95 -80
- package/.agent-src/commands/feature/plan.md +13 -7
- package/.agent-src/commands/memory/add.md +16 -8
- package/.agent-src/commands/memory/promote.md +17 -9
- package/.agent-src/commands/optimize/rtk.md +16 -11
- package/.agent-src/commands/prepare-for-review.md +12 -6
- package/.agent-src/commands/project-analyze.md +31 -20
- package/.agent-src/commands/review-changes.md +24 -15
- package/.agent-src/commands/roadmap/create.md +14 -9
- package/.agent-src/commands/roadmap/process-full.md +41 -1
- package/.agent-src/contexts/contracts/frugality-charter.md +57 -0
- package/.agent-src/contexts/execution/roadmap-process-loop.md +29 -6
- package/.agent-src/rules/architecture.md +9 -0
- package/.agent-src/rules/ask-when-uncertain.md +3 -13
- package/.agent-src/rules/caveman-speak.md +78 -0
- package/.agent-src/rules/direct-answers.md +5 -14
- package/.agent-src/rules/markdown-safe-codeblocks.md +6 -7
- package/.agent-src/rules/no-cheap-questions.md +4 -14
- package/.agent-src/rules/roadmap-progress-sync.md +37 -3
- package/.agent-src/rules/token-efficiency.md +5 -7
- package/.agent-src/skills/adr-create/SKILL.md +197 -0
- package/.agent-src/skills/agent-docs-writing/SKILL.md +23 -1
- package/.agent-src/skills/command-writing/SKILL.md +23 -0
- package/.agent-src/skills/context-authoring/SKILL.md +23 -0
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +23 -0
- package/.agent-src/skills/guideline-writing/SKILL.md +22 -0
- 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/persona-writing/SKILL.md +153 -0
- package/.agent-src/skills/readme-writing/SKILL.md +20 -0
- package/.agent-src/skills/readme-writing-package/SKILL.md +19 -0
- package/.agent-src/skills/roadmap-writing/SKILL.md +157 -0
- package/.agent-src/skills/rule-writing/SKILL.md +22 -0
- package/.agent-src/skills/script-writing/SKILL.md +226 -0
- package/.agent-src/skills/skill-writing/SKILL.md +23 -0
- package/.agent-src/skills/test-driven-development/SKILL.md +24 -0
- package/.agent-src/skills/universal-project-analysis/SKILL.md +8 -0
- package/.agent-src/templates/agent-settings.md +73 -0
- package/.agent-src/templates/command.md +15 -10
- package/.agent-src/templates/rule.md +6 -0
- package/.agent-src/templates/skill.md +32 -0
- package/.claude-plugin/marketplace.json +10 -4
- package/AGENTS.md +14 -3
- package/CHANGELOG.md +61 -0
- package/README.md +5 -5
- package/docs/architecture.md +4 -4
- package/docs/catalog.md +25 -8
- package/docs/customization.md +72 -0
- package/docs/decisions/INDEX.md +15 -0
- package/docs/getting-started.md +2 -2
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +27 -19
- package/docs/guidelines/agent-infra/carve-out-predicates.md +17 -0
- package/docs/guidelines/agent-infra/mcp-request-signing.md +199 -0
- package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +11 -4
- package/package.json +1 -1
- package/scripts/_lib/__init__.py +5 -0
- package/scripts/_lib/script_output.py +140 -0
- package/scripts/adr/regenerate_index.py +79 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_add_quiet.py +149 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +33 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +36 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +26 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +41 -0
- package/scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py +98 -0
- package/scripts/check_augmentignore.py +4 -1
- package/scripts/check_command_count_messaging.py +4 -1
- package/scripts/check_compressed_paths.py +4 -1
- package/scripts/check_council_layout.py +4 -1
- package/scripts/check_council_references.py +4 -1
- package/scripts/check_iron_law_prominence.py +3 -1
- package/scripts/check_md_language.py +3 -1
- package/scripts/check_memory_proposal.py +3 -1
- package/scripts/check_public_catalog_links.py +4 -1
- package/scripts/check_reply_consistency.py +8 -2
- package/scripts/check_roadmap_trackable.py +4 -1
- package/scripts/compile_router.py +27 -0
- package/scripts/compress.py +33 -19
- package/scripts/cost/budget.mjs +152 -0
- package/scripts/cost/track.mjs +144 -0
- package/scripts/first-run.sh +3 -9
- package/scripts/install-hooks.sh +19 -1
- package/scripts/install.py +17 -12
- package/scripts/install.sh +19 -8
- package/scripts/lint_examples.py +6 -2
- package/scripts/lint_handoffs.py +4 -1
- package/scripts/lint_load_context.py +4 -1
- package/scripts/lint_roadmap_complexity.py +6 -2
- package/scripts/lint_rule_interactions.py +4 -1
- package/scripts/lint_rule_tiers.py +4 -1
- package/scripts/measure_frugality_savings.py +164 -0
- package/scripts/measure_markitdown_lift.py +127 -0
- package/scripts/runtime_dispatcher.py +11 -0
- package/scripts/skill_linter.py +207 -2
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: script-writing
|
|
3
|
+
description: "Use when adding or editing any script under `scripts/` — `--quiet` flag, `_lib/script_output` helpers, silent Taskfile wiring, Iron-Law carve-outs — even when you just say 'add a check script for X'."
|
|
4
|
+
source: package
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- cloud_safe: degrade -->
|
|
8
|
+
|
|
9
|
+
# script-writing
|
|
10
|
+
|
|
11
|
+
## When to use
|
|
12
|
+
|
|
13
|
+
* Creating a new Python script in `scripts/{name}.py` (linters, checks, generators, measure tools)
|
|
14
|
+
* Editing an existing script that prints progress or success lines
|
|
15
|
+
* Wiring a script into `Taskfile.yml` or `taskfiles/*.yml`
|
|
16
|
+
* Reviewing a PR that adds scripts and asking "why does this still print on minimal?"
|
|
17
|
+
|
|
18
|
+
Do NOT use this skill when:
|
|
19
|
+
|
|
20
|
+
* The content is a one-off / archival under `scripts/ai_council/one_off_archive/` — those carry an `_one_off_` prefix and are exempt from the verbosity convention
|
|
21
|
+
* The content is a shell entrypoint with secret prompts (install-keys, release confirms) → see § 3 Iron-Law carve-outs
|
|
22
|
+
* The content is a `.mjs` / Node script under `scripts/cost/` — different runtime; convention covered in `agents/contexts/cost-tracking.md`
|
|
23
|
+
|
|
24
|
+
## Script vs other writers — critical test
|
|
25
|
+
|
|
26
|
+
| Intent | Artifact |
|
|
27
|
+
|---|---|
|
|
28
|
+
| "Maintenance script the agent or CI runs" | **This skill** |
|
|
29
|
+
| "User types `/foo` to invoke" | `command-writing` |
|
|
30
|
+
| "Constraint the agent must always honor" | `rule-writing` |
|
|
31
|
+
| "Reference knowledge agents cite" | `guideline-writing` |
|
|
32
|
+
|
|
33
|
+
Scripts orchestrate file checks, generators, and validators. They are
|
|
34
|
+
neither user-invoked nor agent-routed — `task` and CI call them.
|
|
35
|
+
|
|
36
|
+
## Procedure
|
|
37
|
+
|
|
38
|
+
### 0. Run the Drafting Protocol
|
|
39
|
+
|
|
40
|
+
Creating or materially rewriting a script that joins the linter / check
|
|
41
|
+
family **must** go through Understand → Research → Draft from the
|
|
42
|
+
[`artifact-drafting-protocol`](../../rules/artifact-drafting-protocol.md) rule.
|
|
43
|
+
|
|
44
|
+
* **Understand** — what failure does this script catch that no existing
|
|
45
|
+
check catches? Is it a one-off (then archive it) or evergreen?
|
|
46
|
+
* **Research** — `ls scripts/check_*.py scripts/lint_*.py`, grep for
|
|
47
|
+
overlap, skim 1–2 peer scripts (e.g. `lint_handoffs.py`,
|
|
48
|
+
`check_md_language.py`).
|
|
49
|
+
* **Draft** — propose name + one-line purpose first. Only fill the body
|
|
50
|
+
after the shape is confirmed.
|
|
51
|
+
|
|
52
|
+
### 1. `--quiet` flag — argparse + sys.argv fallback
|
|
53
|
+
|
|
54
|
+
Every `check_*.py` / `lint_*.py` script MUST accept `--quiet` so the
|
|
55
|
+
silent Taskfile layer (§ 4) can suppress success-only output.
|
|
56
|
+
|
|
57
|
+
**With argparse (preferred):**
|
|
58
|
+
|
|
59
|
+
```python
|
|
60
|
+
parser = argparse.ArgumentParser(...)
|
|
61
|
+
parser.add_argument("--quiet", action="store_true",
|
|
62
|
+
help="Only print on failure")
|
|
63
|
+
args = parser.parse_args()
|
|
64
|
+
...
|
|
65
|
+
if not args.quiet:
|
|
66
|
+
print("✅ All clean")
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**Plain script (no argparse) fallback:**
|
|
70
|
+
|
|
71
|
+
```python
|
|
72
|
+
import sys
|
|
73
|
+
|
|
74
|
+
QUIET = "--quiet" in sys.argv
|
|
75
|
+
...
|
|
76
|
+
if not QUIET:
|
|
77
|
+
print("✅ All clean")
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Failure output (`❌`, non-zero exit) is **never** gated — failures must
|
|
81
|
+
always print regardless of `--quiet`.
|
|
82
|
+
|
|
83
|
+
### 2. `_lib/script_output` helpers — preferred for new scripts
|
|
84
|
+
|
|
85
|
+
For anything richer than a single `✅`/`❌`, import the verbosity-aware
|
|
86
|
+
router instead of raw `print()`:
|
|
87
|
+
|
|
88
|
+
```python
|
|
89
|
+
from _lib.script_output import info, success, warn, error, flush_summary
|
|
90
|
+
|
|
91
|
+
info("Loading manifest") # drops on silent + minimal
|
|
92
|
+
success("Wrote 3 files") # collected at minimal, printed at verbose
|
|
93
|
+
warn("Skipping stale entry") # stderr unless silent
|
|
94
|
+
error("Manifest missing") # stderr always
|
|
95
|
+
|
|
96
|
+
flush_summary("Done — 3 entries") # one-line summary at minimal
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Resolution order (first wins, cached for the process):
|
|
100
|
+
|
|
101
|
+
1. `AGENT_SCRIPT_VERBOSITY` env (`silent` / `minimal` / `verbose`)
|
|
102
|
+
2. `SCRIPT_OUTPUT_VERBOSE=1` alias (== `verbose`)
|
|
103
|
+
3. `.agent-settings.yml` → `verbosity.script_output`
|
|
104
|
+
4. Default `minimal`
|
|
105
|
+
|
|
106
|
+
The resolved level is exported back into `AGENT_SCRIPT_VERBOSITY` so
|
|
107
|
+
child processes inherit it. Tests reset via `reset_level()` from the
|
|
108
|
+
same module — see `tests/test_script_output.py`.
|
|
109
|
+
|
|
110
|
+
### 3. Iron-Law carve-outs — never silenced
|
|
111
|
+
|
|
112
|
+
The following surfaces **MUST** use plain `print()` and never the
|
|
113
|
+
helpers, so verbosity settings cannot suppress them:
|
|
114
|
+
|
|
115
|
+
* Release confirms — every task in `taskfiles/release.yml`
|
|
116
|
+
* Secret prompts — `install-anthropic-key`, `install-openai-key`,
|
|
117
|
+
`setup-evals`, `install-hooks` interactive sections
|
|
118
|
+
* `runtime-e2e` and `test-triggers-live`
|
|
119
|
+
* CI orchestration sentinels — `_ci-start`, `_ci-end`, root `ci`
|
|
120
|
+
* Any prompt that asks the user for confirmation per
|
|
121
|
+
[`non-destructive-by-default`](../../rules/non-destructive-by-default.md) — Hard Floor cannot be silenced
|
|
122
|
+
|
|
123
|
+
If unsure, check `scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py`
|
|
124
|
+
`CARVE_OUTS` for the canonical list.
|
|
125
|
+
|
|
126
|
+
### 4. Taskfile wiring — `silent: true` + `{{.QUIET_FLAG}}`
|
|
127
|
+
|
|
128
|
+
Every Taskfile task that wraps a `--quiet`-aware script MUST set
|
|
129
|
+
`silent: true` and pass `{{.QUIET_FLAG}}` to the script:
|
|
130
|
+
|
|
131
|
+
```yaml
|
|
132
|
+
# Per-task in taskfiles/*.yml:
|
|
133
|
+
tasks:
|
|
134
|
+
lint-handoffs:
|
|
135
|
+
silent: true
|
|
136
|
+
cmd: python3 scripts/lint_handoffs.py {{.QUIET_FLAG}}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
The `QUIET_FLAG` var is defined once at the root of `Taskfile.yml`
|
|
140
|
+
and resolves to `""` only when `AGENT_SCRIPT_VERBOSITY=verbose`:
|
|
141
|
+
|
|
142
|
+
```yaml
|
|
143
|
+
# Root Taskfile.yml — already in place, do not duplicate:
|
|
144
|
+
vars:
|
|
145
|
+
QUIET_FLAG:
|
|
146
|
+
sh: '[ "$AGENT_SCRIPT_VERBOSITY" = "verbose" ] && echo "" || echo "--quiet"'
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Carve-out tasks (release, install secrets, CI orchestration — see § 3)
|
|
150
|
+
do **not** add `silent: true` and do **not** use `{{.QUIET_FLAG}}`.
|
|
151
|
+
|
|
152
|
+
### 5. Validate
|
|
153
|
+
|
|
154
|
+
* Run `python3 scripts/skill_linter.py .agent-src.uncompressed/skills/script-writing/SKILL.md` → 0 FAIL
|
|
155
|
+
* Run `python3 scripts/{your-script}.py --quiet` and the verbose path — exit code 0 on clean, non-zero on failure regardless of flag
|
|
156
|
+
* If the script uses `_lib/script_output`, add a test under `tests/` patterned on `tests/test_script_output.py` — assert `silent` / `minimal` / `verbose` behave per § 2
|
|
157
|
+
* Run the full CI pipeline locally (see `Taskfile.yml` in this repo for the script list) — must exit 0 except for tolerated warnings
|
|
158
|
+
|
|
159
|
+
## Output format
|
|
160
|
+
|
|
161
|
+
1. Script file at `scripts/{name}.py` with `--quiet` accepted
|
|
162
|
+
2. Taskfile wiring with `silent: true` + `{{.QUIET_FLAG}}` (unless carve-out)
|
|
163
|
+
3. Test under `tests/` if `_lib/script_output` is used
|
|
164
|
+
4. Linter output showing 0 FAIL
|
|
165
|
+
|
|
166
|
+
## Gotchas
|
|
167
|
+
|
|
168
|
+
* Forgetting `--quiet` — the silent Taskfile layer wraps the script and the call fails with `unrecognized arguments: --quiet`
|
|
169
|
+
* Gating `❌` failures behind `--quiet` — failures must always print
|
|
170
|
+
* Using raw `print()` for progress lines — drops on `minimal`, no inheritance
|
|
171
|
+
* Adding `silent: true` to a release / install-keys task — bypasses the Hard Floor confirmation
|
|
172
|
+
* Editing `Taskfile.yml`'s `QUIET_FLAG` var — single source of truth, do not duplicate
|
|
173
|
+
* Forgetting that `from _lib.script_output import …` requires the script's resolution to walk up to `scripts/` — copy the `Path(__file__).resolve().parent` pattern from a peer
|
|
174
|
+
|
|
175
|
+
## Frugality Standards
|
|
176
|
+
|
|
177
|
+
Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
|
|
178
|
+
to every script you author. Phase 10 of the charter (settings hooks
|
|
179
|
+
row — `verbosity.script_output` / `verbosity.taskfile_command_echo`)
|
|
180
|
+
is what this skill exists to teach.
|
|
181
|
+
|
|
182
|
+
**Examples in this artifact:**
|
|
183
|
+
- Per the charter's default-terse rule, success lines are gated behind
|
|
184
|
+
`--quiet` so the only thing visible at `minimal` is the end-of-run
|
|
185
|
+
summary or a failure.
|
|
186
|
+
- Per the post-action summary suppression, scripts with multi-step
|
|
187
|
+
output collect via `success()` and emit one `flush_summary()` line.
|
|
188
|
+
- Per the cheap-question check, scripts never prompt unless they hit
|
|
189
|
+
a Hard Floor surface (§ 3 carve-outs).
|
|
190
|
+
|
|
191
|
+
**Pre-save self-check:**
|
|
192
|
+
1. Does every `print("✅ ...")` line sit behind `--quiet` / the helper?
|
|
193
|
+
2. Does the script add `silent: true` + `{{.QUIET_FLAG}}` to its
|
|
194
|
+
Taskfile entry (unless a carve-out)?
|
|
195
|
+
3. Are failure lines (`❌`, exit non-zero) **never** gated by quiet?
|
|
196
|
+
4. Are Iron-Law surfaces using plain `print()` and not the helper?
|
|
197
|
+
|
|
198
|
+
## Do NOT
|
|
199
|
+
|
|
200
|
+
* Do NOT gate `❌` / failure output behind `--quiet`
|
|
201
|
+
* Do NOT use `_lib/script_output` for release confirms or secret prompts
|
|
202
|
+
* Do NOT add `silent: true` to carve-out tasks
|
|
203
|
+
* Do NOT hardcode `print()` for progress in new scripts — use `info()`
|
|
204
|
+
* Do NOT skip the Taskfile wiring — without it the verbosity gates leak
|
|
205
|
+
* Do NOT edit `.agent-src/`, `.augment/`, or `.claude/` projections
|
|
206
|
+
|
|
207
|
+
## Cloud Behavior
|
|
208
|
+
|
|
209
|
+
On cloud surfaces (Claude.ai Web, Skills API) the package's `task`
|
|
210
|
+
runner and `_lib/script_output` are not reachable. The skill still
|
|
211
|
+
applies — with prose-only validation:
|
|
212
|
+
|
|
213
|
+
* Emit the full script + Taskfile snippet as copyable Markdown blocks. Do not attempt to write to disk.
|
|
214
|
+
* Self-check: `--quiet` accepted, failures never gated, success lines gated, helper imports look syntactically right.
|
|
215
|
+
* Tell the user to save under `scripts/{name}.py`, wire the Taskfile entry, and run `task lint-skills && task ci` locally before committing.
|
|
216
|
+
* Skip every reference to running the linter or `task` commands yourself — they only run on the user's machine.
|
|
217
|
+
|
|
218
|
+
## Examples
|
|
219
|
+
|
|
220
|
+
Good description (trigger-shaped, names domain + symptoms):
|
|
221
|
+
|
|
222
|
+
> "Use when adding or editing any script under `scripts/` — `--quiet` flag, `_lib/script_output` helpers, silent Taskfile wiring, Iron-Law carve-outs — even when you just say 'add a check script for X'."
|
|
223
|
+
|
|
224
|
+
Bad description (vague, no trigger):
|
|
225
|
+
|
|
226
|
+
> "Script conventions"
|
|
@@ -295,6 +295,29 @@ utility libs, or simple state managers.
|
|
|
295
295
|
* Renaming a heading to "Procedure:" without numbered steps or `###` sub-headings
|
|
296
296
|
* **Always run `python3 scripts/skill_linter.py` before saving — 0 FAIL required**
|
|
297
297
|
|
|
298
|
+
## Frugality Standards
|
|
299
|
+
|
|
300
|
+
Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
|
|
301
|
+
to every skill you author.
|
|
302
|
+
|
|
303
|
+
**Examples in this artifact:**
|
|
304
|
+
- Per the charter's default-terse rule, the SKILL.md `## Procedure`
|
|
305
|
+
opens with the action ("Run the linter"), not "Let me walk you
|
|
306
|
+
through…".
|
|
307
|
+
- Per the cheap-question check, only emit numbered-options output
|
|
308
|
+
when consequences differ — never as a stylistic choice.
|
|
309
|
+
- Per the post-action summary suppression, the example output ships
|
|
310
|
+
the artifact, not a wrapping `## Status` / `## Summary` block.
|
|
311
|
+
|
|
312
|
+
**Pre-save self-check:**
|
|
313
|
+
1. Does any procedure step open with "Let me", "Now I will", "Found
|
|
314
|
+
it", "OK", or "Alright"?
|
|
315
|
+
2. Does the skill prescribe numbered-options output without a real
|
|
316
|
+
consequence trade-off?
|
|
317
|
+
3. Does the example output include a post-action summary block?
|
|
318
|
+
4. Does the description carry filler ("comprehensive", "advanced",
|
|
319
|
+
"powerful")?
|
|
320
|
+
|
|
298
321
|
## Do NOT
|
|
299
322
|
|
|
300
323
|
* Write documentation-style, pointer-only, or too-broad skills ("Laravel skill")
|
|
@@ -27,6 +27,30 @@ Do NOT use when:
|
|
|
27
27
|
* Catch edge cases **before** they become production bugs.
|
|
28
28
|
* Leave every change with a regression test that runs in CI.
|
|
29
29
|
|
|
30
|
+
## Escalate to a SPARC-style 5-phase workflow when
|
|
31
|
+
|
|
32
|
+
Plain TDD (red → green → refactor) is the right size for **most** work.
|
|
33
|
+
A small subset benefits from a gated 5-phase wrapper —
|
|
34
|
+
**S**pec → **P**seudocode → **A**rchitecture → **R**efine → **C**omplete —
|
|
35
|
+
where each gate produces a written artifact before the next phase runs.
|
|
36
|
+
|
|
37
|
+
Decision tree — escalate if **any** branch is true:
|
|
38
|
+
|
|
39
|
+
* The ticket has **AC count > 5** (the spec itself is non-trivial — write
|
|
40
|
+
it down before testing it).
|
|
41
|
+
* The change **modifies a contract** consumed by ≥1 other module
|
|
42
|
+
(public API signature, persisted schema, event payload, queue message).
|
|
43
|
+
* The change cuts across **≥3 modules / bounded contexts** at once.
|
|
44
|
+
|
|
45
|
+
When escalating: drop the `Spec` artifact in `agents/roadmaps/` (or the
|
|
46
|
+
project's planning location), capture it as an ADR via [`adr-create`](../adr-create/SKILL.md)
|
|
47
|
+
when the decision is load-bearing, then run plain TDD inside each
|
|
48
|
+
`Refine` cycle. Do **not** skip RED→GREEN inside a SPARC phase — the
|
|
49
|
+
wrapper adds gates, not exemptions.
|
|
50
|
+
|
|
51
|
+
For everything else (single-AC ticket, leaf-module change, bug fix),
|
|
52
|
+
stay on plain TDD — the section above.
|
|
53
|
+
|
|
30
54
|
## The core discipline
|
|
31
55
|
|
|
32
56
|
```
|
|
@@ -144,6 +144,14 @@ Check:
|
|
|
144
144
|
* `performance-analysis`
|
|
145
145
|
* `security-audit`
|
|
146
146
|
|
|
147
|
+
### Ingestion preprocessor
|
|
148
|
+
|
|
149
|
+
* `markitdown` — when the project ships PDFs, DOCX, XLSX, PPTX, EPUB,
|
|
150
|
+
images, or audio that need to feed into any of the analysis skills
|
|
151
|
+
above. Convert first via the upstream `markitdown-mcp` server, then
|
|
152
|
+
route the resulting Markdown into the relevant deep-dive skill.
|
|
153
|
+
Never read a binary office format raw.
|
|
154
|
+
|
|
147
155
|
## When to add a new framework analysis skill
|
|
148
156
|
|
|
149
157
|
A framework gets its own `project-analysis-*` skill ONLY if:
|
|
@@ -311,6 +311,69 @@ commands:
|
|
|
311
311
|
# repo (gitignored). Maintainer-targeted feature; consumers leave it
|
|
312
312
|
# off. See `.augment/contexts/contracts/artifact-engagement-flow.md`
|
|
313
313
|
# (once Phase 3 of road-to-artifact-engagement-telemetry lands).
|
|
314
|
+
# --- Verbosity (token frugality) ---
|
|
315
|
+
#
|
|
316
|
+
# Five toggles controlling what the agent shows after acting.
|
|
317
|
+
# Default = terse. Flip to true to restore legacy verbose output.
|
|
318
|
+
# See agents/roadmaps/road-to-token-frugality.md for the full rationale
|
|
319
|
+
# and the contexts/contracts/frugality-charter.md for the writer-side
|
|
320
|
+
# standard.
|
|
321
|
+
verbosity:
|
|
322
|
+
# Show generated commit messages, PR titles/bodies, branch names
|
|
323
|
+
# before acting. false = use generated content directly.
|
|
324
|
+
preview_artifacts: false
|
|
325
|
+
|
|
326
|
+
# Confirmation prompts for routine workflow steps when there is
|
|
327
|
+
# one obvious answer ("looks good — commit?"). Iron-Law gates
|
|
328
|
+
# (commit-policy, scope-control git-ops, non-destructive) ALWAYS
|
|
329
|
+
# ask regardless of this flag.
|
|
330
|
+
routine_confirmations: false
|
|
331
|
+
|
|
332
|
+
# Offer "run AI Council on this?" inside delivery commands
|
|
333
|
+
# (/feature-plan, /review-changes, /roadmap-create). Council
|
|
334
|
+
# commands themselves (/council, /create-pr → already excluded)
|
|
335
|
+
# are unaffected.
|
|
336
|
+
offer_council_in_delivery: false
|
|
337
|
+
|
|
338
|
+
# Multi-line status / summary blocks after a successful action.
|
|
339
|
+
# off | minimal | full — default minimal (one-line confirmation).
|
|
340
|
+
post_action_reports: minimal
|
|
341
|
+
|
|
342
|
+
# Intent announcements ("Let me check…", "Now I will…", "Found
|
|
343
|
+
# it") in skill bodies. false = act and emit the result.
|
|
344
|
+
intent_announcements: false
|
|
345
|
+
|
|
346
|
+
# Script stdout chatter from `scripts/*.py`, `scripts/*.sh`, and
|
|
347
|
+
# `.augment/scripts/`. Read by the helper module
|
|
348
|
+
# `scripts/_lib/script_output.py`.
|
|
349
|
+
# silent = stderr only; success = no output
|
|
350
|
+
# minimal = one summary line per script (default)
|
|
351
|
+
# verbose = pre-Phase-10 behaviour (per-step prints)
|
|
352
|
+
# Override per-process: AGENT_SCRIPT_VERBOSITY={silent,minimal,verbose}
|
|
353
|
+
# Iron-Law surfaces (release confirms, install secrets prompts,
|
|
354
|
+
# error markers) ignore this key and stay loud.
|
|
355
|
+
script_output: minimal
|
|
356
|
+
|
|
357
|
+
# Suppress the `task: [name] cmd...` echo line that Taskfile prints
|
|
358
|
+
# before each task body. false = keep echoes (default Taskfile
|
|
359
|
+
# behaviour). true = the Taskfile sets `silent: true` on every
|
|
360
|
+
# safe task per Phase 10.3.
|
|
361
|
+
taskfile_command_echo: false
|
|
362
|
+
|
|
363
|
+
# --- Caveman speak (authoring-only) ---
|
|
364
|
+
#
|
|
365
|
+
# Caveman-style compression scope for newly authored prose. The
|
|
366
|
+
# compile-time toggle (`caveman.speak`) is added in Phase 8.
|
|
367
|
+
# `speak_scope` lands now so the charter and consumers can pin it.
|
|
368
|
+
caveman:
|
|
369
|
+
# speak_scope = how widely caveman-speak grammar applies in chat
|
|
370
|
+
# off = no caveman grammar in output (compile-time still
|
|
371
|
+
# governed by caveman.speak)
|
|
372
|
+
# prose_only = caveman in body prose; numbered options +
|
|
373
|
+
# Iron-Law-literal blocks stay full prose
|
|
374
|
+
# aggressive = caveman everywhere except Iron-Law literals
|
|
375
|
+
speak_scope: prose_only
|
|
376
|
+
|
|
314
377
|
telemetry:
|
|
315
378
|
artifact_engagement:
|
|
316
379
|
# Master switch. `false` (default) produces zero file IO and zero
|
|
@@ -342,6 +405,10 @@ Personal and project-level settings (initial file written by
|
|
|
342
405
|
**Key paths use dot-notation** to denote nesting: `personal.user_name`
|
|
343
406
|
lives under `personal:` in YAML.
|
|
344
407
|
|
|
408
|
+
The `verbosity.*` and `caveman.speak_scope` rows are summarized below;
|
|
409
|
+
the canonical narrative lives in
|
|
410
|
+
[`docs/customization.md` § Verbosity](../../docs/customization.md#verbosity).
|
|
411
|
+
|
|
345
412
|
| Key path | Values | Default | Description |
|
|
346
413
|
|---|---|---|---|
|
|
347
414
|
| `cost_profile` | `minimal`, `balanced`, `full`, `custom` | `minimal` | Selects which agent surfaces are active. See [Cost profiles](#cost-profiles). |
|
|
@@ -386,6 +453,12 @@ lives under `personal:` in YAML.
|
|
|
386
453
|
| `commands.suggestion.max_options` | integer | `4` | Max number of command suggestions before the always-present "run as-is" option (total rendered = `max_options + 1`). |
|
|
387
454
|
| `commands.suggestion.blocklist` | list of command names | `[]` | Commands that never appear as a suggestion. They still work when typed explicitly. |
|
|
388
455
|
| `commands.create_pr.preview_description` | `true`, `false` | `false` | When `false`: `/create-pr` skips the title/body preview + adjust loop and uses the generated content directly. Saves agent tokens. When `true`: show title and body before creating and ask for adjustments. `/create-pr:description-only` always previews regardless of this setting. |
|
|
456
|
+
| `verbosity.preview_artifacts` | `true`, `false` | `false` | Show generated commit messages, PR titles/bodies, branch names before acting. `false` = use generated content directly. See [`road-to-token-frugality`](../../../agents/roadmaps/road-to-token-frugality.md) Phase 2/3. |
|
|
457
|
+
| `verbosity.routine_confirmations` | `true`, `false` | `false` | Confirmation prompts for routine workflow steps when there is one obvious answer ("looks good — commit?"). Iron-Law gates (`commit-policy`, `scope-control` git-ops, `non-destructive-by-default`) ALWAYS ask regardless. |
|
|
458
|
+
| `verbosity.offer_council_in_delivery` | `true`, `false` | `false` | Offer "run AI Council on this?" inside delivery commands (`/feature-plan`, `/review-changes`, `/roadmap-create`). Council commands themselves are unaffected. |
|
|
459
|
+
| `verbosity.post_action_reports` | `off`, `minimal`, `full` | `minimal` | Multi-line status / summary blocks after a successful action. `off` = no report; `minimal` = one-line confirmation; `full` = bullet list. |
|
|
460
|
+
| `verbosity.intent_announcements` | `true`, `false` | `false` | Intent announcements ("Let me check…", "Now I will…", "Found it") in skill bodies. `false` = act and emit the result. |
|
|
461
|
+
| `caveman.speak_scope` | `off`, `prose_only`, `aggressive` | `prose_only` | How widely caveman-speak grammar applies in chat. `off` = no caveman grammar; `prose_only` = caveman in body prose, numbered options + Iron-Law-literal blocks stay full prose; `aggressive` = caveman everywhere except Iron-Law literals. Compile-time toggle (`caveman.speak`) lands in Phase 8. |
|
|
389
462
|
| `telemetry.artifact_engagement.enabled` | `true`, `false` | `false` | Master switch for the artefact engagement log. Default-off; zero file IO and zero token cost when `false`. Maintainer-targeted; consumers leave it off. |
|
|
390
463
|
| `telemetry.artifact_engagement.granularity` | `task`, `phase-step`, `tool-call` | `task` | Boundary at which events are recorded. `tool-call` is expensive — opt-in only. |
|
|
391
464
|
| `telemetry.artifact_engagement.record.consulted` | `true`, `false` | `true` | When `true`: record artefacts loaded into context. |
|
|
@@ -67,16 +67,21 @@ suggestion:
|
|
|
67
67
|
|
|
68
68
|
### N. Present findings
|
|
69
69
|
|
|
70
|
-
<!-- For audit/analysis commands:
|
|
71
|
-
For action commands:
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
70
|
+
<!-- For audit/analysis commands: state findings, then act or hand back.
|
|
71
|
+
For action commands: state what was done.
|
|
72
|
+
|
|
73
|
+
Default-terse per the
|
|
74
|
+
[Frugality Charter](../contexts/contracts/frugality-charter.md):
|
|
75
|
+
no preview-then-confirm pair, no "Ready to proceed?" gate, no
|
|
76
|
+
numbered options unless options differ in *consequence* (per
|
|
77
|
+
`no-cheap-questions § Pre-Send Self-Check`). Routine confirmations
|
|
78
|
+
are governed by `verbosity.routine_confirmations: false` (default).
|
|
79
|
+
|
|
80
|
+
Only emit a numbered-options block when ALL of:
|
|
81
|
+
1. Two or more options carry distinct consequences (not sequencing/format),
|
|
82
|
+
2. The user has not fenced the next step (per `scope-control § fenced step`),
|
|
83
|
+
3. No option violates `commit-policy`, `scope-control § git-ops`,
|
|
84
|
+
or `non-destructive-by-default`. -->
|
|
80
85
|
|
|
81
86
|
## Rules
|
|
82
87
|
|
|
@@ -85,6 +85,12 @@ routes_to:
|
|
|
85
85
|
|
|
86
86
|
# {Rule Title}
|
|
87
87
|
|
|
88
|
+
<!-- Default-terse per the
|
|
89
|
+
[Frugality Charter](../contexts/contracts/frugality-charter.md):
|
|
90
|
+
start with the obligation. No "This rule explains…" / "The purpose of
|
|
91
|
+
this rule is…" / narrative intro before the Iron Law. Body sections
|
|
92
|
+
are pointers, not playbooks — defer detail to skills/guidelines. -->
|
|
93
|
+
|
|
88
94
|
**Iron Law.** {The single non-negotiable behavior the rule enforces.}
|
|
89
95
|
|
|
90
96
|
## When this fires
|
|
@@ -136,6 +136,38 @@ Do NOT use when:
|
|
|
136
136
|
- Do NOT {anti-pattern 2}.
|
|
137
137
|
- Do NOT {anti-pattern 3}.
|
|
138
138
|
|
|
139
|
+
<!-- FRUGALITY STANDARDS (writer skills only — REQUIRED for skills whose
|
|
140
|
+
name ends in `-writing`, `-authoring`, or `-create`, AND for any
|
|
141
|
+
skill on the `FRUGALITY_WRITER_SKILLS` allowlist in
|
|
142
|
+
`scripts/skill_linter.py`. Mid-/untiered non-writer skills MUST
|
|
143
|
+
remove this section entirely.
|
|
144
|
+
|
|
145
|
+
Layer-1 of the linter checks for:
|
|
146
|
+
1. The literal H2 `## Frugality Standards`,
|
|
147
|
+
2. A markdown link matching the regex
|
|
148
|
+
`\[[^\]]+\]\([^)]*frugality-charter\.md[^)]*\)`.
|
|
149
|
+
|
|
150
|
+
Body shape — single charter cite, then 3–5 decidable pre-save
|
|
151
|
+
questions framed as *applying the charter*, not parallel rules
|
|
152
|
+
(council Pass #4 finding 0.B):
|
|
153
|
+
|
|
154
|
+
## Frugality Standards
|
|
155
|
+
|
|
156
|
+
Per the [Frugality Charter](../../contexts/contracts/frugality-charter.md),
|
|
157
|
+
this writer applies the default-terse standard: no narrative intros,
|
|
158
|
+
no preview-then-confirm gates, no numbered options without a real
|
|
159
|
+
trade-off.
|
|
160
|
+
|
|
161
|
+
Pre-save self-check:
|
|
162
|
+
1. Does every body section start with the obligation, not an intro?
|
|
163
|
+
2. Are numbered options absent unless options differ in *consequence*?
|
|
164
|
+
3. Is every cited rule linked, not restated?
|
|
165
|
+
4. {artifact-specific question — e.g., for `command-writing`:
|
|
166
|
+
"Does the command honor `verbosity.routine_confirmations: false`?"}
|
|
167
|
+
5. {artifact-specific question — e.g., for `rule-writing`:
|
|
168
|
+
"Does the rule body open with the Iron Law, no preamble?"}
|
|
169
|
+
-->
|
|
170
|
+
|
|
139
171
|
<!-- SENIOR-TIER STUB BLOCKS (delete entire section if not `tier: senior`):
|
|
140
172
|
Senior-tier skills (frontmatter `tier: senior`) require four extra
|
|
141
173
|
blocks per `.agent-src.uncompressed/rules/skill-quality.md` §
|
|
@@ -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": "1.
|
|
9
|
+
"version": "1.24.0"
|
|
10
10
|
},
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
"source": "./",
|
|
16
16
|
"strict": false,
|
|
17
17
|
"skills": [
|
|
18
|
+
"./.claude/skills/adr-create",
|
|
18
19
|
"./.claude/skills/adversarial-review",
|
|
19
20
|
"./.claude/skills/agent-docs-writing",
|
|
20
21
|
"./.claude/skills/agent-handoff",
|
|
@@ -38,13 +39,13 @@
|
|
|
38
39
|
"./.claude/skills/bug-analyzer",
|
|
39
40
|
"./.claude/skills/bug-fix",
|
|
40
41
|
"./.claude/skills/bug-investigate",
|
|
42
|
+
"./.claude/skills/challenge-me",
|
|
43
|
+
"./.claude/skills/challenge-me-vision",
|
|
44
|
+
"./.claude/skills/challenge-me-with-docs",
|
|
41
45
|
"./.claude/skills/chat-history",
|
|
42
46
|
"./.claude/skills/chat-history-import",
|
|
43
47
|
"./.claude/skills/chat-history-learn",
|
|
44
48
|
"./.claude/skills/chat-history-show",
|
|
45
|
-
"./.claude/skills/challenge-me",
|
|
46
|
-
"./.claude/skills/challenge-me-vision",
|
|
47
|
-
"./.claude/skills/challenge-me-with-docs",
|
|
48
49
|
"./.claude/skills/check-current-md",
|
|
49
50
|
"./.claude/skills/check-refs",
|
|
50
51
|
"./.claude/skills/code-refactoring",
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
"./.claude/skills/copilot-agents-optimization",
|
|
67
68
|
"./.claude/skills/copilot-agents-optimize",
|
|
68
69
|
"./.claude/skills/copilot-config",
|
|
70
|
+
"./.claude/skills/cost-report",
|
|
69
71
|
"./.claude/skills/council",
|
|
70
72
|
"./.claude/skills/council-default",
|
|
71
73
|
"./.claude/skills/council-design",
|
|
@@ -140,6 +142,7 @@
|
|
|
140
142
|
"./.claude/skills/lint-skills",
|
|
141
143
|
"./.claude/skills/livewire",
|
|
142
144
|
"./.claude/skills/logging-monitoring",
|
|
145
|
+
"./.claude/skills/markitdown",
|
|
143
146
|
"./.claude/skills/mcp",
|
|
144
147
|
"./.claude/skills/md-language-check",
|
|
145
148
|
"./.claude/skills/memory",
|
|
@@ -172,6 +175,7 @@
|
|
|
172
175
|
"./.claude/skills/package-test",
|
|
173
176
|
"./.claude/skills/performance",
|
|
174
177
|
"./.claude/skills/performance-analysis",
|
|
178
|
+
"./.claude/skills/persona-writing",
|
|
175
179
|
"./.claude/skills/pest-testing",
|
|
176
180
|
"./.claude/skills/php-coder",
|
|
177
181
|
"./.claude/skills/php-debugging",
|
|
@@ -211,9 +215,11 @@
|
|
|
211
215
|
"./.claude/skills/roadmap-process-full",
|
|
212
216
|
"./.claude/skills/roadmap-process-phase",
|
|
213
217
|
"./.claude/skills/roadmap-process-step",
|
|
218
|
+
"./.claude/skills/roadmap-writing",
|
|
214
219
|
"./.claude/skills/rtk-output-filtering",
|
|
215
220
|
"./.claude/skills/rule-compliance-audit",
|
|
216
221
|
"./.claude/skills/rule-writing",
|
|
222
|
+
"./.claude/skills/script-writing",
|
|
217
223
|
"./.claude/skills/security",
|
|
218
224
|
"./.claude/skills/security-audit",
|
|
219
225
|
"./.claude/skills/sentry-integration",
|
package/AGENTS.md
CHANGED
|
@@ -80,6 +80,17 @@ No application code or framework runtime (no Laravel / Symfony / Next.js /
|
|
|
80
80
|
Express). The `composer.json` / `package.json` are thin distribution
|
|
81
81
|
manifests.
|
|
82
82
|
|
|
83
|
+
**Recommended ingestion path for non-text formats.** PDF, DOCX, XLSX,
|
|
84
|
+
PPTX, EPUB, image, and audio inputs route through the
|
|
85
|
+
[`markitdown`](.agent-src/skills/markitdown/SKILL.md) skill — a thin
|
|
86
|
+
markdown-only wrapper over Microsoft's MIT-licensed `markitdown-mcp`
|
|
87
|
+
server (peer-side install, zero Python in this package). The skill
|
|
88
|
+
ships the four-layer security defense (skill checklist · narrow API ·
|
|
89
|
+
Docker read-only · localhost binding) and a calibrated token claim
|
|
90
|
+
(3-5× comprehension on text-heavy, 10-50× on image-heavy). Measure
|
|
91
|
+
locally with `python3 scripts/measure_markitdown_lift.py` against
|
|
92
|
+
`tests/fixtures/markitdown-corpus/`.
|
|
93
|
+
|
|
83
94
|
**Cognition-only floor for Wings 2–4.** Wings 2, 3, and 4 enforce a
|
|
84
95
|
no-SaaS-auth, no-vendor-SDK, no-stage-prescription floor: cognition
|
|
85
96
|
artifacts (markdown tables, scoring rubrics, walkthroughs) must work
|
|
@@ -167,9 +178,9 @@ appends to `agents/.rule-budget-history.jsonl`.
|
|
|
167
178
|
|
|
168
179
|
```
|
|
169
180
|
.agent-src.uncompressed/ ← edit here
|
|
170
|
-
skills/ (
|
|
171
|
-
rules/ (
|
|
172
|
-
commands/ (
|
|
181
|
+
skills/ (141 skills)
|
|
182
|
+
rules/ (60 rules)
|
|
183
|
+
commands/ (103 commands)
|
|
173
184
|
personas/ (7 personas)
|
|
174
185
|
templates/ (AGENTS.md, copilot-instructions.md, skill.md, …)
|
|
175
186
|
contexts/
|
package/CHANGELOG.md
CHANGED
|
@@ -318,6 +318,67 @@ our recommendation order, not its support status.
|
|
|
318
318
|
users" tension without removing any path that an existing user
|
|
319
319
|
might rely on.
|
|
320
320
|
|
|
321
|
+
## [1.24.0](https://github.com/event4u-app/agent-config/compare/1.23.0...1.24.0) (2026-05-08)
|
|
322
|
+
|
|
323
|
+
### Features
|
|
324
|
+
|
|
325
|
+
* **rules:** harden roadmap-progress-sync — real-time checkbox cadence ([bdaaf0c](https://github.com/event4u-app/agent-config/commit/bdaaf0caff6d312ab87aabc8d170793cbbc6513a))
|
|
326
|
+
* **measurement:** markitdown lift benchmark + corpus ([e606c7a](https://github.com/event4u-app/agent-config/commit/e606c7afae9977ab3c19f2a7f99a6ec18b31b483))
|
|
327
|
+
* **skill:** add markitdown skill with four-layer defense ([21514f4](https://github.com/event4u-app/agent-config/commit/21514f4bf8b77d00480fc5dfab54a1a04e34f4f1))
|
|
328
|
+
|
|
329
|
+
### Bug Fixes
|
|
330
|
+
|
|
331
|
+
* drop markitdown roadmap link + trim README to 500 lines ([da8240d](https://github.com/event4u-app/agent-config/commit/da8240d6fce74555d08a8bfb4f4d15379d10de54))
|
|
332
|
+
* **refs:** update markitdown roadmap path to archive/ after archival ([f7679de](https://github.com/event4u-app/agent-config/commit/f7679debb851bd721f671e26fe962186e56a1e86))
|
|
333
|
+
|
|
334
|
+
### Documentation
|
|
335
|
+
|
|
336
|
+
* feature markitdown in README, AGENTS, architecture ([fa1babc](https://github.com/event4u-app/agent-config/commit/fa1babcb344c5f090aa4cea0eafb58e5732cf872))
|
|
337
|
+
* cross-link markitdown from analysis and learning skills ([14f9d72](https://github.com/event4u-app/agent-config/commit/14f9d7290dbcb341d2ff97280dbfb54b32e39057))
|
|
338
|
+
|
|
339
|
+
### Chores
|
|
340
|
+
|
|
341
|
+
* **generate-tools:** refresh .windsurfrules after roadmap-progress-sync body expansion ([3fdba11](https://github.com/event4u-app/agent-config/commit/3fdba11cd4e91425a05ef9ad82b0e7c611180668))
|
|
342
|
+
* **compress:** sync .agent-src/ with hardened roadmap-progress-sync rule ([30e7d1a](https://github.com/event4u-app/agent-config/commit/30e7d1ab455da823afbe7602f01d543d3fe91c5d))
|
|
343
|
+
* **roadmap:** archive markitdown-adoption + refresh progress dashboard ([5481d90](https://github.com/event4u-app/agent-config/commit/5481d9025f4c85f33e11533099cf725eeb306455))
|
|
344
|
+
* add skills-provenance registry for upstream attribution ([65c2eeb](https://github.com/event4u-app/agent-config/commit/65c2eeb3d1c9d0f86957757ce22221ed0e255292))
|
|
345
|
+
* **roadmap:** harden process-full to ignore horizon markers ([36d0fa6](https://github.com/event4u-app/agent-config/commit/36d0fa6c263721618999b7fa27ddb9cb336dd6c2))
|
|
346
|
+
|
|
347
|
+
## [1.23.0](https://github.com/event4u-app/agent-config/compare/1.22.0...1.23.0) (2026-05-08)
|
|
348
|
+
|
|
349
|
+
### Features
|
|
350
|
+
|
|
351
|
+
* **skills:** add script-writing skill for scripts/ conventions ([1f8655d](https://github.com/event4u-app/agent-config/commit/1f8655d6cbf007410e3846ab502eea5745a7f66f))
|
|
352
|
+
* **scripts:** Phase 10.7 --quiet flag + silent Taskfile + caveman compile-time toggle ([1d319e6](https://github.com/event4u-app/agent-config/commit/1d319e61a3c782eb5c86075f34275306a67c621c))
|
|
353
|
+
* **linter:** frugality charter writer-cite validator + writer skill citations ([0e34709](https://github.com/event4u-app/agent-config/commit/0e3470965d5e2f4a8b11f27137d4ba43d2471be2))
|
|
354
|
+
* **verbosity:** add verbosity toggles + gate routine outputs ([580d4cc](https://github.com/event4u-app/agent-config/commit/580d4cc2d1f4d4b091b6128f0a29d1f7e619895d))
|
|
355
|
+
* **roadmap-sync:** pre-commit backstop blocks stale dashboard ([c577fc0](https://github.com/event4u-app/agent-config/commit/c577fc0aabc13faaae64c88d20d8ca66338ae5fc))
|
|
356
|
+
* **create-pr:** drop council-review prompt ([e694811](https://github.com/event4u-app/agent-config/commit/e694811f7ca06b3db275cc70e83e6dbc4db72e42))
|
|
357
|
+
* cite SPARC escalation thresholds in test-driven-development ([836f2ed](https://github.com/event4u-app/agent-config/commit/836f2edc2c288bcc7f878e97f42de954add8bb5b))
|
|
358
|
+
* add mcp-request-signing guideline with HTTP-bridge appendix ([2ab67cd](https://github.com/event4u-app/agent-config/commit/2ab67cd401333ea61f47d43e952e7b07958feff3))
|
|
359
|
+
* add cost-report command with token cost tracking ([262d865](https://github.com/event4u-app/agent-config/commit/262d865072d613647a439e89f83ded7334b60b1b))
|
|
360
|
+
* add adr-create skill with index regeneration script ([7225105](https://github.com/event4u-app/agent-config/commit/7225105797d6810cad75bfa851f02b100e41ba29))
|
|
361
|
+
|
|
362
|
+
### Bug Fixes
|
|
363
|
+
|
|
364
|
+
* **docs:** bump command counts to 103 after cost-report addition ([2810fa5](https://github.com/event4u-app/agent-config/commit/2810fa5a54b7099123ae65e6c7c1325430bf3b77))
|
|
365
|
+
|
|
366
|
+
### Documentation
|
|
367
|
+
|
|
368
|
+
* sync counts (139 skills, 60 rules) + meta cleanups ([00c8b21](https://github.com/event4u-app/agent-config/commit/00c8b211edbc86cbe2f886107227e6bd46049c3b))
|
|
369
|
+
* codify defer-with-trigger harvest policy ([b30dcd7](https://github.com/event4u-app/agent-config/commit/b30dcd72d0ffbd1fb2dbdd8ca28493a5b05a6bed))
|
|
370
|
+
|
|
371
|
+
### Refactoring
|
|
372
|
+
|
|
373
|
+
* **rules:** apply trim-frugality-canon Phase 1-3 trims ([ea1828a](https://github.com/event4u-app/agent-config/commit/ea1828af7bc69426386f6852cb69891309dce65f))
|
|
374
|
+
|
|
375
|
+
### Chores
|
|
376
|
+
|
|
377
|
+
* regenerate stale generated mirrors ([ea52e94](https://github.com/event4u-app/agent-config/commit/ea52e94415c4db5598e91d001e0fbeee10cae9be))
|
|
378
|
+
* regenerate auto-generated artefacts ([fbe7d9e](https://github.com/event4u-app/agent-config/commit/fbe7d9ef137c9e584d7f88ce660afe29ab1a8d00))
|
|
379
|
+
* bump skill/command/guideline counts and compression hashes ([18f4fad](https://github.com/event4u-app/agent-config/commit/18f4fad2372fd4347210199986909319c24ea0ec))
|
|
380
|
+
* archive ruflo-adoption, move caveman-integration to skipped ([4c6c1eb](https://github.com/event4u-app/agent-config/commit/4c6c1eb1e00356421e0038704a82e1f10ac9a3e5))
|
|
381
|
+
|
|
321
382
|
## [1.22.0](https://github.com/event4u-app/agent-config/compare/1.21.0...1.22.0) (2026-05-07)
|
|
322
383
|
|
|
323
384
|
### Features
|