@event4u/agent-config 1.21.0 → 1.23.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 (130) hide show
  1. package/.agent-src/commands/agents/cleanup.md +31 -17
  2. package/.agent-src/commands/bug-fix.md +1 -0
  3. package/.agent-src/commands/bug-investigate.md +1 -0
  4. package/.agent-src/commands/challenge-me/vision.md +348 -0
  5. package/.agent-src/commands/challenge-me/with-docs.md +333 -0
  6. package/.agent-src/commands/challenge-me.md +61 -0
  7. package/.agent-src/commands/commit/in-chunks.md +30 -10
  8. package/.agent-src/commands/commit.md +46 -6
  9. package/.agent-src/commands/compress.md +19 -13
  10. package/.agent-src/commands/cost-report.md +120 -0
  11. package/.agent-src/commands/council/default.md +64 -17
  12. package/.agent-src/commands/create-pr/description-only.md +8 -0
  13. package/.agent-src/commands/create-pr.md +99 -80
  14. package/.agent-src/commands/feature/plan.md +13 -7
  15. package/.agent-src/commands/grill-me.md +38 -0
  16. package/.agent-src/commands/judge/steps.md +1 -1
  17. package/.agent-src/commands/memory/add.md +16 -8
  18. package/.agent-src/commands/memory/promote.md +17 -9
  19. package/.agent-src/commands/optimize/rtk.md +16 -11
  20. package/.agent-src/commands/prepare-for-review.md +12 -6
  21. package/.agent-src/commands/project-analyze.md +31 -20
  22. package/.agent-src/commands/review-changes.md +24 -15
  23. package/.agent-src/commands/roadmap/ai-council.md +183 -0
  24. package/.agent-src/commands/roadmap/create.md +20 -10
  25. package/.agent-src/commands/roadmap/process-full.md +58 -0
  26. package/.agent-src/commands/roadmap/process-phase.md +69 -0
  27. package/.agent-src/commands/roadmap/process-step.md +57 -0
  28. package/.agent-src/commands/roadmap.md +44 -16
  29. package/.agent-src/commands/threat-model.md +1 -0
  30. package/.agent-src/contexts/augment-infrastructure.md +1 -1
  31. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +53 -18
  32. package/.agent-src/contexts/contracts/frugality-charter.md +57 -0
  33. package/.agent-src/contexts/execution/roadmap-process-loop.md +125 -0
  34. package/.agent-src/contexts/skills-and-commands.md +1 -1
  35. package/.agent-src/rules/architecture.md +9 -0
  36. package/.agent-src/rules/ask-when-uncertain.md +3 -13
  37. package/.agent-src/rules/caveman-speak.md +78 -0
  38. package/.agent-src/rules/direct-answers.md +5 -14
  39. package/.agent-src/rules/improve-before-implement.md +1 -0
  40. package/.agent-src/rules/invite-challenge.md +71 -0
  41. package/.agent-src/rules/markdown-safe-codeblocks.md +6 -7
  42. package/.agent-src/rules/no-cheap-questions.md +4 -14
  43. package/.agent-src/rules/token-efficiency.md +5 -7
  44. package/.agent-src/skills/adr-create/SKILL.md +197 -0
  45. package/.agent-src/skills/adversarial-review/SKILL.md +1 -0
  46. package/.agent-src/skills/agent-docs-writing/SKILL.md +23 -1
  47. package/.agent-src/skills/ai-council/SKILL.md +132 -8
  48. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -0
  49. package/.agent-src/skills/command-writing/SKILL.md +23 -0
  50. package/.agent-src/skills/context-authoring/SKILL.md +23 -0
  51. package/.agent-src/skills/conventional-commits-writing/SKILL.md +23 -0
  52. package/.agent-src/skills/guideline-writing/SKILL.md +22 -0
  53. package/.agent-src/skills/persona-writing/SKILL.md +153 -0
  54. package/.agent-src/skills/readme-writing/SKILL.md +20 -0
  55. package/.agent-src/skills/readme-writing-package/SKILL.md +19 -0
  56. package/.agent-src/skills/roadmap-management/SKILL.md +7 -7
  57. package/.agent-src/skills/roadmap-writing/SKILL.md +157 -0
  58. package/.agent-src/skills/rule-writing/SKILL.md +22 -0
  59. package/.agent-src/skills/script-writing/SKILL.md +226 -0
  60. package/.agent-src/skills/skill-writing/SKILL.md +23 -0
  61. package/.agent-src/skills/systematic-debugging/SKILL.md +22 -2
  62. package/.agent-src/skills/technical-specification/SKILL.md +58 -1
  63. package/.agent-src/skills/test-driven-development/SKILL.md +24 -0
  64. package/.agent-src/skills/threat-modeling/SKILL.md +1 -0
  65. package/.agent-src/templates/agent-settings.md +87 -3
  66. package/.agent-src/templates/command.md +30 -9
  67. package/.agent-src/templates/roadmaps.md +10 -2
  68. package/.agent-src/templates/rule.md +8 -0
  69. package/.agent-src/templates/skill.md +49 -0
  70. package/.claude-plugin/marketplace.json +14 -2
  71. package/AGENTS.md +3 -3
  72. package/CHANGELOG.md +73 -0
  73. package/README.md +5 -5
  74. package/config/agent-settings.template.yml +22 -0
  75. package/docs/architecture.md +4 -4
  76. package/docs/contracts/command-clusters.md +45 -1
  77. package/docs/customization.md +72 -0
  78. package/docs/decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md +126 -0
  79. package/docs/decisions/INDEX.md +15 -0
  80. package/docs/getting-started.md +2 -2
  81. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +27 -19
  82. package/docs/guidelines/agent-infra/carve-out-predicates.md +17 -0
  83. package/docs/guidelines/agent-infra/mcp-request-signing.md +199 -0
  84. package/docs/guidelines/agent-infra/naming.md +1 -1
  85. package/docs/guidelines/agent-infra/roadmap-progress-mechanics.md +11 -4
  86. package/package.json +1 -1
  87. package/scripts/_lib/__init__.py +5 -0
  88. package/scripts/_lib/script_output.py +140 -0
  89. package/scripts/_phase2_shim_helper.py +1 -1
  90. package/scripts/adr/regenerate_index.py +79 -0
  91. package/scripts/ai_council/one_off_archive/2026-05/_one_off_add_quiet.py +149 -0
  92. package/scripts/ai_council/one_off_archive/2026-05/_one_off_inject_quiet_flag.py +33 -0
  93. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_v2.sh +36 -0
  94. package/scripts/ai_council/one_off_archive/2026-05/_one_off_measure_verbosity.sh +26 -0
  95. package/scripts/ai_council/one_off_archive/2026-05/_one_off_per_task.sh +41 -0
  96. package/scripts/ai_council/one_off_archive/2026-05/_one_off_silent_taskfiles.py +98 -0
  97. package/scripts/check_augmentignore.py +4 -1
  98. package/scripts/check_command_count_messaging.py +4 -1
  99. package/scripts/check_compressed_paths.py +4 -1
  100. package/scripts/check_council_layout.py +4 -1
  101. package/scripts/check_council_references.py +4 -1
  102. package/scripts/check_iron_law_prominence.py +3 -1
  103. package/scripts/check_md_language.py +3 -1
  104. package/scripts/check_memory_proposal.py +3 -1
  105. package/scripts/check_public_catalog_links.py +4 -1
  106. package/scripts/check_reply_consistency.py +8 -2
  107. package/scripts/check_roadmap_trackable.py +4 -1
  108. package/scripts/compile_router.py +27 -0
  109. package/scripts/compress.py +33 -19
  110. package/scripts/cost/budget.mjs +152 -0
  111. package/scripts/cost/track.mjs +144 -0
  112. package/scripts/council_cli.py +127 -10
  113. package/scripts/first-run.sh +3 -9
  114. package/scripts/install-hooks.sh +19 -1
  115. package/scripts/install.py +17 -12
  116. package/scripts/install.sh +19 -8
  117. package/scripts/lint_examples.py +6 -2
  118. package/scripts/lint_handoffs.py +4 -1
  119. package/scripts/lint_load_context.py +4 -1
  120. package/scripts/lint_roadmap_complexity.py +6 -2
  121. package/scripts/lint_rule_interactions.py +4 -1
  122. package/scripts/lint_rule_tiers.py +4 -1
  123. package/scripts/measure_frugality_savings.py +164 -0
  124. package/scripts/migrate_command_suggestions.py +2 -2
  125. package/scripts/runtime_dispatcher.py +11 -0
  126. package/scripts/schemas/command.schema.json +5 -0
  127. package/scripts/schemas/rule.schema.json +5 -0
  128. package/scripts/schemas/skill.schema.json +5 -0
  129. package/scripts/skill_linter.py +208 -3
  130. package/.agent-src/commands/roadmap/execute.md +0 -109
