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,142 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: propose-skills
|
|
3
|
+
description: |
|
|
4
|
+
Mine recent Claude Code session transcripts to propose skills that would
|
|
5
|
+
automate repetitive patterns the user actually does. Read-only MVP — outputs a
|
|
6
|
+
markdown report only. No interactive UI, no scaffolding handoff in v1 (those
|
|
7
|
+
are v2/v3 follow-ups).
|
|
8
|
+
|
|
9
|
+
Use when: "find skills I should build", "what should I automate", "propose
|
|
10
|
+
skills from my sessions", "mine my history for skill ideas",
|
|
11
|
+
"session-mined skill builder", "skill discovery from past usage".
|
|
12
|
+
user-invocable: true
|
|
13
|
+
phase_relevance: ["*"]
|
|
14
|
+
archetype_relevance: ["*"]
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Propose Skills (session-mined, MVP)
|
|
18
|
+
|
|
19
|
+
Detect recurring patterns in Claude Code session transcripts and emit a markdown
|
|
20
|
+
report of skill candidates. The framework grows from what the user *actually
|
|
21
|
+
does*, not from speculative authoring (#677).
|
|
22
|
+
|
|
23
|
+
## Quick Reference
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Default — current project, last 10 sessions
|
|
27
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" \
|
|
28
|
+
"${CLAUDE_PLUGIN_ROOT}/scripts/smaht/propose_skills.py"
|
|
29
|
+
|
|
30
|
+
# Scan a different project (use --project= because the slug starts with '-')
|
|
31
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" \
|
|
32
|
+
"${CLAUDE_PLUGIN_ROOT}/scripts/smaht/propose_skills.py" \
|
|
33
|
+
--project=-Users-me-Projects-other --limit 25
|
|
34
|
+
|
|
35
|
+
# Print structured JSON alongside the markdown report
|
|
36
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" \
|
|
37
|
+
"${CLAUDE_PLUGIN_ROOT}/scripts/smaht/propose_skills.py" --json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Output modes**:
|
|
41
|
+
|
|
42
|
+
- Default — prints the report file path on stdout (one line). Read the file,
|
|
43
|
+
summarize the top 3 candidates inline, and stop.
|
|
44
|
+
- `--json` — prints a JSON object on stdout with `report_path`, scan stats, and
|
|
45
|
+
the full `candidates` array. The markdown report is still written to disk.
|
|
46
|
+
|
|
47
|
+
Do not auto-invoke `/wg-scaffold` — this is a read-only proposer.
|
|
48
|
+
|
|
49
|
+
## What It Detects (3 cheap detectors, no LLM)
|
|
50
|
+
|
|
51
|
+
| Kind | Trigger |
|
|
52
|
+
|------|---------|
|
|
53
|
+
| **Repeated tool sequence** | Same ordered N-tuple of tool names appears in >= 3 distinct sessions (N in [2, 5]). Homogeneous sequences like `Bash → Bash → Bash` are filtered. |
|
|
54
|
+
| **Repeated prompt template** | User prompts whose first 5 normalized words match across >= 3 sessions. Generic continuations (`yes`, `continue`) and Claude Code system envelopes (`<local-command-...>`, `<command-name>`) are filtered. |
|
|
55
|
+
| **Repeated bash shape** | Same first 2 tokens of a bash command across >= 3 sessions (e.g. `gh pr ...`). Generic file-inspection commands (`ls`, `cat`, `cd`, ...) are filtered. |
|
|
56
|
+
|
|
57
|
+
## Pipeline
|
|
58
|
+
|
|
59
|
+
1. **Locate sessions**: `${CLAUDE_CONFIG_DIR:-~/.claude}/projects/{project-slug}/*.jsonl`.
|
|
60
|
+
The analyzer honors `CLAUDE_CONFIG_DIR` so users with custom config dirs
|
|
61
|
+
(e.g. `$HOME/alt-configs/.claude`) get matched correctly. Default slug
|
|
62
|
+
is derived from the current working directory.
|
|
63
|
+
2. **Parse**: each `.jsonl` line, extracting `tool_use` items from assistant
|
|
64
|
+
messages and the leading text of user messages. Robust against malformed
|
|
65
|
+
lines.
|
|
66
|
+
3. **Privacy filter**: skip any session whose user prompt contains the literal
|
|
67
|
+
token `private` or `secret` (case-insensitive). The check runs on the
|
|
68
|
+
FULL untruncated prompt — a trigger token past the 200-char detector limit
|
|
69
|
+
still flags the session.
|
|
70
|
+
4. **Detect**: run the 3 detectors over the parsed sessions. A candidate must
|
|
71
|
+
meet `MIN_FREQUENCY` (total occurrences) AND `MIN_SESSION_COUNT` (distinct
|
|
72
|
+
sessions) — those are independent counters, not the same number.
|
|
73
|
+
5. **Dedupe**: drop any tool-sequence candidate that is a contiguous
|
|
74
|
+
subsequence of a more-frequent (or equal-frequency) longer parent.
|
|
75
|
+
6. **Propose**: for each candidate, build a kebab-case slug, a frontmatter-ready
|
|
76
|
+
description (≤140 chars), and a `/wg-scaffold skill <name> --domain <d>`
|
|
77
|
+
suggestion. Domain is inferred from tool / bash keywords.
|
|
78
|
+
7. **Render**: write a markdown report to
|
|
79
|
+
`tempfile.gettempdir()/wg-propose-skills-{timestamp}.md`. On macOS this
|
|
80
|
+
resolves to a per-user dir under `/var/folders/...`; on Linux it follows
|
|
81
|
+
`$TMPDIR` and falls back to `/tmp`. Print the report path (default mode)
|
|
82
|
+
or a JSON envelope including the full candidates array (`--json` mode).
|
|
83
|
+
8. **Summarize inline**: read the top 3 candidates from the report and quote
|
|
84
|
+
them in the assistant reply.
|
|
85
|
+
|
|
86
|
+
## Hard Constraints
|
|
87
|
+
|
|
88
|
+
- **Read-only.** Never writes outside `tempfile.gettempdir()`. Never modifies
|
|
89
|
+
session files.
|
|
90
|
+
- **Local-only.** No network, no telemetry, no LLM calls inside the analyzer.
|
|
91
|
+
- **stdlib-only.** Cross-platform Python — `pathlib.Path`,
|
|
92
|
+
`tempfile.gettempdir()`, no third-party deps.
|
|
93
|
+
- **Privacy-first.** Absolute paths under `$HOME` are scrubbed to `~/...` in the
|
|
94
|
+
report. Sessions mentioning `private` / `secret` are skipped entirely.
|
|
95
|
+
- **Heuristic, not deterministic.** Treat each candidate as a *prompt for
|
|
96
|
+
judgment*, not a directive. False positives are expected.
|
|
97
|
+
|
|
98
|
+
## What v1 Does NOT Do
|
|
99
|
+
|
|
100
|
+
These are explicit v2 / v3 follow-ups and out of scope for this MVP:
|
|
101
|
+
|
|
102
|
+
- Interactive accept/reject UI.
|
|
103
|
+
- Direct handoff to `/wg-scaffold` or the `scaffolding` skill.
|
|
104
|
+
- LLM-based pattern extraction or summarization.
|
|
105
|
+
- Cross-project mining (only the current project's sessions are scanned).
|
|
106
|
+
- Propose agents, hooks, or commands — the issue scope is *skills only*.
|
|
107
|
+
|
|
108
|
+
## Inline Summary Format
|
|
109
|
+
|
|
110
|
+
After running the script, the assistant should reply with something like:
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
Report: /var/folders/.../wg-propose-skills-20260427T030000Z.md (4 candidates)
|
|
114
|
+
|
|
115
|
+
Top 3 candidates:
|
|
116
|
+
1. run-curl-s — `curl -s …` shell pattern, 24 occurrences across 12 sessions
|
|
117
|
+
2. run-pnpm-run — `pnpm run …` shell pattern, 9 occurrences across 6 sessions
|
|
118
|
+
3. run-lsof-ti-4321 — `lsof -ti:4321 …` shell pattern, 5 occurrences across 5 sessions
|
|
119
|
+
|
|
120
|
+
Run `/wg-scaffold skill <name> --domain <d>` for any candidate that's
|
|
121
|
+
worth building.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Exit codes:
|
|
125
|
+
|
|
126
|
+
- `0` — graceful run (even when no candidates are found).
|
|
127
|
+
- `1` — failed to write the report file (I/O error after analysis succeeded).
|
|
128
|
+
|
|
129
|
+
## Related
|
|
130
|
+
|
|
131
|
+
- `/wg-scaffold skill ...` — manual scaffolding (the v2 handoff target).
|
|
132
|
+
- `hookify:hookify` — different direction (proposes *hooks*, not skills).
|
|
133
|
+
- `claude-code-setup:claude-automation-recommender` — codebase-level analysis,
|
|
134
|
+
not session-level.
|
|
135
|
+
|
|
136
|
+
## Provenance
|
|
137
|
+
|
|
138
|
+
- Issue: [#677](https://github.com/mikeparcewski/wicked-garden/issues/677)
|
|
139
|
+
- Helper script: `scripts/smaht/propose_skills.py`
|
|
140
|
+
- Tests: `tests/smaht/test_propose_skills.py` (3 detectors + dedupe + privacy
|
|
141
|
+
scrub + end-to-end smoke).
|
|
142
|
+
- Scenario: `scenarios/smaht/propose-skills-shape.md`.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# smaht:state — Session State + Recent Events Rubric
|
|
2
|
+
|
|
3
|
+
Full rubric sourced from `commands/smaht/state.md`.
|
|
4
|
+
Snapshot and report current session state and recent events.
|
|
5
|
+
|
|
6
|
+
## Step 1: Load SessionState
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" -c "
|
|
10
|
+
import sys, json
|
|
11
|
+
from pathlib import Path
|
|
12
|
+
sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT}/scripts')
|
|
13
|
+
from _session import SessionState
|
|
14
|
+
state = SessionState.load()
|
|
15
|
+
print(json.dumps(state.to_dict() if hasattr(state, 'to_dict') else state.__dict__, indent=2, default=str))
|
|
16
|
+
"
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Step 2: Display Session State
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
## Session State
|
|
23
|
+
|
|
24
|
+
**Turn count**: {turn_count}
|
|
25
|
+
**Active chain**: {active_chain_id or "(none)"}
|
|
26
|
+
**Active crew project**: {active_project or "(none)"}
|
|
27
|
+
**Current phase**: {current_phase or "(none)"}
|
|
28
|
+
**Session goal**: {session_goal or "(not set)"}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Skip this section if `--state` is not the only flag (i.e. when `--events` is also given, show both; when `--state` only, skip events).
|
|
32
|
+
|
|
33
|
+
## Step 3: Display Recent Events
|
|
34
|
+
|
|
35
|
+
Pull the last N events from the wicked-bus (default 10, override with `--events N`):
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" -c "
|
|
39
|
+
import sys, json
|
|
40
|
+
from pathlib import Path
|
|
41
|
+
sys.path.insert(0, '${CLAUDE_PLUGIN_ROOT}/scripts')
|
|
42
|
+
try:
|
|
43
|
+
from _bus import tail_events
|
|
44
|
+
events = tail_events(limit=${EVENTS_LIMIT:-10})
|
|
45
|
+
for e in events:
|
|
46
|
+
print(f\" [{e.get('event_type','?')}] {e.get('data',{}).get('summary','')}\")
|
|
47
|
+
except Exception as exc:
|
|
48
|
+
print(f'bus unavailable: {exc}')
|
|
49
|
+
"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
## Recent Events (last {N})
|
|
54
|
+
|
|
55
|
+
{bulleted list of event_type + summary}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Step 4: v11 Project Context (when `--project <name>` is given)
|
|
59
|
+
|
|
60
|
+
The v6-era "active crew project" auto-resolver was deleted in v11. When the
|
|
61
|
+
caller passes `--project <name>`, look up via phase_manager:
|
|
62
|
+
|
|
63
|
+
```markdown
|
|
64
|
+
## Project (v11 archetype-mode)
|
|
65
|
+
|
|
66
|
+
**Name**: {name}
|
|
67
|
+
**Archetype**: {v11_archetype}
|
|
68
|
+
**Current phase**: {current_phase}
|
|
69
|
+
**Phase plan**: {phase_plan}
|
|
70
|
+
**Is complete**: {is_complete}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## When Context Is Thin
|
|
74
|
+
|
|
75
|
+
If the output above doesn't surface what you need, invoke `wicked-garden:ground`
|
|
76
|
+
to pull richer brain + bus context for the current task.
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wicked-garden-swarm
|
|
3
|
+
context: fork
|
|
4
|
+
description: |
|
|
5
|
+
Parallel verification-swarm orchestration playbook: fan out N scoped
|
|
6
|
+
subagents over N units of work (repos / modules / files), then run a
|
|
7
|
+
SEPARATE verifier wave that re-derives each result from a clean state —
|
|
8
|
+
self-graded "done" is rejected. Composes the crew agents, the qe
|
|
9
|
+
semantic-reviewer, /wicked-garden:prove, wicked-vault attestation, and
|
|
10
|
+
the worktrees + deliberate skills rather than reinventing them. This is
|
|
11
|
+
multi-AGENT parallel execution+verification; for independent multi-MODEL
|
|
12
|
+
perspectives use jam:council instead.
|
|
13
|
+
|
|
14
|
+
Use when: multi-unit / fan-out work ("review every repo", "resolve the
|
|
15
|
+
backlog with proof", "apply this across all modules", "audit each
|
|
16
|
+
service"), high-blast-radius changes that need independent verification,
|
|
17
|
+
or any run where a claimed "done" must be re-derivable from receipts.
|
|
18
|
+
status: stable
|
|
19
|
+
phase_relevance: ["build", "test", "review"]
|
|
20
|
+
archetype_relevance: ["build", "review", "migrate", "modernize", "incident"]
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Swarm — parallel verification swarm
|
|
24
|
+
|
|
25
|
+
Orchestrate **N units of work in parallel** (one scoped subagent per unit),
|
|
26
|
+
then **independently verify** every result with a separate wave of agents that
|
|
27
|
+
re-derive "done" from a clean state. The swarm's value is not the parallelism —
|
|
28
|
+
it's that **no agent grades its own work**. A claimed "tests pass" / "done" that
|
|
29
|
+
can't be re-derived from receipts is rejected.
|
|
30
|
+
|
|
31
|
+
> **Swarm vs council.** `jam:council` gets independent *multi-model* opinions on
|
|
32
|
+
> one decision (different vendors answer the same scaffold). Swarm gets parallel
|
|
33
|
+
> *multi-agent* execution + verification over many units. Use council to decide;
|
|
34
|
+
> use swarm to execute-and-prove. They compose: run a council inside the verify
|
|
35
|
+
> wave for a high-stakes verdict (see `refs/independent-verification.md`).
|
|
36
|
+
|
|
37
|
+
## Compose, don't reinvent
|
|
38
|
+
|
|
39
|
+
This skill is orchestration prose. Every primitive it needs already exists in
|
|
40
|
+
the garden — reference these, do not duplicate them:
|
|
41
|
+
|
|
42
|
+
| Need | Use (existing garden piece) |
|
|
43
|
+
|------|------------------------------|
|
|
44
|
+
| Per-unit implementer subagent | `agents/crew/implementer.md` (already does parallel-when-independent + evidence) |
|
|
45
|
+
| Per-unit recon subagent | `agents/crew/researcher.md` (read-only context gathering) |
|
|
46
|
+
| Independent semantic verdict | `agents/qe/semantic-reviewer.md` (independent-by-construction; refuses to attest its own work) |
|
|
47
|
+
| Fallback reviewer | `agents/crew/reviewer.md` (reviewer-separation + external-review rules baked in) |
|
|
48
|
+
| Re-derive a claim (the receipt) | `/wicked-garden:prove` (run + freeze evidence + gate; fail-closed) |
|
|
49
|
+
| Hard-gate independent sign-off | `/wicked-garden:prove --with-attestations` → `wicked-vault attest` (evaluator ≠ creator, G10) |
|
|
50
|
+
| Blast-radius / scope lens | `wicked-garden:deliberate` (lens 2 + 3) and `/wicked-garden:search:blast-radius` |
|
|
51
|
+
| Per-unit isolation + commit hygiene | `wicked-garden:worktrees` (dangling-commit trust-but-verify) |
|
|
52
|
+
| Phase shape per unit | `wicked-garden:archetype` refs (`build` / `review` / `migrate`) |
|
|
53
|
+
| Multi-model verdict in a wave | `wicked-garden:jam:council` |
|
|
54
|
+
|
|
55
|
+
## The wave loop
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
0. recon → parallel researcher agents → concept catalog + per-unit profiles
|
|
59
|
+
synthesize → fit-matrix + relevance tiers
|
|
60
|
+
checkpoint → ONE structured scope question to the user (skip under full latitude)
|
|
61
|
+
1. implement → N parallel implementer agents (one per unit, self-contained brief)
|
|
62
|
+
each writes DETAILED artifacts to disk, returns a ~150-word summary
|
|
63
|
+
2. verify → M parallel verifier agents (SEPARATE from implementers)
|
|
64
|
+
re-run from clean state, read the ACTUAL diff, render PASS/FAIL/PARTIAL
|
|
65
|
+
3. receipts → /wicked-garden:prove per claim; hard gates add --with-attestations
|
|
66
|
+
4. ship → branch per unit, conventional commits, CI-green, independent review,
|
|
67
|
+
clean merge tree, tag-driven release (only when asked)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Each numbered step has a ref. Waves hand off **via disk artifacts**, never via
|
|
71
|
+
the orchestrator's context — that is what keeps the parent lean and the run
|
|
72
|
+
auditable.
|
|
73
|
+
|
|
74
|
+
## Orchestrator hygiene (the parent context stays lean)
|
|
75
|
+
|
|
76
|
+
- **Detail to disk, summary to context.** Subagents write the full profile /
|
|
77
|
+
plan / diff / receipt to the scratch dir and return ≤150 words. Never let a
|
|
78
|
+
subagent dump raw output into your context.
|
|
79
|
+
- **One message, many Task calls** for each wave — that is what makes it
|
|
80
|
+
parallel. A serial run with no documented `serial_reason` is a protocol miss
|
|
81
|
+
(same rule `agents/crew/implementer.md` enforces).
|
|
82
|
+
- **Background long/external work** and synthesize on completion rather than
|
|
83
|
+
blocking the wave.
|
|
84
|
+
- **The verifier is a different agent than the implementer.** If the same agent
|
|
85
|
+
type did the work, the verdict is a self-grade — `agents/qe/semantic-reviewer.md`
|
|
86
|
+
and the vault `attest` both refuse `evaluator == creator`.
|
|
87
|
+
|
|
88
|
+
## The two reusable briefs
|
|
89
|
+
|
|
90
|
+
The mechanics that make this repeatable are the **briefs** handed to each wave.
|
|
91
|
+
Both live in `refs/fan-out.md` (implementer) and `refs/independent-verification.md`
|
|
92
|
+
(verifier) as copy-paste templates. The shape:
|
|
93
|
+
|
|
94
|
+
- **Implementer brief** (per unit): read THIS unit's own rules/conventions →
|
|
95
|
+
impact analysis (blast radius) BEFORE changing → implement with **in-scope
|
|
96
|
+
tech-debt cleanup only** (no opportunistic refactor sprawl) → functionally
|
|
97
|
+
test **proportional to blast radius** → write artifacts to disk → return a
|
|
98
|
+
concise summary.
|
|
99
|
+
- **Verifier brief** (per unit): ignore the implementer's prose → re-run the
|
|
100
|
+
suite/build from clean → read the ACTUAL diff → check over-claims (e.g. a
|
|
101
|
+
claimed "pre-existing failure" must actually fail on the BASE commit) →
|
|
102
|
+
render PASS / FAIL / PARTIAL → write the authoritative receipt.
|
|
103
|
+
|
|
104
|
+
## Honest marking (no padding)
|
|
105
|
+
|
|
106
|
+
Mark every finding `GAP` / `PARTIAL` / `ALREADY-COVERED`. Surface
|
|
107
|
+
reverse-transfers and "you're already ahead of this" honestly. **A short true
|
|
108
|
+
list beats a long speculative one.** Record considered-and-rejected items
|
|
109
|
+
explicitly so they read as weighed, not missed. Details in
|
|
110
|
+
`refs/receipts-and-evidence.md`.
|
|
111
|
+
|
|
112
|
+
## Recon-first, then checkpoint
|
|
113
|
+
|
|
114
|
+
Before an expensive fan-out, run the recon wave and synthesize a fit-matrix +
|
|
115
|
+
relevance tiers, then **checkpoint scope with the user in a single structured
|
|
116
|
+
question**. Under an explicit goal / full latitude, proceed without asking.
|
|
117
|
+
Full procedure in `refs/recon-synthesis.md`.
|
|
118
|
+
|
|
119
|
+
## Disk-artifact layout (waves hand off here)
|
|
120
|
+
|
|
121
|
+
A scratch dir (the worked example this playbook was distilled from used
|
|
122
|
+
`.cross-pollination/`) with a top synthesis/index doc, per-unit
|
|
123
|
+
profile/plan/review/receipt files, and a deferred-items log. Exact tree in
|
|
124
|
+
`refs/recon-synthesis.md` §layout and `refs/receipts-and-evidence.md`.
|
|
125
|
+
|
|
126
|
+
## Refs
|
|
127
|
+
|
|
128
|
+
- [refs/recon-synthesis.md](refs/recon-synthesis.md) — recon wave, fit-matrix, relevance tiers, the single checkpoint question, scratch-dir layout
|
|
129
|
+
- [refs/fan-out.md](refs/fan-out.md) — parallel implementer wave + the **implementer brief template**, impact analysis, in-scope cleanup
|
|
130
|
+
- [refs/independent-verification.md](refs/independent-verification.md) — the verifier wave + the **verifier brief template**, isolation, over-claim kills, PASS/FAIL/PARTIAL
|
|
131
|
+
- [refs/receipts-and-evidence.md](refs/receipts-and-evidence.md) — verbatim receipts, prove/vault/wicked-testing composition, honest GAP/PARTIAL/ALREADY-COVERED marking
|
|
132
|
+
- [refs/ship-discipline.md](refs/ship-discipline.md) — branch-per-unit, conventional commits, CI-green gate, independent review + resolve, clean merge tree, tag-driven release
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# Fan-out — the parallel implementer wave
|
|
2
|
+
|
|
3
|
+
Dispatch **N independent subagents in parallel**, one per unit of work
|
|
4
|
+
(repo / module / file / service). One message, multiple `Task` calls — that
|
|
5
|
+
is what makes it a swarm and not a loop.
|
|
6
|
+
|
|
7
|
+
Use `agents/crew/implementer.md` as the agent. It already encodes the rules
|
|
8
|
+
that matter here: parallel-when-independent dispatch, structured evidence in
|
|
9
|
+
every `TaskUpdate`, and the guardrails (never auto-proceed on deploys / deletes /
|
|
10
|
+
schema migrations). This ref adds the **per-unit brief** that scopes each one.
|
|
11
|
+
|
|
12
|
+
## When a unit is independent
|
|
13
|
+
|
|
14
|
+
A unit is safe to fan out in parallel when it:
|
|
15
|
+
- touches disjoint files from the other units,
|
|
16
|
+
- shares no mutable state with them, and
|
|
17
|
+
- has no producer→consumer ordering against them.
|
|
18
|
+
|
|
19
|
+
If two units edit the same file or one's output feeds another, either serialize
|
|
20
|
+
those two (and record a `serial_reason`) or merge them into one unit. Everything
|
|
21
|
+
else runs concurrently.
|
|
22
|
+
|
|
23
|
+
## The implementer brief template
|
|
24
|
+
|
|
25
|
+
Each subagent gets a **tight, self-contained** brief. It must not need the
|
|
26
|
+
orchestrator's context to do its job — everything it needs is in the brief or
|
|
27
|
+
discoverable from the unit itself.
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
You are the swarm implementer for unit: <unit-name> (<path / repo URL>).
|
|
31
|
+
You run in parallel with sibling implementers on other units. You share no
|
|
32
|
+
state with them. Do not touch anything outside this unit.
|
|
33
|
+
|
|
34
|
+
SCRATCH DIR: <scratch>/<unit-name>/ (create it; write all detail here)
|
|
35
|
+
|
|
36
|
+
1. GROUND IN THE UNIT'S OWN RULES FIRST.
|
|
37
|
+
Read this unit's own conventions before changing anything: its
|
|
38
|
+
AGENTS.md / CLAUDE.md / CONTRIBUTING, lint+test config, and any
|
|
39
|
+
wicked-understanding repo playbook (add-feature / fix-bug / write-tests).
|
|
40
|
+
Follow THIS unit's method, not a generic one.
|
|
41
|
+
|
|
42
|
+
2. IMPACT ANALYSIS (blast radius) BEFORE you change anything.
|
|
43
|
+
What does this change touch? What depends on it? Use
|
|
44
|
+
/wicked-garden:search:blast-radius (or grep the call sites) and the
|
|
45
|
+
deliberate lens ("map the blast radius: what else shares this root cause").
|
|
46
|
+
Write blast-radius.md to your scratch dir. The blast radius SETS YOUR
|
|
47
|
+
TEST BAR (step 4) — a wide radius demands more verification.
|
|
48
|
+
|
|
49
|
+
3. IMPLEMENT — in scope only.
|
|
50
|
+
- Make the smallest change that satisfies the goal.
|
|
51
|
+
- In-scope tech-debt cleanup ONLY: fix debt you are already editing.
|
|
52
|
+
NO opportunistic refactor sprawl — drift is the #1 cause of inflated
|
|
53
|
+
cycles (same rule as the build archetype's implement phase).
|
|
54
|
+
- Fix ROOT causes, not symptoms.
|
|
55
|
+
|
|
56
|
+
4. FUNCTIONALLY TEST, proportional to blast radius.
|
|
57
|
+
| blast radius | test bar |
|
|
58
|
+
|--------------|----------|
|
|
59
|
+
| low (leaf, reversible) | one targeted test that exercises the change |
|
|
60
|
+
| medium | unit tests + 1-2 integration |
|
|
61
|
+
| high (shared code, many callers) | unit + integration + an acceptance check |
|
|
62
|
+
Run the unit's REAL test command. Capture exact command + output + exit code.
|
|
63
|
+
|
|
64
|
+
5. WRITE DETAILED ARTIFACTS TO DISK (not to your reply):
|
|
65
|
+
<scratch>/<unit-name>/blast-radius.md, plan.md, diff.patch (or commit SHA),
|
|
66
|
+
test-output.txt (verbatim, with exit code), assumptions.md.
|
|
67
|
+
|
|
68
|
+
6. RETURN A CONCISE SUMMARY (~150 words MAX). Include:
|
|
69
|
+
- what changed (1-2 sentences) and the scope you held to,
|
|
70
|
+
- the blast-radius verdict (low/medium/high),
|
|
71
|
+
- the test command + PASS/FAIL + exit code,
|
|
72
|
+
- the artifact paths,
|
|
73
|
+
- the base commit SHA you started from (the verifier needs it),
|
|
74
|
+
- anything you deferred (so it lands in the deferred log, not silently dropped).
|
|
75
|
+
Do NOT paste diffs or raw logs into the summary — those are on disk.
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Why the brief is shaped this way
|
|
79
|
+
|
|
80
|
+
- **Self-contained** → the orchestrator's context stays lean; the subagent can
|
|
81
|
+
run in an isolated worktree without back-and-forth.
|
|
82
|
+
- **Rules-first** → a unit's own conventions win over a generic house style;
|
|
83
|
+
this is the difference between a change that merges and one that bounces.
|
|
84
|
+
- **Impact analysis before code** → you cannot pick the right test bar until you
|
|
85
|
+
know the blast radius. This is the hinge that makes verification proportional.
|
|
86
|
+
- **In-scope cleanup only** → bounded debt repair without scope creep.
|
|
87
|
+
- **Detail to disk, ~150 words back** → the receipts are auditable and the
|
|
88
|
+
verify wave reads the artifacts, not the implementer's prose.
|
|
89
|
+
|
|
90
|
+
## Isolation + commit hygiene
|
|
91
|
+
|
|
92
|
+
When implementers commit (each on its own branch — see `refs/ship-discipline.md`),
|
|
93
|
+
follow `wicked-garden:worktrees`: a subagent's "Commit SHA: abc1234" can be a
|
|
94
|
+
**dangling commit** that `git gc` will collect once its worktree is removed.
|
|
95
|
+
**Trust-but-verify every reported SHA** with the ancestry check before you treat
|
|
96
|
+
the work as landed. This matters double in a swarm because many agents commit
|
|
97
|
+
concurrently.
|
|
98
|
+
|
|
99
|
+
## Hand-off
|
|
100
|
+
|
|
101
|
+
When the wave returns, you have N concise summaries in context and N detailed
|
|
102
|
+
artifact sets on disk. Do **not** start verifying inline — dispatch the
|
|
103
|
+
**separate** verify wave (`refs/independent-verification.md`), handing each
|
|
104
|
+
verifier the unit's scratch dir + base commit SHA.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Independent verification — the verify wave (the core)
|
|
2
|
+
|
|
3
|
+
This is the mechanism the whole skill exists for. The verifier is a **separate
|
|
4
|
+
agent from the implementer** that **re-derives** each result from a clean state.
|
|
5
|
+
Self-graded "done" is rejected. This is the vault / `prove` ethos applied to a
|
|
6
|
+
swarm: a claim is only true if it can be recomputed from frozen evidence.
|
|
7
|
+
|
|
8
|
+
> **Independence is structural, not polite.** Use a *different* agent type than
|
|
9
|
+
> the one that did the work. `agents/qe/semantic-reviewer.md` is independent by
|
|
10
|
+
> construction and **refuses to attest code it authored**; `wicked-vault attest`
|
|
11
|
+
> fails closed when `evaluator == creator` (G10). If you let the implementer
|
|
12
|
+
> verify itself, you have a self-grade — the one thing this skill forbids.
|
|
13
|
+
|
|
14
|
+
## Pick the verifier agent
|
|
15
|
+
|
|
16
|
+
| Verdict needed | Agent |
|
|
17
|
+
|----------------|-------|
|
|
18
|
+
| Does the code do what the spec/AC MEANS? | `agents/qe/semantic-reviewer.md` (opus, independent-by-construction) |
|
|
19
|
+
| General correctness when no specialist fits | `agents/crew/reviewer.md` (has reviewer-separation + external-review baked in) |
|
|
20
|
+
| High-stakes verdict needing multiple opinions | `wicked-garden:jam:council` (independent multi-model) inside the wave |
|
|
21
|
+
| The raw "did the suite actually pass" receipt | `/wicked-garden:prove` (run + gate) — see `refs/receipts-and-evidence.md` |
|
|
22
|
+
|
|
23
|
+
Run M verifiers in parallel — one message, multiple `Task` calls — one per unit.
|
|
24
|
+
|
|
25
|
+
## The verifier brief template
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
You are the swarm VERIFIER for unit: <unit-name>. You did NOT implement this.
|
|
29
|
+
Your job is to re-derive the result from a clean state and render a verdict.
|
|
30
|
+
Trust nothing the implementer asserted — re-derive it.
|
|
31
|
+
|
|
32
|
+
INPUTS: <scratch>/<unit-name>/ (the implementer's artifacts) and
|
|
33
|
+
BASE COMMIT SHA: <sha> (the state before the change).
|
|
34
|
+
|
|
35
|
+
1. RE-RUN FROM CLEAN.
|
|
36
|
+
Check out / reset to a clean tree. Run the unit's REAL build + test suite
|
|
37
|
+
yourself. Do not read the implementer's test-output.txt as truth — produce
|
|
38
|
+
your own. Capture exact command + full output + exit code.
|
|
39
|
+
|
|
40
|
+
2. READ THE ACTUAL DIFF, not the prose.
|
|
41
|
+
git diff <base-sha>..HEAD (or the diff.patch). Verify the change is what the
|
|
42
|
+
summary claimed, scoped where it claimed, with no smuggled-in extra edits.
|
|
43
|
+
|
|
44
|
+
3. KILL FORCE-FITS AND OVER-CLAIMS.
|
|
45
|
+
- If the implementer said a failure is "pre-existing", CHECK OUT THE BASE
|
|
46
|
+
COMMIT and confirm it actually fails there. A "pre-existing failure" that
|
|
47
|
+
passes on base is a regression the implementer introduced — FAIL.
|
|
48
|
+
- If a test was weakened, skipped, or its assertion gutted to go green — FAIL.
|
|
49
|
+
- If the change does less than claimed — PARTIAL, and say exactly what's missing.
|
|
50
|
+
|
|
51
|
+
4. RENDER THE VERDICT: PASS / FAIL / PARTIAL.
|
|
52
|
+
- PASS: re-ran clean, diff matches claim, no over-claims, tests genuinely green.
|
|
53
|
+
- PARTIAL: works but incomplete / claim overstated — list the gap.
|
|
54
|
+
- FAIL: does not re-derive — name the exact command + output that disproves it.
|
|
55
|
+
|
|
56
|
+
5. WRITE THE AUTHORITATIVE RECEIPT to <scratch>/<unit-name>/receipt.md:
|
|
57
|
+
verdict, the exact command(s) you ran, their verbatim output + exit codes,
|
|
58
|
+
the base SHA and head SHA, and a one-line rationale. This receipt — not the
|
|
59
|
+
implementer's summary — is the record of truth for this unit.
|
|
60
|
+
|
|
61
|
+
6. RETURN ~150 words: verdict + the single most load-bearing piece of evidence
|
|
62
|
+
(the command + exit code that proves it) + receipt path.
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## The wave structure
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
implementers wave → (disk artifacts) → verifiers wave → (receipts) → prove gate
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
- The two waves never run as one agent. The hand-off is **disk artifacts**, so
|
|
72
|
+
the verifier starts from the implementer's outputs but re-derives the result
|
|
73
|
+
independently.
|
|
74
|
+
- A unit is only "done" when its `receipt.md` says PASS **and** the claim is
|
|
75
|
+
re-derived through `/wicked-garden:prove` (next ref). A FAIL or PARTIAL goes
|
|
76
|
+
back to a fresh implementer slice — the original implementer does not get to
|
|
77
|
+
argue its way to PASS.
|
|
78
|
+
|
|
79
|
+
## Why re-derivation beats assertion
|
|
80
|
+
|
|
81
|
+
A traceability/claim heuristic reports an untagged-but-correct change as
|
|
82
|
+
"missing" and a tagged-but-wrong one as "done" — both wrong (this is exactly
|
|
83
|
+
why `semantic_review.py` is only a pre-filter and `agents/qe/semantic-reviewer.md`
|
|
84
|
+
does the real read). The verifier closes that gap: it judges by re-running and
|
|
85
|
+
reading, not by trusting a label or a summary. The verdict that **names the gap**
|
|
86
|
+
is the value; never inflate to PASS to be helpful.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Receipts & evidence — claims must be re-derivable
|
|
2
|
+
|
|
3
|
+
A swarm produces **receipts, not assertions**. Every "done" / "tests pass" /
|
|
4
|
+
"build clean" must be re-derivable from frozen evidence: the **exact command**,
|
|
5
|
+
its **real output**, **exit code**, and the **commit SHA** it ran against. If you
|
|
6
|
+
can't re-derive it, it isn't proven — it's a claim, and claims are rejected.
|
|
7
|
+
|
|
8
|
+
## Compose the garden's evidence machinery — don't hand-roll it
|
|
9
|
+
|
|
10
|
+
| Mechanism | Use it for |
|
|
11
|
+
|-----------|------------|
|
|
12
|
+
| `/wicked-garden:prove <claim> --by "<cmd>" [--verifier ...]` | The one-line receipt: runs the command, freezes its real exit code as wicked-vault evidence, gates by **re-running** the verifier. Exit 0 only on a re-derived PASS; **fail-closed** (exit 3) when the backend is down — never a vacuous pass. Works on **interim** artifacts too (prove a produce the moment it exists). |
|
|
13
|
+
| `/wicked-garden:prove ... --with-attestations` | Hard gates (review / incident / migrate). Stays REJECT (`UNATTESTED`) until an **independent** evaluator runs `wicked-vault attest <id> --opinion pass`. The doer's own evidence cannot satisfy it — that is the anti-self-grade point. |
|
|
14
|
+
| `wicked-vault attest <id> --opinion pass --evaluator <who>` | The independent sign-off itself. Fails closed on `evaluator == creator` and on weak/ambient identity (record under an explicit `--actor`, default `garden-prove`). |
|
|
15
|
+
| `wicked-testing:*` verdicts (writer → executor → reviewer, isolated) | When the unit needs a full evidence-gated acceptance verdict rather than a single command receipt. The reviewer is isolated from execution — same independence principle as the verify wave. |
|
|
16
|
+
|
|
17
|
+
This is the **Sentinel rule** made concrete: a done-claim needs a *re-derived
|
|
18
|
+
verdict*, not a self-report. `/wicked-garden:prove` is the verb you reach for by
|
|
19
|
+
reflex before telling the user a unit is done.
|
|
20
|
+
|
|
21
|
+
## What a receipt looks like (verbatim, never paraphrased)
|
|
22
|
+
|
|
23
|
+
Each unit's `receipt.md` (written by the **verifier**, not the implementer) holds:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
unit: <unit-name>
|
|
27
|
+
verdict: PASS | FAIL | PARTIAL
|
|
28
|
+
base_sha: <sha the change started from>
|
|
29
|
+
head_sha: <sha after the change>
|
|
30
|
+
command: <the exact command run, copy-pasteable>
|
|
31
|
+
exit_code: <real exit code>
|
|
32
|
+
output: |
|
|
33
|
+
<verbatim stdout/stderr — the real thing, not a summary>
|
|
34
|
+
prove: <the /wicked-garden:prove JSON verdict: satisfied + re_derived>
|
|
35
|
+
attestation: <artifact id + evaluator, for hard gates; else "n/a">
|
|
36
|
+
rationale: <one line>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Never write "tests pass" without the command + output + exit code that proves
|
|
40
|
+
it. A receipt a reviewer can't re-run is not a receipt.
|
|
41
|
+
|
|
42
|
+
## Honest marking — no padding
|
|
43
|
+
|
|
44
|
+
The swarm's credibility comes from honesty, not volume. Mark every finding:
|
|
45
|
+
|
|
46
|
+
- **GAP** — genuinely missing; should be added.
|
|
47
|
+
- **PARTIAL** — half-there; name exactly what's missing.
|
|
48
|
+
- **ALREADY-COVERED** — the unit is already ahead of this; say so plainly.
|
|
49
|
+
|
|
50
|
+
Rules:
|
|
51
|
+
- **Surface reverse-transfers and "you're already ahead" honestly.** If a unit
|
|
52
|
+
already does the thing better than the proposed change, that's a finding, not
|
|
53
|
+
an omission — and sometimes the change should flow the *other* way.
|
|
54
|
+
- **A short true list beats a long speculative one.** Don't pad the fit-matrix
|
|
55
|
+
with maybes to look thorough.
|
|
56
|
+
- **Record considered-and-rejected items explicitly** in `deferred.md` so they
|
|
57
|
+
read as *weighed, not missed*. "Considered X, rejected because Y" is a
|
|
58
|
+
stronger signal than silence.
|
|
59
|
+
- **The verdict that names the gap is the value.** Never inflate a PARTIAL to
|
|
60
|
+
PASS, or a GAP to ALREADY-COVERED, to be agreeable.
|
|
61
|
+
|
|
62
|
+
## Tie it back to the gate
|
|
63
|
+
|
|
64
|
+
A unit is shippable only when: its `receipt.md` verdict is PASS **and**
|
|
65
|
+
`/wicked-garden:prove` returns `satisfied: true, re_derived: true` for the
|
|
66
|
+
claim **and** (for hard-gate work) an independent `wicked-vault attest --opinion
|
|
67
|
+
pass` exists from an evaluator that is not the implementer. Anything short of
|
|
68
|
+
that is PARTIAL or FAIL and loops back to a fresh implementer slice — see
|
|
69
|
+
`refs/independent-verification.md`.
|