@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.
- package/.agent-src/commands/{agents-audit.md → agents/audit.md} +4 -3
- package/.agent-src/commands/{agents-cleanup.md → agents/cleanup.md} +12 -6
- package/.agent-src/commands/{agents-prepare.md → agents/prepare.md} +4 -3
- package/.agent-src/commands/agents.md +46 -0
- package/.agent-src/commands/bug-fix.md +1 -1
- package/.agent-src/commands/bug-investigate.md +2 -2
- package/.agent-src/commands/{chat-history-checkpoint.md → chat-history/checkpoint.md} +5 -5
- package/.agent-src/commands/{chat-history-clear.md → chat-history/clear.md} +5 -5
- package/.agent-src/commands/{chat-history-resume.md → chat-history/resume.md} +4 -4
- package/.agent-src/commands/chat-history/show.md +107 -0
- package/.agent-src/commands/chat-history.md +33 -89
- package/.agent-src/commands/check-current-md.md +1 -1
- package/.agent-src/commands/{commit-in-chunks.md → commit/in-chunks.md} +15 -13
- package/.agent-src/commands/commit.md +22 -2
- package/.agent-src/commands/{context-create.md → context/create.md} +4 -3
- package/.agent-src/commands/{context-refactor.md → context/refactor.md} +4 -3
- package/.agent-src/commands/context.md +44 -0
- package/.agent-src/commands/{copilot-agents-init.md → copilot-agents/init.md} +4 -3
- package/.agent-src/commands/{copilot-agents-optimize.md → copilot-agents/optimize.md} +4 -3
- package/.agent-src/commands/copilot-agents.md +44 -0
- package/.agent-src/commands/council/default.md +221 -0
- package/.agent-src/commands/council/design.md +97 -0
- package/.agent-src/commands/council/optimize.md +116 -0
- package/.agent-src/commands/council/pr.md +124 -0
- package/.agent-src/commands/council.md +54 -0
- package/.agent-src/commands/{create-pr-description.md → create-pr/description-only.md} +4 -2
- package/.agent-src/commands/create-pr.md +49 -5
- package/.agent-src/commands/e2e-heal.md +1 -1
- package/.agent-src/commands/e2e-plan.md +1 -1
- package/.agent-src/commands/{feature-dev.md → feature/dev.md} +6 -3
- package/.agent-src/commands/{feature-explore.md → feature/explore.md} +5 -4
- package/.agent-src/commands/{feature-plan.md → feature/plan.md} +32 -5
- package/.agent-src/commands/{feature-refactor.md → feature/refactor.md} +4 -3
- package/.agent-src/commands/{feature-roadmap.md → feature/roadmap.md} +7 -6
- package/.agent-src/commands/feature.md +52 -0
- package/.agent-src/commands/{fix-ci.md → fix/ci.md} +4 -3
- package/.agent-src/commands/{fix-portability.md → fix/portability.md} +4 -3
- package/.agent-src/commands/{fix-pr-bot-comments.md → fix/pr-bots.md} +4 -3
- package/.agent-src/commands/{fix-pr-developer-comments.md → fix/pr-developers.md} +4 -3
- package/.agent-src/commands/{fix-pr-comments.md → fix/pr.md} +7 -6
- package/.agent-src/commands/{fix-references.md → fix/refs.md} +4 -3
- package/.agent-src/commands/{fix-seeder.md → fix/seeder.md} +4 -3
- package/.agent-src/commands/fix.md +54 -0
- package/.agent-src/commands/jira-ticket.md +1 -1
- package/.agent-src/commands/{do-and-judge.md → judge/on-diff.md} +7 -6
- package/.agent-src/commands/judge/solo.md +90 -0
- package/.agent-src/commands/{do-in-steps.md → judge/steps.md} +8 -7
- package/.agent-src/commands/judge.md +35 -70
- package/.agent-src/commands/{memory-add.md → memory/add.md} +7 -6
- package/.agent-src/commands/{memory-full.md → memory/load.md} +6 -5
- package/.agent-src/commands/{memory-promote.md → memory/promote.md} +6 -5
- package/.agent-src/commands/{propose-memory.md → memory/propose.md} +6 -5
- package/.agent-src/commands/memory.md +48 -0
- package/.agent-src/commands/mode.md +5 -5
- package/.agent-src/commands/{module-create.md → module/create.md} +4 -3
- package/.agent-src/commands/{module-explore.md → module/explore.md} +4 -3
- package/.agent-src/commands/module.md +44 -0
- package/.agent-src/commands/onboard.md +3 -3
- package/.agent-src/commands/{optimize-agents.md → optimize/agents.md} +5 -4
- package/.agent-src/commands/{optimize-augmentignore.md → optimize/augmentignore.md} +4 -4
- package/.agent-src/commands/{optimize-rtk-filters.md → optimize/rtk.md} +4 -3
- package/.agent-src/commands/{optimize-skills.md → optimize/skills.md} +5 -4
- package/.agent-src/commands/optimize.md +48 -0
- package/.agent-src/commands/{override-create.md → override/create.md} +4 -3
- package/.agent-src/commands/{override-manage.md → override/manage.md} +4 -3
- package/.agent-src/commands/override.md +44 -0
- package/.agent-src/commands/review-changes.md +26 -1
- package/.agent-src/commands/review-routing.md +1 -1
- package/.agent-src/commands/{roadmap-create.md → roadmap/create.md} +33 -5
- package/.agent-src/commands/{roadmap-execute.md → roadmap/execute.md} +4 -3
- package/.agent-src/commands/roadmap.md +44 -0
- package/.agent-src/commands/set-cost-profile.md +3 -3
- package/.agent-src/commands/sync-agent-settings.md +2 -2
- package/.agent-src/commands/{tests-create.md → tests/create.md} +5 -4
- package/.agent-src/commands/{tests-execute.md → tests/execute.md} +4 -3
- package/.agent-src/commands/tests.md +44 -0
- package/.agent-src/commands/upstream-contribute.md +1 -1
- package/.agent-src/contexts/authority/commit-mechanics.md +57 -0
- package/.agent-src/contexts/authority/destructive-mechanics.md +66 -0
- package/.agent-src/contexts/authority/scope-mechanics.md +87 -0
- package/.agent-src/contexts/communication/rules-auto/artifact-engagement-recording-mechanics.md +72 -0
- package/.agent-src/contexts/communication/rules-auto/augment-portability-mechanics.md +79 -0
- package/.agent-src/contexts/communication/rules-auto/augment-source-of-truth-mechanics.md +98 -0
- package/.agent-src/contexts/communication/rules-auto/cli-output-handling-mechanics.md +87 -0
- package/.agent-src/contexts/communication/rules-auto/command-suggestion-policy-mechanics.md +62 -0
- package/.agent-src/contexts/communication/rules-auto/docs-sync-mechanics.md +78 -0
- package/.agent-src/contexts/communication/rules-auto/package-ci-checks-mechanics.md +85 -0
- package/.agent-src/contexts/communication/rules-auto/review-routing-awareness-mechanics.md +65 -0
- package/.agent-src/contexts/communication/rules-auto/roadmap-progress-sync-mechanics.md +78 -0
- package/.agent-src/contexts/communication/rules-auto/skill-quality-mechanics.md +62 -0
- package/.agent-src/contexts/communication/rules-auto/slash-command-routing-policy-mechanics.md +55 -0
- package/.agent-src/contexts/communication/rules-auto/ui-audit-gate-mechanics.md +53 -0
- package/.agent-src/contexts/communication/rules-auto/user-interaction-mechanics.md +77 -0
- package/.agent-src/contexts/execution/autonomy-detection.md +54 -0
- package/.agent-src/contexts/execution/autonomy-examples.md +90 -0
- package/.agent-src/contexts/execution/autonomy-mechanics.md +29 -0
- package/.agent-src/contexts/execution/verification-mechanics.md +80 -0
- package/.agent-src/contexts/judges/no-consolidate-rationale.md +102 -0
- package/.agent-src/contexts/judges/persona-voice-rubric.md +140 -0
- package/.agent-src/personas/README.md +1 -1
- package/.agent-src/rules/agent-authority.md +24 -0
- package/.agent-src/rules/architecture.md +1 -1
- package/.agent-src/rules/artifact-drafting-protocol.md +1 -1
- package/.agent-src/rules/artifact-engagement-recording.md +14 -70
- package/.agent-src/rules/ask-when-uncertain.md +28 -43
- package/.agent-src/rules/augment-portability.md +15 -61
- package/.agent-src/rules/augment-source-of-truth.md +27 -93
- package/.agent-src/rules/autonomous-execution.md +78 -114
- package/.agent-src/rules/capture-learnings.md +1 -1
- package/.agent-src/rules/chat-history-cadence.md +3 -3
- package/.agent-src/rules/chat-history-ownership.md +3 -3
- package/.agent-src/rules/chat-history-visibility.md +3 -3
- package/.agent-src/rules/cli-output-handling.md +10 -76
- package/.agent-src/rules/command-suggestion-policy.md +93 -0
- package/.agent-src/rules/commit-conventions.md +17 -14
- package/.agent-src/rules/commit-policy.md +14 -42
- package/.agent-src/rules/context-hygiene.md +3 -3
- package/.agent-src/rules/direct-answers.md +34 -49
- package/.agent-src/rules/docker-commands.md +5 -5
- package/.agent-src/rules/docs-sync.md +16 -70
- package/.agent-src/rules/e2e-testing.md +1 -1
- package/.agent-src/rules/guidelines.md +4 -4
- package/.agent-src/rules/improve-before-implement.md +2 -2
- package/.agent-src/rules/language-and-tone.md +50 -133
- package/.agent-src/rules/minimal-safe-diff.md +3 -3
- package/.agent-src/rules/missing-tool-handling.md +28 -22
- package/.agent-src/rules/model-recommendation.md +4 -4
- package/.agent-src/rules/no-cheap-questions.md +82 -0
- package/.agent-src/rules/no-roadmap-references.md +73 -0
- package/.agent-src/rules/non-destructive-by-default.md +15 -49
- package/.agent-src/rules/onboarding-gate.md +5 -5
- package/.agent-src/rules/package-ci-checks.md +21 -61
- package/.agent-src/rules/preservation-guard.md +64 -29
- package/.agent-src/rules/review-routing-awareness.md +26 -45
- package/.agent-src/rules/roadmap-progress-sync.md +28 -96
- package/.agent-src/rules/role-mode-adherence.md +2 -2
- package/.agent-src/rules/scope-control.md +65 -46
- package/.agent-src/rules/security-sensitive-stop.md +9 -9
- package/.agent-src/rules/size-enforcement.md +1 -1
- package/.agent-src/rules/skill-quality.md +16 -48
- package/.agent-src/rules/{slash-commands.md → slash-command-routing-policy.md} +7 -4
- package/.agent-src/rules/think-before-action.md +55 -45
- package/.agent-src/rules/token-efficiency.md +4 -4
- package/.agent-src/rules/tool-safety.md +19 -16
- package/.agent-src/rules/{ui-audit-before-build.md → ui-audit-gate.md} +27 -41
- package/.agent-src/rules/user-interaction.md +16 -71
- package/.agent-src/rules/verify-before-complete.md +12 -67
- package/.agent-src/scripts/update_roadmap_progress.py +9 -4
- package/.agent-src/skills/ai-council/SKILL.md +335 -0
- package/.agent-src/skills/api-endpoint/SKILL.md +2 -2
- package/.agent-src/skills/api-testing/SKILL.md +1 -1
- package/.agent-src/skills/blade-ui/SKILL.md +1 -1
- package/.agent-src/skills/blast-radius-analyzer/SKILL.md +1 -1
- package/.agent-src/skills/bug-analyzer/SKILL.md +1 -1
- package/.agent-src/skills/check-refs/SKILL.md +59 -40
- package/.agent-src/skills/command-routing/SKILL.md +1 -1
- package/.agent-src/skills/command-writing/SKILL.md +1 -1
- package/.agent-src/skills/conventional-commits-writing/SKILL.md +86 -28
- package/.agent-src/skills/copilot-agents-optimization/SKILL.md +7 -7
- package/.agent-src/skills/developer-like-execution/SKILL.md +6 -6
- package/.agent-src/skills/finishing-a-development-branch/SKILL.md +101 -65
- package/.agent-src/skills/flux/SKILL.md +31 -11
- package/.agent-src/skills/git-workflow/SKILL.md +1 -1
- package/.agent-src/skills/github-ci/SKILL.md +2 -2
- package/.agent-src/skills/guideline-writing/SKILL.md +11 -11
- package/.agent-src/skills/judge-code-quality/SKILL.md +7 -8
- package/.agent-src/skills/judge-security-auditor/SKILL.md +4 -5
- package/.agent-src/skills/judge-test-coverage/SKILL.md +3 -4
- package/.agent-src/skills/learning-to-rule-or-skill/SKILL.md +4 -4
- package/.agent-src/skills/lint-skills/SKILL.md +57 -39
- package/.agent-src/skills/livewire/SKILL.md +1 -1
- package/.agent-src/skills/md-language-check/SKILL.md +61 -39
- package/.agent-src/skills/override-management/SKILL.md +7 -7
- package/.agent-src/skills/php-coder/SKILL.md +1 -1
- package/.agent-src/skills/playwright-testing/SKILL.md +2 -2
- package/.agent-src/skills/quality-tools/SKILL.md +2 -2
- package/.agent-src/skills/react-shadcn-ui/SKILL.md +116 -43
- package/.agent-src/skills/readme-reviewer/SKILL.md +31 -30
- package/.agent-src/skills/readme-writing/SKILL.md +79 -54
- package/.agent-src/skills/readme-writing-package/SKILL.md +51 -48
- package/.agent-src/skills/receiving-code-review/SKILL.md +53 -48
- package/.agent-src/skills/refine-prompt/SKILL.md +0 -1
- package/.agent-src/skills/requesting-code-review/SKILL.md +35 -30
- package/.agent-src/skills/review-routing/SKILL.md +2 -2
- package/.agent-src/skills/rule-writing/SKILL.md +1 -1
- package/.agent-src/skills/security/SKILL.md +7 -2
- package/.agent-src/skills/security-audit/SKILL.md +7 -3
- package/.agent-src/skills/skill-reviewer/SKILL.md +1 -1
- package/.agent-src/skills/skill-writing/SKILL.md +3 -3
- package/.agent-src/skills/subagent-orchestration/SKILL.md +1 -0
- package/.agent-src/skills/systematic-debugging/SKILL.md +69 -61
- package/.agent-src/skills/test-driven-development/SKILL.md +59 -57
- package/.agent-src/skills/test-performance/SKILL.md +0 -1
- package/.agent-src/skills/traefik/SKILL.md +4 -4
- package/.agent-src/skills/upstream-contribute/SKILL.md +1 -1
- package/.agent-src/skills/validate-feature-fit/SKILL.md +2 -2
- package/.agent-src/skills/{verify-before-complete → verify-completion-evidence}/SKILL.md +30 -28
- package/.agent-src/templates/agent-settings.md +8 -8
- package/.agent-src/templates/contexts/auth-model.md +1 -1
- package/.agent-src/templates/scripts/README.md +2 -2
- package/.agent-src/templates/scripts/telemetry/aggregator.py +16 -1
- package/.agent-src/templates/scripts/telemetry/engagement.py +59 -0
- package/.agent-src/templates/scripts/telemetry/report_renderer.py +28 -1
- package/.agent-src/templates/scripts/telemetry_record.py +14 -1
- package/.claude-plugin/marketplace.json +31 -12
- package/AGENTS.md +11 -9
- package/CHANGELOG.md +213 -2
- package/README.md +43 -44
- package/config/agent-settings.template.yml +58 -1
- package/config/gitignore-block.txt +3 -0
- package/docs/architecture.md +5 -7
- package/docs/catalog.md +359 -0
- package/docs/contracts/STABILITY.md +46 -1
- package/docs/contracts/adr-chat-history-split.md +1 -3
- package/docs/contracts/adr-command-suggestion.md +3 -5
- package/docs/contracts/adr-implement-ticket-runtime.md +1 -2
- package/docs/contracts/adr-product-ui-track.md +5 -8
- package/docs/contracts/adr-prompt-driven-execution.md +3 -4
- package/docs/contracts/agent-memory-contract.md +8 -13
- package/docs/contracts/artifact-engagement-flow.md +7 -10
- package/docs/contracts/command-clusters.md +56 -46
- package/docs/contracts/command-suggestion-flow.md +4 -6
- package/docs/contracts/context-paths.md +99 -0
- package/docs/contracts/file-ownership-matrix.json +6722 -0
- package/docs/contracts/file-ownership-matrix.md +134 -0
- package/docs/contracts/implement-ticket-flow.md +8 -11
- package/docs/contracts/linear-ai-rules-inclusion.md +1 -2
- package/docs/contracts/linear-ai-three-layers.md +0 -2
- package/docs/contracts/load-context-budget-model.md +178 -0
- package/docs/contracts/load-context-schema.md +184 -0
- package/docs/contracts/rule-interactions.md +0 -1
- package/docs/contracts/rule-interactions.yml +96 -0
- package/docs/contracts/rule-priority-hierarchy.md +87 -0
- package/docs/contracts/ui-track-flow.md +8 -18
- package/docs/customization.md +16 -0
- package/docs/end-to-end-walkthroughs.md +165 -0
- package/docs/getting-started.md +29 -10
- package/docs/github-topics.md +12 -3
- package/docs/guidelines/agent-infra/asking-and-brevity-examples.md +100 -0
- package/docs/guidelines/agent-infra/language-and-tone-examples.md +79 -0
- package/{.agent-src → docs}/guidelines/docs/readme-size-and-splitting.md +26 -25
- package/docs/guidelines/php/git.md +164 -0
- package/docs/migrations/commands-1.15.0.md +1 -1
- package/docs/showcase.md +9 -4
- package/docs/skills-catalog.md +14 -8
- package/docs/ui-track-mental-model.md +2 -2
- package/llms.txt +13 -7
- package/package.json +1 -1
- package/scripts/_one_off_phase4_dispatch_latency.py +108 -0
- package/scripts/_one_off_phase6_trigger_jaccard.py +92 -0
- package/scripts/_phase2_shim_helper.py +109 -0
- package/scripts/agent-config +33 -0
- package/scripts/ai_council/__init__.py +39 -0
- package/scripts/ai_council/_default_prices.py +41 -0
- package/scripts/ai_council/_one_off_2a4_acceptance.py +208 -0
- package/scripts/ai_council/_one_off_context_layer_v1_estimate.py +67 -0
- package/scripts/ai_council/_one_off_context_layer_v1_review.py +292 -0
- package/scripts/ai_council/_one_off_followups_review.py +259 -0
- package/scripts/ai_council/_one_off_nondestructive_inline_audit.py +209 -0
- package/scripts/ai_council/_one_off_phase_2a_budget_rebalance.py +257 -0
- package/scripts/ai_council/_one_off_phase_2a_post_revert.py +197 -0
- package/scripts/ai_council/_one_off_rebalancing_audit.py +149 -0
- package/scripts/ai_council/_one_off_roundtrip.py +106 -0
- package/scripts/ai_council/_one_off_rule_hardening_v1.py +251 -0
- package/scripts/ai_council/_one_off_structural_open_questions.py +232 -0
- package/scripts/ai_council/_one_off_structural_optimization.py +144 -0
- package/scripts/ai_council/_one_off_structural_v3_gaps.py +252 -0
- package/scripts/ai_council/_one_off_structural_v3_review.py +240 -0
- package/scripts/ai_council/budget_guard.py +172 -0
- package/scripts/ai_council/bundler.py +261 -0
- package/scripts/ai_council/clients.py +381 -0
- package/scripts/ai_council/modes.py +127 -0
- package/scripts/ai_council/orchestrator.py +350 -0
- package/scripts/ai_council/pricing.py +213 -0
- package/scripts/ai_council/project_context.py +159 -0
- package/scripts/ai_council/prompts.py +232 -0
- package/scripts/ai_council/session.py +144 -0
- package/scripts/check_always_budget.py +444 -0
- package/scripts/check_augmentignore.py +69 -0
- package/scripts/check_cluster_patterns.py +159 -0
- package/scripts/check_command_count_messaging.py +127 -0
- package/scripts/check_context_paths.py +201 -0
- package/scripts/check_no_roadmap_refs.py +155 -0
- package/scripts/check_phase_coupling.py +148 -0
- package/scripts/check_portability.py +57 -0
- package/scripts/check_public_catalog_links.py +122 -0
- package/scripts/check_references.py +33 -3
- package/scripts/check_roadmap_trackable.py +111 -0
- package/scripts/check_safety_floor_untouched.py +125 -0
- package/scripts/command_suggester/cooldown.py +1 -1
- package/scripts/command_suggester/loader.py +4 -1
- package/scripts/compress.py +59 -13
- package/scripts/generate_index.py +270 -0
- package/scripts/generate_ownership_matrix.py +323 -0
- package/scripts/hooks/augment-roadmap-progress.sh +57 -0
- package/scripts/install.py +49 -28
- package/scripts/install_anthropic_key.sh +5 -0
- package/scripts/install_openai_key.sh +106 -0
- package/scripts/lint_load_context.py +163 -0
- package/scripts/lint_no_new_atomic_commands.py +12 -11
- package/scripts/requirements-evals.txt +1 -0
- package/scripts/roadmap_progress_hook.py +159 -0
- package/scripts/schemas/command.schema.json +22 -1
- package/scripts/schemas/rule.schema.json +10 -0
- package/scripts/skill_linter.py +13 -4
- package/scripts/sync_agent_settings.py +26 -3
- package/scripts/update_counts.py +16 -4
- package/scripts/update_prices.py +124 -0
- package/.agent-src/guidelines/php/git.md +0 -96
- package/.agent-src/rules/command-suggestion.md +0 -134
- /package/{.agent-src → docs}/guidelines/agent-infra/agent-interaction-and-decision-quality.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/break-glass-usage.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/developer-judgment.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/engineering-memory-data-format.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/layered-settings.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/memory-access.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/naming.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/output-patterns.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/review-routing-data-format.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/role-contracts.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/role-mode-router.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/runtime-layer.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/self-improvement-pipeline.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/size-and-scope.md +0 -0
- /package/{.agent-src → docs}/guidelines/agent-infra/tool-integration.md +0 -0
- /package/{.agent-src → docs}/guidelines/e2e/playwright.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/api-design.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/artisan-commands.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/blade-ui.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/controllers.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/database.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/eloquent.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/flux.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/general.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/jobs.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/livewire.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/logging.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/naming.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/dependency-injection.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/dtos.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/events.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/factory.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/pipelines.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/policies.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/repositories.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/service-layer.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns/strategy.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/patterns.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/performance.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/resources.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/security.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/sql.md +0 -0
- /package/{.agent-src → docs}/guidelines/php/validations.md +0 -0
- /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
|
|
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
|
|
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
|
|
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
|
|
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.
|