@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.
Files changed (100) hide show
  1. package/.agent-src/commands/agents/cleanup.md +31 -17
  2. package/.agent-src/commands/analyze-reference-repo.md +3 -0
  3. package/.agent-src/commands/commit/in-chunks.md +30 -10
  4. package/.agent-src/commands/commit.md +46 -6
  5. package/.agent-src/commands/compress.md +19 -13
  6. package/.agent-src/commands/cost-report.md +120 -0
  7. package/.agent-src/commands/create-pr/description-only.md +8 -0
  8. package/.agent-src/commands/create-pr.md +95 -80
  9. package/.agent-src/commands/feature/plan.md +13 -7
  10. package/.agent-src/commands/memory/add.md +16 -8
  11. package/.agent-src/commands/memory/promote.md +17 -9
  12. package/.agent-src/commands/optimize/rtk.md +16 -11
  13. package/.agent-src/commands/prepare-for-review.md +12 -6
  14. package/.agent-src/commands/project-analyze.md +31 -20
  15. package/.agent-src/commands/review-changes.md +24 -15
  16. package/.agent-src/commands/roadmap/create.md +14 -9
  17. package/.agent-src/commands/roadmap/process-full.md +41 -1
  18. package/.agent-src/contexts/contracts/frugality-charter.md +57 -0
  19. package/.agent-src/contexts/execution/roadmap-process-loop.md +29 -6
  20. package/.agent-src/rules/architecture.md +9 -0
  21. package/.agent-src/rules/ask-when-uncertain.md +3 -13
  22. package/.agent-src/rules/caveman-speak.md +78 -0
  23. package/.agent-src/rules/direct-answers.md +5 -14
  24. package/.agent-src/rules/markdown-safe-codeblocks.md +6 -7
  25. package/.agent-src/rules/no-cheap-questions.md +4 -14
  26. package/.agent-src/rules/roadmap-progress-sync.md +37 -3
  27. package/.agent-src/rules/token-efficiency.md +5 -7
  28. package/.agent-src/skills/adr-create/SKILL.md +197 -0
  29. package/.agent-src/skills/agent-docs-writing/SKILL.md +23 -1
  30. package/.agent-src/skills/command-writing/SKILL.md +23 -0
  31. package/.agent-src/skills/context-authoring/SKILL.md +23 -0
  32. package/.agent-src/skills/conventional-commits-writing/SKILL.md +23 -0
  33. package/.agent-src/skills/guideline-writing/SKILL.md +22 -0
  34. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +9 -0
  35. package/.agent-src/skills/markitdown/SKILL.md +239 -0
  36. package/.agent-src/skills/persona-writing/SKILL.md +153 -0
  37. package/.agent-src/skills/readme-writing/SKILL.md +20 -0
  38. package/.agent-src/skills/readme-writing-package/SKILL.md +19 -0
  39. package/.agent-src/skills/roadmap-writing/SKILL.md +157 -0
  40. package/.agent-src/skills/rule-writing/SKILL.md +22 -0
  41. package/.agent-src/skills/script-writing/SKILL.md +226 -0
  42. package/.agent-src/skills/skill-writing/SKILL.md +23 -0
  43. package/.agent-src/skills/test-driven-development/SKILL.md +24 -0
  44. package/.agent-src/skills/universal-project-analysis/SKILL.md +8 -0
  45. package/.agent-src/templates/agent-settings.md +73 -0
  46. package/.agent-src/templates/command.md +15 -10
  47. package/.agent-src/templates/rule.md +6 -0
  48. package/.agent-src/templates/skill.md +32 -0
  49. package/.claude-plugin/marketplace.json +10 -4
  50. package/AGENTS.md +14 -3
  51. package/CHANGELOG.md +61 -0
  52. package/README.md +5 -5
  53. package/docs/architecture.md +4 -4
  54. package/docs/catalog.md +25 -8
  55. package/docs/customization.md +72 -0
  56. package/docs/decisions/INDEX.md +15 -0
  57. package/docs/getting-started.md +2 -2
  58. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +27 -19
  59. package/docs/guidelines/agent-infra/carve-out-predicates.md +17 -0
  60. package/docs/guidelines/agent-infra/mcp-request-signing.md +199 -0
  61. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +11 -4
  62. package/package.json +1 -1
  63. package/scripts/_lib/__init__.py +5 -0
  64. package/scripts/_lib/script_output.py +140 -0
  65. package/scripts/adr/regenerate_index.py +79 -0
  66. package/scripts/ai_council/one_off_archive/2026-05/_one_off_add_quiet.py +149 -0
  67. package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +33 -0
  68. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +36 -0
  69. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +26 -0
  70. package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +41 -0
  71. package/scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py +98 -0
  72. package/scripts/check_augmentignore.py +4 -1
  73. package/scripts/check_command_count_messaging.py +4 -1
  74. package/scripts/check_compressed_paths.py +4 -1
  75. package/scripts/check_council_layout.py +4 -1
  76. package/scripts/check_council_references.py +4 -1
  77. package/scripts/check_iron_law_prominence.py +3 -1
  78. package/scripts/check_md_language.py +3 -1
  79. package/scripts/check_memory_proposal.py +3 -1
  80. package/scripts/check_public_catalog_links.py +4 -1
  81. package/scripts/check_reply_consistency.py +8 -2
  82. package/scripts/check_roadmap_trackable.py +4 -1
  83. package/scripts/compile_router.py +27 -0
  84. package/scripts/compress.py +33 -19
  85. package/scripts/cost/budget.mjs +152 -0
  86. package/scripts/cost/track.mjs +144 -0
  87. package/scripts/first-run.sh +3 -9
  88. package/scripts/install-hooks.sh +19 -1
  89. package/scripts/install.py +17 -12
  90. package/scripts/install.sh +19 -8
  91. package/scripts/lint_examples.py +6 -2
  92. package/scripts/lint_handoffs.py +4 -1
  93. package/scripts/lint_load_context.py +4 -1
  94. package/scripts/lint_roadmap_complexity.py +6 -2
  95. package/scripts/lint_rule_interactions.py +4 -1
  96. package/scripts/lint_rule_tiers.py +4 -1
  97. package/scripts/measure_frugality_savings.py +164 -0
  98. package/scripts/measure_markitdown_lift.py +127 -0
  99. package/scripts/runtime_dispatcher.py +11 -0
  100. package/scripts/skill_linter.py +207 -2
