@event4u/agent-config 1.15.0 → 1.17.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 (354) hide show
  1. package/.agent-src/commands/{agents-audit.md → agents/audit.md} +4 -3
  2. package/.agent-src/commands/{agents-cleanup.md → agents/cleanup.md} +12 -6
  3. package/.agent-src/commands/{agents-prepare.md → agents/prepare.md} +4 -3
  4. package/.agent-src/commands/agents.md +46 -0
  5. package/.agent-src/commands/bug-fix.md +1 -1
  6. package/.agent-src/commands/bug-investigate.md +2 -2
  7. package/.agent-src/commands/{chat-history-checkpoint.md → chat-history/checkpoint.md} +5 -5
  8. package/.agent-src/commands/{chat-history-clear.md → chat-history/clear.md} +5 -5
  9. package/.agent-src/commands/{chat-history-resume.md → chat-history/resume.md} +4 -4
  10. package/.agent-src/commands/chat-history/show.md +107 -0
  11. package/.agent-src/commands/chat-history.md +33 -89
  12. package/.agent-src/commands/check-current-md.md +1 -1
  13. package/.agent-src/commands/{commit-in-chunks.md → commit/in-chunks.md} +15 -13
  14. package/.agent-src/commands/commit.md +22 -2
  15. package/.agent-src/commands/{context-create.md → context/create.md} +4 -3
  16. package/.agent-src/commands/{context-refactor.md → context/refactor.md} +4 -3
  17. package/.agent-src/commands/context.md +44 -0
  18. package/.agent-src/commands/{copilot-agents-init.md → copilot-agents/init.md} +4 -3
  19. package/.agent-src/commands/{copilot-agents-optimize.md → copilot-agents/optimize.md} +4 -3
  20. package/.agent-src/commands/copilot-agents.md +44 -0
  21. package/.agent-src/commands/council/default.md +221 -0
  22. package/.agent-src/commands/council/design.md +97 -0
  23. package/.agent-src/commands/council/optimize.md +116 -0
  24. package/.agent-src/commands/council/pr.md +124 -0
  25. package/.agent-src/commands/council.md +54 -0
  26. package/.agent-src/commands/{create-pr-description.md → create-pr/description-only.md} +4 -2
  27. package/.agent-src/commands/create-pr.md +49 -5
  28. package/.agent-src/commands/e2e-heal.md +1 -1
  29. package/.agent-src/commands/e2e-plan.md +1 -1
  30. package/.agent-src/commands/{feature-dev.md → feature/dev.md} +6 -3
  31. package/.agent-src/commands/{feature-explore.md → feature/explore.md} +5 -4
  32. package/.agent-src/commands/{feature-plan.md → feature/plan.md} +32 -5
  33. package/.agent-src/commands/{feature-refactor.md → feature/refactor.md} +4 -3
  34. package/.agent-src/commands/{feature-roadmap.md → feature/roadmap.md} +7 -6
  35. package/.agent-src/commands/feature.md +52 -0
  36. package/.agent-src/commands/{fix-ci.md → fix/ci.md} +4 -3
  37. package/.agent-src/commands/{fix-portability.md → fix/portability.md} +4 -3
  38. package/.agent-src/commands/{fix-pr-bot-comments.md → fix/pr-bots.md} +4 -3
  39. package/.agent-src/commands/{fix-pr-developer-comments.md → fix/pr-developers.md} +4 -3
  40. package/.agent-src/commands/{fix-pr-comments.md → fix/pr.md} +7 -6
  41. package/.agent-src/commands/{fix-references.md → fix/refs.md} +4 -3
  42. package/.agent-src/commands/{fix-seeder.md → fix/seeder.md} +4 -3
  43. package/.agent-src/commands/fix.md +54 -0
  44. package/.agent-src/commands/jira-ticket.md +1 -1
  45. package/.agent-src/commands/{do-and-judge.md → judge/on-diff.md} +7 -6
  46. package/.agent-src/commands/judge/solo.md +90 -0
  47. package/.agent-src/commands/{do-in-steps.md → judge/steps.md} +8 -7
  48. package/.agent-src/commands/judge.md +35 -70
  49. package/.agent-src/commands/{memory-add.md → memory/add.md} +7 -6
  50. package/.agent-src/commands/{memory-full.md → memory/load.md} +6 -5
  51. package/.agent-src/commands/{memory-promote.md → memory/promote.md} +6 -5
  52. package/.agent-src/commands/{propose-memory.md → memory/propose.md} +6 -5
  53. package/.agent-src/commands/memory.md +48 -0
  54. package/.agent-src/commands/mode.md +5 -5
  55. package/.agent-src/commands/{module-create.md → module/create.md} +4 -3
  56. package/.agent-src/commands/{module-explore.md → module/explore.md} +4 -3
  57. package/.agent-src/commands/module.md +44 -0
  58. package/.agent-src/commands/onboard.md +3 -3
  59. package/.agent-src/commands/{optimize-agents.md → optimize/agents.md} +5 -4
  60. package/.agent-src/commands/{optimize-augmentignore.md → optimize/augmentignore.md} +4 -4
  61. package/.agent-src/commands/{optimize-rtk-filters.md → optimize/rtk.md} +4 -3
  62. package/.agent-src/commands/{optimize-skills.md → optimize/skills.md} +5 -4
  63. package/.agent-src/commands/optimize.md +48 -0
  64. package/.agent-src/commands/{override-create.md → override/create.md} +4 -3
  65. package/.agent-src/commands/{override-manage.md → override/manage.md} +4 -3
  66. package/.agent-src/commands/override.md +44 -0
  67. package/.agent-src/commands/review-changes.md +26 -1
  68. package/.agent-src/commands/review-routing.md +1 -1
  69. package/.agent-src/commands/{roadmap-create.md → roadmap/create.md} +33 -5
  70. package/.agent-src/commands/{roadmap-execute.md → roadmap/execute.md} +4 -3
  71. package/.agent-src/commands/roadmap.md +44 -0
  72. package/.agent-src/commands/set-cost-profile.md +3 -3
  73. package/.agent-src/commands/sync-agent-settings.md +2 -2
  74. package/.agent-src/commands/{tests-create.md → tests/create.md} +5 -4
  75. package/.agent-src/commands/{tests-execute.md → tests/execute.md} +4 -3
  76. package/.agent-src/commands/tests.md +44 -0
  77. package/.agent-src/commands/upstream-contribute.md +1 -1
  78. package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
  79. package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
  80. package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
  81. package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +72 -0
  82. package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +79 -0
  83. package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +98 -0
  84. package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +87 -0
  85. package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +62 -0
  86. package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +78 -0
  87. package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +85 -0
  88. package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +65 -0
  89. package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +78 -0
  90. package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +62 -0
  91. package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +55 -0
  92. package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +53 -0
  93. package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +77 -0
  94. package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
  95. package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
  96. package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
  97. package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
  98. package/.agent-src/contexts/judges/no-consolidate-rationale.md +102 -0
  99. package/.agent-src/contexts/judges/persona-voice-rubric.md +140 -0
  100. package/.agent-src/personas/README.md +1 -1
  101. package/.agent-src/rules/agent-authority.md +24 -0
  102. package/.agent-src/rules/architecture.md +1 -1
  103. package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
  104. package/.agent-src/rules/artifact-engagement-recording.md +14 -70
  105. package/.agent-src/rules/ask-when-uncertain.md +28 -43
  106. package/.agent-src/rules/augment-portability.md +15 -61
  107. package/.agent-src/rules/augment-source-of-truth.md +27 -93
  108. package/.agent-src/rules/autonomous-execution.md +78 -114
  109. package/.agent-src/rules/capture-learnings.md +1 -1
  110. package/.agent-src/rules/chat-history-cadence.md +3 -3
  111. package/.agent-src/rules/chat-history-ownership.md +3 -3
  112. package/.agent-src/rules/chat-history-visibility.md +3 -3
  113. package/.agent-src/rules/cli-output-handling.md +10 -76
  114. package/.agent-src/rules/command-suggestion-policy.md +93 -0
  115. package/.agent-src/rules/commit-conventions.md +17 -14
  116. package/.agent-src/rules/commit-policy.md +14 -42
  117. package/.agent-src/rules/context-hygiene.md +3 -3
  118. package/.agent-src/rules/direct-answers.md +34 -49
  119. package/.agent-src/rules/docker-commands.md +5 -5
  120. package/.agent-src/rules/docs-sync.md +16 -70
  121. package/.agent-src/rules/e2e-testing.md +1 -1
  122. package/.agent-src/rules/guidelines.md +4 -4
  123. package/.agent-src/rules/improve-before-implement.md +2 -2
  124. package/.agent-src/rules/language-and-tone.md +50 -133
  125. package/.agent-src/rules/minimal-safe-diff.md +3 -3
  126. package/.agent-src/rules/missing-tool-handling.md +28 -22
  127. package/.agent-src/rules/model-recommendation.md +4 -4
  128. package/.agent-src/rules/no-cheap-questions.md +82 -0
  129. package/.agent-src/rules/no-roadmap-references.md +73 -0
  130. package/.agent-src/rules/non-destructive-by-default.md +15 -49
  131. package/.agent-src/rules/onboarding-gate.md +5 -5
  132. package/.agent-src/rules/package-ci-checks.md +21 -61
  133. package/.agent-src/rules/preservation-guard.md +64 -29
  134. package/.agent-src/rules/review-routing-awareness.md +26 -45
  135. package/.agent-src/rules/roadmap-progress-sync.md +28 -96
  136. package/.agent-src/rules/role-mode-adherence.md +2 -2
  137. package/.agent-src/rules/scope-control.md +65 -46
  138. package/.agent-src/rules/security-sensitive-stop.md +9 -9
  139. package/.agent-src/rules/size-enforcement.md +1 -1
  140. package/.agent-src/rules/skill-quality.md +16 -48
  141. package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +7 -4
  142. package/.agent-src/rules/think-before-action.md +55 -45
  143. package/.agent-src/rules/token-efficiency.md +4 -4
  144. package/.agent-src/rules/tool-safety.md +19 -16
  145. package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +27 -41
  146. package/.agent-src/rules/user-interaction.md +16 -71
  147. package/.agent-src/rules/verify-before-complete.md +12 -67
  148. package/.agent-src/scripts/update_roadmap_progress.py +9 -4
  149. package/.agent-src/skills/ai-council/SKILL.md +335 -0
  150. package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
  151. package/.agent-src/skills/api-testing/SKILL.md +1 -1
  152. package/.agent-src/skills/blade-ui/SKILL.md +1 -1
  153. package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
  154. package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
  155. package/.agent-src/skills/check-refs/SKILL.md +59 -40
  156. package/.agent-src/skills/command-routing/SKILL.md +1 -1
  157. package/.agent-src/skills/command-writing/SKILL.md +1 -1
  158. package/.agent-src/skills/conventional-commits-writing/SKILL.md +86 -28
  159. package/.agent-src/skills/copilot-agents-optimization/SKILL.md +7 -7
  160. package/.agent-src/skills/developer-like-execution/SKILL.md +6 -6
  161. package/.agent-src/skills/finishing-a-development-branch/SKILL.md +101 -65
  162. package/.agent-src/skills/flux/SKILL.md +31 -11
  163. package/.agent-src/skills/git-workflow/SKILL.md +1 -1
  164. package/.agent-src/skills/github-ci/SKILL.md +2 -2
  165. package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
  166. package/.agent-src/skills/judge-code-quality/SKILL.md +7 -8
  167. package/.agent-src/skills/judge-security-auditor/SKILL.md +4 -5
  168. package/.agent-src/skills/judge-test-coverage/SKILL.md +3 -4
  169. package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
  170. package/.agent-src/skills/lint-skills/SKILL.md +57 -39
  171. package/.agent-src/skills/livewire/SKILL.md +1 -1
  172. package/.agent-src/skills/md-language-check/SKILL.md +61 -39
  173. package/.agent-src/skills/override-management/SKILL.md +7 -7
  174. package/.agent-src/skills/php-coder/SKILL.md +1 -1
  175. package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
  176. package/.agent-src/skills/quality-tools/SKILL.md +2 -2
  177. package/.agent-src/skills/react-shadcn-ui/SKILL.md +116 -43
  178. package/.agent-src/skills/readme-reviewer/SKILL.md +31 -30
  179. package/.agent-src/skills/readme-writing/SKILL.md +79 -54
  180. package/.agent-src/skills/readme-writing-package/SKILL.md +51 -48
  181. package/.agent-src/skills/receiving-code-review/SKILL.md +53 -48
  182. package/.agent-src/skills/refine-prompt/SKILL.md +0 -1
  183. package/.agent-src/skills/requesting-code-review/SKILL.md +35 -30
  184. package/.agent-src/skills/review-routing/SKILL.md +2 -2
  185. package/.agent-src/skills/rule-writing/SKILL.md +1 -1
  186. package/.agent-src/skills/security/SKILL.md +7 -2
  187. package/.agent-src/skills/security-audit/SKILL.md +7 -3
  188. package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
  189. package/.agent-src/skills/skill-writing/SKILL.md +3 -3
  190. package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
  191. package/.agent-src/skills/systematic-debugging/SKILL.md +69 -61
  192. package/.agent-src/skills/test-driven-development/SKILL.md +59 -57
  193. package/.agent-src/skills/test-performance/SKILL.md +0 -1
  194. package/.agent-src/skills/traefik/SKILL.md +4 -4
  195. package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
  196. package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
  197. package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +30 -28
  198. package/.agent-src/templates/agent-settings.md +8 -8
  199. package/.agent-src/templates/contexts/auth-model.md +1 -1
  200. package/.agent-src/templates/scripts/README.md +2 -2
  201. package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
  202. package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
  203. package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
  204. package/.agent-src/templates/scripts/telemetry_record.py +14 -1
  205. package/.claude-plugin/marketplace.json +31 -12
  206. package/AGENTS.md +11 -9
  207. package/CHANGELOG.md +213 -2
  208. package/README.md +43 -44
  209. package/config/agent-settings.template.yml +58 -1
  210. package/config/gitignore-block.txt +3 -0
  211. package/docs/architecture.md +5 -7
  212. package/docs/catalog.md +359 -0
  213. package/docs/contracts/STABILITY.md +46 -1
  214. package/docs/contracts/adr-chat-history-split.md +1 -3
  215. package/docs/contracts/adr-command-suggestion.md +3 -5
  216. package/docs/contracts/adr-implement-ticket-runtime.md +1 -2
  217. package/docs/contracts/adr-product-ui-track.md +5 -8
  218. package/docs/contracts/adr-prompt-driven-execution.md +3 -4
  219. package/docs/contracts/agent-memory-contract.md +8 -13
  220. package/docs/contracts/artifact-engagement-flow.md +7 -10
  221. package/docs/contracts/command-clusters.md +56 -46
  222. package/docs/contracts/command-suggestion-flow.md +4 -6
  223. package/docs/contracts/context-paths.md +99 -0
  224. package/docs/contracts/file-ownership-matrix.json +6722 -0
  225. package/docs/contracts/file-ownership-matrix.md +134 -0
  226. package/docs/contracts/implement-ticket-flow.md +8 -11
  227. package/docs/contracts/linear-ai-rules-inclusion.md +1 -2
  228. package/docs/contracts/linear-ai-three-layers.md +0 -2
  229. package/docs/contracts/load-context-budget-model.md +178 -0
  230. package/docs/contracts/load-context-schema.md +184 -0
  231. package/docs/contracts/rule-interactions.md +0 -1
  232. package/docs/contracts/rule-interactions.yml +96 -0
  233. package/docs/contracts/rule-priority-hierarchy.md +87 -0
  234. package/docs/contracts/ui-track-flow.md +8 -18
  235. package/docs/customization.md +16 -0
  236. package/docs/end-to-end-walkthroughs.md +165 -0
  237. package/docs/getting-started.md +29 -10
  238. package/docs/github-topics.md +12 -3
  239. package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +100 -0
  240. package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
  241. package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
  242. package/docs/guidelines/php/git.md +164 -0
  243. package/docs/migrations/commands-1.15.0.md +1 -1
  244. package/docs/showcase.md +9 -4
  245. package/docs/skills-catalog.md +14 -8
  246. package/docs/ui-track-mental-model.md +2 -2
  247. package/llms.txt +13 -7
  248. package/package.json +1 -1
  249. package/scripts/_one_off_phase4_dispatch_latency.py +108 -0
  250. package/scripts/_one_off_phase6_trigger_jaccard.py +92 -0
  251. package/scripts/_phase2_shim_helper.py +109 -0
  252. package/scripts/agent-config +33 -0
  253. package/scripts/ai_council/__init__.py +39 -0
  254. package/scripts/ai_council/_default_prices.py +41 -0
  255. package/scripts/ai_council/_one_off_2a4_acceptance.py +208 -0
  256. package/scripts/ai_council/_one_off_context_layer_v1_estimate.py +67 -0
  257. package/scripts/ai_council/_one_off_context_layer_v1_review.py +292 -0
  258. package/scripts/ai_council/_one_off_followups_review.py +259 -0
  259. package/scripts/ai_council/_one_off_nondestructive_inline_audit.py +209 -0
  260. package/scripts/ai_council/_one_off_phase_2a_budget_rebalance.py +257 -0
  261. package/scripts/ai_council/_one_off_phase_2a_post_revert.py +197 -0
  262. package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
  263. package/scripts/ai_council/_one_off_roundtrip.py +106 -0
  264. package/scripts/ai_council/_one_off_rule_hardening_v1.py +251 -0
  265. package/scripts/ai_council/_one_off_structural_open_questions.py +232 -0
  266. package/scripts/ai_council/_one_off_structural_optimization.py +144 -0
  267. package/scripts/ai_council/_one_off_structural_v3_gaps.py +252 -0
  268. package/scripts/ai_council/_one_off_structural_v3_review.py +240 -0
  269. package/scripts/ai_council/budget_guard.py +172 -0
  270. package/scripts/ai_council/bundler.py +261 -0
  271. package/scripts/ai_council/clients.py +381 -0
  272. package/scripts/ai_council/modes.py +127 -0
  273. package/scripts/ai_council/orchestrator.py +350 -0
  274. package/scripts/ai_council/pricing.py +213 -0
  275. package/scripts/ai_council/project_context.py +159 -0
  276. package/scripts/ai_council/prompts.py +232 -0
  277. package/scripts/ai_council/session.py +144 -0
  278. package/scripts/check_always_budget.py +444 -0
  279. package/scripts/check_augmentignore.py +69 -0
  280. package/scripts/check_cluster_patterns.py +159 -0
  281. package/scripts/check_command_count_messaging.py +127 -0
  282. package/scripts/check_context_paths.py +201 -0
  283. package/scripts/check_no_roadmap_refs.py +155 -0
  284. package/scripts/check_phase_coupling.py +148 -0
  285. package/scripts/check_portability.py +57 -0
  286. package/scripts/check_public_catalog_links.py +122 -0
  287. package/scripts/check_references.py +33 -3
  288. package/scripts/check_roadmap_trackable.py +111 -0
  289. package/scripts/check_safety_floor_untouched.py +125 -0
  290. package/scripts/command_suggester/cooldown.py +1 -1
  291. package/scripts/command_suggester/loader.py +4 -1
  292. package/scripts/compress.py +59 -13
  293. package/scripts/generate_index.py +270 -0
  294. package/scripts/generate_ownership_matrix.py +323 -0
  295. package/scripts/hooks/augment-roadmap-progress.sh +57 -0
  296. package/scripts/install.py +49 -28
  297. package/scripts/install_anthropic_key.sh +5 -0
  298. package/scripts/install_openai_key.sh +106 -0
  299. package/scripts/lint_load_context.py +163 -0
  300. package/scripts/lint_no_new_atomic_commands.py +12 -11
  301. package/scripts/requirements-evals.txt +1 -0
  302. package/scripts/roadmap_progress_hook.py +159 -0
  303. package/scripts/schemas/command.schema.json +22 -1
  304. package/scripts/schemas/rule.schema.json +10 -0
  305. package/scripts/skill_linter.py +13 -4
  306. package/scripts/sync_agent_settings.py +26 -3
  307. package/scripts/update_counts.py +16 -4
  308. package/scripts/update_prices.py +124 -0
  309. package/.agent-src/guidelines/php/git.md +0 -96
  310. package/.agent-src/rules/command-suggestion.md +0 -134
  311. /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
  312. /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
  313. /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
  314. /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
  315. /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
  316. /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
  317. /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
  318. /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
  319. /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
  320. /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
  321. /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
  322. /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
  323. /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
  324. /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
  325. /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
  326. /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
  327. /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
  328. /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
  329. /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
  330. /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
  331. /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
  332. /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
  333. /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
  334. /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
  335. /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
  336. /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
  337. /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
  338. /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
  339. /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
  340. /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
  341. /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
  342. /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
  343. /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
  344. /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
  345. /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
  346. /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
  347. /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
  348. /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
  349. /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
  350. /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
  351. /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
  352. /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
  353. /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
  354. /package/{.agent-src → docs}/guidelines/php/websocket.md +0 -0
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: context
3
+ description: Context orchestrator — routes to create, refactor
4
+ cluster: context
5
+ disable-model-invocation: true
6
+ suggestion:
7
+ eligible: true
8
+ trigger_description: "create a context document, update an existing context, refactor a context file"
9
+ trigger_context: "user wants to author or restructure a context document"
10
+ ---
11
+
12
+ # /context
13
+
14
+ Top-level orchestrator for the `/context` family. Replaces 2 standalone
15
+ commands with a single entry point + sub-command dispatch.
16
+
17
+ ## Sub-commands
18
+
19
+ | Sub-command | Routes to | Purpose |
20
+ |---|---|---|
21
+ | `/context create` | `commands/context/create.md` | Analyze a codebase area and create a structured context document |
22
+ | `/context refactor` | `commands/context/refactor.md` | Analyze, update, and extend an existing context document |
23
+
24
+ Sub-command names match the locked contract in
25
+ [`docs/contracts/command-clusters.md`](../../docs/contracts/command-clusters.md).
26
+
27
+ ## Dispatch
28
+
29
+ 1. Parse the user's argument: `/context <sub-command> [args]`.
30
+ 2. Look up the sub-command in the table above.
31
+ 3. Load the body of the routed file and follow its `## Instructions` section
32
+ verbatim with the remaining args.
33
+ 4. If the sub-command is unknown or missing, print the table above and ask:
34
+
35
+ > 1. create — author a new context document
36
+ > 2. refactor — update an existing context document
37
+
38
+ ## Rules
39
+
40
+ - **Do NOT commit, push, or open a PR** unless the sub-command explicitly
41
+ authorizes it.
42
+ - **Do NOT chain sub-commands.** One `/context <sub>` per turn.
43
+ - If the user invokes `/context` with no argument, **show the menu** — do
44
+ not guess which sub-command they meant.
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: copilot-agents-init
2
+ name: copilot-agents:init
3
+ cluster: copilot-agents
4
+ sub: init
3
5
  description: Create AGENTS.md and .github/copilot-instructions.md from scratch in the consumer project — interactive, auto-detects stack, never leaks other projects' identifiers.
