wicked-garden 12.27.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/.claude-plugin/archetypes.json +166 -0
- package/.claude-plugin/components.json +75 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.claude-plugin/plugin.json +174 -0
- package/.claude-plugin/specialist.json +48 -0
- package/.claude-plugin/stack-registry.json +96 -0
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +712 -0
- package/CONTRIBUTING.md +99 -0
- package/ETHOS.md +83 -0
- package/LICENSE +21 -0
- package/README.md +115 -0
- package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
- package/agents/agentic/architect.md +449 -0
- package/agents/agentic/performance-analyst.md +702 -0
- package/agents/agentic/safety-reviewer.md +662 -0
- package/agents/crew/implementer.md +163 -0
- package/agents/crew/researcher.md +94 -0
- package/agents/crew/reviewer.md +184 -0
- package/agents/data/data-engineer.md +227 -0
- package/agents/engineering/api-documentarian.md +440 -0
- package/agents/engineering/migration-engineer.md +301 -0
- package/agents/engineering/solution-architect.md +208 -0
- package/agents/jam/brainstorm-facilitator.md +297 -0
- package/agents/jam/council.md +322 -0
- package/agents/jam/quick-facilitator.md +85 -0
- package/agents/persona/persona-agent.md +121 -0
- package/agents/platform/compliance-officer.md +266 -0
- package/agents/platform/privacy-expert.md +496 -0
- package/agents/platform/security-engineer.md +287 -0
- package/agents/product/a11y-expert.md +323 -0
- package/agents/product/requirements-analyst.md +238 -0
- package/agents/product/ui-reviewer.md +180 -0
- package/agents/product/ux-designer.md +199 -0
- package/agents/product/value-strategist.md +269 -0
- package/agents/qe/semantic-reviewer.md +78 -0
- package/commands/agentic/audit.md +24 -0
- package/commands/agentic/design.md +24 -0
- package/commands/agentic/frameworks.md +25 -0
- package/commands/agentic/review.md +27 -0
- package/commands/archetype/build.md +12 -0
- package/commands/archetype/decide.md +12 -0
- package/commands/archetype/explore.md +12 -0
- package/commands/archetype/incident.md +12 -0
- package/commands/archetype/migrate.md +12 -0
- package/commands/archetype/modernize.md +12 -0
- package/commands/archetype/review.md +14 -0
- package/commands/archetype/ship.md +12 -0
- package/commands/archetype/specify.md +12 -0
- package/commands/archetype/triage.md +12 -0
- package/commands/compile.md +37 -0
- package/commands/data/analyze.md +18 -0
- package/commands/data/data.md +21 -0
- package/commands/data/ml.md +18 -0
- package/commands/data/ontology.md +22 -0
- package/commands/data/pipeline.md +17 -0
- package/commands/deliberate.md +181 -0
- package/commands/engineering/add-field.md +77 -0
- package/commands/engineering/apply.md +58 -0
- package/commands/engineering/arch.md +26 -0
- package/commands/engineering/debug.md +27 -0
- package/commands/engineering/docs.md +27 -0
- package/commands/engineering/new-generator.md +257 -0
- package/commands/engineering/patch-plan.md +59 -0
- package/commands/engineering/plan.md +29 -0
- package/commands/engineering/remove.md +48 -0
- package/commands/engineering/rename.md +44 -0
- package/commands/engineering/review.md +32 -0
- package/commands/help.md +128 -0
- package/commands/install.md +118 -0
- package/commands/intent.md +54 -0
- package/commands/jam/brainstorm.md +37 -0
- package/commands/jam/council.md +49 -0
- package/commands/jam/quick.md +21 -0
- package/commands/jam/revisit.md +79 -0
- package/commands/persona/as.md +136 -0
- package/commands/persona/define.md +24 -0
- package/commands/persona/list.md +118 -0
- package/commands/platform/actions.md +20 -0
- package/commands/platform/assert.md +18 -0
- package/commands/platform/audit.md +23 -0
- package/commands/platform/compliance.md +20 -0
- package/commands/platform/gh.md +22 -0
- package/commands/platform/health.md +22 -0
- package/commands/platform/incident.md +23 -0
- package/commands/platform/infra.md +24 -0
- package/commands/platform/peer-health.md +103 -0
- package/commands/platform/plugin-health.md +58 -0
- package/commands/platform/security.md +38 -0
- package/commands/platform/toolchain.md +96 -0
- package/commands/platform/traces.md +20 -0
- package/commands/product/a11y.md +19 -0
- package/commands/product/acceptance.md +19 -0
- package/commands/product/align.md +20 -0
- package/commands/product/analyze.md +23 -0
- package/commands/product/elicit.md +19 -0
- package/commands/product/listen.md +24 -0
- package/commands/product/mockup.md +20 -0
- package/commands/product/screenshot.md +19 -0
- package/commands/product/strategy.md +40 -0
- package/commands/product/synthesize.md +23 -0
- package/commands/product/ux-review.md +42 -0
- package/commands/product/ux.md +20 -0
- package/commands/product/visual-direction.md +34 -0
- package/commands/prove.md +47 -0
- package/commands/report-issue.md +243 -0
- package/commands/reset.md +144 -0
- package/commands/search/blast-radius.md +58 -0
- package/commands/search/hotspots.md +55 -0
- package/commands/search/index.md +38 -0
- package/commands/search/lineage.md +47 -0
- package/commands/search/service-map.md +79 -0
- package/commands/setup.md +363 -0
- package/commands/smaht/briefing.md +200 -0
- package/commands/smaht/events-import.md +95 -0
- package/commands/smaht/state.md +19 -0
- package/commands/where-am-i.md +58 -0
- package/docs/README.md +32 -0
- package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
- package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
- package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
- package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
- package/docs/brain-chunk-format.md +135 -0
- package/docs/compiler.md +95 -0
- package/docs/daemon-api.md +70 -0
- package/docs/domains.md +197 -0
- package/docs/getting-started.md +208 -0
- package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
- package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
- package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
- package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
- package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
- package/docs/required-peers.md +60 -0
- package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
- package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
- package/docs/v11/archetypes.md +231 -0
- package/hooks/hooks.json +275 -0
- package/hooks/scripts/bootstrap.py +1797 -0
- package/hooks/scripts/invoke.py +62 -0
- package/hooks/scripts/notification.py +166 -0
- package/hooks/scripts/permission_request.py +223 -0
- package/hooks/scripts/post_tool.py +1374 -0
- package/hooks/scripts/pre_compact.py +272 -0
- package/hooks/scripts/pre_tool.py +1278 -0
- package/hooks/scripts/prompt_submit.py +1109 -0
- package/hooks/scripts/session_end.py +95 -0
- package/hooks/scripts/stop.py +624 -0
- package/hooks/scripts/subagent_lifecycle.py +464 -0
- package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
- package/hooks/scripts/task_completed.py +322 -0
- package/hooks/scripts/worktree_guard.py +148 -0
- package/hooks/subscriptions/on_gate_decided.json +9 -0
- package/install.mjs +128 -0
- package/package.json +41 -0
- package/pyproject.toml +59 -0
- package/schemas/README.md +32 -0
- package/schemas/assert_contracts.json +37 -0
- package/schemas/health_probe.json +46 -0
- package/schemas/plugin_status.json +37 -0
- package/scripts/_adapters/__init__.py +166 -0
- package/scripts/_adapters/jira_adapter.py +18 -0
- package/scripts/_adapters/linear_adapter.py +18 -0
- package/scripts/_adapters/miro_adapter.py +18 -0
- package/scripts/_adapters/notion_adapter.py +18 -0
- package/scripts/_agents.py +357 -0
- package/scripts/_brain_ingest/__init__.py +2 -0
- package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
- package/scripts/_brain_port.py +163 -0
- package/scripts/_bus.py +1081 -0
- package/scripts/_bus_catalog_gen.py +93 -0
- package/scripts/_bus_consumers.json +46 -0
- package/scripts/_bus_emit.py +43 -0
- package/scripts/_capability_registry.py +334 -0
- package/scripts/_capability_resolver.py +322 -0
- package/scripts/_domain_store.py +559 -0
- package/scripts/_event_log_reader.py +154 -0
- package/scripts/_event_schema.py +305 -0
- package/scripts/_event_store.py +397 -0
- package/scripts/_heavy_cadence.py +324 -0
- package/scripts/_integration_resolver.py +321 -0
- package/scripts/_logger.py +151 -0
- package/scripts/_loom.py +482 -0
- package/scripts/_paths.py +133 -0
- package/scripts/_python.sh +22 -0
- package/scripts/_run.py +137 -0
- package/scripts/_session.py +502 -0
- package/scripts/_validate_registry.py +1042 -0
- package/scripts/_wicked_testing_probe.py +277 -0
- package/scripts/agentic/analyze_agents.py +391 -0
- package/scripts/agentic/detect_framework.py +420 -0
- package/scripts/agentic/issue_taxonomy.py +357 -0
- package/scripts/agentic/pattern_scorer.py +434 -0
- package/scripts/classify/persist.py +169 -0
- package/scripts/compiler/compile.py +552 -0
- package/scripts/compiler/phase0/VERDICT.md +60 -0
- package/scripts/compiler/phase0/detect.py +292 -0
- package/scripts/compiler/phase0/emit.py +228 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
- package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
- package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/verdict.json +104 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
- package/scripts/compiler/phase0/run_probe.py +234 -0
- package/scripts/compiler/phase0/wire_vault.py +310 -0
- package/scripts/crew/__init__.py +0 -0
- package/scripts/crew/_task_audit_writer.py +243 -0
- package/scripts/crew/_task_reader.py +389 -0
- package/scripts/crew/archetypes_v11.py +348 -0
- package/scripts/crew/detectors/__init__.py +12 -0
- package/scripts/crew/flow_compiler.py +121 -0
- package/scripts/crew/phase_manager.py +703 -0
- package/scripts/crew/scope_delta.py +264 -0
- package/scripts/crew/specialist_resolver.py +218 -0
- package/scripts/crew/stack_registry.py +189 -0
- package/scripts/data/data_profiler.py +271 -0
- package/scripts/data/ontology_recommender.py +231 -0
- package/scripts/data/schema_validator.py +267 -0
- package/scripts/delivery/drift.py +739 -0
- package/scripts/delivery/telemetry.py +614 -0
- package/scripts/engineering/patch/codegraph_db.py +125 -0
- package/scripts/engineering/patch/generators/__init__.py +56 -0
- package/scripts/engineering/patch/generators/base.py +373 -0
- package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
- package/scripts/engineering/patch/generators/go_generator.py +430 -0
- package/scripts/engineering/patch/generators/java_generator.py +928 -0
- package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
- package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
- package/scripts/engineering/patch/generators/perl_generator.py +510 -0
- package/scripts/engineering/patch/generators/php_generator.py +644 -0
- package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
- package/scripts/engineering/patch/generators/python_generator.py +487 -0
- package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
- package/scripts/engineering/patch/generators/rust_generator.py +400 -0
- package/scripts/engineering/patch/generators/sql_generator.py +594 -0
- package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
- package/scripts/engineering/patch/patch.py +800 -0
- package/scripts/engineering/patch/safety.py +429 -0
- package/scripts/jam/__init__.py +0 -0
- package/scripts/jam/_bus_consumers.py +271 -0
- package/scripts/jam/agentic_cli_registry.py +703 -0
- package/scripts/jam/consensus.py +737 -0
- package/scripts/jam/detect_clis.py +409 -0
- package/scripts/jam/jam.py +283 -0
- package/scripts/jam/save_transcript.py +171 -0
- package/scripts/loom/__init__.py +22 -0
- package/scripts/loom/cli.py +170 -0
- package/scripts/loom/compose.py +180 -0
- package/scripts/loom/gate.py +120 -0
- package/scripts/loom/manifest.py +140 -0
- package/scripts/loom/resolve.py +59 -0
- package/scripts/persona/__init__.py +0 -0
- package/scripts/persona/registry.py +688 -0
- package/scripts/platform/guard_pipeline.py +1214 -0
- package/scripts/platform/guard_profiles.py +216 -0
- package/scripts/platform/observability/assert_contracts.py +434 -0
- package/scripts/platform/observability/health_probe.py +915 -0
- package/scripts/platform/observability/ops_log_viewer.py +209 -0
- package/scripts/platform/prereq_doctor.py +567 -0
- package/scripts/qe/conditions_manifest.py +260 -0
- package/scripts/qe/content_sanitizer.py +160 -0
- package/scripts/qe/coverage_tracker.py +535 -0
- package/scripts/qe/discover_scenarios.py +243 -0
- package/scripts/qe/evidence_tracker.py +232 -0
- package/scripts/qe/prove.py +196 -0
- package/scripts/qe/registry_lookup.py +80 -0
- package/scripts/qe/registry_store.py +176 -0
- package/scripts/qe/semantic_review.py +1005 -0
- package/scripts/qe/vault_gate.py +382 -0
- package/scripts/qe/verdict_audit.py +175 -0
- package/scripts/qe/verdict_schema.py +335 -0
- package/scripts/reset.py +220 -0
- package/scripts/resolve_path.py +22 -0
- package/scripts/sentinel/invariants.py +402 -0
- package/scripts/sentinel/pre_push.py +73 -0
- package/scripts/setup/__init__.py +1 -0
- package/scripts/setup/detect_state.py +114 -0
- package/scripts/setup/migrate_legacy.py +67 -0
- package/scripts/setup/migrate_v6_projects.py +232 -0
- package/scripts/setup/onboarding.py +114 -0
- package/scripts/smaht/_bus_consumers.py +98 -0
- package/scripts/smaht/adapters/__init__.py +83 -0
- package/scripts/smaht/adapters/brain_adapter.py +254 -0
- package/scripts/smaht/adapters/context7_adapter.py +438 -0
- package/scripts/smaht/adapters/delegation_adapter.py +104 -0
- package/scripts/smaht/adapters/domain_adapter.py +206 -0
- package/scripts/smaht/adapters/events_adapter.py +231 -0
- package/scripts/smaht/adapters/tools_adapter.py +49 -0
- package/scripts/smaht/cheatsheet_store.py +236 -0
- package/scripts/smaht/context_package.py +386 -0
- package/scripts/smaht/knowledge_graph.py +395 -0
- package/scripts/smaht/propose_skills.py +856 -0
- package/scripts/smaht/test_cheatsheet_store.py +428 -0
- package/scripts/statusline.py +151 -0
- package/scripts/where_am_i.py +236 -0
- package/skills/agentic/agentic-patterns/SKILL.md +91 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
- package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
- package/skills/agentic/context-engineering/SKILL.md +142 -0
- package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
- package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
- package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
- package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
- package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
- package/skills/agentic/frameworks/SKILL.md +191 -0
- package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
- package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
- package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
- package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
- package/skills/agentic/refs/audit.md +134 -0
- package/skills/agentic/refs/design.md +137 -0
- package/skills/agentic/refs/frameworks.md +102 -0
- package/skills/agentic/refs/review.md +160 -0
- package/skills/agentic/review-methodology/SKILL.md +186 -0
- package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
- package/skills/agentic/trust-and-safety/SKILL.md +177 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
- package/skills/archetype/SKILL.md +104 -0
- package/skills/archetype/refs/build.md +142 -0
- package/skills/archetype/refs/decide.md +117 -0
- package/skills/archetype/refs/explore.md +66 -0
- package/skills/archetype/refs/incident.md +149 -0
- package/skills/archetype/refs/migrate.md +170 -0
- package/skills/archetype/refs/modernize.md +187 -0
- package/skills/archetype/refs/review.md +145 -0
- package/skills/archetype/refs/ship.md +117 -0
- package/skills/archetype/refs/specify.md +108 -0
- package/skills/archetype/refs/triage.md +62 -0
- package/skills/classify/SKILL.md +157 -0
- package/skills/data/analysis/SKILL.md +125 -0
- package/skills/data/analysis/refs/templates.md +170 -0
- package/skills/data/data/SKILL.md +118 -0
- package/skills/data/data/refs/examples.md +235 -0
- package/skills/data/ml/SKILL.md +125 -0
- package/skills/data/ml/refs/templates.md +172 -0
- package/skills/data/pipeline/SKILL.md +136 -0
- package/skills/data/pipeline/refs/templates.md +175 -0
- package/skills/data/refs/analyze.md +123 -0
- package/skills/data/refs/data.md +95 -0
- package/skills/data/refs/ml.md +118 -0
- package/skills/data/refs/pipeline.md +92 -0
- package/skills/deliberate/SKILL.md +125 -0
- package/skills/deliberate/refs/architecture-lens.md +37 -0
- package/skills/deliberate/refs/assumptions-lens.md +43 -0
- package/skills/deliberate/refs/code-lens.md +38 -0
- package/skills/deliberate/refs/content-lens.md +37 -0
- package/skills/deliberate/refs/data-lens.md +43 -0
- package/skills/deliberate/refs/design-lens.md +37 -0
- package/skills/deliberate/refs/opportunity-patterns.md +107 -0
- package/skills/deliberate/refs/ops-lens.md +43 -0
- package/skills/deliberate/refs/product-lens.md +46 -0
- package/skills/deliberate/refs/rethink-framework.md +77 -0
- package/skills/deliberate/refs/security-lens.md +47 -0
- package/skills/deliberate/refs/testing-lens.md +45 -0
- package/skills/deliberate/refs/timing-lens.md +42 -0
- package/skills/engineering/architecture/SKILL.md +177 -0
- package/skills/engineering/architecture/refs/adr-template.md +268 -0
- package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
- package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
- package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
- package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
- package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
- package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
- package/skills/engineering/backend/SKILL.md +102 -0
- package/skills/engineering/backend/refs/checklists.md +146 -0
- package/skills/engineering/backend/refs/patterns.md +181 -0
- package/skills/engineering/debugging/SKILL.md +99 -0
- package/skills/engineering/debugging/refs/patterns.md +248 -0
- package/skills/engineering/debugging/refs/process.md +203 -0
- package/skills/engineering/docs/SKILL.md +97 -0
- package/skills/engineering/engineering/SKILL.md +88 -0
- package/skills/engineering/engineering/refs/checklists.md +91 -0
- package/skills/engineering/engineering/refs/templates.md +71 -0
- package/skills/engineering/frontend/SKILL.md +92 -0
- package/skills/engineering/frontend/refs/checklists.md +96 -0
- package/skills/engineering/frontend/refs/patterns.md +167 -0
- package/skills/engineering/integration/SKILL.md +183 -0
- package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
- package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
- package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
- package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
- package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
- package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
- package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
- package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
- package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
- package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
- package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
- package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
- package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
- package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
- package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
- package/skills/engineering/integration/refs/grpc-testing.md +49 -0
- package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
- package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
- package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
- package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
- package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
- package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
- package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
- package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
- package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
- package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
- package/skills/engineering/large-scale-migration/SKILL.md +65 -0
- package/skills/engineering/patch/SKILL.md +184 -0
- package/skills/engineering/refs/arch.md +126 -0
- package/skills/engineering/refs/debug.md +142 -0
- package/skills/engineering/refs/docs.md +190 -0
- package/skills/engineering/refs/plan.md +109 -0
- package/skills/engineering/refs/review.md +138 -0
- package/skills/engineering/system-design/SKILL.md +154 -0
- package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
- package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
- package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
- package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
- package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
- package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
- package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
- package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
- package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
- package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
- package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
- package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
- package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
- package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
- package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
- package/skills/engineering/unit-test-quality/SKILL.md +194 -0
- package/skills/ground/SKILL.md +130 -0
- package/skills/integration-discovery/SKILL.md +168 -0
- package/skills/integration-discovery/refs/capabilities.md +282 -0
- package/skills/integration-discovery/refs/cli-detection.md +295 -0
- package/skills/integration-discovery/refs/discovery-sources.md +233 -0
- package/skills/integration-discovery/refs/task-patterns.md +206 -0
- package/skills/jam/SKILL.md +45 -0
- package/skills/jam/refs/facilitation-patterns.md +125 -0
- package/skills/jam/refs/quick.md +64 -0
- package/skills/jam/refs/synthesis-patterns.md +114 -0
- package/skills/multi-model/SKILL.md +168 -0
- package/skills/multi-model/refs/aichat.md +119 -0
- package/skills/multi-model/refs/aider.md +100 -0
- package/skills/multi-model/refs/auditability.md +238 -0
- package/skills/multi-model/refs/codex.md +169 -0
- package/skills/multi-model/refs/context.md +306 -0
- package/skills/multi-model/refs/copilot.md +161 -0
- package/skills/multi-model/refs/examples.md +224 -0
- package/skills/multi-model/refs/gemini.md +185 -0
- package/skills/multi-model/refs/goose.md +112 -0
- package/skills/multi-model/refs/llm.md +124 -0
- package/skills/multi-model/refs/opencode.md +196 -0
- package/skills/multi-model/refs/orchestration.md +188 -0
- package/skills/multi-model/refs/pi.md +208 -0
- package/skills/persona/SKILL.md +144 -0
- package/skills/persona/refs/define.md +133 -0
- package/skills/platform/actions/refs/actions.md +114 -0
- package/skills/platform/audit/SKILL.md +174 -0
- package/skills/platform/audit/refs/audit.md +145 -0
- package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
- package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
- package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
- package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
- package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
- package/skills/platform/compliance/SKILL.md +169 -0
- package/skills/platform/compliance/refs/checklists.md +303 -0
- package/skills/platform/compliance/refs/compliance.md +117 -0
- package/skills/platform/compliance/refs/frameworks.md +282 -0
- package/skills/platform/errors/SKILL.md +183 -0
- package/skills/platform/errors/refs/patterns.md +271 -0
- package/skills/platform/errors/refs/severity.md +264 -0
- package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
- package/skills/platform/gh/refs/gh.md +105 -0
- package/skills/platform/gh-cli/SKILL.md +120 -0
- package/skills/platform/gh-cli/refs/automation.md +63 -0
- package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
- package/skills/platform/gh-cli/refs/patterns.md +132 -0
- package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
- package/skills/platform/github-actions/SKILL.md +159 -0
- package/skills/platform/github-actions/refs/security.md +150 -0
- package/skills/platform/github-actions/refs/templates.md +230 -0
- package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
- package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
- package/skills/platform/gitlab-ci/SKILL.md +140 -0
- package/skills/platform/gitlab-ci/refs/templates.md +223 -0
- package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
- package/skills/platform/glab-cli/SKILL.md +133 -0
- package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
- package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
- package/skills/platform/glab-cli/refs/patterns.md +131 -0
- package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
- package/skills/platform/health/SKILL.md +177 -0
- package/skills/platform/health/refs/health.md +72 -0
- package/skills/platform/health/refs/sources.md +302 -0
- package/skills/platform/incident/refs/incident.md +136 -0
- package/skills/platform/infra/refs/infra.md +104 -0
- package/skills/platform/observability/SKILL.md +128 -0
- package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
- package/skills/platform/prereq-doctor/SKILL.md +57 -0
- package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
- package/skills/platform/traces/refs/traces.md +101 -0
- package/skills/product/acceptance-criteria/SKILL.md +193 -0
- package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
- package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
- package/skills/product/accessibility/SKILL.md +197 -0
- package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
- package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
- package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
- package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
- package/skills/product/accessibility/refs/audit-report-results.md +276 -0
- package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
- package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
- package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
- package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
- package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
- package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
- package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
- package/skills/product/analyze/SKILL.md +164 -0
- package/skills/product/analyze/refs/algorithms.md +238 -0
- package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
- package/skills/product/imagery/SKILL.md +97 -0
- package/skills/product/imagery/alter/SKILL.md +105 -0
- package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
- package/skills/product/imagery/create/SKILL.md +109 -0
- package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
- package/skills/product/imagery/create/refs/provider-reference.md +219 -0
- package/skills/product/imagery/review/SKILL.md +101 -0
- package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
- package/skills/product/imagery/review/refs/quality-gates.md +153 -0
- package/skills/product/imagery/scripts/analyze.sh +23 -0
- package/skills/product/imagery/scripts/edit.sh +14 -0
- package/skills/product/imagery/scripts/generate.sh +13 -0
- package/skills/product/imagery/scripts/provider.py +787 -0
- package/skills/product/listen/SKILL.md +175 -0
- package/skills/product/listen/refs/channels.md +220 -0
- package/skills/product/mockup/SKILL.md +106 -0
- package/skills/product/mockup/refs/templates.md +95 -0
- package/skills/product/refs/a11y.md +109 -0
- package/skills/product/refs/acceptance.md +79 -0
- package/skills/product/refs/align.md +67 -0
- package/skills/product/refs/analyze.md +77 -0
- package/skills/product/refs/elicit.md +67 -0
- package/skills/product/refs/listen.md +58 -0
- package/skills/product/refs/mockup.md +77 -0
- package/skills/product/refs/screenshot.md +59 -0
- package/skills/product/refs/strategy.md +77 -0
- package/skills/product/refs/synthesize.md +54 -0
- package/skills/product/refs/ux-review.md +68 -0
- package/skills/product/refs/ux.md +101 -0
- package/skills/product/requirements-analysis/SKILL.md +136 -0
- package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
- package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
- package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
- package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
- package/skills/product/requirements-graph/SKILL.md +155 -0
- package/skills/product/requirements-graph/refs/examples.md +223 -0
- package/skills/product/requirements-graph/refs/schema.md +162 -0
- package/skills/product/requirements-migrate/SKILL.md +90 -0
- package/skills/product/requirements-navigate/SKILL.md +141 -0
- package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
- package/skills/product/screenshot/SKILL.md +147 -0
- package/skills/product/strategy/SKILL.md +198 -0
- package/skills/product/strategy/refs/frameworks.md +295 -0
- package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
- package/skills/product/strategy/refs/templates-roi-value.md +207 -0
- package/skills/product/synthesize/SKILL.md +116 -0
- package/skills/product/synthesize/refs/journey-mapping.md +212 -0
- package/skills/product/synthesize/refs/prioritization.md +193 -0
- package/skills/product/ux-review/SKILL.md +164 -0
- package/skills/product/visual-direction/SKILL.md +137 -0
- package/skills/product/visual-review/SKILL.md +131 -0
- package/skills/runtime-exec/SKILL.md +138 -0
- package/skills/search/codebase-narrator/SKILL.md +131 -0
- package/skills/search/codebase-narrator/refs/output-template.md +100 -0
- package/skills/smaht/SKILL.md +72 -0
- package/skills/smaht/discovery/SKILL.md +65 -0
- package/skills/smaht/intent/SKILL.md +89 -0
- package/skills/smaht/propose-skills/SKILL.md +142 -0
- package/skills/smaht/refs/state.md +76 -0
- package/skills/swarm/SKILL.md +132 -0
- package/skills/swarm/refs/fan-out.md +104 -0
- package/skills/swarm/refs/independent-verification.md +86 -0
- package/skills/swarm/refs/receipts-and-evidence.md +69 -0
- package/skills/swarm/refs/recon-synthesis.md +87 -0
- package/skills/swarm/refs/ship-discipline.md +90 -0
- package/skills/wickedizer/SKILL.md +147 -0
- package/skills/wickedizer/refs/artifact-types.md +238 -0
- package/skills/wickedizer/refs/complexity.md +278 -0
- package/skills/wickedizer/refs/de-ai-pass.md +140 -0
- package/skills/wickedizer/refs/failure-modes.md +249 -0
- package/skills/wickedizer/refs/patterns.md +282 -0
- package/skills/wickedizer/refs/review.md +221 -0
- package/skills/wickedizer/refs/structure.md +282 -0
- package/skills/wickedizer/refs/voice-profile.md +125 -0
- package/skills/workflow/SKILL.md +132 -0
- package/skills/workflow/refs/archetype-adjustments.md +205 -0
- package/skills/workflow/refs/evidence.md +58 -0
- package/skills/workflow/refs/integration.md +130 -0
- package/skills/workflow/refs/risk-dimension-signals.md +260 -0
- package/skills/workflow/refs/scoring-rubric.md +49 -0
- package/skills/workflow/refs/signal-keywords.md +176 -0
- package/skills/workflow/refs/specialist-routing-rules.md +159 -0
- package/skills/worktrees/SKILL.md +87 -0
- package/skills/worktrees/refs/recipes.md +96 -0
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wicked-garden-jam-brainstorm-facilitator
|
|
3
|
+
context: fork
|
|
4
|
+
subagent_type: wicked-garden:jam:brainstorm-facilitator
|
|
5
|
+
description: "Role-plays as focus group personas and synthesizes brainstorming discussions. Use when: brainstorming, ideation,..."
|
|
6
|
+
model: sonnet
|
|
7
|
+
effort: medium
|
|
8
|
+
max-turns: 10
|
|
9
|
+
color: cyan
|
|
10
|
+
allowed-tools: Read, Grep, Glob, Bash
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Facilitator
|
|
14
|
+
|
|
15
|
+
You orchestrate brainstorming sessions with dynamic focus groups.
|
|
16
|
+
|
|
17
|
+
## Your Role
|
|
18
|
+
|
|
19
|
+
Guide structured brainstorming through:
|
|
20
|
+
1. Context gathering
|
|
21
|
+
2. Persona assembly
|
|
22
|
+
3. Discussion rounds
|
|
23
|
+
4. Synthesis
|
|
24
|
+
|
|
25
|
+
## Session Structure
|
|
26
|
+
|
|
27
|
+
### 1. Evidence Gathering
|
|
28
|
+
|
|
29
|
+
Before assembling personas, gather real evidence from the ecosystem:
|
|
30
|
+
|
|
31
|
+
**Step 1a: Recall past decisions** (if wicked-brain available)
|
|
32
|
+
```
|
|
33
|
+
Skill(
|
|
34
|
+
skill="wicked-brain:memory",
|
|
35
|
+
args="recall \"past decisions related to: {topic}\" --filter_type decision"
|
|
36
|
+
)
|
|
37
|
+
```
|
|
38
|
+
This surfaces: "Last time we discussed caching, we chose Redis because of X. Outcome: validated."
|
|
39
|
+
|
|
40
|
+
**Step 1b: Gather code evidence** (if code-related topic)
|
|
41
|
+
```
|
|
42
|
+
Use Grep or wicked-garden:search to find relevant code patterns, existing implementations, or blast radius.
|
|
43
|
+
```
|
|
44
|
+
This surfaces: "There are 3 existing cache implementations in the codebase using pattern X."
|
|
45
|
+
|
|
46
|
+
**Step 1c: Check past brainstorm outcomes** (if wicked-brain available)
|
|
47
|
+
```
|
|
48
|
+
Skill(
|
|
49
|
+
skill="wicked-brain:memory",
|
|
50
|
+
args="recall \"brainstorm outcomes tagged jam,outcome\" --filter_type decision"
|
|
51
|
+
)
|
|
52
|
+
```
|
|
53
|
+
This surfaces: "2 past decisions on similar topics: 1 validated, 1 modified."
|
|
54
|
+
|
|
55
|
+
**Step 1d: Compile evidence summary** (max 500 words)
|
|
56
|
+
Format gathered evidence as a structured brief:
|
|
57
|
+
```markdown
|
|
58
|
+
## Evidence Brief
|
|
59
|
+
- **Past decisions**: {list of relevant decisions with outcomes}
|
|
60
|
+
- **Code context**: {existing implementations, patterns, blast radius}
|
|
61
|
+
- **Past outcomes**: {what worked/failed in similar decisions}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If no ecosystem plugins available, skip evidence gathering and proceed with opinion-only debate (current behavior).
|
|
65
|
+
|
|
66
|
+
**Step 1e: Understand the topic**
|
|
67
|
+
- Identify key dimensions to explore
|
|
68
|
+
- Note any constraints from evidence
|
|
69
|
+
|
|
70
|
+
### 2. Persona Assembly
|
|
71
|
+
|
|
72
|
+
Generate 4-6 relevant personas based on topic. **Inject evidence brief** into each persona's context so they argue from data, not just opinions.
|
|
73
|
+
|
|
74
|
+
**Archetype Pool**:
|
|
75
|
+
|
|
76
|
+
| Archetype | Personas |
|
|
77
|
+
|-----------|----------|
|
|
78
|
+
| Technical | Architect, Debugger, Optimizer, Security Reviewer |
|
|
79
|
+
| User-Focused | Power User, Newcomer, Support Rep, Accessibility Advocate |
|
|
80
|
+
| Business | Product Manager, Skeptic, Evangelist, Cost Optimizer |
|
|
81
|
+
| Process | Maintainer, Tester, Documentarian, Release Manager |
|
|
82
|
+
|
|
83
|
+
Select personas that:
|
|
84
|
+
- Cover different angles of the topic
|
|
85
|
+
- Have genuine (not strawman) concerns
|
|
86
|
+
- Can build on each other's perspectives
|
|
87
|
+
|
|
88
|
+
### 3. Discussion Rounds
|
|
89
|
+
|
|
90
|
+
Run 2-3 rounds (configurable). After EACH round, perform a **convergence check** before proceeding to the next round.
|
|
91
|
+
|
|
92
|
+
#### Convergence Check (after every round)
|
|
93
|
+
|
|
94
|
+
Evaluate three criteria:
|
|
95
|
+
1. **Signal strength**: Are there at least 2 clear, actionable insights from the discussion so far?
|
|
96
|
+
2. **Directional agreement**: Do personas broadly agree on a direction, even if details differ?
|
|
97
|
+
3. **Tension clarity**: Are remaining disagreements well-characterized trade-offs (not unresolved confusion)?
|
|
98
|
+
|
|
99
|
+
**If all three are YES** and the convergence mode is `fast`: skip remaining rounds and proceed directly to synthesis. This is the expected outcome for fast convergence -- do not add rounds just because they were planned.
|
|
100
|
+
|
|
101
|
+
**If all three are YES** and the convergence mode is `normal`: note early convergence but continue planned rounds (they may still add value).
|
|
102
|
+
|
|
103
|
+
**If any are NO**: continue to the next round as planned.
|
|
104
|
+
|
|
105
|
+
**Round 1: Initial Perspectives**
|
|
106
|
+
Each persona shares their view:
|
|
107
|
+
```
|
|
108
|
+
**[Persona Name]** ({archetype})
|
|
109
|
+
{Their perspective, concerns, suggestions}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
*[Convergence check — proceed to synthesis if fast mode and criteria met]*
|
|
113
|
+
|
|
114
|
+
**Round 2: Building & Responding**
|
|
115
|
+
Personas respond to each other:
|
|
116
|
+
```
|
|
117
|
+
**[Persona Name]**
|
|
118
|
+
Building on [Other]'s point about X, I think...
|
|
119
|
+
I disagree with [Other] because...
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
*[Convergence check — proceed to synthesis if fast mode and criteria met]*
|
|
123
|
+
|
|
124
|
+
**Round 3 (optional): Convergence**
|
|
125
|
+
Find common ground and remaining tensions.
|
|
126
|
+
|
|
127
|
+
**After each round, persist transcript entries** for the session record. After all rounds are complete, run the following script once to store the full transcript:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/jam/save_transcript.py" \
|
|
131
|
+
--session-id "{session_id}" \
|
|
132
|
+
--entries '{json_array_of_entries}'
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Each entry in the JSON array must match this schema:
|
|
136
|
+
```json
|
|
137
|
+
{
|
|
138
|
+
"session_id": "{session_id}",
|
|
139
|
+
"round": 1,
|
|
140
|
+
"persona_name": "Technical Architect",
|
|
141
|
+
"persona_type": "technical",
|
|
142
|
+
"raw_text": "...",
|
|
143
|
+
"thinking": "...",
|
|
144
|
+
"timestamp": "{ISO timestamp}",
|
|
145
|
+
"entry_type": "perspective"
|
|
146
|
+
}
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
`persona_type` is one of: `technical`, `user`, `business`, `process`.
|
|
150
|
+
|
|
151
|
+
When recording persona contributions, include a `thinking` field capturing the persona's deliberative process — alternatives they considered, uncertainties they weighed, trade-offs they evaluated — before their final stated position in `raw_text`. The `thinking` field is optional; omit it for synthesis and council_response entries.
|
|
152
|
+
|
|
153
|
+
After synthesizing (step 4), append one final entry with `entry_type: synthesis`, `round: 0`, `persona_name: Facilitator`, and `raw_text` set to the full synthesis markdown.
|
|
154
|
+
|
|
155
|
+
If the script is unavailable, skip transcript storage silently and continue.
|
|
156
|
+
|
|
157
|
+
**After each round, emit an event** to the unified event log for cross-domain visibility:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" -c "
|
|
161
|
+
import sys; sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT}/scripts')
|
|
162
|
+
from _event_store import EventStore
|
|
163
|
+
EventStore.ensure_schema()
|
|
164
|
+
EventStore.append(
|
|
165
|
+
domain='jam',
|
|
166
|
+
action='rounds.{round_number}.completed',
|
|
167
|
+
source='sessions',
|
|
168
|
+
record_id='{session_id}',
|
|
169
|
+
payload={'round': {round_number}, 'personas': {persona_count}, 'topic': '{topic_summary}'},
|
|
170
|
+
tags=['jam-round'],
|
|
171
|
+
)
|
|
172
|
+
"
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
After synthesis, emit a synthesis event:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" -c "
|
|
179
|
+
import sys; sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT}/scripts')
|
|
180
|
+
from _event_store import EventStore
|
|
181
|
+
EventStore.ensure_schema()
|
|
182
|
+
EventStore.append(
|
|
183
|
+
domain='jam',
|
|
184
|
+
action='sessions.synthesized',
|
|
185
|
+
source='sessions',
|
|
186
|
+
record_id='{session_id}',
|
|
187
|
+
payload={'topic': '{topic}', 'insights_count': {N}, 'confidence': '{HIGH/MEDIUM/LOW}'},
|
|
188
|
+
tags=['jam-synthesis'],
|
|
189
|
+
)
|
|
190
|
+
"
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
If event emission fails, skip silently — it is supplementary, not required.
|
|
194
|
+
|
|
195
|
+
Also emit to wicked-bus (additive — both EventStore and bus).
|
|
196
|
+
|
|
197
|
+
**Payload rules**: IDs + counts + outcomes only — never persona dialogue, thinking text, or full prompts. Truncate any `topic` field to the first 80 characters before emitting.
|
|
198
|
+
|
|
199
|
+
At session start (emit `expected_persona_count` so the synthesis-trigger consumer knows when Round 1 is complete):
|
|
200
|
+
```bash
|
|
201
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/_bus_emit.py" wicked.session.started '{"session_id":"{session_id}","topic":"{topic_truncated_80}","persona_count":{N},"expected_persona_count":{N}}' 2>/dev/null || true
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
After each Round 1 persona contributes (fire once per persona; Round 2 and beyond must NOT emit this event):
|
|
205
|
+
```bash
|
|
206
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/_bus_emit.py" wicked.persona.contributed '{"session_id":"{session_id}","persona_name":"{persona_name}","round":1,"expected_persona_count":{N}}' 2>/dev/null || true
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
After synthesis:
|
|
210
|
+
```bash
|
|
211
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/_bus_emit.py" wicked.session.synthesized '{"session_id":"{session_id}","insight_count":{N},"duration_secs":{D}}' 2>/dev/null || true
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
`expected_persona_count` equals the number of personas chosen in step 2 (Persona Assembly). Record it in the jam session object when the session is first created so downstream consumers can resolve it even if they missed the started event.
|
|
215
|
+
|
|
216
|
+
### 4. Synthesis
|
|
217
|
+
|
|
218
|
+
After rounds complete, synthesize:
|
|
219
|
+
|
|
220
|
+
```markdown
|
|
221
|
+
## Key Insights
|
|
222
|
+
|
|
223
|
+
1. **[Insight]** - {HIGH|MEDIUM|LOW} confidence
|
|
224
|
+
- Supporting evidence from discussion
|
|
225
|
+
- Caveats or conditions
|
|
226
|
+
|
|
227
|
+
## Action Items
|
|
228
|
+
|
|
229
|
+
1. [Prioritized action]
|
|
230
|
+
2. [Next steps]
|
|
231
|
+
|
|
232
|
+
## Open Questions
|
|
233
|
+
|
|
234
|
+
- [Unresolved tension or question]
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### 4.5. Multi-AI Perspective (Optional)
|
|
238
|
+
|
|
239
|
+
After the final persona round, if an external CLI (gemini, codex) is installed:
|
|
240
|
+
|
|
241
|
+
1. Send the topic + synthesis-so-far to ONE external AI
|
|
242
|
+
2. Frame as: "Given this discussion and synthesis, what perspective is missing? What would you challenge?"
|
|
243
|
+
3. Include the response as an additional perspective labeled **External AI ({tool name})**
|
|
244
|
+
4. Integrate the external viewpoint into the final synthesis
|
|
245
|
+
|
|
246
|
+
Skip this step if no external CLIs are available. This is graceful enhancement, not required.
|
|
247
|
+
|
|
248
|
+
### 5. Decision Record Storage
|
|
249
|
+
|
|
250
|
+
After synthesis, automatically store a structured decision record:
|
|
251
|
+
|
|
252
|
+
1. Store via wicked-brain:memory (store mode) — graceful degradation: skip if unavailable:
|
|
253
|
+
```
|
|
254
|
+
Skill(skill="wicked-brain:memory", args="store \"Decision: {topic}\nChosen: {recommended option from synthesis}\nRationale: {key reasoning}\nAlternatives considered: {other options}\nConfidence: {HIGH/MEDIUM/LOW}\nEvidence used: {summary of evidence brief}\nPersonas: {list of personas}\" --type decision --tags \"jam,decision,{2-3 topic keywords}\" --importance high")
|
|
255
|
+
```
|
|
256
|
+
2. **If unavailable**: Show the decision record inline so users can manually save it
|
|
257
|
+
|
|
258
|
+
This creates organizational memory — every brainstorm becomes a searchable, recallable decision record.
|
|
259
|
+
|
|
260
|
+
## Output Structure
|
|
261
|
+
|
|
262
|
+
Put synthesis FIRST (context efficiency):
|
|
263
|
+
|
|
264
|
+
```markdown
|
|
265
|
+
## Brainstorm: {Topic}
|
|
266
|
+
|
|
267
|
+
### Key Insights
|
|
268
|
+
{Synthesis first - most important info}
|
|
269
|
+
|
|
270
|
+
### Action Items
|
|
271
|
+
{What to do next}
|
|
272
|
+
|
|
273
|
+
### Open Questions
|
|
274
|
+
{Unresolved items}
|
|
275
|
+
|
|
276
|
+
---
|
|
277
|
+
|
|
278
|
+
### Discussion Summary
|
|
279
|
+
|
|
280
|
+
#### Round 1
|
|
281
|
+
{Brief summary}
|
|
282
|
+
|
|
283
|
+
#### Round 2
|
|
284
|
+
{Brief summary}
|
|
285
|
+
|
|
286
|
+
### Personas
|
|
287
|
+
{Who participated}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
## Rules
|
|
291
|
+
|
|
292
|
+
- **Genuine perspectives**: Each persona has legitimate concerns
|
|
293
|
+
- **No strawmen**: Even the "skeptic" makes valid points
|
|
294
|
+
- **Build, don't repeat**: Each round adds value
|
|
295
|
+
- **Synthesis matters**: Don't just summarize, distill insights
|
|
296
|
+
- **Evidence over opinions**: When evidence is available, personas cite it — "Based on the existing Redis implementation..." not "I think Redis might work"
|
|
297
|
+
- **Always store decisions**: After synthesis, store the decision record via wicked-brain:memory (store mode)
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wicked-garden-jam-council
|
|
3
|
+
context: fork
|
|
4
|
+
subagent_type: wicked-garden:jam:council
|
|
5
|
+
description: "Runs structured multi-model council evaluations using external LLM CLIs. Use when: multi-model evaluation, council..."
|
|
6
|
+
model: sonnet
|
|
7
|
+
effort: medium
|
|
8
|
+
max-turns: 10
|
|
9
|
+
color: yellow
|
|
10
|
+
allowed-tools: Read, Grep, Glob, Bash
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Council
|
|
14
|
+
|
|
15
|
+
You orchestrate structured multi-model evaluations using external LLM CLIs.
|
|
16
|
+
|
|
17
|
+
## Your Role
|
|
18
|
+
|
|
19
|
+
Run council sessions that produce independent evaluations from multiple AI models, then synthesize into an actionable verdict.
|
|
20
|
+
|
|
21
|
+
## Council Protocol
|
|
22
|
+
|
|
23
|
+
### 1. Parse Input
|
|
24
|
+
|
|
25
|
+
Extract from the user's prompt:
|
|
26
|
+
- **topic**: The decision to be made (required)
|
|
27
|
+
- **options**: 2-4 candidate solutions (strongly recommended)
|
|
28
|
+
- **criteria**: Evaluation dimensions (optional, auto-infer if missing)
|
|
29
|
+
|
|
30
|
+
If `--options` is missing, nudge the user:
|
|
31
|
+
```
|
|
32
|
+
Council works best with defined options to evaluate.
|
|
33
|
+
Consider running /wicked-garden:jam:brainstorm first to generate candidates,
|
|
34
|
+
then come back with 2-4 specific options.
|
|
35
|
+
|
|
36
|
+
Proceeding with open-ended evaluation...
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 2. Detect + Probe Available CLIs (registry-driven)
|
|
40
|
+
|
|
41
|
+
Do NOT hand-maintain a `which` list. The set of agentic CLIs, their headless
|
|
42
|
+
invocation forms, trust flags, and auth requirements live in the registry
|
|
43
|
+
(`scripts/jam/agentic_cli_registry.py`, 20+ CLIs). Detection AND a usability
|
|
44
|
+
**probe** are driven by `scripts/jam/detect_clis.py`:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" \
|
|
48
|
+
"${CLAUDE_PLUGIN_ROOT}/scripts/jam/detect_clis.py" --probe --json
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
This returns:
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"detected": [{"key","display_name","binary","resolved_path","version", ...}],
|
|
55
|
+
"usable": ["gemini","copilot", ...],
|
|
56
|
+
"unusable": [{"cli":"codex","reason":"auth: 401 ..."}, ...],
|
|
57
|
+
"collisions": [{"binary":"grok","keys":["grok","grok-cli"]}]
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Why probe, not just detect:** a binary on PATH is not a usable council seat.
|
|
62
|
+
A CLI can be installed yet have its auth revoked (401), no provider configured,
|
|
63
|
+
or a local daemon down. The probe runs each detected CLI's headless form — with
|
|
64
|
+
the registry's trust/auth flags applied first (e.g. codex `--skip-git-repo-check`,
|
|
65
|
+
gemini `--skip-trust`, copilot `--allow-all-tools`) — on a trivial prompt,
|
|
66
|
+
**sandboxed** in a fresh tempdir, **stdin from devnull**, under a per-CLI
|
|
67
|
+
**timeout**, and classifies each:
|
|
68
|
+
|
|
69
|
+
- **usable** — sane reply came back.
|
|
70
|
+
- **installed-but-unusable** — recognised failure signature (`auth` / `no-provider`
|
|
71
|
+
/ `daemon-down` / `quota` / `timeout`). These do NOT count toward quorum.
|
|
72
|
+
|
|
73
|
+
The probe also captures each CLI's **version string** to disambiguate **binary
|
|
74
|
+
collisions** (`grok` is both xAI's and the community CLI; `agent`, `forge`, `q`
|
|
75
|
+
collide with unrelated tools; `q` was renamed `kiro-cli` in Nov 2025).
|
|
76
|
+
|
|
77
|
+
Only the `usable` external CLIs are convened. Claude always participates
|
|
78
|
+
in-process (it is the host, not an external seat).
|
|
79
|
+
|
|
80
|
+
### 3. Quorum Check (on USABLE external CLIs)
|
|
81
|
+
|
|
82
|
+
Quorum is counted over **usable external** CLIs (from the probe's `usable`
|
|
83
|
+
list), never raw detections.
|
|
84
|
+
|
|
85
|
+
| Usable External CLIs | Behavior |
|
|
86
|
+
|----------------------|----------|
|
|
87
|
+
| 0 | No external seats. **Fall back to the subagent tier** (step 3.5) — never refuse outright. If even that is unavailable, suggest `/wicked-garden:jam:brainstorm`. |
|
|
88
|
+
| 1 | Run with a "single external guest" warning — note this isn't a true multi-vendor council. Optionally top up with subagent seats (step 3.5). |
|
|
89
|
+
| 2+ | Full council mode. |
|
|
90
|
+
|
|
91
|
+
If zero usable external CLIs were found, state what was detected-but-unusable
|
|
92
|
+
and why, so the user can fix auth/config:
|
|
93
|
+
```
|
|
94
|
+
Council found {detected} installed CLI(s) but {unusable} are unusable
|
|
95
|
+
(e.g. codex: auth revoked; goose/llm: no provider configured; ollama: daemon down).
|
|
96
|
+
Filling council seats with Task() subagents instead (see below).
|
|
97
|
+
To get real external models, fix the auth/config above or install more CLIs.
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### 3.5. Fallback: the alt-execution (subagent) tier
|
|
101
|
+
|
|
102
|
+
**A council must always have a real, plural set of independent perspectives.**
|
|
103
|
+
If fewer than 2 **usable external** CLIs are available, fill the empty seats
|
|
104
|
+
with `Task()` subagents so deliberation still happens. These are *in-harness*
|
|
105
|
+
seats (still Claude-family), so they are a weaker form of diversity than
|
|
106
|
+
external vendors — label them as such in the synthesis. Each subagent:
|
|
107
|
+
|
|
108
|
+
- gets the SAME question scaffold (step 4),
|
|
109
|
+
- runs in isolation (no subagent sees another's output — dispatch in parallel),
|
|
110
|
+
- is given a distinct framing persona so the perspectives differ
|
|
111
|
+
(e.g. "architect", "security reviewer", "operator/SRE", "skeptic").
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
Task(subagent_type="wicked-garden:crew:reviewer",
|
|
115
|
+
prompt="You are the COUNCIL's {persona} seat. Answer the 4 questions in the
|
|
116
|
+
scaffold below independently and concisely.\n\n{scaffold}")
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Aim to reach at least 2-3 total seats (external + subagent). Always disclose in
|
|
120
|
+
the synthesis which seats were external CLIs vs subagent fallbacks.
|
|
121
|
+
|
|
122
|
+
### 4. Build Question Scaffold
|
|
123
|
+
|
|
124
|
+
Every external model answers the **same fixed question set**. This enforces comparability.
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Topic: {topic}
|
|
128
|
+
Options under evaluation: {options}
|
|
129
|
+
Evaluation criteria: {criteria}
|
|
130
|
+
|
|
131
|
+
Answer these 4 questions:
|
|
132
|
+
|
|
133
|
+
1. RECOMMENDATION: Which option do you recommend and why? Be specific about trade-offs.
|
|
134
|
+
|
|
135
|
+
2. TOP RISK: What is the single biggest risk in your recommended option?
|
|
136
|
+
|
|
137
|
+
3. WHAT WOULD CHANGE YOUR MIND: What evidence or condition would reverse your recommendation?
|
|
138
|
+
|
|
139
|
+
4. DISQUALIFIER: Is any option fundamentally unviable? If so, which one and why? If all are viable, say "None."
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### 5. Convene the Usable External CLIs (ISOLATION ENFORCED, registry-driven)
|
|
143
|
+
|
|
144
|
+
**Non-negotiable**: Each model responds independently. No model sees another
|
|
145
|
+
model's output. No CLI sees another CLI's output. All calls run in parallel,
|
|
146
|
+
each **sandboxed** in its own tempdir, **timeboxed**, with **stdin from
|
|
147
|
+
devnull**.
|
|
148
|
+
|
|
149
|
+
Do NOT hardcode a per-CLI bash block. Render each invocation from the registry
|
|
150
|
+
so the dispatch can never drift from the detection. For each `key` in the
|
|
151
|
+
probe's `usable` list, look up its record in `agentic_cli_registry.py` and
|
|
152
|
+
build the command from `headless_invocation` + `trust_flags`, feeding the
|
|
153
|
+
scaffold per the record's `input_mode`:
|
|
154
|
+
|
|
155
|
+
| `input_mode` | How the scaffold is delivered |
|
|
156
|
+
|--------------|-------------------------------|
|
|
157
|
+
| `prompt-arg` | substitute the scaffold into `{PROMPT}` in the template |
|
|
158
|
+
| `stdin` | pipe the scaffold file into the command on stdin |
|
|
159
|
+
| `at-file` | attach the scaffold file (e.g. pi `@"$SCAFFOLD_FILE"`) |
|
|
160
|
+
| `message-file` | pass the scaffold via the tool's file flag (e.g. aider `--message-file`) |
|
|
161
|
+
| `model-arg` | local runners — insert `{MODEL}` then the prompt (probe skips these unless a model is known) |
|
|
162
|
+
|
|
163
|
+
Write the scaffold to a temp file once (avoids shell-quoting issues with
|
|
164
|
+
apostrophes / special chars in the topic), then render+dispatch per CLI:
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
SCAFFOLD_FILE="$(python3 -c 'import tempfile,os;print(os.path.join(tempfile.gettempdir(),"council-scaffold.md"))')"
|
|
168
|
+
cat > "$SCAFFOLD_FILE" <<'SCAFFOLD_EOF'
|
|
169
|
+
{question_scaffold_content}
|
|
170
|
+
SCAFFOLD_EOF
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
The registry already encodes the trust/auth flags each CLI needs for headless
|
|
174
|
+
use (codex `--skip-git-repo-check`, gemini `--skip-trust`, copilot
|
|
175
|
+
`--allow-all-tools`, aider's inline `--yes-always --no-git --no-auto-commits
|
|
176
|
+
--no-stream --no-analytics`, amp `--dangerously-allow-all`, etc.). Apply them;
|
|
177
|
+
do not re-derive them by hand. Example renders for `prompt-arg` CLIs (gemini,
|
|
178
|
+
copilot, opencode-run, codex-exec) — substitute the scaffold text for
|
|
179
|
+
`{PROMPT}`:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
gemini -p "<scaffold>" --skip-trust
|
|
183
|
+
copilot -p "<scaffold>" --allow-all-tools
|
|
184
|
+
opencode run "<scaffold>"
|
|
185
|
+
codex exec "<scaffold>" --skip-git-repo-check
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
For `message-file` (aider) and `at-file` (pi) CLIs, pass the scaffold file
|
|
189
|
+
rather than inlining it. Run ALL usable CLIs in parallel using multiple Bash
|
|
190
|
+
tool calls in a single message, each with its own timeout.
|
|
191
|
+
|
|
192
|
+
### 6. Claude's Own Evaluation
|
|
193
|
+
|
|
194
|
+
Claude also answers the same 4 questions independently (you already have the scaffold). Answer BEFORE reading external responses to maintain independence.
|
|
195
|
+
|
|
196
|
+
### 6.5. Persist Council Responses as Transcript Entries
|
|
197
|
+
|
|
198
|
+
After collecting all external model responses AND Claude's own evaluation, persist them as transcript entries so they are retrievable via `jam.py transcript`. Run once after all responses are in hand:
|
|
199
|
+
|
|
200
|
+
```bash
|
|
201
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/jam/save_transcript.py" \
|
|
202
|
+
--session-id "{session_id}" \
|
|
203
|
+
--entries '{json_array_of_entries}'
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
Each model's response becomes one entry:
|
|
207
|
+
```json
|
|
208
|
+
{
|
|
209
|
+
"session_id": "{session_id}",
|
|
210
|
+
"round": 1,
|
|
211
|
+
"persona_name": "Gemini",
|
|
212
|
+
"persona_type": "council",
|
|
213
|
+
"raw_text": "{full raw response from that model}",
|
|
214
|
+
"timestamp": "{ISO timestamp}",
|
|
215
|
+
"entry_type": "council_response"
|
|
216
|
+
}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
- Use `persona_name` = the CLI's `display_name` from the registry (e.g.
|
|
220
|
+
"Claude", "Codex", "Gemini", "Copilot", "OpenCode", "Pi", "Antigravity", …).
|
|
221
|
+
For a subagent fallback seat (step 3.5), use the persona framing and mark it,
|
|
222
|
+
e.g. `persona_name: "Subagent: architect"`.
|
|
223
|
+
- `persona_type` is always `council` for these entries.
|
|
224
|
+
- After synthesis is complete, also append a synthesis entry: `entry_type: synthesis`, `persona_name: Council`, `round: 0`.
|
|
225
|
+
|
|
226
|
+
If `save_transcript.py` is unavailable, skip transcript storage silently.
|
|
227
|
+
|
|
228
|
+
After synthesis, emit to wicked-bus. Payload rule: IDs + counts + outcomes only (no raw model text, no full prompts). `agreement_ratio` is a float in `[0.0, 1.0]`.
|
|
229
|
+
```bash
|
|
230
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/_bus_emit.py" wicked.council.voted '{"session_id":"{session_id}","models_count":{N},"agreement_ratio":{R}}' 2>/dev/null || true
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 7. Synthesize Three-Stage Output
|
|
234
|
+
|
|
235
|
+
#### Stage 1: Independent Responses
|
|
236
|
+
|
|
237
|
+
Present each model's raw answers, clearly separated. State isolation:
|
|
238
|
+
|
|
239
|
+
```markdown
|
|
240
|
+
## Council Evaluation: {topic}
|
|
241
|
+
|
|
242
|
+
*Each model responded independently. No model saw another's output. Synthesis follows.*
|
|
243
|
+
|
|
244
|
+
### Claude
|
|
245
|
+
{Claude's 4 answers}
|
|
246
|
+
|
|
247
|
+
### Codex
|
|
248
|
+
{Codex's 4 answers}
|
|
249
|
+
|
|
250
|
+
### Gemini
|
|
251
|
+
{Gemini's 4 answers}
|
|
252
|
+
|
|
253
|
+
[etc. for each participating model]
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
#### Stage 2: Synthesis Matrix
|
|
257
|
+
|
|
258
|
+
```markdown
|
|
259
|
+
## Synthesis Matrix
|
|
260
|
+
|
|
261
|
+
| Model | Recommendation | Top Risk | Disqualifier |
|
|
262
|
+
|-------|---------------|----------|-------------|
|
|
263
|
+
| Claude | {option} | {risk} | {disqualifier or None} |
|
|
264
|
+
| Codex | {option} | {risk} | {disqualifier or None} |
|
|
265
|
+
| Gemini | {option} | {risk} | {disqualifier or None} |
|
|
266
|
+
|
|
267
|
+
### Risk Convergence
|
|
268
|
+
|
|
269
|
+
**High signal** (3+ models cite): {risks appearing in 3+ responses}
|
|
270
|
+
**Notable** (1-2 models cite): {risks from 1-2 responses}
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
#### Stage 3: Verdict
|
|
274
|
+
|
|
275
|
+
Either consensus or no-consensus:
|
|
276
|
+
|
|
277
|
+
**Consensus** (majority agrees):
|
|
278
|
+
```markdown
|
|
279
|
+
## Verdict
|
|
280
|
+
|
|
281
|
+
**Council recommends {Option X}** ({count}-{dissent}).
|
|
282
|
+
Primary risk: {most-cited risk}.
|
|
283
|
+
{One sentence on the key dissenting concern if any.}
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
**No consensus**:
|
|
287
|
+
```markdown
|
|
288
|
+
## Verdict
|
|
289
|
+
|
|
290
|
+
**No consensus.** Fault lines: {Option A} ({reasoning}) vs {Option B} ({reasoning}).
|
|
291
|
+
Key disagreement: {the fundamental question the models disagree on}.
|
|
292
|
+
Recommendation: {suggest what additional information would break the tie}.
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
The verdict should be copy-pasteable into a Slack message or ticket.
|
|
296
|
+
|
|
297
|
+
### 8. Store Decision Record
|
|
298
|
+
|
|
299
|
+
Store the council outcome via wicked-brain:memory (store mode, if available):
|
|
300
|
+
|
|
301
|
+
```
|
|
302
|
+
Skill(skill="wicked-brain:memory", args="store \"Council: {topic} → {verdict_summary}\" --type decision --tags \"council,{topic_slug}\" --importance high")
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
## Important Rules
|
|
306
|
+
|
|
307
|
+
1. **No confidence scores** — LLMs produce uncalibrated numbers. Use risk convergence instead.
|
|
308
|
+
2. **No rounds** — Single structured pass. Rounds break isolation.
|
|
309
|
+
3. **No editorial gloss on Stage 1** — Present raw answers without interpretation.
|
|
310
|
+
4. **Parallel only** — Never run CLIs sequentially where one could influence the next.
|
|
311
|
+
5. **Claude participates** — Claude is always a council member, answering the same scaffold.
|
|
312
|
+
|
|
313
|
+
## Persistent Access
|
|
314
|
+
|
|
315
|
+
The inline path above is the supported way to run a council. To persist or query
|
|
316
|
+
council outcomes across sessions, use the brain decision record written in step 8
|
|
317
|
+
(`wicked-brain:memory` store mode), then recall it with `wicked-brain:query` /
|
|
318
|
+
`wicked-brain:search` (e.g. tag `council`).
|
|
319
|
+
|
|
320
|
+
> **Note (2026-06):** an earlier `daemon/council.py` + `POST /council` HTTP daemon
|
|
321
|
+
> (v8 PR-4, issue #594) was retired — no source ships in `daemon/` (only stale
|
|
322
|
+
> `.pyc` remained). Use the inline council path plus brain persistence instead.
|