@event4u/agent-config 1.14.0 → 1.16.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 (293) hide show
  1. package/.agent-src/commands/agent-handoff.md +1 -1
  2. package/.agent-src/commands/bug-fix.md +3 -3
  3. package/.agent-src/commands/bug-investigate.md +2 -2
  4. package/.agent-src/commands/chat-history-checkpoint.md +3 -3
  5. package/.agent-src/commands/chat-history-clear.md +2 -2
  6. package/.agent-src/commands/chat-history-resume.md +2 -2
  7. package/.agent-src/commands/chat-history.md +3 -3
  8. package/.agent-src/commands/check-current-md.md +44 -33
  9. package/.agent-src/commands/commit-in-chunks.md +43 -23
  10. package/.agent-src/commands/compress.md +34 -2
  11. package/.agent-src/commands/council-design.md +96 -0
  12. package/.agent-src/commands/council-optimize.md +115 -0
  13. package/.agent-src/commands/council-pr.md +123 -0
  14. package/.agent-src/commands/council.md +219 -0
  15. package/.agent-src/commands/create-pr.md +23 -0
  16. package/.agent-src/commands/do-and-judge.md +3 -3
  17. package/.agent-src/commands/do-in-steps.md +4 -4
  18. package/.agent-src/commands/e2e-heal.md +1 -1
  19. package/.agent-src/commands/e2e-plan.md +1 -1
  20. package/.agent-src/commands/feature-dev.md +8 -0
  21. package/.agent-src/commands/feature-explore.md +6 -1
  22. package/.agent-src/commands/feature-plan.md +33 -2
  23. package/.agent-src/commands/feature-refactor.md +5 -0
  24. package/.agent-src/commands/feature-roadmap.md +8 -3
  25. package/.agent-src/commands/feature.md +58 -0
  26. package/.agent-src/commands/fix-ci.md +5 -0
  27. package/.agent-src/commands/fix-portability.md +7 -2
  28. package/.agent-src/commands/fix-pr-bot-comments.md +5 -0
  29. package/.agent-src/commands/fix-pr-comments.md +5 -0
  30. package/.agent-src/commands/fix-pr-developer-comments.md +5 -0
  31. package/.agent-src/commands/fix-references.md +5 -0
  32. package/.agent-src/commands/fix-seeder.md +5 -0
  33. package/.agent-src/commands/fix.md +60 -0
  34. package/.agent-src/commands/jira-ticket.md +1 -1
  35. package/.agent-src/commands/judge.md +1 -1
  36. package/.agent-src/commands/memory-add.md +3 -3
  37. package/.agent-src/commands/memory-full.md +2 -2
  38. package/.agent-src/commands/memory-promote.md +2 -2
  39. package/.agent-src/commands/mode.md +5 -5
  40. package/.agent-src/commands/onboard.md +17 -8
  41. package/.agent-src/commands/optimize-agents.md +6 -1
  42. package/.agent-src/commands/optimize-augmentignore.md +14 -0
  43. package/.agent-src/commands/optimize-rtk-filters.md +5 -0
  44. package/.agent-src/commands/optimize-skills.md +6 -1
  45. package/.agent-src/commands/optimize.md +54 -0
  46. package/.agent-src/commands/propose-memory.md +2 -2
  47. package/.agent-src/commands/refine-ticket.md +9 -7
  48. package/.agent-src/commands/review-changes.md +61 -9
  49. package/.agent-src/commands/review-routing.md +1 -1
  50. package/.agent-src/commands/roadmap-create.md +42 -4
  51. package/.agent-src/commands/roadmap-execute.md +9 -7
  52. package/.agent-src/commands/set-cost-profile.md +11 -3
  53. package/.agent-src/commands/sync-agent-settings.md +11 -2
  54. package/.agent-src/commands/tests-create.md +1 -1
  55. package/.agent-src/commands/tests-execute.md +2 -3
  56. package/.agent-src/commands/upstream-contribute.md +1 -1
  57. package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
  58. package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
  59. package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
  60. package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
  61. package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
  62. package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
  63. package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
  64. package/.agent-src/personas/README.md +1 -1
  65. package/.agent-src/rules/agent-authority.md +24 -0
  66. package/.agent-src/rules/architecture.md +1 -1
  67. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  68. package/.agent-src/rules/artifact-engagement-recording.md +2 -2
  69. package/.agent-src/rules/ask-when-uncertain.md +1 -1
  70. package/.agent-src/rules/augment-portability.md +56 -37
  71. package/.agent-src/rules/autonomous-execution.md +78 -114
  72. package/.agent-src/rules/capture-learnings.md +1 -1
  73. package/.agent-src/rules/chat-history-cadence.md +109 -0
  74. package/.agent-src/rules/chat-history-ownership.md +123 -0
  75. package/.agent-src/rules/chat-history-visibility.md +96 -0
  76. package/.agent-src/rules/cli-output-handling.md +1 -1
  77. package/.agent-src/rules/{command-suggestion.md → command-suggestion-policy.md} +10 -9
  78. package/.agent-src/rules/commit-conventions.md +1 -1
  79. package/.agent-src/rules/commit-policy.md +43 -61
  80. package/.agent-src/rules/context-hygiene.md +3 -3
  81. package/.agent-src/rules/direct-answers.md +2 -2
  82. package/.agent-src/rules/docs-sync.md +1 -1
  83. package/.agent-src/rules/e2e-testing.md +1 -1
  84. package/.agent-src/rules/guidelines.md +4 -4
  85. package/.agent-src/rules/improve-before-implement.md +2 -2
  86. package/.agent-src/rules/language-and-tone.md +41 -96
  87. package/.agent-src/rules/minimal-safe-diff.md +3 -3
  88. package/.agent-src/rules/model-recommendation.md +4 -4
  89. package/.agent-src/rules/no-cheap-questions.md +89 -0
  90. package/.agent-src/rules/non-destructive-by-default.md +25 -59
  91. package/.agent-src/rules/onboarding-gate.md +5 -5
  92. package/.agent-src/rules/review-routing-awareness.md +9 -9
  93. package/.agent-src/rules/roadmap-progress-sync.md +132 -80
  94. package/.agent-src/rules/role-mode-adherence.md +3 -3
  95. package/.agent-src/rules/scope-control.md +65 -46
  96. package/.agent-src/rules/security-sensitive-stop.md +2 -2
  97. package/.agent-src/rules/size-enforcement.md +3 -2
  98. package/.agent-src/rules/think-before-action.md +5 -5
  99. package/.agent-src/rules/token-efficiency.md +4 -4
  100. package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +3 -3
  101. package/.agent-src/rules/user-interaction.md +31 -7
  102. package/.agent-src/rules/verify-before-complete.md +12 -67
  103. package/.agent-src/scripts/update_roadmap_progress.py +65 -8
  104. package/.agent-src/skills/ai-council/SKILL.md +333 -0
  105. package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
  106. package/.agent-src/skills/blade-ui/SKILL.md +30 -11
  107. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  108. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
  109. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  110. package/.agent-src/skills/command-writing/SKILL.md +16 -5
  111. package/.agent-src/skills/conventional-commits-writing/SKILL.md +1 -1
  112. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +2 -2
  113. package/.agent-src/skills/developer-like-execution/SKILL.md +2 -2
  114. package/.agent-src/skills/existing-ui-audit/SKILL.md +24 -9
  115. package/.agent-src/skills/fe-design/SKILL.md +20 -15
  116. package/.agent-src/skills/file-editor/SKILL.md +9 -0
  117. package/.agent-src/skills/flux/SKILL.md +1 -1
  118. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  119. package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
  120. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  121. package/.agent-src/skills/livewire/SKILL.md +27 -8
  122. package/.agent-src/skills/override-management/SKILL.md +2 -2
  123. package/.agent-src/skills/php-coder/SKILL.md +1 -1
  124. package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
  125. package/.agent-src/skills/readme-reviewer/SKILL.md +1 -1
  126. package/.agent-src/skills/readme-writing/SKILL.md +1 -1
  127. package/.agent-src/skills/readme-writing-package/SKILL.md +1 -1
  128. package/.agent-src/skills/receiving-code-review/SKILL.md +1 -1
  129. package/.agent-src/skills/refine-ticket/SKILL.md +30 -24
  130. package/.agent-src/skills/review-routing/SKILL.md +2 -2
  131. package/.agent-src/skills/roadmap-management/SKILL.md +22 -16
  132. package/.agent-src/skills/rule-writing/SKILL.md +1 -1
  133. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  134. package/.agent-src/skills/skill-writing/SKILL.md +6 -6
  135. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
  136. package/.agent-src/skills/systematic-debugging/SKILL.md +1 -1
  137. package/.agent-src/skills/upstream-contribute/SKILL.md +3 -3
  138. package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  139. package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +2 -2
  140. package/.agent-src/templates/agent-settings.md +9 -9
  141. package/.agent-src/templates/contexts/auth-model.md +1 -1
  142. package/.agent-src/templates/roadmaps.md +9 -8
  143. package/.agent-src/templates/scripts/README.md +2 -2
  144. package/.agent-src/templates/scripts/memory_lookup.py +1 -1
  145. package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
  146. package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
  147. package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
  148. package/.agent-src/templates/scripts/telemetry_record.py +14 -1
  149. package/.agent-src/templates/scripts/work_engine/__init__.py +2 -2
  150. package/.agent-src/templates/scripts/work_engine/cli.py +64 -461
  151. package/.agent-src/templates/scripts/work_engine/cli_args.py +116 -0
  152. package/.agent-src/templates/scripts/work_engine/delivery_state.py +3 -3
  153. package/.agent-src/templates/scripts/work_engine/directives/backend/__init__.py +1 -1
  154. package/.agent-src/templates/scripts/work_engine/directives/backend/implement.py +1 -1
  155. package/.agent-src/templates/scripts/work_engine/directives/backend/memory.py +1 -1
  156. package/.agent-src/templates/scripts/work_engine/directives/backend/plan.py +1 -1
  157. package/.agent-src/templates/scripts/work_engine/directives/backend/report.py +1 -1
  158. package/.agent-src/templates/scripts/work_engine/dispatcher.py +1 -1
  159. package/.agent-src/templates/scripts/work_engine/emitters.py +43 -0
  160. package/.agent-src/templates/scripts/work_engine/errors.py +19 -0
  161. package/.agent-src/templates/scripts/work_engine/hook_bootstrap.py +76 -0
  162. package/.agent-src/templates/scripts/work_engine/input_builders.py +163 -0
  163. package/.agent-src/templates/scripts/work_engine/migration/v0_to_v1.py +34 -2
  164. package/.agent-src/templates/scripts/work_engine/persona_policy.py +1 -1
  165. package/.agent-src/templates/scripts/work_engine/resolvers/prompt.py +1 -1
  166. package/.agent-src/templates/scripts/work_engine/state_io.py +202 -0
  167. package/.claude-plugin/marketplace.json +10 -2
  168. package/AGENTS.md +16 -12
  169. package/CHANGELOG.md +206 -9
  170. package/README.md +51 -52
  171. package/config/agent-settings.template.yml +58 -1
  172. package/config/gitignore-block.txt +3 -0
  173. package/docs/MIGRATION.md +122 -0
  174. package/docs/architecture.md +83 -34
  175. package/docs/catalog.md +331 -0
  176. package/docs/contracts/STABILITY.md +134 -0
  177. package/docs/contracts/adr-chat-history-split.md +132 -0
  178. package/docs/contracts/adr-command-suggestion.md +146 -0
  179. package/docs/contracts/adr-implement-ticket-runtime.md +122 -0
  180. package/docs/contracts/adr-product-ui-track.md +384 -0
  181. package/docs/contracts/adr-prompt-driven-execution.md +187 -0
  182. package/docs/contracts/agent-memory-contract.md +149 -0
  183. package/docs/contracts/artifact-engagement-flow.md +262 -0
  184. package/docs/contracts/command-clusters.md +126 -0
  185. package/docs/contracts/command-suggestion-flow.md +148 -0
  186. package/docs/contracts/implement-ticket-flow.md +628 -0
  187. package/docs/contracts/linear-ai-rules-inclusion.md +143 -0
  188. package/docs/contracts/linear-ai-three-layers.md +131 -0
  189. package/docs/contracts/load-context-schema.md +186 -0
  190. package/docs/contracts/rule-interactions.md +107 -0
  191. package/docs/contracts/rule-interactions.yml +238 -0
  192. package/docs/contracts/rule-priority-hierarchy.md +87 -0
  193. package/docs/contracts/ui-stack-extension.md +236 -0
  194. package/docs/contracts/ui-track-flow.md +338 -0
  195. package/docs/customization.md +14 -0
  196. package/docs/end-to-end-walkthroughs.md +165 -0
  197. package/docs/getting-started.md +27 -9
  198. package/docs/github-topics.md +12 -3
  199. package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
  200. package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
  201. package/docs/guidelines/php/git.md +164 -0
  202. package/docs/installation.md +42 -6
  203. package/docs/migrations/commands-1.15.0.md +112 -0
  204. package/docs/showcase.md +9 -4
  205. package/docs/skills-catalog.md +14 -8
  206. package/docs/ui-track-mental-model.md +121 -0
  207. package/llms.txt +13 -7
  208. package/package.json +1 -1
  209. package/scripts/agent-config +23 -0
  210. package/scripts/ai_council/__init__.py +39 -0
  211. package/scripts/ai_council/_default_prices.py +41 -0
  212. package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
  213. package/scripts/ai_council/_one_off_roundtrip.py +106 -0
  214. package/scripts/ai_council/budget_guard.py +172 -0
  215. package/scripts/ai_council/bundler.py +261 -0
  216. package/scripts/ai_council/clients.py +381 -0
  217. package/scripts/ai_council/modes.py +127 -0
  218. package/scripts/ai_council/orchestrator.py +350 -0
  219. package/scripts/ai_council/pricing.py +213 -0
  220. package/scripts/ai_council/project_context.py +159 -0
  221. package/scripts/ai_council/prompts.py +232 -0
  222. package/scripts/ai_council/session.py +144 -0
  223. package/scripts/build_linear_digest.py +4 -4
  224. package/scripts/check_always_budget.py +126 -0
  225. package/scripts/check_augmentignore.py +69 -0
  226. package/scripts/check_command_count_messaging.py +120 -0
  227. package/scripts/check_portability.py +57 -0
  228. package/scripts/check_public_catalog_links.py +122 -0
  229. package/scripts/check_public_links.py +185 -0
  230. package/scripts/check_references.py +5 -1
  231. package/scripts/check_roadmap_trackable.py +111 -0
  232. package/scripts/command_suggester/cooldown.py +1 -1
  233. package/scripts/generate_index.py +266 -0
  234. package/scripts/install_anthropic_key.sh +5 -0
  235. package/scripts/install_openai_key.sh +106 -0
  236. package/scripts/lint_load_context.py +163 -0
  237. package/scripts/lint_no_new_atomic_commands.py +179 -0
  238. package/scripts/lint_rule_interactions.py +149 -0
  239. package/scripts/memory_lookup.py +1 -1
  240. package/scripts/release.py +297 -64
  241. package/scripts/schemas/command.schema.json +20 -0
  242. package/scripts/schemas/rule.schema.json +10 -0
  243. package/scripts/skill_linter.py +26 -4
  244. package/scripts/sync_agent_settings.py +1 -1
  245. package/scripts/update_counts.py +19 -4
  246. package/scripts/update_prices.py +124 -0
  247. package/.agent-src/guidelines/php/git.md +0 -96
  248. package/.agent-src/rules/chat-history.md +0 -200
  249. /package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +0 -0
  250. /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
  251. /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
  252. /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
  253. /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
  254. /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
  255. /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
  256. /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
  257. /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
  258. /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
  259. /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
  260. /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
  261. /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
  262. /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
  263. /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
  264. /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
  265. /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
  266. /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
  267. /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
  268. /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
  269. /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
  270. /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
  271. /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
  272. /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
  273. /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
  274. /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
  275. /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
  276. /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
  277. /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
  278. /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
  279. /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
  280. /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
  281. /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
  282. /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
  283. /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
  284. /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
  285. /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
  286. /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
  287. /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
  288. /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
  289. /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
  290. /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
  291. /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
  292. /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
  293. /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  type: "auto"