package/CHANGELOG.md CHANGED
@@ -318,6 +318,79 @@ 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.23.0](https://github.com/event4u-app/agent-config/compare/1.22.0...1.23.0) (2026-05-08)
322
+
323
+ ### Features
324
+
325
+ * **skills:** add script-writing skill for scripts/ conventions ([1f8655d](https://github.com/event4u-app/agent-config/commit/1f8655d6cbf007410e3846ab502eea5745a7f66f))
326
+ * **scripts:** Phase 10.7 --quiet flag + silent Taskfile + caveman compile-time toggle ([1d319e6](https://github.com/event4u-app/agent-config/commit/1d319e61a3c782eb5c86075f34275306a67c621c))
327
+ * **linter:** frugality charter writer-cite validator + writer skill citations ([0e34709](https://github.com/event4u-app/agent-config/commit/0e3470965d5e2f4a8b11f27137d4ba43d2471be2))
328
+ * **verbosity:** add verbosity toggles + gate routine outputs ([580d4cc](https://github.com/event4u-app/agent-config/commit/580d4cc2d1f4d4b091b6128f0a29d1f7e619895d))
329
+ * **roadmap-sync:** pre-commit backstop blocks stale dashboard ([c577fc0](https://github.com/event4u-app/agent-config/commit/c577fc0aabc13faaae64c88d20d8ca66338ae5fc))
330
+ * **create-pr:** drop council-review prompt ([e694811](https://github.com/event4u-app/agent-config/commit/e694811f7ca06b3db275cc70e83e6dbc4db72e42))
331
+ * cite SPARC escalation thresholds in test-driven-development ([836f2ed](https://github.com/event4u-app/agent-config/commit/836f2edc2c288bcc7f878e97f42de954add8bb5b))
332
+ * add mcp-request-signing guideline with HTTP-bridge appendix ([2ab67cd](https://github.com/event4u-app/agent-config/commit/2ab67cd401333ea61f47d43e952e7b07958feff3))
333
+ * add cost-report command with token cost tracking ([262d865](https://github.com/event4u-app/agent-config/commit/262d865072d613647a439e89f83ded7334b60b1b))
334
+ * add adr-create skill with index regeneration script ([7225105](https://github.com/event4u-app/agent-config/commit/7225105797d6810cad75bfa851f02b100e41ba29))
335
+
336
+ ### Bug Fixes
337
+
338
+ * **docs:** bump command counts to 103 after cost-report addition ([2810fa5](https://github.com/event4u-app/agent-config/commit/2810fa5a54b7099123ae65e6c7c1325430bf3b77))
339
+
340
+ ### Documentation
341
+
342
+ * sync counts (139 skills, 60 rules) + meta cleanups ([00c8b21](https://github.com/event4u-app/agent-config/commit/00c8b211edbc86cbe2f886107227e6bd46049c3b))
343
+ * codify defer-with-trigger harvest policy ([b30dcd7](https://github.com/event4u-app/agent-config/commit/b30dcd72d0ffbd1fb2dbdd8ca28493a5b05a6bed))
344
+
345
+ ### Refactoring
346
+
347
+ * **rules:** apply trim-frugality-canon Phase 1-3 trims ([ea1828a](https://github.com/event4u-app/agent-config/commit/ea1828af7bc69426386f6852cb69891309dce65f))
348
+
349
+ ### Chores
350
+
351
+ * regenerate stale generated mirrors ([ea52e94](https://github.com/event4u-app/agent-config/commit/ea52e94415c4db5598e91d001e0fbeee10cae9be))
352
+ * regenerate auto-generated artefacts ([fbe7d9e](https://github.com/event4u-app/agent-config/commit/fbe7d9ef137c9e584d7f88ce660afe29ab1a8d00))
353
+ * bump skill/command/guideline counts and compression hashes ([18f4fad](https://github.com/event4u-app/agent-config/commit/18f4fad2372fd4347210199986909319c24ea0ec))
354
+ * archive ruflo-adoption, move caveman-integration to skipped ([4c6c1eb](https://github.com/event4u-app/agent-config/commit/4c6c1eb1e00356421e0038704a82e1f10ac9a3e5))
355
+
356
+ ## [1.22.0](https://github.com/event4u-app/agent-config/compare/1.21.0...1.22.0) (2026-05-07)
357
+
358
+ ### Features
359
+
360
+ * **commands:** add /grill-me alias for /challenge-me + expand triggers ([d2be4ee](https://github.com/event4u-app/agent-config/commit/d2be4ee1a97d2ca2374c6543e0fd908eca0a0f1a))
361
+ * **challenge-me:** add !roadmap and !ai triggers ([7bfbd69](https://github.com/event4u-app/agent-config/commit/7bfbd6943852d781ca7ad29e51750de24d3ef413))
362
+ * **create-pr:** default to skipping description preview to save tokens ([80e77ae](https://github.com/event4u-app/agent-config/commit/80e77aed76a13c26fac8316bc5d58a3533dbbe44))
363
+ * **council:** add critical-evaluation stance for council findings ([7e2524b](https://github.com/event4u-app/agent-config/commit/7e2524b75fd84ca4b6afb6deae0b8777e8b81ac7))
364
+ * **council:** add /roadmap:ai-council deep-tier sub-command ([c5933e4](https://github.com/event4u-app/agent-config/commit/c5933e4b2301a0f9d1c116d2843ed4953bd92163))
365
+ * replace /roadmap-execute with autonomous /roadmap:process-* cluster ([9d4ffd0](https://github.com/event4u-app/agent-config/commit/9d4ffd0815fb7923b337bfd0b3847d9bc5a01e54))
366
+ * **council:** mark architecture/refactor/bug-diagnose artefacts as deep ([6f903c1](https://github.com/event4u-app/agent-config/commit/6f903c194e4bc54512e93a32e1876e84d0292401))
367
+ * **council:** add deep reasoning depth tier with schema enforcement ([f4efd7a](https://github.com/event4u-app/agent-config/commit/f4efd7a11b9d57e93153e6e4605c968565c8924d))
368
+ * **linter:** require suggestion block on commands ([231df91](https://github.com/event4u-app/agent-config/commit/231df918b2d15ea9cc2fa8fe12bae4c2482990df))
369
+ * add --siblings council mode and refine convener wording ([9075647](https://github.com/event4u-app/agent-config/commit/9075647ba520efb5f10ab7612970111e9f9d16e9))
370
+ * add PRD template to technical-specification ([f9ee749](https://github.com/event4u-app/agent-config/commit/f9ee7496434f9342d6b46b95dce14c4703d07d96))
371
+ * add 6-phase loop checklist to systematic-debugging ([29c9e94](https://github.com/event4u-app/agent-config/commit/29c9e9419c9d08dd93c4fc7364e51b93bc771131))
372
+ * add invite-challenge rule for pre-execution goal restatement ([e96da5f](https://github.com/event4u-app/agent-config/commit/e96da5fdf124da3582e454fc625fe32a27ada634))
373
+ * add /challenge-me cluster with vision and with-docs sub-commands ([74481ef](https://github.com/event4u-app/agent-config/commit/74481ef7e7850d3e015ff0f9853be6ea618ac1d9))
374
+
375
+ ### Documentation
376
+
377
+ * **roadmap:** drop council-response file links per no-council-references ([d792100](https://github.com/event4u-app/agent-config/commit/d792100ef6b2727cca1338c89fefc4c591513265))
378
+ * **readme:** bump hero command count from 100 to 102 ([3212db4](https://github.com/event4u-app/agent-config/commit/3212db48fb1d62a70f9e87cf9307ee73059b7e4e))
379
+ * **roadmap:** integrate R5 council verdict for caveman-insurance ([38b26e2](https://github.com/event4u-app/agent-config/commit/38b26e2f00504a7c6c821c356964cb0cabefd905))
380
+ * **roadmap:** incorporate R4 verdict + structural findings into caveman integration ([c50f39b](https://github.com/event4u-app/agent-config/commit/c50f39bc9b08c8d59c4cf547aeec7fffbff38bc0))
381
+ * **roadmap:** convert caveman integration Phase 2 to hard cutover ([fb459be](https://github.com/event4u-app/agent-config/commit/fb459be70a093eea1814a38a3b1fec9cf9261363))
382
+ * **harvest:** add Superpowers harvest roadmap, hardened by council R2 ([e559259](https://github.com/event4u-app/agent-config/commit/e559259f789014603067e87141d9feb815b480ab))
383
+ * **harvest:** analyze obra/superpowers v5.1.0 for adoption candidates ([e89e0ee](https://github.com/event4u-app/agent-config/commit/e89e0eeadc4b76517b181c559422e88df5c8122a))
384
+ * **council:** document council_depth frontmatter convention in templates ([ba56412](https://github.com/event4u-app/agent-config/commit/ba56412c76204bbe49366bbceb62e4d31c994fc2))
385
+
386
+ ### Chores
387
+
388
+ * **sync:** re-sync compressed mirror with create-pr preview-gate + agent-settings preview_description ([ceab79e](https://github.com/event4u-app/agent-config/commit/ceab79e23be2c1d4ba504b80426d1b91ffdaadd1))
389
+ * bump artefact counts and refresh compression hashes ([2801342](https://github.com/event4u-app/agent-config/commit/28013424668177fc23df45cc56390faba6fd010e))
390
+ * regenerate tool-dir symlinks for challenge-me and invite-challenge ([b3b0ada](https://github.com/event4u-app/agent-config/commit/b3b0ada9ce108b220289c9f044b3f3d0209f0a12))
391
+ * bump artefact counts and refresh compression hashes ([4147de3](https://github.com/event4u-app/agent-config/commit/4147de3b4da24494128a847be194ac901e506df9))
392
+ * sync compressed projection for challenge-me cluster ([9165762](https://github.com/event4u-app/agent-config/commit/91657620e6d822fbe28923e3b008e218f13e5cea))
393
+
321
394
  ## [1.21.0](https://github.com/event4u-app/agent-config/compare/1.20.0...1.21.0) (2026-05-06)
322
395
 
323
396
  ### Features
package/README.md CHANGED
@@ -7,7 +7,7 @@ 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>136 Skills</strong> · <strong>58 Rules</strong> · <strong>95 Commands</strong> · <strong>56 Guidelines</strong> · <strong>8 AI Tools</strong>
10
+ <strong>140 Skills</strong> · <strong>60 Rules</strong> · <strong>103 Commands</strong> · <strong>58 Guidelines</strong> · <strong>8 AI Tools</strong>
11
11
  </p>
12
12
 
13
13
  ---
@@ -343,7 +343,7 @@ kernel set: [`docs/contracts/kernel-membership.md`](docs/contracts/kernel-member
343
343
  | [`/jira-ticket`](.agent-src/commands/jira-ticket.md) | Read ticket from branch, implement feature |
344
344
  | [`/compress`](.agent-src/commands/compress.md) | Compress skills for token efficiency |
345
345
 
346
- → [Browse all 95 active commands](.agent-src/commands/)
346
+ → [Browse all 103 active commands](.agent-src/commands/)
347
347
 
348
348
  ---
349
349
 
@@ -368,7 +368,7 @@ Every developer gets the same behavior. No per-user setup needed.
368
368
  native slash-commands)
369
369
 
370
370
  > **What this means in practice:** Augment Code and Claude Code get the full
371
- > package (rules + 136 skills + 95 native commands). Cursor, Cline, Windsurf,
371
+ > package (rules + 140 skills + 103 native commands). Cursor, Cline, Windsurf,
372
372
  > Gemini CLI, and GitHub Copilot only get the **rules** natively; skills and
373
373
  > commands are available to them as documentation the agent can read, not as
374
374
  > first-class features.
@@ -413,6 +413,8 @@ for the per-rule routing.
413
413
  - **Challenge to improve** — agents are thought partners, not yes-machines
414
414
  - **Strict by design** — quality over flexibility
415
415
  - **Zero overhead by default** — nothing runs until you ask for it
416
+ - **Terse-by-default chat output** — verbosity flags off, intent narration off,
417
+ caveman-speak prose-only — flip back via [`docs/customization.md` § Verbosity](docs/customization.md#verbosity)
416
418
 
417
419
  ---
418
420
 
@@ -480,10 +482,8 @@ re-enabled or the chat ends. Full scoring contract and hardening:
480
482
  Edit in `.agent-src.uncompressed/`, compress, verify:
481
483
 
482
484
  ```bash
483
- task sync # Sync non-.md files
484
485
  task ci # Run all CI checks
485
486
  task test # Run all tests
486
- task lint-skills # Lint skills, rules, commands
487
487
  ```
488
488
 
489
489
  → Full commands and project structure: [**docs/development.md**](docs/development.md)
@@ -238,6 +238,16 @@ ai_council:
238
238
  # invocation (or `--rounds N` to the CLI) to override.
239
239
  min_rounds: 2
240
240
 
241
+ # Higher floor for deep-reasoning artefacts (architecture review,
242
+ # refactoring proposals, bug-diagnosis runs). Activated when the
243
+ # consuming rule, skill, or command declares `council_depth: deep`
244
+ # in its frontmatter, or the user passes `--depth deep` to the CLI.
245
+ # Effective rounds = max(deep_min_rounds, min_rounds), so this floor
246
+ # is monotonic — lowering it below `min_rounds` has no effect.
247
+ # Standard tasks keep `min_rounds`; cost rises only when an artefact
248
+ # opts in. Set to `min_rounds` to disable the deep tier.
249
+ deep_min_rounds: 3
250
+
241
251
  # Hard cost ceiling per /council invocation. The orchestrator pauses
242
252
  # before any member whose projected spend would breach a cap and asks
243
253
  # the user to continue. `max_total_usd: 0` disables the USD ceiling
@@ -298,3 +308,15 @@ commands:
298
308
  # Commands to never suggest. Still work when typed explicitly.
299
309
  # Example: ["/refine-ticket", "/work"]
300
310
  blocklist: []
311
+
312
+ # --- /create-pr behavior ---
313
+ #
314
+ # Pre-creation preview of the generated PR description.
315
+ # false (default): skip the title/body preview + adjust loop in
316
+ # /create-pr; use the generated content directly. Saves agent tokens
317
+ # by avoiding a re-render of the full description in chat.
318
+ # true: show title and body in copyable code blocks and ask for
319
+ # adjustments before creating the PR.
320
+ # /create-pr:description-only always previews — that is its sole purpose.
321
+ create_pr:
322
+ preview_description: false
@@ -96,10 +96,10 @@ fails on any source-side violation, without producing artifacts.
96
96
 
97
97
  | Layer | Count | Purpose |
98
98
  |---|---|---|
99
- | **Skills** | 136 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
100
- | **Rules** | 58 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
101
- | **Commands** | 95 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, … |
102
- | **Guidelines** | 56 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
99
+ | **Skills** | 140 | On-demand expertise — stack analysis (Laravel · Symfony · Zend / Laminas · Next.js · React · Node), testing, Docker, API design, security, observability, … |
100
+ | **Rules** | 60 | Always-active constraints — coding standards, scope control, verification, language-and-tone, agent-authority |
101
+ | **Commands** | 103 | Slash-command workflows — `/commit`, `/create-pr`, `/fix ci`, `/optimize skills`, `/feature plan`, `/work`, `/implement-ticket`, `/compress`, … |
102
+ | **Guidelines** | 58 | Reference material cited by skills — PHP patterns, Eloquent, Playwright, agent-infra, … |
103
103
  | **Templates** | 7 | Scaffolds for features, roadmaps, contexts, skills, overrides |
104
104
  | **Contexts** | 5 | Shared knowledge about the system itself |
105
105
 
@@ -33,7 +33,7 @@ column 1 of this table.
33
33
  | `chat-history` | 2 | `show` · `import` · `learn` | `chat-history` (legacy status) — `resume` / `clear` / `checkpoint` removed in `road-to-chat-history-hook-only` (auto-adopt + structural hooks); `import` (verbatim cross-session render) and `learn` (project-improving learning extraction) added in the v4 stateless schema |
34
34
  | `agents` | 2 | `audit` · `cleanup` · `prepare` | `agents-audit` · `agents-cleanup` · `agents-prepare` |
35
35
  | `memory` | 2 | `add` · `load` · `promote` · `propose` | `memory-add` · `memory-full` · `memory-promote` · `propose-memory` |
36
- | `roadmap` | 2 | `create` · `execute` | `roadmap-create` · `roadmap-execute` |
36
+ | `roadmap` | 2 | `create` · `ai-council` · `process-step` · `process-phase` · `process-full` | `roadmap-create` · `roadmap-execute` (replaced — autonomous, no per-step gate; `process-phase` is the default execution scope); `ai-council` added 2026-05-07 — wraps `/council default` with `--input-mode roadmap --depth deep` |
37
37
  | `module` | 2 | `create` · `explore` | `module-create` · `module-explore` |
38
38
  | `tests` | 2 | `create` · `execute` | `tests-create` · `tests-execute` |
39
39
  | `context` | 2 | `create` · `refactor` | `context-create` · `context-refactor` |
@@ -43,6 +43,7 @@ column 1 of this table.
43
43
  | `commit` | 2 | `in-chunks` | `commit-in-chunks` |
44
44
  | `create-pr` | 2 | `description-only` | `create-pr-description` |
45
45
  | `council` | 3 | `default` · `pr` · `design` · `optimize` | `council` (legacy default lens) · `council-pr` · `council-design` · `council-optimize` |
46
+ | `challenge-me` | — | `vision` · `with-docs` | new — Pocock-inspired one-question-at-a-time interview; `vision` is the standard 95%-confidence variant, `with-docs` adds doc/glossary awareness with a session-scoped glossary and load-bearing claim-vs-code verification |
46
47
 
47
48
  **Net change:** Phase 1 collapsed 15 atomics → 3 clusters; Phase 2
48
49
  collapses 26 atomics → 11 sub-command clusters. Sub-commands use
@@ -51,6 +52,49 @@ autocomplete them. The standalone `/review` surface that mirrors
51
52
  `judge solo` lives at
52
53
  [`commands/review-changes.md`](../../.agent-src.uncompressed/commands/review-changes.md).
53
54
 
55
+ ## Cluster depth and sub-command naming
56
+
57
+ Locked by [ADR-003](../decisions/ADR-003-flat-cluster-subs-and-colon-syntax.md)
58
+ (2026-05-07). The shape is the default for **every** new cluster and
59
+ every new sub-command added to an existing cluster.
60
+
61
+ 1. **Flat only.** A cluster has exactly one level of sub-commands.
62
+ No sub-sub-commands. A dispatcher routes `/cluster <sub>` to a
63
+ single sub-file; sub-files do not dispatch further. Two-level
64
+ dispatch is a deliberate contract change requiring a new ADR
65
+ superseding ADR-003.
66
+
67
+ 2. **Composite sub-names for verb+scope.** When a cluster carries
68
+ multiple verbs (e.g. authoring + execution), encode the verb in
69
+ the sub-name, joined with `-`:
70
+
71
+ - ✅ `/roadmap:create` · `/roadmap:process-step` ·
72
+ `/roadmap:process-phase` · `/roadmap:process-full`
73
+ - ❌ `/roadmap:process:phase` (sub-sub — forbidden)
74
+ - ❌ `/roadmap:step` · `/roadmap:phase` · `/roadmap:full`
75
+ (verb hidden — breaks symmetry with `create`)
76
+ - ❌ separate `/roadmap-process` cluster (domain split — forbidden
77
+ when one cluster can carry both verbs flat)
78
+
79
+ Sibling sub-names stay in the same shape: either all bare verbs,
80
+ all bare nouns/scopes, or all composite. Mixing bare and composite
81
+ in the same cluster is allowed only when the bare sibling is the
82
+ cluster's primary verb (e.g. `/roadmap:create` + `process-*`
83
+ composites).
84
+
85
+ 3. **Sub-name format.** kebab-case (`pr-bots`, `process-phase`),
86
+ ≤ 24 chars, no leading verb that duplicates the cluster name
87
+ (use `/fix:ci`, not `/fix:fix-ci`).
88
+
89
+ 4. **Colon-canonical invocation.**
90
+ `/<cluster>:<sub>` is the canonical form everywhere — catalog,
91
+ docs, examples, deprecation warnings. The space-separated form
92
+ `/<cluster> <sub>` is a first-class equivalent and routes to the
93
+ same dispatcher; it must keep working. Autocompletion-aware UIs
94
+ surface the colon form because it stays a single token. Full
95
+ semantics: [`slash-command-routing-policy-mechanics.md`](../../.agent-src.uncompressed/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md)
96
+ § Routing semantics.
97
+
54
98
  ## Frontmatter contract
55
99
 
56
100
  A new command file under `.agent-src.uncompressed/commands/` MUST
@@ -120,6 +120,78 @@ behavior — the per-profile table is just the initial default.
120
120
 
121
121
  `custom` ignores these defaults — set every value explicitly.
122
122
 
123
+ ### Verbosity
124
+
125
+ The `verbosity:` block and `caveman.speak_scope` control how much narration
126
+ the agent emits around routine actions. Defaults are tuned for token
127
+ frugality — flip values to `true` (or higher tier) to restore legacy verbose
128
+ output. Iron-Law gates (`commit-policy`, `scope-control` git-ops,
129
+ `non-destructive-by-default`) ALWAYS confirm regardless of these flags.
130
+
131
+ | Setting | Values | Default | Description |
132
+ |---|---|---|---|
133
+ | `verbosity.preview_artifacts` | `true`, `false` | `false` | Show generated commit messages, PR titles/bodies, and branch names before acting. `false` = use the generated content directly. |
134
+ | `verbosity.routine_confirmations` | `true`, `false` | `false` | Confirmation prompts for routine workflow steps when there is one obvious answer ("looks good — commit?"). Iron-Law gates always ask regardless. |
135
+ | `verbosity.offer_council_in_delivery` | `true`, `false` | `false` | Offer "run AI Council on this?" inside delivery commands (`/feature-plan`, `/review-changes`, `/roadmap-create`). The `/council` command itself is unaffected. |
136
+ | `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. |
137
+ | `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. |
138
+ | `verbosity.script_output` | `silent`, `minimal`, `verbose` | `minimal` | Stdout chatter from `scripts/*.py`, `scripts/*.sh`, and `.augment/scripts/`. `silent` = stderr only; `minimal` = one summary line per script; `verbose` = pre-Phase-10 per-step prints. Iron-Law surfaces (release confirms, install secrets prompts, error markers) ignore this key. |
139
+ | `verbosity.taskfile_command_echo` | `true`, `false` | `false` | Suppress the `task: [name] cmd...` echo Taskfile prints before each task body. `true` = echoes preserved (legacy behaviour); `false` = `silent: true` is set on every Phase-10 safe task. |
140
+ | `caveman.speak_scope` | `off`, `prose_only`, `aggressive` | `prose_only` | How widely caveman-speak grammar applies in chat. `off` = no caveman; `prose_only` = caveman in body prose, numbered options + Iron-Law-literal blocks stay full prose; `aggressive` = caveman everywhere except Iron-Law literals. |
141
+
142
+ The cross-rule index for these defaults lives in
143
+ [`.agent-src.uncompressed/contexts/contracts/frugality-charter.md`](../.agent-src.uncompressed/contexts/contracts/frugality-charter.md).
144
+ Writer skills (`skill-writing`, `rule-writing`, `command-writing`,
145
+ `guideline-writing`, `roadmap-writing`, `persona-writing`,
146
+ `agent-docs-writing`, `context-authoring`, `conventional-commits-writing`,
147
+ `readme-writing`, `readme-writing-package`, `adr-create`) cite the charter
148
+ under their `## Frugality Standards` section.
149
+
150
+ #### Behavior change vs. legacy — `/create-pr` silent draft default
151
+
152
+ When `verbosity.routine_confirmations: false` (the new default),
153
+ `/create-pr` creates the PR as a **draft silently** instead of asking
154
+ "draft or ready?". A one-line postscript surfaces the override:
155
+
156
+ ```
157
+ → #42 opened: https://github.com/org/repo/pull/42
158
+ → created as draft — run `gh pr ready 42` to flip
159
+ ```
160
+
161
+ Per-invocation overrides (no settings change required):
162
+
163
+ | You want | Argument |
164
+ |---|---|
165
+ | Ready-for-review immediately | `/create-pr:ready` or `/create-pr:final` |
166
+ | Explicit draft (no postscript change) | `/create-pr:draft` |
167
+ | Numbered prompt restored | set `verbosity.routine_confirmations: true` |
168
+
169
+ `/create-pr` still skips the AI council prompt unconditionally per the
170
+ existing carve-out — `verbosity.offer_council_in_delivery` does not
171
+ re-enable it. Use `/council diff:<base>..<head>` separately.
172
+
173
+ #### Script-output level — env-var overrides
174
+
175
+ `verbosity.script_output` is read by `scripts/_lib/script_output.py`.
176
+ For incident debugging when editing `.agent-settings.yml` is awkward,
177
+ two env vars override the file for the current process tree:
178
+
179
+ | Env var | Value | Effect |
180
+ |---|---|---|
181
+ | `AGENT_SCRIPT_VERBOSITY` | `silent`, `minimal`, `verbose` | Authoritative — wins over the settings file |
182
+ | `SCRIPT_OUTPUT_VERBOSE` | `1` | Alias — equivalent to `AGENT_SCRIPT_VERBOSITY=verbose` |
183
+
184
+ Once the helper resolves the level, it exports the resolved value back
185
+ into `AGENT_SCRIPT_VERBOSITY` so child processes inherit the same level
186
+ without re-reading the settings file. Per-call `--quiet` flags on a
187
+ child script still win at the call site (per-call override > inherited
188
+ level).
189
+
190
+ Iron-Law surfaces — production-deploy confirmation prompts in
191
+ `scripts/release.py`, secret-installer prompts in `install_*_key.sh`,
192
+ and any output via `error()` — bypass the helper and stay loud at every
193
+ level.
194
+
123
195
  ---
124
196
 
125
197
  ## Project documentation
@@ -0,0 +1,126 @@
1
+ # ADR-003 — Flat Cluster Sub-Commands and Colon-Canonical Invocation
2
+
3
+ - **Status:** Accepted (2026-05-07)
4
+ - **Phase:** Command-cluster contract (Phase 2 follow-up)
5
+ - **Supersedes:** none — extends the locked cluster set in
6
+ `docs/contracts/command-clusters.md`.
7
+ - **Related:** `roadmap-process` migration (2026-05-07) — the trigger
8
+ that forced the decision; `contexts/execution/roadmap-process-loop.md`
9
+ (the shared mechanics extracted alongside).
10
+
11
+ ## Context
12
+
13
+ `roadmap-execute` was being replaced by an autonomous-execution surface
14
+ with three scopes: single step, single phase, full roadmap. The
15
+ question was where those three commands live in the cluster catalog.
16
+ Four shapes were on the table:
17
+
18
+ - **A — separate `/roadmap-process` cluster.** Two top-level clusters
19
+ (`/roadmap` for authoring, `/roadmap-process` for execution).
20
+ - **B — sub-sub-commands** (`/roadmap:process:phase`). One cluster,
21
+ two-level dispatch.
22
+ - **C — flat under `/roadmap`, no verb** (`/roadmap:step` ·
23
+ `/roadmap:phase` · `/roadmap:full`). Verb hidden in cluster
24
+ description.
25
+ - **D — flat under `/roadmap`, verb fused with scope**
26
+ (`/roadmap:process-step` · `/roadmap:process-phase` ·
27
+ `/roadmap:process-full`). One cluster, one dispatch level, composite
28
+ sub-name carries the verb.
29
+
30
+ Existing infrastructure assumed a single dispatch level: the contract
31
+ table at `docs/contracts/command-clusters.md`, the linter
32
+ `scripts/lint_no_new_atomic_commands.py`, and the dispatcher-shape
33
+ checker `scripts/check_cluster_patterns.py` all parse one column of
34
+ sub-names per cluster.
35
+
36
+ ## Decision
37
+
38
+ 1. **Cluster depth stays flat.** A cluster has exactly one level of
39
+ sub-commands. No sub-sub-commands. Option B is rejected.
40
+
41
+ 2. **Verb-and-scope sub-commands use a composite name** joined by `-`
42
+ (`process-step`, `process-phase`, `process-full`). The verb stays
43
+ visible in the autocomplete list; symmetry with sibling
44
+ sub-commands (`/roadmap:create`) is preserved as
45
+ verb-or-noun-per-sub. Option D wins over C.
46
+
47
+ 3. **Colon is the canonical invocation form** (`/<cluster>:<sub>`).
48
+ The space-separated form (`/<cluster> <sub>`) remains a
49
+ first-class equivalent — both forms route to the same dispatcher.
50
+ Autocompletion-aware UIs (Claude Code picker, IDE slash-menus,
51
+ shell completers) MUST surface the colon form because it stays a
52
+ single token.
53
+
54
+ 4. **Future verb+scope clusters follow the same shape.** Any future
55
+ cluster with multiple verbs (e.g. an authoring verb and an
56
+ execution verb) uses composite sub-names rather than introducing a
57
+ second cluster or a second dispatch level.
58
+
59
+ ## Rationale
60
+
61
+ - **Option A (separate cluster)** scatters one domain across two
62
+ top-level surfaces. Users have to remember which cluster owns
63
+ which verb; the catalog grows without adding capability.
64
+ - **Option B (sub-sub)** would be the first two-level dispatcher in
65
+ the repo. Cost: contract change in `command-clusters.md`,
66
+ linter change in `lint_no_new_atomic_commands.py` (parse a second
67
+ column), pattern-checker change in `check_cluster_patterns.py`
68
+ (allow nested dispatch sections), plus an ADR to set the precedent
69
+ — for a cohesion benefit that Option D delivers at zero
70
+ architectural cost.
71
+ - **Option C (no verb)** breaks symmetry: `/roadmap:create` is a
72
+ verb, `/roadmap:phase` is a scope. The mental model becomes
73
+ inconsistent in the same cluster.
74
+ - **Option D (composite verb-scope)** keeps the cluster flat, keeps
75
+ the verb visible, costs nothing in the linter or contract
76
+ parser (one row, four sub-names, kebab-case as before), and
77
+ scales to any future verb+scope cluster.
78
+
79
+ The colon form was already canonical for flag-clusters
80
+ (`/commit:in-chunks`, `/create-pr:description-only`). Promoting it
81
+ to the canonical form for dispatcher-clusters too unifies the
82
+ catalog: every sub-command is a single token.
83
+
84
+ ## Consequences
85
+
86
+ - **Pro:** Zero architectural cost. The locked contract, both
87
+ linters, the dispatcher pattern checker, and the routing rule all
88
+ keep working unchanged. The cluster row in
89
+ `docs/contracts/command-clusters.md` extends with three new
90
+ sub-names.
91
+ - **Pro:** Single-token autocompletion across the entire command
92
+ surface. Greppable in chat history and logs.
93
+ - **Pro:** Domain cohesion — `/roadmap:*` covers the full
94
+ authoring + execution lifecycle.
95
+ - **Con:** Sub-names get longer when the verb is non-obvious from the
96
+ cluster. `/roadmap:process-phase` is 24 chars vs.
97
+ `/roadmap-process:phase` (Option A, 23 chars) or
98
+ `/roadmap:phase` (Option C, 16 chars). Acceptable trade for
99
+ symmetry and zero contract churn.
100
+ - **Con:** A cluster cannot grow into a true two-level surface
101
+ without revisiting this ADR. Rolling back to Option B is the
102
+ escape hatch if a future cluster genuinely needs nested verbs.
103
+
104
+ ## Rollback
105
+
106
+ If a future cluster grows past ~8 sibling sub-commands and the
107
+ composite-name pattern produces ambiguous or unreadable
108
+ sub-commands, revisit by:
109
+
110
+ 1. Splitting the cluster into two flat clusters (Option A on a
111
+ case-by-case basis), or
112
+ 2. Introducing sub-sub-commands as a deliberate contract change —
113
+ updating `command-clusters.md`, `lint_no_new_atomic_commands.py`,
114
+ `check_cluster_patterns.py`, and superseding this ADR.
115
+
116
+ Both moves are reversible. This ADR locks the default, not the
117
+ ceiling.
118
+
119
+ ## See also
120
+
121
+ - [`docs/contracts/command-clusters.md`](../contracts/command-clusters.md)
122
+ — locked cluster set + sub-command naming contract.
123
+ - [`.agent-src.uncompressed/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md`](../../.agent-src.uncompressed/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md)
124
+ — runtime routing semantics and the colon-canonical rule.
125
+ - [`.agent-src.uncompressed/contexts/execution/roadmap-process-loop.md`](../../.agent-src.uncompressed/contexts/execution/roadmap-process-loop.md)
126
+ — the shared mechanics that motivated the cluster shape.
@@ -0,0 +1,15 @@
1
+ # ADR Index
2
+
3
+ _Auto-generated by `scripts/adr/regenerate_index.py`. Do not edit._
4
+
5
+ | # | Title | Status | Date | Supersedes |
6
+ |---|---|---|---|---|
7
+ | [ADR-001](ADR-001-kernel-swap-deferred.md) | Kernel Swap Deferred | accepted | 2026-05-06 | — |
8
+ | [ADR-002](ADR-002-kernel-bucket-overrides.md) | Kernel Bucket Overrides | — | — | — |
9
+ | [ADR-003](ADR-003-flat-cluster-subs-and-colon-syntax.md) | Flat Cluster Subs And Colon Syntax | — | — | — |
10
+
11
+ ## Unnumbered (legacy)
12
+
13
+ | # | Title | Status | Date | Supersedes |
14
+ |---|---|---|---|---|
15
+ | [ADR-rule-kernel-and-router](ADR-rule-kernel-and-router.md) | — | — | — | — |
@@ -115,7 +115,7 @@ Your agent is now:
115
115
  - **Respecting your codebase** — no conflicting patterns
116
116
  - **Following standards** — consistent code quality
117
117
 
118
- This is enforced automatically by 58 rules. No configuration needed.
118
+ This is enforced automatically by 60 rules. No configuration needed.
119
119
 
120
120
  ---
121
121
 
@@ -153,7 +153,7 @@ Your agent now understands slash commands:
153
153
  | `/quality-fix` | Run and fix all quality checks |
154
154
  | `/chat-history` | Inspect the persistent chat-history log (read-only `show`) |
155
155
 
156
- → [Browse all 95 active commands](../.agent-src/commands/)
156
+ → [Browse all 103 active commands](../.agent-src/commands/)
157
157
 
158
158
  ---
159
159
 
@@ -12,21 +12,22 @@ always-loaded rule body — extracted to fit the always-rule budget.
12
12
 
13
13
  ## Vague-request triggers — example questions
14
14
 
15
- Companion to `ask-when-uncertain` § Vague-request triggers. The rule
16
- lists the trigger patterns and the "missing info" columns; this file
17
- adds the example question to ask back at the user.
15
+ Companion to `ask-when-uncertain` § Vague-request triggers. This
16
+ section is the canonical home for the nine trigger patterns, the
17
+ missing-info each one hides, and the example clarifying question
18
+ the rule cites it instead of restating the catalog.
18
19
 
19
- | Pattern | Example clarifying question |
20
- |---|---|
21
- | "improve / optimize this" | "Optimize for what — execution speed or readability?" |
22
- | "add caching" | "Which cache driver, and what invalidates it?" |
23
- | "make it better / cleaner" | "What specifically feels wrong in the current code?" |
24
- | "clean up this file" | "Remove unused code, reformat, or restructure?" |
25
- | "fix this" (without specifying) | "What output/behavior is wrong right now?" |
26
- | "refactor X" | "Refactor toward what — smaller methods, extract class, or something else?" |
27
- | "use best practices" | "Best practices for what specifically — testing, naming, structure?" |
28
- | "handle errors properly" | "For which failure modes, and what should happen on error?" |
29
- | "add a UI / component / tile / page" when the repo mixes frameworks | "This repo uses {A} and {B} for UI — which one for this?" |
20
+ | Pattern | Missing info | Example clarifying question |
21
+ |---|---|---|
22
+ | "improve / optimize this" | metric — speed, readability, memory? | "Optimize for what — execution speed or readability?" |
23
+ | "add caching" | store, scope, invalidation | "Which cache driver, and what invalidates it?" |
24
+ | "make it better / cleaner" | by what standard? | "What specifically feels wrong in the current code?" |
25
+ | "clean up this file" | dead code, format, refactor? | "Remove unused code, reformat, or restructure?" |
26
+ | "fix this" (no symptom) | what output is wrong? | "What output/behavior is wrong right now?" |
27
+ | "refactor X" | target pattern, boundaries | "Refactor toward what — smaller methods, extract class, or something else?" |
28
+ | "use best practices" | whose, for what? | "Best practices for what specifically — testing, naming, structure?" |
29
+ | "handle errors properly" | which errors — log/retry/propagate? | "For which failure modes, and what should happen on error?" |
30
+ | "add a UI / component / tile / page" in mixed-framework repo | which stack? | "This repo uses {A} and {B} for UI — which one for this?" |
30
31
 
31
32
  ## One-question-per-turn — why serial always wins
32
33
 
@@ -49,8 +50,10 @@ next. Serial preserves the framing; parallel destroys it.
49
50
 
50
51
  ## Cheap-question class catalog — extended examples
51
52
 
52
- Companion to `no-cheap-questions` § What counts as cheap. The rule
53
- lists the classes; this file adds longer-form examples per class.
53
+ Companion to `no-cheap-questions` § What counts as cheap. This
54
+ section is the canonical home for the nine cheap-question classes
55
+ and their per-class patterns — the rule cites it instead of
56
+ restating the catalog.
54
57
 
55
58
  | Class | Pattern · why cheap | Concrete example |
56
59
  |---|---|---|
@@ -66,9 +69,10 @@ lists the classes; this file adds longer-form examples per class.
66
69
 
67
70
  ## Direct-answers — severity-tiered claim examples
68
71
 
69
- Companion to `direct-answers` § Iron Law 2 (no invented facts). The
70
- rule lists the severity table; this file adds concrete examples and
71
- hedge-language patterns.
72
+ Companion to `direct-answers` § Iron Law 2 (no invented facts). This
73
+ section is the canonical home for the severity tiers, per-tier
74
+ verification actions, and the override carve-out — the rule cites it
75
+ instead of restating the table.
72
76
 
73
77
  | Severity | Examples | Verification action |
74
78
  |---|---|---|
@@ -76,6 +80,10 @@ hedge-language patterns.
76
80
  | **Medium — project-shape** | "This project uses Pest for testing", "controllers live under `app/Http/Controllers`" | Verify if one tool call reaches it; otherwise hedge: *"I'd guess X — not checked"*. |
77
81
  | **Low — well-known idioms** | "PHP `array_map` returns a new array", "git tags are immutable", "JS arrays are zero-indexed" | Inference acceptable. Mark as inference if not 100% sure. |
78
82
 
83
+ **Override:** "just guess" / "rough estimate" / "skip verify" in the
84
+ user's turn drops every claim to **Low** for that turn only. Reverts
85
+ on the next turn unless the user repeats the override.
86
+
79
87
  Hedge-language patterns:
80
88
 
81
89
  - ✅ "haven't verified X — likely from {known-similar-codebase}"
@@ -0,0 +1,17 @@
1
+ # Decidable Carve-Out Predicates
2
+
3
+ Companion to [`frugality-charter`](../../../.agent-src.uncompressed/contexts/contracts/frugality-charter.md). Each carve-out below carries a one-sentence test. If the test cannot be answered yes/no from the artifact alone, the carve-out does not fire and default-terse rules apply.
4
+
5
+ ## Predicates
6
+
7
+ - **Iron-Law literal** — the prose is an ALL-CAPS fenced block inside a rule whose title appears in [`docs/contracts/kernel-membership.md`](../../contracts/kernel-membership.md).
8
+
9
+ - **Numbered-options with genuine trade-off** — the options differ in consequence (a chosen path produces a measurably different artifact or state), not in sequencing or output format. Per [`no-cheap-questions § What counts as cheap`](../../../.agent-src.uncompressed/rules/no-cheap-questions.md#what-counts-as-cheap).
10
+
11
+ - **Security-sensitive prompt** — the prompt requires credential input OR modifies auth / tenant / secret state, matching a trigger in [`security-sensitive-stop`](../../../.agent-src.uncompressed/rules/security-sensitive-stop.md).
12
+
13
+ - **Structured CLI contract** — the script's stdout is consumed by another script (a downstream parser exists under `scripts/` or `.augment/scripts/`), so the format is part of an interface contract, not narration.
14
+
15
+ ## How to use
16
+
17
+ Writer skills (`skill-writing`, `rule-writing`, `command-writing`, `guideline-writing`, `context-authoring`, `agent-docs-writing`, `conventional-commits-writing`, `readme-writing`, `readme-writing-package`, `adr-create`, `persona-writing`, `roadmap-writing`) cite this file when an artifact's pre-save check needs a decidable test for a carve-out exception. The default is **terse** — predicates here only fire when the artifact provides the yes/no evidence.