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