3
3
  alwaysApply: false
4
- description: "Security-sensitive code paths — authentication, authorization, billing, tenant boundaries, secrets, file uploads, external integrations, webhooks, public endpoints — stop and run threat analysis BEFORE editing"
4
+ description: "Security-sensitive paths — auth, billing, tenant boundaries, secrets, file uploads, external integrations, webhooks, public endpoints — stop and run threat analysis BEFORE editing"
5
5
  source: package
6
6
  ---
7
7
 
@@ -42,7 +42,7 @@ STOP writing code. Run the matching analysis skill first:
42
42
  | Wide refactor of security-sensitive code | `blast-radius-analyzer` |
43
43
 
44
44
  **Before the analysis, consult memory for prior incidents** on this
45
- surface. Via [`memory-access`](../guidelines/agent-infra/memory-access.md):
45
+ surface. Via [`memory-access`](../../docs/guidelines/agent-infra/memory-access.md):
46
46
 
47
47
  ```python
48
48
  from scripts.memory_lookup import retrieve
@@ -22,6 +22,7 @@ source: package
22
22
  - Rules and system instructions should stay well below 200 lines
23
23
  - Smaller (≈60 lines) is strongly preferred
24
24
 
25
- → Size limits and details: `.augment/guidelines/agent-infra/size-and-scope.md`
25
+ → Size limits and details: `../../docs/guidelines/agent-infra/size-and-scope.md`
26
26
 
27
- → Frontmatter contract: schemas live in `scripts/schemas/` and are enforced by `python3 scripts/validate_frontmatter.py`.
27
+ → Frontmatter contract: schemas live in `scripts/schemas/` and are enforced by
28
+ `python3 scripts/validate_frontmatter.py`.
@@ -1,7 +1,7 @@
1
1
  ---
2
- type: "always"
3
- description: "Always analyze before acting. Prefer targeted inspection, tests, and real verification over guessing or trial-and-error."
4
- alwaysApply: true
2
+ type: "auto"
3
+ description: "Before coding, modifying, or debugging analyze first, verify with real tools, never guess or trial-and-error"
4
+ alwaysApply: false
5
5
  source: package
6
6
  ---
7
7
 
@@ -16,7 +16,7 @@ source: package
16
16
  - If requirements are unclear, ask a precise clarification question instead of making hidden assumptions
17
17
  - Refactors must preserve behavior, validation, examples, and anti-failure guidance unless there is an explicit reason to change them
18
18
  - Do NOT modify code you do not fully understand — read it first, trace the flow, then change it
19
- - Multiple valid frameworks/patterns already in the codebase (Tailwind + Flux, multiple form libs, competing state stores) → do NOT pick one silently, ask. See [`no blind implementation`](../guidelines/agent-infra/agent-interaction-and-decision-quality.md#2-no-blind-implementation)
19
+ - Multiple valid frameworks/patterns already in the codebase (Tailwind + Flux, multiple form libs, competing state stores) → do NOT pick one silently, ask. See [`no blind implementation`](../../docs/guidelines/agent-infra/agent-interaction-and-decision-quality.md#2-no-blind-implementation)
20
20
 
21
21
  ## The Developer Workflow
22
22
 
@@ -33,7 +33,7 @@ Skipping steps 1-3 = #1 cause of wrong implementations and wasted retries.
33
33
  ## Consult memory before editing
34
34
 
35
35
  Before writing code for the touched paths, call
36
- [`memory-access`](../guidelines/agent-infra/memory-access.md):
36
+ [`memory-access`](../../docs/guidelines/agent-infra/memory-access.md):
37
37
 
38
38
  ```python