4
6
  skills: [copilot-config, copilot-agents-optimization, agent-docs-writing]
5
7
  disable-model-invocation: true
@@ -8,8 +10,7 @@ suggestion:
8
10
  rationale: "Project init — only deliberately during onboarding."
9
11
  ---
10
12
 
11
- # /copilot-agents-init
12
-
13
+ # /copilot-agents init
13
14
  Interactive initializer that **creates** `AGENTS.md` and
14
15
  `.github/copilot-instructions.md` in the consumer project from the
15
16
  package-shipped templates (`.augment/templates/AGENTS.md` and
@@ -1,5 +1,7 @@
1
1
  ---
2
- name: copilot-agents-optimize
2
+ name: copilot-agents:optimize
3
+ cluster: copilot-agents
4
+ sub: optimize
3
5
  description: Analyzes and refactors AGENTS.md and copilot-instructions.md — removes duplications, enforces line budgets, and ensures both files are optimized for their audience.
4
6
  skills: [copilot-agents-optimization, copilot-config, agent-docs-writing]
5
7
  disable-model-invocation: true
@@ -8,8 +10,7 @@ suggestion:
8
10
  rationale: "Maintenance refactor; only when the maintainer chooses to run it."
9
11
  ---
10
12
 
11
- # /copilot-agents-optimize
12
-
13
+ # /copilot-agents optimize
13
14
  Analyzes and refactors `AGENTS.md` and `.github/copilot-instructions.md` against the `.augment/` ecosystem.
14
15
 
15
16
  ## Steps
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: copilot-agents
3
+ description: Copilot agents-doc orchestrator — routes to init, optimize
4
+ cluster: copilot-agents
5
+ disable-model-invocation: true
6
+ suggestion:
7
+ eligible: true
8
+ trigger_description: "create AGENTS.md, optimize copilot-instructions.md, scaffold copilot agent docs"
9
+ trigger_context: "user wants to author or tune AGENTS.md / copilot-instructions.md"
10
+ ---
11
+
12
+ # /copilot-agents
13
+
14
+ Top-level orchestrator for the `/copilot-agents` family. Replaces 2
15
+ standalone commands with a single entry point + sub-command dispatch.
16
+
17
+ ## Sub-commands
18
+
19
+ | Sub-command | Routes to | Purpose |
20
+ |---|---|---|
21
+ | `/copilot-agents init` | `commands/copilot-agents/init.md` | Create AGENTS.md and `.github/copilot-instructions.md` from scratch |
22
+ | `/copilot-agents optimize` | `commands/copilot-agents/optimize.md` | Refactor existing AGENTS.md and copilot-instructions.md for line budgets |
23
+
24
+ Sub-command names match the locked contract in
25
+ [`docs/contracts/command-clusters.md`](../../docs/contracts/command-clusters.md).
26
+
27
+ ## Dispatch
28
+
29
+ 1. Parse the user's argument: `/copilot-agents <sub-command> [args]`.
30
+ 2. Look up the sub-command in the table above.
31
+ 3. Load the body of the routed file and follow its `## Instructions` section
32
+ verbatim with the remaining args.
33
+ 4. If the sub-command is unknown or missing, print the table above and ask:
34
+
35
+ > 1. init — scaffold AGENTS.md + copilot-instructions.md from scratch
36
+ > 2. optimize — refactor existing files for budget and audience
37
+
38
+ ## Rules
39
+
40
+ - **Do NOT commit, push, or open a PR** unless the sub-command explicitly
41
+ authorizes it.
42
+ - **Do NOT chain sub-commands.** One `/copilot-agents <sub>` per turn.
43
+ - If the user invokes `/copilot-agents` with no argument, **show the
44
+ menu** — do not guess which sub-command they meant.
@@ -0,0 +1,221 @@
1
+ ---
2
+ name: council:default
3
+ cluster: council
4
+ sub: default
5
+ skills: [ai-council]
6
+ description: Default council lens — neutral framing, redacted context, advisory output only. Run `/council default <input>` for prompt/roadmap/diff/files; the cluster shows a menu when invoked bare.
7
+ disable-model-invocation: true
8
+ suggestion:
9
+ eligible: false
10
+ rationale: "Default lens — invoked via /council dispatcher; no direct trigger."
11
+ ---
12
+
13
+ # /council default
14
+
15
+ Base orchestration entry point for the council. Specialised lenses
16
+ (`/council pr`, `/council design`, `/council optimize`) wrap this same
17
+ flow with mode-specific neutrality preambles.
18
+
19
+ ## Instructions
20
+
21
+ ### 1. Resolve the target + capture the original ask
22
+
23
+ The user invoked `/council default` on exactly one input mode:
24
+
25
+ - `prompt:"<text>"` — a free-form question or proposal
26
+ - `roadmap:<path>` — a roadmap file under `agents/roadmaps/`
27
+ - `diff:<base>..<head>` — a git diff range
28
+ - `files:<path>,<path>` — a comma-separated file list
29
+
30
+ Optional invocation flag: `mode:api|manual` overrides the per-member
31
+ and global mode for this call only (see Step 2.5). `mode:playwright`
32
+ is reserved for Phase 2c — refuse politely if invoked.
33
+
34
+ Optional **rounds**: `rounds:N` (1-3) enables multi-round debate. Round
35
+ 1 sees the artefact alone. Round 2+ sees the artefact plus anonymised
36
+ critiques from the previous round (provider/model identity stripped).
37
+ Total spend = N × single-round cost; surface this in the cost gate.
38
+ Default `rounds:1`.
39
+
40
+ Optional **mode_override**: `mode_override=pr|design|optimize` swaps
41
+ the system-prompt addendum for one of the specialised lenses
42
+ (see `prompts.py` `_MODE_TABLE`). The bundle mode is unchanged; only
43
+ the per-mode neutrality addendum is replaced. Routed by the
44
+ `/council pr`, `/council design`, `/council optimize` sub-commands —
45
+ surface to the user as "council on <target> — <lens> lens".
46
+
47
+ If no input mode was supplied, ask the user which mode + target. **One
48
+ question per turn** (per `ask-when-uncertain`). Do not assume the
49
+ working-tree diff.
50
+
51
+ Also capture the user's **original ask** verbatim — the free-form
52
+ sentence that triggered the council, distinct from the bundled
53
+ artefact. For `prompt:"…"` mode the ask and the artefact are the
54
+ same string. For `roadmap` / `diff` / `files` modes, the ask is the
55
+ user's framing sentence ("review this roadmap before I execute it",
56
+ "is this diff safe to merge?"). This string flows into
57
+ `consult(..., original_ask=…)` in Step 5 (per `ai-council` skill §
58
+ Neutrality — context-handoff).
59
+
60
+ ### 2. Check the council is configured + price table fresh
61
+
62
+ Read `.agent-settings.yml` → `ai_council`:
63
+
64
+ - If `ai_council.enabled` is false → state that and offer to flip it
65
+ on. Do not flip it autonomously.
66
+ - If no member has `enabled: true` → list the install commands
67
+ (`./agent-config keys:install-anthropic`, `./agent-config keys:install-openai`)
68
+ and stop.
69
+ - If a member is enabled but its `*.key` file is missing or has the
70
+ wrong mode → tell the user which key to install. Do not fall back
71
+ to env vars. Ever.
72
+
73
+ Load the price table via `scripts.ai_council.pricing.load_prices()`
74
+ (auto-bootstraps `.agent-prices.md` from defaults if missing). Run
75
+ `pricing.is_stale(table)` and, if stale, surface the staleness gate
76
+ from the `ai-council` skill (§ Stale price-table gate) before
77
+ continuing.
78
+
79
+ ### 2.5. Resolve per-member execution mode
80
+
81
+ For each enabled member, resolve its mode via
82
+ `scripts.ai_council.modes.resolve_mode(name, invocation_mode,
83
+ member_settings, global_mode)`. Precedence: invocation flag >
84
+ per-member setting > global setting > default (`api`).
85
+
86
+ Construct each member from the resolved mode:
87
+
88
+ - `api` → `AnthropicClient` / `OpenAIClient` (billable, cost-gated).
89
+ - `manual` → `ManualClient` from `scripts.ai_council.clients`
90
+ (`billable=False`, no API key, no SDK call).
91
+ - `playwright` → reserved for Phase 2c. If a settings/invocation
92
+ resolves to it, refuse with a one-line note.
93
+
94
+ ### 3. Cost confirmation — ALWAYS ASK for billable members
95
+
96
+ Council calls to billable members spend money. Even under
97
+ `personal.autonomy: on`, the agent **must** ask before invoking any
98
+ billable member.
99
+
100
+ Compute `orchestrator.estimate(question, members, table)` over the
101
+ **billable** subset only (`getattr(m, "billable", True)`). Manual
102
+ members contribute `$0` and skip the estimate.
103
+
104
+ Render the cost-confirmation numbered-options block per the
105
+ `ai-council` skill (§ Pre-call estimate format) — per-member tokens
106
+ + USD, projected total, budget caps, then `1. Run / 2. Cancel`. If
107
+ the resolved member set is **all-manual**, skip the gate entirely
108
+ (spend = $0) and proceed directly to Step 4.
109
+
110
+ Wait for the user's pick. `1` proceeds; anything else aborts.
111
+
112
+ ### 4. Bundle the context
113
+
114
+ Use `scripts.ai_council.bundler`:
115
+
116
+ - `prompt` mode → `bundle_prompt(text)`
117
+ - `roadmap` mode → `bundle_roadmap(path)`
118
+ - `diff` mode → `bundle_diff(base, head)`
119
+ - `files` mode → `bundle_files(paths)`
120
+
121
+ The bundler runs redaction + size guard. If `BundleTooLarge` raises,
122
+ surface the byte count and ask the user to narrow scope. Do **not**
123
+ truncate silently.
124
+
125
+ Print the manifest (what was included) and the excluded list before
126
+ sending — gives the user a chance to abort if scope is wrong.
127
+
128
+ ### 5. Run the orchestrator
129
+
130
+ Members are constructed from the settings file plus
131
+ `load_anthropic_key()` / `load_openai_key()`. Cost budget comes from
132
+ `ai_council.cost_budget`.
133
+
134
+ Detect project context once via
135
+ `scripts.ai_council.project_context.detect_project_context()` (reads
136
+ `composer.json`, `package.json`, root `README.md` — never raises;
137
+ empty-fields fall back to bare neutrality preamble).
138
+
139
+ Call:
140
+
141
+ ```python
142
+ consult(
143
+ members, question, budget,
144
+ table=table,
145
+ on_overrun=_handle_overrun,
146
+ project=project,
147
+ original_ask=original_ask,
148
+ rounds=rounds, # 1 by default; 2-3 enables multi-round debate
149
+ )
150
+ ```
151
+
152
+ `project` + `original_ask` flow into `handoff_preamble()` so each
153
+ member receives a neutral context-handoff alongside the artefact
154
+ (see `ai-council` skill § Neutrality — context-handoff). Members run
155
+ **sequentially**; per-member errors are normalised — one failure
156
+ does not abort the others. Define `_handle_overrun(event)` per the
157
+ `ai-council` skill (§ Mid-flow overrun callback) to surface the user
158
+ prompt before each breaching member.
159
+
160
+ ### 6. Render the report
161
+
162
+ Use `scripts.ai_council.orchestrator.render(responses)` for the
163
+ per-member sections (stacked, not side-by-side — narrow terminals).
164
+ Then write the **Convergence / Divergence** section yourself:
165
+
166
+ - **Agreements** — points all members made (or did not contradict).
167
+ - **Disagreements** — points where members took opposing positions.
168
+ - **Unique insights** — points raised by exactly one member.
169
+ - **Suggested next actions** — translated into concrete options for
170
+ the user.
171
+
172
+ End with a numbered-options block asking the user how to proceed
173
+ (e.g. update the roadmap, request a second round, ignore the
174
+ critique).
175
+
176
+ ### 7. Hard floor — text only
177
+
178
+ `/council` produces **text**. It does **NOT**:
179
+
180
+ - Edit any file in the project.
181
+ - Open, comment on, or merge any PR.
182
+ - Run `git` commands beyond `git diff` (read-only).
183
+ - Persist API responses outside the current chat unless the user
184
+ explicitly asks (Phase 4 — out of scope for v1).
185
+
186
+ This is restated in step 7 deliberately. The neutrality framing
187
+ loses meaning if the council can act on the project directly.
188
+
189
+ ## Failure modes
190
+
191
+ - **Member SDK not installed** → tell the user exactly which `pip
192
+ install` runs (`pip install anthropic` / `pip install openai`).
193
+ Do not fall back to mocks.
194
+ - **Key file mode drift** → refuse and point at the install script.
195
+ The 0600 contract is non-negotiable.
196
+ - **Manual mode + non-interactive stdin** → `ManualClient` reads
197
+ pasted replies from stdin terminated by a line containing only
198
+ `END`. If stdin is closed before any reply lands, the member
199
+ returns empty text with `error="manual_aborted"`; render the
200
+ partial result and ask the user.
201
+ - **Invalid mode value** → `resolve_mode()` raises
202
+ `InvalidModeError` with the exact settings path. Surface verbatim
203
+ and stop.
204
+ - **Cost budget exceeded mid-fan-out** → render the partial
205
+ responses and clearly mark the unfinished members with their
206
+ `cost_budget_exceeded` error. Do not silently retry.
207
+ - **Stale price table, refresher fails (offline)** → state the
208
+ failure, re-offer "continue with stale table / cancel", do not
209
+ proceed silently.
210
+ - **`.agent-prices.md` corrupt (missing frontmatter or columns)** →
211
+ surface the parse error, suggest deleting the file to bootstrap
212
+ fresh from defaults; never silently fall back.
213
+ - **All members error** → render the errors and ask the user
214
+ whether to fix and retry, or abort.
215
+
216
+ ## See also
217
+
218
+ - `/council` — cluster dispatcher.
219
+ - `ai-council` skill — neutrality guidelines, anti-patterns, redaction expectations.
220
+ - `subagent-orchestration` skill — internal multi-agent variant (no network calls).
221
+ - `docs/customization.md` § Available settings → `ai_council.*`.
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: council:design
3
+ cluster: council
4
+ sub: design
5
+ skills: [ai-council]
6
+ description: Run the council on a design document, ADR, or architecture proposal — surfaces hidden coupling, missing rollback, and sequencing risk before commitment.
7
+ disable-model-invocation: true
8
+ suggestion:
9
+ eligible: true
10
+ trigger_description: "council on this design, second opinion on the ADR, external review of architecture proposal"
11
+ trigger_context: "user has a design doc / ADR / architecture proposal and wants an external review before commitment"
12
+ ---
13
+
14
+ # /council design
15
+
16
+ ## Instructions
17
+
18
+ Specialised council mode for **design documents, ADRs, and
19
+ architecture proposals**. Wraps `/council files:<paths>` (or
20
+ `/council prompt:"…"`) with the `design` mode neutrality preamble that
21
+ focuses members on architectural risk rather than line-level
22
+ correctness.
23
+
24
+ ### 1. Resolve the artefact
25
+
26
+ The user invoked `/council design <path>` or `/council design`. If no
27
+ path was supplied, ask (one question per turn):
28
+
29
+ > Which design artefact should the council review?
30
+ >
31
+ > 1. A file path (ADR, design doc, RFC)
32
+ > 2. Multiple files / a directory (the bundler will gather them)
33
+ > 3. A free-form proposal in the chat — paste it now
34
+
35
+ Pick **1** or **2** → use `files:` mode of `/council`.
36
+ Pick **3** → use `prompt:` mode of `/council`.
37
+
38
+ ### 2. Capture the originating ask
39
+
40
+ Look for the artefact's stated goal — the first paragraph after the
41
+ title, or a `## Goal` / `## Problem` section if present. That goal is
42
+ the `original_ask` for the handoff preamble. If the artefact has no
43
+ goal section, ask the user (one question per turn):
44
+
45
+ > What is the goal of this design? (one sentence — used as neutral
46
+ > framing for the council, not their analysis)
47
+
48
+ ### 3. Run /council with the design mode preamble
49
+
50
+ Invoke the matching `/council` form:
51
+
52
+ - `files:` → `/council files:<paths>` with `mode_override=design`.
53
+ - `prompt:` → `/council prompt:"<artefact text>"` with
54
+ `mode_override=design`.
55
+
56
+ The `design` mode addendum from `scripts/ai_council/prompts.py`
57
+ focuses council members on:
58
+
59
+ - Trust-boundary and module-coupling risk.
60
+ - Rollback / kill-switch criteria the design omits.
61
+ - Sequencing risk (does step N really not block step N+1?).
62
+ - Open questions disguised as decisions.
63
+
64
+ The cost gate from `/council` Step 3 still applies.
65
+
66
+ ### 4. Render the report
67
+
68
+ Use the standard stacked + Convergence/Divergence layout. Add a
69
+ one-line header at the top so reviewers know the lens:
70
+
71
+ ```
72
+ ## Council on <artefact path or "free-form proposal"> — design lens
73
+ ```
74
+
75
+ ### 5. Hand back to the user
76
+
77
+ The council is **advisory**. Do **not** rewrite the design based on
78
+ findings. Surface convergent + divergent points and let the user
79
+ decide which to fold in via `/feature plan` or `/feature refactor`.
80
+
81
+ ### Hard floor (restated)
82
+
83
+ `/council design` produces **text only**. It does NOT edit the
84
+ design file, open ADR PRs, or modify the codebase.
85
+
86
+ ## Failure modes
87
+
88
+ - **No artefact resolvable** → ask once; if still empty, stop.
89
+ - **Artefact too large** → bundler raises `BundleTooLarge`; suggest
90
+ splitting (`/council files:<single-file>` per section).
91
+
92
+ ## See also
93
+
94
+ - `/council` — base orchestration entry point.
95
+ - `/feature plan` / `/feature refactor` — where design changes get
96
+ written, after the council surfaces issues.
97
+ - `ai-council` skill — neutrality guidelines.
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: council:optimize
3
+ cluster: council
4
+ sub: optimize
5
+ skills: [ai-council]
6
+ 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.
7
+ disable-model-invocation: true
8
+ suggestion:
9
+ eligible: true
10
+ trigger_description: "council on this perf hot path, second opinion on this optimization, external review of /optimize output"
11
+ trigger_context: "user has an optimization target (code path, query, profile result, /optimize-* output) and wants a ranked external opinion"
12
+ ---
13
+
14
+ # /council optimize
15
+
16
+ ## Instructions
17
+
18
+ Specialised council mode for **optimization targets**: hot paths,
19
+ slow queries, allocation profiles, or the output of an `/optimize-*`
20
+ command (`/optimize-skills`, `/optimize-agents`,
21
+ `/optimize-augmentignore`, `/optimize-rtk-filters`). Wraps
22
+ `/council` with the `optimize` neutrality preamble, which focuses
23
+ members on **ranked**, **evidence-based** suggestions instead of
24
+ generic "you should profile" advice.
25
+
26
+ ### 1. Resolve the target
27
+
28
+ The user invoked `/council optimize <target>` or `/council optimize`.
29
+ If nothing was supplied, ask (one question per turn):
30
+
31
+ > What should the council optimize?
32
+ >
33
+ > 1. A file or directory of code (perf hot path)
34
+ > 2. A query / SQL / DB call (paste it now)
35
+ > 3. The output of an `/optimize-*` command — re-run it now and feed
36
+ > the report to the council
37
+ > 4. A free-form description of the bottleneck
38
+
39
+ Pick **1** → `/council files:<paths>` with `mode_override=optimize`.
40
+ Pick **2** → `/council prompt:"<query + context>"` with
41
+ `mode_override=optimize`.
42
+ Pick **3** → run the chosen `/optimize-*` command first, then feed
43
+ its report file to `/council files:<report>` with
44
+ `mode_override=optimize`.
45
+ Pick **4** → `/council prompt:"<description>"` with
46
+ `mode_override=optimize`.
47
+
48
+ ### 2. Capture the constraint
49
+
50
+ Optimization is meaningless without a target metric. Ask **once**
51
+ (one question per turn) before invoking `/council`:
52
+
53
+ > What does "better" mean here?
54
+ >
55
+ > 1. Latency (p50 / p95 / p99 — pick which)
56
+ > 2. Throughput (req/s)
57
+ > 3. Memory footprint
58
+ > 4. Cost ($ / 1M ops)
59
+ > 5. Token count (for LLM workflows)
60
+ > 6. Other — describe in one line
61
+
62
+ The chosen metric becomes the `original_ask` for the handoff preamble:
63
+ `Optimize for <metric>: <one-line scope>`.
64
+
65
+ ### 3. Run /council with the optimize mode preamble
66
+
67
+ Invoke the matching `/council` form (`files:` / `prompt:`) with
68
+ `mode_override=optimize`. The `optimize` mode addendum from
69
+ `scripts/ai_council/prompts.py` requires members to:
70
+
71
+ - Rank suggestions by expected impact on the chosen metric, not by
72
+ effort or cleverness.
73
+ - Cite the evidence (line, query plan, profile entry) for each
74
+ suggestion. No hand-wave "this is probably slow".
75
+ - State at least one suggestion the member explicitly **rejects** as
76
+ low-leverage, so the user does not over-engineer.
77
+ - Mark at least one suggestion that requires measurement before
78
+ committing — i.e. flag what is hypothesis vs. confirmed.
79
+
80
+ The cost gate from `/council` Step 3 still applies.
81
+
82
+ ### 4. Render the report
83
+
84
+ Use the standard stacked + Convergence/Divergence layout. Add a
85
+ one-line header at the top so the optimization metric is visible:
86
+
87
+ ```
88
+ ## Council on <target> — optimize for <metric>
89
+ ```
90
+
91
+ ### 5. Hand back to the user
92
+
93
+ The council is **advisory**. Do **not** apply optimizations
94
+ autonomously. Surface ranked suggestions and let the user pick which
95
+ to drive into a normal `/work` / `/implement-ticket` flow.
96
+
97
+ ### Hard floor (restated)
98
+
99
+ `/council optimize` produces **text only**. It does NOT edit code,
100
+ run benchmarks, or change configuration.
101
+
102
+ ## Failure modes
103
+
104
+ - **No measurable metric** → if the user picks "Other" without a
105
+ unit, ask once for clarification; if still vague, stop. Generic
106
+ "make it better" is exactly what this command refuses to enable.
107
+ - **Target too large** → bundler raises `BundleTooLarge`; suggest
108
+ narrowing to the hot path (`/council files:<single-file>`).
109
+
110
+ ## See also
111
+
112
+ - `/council` — base orchestration entry point.
113
+ - `/optimize-skills`, `/optimize-agents`, `/optimize-augmentignore`,
114
+ `/optimize-rtk-filters` — internal optimization commands; their
115
+ output can be fed to `/council optimize` for an external ranking.
116
+ - `ai-council` skill — neutrality guidelines.
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: council:pr
3
+ cluster: council
4
+ sub: pr
5
+ skills: [ai-council]
6
+ 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.
7
+ disable-model-invocation: true
8
+ suggestion:
9
+ eligible: true
10
+ trigger_description: "council on PR #N, external review of pull request, second opinion on a PR"
11
+ trigger_context: "user has a PR number / URL and wants an external review before approve/merge"
12
+ ---
13
+
14
+ # /council pr
15
+
16
+ ## Instructions
17
+
18
+ Specialised council mode for **GitHub PRs**. Wraps `/council diff:<base>..<head>`
19
+ with a PR-aware neutrality preamble (the `pr` mode) and an opt-in
20
+ "post a comment summary on the PR" step at the end.
21
+
22
+ ### 1. Resolve the PR target
23
+
24
+ The user invoked `/council pr <number>` or `/council pr <url>`. If
25
+ neither was supplied, ask (one question per turn, per
26
+ `ask-when-uncertain`):
27
+
28
+ > Which PR should the council review?
29
+ >
30
+ > 1. PR number on the current repo (e.g. `#123`)
31
+ > 2. Full GitHub URL
32
+ > 3. Cancel
33
+
34
+ ### 2. Pull PR metadata via gh CLI
35
+
36
+ Run:
37
+
38
+ ```bash
39
+ gh pr view <number> --json number,title,body,headRefName,baseRefName,author,url
40
+ ```
41
+
42
+ Capture: title, body, head ref, base ref. The **PR title + body** is
43
+ the user's `original_ask` for the handoff preamble — verbatim, after
44
+ `_strip_host_identity()` cleansing in `prompts.py`. Do **not** add the
45
+ agent's framing.
46
+
47
+ ### 3. Fetch the diff range locally
48
+
49
+ ```bash
50
+ git fetch origin <base>:<base>
51
+ git fetch origin <head>:<head>
52
+ ```
53
+
54
+ Compute the diff range as `origin/<base>..origin/<head>` (or the local
55
+ refs if already fetched).
56
+
57
+ ### 4. Run /council with the pr mode preamble
58
+
59
+ Invoke `/council diff:<base>..<head>` with:
60
+
61
+ - `original_ask` = PR title + body (capped per
62
+ `bundler.size_guard`; warn if truncated).
63
+ - The neutrality preamble uses the `pr` mode addendum from
64
+ `scripts/ai_council/prompts.py` — focuses members on
65
+ PR-specific risks (shipping risk, reviewer fatigue, scope creep)
66
+ on top of the generic diff focus (correctness, security, tests,
67
+ maintainability).
68
+
69
+ The cost gate from `/council` Step 3 still applies. Council is
70
+ billable; suppress the question only when the resolved members are
71
+ all-manual.
72
+
73
+ ### 5. Render the report
74
+
75
+ Use the standard stacked + Convergence/Divergence layout from
76
+ `/council` Step 6. Add a one-line PR header at the top:
77
+
78
+ ```
79
+ ## Council on PR #<number> — <title>
80
+
81
+ Base: <base> · Head: <head> · Author: <author>
82
+ ```
83
+
84
+ ### 6. Offer to post a comment summary (opt-in)
85
+
86
+ After the report renders, ask (in the user's language):
87
+
88
+ > 1. Post a one-paragraph summary as a PR comment? (read-only otherwise)
89
+ > 2. Skip — keep the council output local
90
+
91
+ If picked **1**:
92
+
93
+ - Build a short summary: convergent points, divergent points, suggested
94
+ actions. Keep it ≤ 800 chars.
95
+ - Run `gh pr comment <number> --body "<summary>"`.
96
+ - **Never** request changes, approve, or merge — comment only.
97
+
98
+ Suppress the comment offer when `personal.autonomy: on` (posting to a
99
+ public PR is a write operation that should always be explicit).
100
+
101
+ ### Hard floor (restated)
102
+
103
+ `/council pr` produces **text** and (on user opt-in) a **single PR
104
+ comment**. It does **NOT**:
105
+
106
+ - Approve, request changes, or merge a PR.
107
+ - Edit project files.
108
+ - Open new issues or PRs.
109
+ - Post comments without explicit user opt-in.
110
+
111
+ ## Failure modes
112
+
113
+ - **`gh` not installed / not authed** → state the install command
114
+ (`brew install gh && gh auth login`) and stop.
115
+ - **PR is closed / merged** → ask whether to proceed (council on a
116
+ closed PR is fine for retrospectives) or cancel.
117
+ - **Diff too large** → bundler raises `BundleTooLarge`; suggest
118
+ `/council files:<paths>` for a narrower review.
119
+
120
+ ## See also
121
+
122
+ - `/council` — base orchestration entry point.
123
+ - `ai-council` skill — neutrality guidelines.
124
+ - `/review-changes` — internal four-judge variant for local diffs.