@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
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: council-optimize
3
+ cluster: optimize
4
+ skills: [ai-council]
5
+ description: Run the council on an optimization target — perf hot path, memory pattern, query, or an /optimize-* output — for ranked, evidence-based suggestions instead of generic advice.
6
+ disable-model-invocation: true
7
+ suggestion:
8
+ eligible: true
9
+ trigger_description: "council on this perf hot path, second opinion on this optimization, external review of /optimize output"
10
+ trigger_context: "user has an optimization target (code path, query, profile result, /optimize-* output) and wants a ranked external opinion"
11
+ ---
12
+
13
+ # council-optimize
14
+
15
+ ## Instructions
16
+
17
+ Specialised council mode for **optimization targets**: hot paths,
18
+ slow queries, allocation profiles, or the output of an `/optimize-*`
19
+ command (`/optimize-skills`, `/optimize-agents`,
20
+ `/optimize-augmentignore`, `/optimize-rtk-filters`). Wraps
21
+ `/council` with the `optimize` neutrality preamble, which focuses
22
+ members on **ranked**, **evidence-based** suggestions instead of
23
+ generic "you should profile" advice.
24
+
25
+ ### 1. Resolve the target
26
+
27
+ The user invoked `/council-optimize <target>` or `/council-optimize`.
28
+ If nothing was supplied, ask (one question per turn):
29
+
30
+ > What should the council optimize?
31
+ >
32
+ > 1. A file or directory of code (perf hot path)
33
+ > 2. A query / SQL / DB call (paste it now)
34
+ > 3. The output of an `/optimize-*` command — re-run it now and feed
35
+ > the report to the council
36
+ > 4. A free-form description of the bottleneck
37
+
38
+ Pick **1** → `/council files:<paths>` with `mode_override=optimize`.
39
+ Pick **2** → `/council prompt:"<query + context>"` with
40
+ `mode_override=optimize`.
41
+ Pick **3** → run the chosen `/optimize-*` command first, then feed
42
+ its report file to `/council files:<report>` with
43
+ `mode_override=optimize`.
44
+ Pick **4** → `/council prompt:"<description>"` with
45
+ `mode_override=optimize`.
46
+
47
+ ### 2. Capture the constraint
48
+
49
+ Optimization is meaningless without a target metric. Ask **once**
50
+ (one question per turn) before invoking `/council`:
51
+
52
+ > What does "better" mean here?
53
+ >
54
+ > 1. Latency (p50 / p95 / p99 — pick which)
55
+ > 2. Throughput (req/s)
56
+ > 3. Memory footprint
57
+ > 4. Cost ($ / 1M ops)
58
+ > 5. Token count (for LLM workflows)
59
+ > 6. Other — describe in one line
60
+
61
+ The chosen metric becomes the `original_ask` for the handoff preamble:
62
+ `Optimize for <metric>: <one-line scope>`.
63
+
64
+ ### 3. Run /council with the optimize mode preamble
65
+
66
+ Invoke the matching `/council` form (`files:` / `prompt:`) with
67
+ `mode_override=optimize`. The `optimize` mode addendum from
68
+ `scripts/ai_council/prompts.py` requires members to:
69
+
70
+ - Rank suggestions by expected impact on the chosen metric, not by
71
+ effort or cleverness.
72
+ - Cite the evidence (line, query plan, profile entry) for each
73
+ suggestion. No hand-wave "this is probably slow".
74
+ - State at least one suggestion the member explicitly **rejects** as
75
+ low-leverage, so the user does not over-engineer.
76
+ - Mark at least one suggestion that requires measurement before
77
+ committing — i.e. flag what is hypothesis vs. confirmed.
78
+
79
+ The cost gate from `/council` Step 3 still applies.
80
+
81
+ ### 4. Render the report
82
+
83
+ Use the standard stacked + Convergence/Divergence layout. Add a
84
+ one-line header at the top so the optimization metric is visible:
85
+
86
+ ```
87
+ ## Council on <target> — optimize for <metric>
88
+ ```
89
+
90
+ ### 5. Hand back to the user
91
+
92
+ The council is **advisory**. Do **not** apply optimizations
93
+ autonomously. Surface ranked suggestions and let the user pick which
94
+ to drive into a normal `/work` / `/implement-ticket` flow.
95
+
96
+ ### Hard floor (restated)
97
+
98
+ `/council-optimize` produces **text only**. It does NOT edit code,
99
+ run benchmarks, or change configuration.
100
+
101
+ ## Failure modes
102
+
103
+ - **No measurable metric** → if the user picks "Other" without a
104
+ unit, ask once for clarification; if still vague, stop. Generic
105
+ "make it better" is exactly what this command refuses to enable.
106
+ - **Target too large** → bundler raises `BundleTooLarge`; suggest
107
+ narrowing to the hot path (`/council files:<single-file>`).
108
+
109
+ ## See also
110
+
111
+ - `/council` — base orchestration entry point.
112
+ - `/optimize-skills`, `/optimize-agents`, `/optimize-augmentignore`,
113
+ `/optimize-rtk-filters` — internal optimization commands; their
114
+ output can be fed to `/council-optimize` for an external ranking.
115
+ - `ai-council` skill — neutrality guidelines.
@@ -0,0 +1,123 @@
1
+ ---
2
+ name: council-pr
3
+ cluster: optimize
4
+ skills: [ai-council]
5
+ description: Pull a GitHub PR via gh CLI and run the council on the diff with a PR-specific neutrality preamble — read-only by default; comment posting is opt-in.
6
+ disable-model-invocation: true
7
+ suggestion:
8
+ eligible: true
9
+ trigger_description: "council on PR #N, external review of pull request, second opinion on a PR"
10
+ trigger_context: "user has a PR number / URL and wants an external review before approve/merge"
11
+ ---
12
+
13
+ # council-pr
14
+
15
+ ## Instructions
16
+
17
+ Specialised council mode for **GitHub PRs**. Wraps `/council diff:<base>..<head>`
18
+ with a PR-aware neutrality preamble (the `pr` mode) and an opt-in
19
+ "post a comment summary on the PR" step at the end.
20
+
21
+ ### 1. Resolve the PR target
22
+
23
+ The user invoked `/council-pr <number>` or `/council-pr <url>`. If
24
+ neither was supplied, ask (one question per turn, per
25
+ `ask-when-uncertain`):
26
+
27
+ > Which PR should the council review?
28
+ >
29
+ > 1. PR number on the current repo (e.g. `#123`)
30
+ > 2. Full GitHub URL
31
+ > 3. Cancel
32
+
33
+ ### 2. Pull PR metadata via gh CLI
34
+
35
+ Run:
36
+
37
+ ```bash
38
+ gh pr view <number> --json number,title,body,headRefName,baseRefName,author,url
39
+ ```
40
+
41
+ Capture: title, body, head ref, base ref. The **PR title + body** is
42
+ the user's `original_ask` for the handoff preamble — verbatim, after
43
+ `_strip_host_identity()` cleansing in `prompts.py`. Do **not** add the
44
+ agent's framing.
45
+
46
+ ### 3. Fetch the diff range locally
47
+
48
+ ```bash
49
+ git fetch origin <base>:<base>
50
+ git fetch origin <head>:<head>
51
+ ```
52
+
53
+ Compute the diff range as `origin/<base>..origin/<head>` (or the local
54
+ refs if already fetched).
55
+
56
+ ### 4. Run /council with the pr mode preamble
57
+
58
+ Invoke `/council diff:<base>..<head>` with:
59
+
60
+ - `original_ask` = PR title + body (capped per
61
+ `bundler.size_guard`; warn if truncated).
62
+ - The neutrality preamble uses the `pr` mode addendum from
63
+ `scripts/ai_council/prompts.py` — focuses members on
64
+ PR-specific risks (shipping risk, reviewer fatigue, scope creep)
65
+ on top of the generic diff focus (correctness, security, tests,
66
+ maintainability).
67
+
68
+ The cost gate from `/council` Step 3 still applies. Council is
69
+ billable; suppress the question only when the resolved members are
70
+ all-manual.
71
+
72
+ ### 5. Render the report
73
+
74
+ Use the standard stacked + Convergence/Divergence layout from
75
+ `/council` Step 6. Add a one-line PR header at the top:
76
+
77
+ ```
78
+ ## Council on PR #<number> — <title>
79
+
80
+ Base: <base> · Head: <head> · Author: <author>
81
+ ```
82
+
83
+ ### 6. Offer to post a comment summary (opt-in)
84
+
85
+ After the report renders, ask (in the user's language):
86
+
87
+ > 1. Post a one-paragraph summary as a PR comment? (read-only otherwise)
88
+ > 2. Skip — keep the council output local
89
+
90
+ If picked **1**:
91
+
92
+ - Build a short summary: convergent points, divergent points, suggested
93
+ actions. Keep it ≤ 800 chars.
94
+ - Run `gh pr comment <number> --body "<summary>"`.
95
+ - **Never** request changes, approve, or merge — comment only.
96
+
97
+ Suppress the comment offer when `personal.autonomy: on` (posting to a
98
+ public PR is a write operation that should always be explicit).
99
+
100
+ ### Hard floor (restated)
101
+
102
+ `/council-pr` produces **text** and (on user opt-in) a **single PR
103
+ comment**. It does **NOT**:
104
+
105
+ - Approve, request changes, or merge a PR.
106
+ - Edit project files.
107
+ - Open new issues or PRs.
108
+ - Post comments without explicit user opt-in.
109
+
110
+ ## Failure modes
111
+
112
+ - **`gh` not installed / not authed** → state the install command
113
+ (`brew install gh && gh auth login`) and stop.
114
+ - **PR is closed / merged** → ask whether to proceed (council on a
115
+ closed PR is fine for retrospectives) or cancel.
116
+ - **Diff too large** → bundler raises `BundleTooLarge`; suggest
117
+ `/council files:<paths>` for a narrower review.
118
+
119
+ ## See also
120
+
121
+ - `/council` — base orchestration entry point.
122
+ - `ai-council` skill — neutrality guidelines.
123
+ - `/review-changes` — internal four-judge variant for local diffs.
@@ -0,0 +1,219 @@
1
+ ---
2
+ name: council
3
+ cluster: optimize
4
+ skills: [ai-council]
5
+ description: Consult external AIs (OpenAI, Anthropic) for an independent second opinion on a prompt, roadmap, diff, or file set — neutral framing, redacted context, advisory output only.
6
+ disable-model-invocation: true
7
+ suggestion:
8
+ eligible: true
9
+ trigger_description: "external second opinion, cross-AI review, devil's advocate on a plan/roadmap/diff, polling another model"
10
+ trigger_context: "user wants an outside critique on an artefact (roadmap, diff, prompt, files) without polluting the reviewer with the host agent's framing"
11
+ ---
12
+
13
+ # council
14
+
15
+ ## Instructions
16
+
17
+ ### 1. Resolve the target + capture the original ask
18
+
19
+ The user invoked `/council` on exactly one input mode:
20
+
21
+ - `prompt:"<text>"` — a free-form question or proposal
22
+ - `roadmap:<path>` — a roadmap file under `agents/roadmaps/`
23
+ - `diff:<base>..<head>` — a git diff range
24
+ - `files:<path>,<path>` — a comma-separated file list
25
+
26
+ Optional invocation flag: `mode:api|manual` overrides the per-member
27
+ and global mode for this call only (see Step 2.5). `mode:playwright`
28
+ is reserved for Phase 2c — refuse politely if invoked.
29
+
30
+ Optional **rounds**: `rounds:N` (1-3) enables multi-round debate. Round
31
+ 1 sees the artefact alone. Round 2+ sees the artefact plus anonymised
32
+ critiques from the previous round (provider/model identity stripped).
33
+ Total spend = N × single-round cost; surface this in the cost gate.
34
+ Default `rounds:1` (single round, v1 behaviour).
35
+
36
+ Optional **mode_override**: `mode_override=pr|design|optimize` swaps
37
+ the system-prompt addendum for one of the specialised lenses
38
+ (see `prompts.py` `_MODE_TABLE`). The bundle mode (`prompt:` /
39
+ `roadmap:` / `diff:` / `files:`) is unchanged; only the per-mode
40
+ neutrality addendum is replaced. Routed by `/council-pr`,
41
+ `/council-design`, `/council-optimize` — surface to the user as
42
+ "council on <target> — <lens> lens" so the report header is
43
+ unambiguous.
44
+
45
+ If none was supplied, ask the user which mode + target. **One question
46
+ per turn** (per `ask-when-uncertain`). Do not assume the working-tree
47
+ diff.
48
+
49
+ Also capture the user's **original ask** verbatim — the free-form
50
+ sentence that triggered the council, distinct from the bundled
51
+ artefact. For `prompt:"…"` mode the ask and the artefact are the
52
+ same string. For `roadmap` / `diff` / `files` modes, the ask is the
53
+ user's framing sentence ("review this roadmap before I execute it",
54
+ "is this diff safe to merge?"). This string flows into
55
+ `consult(..., original_ask=…)` in Step 5 so council members receive
56
+ the neutral handoff preamble alongside the artefact (per
57
+ `ai-council` skill § Neutrality — context-handoff).
58
+
59
+ ### 2. Check the council is configured + price table fresh
60
+
61
+ Read `.agent-settings.yml` → `ai_council`:
62
+
63
+ - If `ai_council.enabled` is false → state that and offer to flip it
64
+ on. Do not flip it autonomously.
65
+ - If no member has `enabled: true` → list the install commands
66
+ (`./agent-config keys:install-anthropic`, `./agent-config keys:install-openai`)
67
+ and stop.
68
+ - If a member is enabled but its `*.key` file is missing or has the
69
+ wrong mode → tell the user which key to install. Do not fall back to
70
+ env vars. Ever.
71
+
72
+ Load the price table via `scripts.ai_council.pricing.load_prices()`
73
+ (auto-bootstraps `.agent-prices.md` from defaults if missing). Run
74
+ `pricing.is_stale(table)` and, if stale, surface the staleness gate
75
+ from the `ai-council` skill (§ Stale price-table gate) before
76
+ continuing.
77
+
78
+ ### 2.5. Resolve per-member execution mode
79
+
80
+ For each enabled member, resolve its mode via
81
+ `scripts.ai_council.modes.resolve_mode(name, invocation_mode,
82
+ member_settings, global_mode)`. Precedence: invocation flag >
83
+ per-member setting > global setting > default (`api`).
84
+
85
+ Construct each member from the resolved mode:
86
+
87
+ - `api` → `AnthropicClient` / `OpenAIClient` (billable, cost-gated).
88
+ - `manual` → `ManualClient` from `scripts.ai_council.clients`
89
+ (`billable=False`, no API key, no SDK call).
90
+ - `playwright` → reserved for Phase 2c. If a settings/invocation
91
+ resolves to it, refuse with a one-line note.
92
+
93
+ ### 3. Cost confirmation — ALWAYS ASK for billable members
94
+
95
+ Council calls to billable members spend money. Even under
96
+ `personal.autonomy: on`, the agent **must** ask before invoking any
97
+ billable member.
98
+
99
+ Compute `orchestrator.estimate(question, members, table)` over the
100
+ **billable** subset only (`getattr(m, "billable", True)`). Manual
101
+ members contribute `$0` and skip the estimate.
102
+
103
+ Render the cost-confirmation numbered-options block per the
104
+ `ai-council` skill (§ Pre-call estimate format) — per-member tokens
105
+ + USD, projected total, budget caps, then `1. Run / 2. Cancel`. If
106
+ the resolved member set is **all-manual**, skip the gate entirely
107
+ (spend = $0) and proceed directly to Step 4.
108
+
109
+ Wait for the user's pick. `1` proceeds; anything else aborts.
110
+
111
+ ### 4. Bundle the context
112
+
113
+ Use `scripts.ai_council.bundler`:
114
+
115
+ - `prompt` mode → `bundle_prompt(text)`
116
+ - `roadmap` mode → `bundle_roadmap(path)`
117
+ - `diff` mode → `bundle_diff(base, head)`
118
+ - `files` mode → `bundle_files(paths)`
119
+
120
+ The bundler runs redaction + size guard. If `BundleTooLarge` raises,
121
+ surface the byte count and ask the user to narrow scope. Do **not**
122
+ truncate silently.
123
+
124
+ Print the manifest (what was included) and the excluded list before
125
+ sending — gives the user a chance to abort if scope is wrong.
126
+
127
+ ### 5. Run the orchestrator
128
+
129
+ Members are constructed from the settings file plus
130
+ `load_anthropic_key()` / `load_openai_key()`. Cost budget comes from
131
+ `ai_council.cost_budget`.
132
+
133
+ Detect project context once via
134
+ `scripts.ai_council.project_context.detect_project_context()` (reads
135
+ `composer.json`, `package.json`, root `README.md` — never raises;
136
+ empty-fields fall back to bare neutrality preamble).
137
+
138
+ Call:
139
+
140
+ ```python
141
+ consult(
142
+ members, question, budget,
143
+ table=table,
144
+ on_overrun=_handle_overrun,
145
+ project=project,
146
+ original_ask=original_ask,
147
+ rounds=rounds, # 1 by default; 2-3 enables multi-round debate
148
+ )
149
+ ```
150
+
151
+ `project` + `original_ask` flow into `handoff_preamble()` so each
152
+ member receives a neutral context-handoff alongside the artefact
153
+ (see `ai-council` skill § Neutrality — context-handoff). Members run
154
+ **sequentially**; per-member errors are normalised — one failure
155
+ does not abort the others. Define `_handle_overrun(event)` per the
156
+ `ai-council` skill (§ Mid-flow overrun callback) to surface the user
157
+ prompt before each breaching member.
158
+
159
+ ### 6. Render the report
160
+
161
+ Use `scripts.ai_council.orchestrator.render(responses)` for the
162
+ per-member sections (stacked, not side-by-side — narrow terminals).
163
+ Then write the **Convergence / Divergence** section yourself:
164
+
165
+ - **Agreements** — points all members made (or did not contradict).
166
+ - **Disagreements** — points where members took opposing positions.
167
+ - **Unique insights** — points raised by exactly one member.
168
+ - **Suggested next actions** — translated into concrete options for
169
+ the user.
170
+
171
+ End with a numbered-options block asking the user how to proceed
172
+ (e.g. update the roadmap, request a second round, ignore the
173
+ critique).
174
+
175
+ ### 7. Hard floor — text only
176
+
177
+ `/council` produces **text**. It does **NOT**:
178
+
179
+ - Edit any file in the project.
180
+ - Open, comment on, or merge any PR.
181
+ - Run `git` commands beyond `git diff` (read-only).
182
+ - Persist API responses outside the current chat unless the user
183
+ explicitly asks (Phase 4 — out of scope for v1).
184
+
185
+ This is restated in step 7 deliberately. The neutrality framing
186
+ loses meaning if the council can act on the project directly.
187
+
188
+ ## Failure modes
189
+
190
+ - **Member SDK not installed** → tell the user exactly which `pip
191
+ install` runs (`pip install anthropic` / `pip install openai`).
192
+ Do not fall back to mocks.
193
+ - **Key file mode drift** → refuse and point at the install script.
194
+ The 0600 contract is non-negotiable.
195
+ - **Manual mode + non-interactive stdin** → `ManualClient` reads
196
+ pasted replies from stdin terminated by a line containing only
197
+ `END`. If stdin is closed before any reply lands, the member
198
+ returns empty text with `error="manual_aborted"`; render the
199
+ partial result and ask the user.
200
+ - **Invalid mode value** → `resolve_mode()` raises
201
+ `InvalidModeError` with the exact settings path. Surface verbatim
202
+ and stop.
203
+ - **Cost budget exceeded mid-fan-out** → render the partial
204
+ responses and clearly mark the unfinished members with their
205
+ `cost_budget_exceeded` error. Do not silently retry.
206
+ - **Stale price table, refresher fails (offline)** → state the
207
+ failure, re-offer "continue with stale table / cancel", do not
208
+ proceed silently.
209
+ - **`.agent-prices.md` corrupt (missing frontmatter or columns)** →
210
+ surface the parse error, suggest deleting the file to bootstrap
211
+ fresh from defaults; never silently fall back.
212
+ - **All members error** → render the errors and ask the user
213
+ whether to fix and retry, or abort.
214
+
215
+ ## See also
216
+
217
+ - `ai-council` skill — neutrality guidelines, anti-patterns, redaction expectations.
218
+ - `subagent-orchestration` skill — internal multi-agent variant (no network calls).
219
+ - `docs/customization.md` § Available settings → `ai_council.*`.
@@ -33,6 +33,29 @@ fallback structure defined in `/create-pr-description`. NEVER invent a custom bo
33
33
 