39
39
  from scripts.memory_lookup import retrieve
@@ -1,7 +1,7 @@
1
1
  ---
2
- type: "always"
3
- description: "Token efficiency — redirect output, minimize tool calls, keep responses concise"
4
- alwaysApply: true
2
+ type: "auto"
3
+ description: "When running CLI tools, fetching logs, or producing replies — redirect verbose output, minimize tool calls, keep replies concise"
4
+ alwaysApply: false
5
5
  source: package
6
6
  ---
7
7
 
@@ -96,4 +96,4 @@ When `personal.minimal_output: true`:
96
96
  - Debugging: OK to read more context around one error.
97
97
  - User explicitly asks for full output: show it.
98
98
 
99
- → Detailed patterns: `guidelines/agent-infra/output-patterns.md`
99
+ → Detailed patterns: `docs/guidelines/agent-infra/output-patterns.md`
@@ -1,7 +1,7 @@
1
1
  ---
2
- type: "always"
3
- description: "UI work never write a component, screen, or partial without existing-ui-audit findings populated in state.ui_audit; the audit is the gate, not a suggestion"
4
- alwaysApply: true
2
+ type: "auto"
3
+ description: "Writing or editing UI components, screens, partials, layouts, design tokens — require existing-ui-audit findings in state.ui_audit before non-trivial UI change; gate, not suggestion"
4
+ alwaysApply: false
5
5
  source: package