@@ -20,17 +20,9 @@ NEVER OFFER NUMBERED CHOICES WITHOUT A REAL TRADE-OFF.
20
20
 
21
21
  ## What counts as cheap
22
22
 
23
- - **Sequencing**"Step 2 or 3 next?" when the roadmap orders them.
24
- - **Format-only** — "Table or paragraph?"; no semantic trade-off.
25
- - **Commit asks** forbidden by [`commit-policy`](commit-policy.md).
26
- - **CI / test asks** — [`verify-before-complete`](verify-before-complete.md) decides, not the user.
27
- - **Fenced-step re-asks** — "Start Phase 1?" after *"plan only"*; see [`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates).
28
- - **Iron-Law option** — breaches `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default`.
29
- - **Context-derived** — answer follows from prior turn / standing instruction / roadmap; act, state the assumption inline.
30
- - **Dominant option** — one choice obviously correct; alternatives carry no upside.
31
- - **Re-ask after decline** — forbidden per [`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task).
32
-
33
- Examples per class: [`asking-and-brevity-examples § cheap-question-catalog`](../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
23
+ Nine classessequencing · format-only · commit asks (forbidden by [`commit-policy`](commit-policy.md)) · CI / test asks ([`verify-before-complete`](verify-before-complete.md) decides) · fenced-step re-asks ([`scope-control § fenced step`](scope-control.md#fenced-step--user-set-review-gates)) · Iron-Law option (breaches `commit-policy`, `scope-control § git-ops`, or `non-destructive-by-default`) · context-derived · dominant option · re-ask after decline ([`scope-control § decline = silence`](scope-control.md#decline--silence--no-re-asking-on-the-same-task)).
24
+
25
+ Per-class patterns and examples: [`asking-and-brevity-examples § cheap-question-catalog`](../docs/guidelines/agent-infra/asking-and-brevity-examples.md#cheap-question-class-catalog--extended-examples).
34
26
 
35
27
  ## Pre-Send Self-Check — MANDATORY before every question
36
28
 
@@ -55,6 +47,4 @@ Any "yes" → **do not ask**. Pick the dominant path, state assumption inline (*
55
47
 
56
48
  In doubt → ask. This rule narrows asking, never widens silence.
57
49
 
58
- ## Interactions
59
-
60
- [`ask-when-uncertain`](ask-when-uncertain.md) · [`autonomous-execution`](autonomous-execution.md) · [`commit-policy`](commit-policy.md) · [`scope-control`](scope-control.md) · [`non-destructive-by-default`](non-destructive-by-default.md) · [`user-interaction`](user-interaction.md) · [`direct-answers`](direct-answers.md).
50
+ Cross-rule index: [`frugality-charter § cross-references`](../contexts/contracts/frugality-charter.md#cross-references--frugality-canon-rules).
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  tier: "1"
4
- description: "Any touch to agents/roadmaps/ — create/rename/delete/move, edit checkboxes ([x]/[~]/[-]), add/rename/remove phases must regenerate dashboard and archive if 0 open items, same response"
4
+ description: "Any roadmap touch (file move, checkbox flip, phase change) regens dashboard same response; archive at 0 open. Autonomous runs flip each checkbox the SAME reply, never batched at the end."
5
5
  source: package
6
6
  triggers:
7
7
  - path_prefix: "agents/roadmaps/"
@@ -11,7 +11,41 @@ routes_to:
11
11
 
12
12
  # Roadmap Progress Sync
13
13
 
14
- **Iron Law.** Any touch to `agents/roadmaps/` regenerates the dashboard in the same response; archive the roadmap when 0 open items remain.
14
+ ## Iron Law 1 dashboard sync, same response
15
15
 
16
- Body migrated to `guideline:agent-infra/roadmap-progress-mechanics` (per P4 of `road-to-kernel-and-router.md`).
16
+ ```
17
+ ANY ROADMAP TOUCH → REGENERATE THE DASHBOARD, SAME RESPONSE.
18
+ NO EXCEPTIONS. NO "I'LL DO IT AT THE END". NO BATCHING ACROSS TURNS.
19
+ ```
20
+
21
+ Roadmap touch = create / rename / delete / move file, add/rename/remove a phase, OR flip any checkbox (`[ ]` ↔ `[x]` ↔ `[~]` ↔ `[-]`). Regen command: `./agent-config roadmap:progress`. Archive (`git mv` → `archive/`) the moment `count_open == 0` — same response.
22
+
23
+ ## Iron Law 2 — real-time checkbox cadence (autonomous execution)
24
+
25
+ ```
26
+ EVERY DONE STEP FLIPS [ ] → [x] IN THE SAME REPLY THAT LANDS THE WORK.
27
+ NO "I UPDATE THE ROADMAP AT THE END OF THE PHASE."
28
+ NO "FOUR STEPS DONE, ONE COMMIT, ONE REGEN."
29
+ A REPLY THAT LANDS A VERIFIED STEP WITHOUT FLIPPING ITS CHECKBOX
30
+ IS A RULE VIOLATION, NOT AN OVERSIGHT.
31
+ ```
32
+
33
+ `/roadmap:process-step`, `/roadmap:process-phase`, `/roadmap:process-full`, and any other multi-step autonomous run flip the box for step N **before** moving on to step N+1. The dashboard is a real-time monitor, not a post-hoc summary. Batched flips at the archive commit defeat the dashboard's purpose.
34
+
35
+ **Step counts as done** when its code/doc change is written and saved AND the verification cited in the step has passed (fresh output in this reply or an earlier one).
36
+
37
+ **In-progress marker.** When a step takes more than one reply, mark it `[~]` the moment work starts and regen — the user sees one row move `[ ] → [~] → [x]` instead of silent rows. `[~]` stays open for `count_open` but advances the phase percentage.
38
+
39
+ ## Pre-send self-check — MANDATORY
40
+
41
+ Before sending any reply that landed roadmap work:
42
+
43
+ 1. Did this reply land a step (code/doc saved + verification passed)?
44
+ 2. Is its checkbox flipped to `[x]` / `[~]` / `[-]` in `agents/roadmaps/<file>.md`? If no → flip, then continue.
45
+ 3. Did `./agent-config roadmap:progress` run after the flip? If no → run, then continue.
46
+ 4. Did `count_open` reach 0? If yes → `git mv` to `archive/` and regen again — same reply.
47
+
48
+ Any "no" at step 2 or 3 → reply is incomplete. Do not send.
49
+
50
+ Long-form mechanics (failure-mode catalog, Copilot fallback, `[~]` vs `[ ]` semantics, hook + CI defence-in-depth) live in `guideline:agent-infra/roadmap-progress-mechanics`.
17
51
  Trigger-set above activates this routing under the `balanced` and `full` profiles.
@@ -21,16 +21,14 @@ NEVER load full command output into context. Redirect → read summary → targe
21
21
  ```
22
22
 
23
23
  ```
24
- NEVER call the same tool more than 2 times in a row with similar parameters.
25
- If you catch yourself repeating a tool call — STOP, rethink, try a different approach, or ask the user.
24
+ NEVER CALL THE SAME TOOL >2 TIMES IN A ROW WITH SIMILAR PARAMETERS.
25
+ IF YOU CATCH YOURSELF REPEATING STOP, RETHINK, ASK.
26
26
  ```
27
27
 
28
28
  ## Fresh Output Over Memory
29
29
 
30
- When a tool or command returns a value (branch name, file path, PR number), use that EXACT value in subsequent API calls. NEVER substitute a value from earlier in the conversation. Context decay silent mismatches — fresh output is the only source of truth.
30
+ When a tool returns a value (branch name, file path, PR number), use that EXACT value in subsequent API calls. NEVER substitute a value from earlier in the conversation. Context decay causes silent mismatches — fresh output is the only source of truth.
31
31
 
32
- ## Mechanics — anti-loop patterns, conversation efficiency, exceptions
32
+ ## Mechanics
33
33
 
34
- The anti-loop patterns (extended-reasoning loops, "CRITICAL INSTRUCTION" self-prompting), the act-skip-narration / stop-early / keep-output-minimal / don't-re-read / minimize-tool-calls clauses, and the small-output / debugging / explicit-full-output exceptions all live in [`contexts/communication/rules-auto/token-efficiency-mechanics.md`](../contexts/communication/rules-auto/token-efficiency-mechanics.md). The rule above is the obligation surface; the mechanics file is the lookup material.
35
-
36
- This rule NEVER overrides `user-interaction` or command rules. Token efficiency means fewer *unnecessary* words — NOT skipping required questions, numbered options, or command steps.
34
+ Anti-loop patterns, act-skip-narration / stop-early / minimize-tool-calls clauses, and small-output / debugging exceptions: [`token-efficiency-mechanics`](../contexts/communication/rules-auto/token-efficiency-mechanics.md). Precedence: never overrides `user-interaction` or command rules.
@@ -0,0 +1,197 @@
1
+ ---
2
+ name: adr-create
3
+ description: "Use when capturing an architectural decision — naming the file, picking the next ADR number, filling Status / Context / Decision / Consequences, and regenerating the index — even without saying 'ADR'."
4
+ source: package
5
+ execution:
6
+ type: assisted
7
+ handler: shell
8
+ timeout_seconds: 30
9
+ allowed_tools: []
10
+ command:
11
+ - python3
12
+ - scripts/adr/regenerate_index.py
13
+ ---
14
+
15
+ # adr-create
16
+
17
+ ## When to use
18
+
19
+ Use this skill when:
20
+
21
+ - A non-trivial architectural choice needs a written record (kernel
22
+ membership, cap raises, contract changes, library swap, deprecation).
23
+ - A decision overrides a previous one and needs `supersedes:` linkage.
24
+ - A roadmap phase closes and the chosen variant must be cited.
25
+ - The user says "write an ADR for X", "decision log this", "we need
26
+ a record of why we picked Y".
27
+
28
+ Do NOT use when:
29
+
30
+ - The change is reversible without governance impact (typo, lint
31
+ fix, refactor that stays inside one module).
32
+ - The decision is already covered by an existing ADR — extend or
33
+ supersede it instead of duplicating.
34
+ - A skill, rule, or guideline is the better home (use those skills).
35
+
36
+ ## Goal
37
+
38
+ - Sequential `ADR-NNN-<slug>.md` numbering with no gaps.
39
+ - Standard template: Status, Context, Decision, Consequences,
40
+ Alternatives, References.
41
+ - Regenerated index so readers find the ADR by topic, not by ls.
42
+ - Zero MCP-tool dependency — pure filesystem + Python.
43
+
44
+ ## Preconditions
45
+
46
+ - An ADR directory exists (default `docs/adr/`; `docs/decisions/` is
47
+ the recognised alias used in this package and many older projects).
48
+ - The decision is **already made** — ADRs record outcomes, they do
49
+ not run the decision process. For unresolved trade-offs, run the
50
+ council or consult `adversarial-review` first.
51
+
52
+ ## Procedure
53
+
54
+ ### 1. Inspect and resolve the ADR directory
55
+
56
+ Identify the canonical directory in this order:
57
+
58
+ 1. `docs/adr/` — default per spec.
59
+ 2. `docs/decisions/` — accepted alias if `docs/adr/` is missing.
60
+ 3. Anything else — fail, ask the user to pick one of the two
61
+ canonical paths. Do not invent a third location.
62
+
63
+ ### 2. Pick the next ADR number
64
+
65
+ Scan the directory for `ADR-*.md`, parse the leading 3-digit number,
66
+ take `max + 1` (zero-padded). For an empty directory, start at `001`.
67
+ Reject re-use of an existing number — the index regenerator treats
68
+ duplicates as a hard failure.
69
+
70
+ ### 3. Pick a slug
71
+
72
+ Short, hyphen-lowercase, scope-revealing. Match peer ADRs in the
73
+ directory. Examples: `kernel-swap-deferred`, `flat-cluster-subs`,
74
+ `http-bridge-deferred-with-trigger`. Reject slugs longer than 60 chars.
75
+
76
+ ### 4. Author the ADR
77
+
78
+ Use the standard template (frontmatter + body). All sections are
79
+ required; "n/a" is acceptable for genuinely empty Alternatives or
80
+ References blocks but never for Status, Context, Decision, or
81
+ Consequences.
82
+
83
+ ```markdown
84
+ ---
85
+ adr: NNN
86
+ status: proposed | accepted | superseded | deprecated
87
+ date: YYYY-MM-DD
88
+ decision: <slug>
89
+ supersedes: — | ADR-MMM
90
+ superseded_by: — | ADR-MMM
91
+ phase: <roadmap> · <phase-id>
92
+ ---
93
+
94
+ # ADR-NNN — <Decision Title>
95
+
96
+ ## Status
97
+
98
+ **<Proposed | Accepted | …>** · YYYY-MM-DD.
99
+
100
+ ## Context
101
+
102
+ What problem forced this decision? What constraints applied? What
103
+ alternatives were on the table at decision time?
104
+
105
+ ## Decision
106
+
107
+ The chosen variant, in one paragraph. Concrete enough that a reader
108
+ six months later knows what was actually picked.
109
+
110
+ ## Consequences
111
+
112
+ ### Accepted
113
+
114
+ - Hard guarantees we now make.
115
+
116
+ ### Trade-offs
117
+
118
+ - What we gave up. Mitigations, if any.
119
+
120
+ ## Alternatives considered
121
+
122
+ - **Variant X — <name>.** Rejected because <reason>.
123
+ - **Variant Y — <name>.** Rejected because <reason>.
124
+
125
+ ## References
126
+
127
+ - Linked roadmap, contract, prior ADR, council session id.
128
+ ```
129
+
130
+ ### 5. Regenerate the index
131
+
132
+ Run the dispatcher:
133
+
134
+ ```bash
135
+ python3 scripts/runtime_dispatcher.py run --skill adr-create
136
+ # or directly:
137
+ python3 scripts/adr/regenerate_index.py --dir docs/adr/
138
+ ```
139
+
140
+ The script scans `ADR-*.md`, reads frontmatter (`adr`, `status`,
141
+ `date`, `decision`, `supersedes`), and writes `INDEX.md` with one
142
+ table row per ADR plus broken-supersede warnings on stderr.
143
+
144
+ ### 6. Validate
145
+
146
+ - `python3 scripts/adr/regenerate_index.py --check` exits 0
147
+ (index is up to date, no number gaps, no broken supersedes).
148
+ - The project's CI / quality pipeline passes locally.
149
+
150
+ ## Output format
151
+
152
+ 1. Path of the new `ADR-NNN-<slug>.md` file.
153
+ 2. Path of the regenerated `INDEX.md`.
154
+ 3. One-line summary of the decision.
155
+ 4. Linked roadmap or phase, if any.
156
+
157
+ ## Gotchas
158
+
159
+ - `docs/adr/` is the default path; some projects use
160
+ `docs/decisions/` (this package included). Pass `--dir` to the
161
+ index regenerator when running outside the default.
162
+ - Frontmatter `adr:` is the canonical number; the filename prefix
163
+ must match. The index regenerator fails on mismatch.
164
+ - ADRs are append-only history. To revise a decision, write a new
165
+ ADR with `supersedes: ADR-MMM` and flip the old one's status to
166
+ `superseded`.
167
+ - Never delete an ADR file — supersede it. Deletion breaks
168
+ historical links and round-trips through git history checks.
169
+
170
+ ## Frugality Standards
171
+
172
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
173
+ to every ADR you author.
174
+
175
+ **Examples in this artifact:**
176
+ - Per the charter's default-terse rule, `## Context` states the
177
+ forcing function in 2–3 sentences; no historical narrative.
178
+ - Per the cite-don't-restate principle, `## Decision` links the
179
+ rules / contracts it overrides; no rule body is quoted in full.
180
+ - Per the cheap-question check, `## Alternatives considered` lists
181
+ genuine design alternatives, not strawmen.
182
+
183
+ **Pre-save self-check:**
184
+ 1. Does `## Context` carry more than 5 sentences of setup?
185
+ 2. Does `## Decision` restate rule text instead of citing the rule?
186
+ 3. Are alternatives evaluated with a real consequence each, or with
187
+ stylistic preference?
188
+ 4. Does the ADR forecast consequences with hedge phrases ("might",
189
+ "could potentially") instead of decidable claims?
190
+
191
+ ## Do NOT
192
+
193
+ - Skip Context — a decision without context is folklore.
194
+ - Reuse an existing ADR number — the index regenerator hard-fails.
195
+ - Author ADRs for reversible refactors or minor cleanups.
196
+ - Cite a council session id without ensuring the file is committed
197
+ or otherwise reachable from the repo (per `no-council-references`).
@@ -168,6 +168,7 @@ When starting work, read documentation in this order:
168
168
  | Significant multi-step change | Ask user about creating a roadmap in `agents/roadmaps/` |
169
169
  | New convention introduced | Update relevant doc in `./agents/` or `.augment/guidelines/` |
170
170
  | Database schema changed | Update `agents/docs/database-setup.md` |
171
+ | Architectural decision made | Use the [`adr-create`](../adr-create/SKILL.md) skill — writes a numbered ADR under `docs/adr/` (or `docs/decisions/`) and regenerates the index |
171
172
 
172
173
  ## When to update documentation
173
174
 
@@ -187,7 +188,7 @@ After completing a significant code change, run this mental checklist:
187
188
  | New API endpoint | OpenAPI annotations, `AGENTS.md` API section |
188
189
  | New module created | Create `app/Modules/{Module}/agents/` |
189
190
  | Service/repository signature changed | Check if referenced in `agents/docs/services-and-repos.md` |
190
- | New environment variable | `.env.example`, `AGENTS.md` env section |
191
+ | New environment variable | `.env.example`, `AGENTS.md` environment section |
191
192
  | Docker/compose change | `agents/docs/docker.md`, `Makefile` documentation |
192
193
  | New Artisan command | `AGENTS.md` commands section |
193
194
  | New pattern/convention introduced | Relevant guideline in `.augment/guidelines/` |
@@ -220,6 +221,27 @@ Do NOT auto-update docs without the user's knowledge. Flag what needs updating a
220
221
  - AGENTS.md and copilot-instructions.md have different audiences — don't copy content between them.
221
222
  - Module docs go in `app/Modules/*/agents/`, NOT in the central `agents/` directory.
222
223
 
224
+ ## Frugality Standards
225
+
226
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
227
+ to every agent-doc update you author.
228
+
229
+ **Examples in this artifact:**
230
+ - Per the charter's default-terse rule, doc updates state what
231
+ changed; no "In this section we will…" frames.
232
+ - Per the cheap-question check, AGENTS.md surface offers options
233
+ only where the project genuinely diverges.
234
+ - Per the post-action summary suppression, doc edits append change
235
+ notes to the existing log entry; no new "Summary of changes" block.
236
+
237
+ **Pre-save self-check:**
238
+ 1. Does the doc open with a narrative intro instead of the actual
239
+ content?
240
+ 2. Are paragraphs added that summarize an existing table?
241
+ 3. Does the doc duplicate the rule index instead of linking the
242
+ relevant rule?
243
+ 4. Is German prose present outside `DE: / EN:` anchor blocks?
244
+
223
245
  ## Do NOT
224
246
 
225
247
  - Do NOT create docs unless there's a real need (new module, significant change).
@@ -166,6 +166,29 @@ multi-paragraph explanation, extract it into a skill and call it.
166
166
  `.agent-src.uncompressed/`.
167
167
  * Duplicating another command's workflow instead of delegating via `skills:`.
168
168
 
169
+ ## Frugality Standards
170
+
171
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
172
+ to every command you author.
173
+
174
+ **Examples in this artifact:**
175
+ - Per the charter's default-terse rule, command output blocks state
176
+ the action result, not "Now we will execute…".
177
+ - Per the post-action summary suppression, the success path emits
178
+ the artifact (PR URL, commit hash) without a wrapping summary.
179
+ - Per the cheap-question check, never offer "preview vs. execute"
180
+ as a numbered option when the command's role is to execute.
181
+
182
+ **Pre-save self-check:**
183
+ 1. Does any command step prescribe a "Let me…" or "Found it" output
184
+ line?
185
+ 2. Does the command default to multi-line summaries when a one-line
186
+ outcome suffices?
187
+ 3. Is a confirmation gate used outside the Iron-Law / Routine /
188
+ Contextual taxonomy?
189
+ 4. Are template placeholders (`{{var}}`) accompanied by setup prose
190
+ instead of action prose?
191
+
169
192
  ## Do NOT
170
193
 
171
194
  * Do NOT set `disable-model-invocation: false`
@@ -156,6 +156,29 @@ schema regex and by `scripts/lint_load_context.py`. Body links to
156
156
  Canonical reference: `rule-writing` § 3b and
157
157
  `docs/contracts/load-context-schema.md`.
158
158
 
159
+ ## Frugality Standards
160
+
161
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
162
+ to every context file you author.
163
+
164
+ **Examples in this artifact:**
165
+ - Per the charter's index nature, context files are reviewer fuel —
166
+ they hold mechanics, not Iron-Law obligations.
167
+ - Per the cite-don't-restate principle, when a section mirrors a
168
+ rule, link the rule and stop.
169
+ - Per the act-skip-narration rule, lookup tables open the section;
170
+ explanatory prose follows only if the table is ambiguous.
171
+
172
+ **Pre-save self-check:**
173
+ 1. Does the context file restate Iron-Law text instead of linking
174
+ the rule?
175
+ 2. Does any section open with "This document explains…" instead of
176
+ the lookup material?
177
+ 3. Are placeholders (`<add me>`, `TBD`) shipped instead of actual
178
+ content?
179
+ 4. Are the cited rules linked with stable anchors (verified to
180
+ exist)?
181
+
159
182
  ## Do NOT
160
183
 
161
184
  - Do NOT copy content between projects. Every context file is local to its
@@ -113,6 +113,29 @@ Or add `BREAKING CHANGE:` in the commit body/footer.
113
113
  - Squash merge titles should describe the net effect, not every internal detail
114
114
  - `refactor` means NO behavior change — if behavior changes, use `feat` or `fix`
115
115
 
116
+ ## Frugality Standards
117
+
118
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
119
+ to every commit message you author.
120
+
121
+ **Examples in this artifact:**
122
+ - Per the charter's default-terse rule, the subject states the
123
+ change in 50 chars; no scaffolding ("This commit will…").
124
+ - Per the post-action summary suppression, the body lists changed
125
+ surfaces in bullets — no closing paragraph re-summarizing them.
126
+ - Per the cheap-question check, never propose a `feat` vs. `chore`
127
+ numbered choice when the type is decidable from the diff.
128
+
129
+ **Pre-save self-check:**
130
+ 1. Does the subject line carry filler ("various improvements",
131
+ "general updates")?
132
+ 2. Does the body re-narrate the diff instead of stating intent?
133
+ 3. Are co-author / attribution footers present without explicit user
134
+ request (per
135
+ [`no-attribution-footers`](../../rules/no-attribution-footers.md))?
136
+ 4. Is the type / scope chosen from the diff, not from the asker's
137
+ framing?
138
+
116
139
  ## Do NOT
117
140
 
118
141
  - Do NOT use vague messages: `update stuff`, `fix bug`, `changes`
@@ -130,6 +130,28 @@ Above the split signal, break by sub-topic into sibling files in the same folder
130
130
  * Hollowing out a skill into "see guideline" — the skill must remain
131
131
  executable (see `preservation-guard`).
132
132
 
133
+ ## Frugality Standards
134
+
135
+ Apply the [Frugality Charter](../../contexts/contracts/frugality-charter.md)
136
+ to every guideline you author.
137
+
138
+ **Examples in this artifact:**
139
+ - Per the charter's index nature, guidelines describe practice
140
+ patterns; they do **not** restate Iron-Laws from rules.
141
+ - Per the act-skip-narration rule, code examples lead with the
142
+ pattern, not its motivation.
143
+ - Per the cheap-question check, guidelines do not prescribe stylistic
144
+ forks ("table vs. paragraph") — pick one.
145
+
146
+ **Pre-save self-check:**
147
+ 1. Does the guideline restate text from a rule body instead of
148
+ linking the rule?
149
+ 2. Are code examples preceded by narrative ramp-up?
150
+ 3. Does the guideline introduce a new convention without citing the
151
+ rule that holds the obligation?
152
+ 4. Are sections labeled "Overview" / "Background" carrying only
153
+ restatement?
154
+
133
155
  ## Do NOT
134
156
 
135
157
  * Do NOT add `type:` or `alwaysApply:` to the frontmatter
@@ -285,6 +285,15 @@ Decision: Create focused skill for Laravel route inspection via JSON and jq.
285
285
  Learning: "I forgot to run PHPStan once."
286
286
  Decision: No action — one-off, already covered by verify-before-complete rule.
287
287
 
288
+ Learning: "We re-invented a per-format PDF extractor in three different
289
+ analysis skills."
290
+ Decision: Update the affected skills to dispatch to
291
+ [`markitdown`](../markitdown/SKILL.md) instead of writing new
292
+ extractors. Non-text ingestion (PDF / DOCX / XLSX / PPTX / image /
293
+ audio) goes through the upstream `markitdown-mcp` server first; only
294
+ write a custom extractor if `markitdown` cannot handle the format and
295
+ the gap is documented in its skill body.
296
+
288
297
  ## Environment notes
289
298
 
290
299
  Prefer updating existing rule/skill when possible.