34
34
  The user reviews and adjusts the content in that step.
35
35
 
36
+ ### 2b. Offer council review (B2 hook)
37
+
38
+ If `.agent-settings.yml` has `ai_council.enabled: true` **and** at least
39
+ one member is enabled, ask (in the user's language):
40
+
41
+ > 1. Run the council on this diff before opening the PR? (billable)
42
+ > 2. Skip council review
43
+
44
+ Suppress when `personal.autonomy: on` (council is billable; autonomy
45
+ must not silently spend — see `road-to-ai-council.md` Decision 3).
46
+
47
+ If picked **1**:
48
+
49
+ - Compute the diff range — `origin/<default>..HEAD` from step 1.
50
+ - Run `/council diff:<base>..<head>` with `original_ask` set to the
51
+ PR title from step 2 (the user's framing of the change).
52
+ - Surface findings to the user before step 3. **Do not** auto-edit
53
+ the PR body or block PR creation — output is advisory.
54
+ - Optional: offer to append a one-paragraph "Council notes" section
55
+ to the PR description for reviewer transparency. Default: skip.
56
+
57
+ If picked **2** → continue.
58
+
36
59
  ### 3. Create the PR
37
60
 
38
61
  Once the user approves the content from step 2:
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: do-and-judge
3
- skills: [subagent-orchestration, verify-before-complete]
3
+ skills: [subagent-orchestration, verify-completion-evidence]
4
4
  description: Run a single change through an implementer→judge loop with a two-revision ceiling, then hand back to the user
5
5
  disable-model-invocation: true
6
6
  suggestion:
@@ -90,7 +90,7 @@ Next step: <commit / open PR / abandon>
90
90
  - No apply without the judge's `apply` verdict
91
91
  - No silent model fallback — unknown alias = stop and ask
92
92
  - No more than two revisions without user consent
93
- - No skipping of `verify-before-complete` on the final apply
93
+ - No skipping of `verify-completion-evidence` on the final apply
94
94
 
95
95
  ## When to stop and ask
96
96
 
@@ -113,5 +113,5 @@ weaker verdicts.
113
113
  ## See also
114
114
 
115
115
  - [`subagent-orchestration`](../skills/subagent-orchestration/SKILL.md)
116
- - [`verify-before-complete`](../skills/verify-before-complete/SKILL.md)
116
+ - [`verify-completion-evidence`](../skills/verify-completion-evidence/SKILL.md)
117
117
  - [`subagent-configuration`](../contexts/subagent-configuration.md)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: do-in-steps
3
- skills: [subagent-orchestration, verify-before-complete]
3
+ skills: [subagent-orchestration, verify-completion-evidence]
4
4
  description: Execute an ordered plan step by step with a judge gate between steps — stops on first failed verdict
5
5
  disable-model-invocation: true
6
6
  suggestion:
@@ -57,7 +57,7 @@ On stop, report the last verified state so the user can resume.
57
57
 
58
58
  ### 5. Final verification
59
59
 
60
- After step N passes judgment, run `verify-before-complete` across the
60
+ After step N passes judgment, run `verify-completion-evidence` across the
61
61
  whole changeset — targeted tests + full suite + quality pipeline.
62
62
  Never declare the plan "done" without this gate.
63
63
 
@@ -77,11 +77,11 @@ Next step: <commit / open PR / resume from step K>
77
77
 
78
78
  - Never skip a step because the next one looks easier
79
79
  - Never apply a revised step without the judge re-verdicting
80
- - Never declare complete without final `verify-before-complete`
80
+ - Never declare complete without final `verify-completion-evidence`
81
81
  - A failing step never cascades silently — stop, report, hand back
82
82
 
83
83
  ## See also
84
84
 
85
85
  - [`subagent-orchestration`](../skills/subagent-orchestration/SKILL.md)
86
- - [`verify-before-complete`](../skills/verify-before-complete/SKILL.md)
86
+ - [`verify-completion-evidence`](../skills/verify-completion-evidence/SKILL.md)
87
87
  - [`/do-and-judge`](do-and-judge.md) — single-change variant
@@ -21,7 +21,7 @@ suggestion:
21
21
  > 2. Fix a specific test file — which one?
22
22
  > 3. Fix tests that failed in CI — provide the CI run URL or error output
23
23
 
24
- - Read the Playwright guideline: `.augment/guidelines/e2e/playwright.md`
24
+ - Read the Playwright guideline: `../../docs/guidelines/e2e/playwright.md`
25
25
 
26
26
  ### 2. Run failing tests
27
27
 
@@ -21,7 +21,7 @@ suggestion:
21
21
  > 2. Which feature area? (e.g., "checkout flow", "user settings", or "all visible flows")
22
22
  > 3. Is there an existing seed/setup file? (e.g., `tests/e2e/fixtures/auth.ts`)
23
23
 
24
- - Read the Playwright guideline: `.augment/guidelines/e2e/playwright.md`
24
+ - Read the Playwright guideline: `../../docs/guidelines/e2e/playwright.md`
25
25
  - Check for existing test plans in `specs/` or `tests/e2e/specs/`.
26
26
 
27
27
  ### 2. Explore the application
@@ -8,6 +8,14 @@ suggestion:
8
8
  trigger_description: "build this feature end-to-end, run the full feature workflow"
9
9
  trigger_context: "long-form feature description spanning multiple components"
10
10
  ---
11
+
12
+ <!-- F2-deprecation-banner -->
13
+ > **Deprecated — use `/feature dev`.** This standalone command
14
+ > is kept as a deprecation shim for one release cycle and routes to
15
+ > the same instructions below. New invocations should go through the
16
+ > `/feature` orchestrator (`commands/feature.md`).
17
+ <!-- /F2-deprecation-banner -->
18
+
11
19
  # /feature-dev
12
20
 
13
21
  > Full 7-phase feature development workflow for complex features.
@@ -7,8 +7,13 @@ suggestion:
7
7
  eligible: true
8
8
  trigger_description: "brainstorm this idea, explore this feature concept"
9
9
  trigger_context: "open-ended feature idea without acceptance criteria"
10
+ superseded_by: feature explore
11
+ deprecated_in: "1.15.0"
10
12
  ---
11
13
 
14
+ > ⚠️ /feature-explore is deprecated; use /feature explore instead.
15
+ > This shim is retained for one release cycle (1.15.0 → next minor) and forwards to the same instructions below. See [`docs/contracts/command-clusters.md`](../../docs/contracts/command-clusters.md).
16
+
12
17
  # feature-explore
13
18
 
14
19
  ## Instructions
@@ -181,4 +186,4 @@ What's next?
181
186
 
182
187
  ## See also
183
188
 
184
- - [`role-contracts`](../guidelines/agent-infra/role-contracts.md#po) — PO mode output contract (Goal / Assumptions / Acceptance criteria / Impacted modules / Risks / Open questions for stakeholder)
189
+ - [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md#po) — PO mode output contract (Goal / Assumptions / Acceptance criteria / Impacted modules / Risks / Open questions for stakeholder)
@@ -7,8 +7,13 @@ suggestion:
7
7
  eligible: true
8
8
  trigger_description: "plan this feature, create a feature spec for X"
9
9
  trigger_context: "feature idea referenced and no plan doc exists"
10
+ superseded_by: feature plan
11
+ deprecated_in: "1.15.0"
10
12
  ---
11
13
 
14
+ > ⚠️ /feature-plan is deprecated; use /feature plan instead.
15
+ > This shim is retained for one release cycle (1.15.0 → next minor) and forwards to the same instructions below. See [`docs/contracts/command-clusters.md`](../../docs/contracts/command-clusters.md).
16
+
12
17
  # feature-plan
13
18
 
14
19
  ## Instructions
@@ -111,7 +116,7 @@ Before asking detailed questions, **proactively research**:
111
116
  `status: active` is a binding constraint — propose structure that
112
117
  respects it. If the feature needs to contradict an ADR, surface that
113
118
  as a decision for the user before drafting the plan. See
114
- [`engineering-memory-data-format`](../guidelines/agent-infra/engineering-memory-data-format.md).
119
+ [`engineering-memory-data-format`](../../docs/guidelines/agent-infra/engineering-memory-data-format.md).
115
120
 
116
121
  **Share key findings with the user** — this informs the discussion:
117
122
 
@@ -208,6 +213,32 @@ Mir sind noch ein paar offene Fragen aufgefallen:
208
213
  Hast du dazu schon eine Meinung?
209
214
  ```
210
215
 
216
+ ### 5d. Offer council idea-validation (B4 hook)
217
+
218
+ Once the conversation has converged on a problem statement, proposal,
219
+ and rough scope (rounds 1–4), but **before** step 6 writes the file,
220
+ ask (in the user's language):
221
+
222
+ > 1. Run the council on this idea before writing the plan? (billable)
223
+ > 2. Skip — write the plan now
224
+
225
+ Suppress when `personal.autonomy: on` (council is billable).
226
+
227
+ If picked **1**:
228
+
229
+ - Build a short prompt: the problem, the proposal, the scope, the
230
+ open questions from round 4. **Do not** include the agent's
231
+ framing or recommendations — neutrality preamble is mandatory.
232
+ - Run `/council prompt:"<assembled prompt>"` with `original_ask` set
233
+ to the feature title from step 1.
234
+ - Surface convergent + divergent points back to the user. **Do not**
235
+ rewrite the proposal autonomously; let the user decide which
236
+ council points to fold in.
237
+ - After the user has reviewed, return to step 6 with the (possibly
238
+ updated) proposal.
239
+
240
+ If picked **2** → continue.
241
+
211
242
  ### 6. Create the feature document
212
243
 
213
244
  - Read `.augment/templates/features.md` for the structure.
@@ -287,6 +318,6 @@ What's next?
287
318
 
288
319
  ## See also
289
320
 
290
- - [`role-contracts`](../guidelines/agent-infra/role-contracts.md#po) — PO mode output contract (Goal / Assumptions / Acceptance criteria / Impacted modules / Risks / Open questions for stakeholder)
321
+ - [`role-contracts`](../../docs/guidelines/agent-infra/role-contracts.md#po) — PO mode output contract (Goal / Assumptions / Acceptance criteria / Impacted modules / Risks / Open questions for stakeholder)
291
322
  - [`refine-ticket`](refine-ticket.md) — optional upstream step: run first when the input is a Jira/Linear ticket rather than a fresh idea
292
323
  - [`estimate-ticket`](estimate-ticket.md) — sibling of `refine-ticket`; size + risk + split recommendation for an already-refined ticket
@@ -7,8 +7,13 @@ suggestion:
7
7
  eligible: true
8
8
  trigger_description: "update the feature plan, refine the feature spec"
9
9
  trigger_context: "existing agents/features/*.md referenced in the prompt"
10
+ superseded_by: feature refactor
11
+ deprecated_in: "1.15.0"
10
12
  ---
11
13
 
14
+ > ⚠️ /feature-refactor is deprecated; use /feature refactor instead.
15
+ > This shim is retained for one release cycle (1.15.0 → next minor) and forwards to the same instructions below. See [`docs/contracts/command-clusters.md`](../../docs/contracts/command-clusters.md).
16
+
12
17
  # feature-refactor
13
18
 
14
19
  ## Instructions