6
6
  ---
7
7
 
@@ -1,7 +1,7 @@
1
1
  ---
2
- type: "always"
3
- description: "User interaction — numbered options, progress indicators, summaries"
4
- alwaysApply: true
2
+ type: "auto"
3
+ description: "Asking the user a question, presenting options, or summarizing progress — numbered-options Iron Law, single-recommendation rule, progress indicators"
4
+ alwaysApply: false
5
5
  source: package
6
6
  ---
7
7
 
@@ -18,6 +18,7 @@ EXACTLY ONE LINE NAMES THE RECOMMENDED NUMBER. NO INLINE TAG. NO SECOND PROSE NU
18
18
  THE OPTION BLOCK STAYS NEUTRAL. THE RECOMMENDATION LINE IS THE ONLY SOURCE OF TRUTH.
19
19
  DRIFT BETWEEN OPTION-BLOCK AND PROSE IS STRUCTURALLY IMPOSSIBLE WHEN THE TAG DOES NOT EXIST.
20
20
  MISSING RECOMMENDATION = RULE VIOLATION, NOT A SLIP.
21
+ POSITION-AGNOSTIC. END-OF-TURN MENUS COUNT. NEXT-STEP LISTS COUNT. NO EXCEPTIONS.
21
22
  ```
22
23
 
23
24
  The agent has read the code, the contracts, the trade-offs. Refusing
@@ -25,6 +26,16 @@ to take a position dumps that work back on the user. Take the
25
26
  position; be wrong out loud if needed. "Egal, was bevorzugst Du?" /
26
27
  "no preference" is NEVER acceptable.
27
28
 
29
+ **Position-agnostic — closes the most common slip:** End-of-turn
30
+ "Wie weiter?" / "What next?" / "How to proceed?" / "How should we
31
+ continue?" blocks with numbered options are **numbered-options
32
+ blocks**. Same Iron Law applies — exactly one `Empfehlung: N` /
33
+ `Recommendation: N` line, every time. There is no "these are just
34
+ follow-up suggestions" exception, no "the user knows better here"
35
+ exception, no "I genuinely don't have a preference" exception. If
36
+ the agent prints `1. … 2. … 3. …` anywhere in the reply, the
37
+ recommendation line is mandatory.
38
+
28
39
  **Format — non-negotiable:**
29
40
 
30
41
  - Options block stays NEUTRAL — no `(recommended)`, no `(rec)`, no `←`, no bold, no checkmark.
@@ -58,16 +69,28 @@ SKIPPING IT IS A RULE VIOLATION, NOT A SLIP.
58
69
  ```
59
70
 
60
71
  Before emitting any reply that contains numbered options, scan the
61
- drafted text:
72
+ **entire drafted reply** — top to bottom, including end-of-turn
73
+ "Wie weiter?" / "What next?" continuation menus, follow-up
74
+ suggestion blocks, and any list of `1. … 2. … 3. …` regardless of
75
+ its position or framing:
62
76
 
63
77
  1. Count occurrences of `(recommended)` / `(rec)` / `(empfohlen)` inline next to a numbered option → MUST be **zero**. Found one → rewrite, drop the tag.
64
- 2. Count distinct `Recommendation:\s*N` / `Empfehlung:\s*N` lines (case-insensitive) MUST be **exactly one**. Zeroadd one. Two or more distinct numbers rewrite, pick one.
65
- 3. The number on the recommendation line MUST exist in the option block.
78
+ 2. Count `1\.\s` / `2\.\s` / `3\.\s` patterns inside blockquotes or top-level proseif **any** numbered-option block exists anywhere in the reply, the recommendation line is mandatory.
79
+ 3. Count distinct `Recommendation:\s*N` / `Empfehlung:\s*N` lines (case-insensitive) → MUST be **exactly one per options block**. Zero → add one. Two or more distinct numbers → rewrite, pick one.
80
+ 4. The number on the recommendation line MUST exist in the option block it follows.
81
+ 5. If the reply has multiple options blocks (e.g. a clarification block AND an end-of-turn menu), each block gets its own `Recommendation: N` line directly underneath.
66
82
 
67
83
  Mechanical backstop: `python3 scripts/check_reply_consistency.py --stdin < draft.md`
68
84
  (non-zero exit on any rule above). Self-scan is the primary gate; the
69
85
  script is the deterministic safety net for ambiguous cases.
70
86
 
87
+ ### Common failure modes — known, named, no excuses
88
+
89
+ - **End-of-turn menu skipped.** Reply answers the question fine, then ends with `> 1. Foo > 2. Bar > 3. Stop` and no `Empfehlung:`. Iron Law 1 was violated — these are numbered options, position is irrelevant.
90
+ - **"Genuinely no preference" hedge.** Pick anyway. The agent has more context than the user on the trade-off; refusing to pick dumps the work back. Pick the safest option, name the flip-condition.
91
+ - **"User knows the project better" hedge.** Same failure mode, different costume. The user asked for an opinion by virtue of accepting the options block; deliver it.
92
+ - **Multi-block reply with one recommendation.** Two options blocks but only one `Empfehlung:` line — the second block is unguarded. Rule 5 above closes this.
93
+
71
94
  ## Numbered Options — Always
72
95
 
73
96
  When asking the user a question with predefined choices, **always
@@ -87,9 +110,10 @@ just a number (e.g., `1`) instead of typing a sentence.
87
110
  ### Rules
88
111
 
89
112
  - **Every question with choices** must use numbered options — no exceptions.
113
+ - **Every numbered list with `1. … 2. … 3. …`** is a numbered-options block, regardless of position. End-of-turn "Wie weiter?" / "What next?" / "How to proceed?" menus, mid-reply continuation prompts, and clarification blocks all count.
90
114
  - **Keep options short** — one line each, with a brief explanation after the dash.
91
115
  - **Always include a "skip" or "no change" option** when applicable.
92
- - **Always state a recommendation** — Iron Law 1 above.
116
+ - **Always state a recommendation** — Iron Law 1 above. Per options block, every time, position-agnostic.
93
117
  - **Use the user's language** for the question and options.
94
118
  - **Accept both** the number and a natural language answer (e.g., "1" or "the first one").
95
119
 
@@ -3,6 +3,8 @@ type: "always"
3
3
  description: "Verify before completion — run tests and quality tools before claiming done"
4
4
  alwaysApply: true
5
5
  source: package
6
+ load_context:
7
+ - .agent-src.uncompressed/contexts/execution/verification-mechanics.md
6
8
  ---
7
9
 
8
10
  # Verify Before Completion
@@ -15,25 +17,6 @@ NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
15
17
 
16
18
  If you haven't run the verification command **in this message**, you cannot claim it passes.
17
19
 
18
- ## When to run what — timing matters
19
-
20
- **Quality tools (PHPStan, Rector, ECS) run ONCE at the very end** — not after every edit.
21
- Do NOT run quality checks between tasks if you have more work to do.
22
- Only run the full quality pipeline when you are about to finish all work in the current conversation.
23
-
24
- **Tests: as targeted as possible, as little as necessary.**
25
- - During work: run ONLY the specific test class or test case affected by the change.
26
- Use `--filter=ClassName` or `--filter=test_name` — NEVER the full suite mid-work.
27
- - Only run tests when you genuinely need to verify behavior (not "just to be safe").
28
- - Full test suite: ONCE at the very end, before quality tools.
29
-
30
- **The sequence at the end:**
31
- 1. All code changes are done
32
- 2. Run tests — targeted first (`--filter`), full suite only if targeted passes
33
- 3. Run quality pipeline (PHPStan → Rector → ECS → PHPStan)
34
- 4. Fix any issues from step 2-3
35
- 5. ONLY THEN claim completion or suggest commit/push/PR
36
-
37
20
  ## The Gate
38
21
 
39
22
  Before claiming ANY work is complete:
@@ -67,54 +50,16 @@ Skip any step = the claim is unverified.
67
50
  For specific commands → see the `quality-tools` skill.
68
51
 
69
52
  For the detailed evidence-gate playbook (claim→command mapping, output
70
- inspection, end-of-work sequence) → see the `verify-before-complete`
53
+ inspection, end-of-work sequence) → see the `verify-completion-evidence`
71
54
  skill.
72
55
 
73
- ## Minimum verification per task type
74
-
75
- | Task | Required evidence |
76
- |---|---|
77
- | Code change | Tests + PHPStan |
78
- | New feature | Tests + PHPStan + smoke test |
79
- | Bug fix | Regression test + full suite |
80
- | Refactoring | Full suite + PHPStan + Rector |
81
- | Config/migration | Relevant tests or command output |
82
- | API endpoint | curl/HTTP response output |
83
- | Documentation only | No verification needed |
84
-
85
- **Never accept** as proof: "should work", "looks correct", "logic is sound".
86
- No captured output = not verified.
87
-
88
- ## Confidence gating
89
-
90
- State confidence explicitly before claiming completion on non-trivial work.
91
-
92
- - **High** — runtime path read end-to-end, relevant tests inspected or run,
93
- no hidden side-effects (queues/events/observers) unaccounted for.
94
- - **Medium** — main path verified but one gap remains; list the gap in the
95
- completion message.
96
- - **Low** — broad implementation NOT allowed; switch to analysis, narrow
97
- the scope, or ask the user before proceeding.
98
-
99
- For high-risk areas (auth, tenancy, migrations, queues, dependencies,
100
- external APIs, data exposure), "high" requires tests AND a cross-layer
101
- read — not inference from a single file.
102
-
103
- ## Break-glass reduction
104
-
105
- During a live production incident the verification gate is **narrowed**,
106
- never skipped. Break-glass requires explicit user invocation (e.g.
107
- `break-glass: true`, "this is a hotfix"). Never enter it unilaterally.
108
-
109
- Minimum evidence:
110
-
111
- - **Targeted test(s)** covering the exact regression — zero tests is not
112
- acceptable.
113
- - **Smoke check** of the fixed path (curl, manual trigger, log tail) with
114
- output captured in the message.
115
- - **Explicit list of skipped validations** and a **follow-up commitment**
116
- (ticket or PR line) to run them within 24h.
56
+ ## Mechanics when to run what, per-task evidence, confidence, break-glass
117
57
 
118
- Completion wording: _"hotfix applied, full verification deferred per
119
- break-glass"_ never _"done"_ or _"verified"_. The normal gate resumes
120
- on the follow-up PR.
58
+ The decision logic for **when** to run quality tools vs. tests, the
59
+ per-task-type minimum-evidence table, confidence gating (High /
60
+ Medium / Low), and the break-glass reduction during live incidents
61
+ all live in
62
+ [`verification-mechanics`](../contexts/execution/verification-mechanics.md).
63
+ The Iron Law and the Gate above are the obligation surface; the
64
+ mechanics context is the lookup material the agent pulls when the
65
+ gate fires.
@@ -16,6 +16,13 @@ Checkbox states:
16
16
  Percentage = done / (done + open). Deferred and cancelled do not count towards
17
17
  "open" (they are explicit decisions).
18
18
 
19
+ Roadmap visibility is binary:
20
+
21
+ - No `status:` frontmatter (or `status: ready`) → executable, listed.
22
+ - `status: draft` → hidden from the dashboard entirely (not counted,
23
+ not listed). Drafts become visible the moment the frontmatter flag
24
+ is removed or flipped to `ready`.
25
+
19
26
  Invocation (from project root):
20
27
  python3 .augment/scripts/update_roadmap_progress.py # rewrite
21
28
  python3 .augment/scripts/update_roadmap_progress.py --check # CI: exit 1 if stale
@@ -37,17 +44,21 @@ from pathlib import Path
37
44
 
38
45
  CHECKBOX_RE = re.compile(r"^\s*[-*]\s+\[([ xX~\-])\]\s", re.MULTILINE)
39
46
  # H2 or H3 heading starting with "Phase <id>"; separator (colon, em-dash,
40
- # hyphen, or whitespace) and name are optional. The id supports three
47
+ # hyphen, or whitespace) and name are optional. The id supports four
41
48
  # project-level conventions:
42
49
  # - numeric `Phase 0`, `Phase 10`
50
+ # - numeric+sub `Phase 2a`, `Phase 10c` (digit run + single
51
+ # lowercase letter for sub-phases)
43
52
  # - roman I..XXXIX `Phase I`, `Phase III`
44
53
  # - letter track `Phase A`, `Phase B1` (single uppercase letter,
45
54
  # optional trailing digits for sub-track IDs)
46
55
  # Roman is capped at [IVX]+ (up to XXXIX) on purpose: the broader
47
56
  # [IVXLCDM]+ would also match all-caps words like `Phase LIVE`. Letter
48
57
  # is [A-Z] not [A-Za-z] so `## Phase overview` stays a non-phase anchor.
58
+ # The numeric+sub branch keeps the lowercase-letter restriction so
59
+ # `Phase abc` (no digits) still falls through to the rejection branch.
49
60
  PHASE_RE = re.compile(
50
- r"^(#{2,3})\s+Phase\s+(\d+|[IVX]+|[A-Z](?:\d+)?)"
61
+ r"^(#{2,3})\s+Phase\s+(\d+[a-z]?|[IVX]+|[A-Z](?:\d+)?)"
51
62
  r"(?:[\s:\u2014\-]+(.*?))?\s*$",
52
63
  re.MULTILINE,
53
64
  )
@@ -56,12 +67,20 @@ EXCLUDE_NAMES = {"template.md", "README.md", "progress.md", "roadmaps-progress.m
56
67
  EXCLUDE_PREFIXES = ("open-questions",)
57
68
  EXCLUDE_DIRS = {"archive", "skipped"}
58
69
 
70
+ # Frontmatter — minimal YAML block at the top of a roadmap. Used to hide
71
+ # drafts (`status: draft`) from the dashboard. Anything else (no
72
+ # frontmatter, `status: ready`, unknown values) counts as a normal
73
+ # executable roadmap.
74
+ FRONTMATTER_RE = re.compile(r"\A---\n(.*?)\n---\s*\n", re.DOTALL)
75
+ DRAFT_VALUES = frozenset({"draft"})
76
+
59
77
 
60
78
  @dataclass
61
79
  class PhaseStats:
62
80
  # Phase identifier as it appears in the heading: numeric ("0"),
63
- # roman ("III"), or letter-track ("A", "B1"). Kept as a string so
64
- # non-numeric conventions survive round-tripping through render().
81
+ # numeric+sub ("2a"), roman ("III"), or letter-track ("A", "B1").
82
+ # Kept as a string so non-numeric conventions survive round-tripping
83
+ # through render().
65
84
  id: str
66
85
  name: str
67
86
  done: int = 0
@@ -130,6 +149,37 @@ class RoadmapStats:
130
149
  return round(self.done * 100 / self.total_active) if self.total_active else 0
131
150
 
132
151
 
152
+ def parse_frontmatter(text: str) -> dict[str, str]:
153
+ """Parse a leading YAML frontmatter block. String scalars only.
154
+
155
+ Returns an empty dict if no frontmatter is present. Handles quoted and
156
+ unquoted values; ignores blank lines and comments. Nested keys, lists,
157
+ and multiline scalars are out of scope — the dashboard only needs flat
158
+ string flags (`status`, `mode`).
159
+ """
160
+ m = FRONTMATTER_RE.match(text)
161
+ if not m:
162
+ return {}
163
+ fm: dict[str, str] = {}
164
+ for line in m.group(1).splitlines():
165
+ stripped = line.strip()
166
+ if not stripped or stripped.startswith("#") or ":" not in line:
167
+ continue
168
+ key, _, value = line.partition(":")
169
+ fm[key.strip()] = value.strip().strip('"').strip("'")
170
+ return fm
171
+
172
+
173
+ def is_draft(fm: dict[str, str]) -> bool:
174
+ """Return True when frontmatter declares the roadmap as draft.
175
+
176
+ `status: draft` is the single supported way to hide a roadmap from
177
+ the dashboard. Everything else (no frontmatter, `status: ready`,
178
+ unknown values) counts as an executable roadmap.
179
+ """
180
+ return fm.get("status", "").lower() in DRAFT_VALUES
181
+
182
+
133
183
  def is_roadmap_candidate(path: Path) -> bool:
134
184
  if path.name in EXCLUDE_NAMES:
135
185
  return False
@@ -180,10 +230,14 @@ def bar(pct: int, width: int = 10) -> str:
180
230
 
181
231
 
182
232
  def collect(roadmap_root: Path) -> list[RoadmapStats]:
233
+ """Collect executable roadmaps. Drafts are excluded."""
183
234
  results: list[RoadmapStats] = []
184
235
  for path in sorted(roadmap_root.rglob("*.md")):
185
236
  if not path.is_file() or not is_roadmap_candidate(path):
186
237
  continue
238
+ text = path.read_text(encoding="utf-8")
239
+ if is_draft(parse_frontmatter(text)):
240
+ continue
187
241
  stats = parse_roadmap(path, roadmap_root)
188
242
  if stats:
189
243
  results.append(stats)
@@ -205,14 +259,17 @@ def render(roadmaps: list[RoadmapStats]) -> str:
205
259
  overall_pct = round(total_done * 100 / total_active) if total_active else 0
206
260
  lines: list[str] = []
207
261
  lines.append("# Roadmap Progress\n")
262
+ header_meta = (
263
+ f"> {len(roadmaps)} open roadmap"
264
+ f"{'s' if len(roadmaps) != 1 else ''}"
265
+ " · [roadmaps/](roadmaps/) · [archive/](roadmaps/archive/) · "
266
+ "[skipped/](roadmaps/skipped/)\n"
267
+ )
208
268
  lines.append(
209
269
  "> Auto-generated by `.augment/scripts/update_roadmap_progress.py`. "
210
270
  "Do not edit — regenerated on every roadmap-create, -execute, or "
211
271
  "completion change (last-modified timestamp lives in git history).\n>\n"
212
- f"> {len(roadmaps)} open roadmap"
213
- f"{'s' if len(roadmaps) != 1 else ''} · "
214
- "[roadmaps/](roadmaps/) · [archive/](roadmaps/archive/) · "
215
- "[skipped/](roadmaps/skipped/)\n"
272
+ + header_meta
216
273
  )
217
274
  lines.append("## Overall\n")
218
275
  lines.append(f"**{total_done} / {total_active} steps done · {overall_pct}%**\n")