wicked-garden 12.29.1 → 12.31.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/components.json +46 -4
- package/.claude-plugin/marketplace.json +3 -3
- package/.claude-plugin/plugin.json +4 -4
- package/.claude-plugin/specialist.json +1 -1
- package/.product/DES-001-technical-design.md +8 -7
- package/.product/RAID.md +4 -4
- package/.product/REQ-001-application-overview.md +2 -2
- package/.product/REQ-002-technology-constraints.md +3 -3
- package/.product/REQ-003-domain-model.md +1 -1
- package/.product/REQ-005-dod-criteria.md +7 -4
- package/CHANGELOG.md +3 -0
- package/CONTRIBUTING.md +14 -38
- package/ETHOS.md +3 -3
- package/README.md +28 -9
- package/WICKED_GARDEN_BUS_EVENTS.md +5 -3
- package/docs/README.md +4 -2
- package/docs/adr/0003-peers-gate-required-layers-optin.md +1 -1
- package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +6 -1
- package/docs/adr/0005-code-graph-re-homes-to-wicked-estate.md +131 -0
- package/docs/adr/0005-retarget-inventory.md +154 -0
- package/docs/domains.md +4 -4
- package/docs/extending.md +191 -0
- package/docs/getting-started.md +14 -14
- package/docs/required-peers.md +9 -4
- package/docs/v11/archetypes.md +3 -3
- package/hooks/hooks.json +1 -1
- package/hooks/scripts/bootstrap.py +129 -358
- package/hooks/scripts/notification.py +9 -1
- package/hooks/scripts/post_tool.py +11 -67
- package/hooks/scripts/pre_compact.py +18 -80
- package/hooks/scripts/pre_tool.py +12 -5
- package/hooks/scripts/prompt_submit.py +50 -122
- package/hooks/scripts/session_end.py +3 -3
- package/hooks/scripts/stop.py +80 -96
- package/hooks/scripts/subagent_lifecycle.py +12 -2
- package/hooks/scripts/task_completed.py +16 -15
- package/install.mjs +92 -9
- package/package.json +2 -2
- package/schemas/wicked-pack.schema.json +123 -0
- package/scripts/_bus.py +52 -5
- package/scripts/_bus_catalog_gen.py +2 -2
- package/scripts/_bus_consumers.json +2 -26
- package/scripts/_context_backend.py +471 -0
- package/scripts/_estate_client.py +794 -0
- package/scripts/_heavy_cadence.py +15 -73
- package/scripts/_integration_resolver.py +38 -91
- package/scripts/_pack_registry.py +672 -0
- package/scripts/_session.py +7 -15
- package/scripts/_validate_registry.py +37 -10
- package/scripts/compiler/phase0/wire_vault.py +26 -10
- package/scripts/crew/flow_compiler.py +7 -3
- package/scripts/crew/specialist_resolver.py +102 -7
- package/scripts/delivery/telemetry.py +14 -2
- package/scripts/domain/_rule_extractor.py +7 -0
- package/scripts/domain/batch_extract.py +226 -0
- package/scripts/domain/extract_loop.py +267 -16
- package/scripts/domain/rule_model_api.py +87 -0
- package/scripts/engineering/patch/estate_db.py +345 -0
- package/scripts/engineering/patch/generators/__init__.py +1 -1
- package/scripts/engineering/patch/patch.py +18 -109
- package/scripts/engineering/patch/safety.py +6 -4
- package/scripts/jam/consensus.py +1 -1
- package/scripts/loom/compose.py +2 -2
- package/scripts/loom/manifest.py +28 -40
- package/scripts/loom/resolve.py +1 -1
- package/scripts/mem/__init__.py +0 -0
- package/scripts/mem/auto_memorize.py +494 -0
- package/scripts/mem/estate_memory.py +385 -0
- package/scripts/{_brain_ingest → mem}/session_fact_extractor.py +163 -6
- package/scripts/pack/__init__.py +0 -0
- package/scripts/pack/check.py +376 -0
- package/scripts/qe/lib/context-md-validator.mjs +137 -0
- package/scripts/qe/lib/exec-with-timeout.mjs +178 -0
- package/scripts/qe/lib/gate.mjs +415 -0
- package/scripts/qe/vault_gate.py +1 -1
- package/scripts/sentinel/invariants.py +25 -55
- package/scripts/smaht/adapters/brain_adapter.py +64 -78
- package/scripts/smaht/adapters/delegation_adapter.py +5 -5
- package/scripts/smaht/adapters/domain_adapter.py +1 -1
- package/scripts/smaht/adapters/events_adapter.py +1 -1
- package/scripts/smaht/context_package.py +15 -15
- package/scripts/where_am_i.py +2 -48
- package/skills/agentic-architect/SKILL.md +1 -1
- package/skills/agentic-performance-analyst/SKILL.md +1 -1
- package/skills/agentic-safety-reviewer/SKILL.md +6 -1
- package/skills/archetype/refs/build.md +1 -1
- package/skills/core/SKILL.md +20 -15
- package/skills/core/refs/install.md +5 -7
- package/skills/core/refs/report-issue.md +1 -1
- package/skills/core/refs/setup.md +25 -56
- package/skills/data/refs/data.md +1 -1
- package/skills/data/refs/pipeline.md +2 -2
- package/skills/data-engineer/SKILL.md +2 -2
- package/skills/deliberate/refs/run-workflow.md +3 -3
- package/skills/domain/vendor/README.md +3 -3
- package/skills/engineering/patch/SKILL.md +14 -4
- package/skills/engineering/refs/plan.md +1 -1
- package/skills/engineering/refs/review.md +1 -1
- package/skills/engineering-migration-engineer/SKILL.md +1 -1
- package/skills/ground/SKILL.md +36 -36
- package/skills/integration-discovery/SKILL.md +3 -3
- package/skills/integration-discovery/refs/cli-detection.md +3 -3
- package/skills/integration-discovery/refs/discovery-sources.md +3 -3
- package/skills/integration-discovery/refs/task-patterns.md +10 -10
- package/skills/jam/SKILL.md +6 -6
- package/skills/jam/refs/quick.md +1 -1
- package/skills/jam/refs/revisit.md +8 -11
- package/skills/jam/refs/synthesis-patterns.md +1 -1
- package/skills/jam-brainstorm-facilitator/SKILL.md +11 -11
- package/skills/jam-council/SKILL.md +5 -5
- package/skills/mem/SKILL.md +136 -0
- package/skills/mem/refs/scopes.md +80 -0
- package/skills/mem-capture/SKILL.md +89 -0
- package/skills/mem-ingest/SKILL.md +131 -0
- package/skills/platform/audit/SKILL.md +2 -2
- package/skills/platform/compliance/SKILL.md +2 -2
- package/skills/platform/peer-health/SKILL.md +6 -6
- package/skills/platform-compliance-officer/SKILL.md +11 -2
- package/skills/platform-privacy-expert/SKILL.md +1 -1
- package/skills/platform-security-engineer/SKILL.md +14 -4
- package/skills/product/SKILL.md +4 -4
- package/skills/product/acceptance-criteria/SKILL.md +1 -1
- package/skills/product/listen/SKILL.md +2 -2
- package/skills/product/refs/acceptance.md +3 -3
- package/skills/product/refs/align.md +1 -1
- package/skills/product/refs/elicit.md +1 -1
- package/skills/product/refs/listen.md +1 -1
- package/skills/product/requirements-analysis/SKILL.md +2 -2
- package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +2 -2
- package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +3 -3
- package/skills/product/strategy/SKILL.md +3 -3
- package/skills/product/synthesize/SKILL.md +1 -1
- package/skills/product/ux-review/SKILL.md +1 -1
- package/skills/product-a11y-expert/SKILL.md +11 -2
- package/skills/product-requirements-analyst/SKILL.md +10 -2
- package/skills/product-ui-reviewer/SKILL.md +1 -1
- package/skills/product-ux-designer/SKILL.md +1 -1
- package/skills/product-value-strategist/SKILL.md +1 -1
- package/skills/qe/SKILL.md +168 -0
- package/skills/qe/refs/accept.md +464 -0
- package/skills/qe/refs/author.md +126 -0
- package/skills/qe/refs/evidence.md +238 -0
- package/skills/qe/refs/execute.md +154 -0
- package/skills/qe/refs/insight.md +149 -0
- package/skills/qe/refs/integration.md +274 -0
- package/skills/qe/refs/plan.md +148 -0
- package/skills/qe/refs/review.md +147 -0
- package/skills/qe/refs/scenario-format.md +307 -0
- package/skills/qe/refs/setup.md +130 -0
- package/skills/qe-a11y-test-engineer/SKILL.md +259 -0
- package/skills/qe-acceptance-test-executor/SKILL.md +215 -0
- package/skills/qe-acceptance-test-reviewer/SKILL.md +200 -0
- package/skills/qe-acceptance-test-writer/SKILL.md +162 -0
- package/skills/qe-ai-feature-test-engineer/SKILL.md +383 -0
- package/skills/qe-chaos-test-engineer/SKILL.md +257 -0
- package/skills/qe-code-analyzer/SKILL.md +79 -0
- package/skills/qe-compliance-test-engineer/SKILL.md +271 -0
- package/skills/qe-contract-testing-engineer/SKILL.md +53 -0
- package/skills/qe-coverage-archaeologist/SKILL.md +52 -0
- package/skills/qe-data-quality-tester/SKILL.md +51 -0
- package/skills/qe-e2e-orchestrator/SKILL.md +51 -0
- package/skills/qe-exploratory-tester/SKILL.md +56 -0
- package/skills/qe-flaky-test-hunter/SKILL.md +252 -0
- package/skills/qe-fuzz-property-engineer/SKILL.md +58 -0
- package/skills/qe-iac-test-engineer/SKILL.md +247 -0
- package/skills/qe-incident-to-scenario-synthesizer/SKILL.md +288 -0
- package/skills/qe-integration-test-engineer/SKILL.md +46 -0
- package/skills/qe-load-performance-engineer/SKILL.md +59 -0
- package/skills/qe-localization-test-engineer/SKILL.md +49 -0
- package/skills/qe-mutation-test-engineer/SKILL.md +240 -0
- package/skills/qe-observability-test-engineer/SKILL.md +45 -0
- package/skills/qe-production-quality-engineer/SKILL.md +47 -0
- package/skills/qe-release-readiness-engineer/SKILL.md +240 -0
- package/skills/qe-requirements-quality-analyst/SKILL.md +56 -0
- package/skills/qe-risk-assessor/SKILL.md +48 -0
- package/skills/qe-scenario-executor/SKILL.md +185 -0
- package/skills/qe-security-test-engineer/SKILL.md +474 -0
- package/skills/qe-semantic-reviewer/SKILL.md +27 -1
- package/skills/qe-snapshot-hygiene-auditor/SKILL.md +274 -0
- package/skills/qe-test-automation-engineer/SKILL.md +66 -0
- package/skills/qe-test-code-quality-auditor/SKILL.md +299 -0
- package/skills/qe-test-data-manager/SKILL.md +58 -0
- package/skills/qe-test-designer/SKILL.md +83 -0
- package/skills/qe-test-impact-analyzer/SKILL.md +227 -0
- package/skills/qe-test-oracle/SKILL.md +177 -0
- package/skills/qe-test-strategist/SKILL.md +141 -0
- package/skills/qe-testability-reviewer/SKILL.md +49 -0
- package/skills/qe-ui-component-test-engineer/SKILL.md +48 -0
- package/skills/qe-visual-regression-engineer/SKILL.md +290 -0
- package/skills/search/SKILL.md +90 -88
- package/skills/search/codebase-narrator/SKILL.md +2 -2
- package/skills/search/refs/answer.md +61 -0
- package/skills/search/refs/hotspots.md +25 -43
- package/skills/search/refs/service-map.md +5 -11
- package/skills/smaht/SKILL.md +15 -14
- package/skills/smaht/intent/SKILL.md +2 -2
- package/skills/smaht/refs/briefing.md +1 -1
- package/skills/swarm/SKILL.md +1 -1
- package/skills/swarm/refs/receipts-and-evidence.md +1 -1
- package/skills/workflow/SKILL.md +14 -4
- package/skills/workflow/refs/integration.md +6 -6
- package/scripts/_brain_ingest/__init__.py +0 -2
- package/scripts/_brain_port.py +0 -163
- package/scripts/_wicked_testing_probe.py +0 -277
- package/scripts/engineering/patch/codegraph_db.py +0 -125
- package/scripts/smaht/_bus_consumers.py +0 -98
- package/skills/multi-model/SKILL.md +0 -43
- package/skills/multi-model/refs/aichat.md +0 -119
- package/skills/multi-model/refs/aider.md +0 -100
- package/skills/multi-model/refs/auditability.md +0 -238
- package/skills/multi-model/refs/codex.md +0 -169
- package/skills/multi-model/refs/context.md +0 -306
- package/skills/multi-model/refs/copilot.md +0 -161
- package/skills/multi-model/refs/examples.md +0 -224
- package/skills/multi-model/refs/gemini.md +0 -185
- package/skills/multi-model/refs/goose.md +0 -112
- package/skills/multi-model/refs/llm.md +0 -124
- package/skills/multi-model/refs/opencode.md +0 -196
- package/skills/multi-model/refs/orchestration.md +0 -188
- package/skills/multi-model/refs/pi.md +0 -208
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"_comment": "Issue #328: Component declarations for wicked-garden plugin. Claude Code plugin.json does not yet support inline component declarations beyond path overrides. This manifest documents all components for tooling, validation, and future schema support. When plugin.json gains a 'components' field, merge this data into plugin.json. The plugin is skills-only: former commands/ became actions of consolidated per-domain skills, and former agents/ became standalone context:fork worker skills (enumerated under fork_skills). Regenerate derived blocks with scripts/ci/sync_components.py.",
|
|
3
3
|
"domains": ["agentic", "crew", "data", "engineering", "jam", "mem", "persona", "platform", "product", "qe", "search", "smaht"],
|
|
4
4
|
"summary": {
|
|
5
|
-
"skills":
|
|
6
|
-
"fork_skills":
|
|
5
|
+
"skills": 141,
|
|
6
|
+
"fork_skills": 78,
|
|
7
7
|
"hooks": 13,
|
|
8
8
|
"specialists": 7
|
|
9
9
|
},
|
|
@@ -35,7 +35,9 @@
|
|
|
35
35
|
"jam": ["jam"],
|
|
36
36
|
"jam-brainstorm-facilitator": ["jam-brainstorm-facilitator"],
|
|
37
37
|
"jam-council": ["jam-council"],
|
|
38
|
-
"
|
|
38
|
+
"mem": ["mem"],
|
|
39
|
+
"mem-capture": ["mem-capture"],
|
|
40
|
+
"mem-ingest": ["mem-ingest"],
|
|
39
41
|
"persona": ["persona"],
|
|
40
42
|
"persona-agent": ["persona-agent"],
|
|
41
43
|
"platform": ["audit", "compliance", "errors", "gate-benchmark-rebaseline", "gh-cli", "github-actions", "gitlab-ci", "glab-cli", "health", "observability", "peer-health", "platform", "prereq-doctor"],
|
|
@@ -49,7 +51,47 @@
|
|
|
49
51
|
"product-ux-designer": ["product-ux-designer"],
|
|
50
52
|
"product-value-strategist": ["product-value-strategist"],
|
|
51
53
|
"prove": ["prove"],
|
|
54
|
+
"qe": ["qe"],
|
|
55
|
+
"qe-a11y-test-engineer": ["qe-a11y-test-engineer"],
|
|
56
|
+
"qe-acceptance-test-executor": ["qe-acceptance-test-executor"],
|
|
57
|
+
"qe-acceptance-test-reviewer": ["qe-acceptance-test-reviewer"],
|
|
58
|
+
"qe-acceptance-test-writer": ["qe-acceptance-test-writer"],
|
|
59
|
+
"qe-ai-feature-test-engineer": ["qe-ai-feature-test-engineer"],
|
|
60
|
+
"qe-chaos-test-engineer": ["qe-chaos-test-engineer"],
|
|
61
|
+
"qe-code-analyzer": ["qe-code-analyzer"],
|
|
62
|
+
"qe-compliance-test-engineer": ["qe-compliance-test-engineer"],
|
|
63
|
+
"qe-contract-testing-engineer": ["qe-contract-testing-engineer"],
|
|
64
|
+
"qe-coverage-archaeologist": ["qe-coverage-archaeologist"],
|
|
65
|
+
"qe-data-quality-tester": ["qe-data-quality-tester"],
|
|
66
|
+
"qe-e2e-orchestrator": ["qe-e2e-orchestrator"],
|
|
67
|
+
"qe-exploratory-tester": ["qe-exploratory-tester"],
|
|
68
|
+
"qe-flaky-test-hunter": ["qe-flaky-test-hunter"],
|
|
69
|
+
"qe-fuzz-property-engineer": ["qe-fuzz-property-engineer"],
|
|
70
|
+
"qe-iac-test-engineer": ["qe-iac-test-engineer"],
|
|
71
|
+
"qe-incident-to-scenario-synthesizer": ["qe-incident-to-scenario-synthesizer"],
|
|
72
|
+
"qe-integration-test-engineer": ["qe-integration-test-engineer"],
|
|
73
|
+
"qe-load-performance-engineer": ["qe-load-performance-engineer"],
|
|
74
|
+
"qe-localization-test-engineer": ["qe-localization-test-engineer"],
|
|
75
|
+
"qe-mutation-test-engineer": ["qe-mutation-test-engineer"],
|
|
76
|
+
"qe-observability-test-engineer": ["qe-observability-test-engineer"],
|
|
77
|
+
"qe-production-quality-engineer": ["qe-production-quality-engineer"],
|
|
78
|
+
"qe-release-readiness-engineer": ["qe-release-readiness-engineer"],
|
|
79
|
+
"qe-requirements-quality-analyst": ["qe-requirements-quality-analyst"],
|
|
80
|
+
"qe-risk-assessor": ["qe-risk-assessor"],
|
|
81
|
+
"qe-scenario-executor": ["qe-scenario-executor"],
|
|
82
|
+
"qe-security-test-engineer": ["qe-security-test-engineer"],
|
|
52
83
|
"qe-semantic-reviewer": ["qe-semantic-reviewer"],
|
|
84
|
+
"qe-snapshot-hygiene-auditor": ["qe-snapshot-hygiene-auditor"],
|
|
85
|
+
"qe-test-automation-engineer": ["qe-test-automation-engineer"],
|
|
86
|
+
"qe-test-code-quality-auditor": ["qe-test-code-quality-auditor"],
|
|
87
|
+
"qe-test-data-manager": ["qe-test-data-manager"],
|
|
88
|
+
"qe-test-designer": ["qe-test-designer"],
|
|
89
|
+
"qe-test-impact-analyzer": ["qe-test-impact-analyzer"],
|
|
90
|
+
"qe-test-oracle": ["qe-test-oracle"],
|
|
91
|
+
"qe-test-strategist": ["qe-test-strategist"],
|
|
92
|
+
"qe-testability-reviewer": ["qe-testability-reviewer"],
|
|
93
|
+
"qe-ui-component-test-engineer": ["qe-ui-component-test-engineer"],
|
|
94
|
+
"qe-visual-regression-engineer": ["qe-visual-regression-engineer"],
|
|
53
95
|
"runtime-exec": ["runtime-exec"],
|
|
54
96
|
"search": ["codebase-narrator", "search"],
|
|
55
97
|
"smaht": ["discovery", "intent", "propose-skills", "smaht"],
|
|
@@ -58,7 +100,7 @@
|
|
|
58
100
|
"workflow": ["workflow"],
|
|
59
101
|
"worktrees": ["worktrees"]
|
|
60
102
|
},
|
|
61
|
-
"fork_skills": ["wicked-garden-agentic-architect", "wicked-garden-agentic-performance-analyst", "wicked-garden-agentic-safety-reviewer", "wicked-garden-archetype", "wicked-garden-classify", "wicked-garden-crew-implementer", "wicked-garden-crew-researcher", "wicked-garden-crew-reviewer", "wicked-garden-data-engineer", "wicked-garden-domain-coverage", "wicked-garden-domain-extractor", "wicked-garden-domain-modeler", "wicked-garden-engineering-api-documentarian", "wicked-garden-engineering-conformance-reviewer", "wicked-garden-engineering-debugging", "wicked-garden-engineering-migration-engineer", "wicked-garden-engineering-solution-architect", "wicked-garden-ground", "wicked-garden-integration-discovery", "wicked-garden-jam-brainstorm-facilitator", "wicked-garden-jam-council", "wicked-garden-
|
|
103
|
+
"fork_skills": ["wicked-garden-agentic-architect", "wicked-garden-agentic-performance-analyst", "wicked-garden-agentic-safety-reviewer", "wicked-garden-archetype", "wicked-garden-classify", "wicked-garden-crew-implementer", "wicked-garden-crew-researcher", "wicked-garden-crew-reviewer", "wicked-garden-data-engineer", "wicked-garden-domain-coverage", "wicked-garden-domain-extractor", "wicked-garden-domain-modeler", "wicked-garden-engineering-api-documentarian", "wicked-garden-engineering-conformance-reviewer", "wicked-garden-engineering-debugging", "wicked-garden-engineering-migration-engineer", "wicked-garden-engineering-solution-architect", "wicked-garden-ground", "wicked-garden-integration-discovery", "wicked-garden-jam-brainstorm-facilitator", "wicked-garden-jam-council", "wicked-garden-mem-capture", "wicked-garden-mem-ingest", "wicked-garden-persona-agent", "wicked-garden-platform-compliance-officer", "wicked-garden-platform-privacy-expert", "wicked-garden-platform-security-engineer", "wicked-garden-product-a11y-expert", "wicked-garden-product-requirements-analyst", "wicked-garden-product-ui-reviewer", "wicked-garden-product-ux-designer", "wicked-garden-product-value-strategist", "wicked-garden-qe-a11y-test-engineer", "wicked-garden-qe-acceptance-test-executor", "wicked-garden-qe-acceptance-test-reviewer", "wicked-garden-qe-acceptance-test-writer", "wicked-garden-qe-ai-feature-test-engineer", "wicked-garden-qe-chaos-test-engineer", "wicked-garden-qe-code-analyzer", "wicked-garden-qe-compliance-test-engineer", "wicked-garden-qe-contract-testing-engineer", "wicked-garden-qe-coverage-archaeologist", "wicked-garden-qe-data-quality-tester", "wicked-garden-qe-e2e-orchestrator", "wicked-garden-qe-exploratory-tester", "wicked-garden-qe-flaky-test-hunter", "wicked-garden-qe-fuzz-property-engineer", "wicked-garden-qe-iac-test-engineer", "wicked-garden-qe-incident-to-scenario-synthesizer", "wicked-garden-qe-integration-test-engineer", "wicked-garden-qe-load-performance-engineer", "wicked-garden-qe-localization-test-engineer", "wicked-garden-qe-mutation-test-engineer", "wicked-garden-qe-observability-test-engineer", "wicked-garden-qe-production-quality-engineer", "wicked-garden-qe-release-readiness-engineer", "wicked-garden-qe-requirements-quality-analyst", "wicked-garden-qe-risk-assessor", "wicked-garden-qe-scenario-executor", "wicked-garden-qe-security-test-engineer", "wicked-garden-qe-semantic-reviewer", "wicked-garden-qe-snapshot-hygiene-auditor", "wicked-garden-qe-test-automation-engineer", "wicked-garden-qe-test-code-quality-auditor", "wicked-garden-qe-test-data-manager", "wicked-garden-qe-test-designer", "wicked-garden-qe-test-impact-analyzer", "wicked-garden-qe-test-oracle", "wicked-garden-qe-test-strategist", "wicked-garden-qe-testability-reviewer", "wicked-garden-qe-ui-component-test-engineer", "wicked-garden-qe-visual-regression-engineer", "wicked-garden-runtime-exec", "wicked-garden-smaht", "wicked-garden-swarm", "wicked-garden-wickedizer", "wicked-garden-workflow", "wicked-garden-worktrees"],
|
|
62
104
|
"hooks": ["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "PostToolUseFailure", "TaskCompleted", "SubagentStart", "SubagentStop", "PermissionRequest", "Notification", "PreCompact", "Stop", "SessionEnd"],
|
|
63
105
|
"specialists": [
|
|
64
106
|
{
|
|
@@ -7,9 +7,9 @@
|
|
|
7
7
|
{
|
|
8
8
|
"name": "wicked-garden",
|
|
9
9
|
"source": "./",
|
|
10
|
-
"description": "Your coding agent already plans and swarms \u2014 Wicked Garden is the curated toolkit for what it can't: proof-not-claims gates, code links grep can't see, deterministic refactor, cross-session memory, real multi-model second opinions. Don't fight the harness; fill its gaps. The gate needs wicked-vault (
|
|
11
|
-
"version": "12.
|
|
10
|
+
"description": "Your coding agent already plans and swarms \u2014 Wicked Garden is the curated toolkit for what it can't: proof-not-claims gates, code links grep can't see, deterministic refactor, cross-session memory, real multi-model second opinions. Don't fight the harness; fill its gaps. The gate needs wicked-vault (a self-contained infra peer, installed directly) and re-derives through garden's built-in engine; testing/brain/bus are opt-in layers.",
|
|
11
|
+
"version": "12.31.0"
|
|
12
12
|
}
|
|
13
13
|
],
|
|
14
|
-
"version": "12.
|
|
14
|
+
"version": "12.31.0"
|
|
15
15
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wicked-garden",
|
|
3
|
-
"version": "12.
|
|
4
|
-
"description": "Your coding agent's harness already plans and swarms; Wicked Garden is the curated toolkit for what it can't do alone. Proof, not claims
|
|
5
|
-
"
|
|
6
|
-
"
|
|
3
|
+
"version": "12.31.0",
|
|
4
|
+
"description": "Your coding agent's harness already plans and swarms; Wicked Garden is the curated toolkit for what it can't do alone. Proof, not claims — gates re-derive 'done' through the internal loom engine (fail-closed, independently attested via wicked-vault), so a self-asserted pass can't lie its way green. Relationships grep can't see — the wicked-estate code graph + injected bus/dispatch/capability/archetype edges power blast-radius & lineage. Plus deterministic multi-file refactor (wicked-patch), cross-session memory + knowledge (the mem domain over wicked-estate), real multi-model second opinions (jam:council), portable expertise as on-demand skill-refs, and evidence-gated testing (the in-catalog qe domain). It reads the shape of your work to apply the right rigor — steering, not a pipeline — then gets out of the way. The compiler stamps a self-contained evidence gate into any repo that runs with no wicked-garden installed. Don't fight the harness; fill its gaps. The evidence gate requires wicked-vault, a self-contained infra peer wicked-garden installs directly; wicked-bus is an opt-in layer — install what you'll use, the toolkit works without the rest.",
|
|
5
|
+
"wicked_vault_version": "^0.5.0",
|
|
6
|
+
"wicked_ledger_version": "^0.2.0",
|
|
7
7
|
"wicked_brain_version": "^0.18.0",
|
|
8
8
|
"wicked_bus_version": "^2.0.0",
|
|
9
9
|
"author": {
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
{
|
|
24
24
|
"name": "qe",
|
|
25
25
|
"role": "quality-engineering",
|
|
26
|
-
"description": "Quality Engineering specialist
|
|
26
|
+
"description": "Quality Engineering specialist — in-catalog qe domain (Phase 6b). Crew dispatches QE workers by their wicked-garden-qe-* skill names (router: wicked-garden-qe). Covers test strategy, scenario generation, testability review, semantic alignment, risk assessment, test automation, evidence-gated acceptance testing, and shift-left quality practices.",
|
|
27
27
|
"enhances": ["clarify", "design", "qe", "build", "review", "operate", "*"]
|
|
28
28
|
},
|
|
29
29
|
{
|
|
@@ -182,9 +182,10 @@ wicked-patch is the deterministic multi-file transformation engine. It is expose
|
|
|
182
182
|
|
|
183
183
|
```
|
|
184
184
|
Developer invokes patch action: /wicked-garden-engineering patch-plan OldName
|
|
185
|
-
→ engineering-patch skill reads
|
|
186
|
-
|
|
187
|
-
|
|
185
|
+
→ engineering-patch skill reads the wicked-estate graph (ADR 0005):
|
|
186
|
+
built by `wicked-estate index` (75-language tree-sitter, in-binary),
|
|
187
|
+
adapted to the patch schema via estate_db.py (.codegraph/estate.db)
|
|
188
|
+
+ injected edges (bus producer→consumer, dispatch, capability, archetype)
|
|
188
189
|
→ computes full affected file set:
|
|
189
190
|
direct references (grep-visible)
|
|
190
191
|
+ injected-edge references (not grep-visible)
|
|
@@ -203,7 +204,7 @@ Developer invokes apply: /wicked-garden-engineering apply <patch-file>
|
|
|
203
204
|
|
|
204
205
|
New language support: `/wicked-garden-engineering new-generator` creates a generator for an additional language. Generators implement a documented interface; adding one requires no change to the patch core.
|
|
205
206
|
|
|
206
|
-
wicked-patch and wicked-
|
|
207
|
+
wicked-patch and the `wicked-garden-search` actions read the same wicked-estate graph. The `wicked-garden-search index` action (`wicked-estate index <path>`) refreshes the static graph and re-applies the injected-edge rules in one pass (ADR 0005).
|
|
207
208
|
|
|
208
209
|
---
|
|
209
210
|
|
|
@@ -254,9 +255,9 @@ Per-session ephemeral shared state. Not persisted across process restarts. Used
|
|
|
254
255
|
|
|
255
256
|
wicked-bus integration. Emits events in 4-segment format (`wicked.<domain>.<noun>.<past-tense-verb>`). The bus provides at-least-once delivery, append-only event records, and FTS5 search via the wicked-bus backing store.
|
|
256
257
|
|
|
257
|
-
###
|
|
258
|
+
### estate graph
|
|
258
259
|
|
|
259
|
-
Structural code graph built and maintained by wicked-
|
|
260
|
+
Structural code graph built and maintained by wicked-estate (`wicked-estate index <path>`; DB at `.wicked-estate/graph.db` by default, patch adapter DB at `.codegraph/estate.db`). Includes garden's injected archetype edges via `.wicked-estate-extractors/archetype.toml`. Consumed by wicked-patch and the search skill's actions. The `search:index` action refreshes it (ADR 0005).
|
|
260
261
|
|
|
261
262
|
---
|
|
262
263
|
|
|
@@ -304,6 +305,6 @@ Skills check for daemon availability before dispatching to it. If the daemon is
|
|
|
304
305
|
| wicked-testing | `scripts/qe/` (acceptance pipeline) | Installed peer; invoked by acceptance skills |
|
|
305
306
|
| wicked-brain | `scripts/crew/`, search/smaht skills | Brain server on port 4243; auto-starts on skill invocation |
|
|
306
307
|
| wicked-bus | `scripts/_bus.py` | Installed peer; event emit/consume |
|
|
307
|
-
|
|
|
308
|
+
| wicked-estate | `wicked-estate index` / estate MCP tools | `WICKED_ESTATE_BIN` env → PATH → `~/.local/bin`; consumed by search + patch skills |
|
|
308
309
|
|
|
309
310
|
All peers degrade gracefully on absence — except the evidence gate, which fails closed when vault or loom is unreachable. A transient peer outage never invents a pass.
|
package/.product/RAID.md
CHANGED
|
@@ -16,7 +16,7 @@ review-required: true
|
|
|
16
16
|
|----|------|-----------|--------|------------|
|
|
17
17
|
| RISK-001 | Archetype detection accuracy degrades for ambiguous or very short prompts | Medium | Medium | Detector returns confidence score; low-confidence prompts prompt for clarification. Multi-archetype output handles mixed-intent work. |
|
|
18
18
|
| RISK-002 | wicked-loom/wicked-vault peer absent → evidence gate fails closed | High (setup) | Low (expected) | Failing closed is the intended behavior. `/wg-check` validates peers at setup; setup skill guides installation. |
|
|
19
|
-
| RISK-003 |
|
|
19
|
+
| RISK-003 | wicked-estate graph not built → blast-radius/lineage/wicked-patch unavailable | High (optional) | Medium | wicked-estate is explicitly opt-in; skills degrade gracefully to text-search when the graph is absent (and flag that injected relationships are missing). |
|
|
20
20
|
| RISK-004 | Plugin not loaded in `claude -p` non-interactive mode | Medium | High | Documented mitigation: user must add `--plugin-dir` via clis.toml override (garden#994 resolution). Long-term fix: persistent worker sessions (core#13). |
|
|
21
21
|
| RISK-005 | Council seat (Antigravity/Codex) unavailable or returns garbage | Medium | Low | Council aggregation tolerates partial failures; the skill surfaces which seats failed. |
|
|
22
22
|
| RISK-006 | Hook scripts fail on Windows without correct Python fallback | Low | High | All scripts use cross-platform patterns (tempfile.gettempdir, python fallback chain). CI must include Windows runner. |
|
|
@@ -30,7 +30,7 @@ review-required: true
|
|
|
30
30
|
|----|-----------|
|
|
31
31
|
| ASS-001 | The host harness (Claude Code, Codex, Cursor, …) handles all planning, parallelism, and LLM calls. wicked-garden does not re-implement harness capabilities. |
|
|
32
32
|
| ASS-002 | Users install the required peers (`wicked-testing`/`wicked-vault`, `wicked-loom`) before using the evidence gate. The setup skill validates this. |
|
|
33
|
-
| ASS-003 | The
|
|
33
|
+
| ASS-003 | The wicked-estate graph (`wicked-estate index <path>`) is built and up-to-date when blast-radius/lineage/wicked-patch are used. |
|
|
34
34
|
| ASS-004 | Harness plugins are loaded in interactive mode; non-interactive (`claude -p`) mode requires explicit plugin-dir configuration. |
|
|
35
35
|
| ASS-005 | The `WICKED_VAULT_ACTOR` environment variable is set to a meaningful, stable actor identity for hard-gate evidence recording (not OS `$USER`). |
|
|
36
36
|
| ASS-006 | wicked-bus is optional; garden emits events fail-open when bus is unavailable. |
|
|
@@ -55,8 +55,8 @@ review-required: true
|
|
|
55
55
|
| wicked-vault ≥ 0.4.0 | Runtime | Yes (for evidence gate) | Evidence backend. `0.4.0` introduced fail-closed `attest` on weak identity. |
|
|
56
56
|
| wicked-loom | Runtime | Yes (for evidence gate) | Gate/resolve engine. Resolved via `WICKED_LOOM_BIN` → config → PATH → `npx`. |
|
|
57
57
|
| wicked-testing | Runtime | Yes (for acceptance) | The acceptance pipeline is the standard gate mechanism. |
|
|
58
|
-
| wicked-brain | Runtime | Optional | Cross-session memory +
|
|
58
|
+
| wicked-brain | Runtime | Optional | Cross-session memory + semantic search. |
|
|
59
59
|
| wicked-bus | Runtime | Optional | Event audit trail. Garden emits events fail-open without it. |
|
|
60
|
-
|
|
|
60
|
+
| wicked-estate | Runtime | Optional | Code-graph owner (ADR 0005): `wicked-estate index` + MCP tools. Powers blast-radius/lineage/hotspots/wicked-patch. Resolved via `WICKED_ESTATE_BIN` → PATH → `~/.local/bin`. |
|
|
61
61
|
| Python ≥ 3.9 | Runtime | Yes | Required for all hook scripts and CLI tools. |
|
|
62
62
|
| node.js ≥ 18 | Runtime | Yes | Required for npm peer installs and wicked-vault/loom. |
|
|
@@ -15,7 +15,7 @@ review-required: true
|
|
|
15
15
|
wicked-garden is a Claude Code plugin (v12.28.1) that fills the gaps modern coding-agent harnesses cannot close alone. The premise is direct: harnesses — Claude Code, Codex, Cursor, Aider, OpenCode, Zed/ACP, and others — already plan, parallelize, and execute well. wicked-garden does not compete with that; it adds only what a planner-executor genuinely cannot do on its own:
|
|
16
16
|
|
|
17
17
|
- **Evidence-gated done** — re-derives "done" from recorded evidence via the internal loom engine and wicked-vault; a self-asserted "tests pass" cannot lie its way green.
|
|
18
|
-
- **Relationships grep cannot see** —
|
|
18
|
+
- **Relationships grep cannot see** — the wicked-estate code graph + injected event-bus/dispatch/capability/archetype edges power blast-radius and lineage analysis (ADR 0005).
|
|
19
19
|
- **Deterministic multi-file refactor** — wicked-patch applies graph-driven renames and field additions across an entire codebase without leaving silent half-applied states.
|
|
20
20
|
- **Cross-session memory** — wicked-brain persists decisions, patterns, and gotchas across sessions; knowledge that only lives in chat history does not exist.
|
|
21
21
|
- **Real multi-model second opinions** — the jam:council skill convenes external LLM CLIs (Claude Code, Antigravity, Codex, local models) for independent evaluation; it is not the model talking to itself.
|
|
@@ -86,7 +86,7 @@ The plugin installs via `/plugin install wicked-garden` into any Claude Code ses
|
|
|
86
86
|
|
|
87
87
|
1. A developer needs to rename a domain type across a large codebase — source files, tests, migration files, configuration, and documentation.
|
|
88
88
|
2. They invoke the patch skill: `/wicked-garden-engineering rename OldName NewName`.
|
|
89
|
-
3. The `wicked-garden-engineering-patch` nested skill reads the
|
|
89
|
+
3. The `wicked-garden-engineering-patch` nested skill reads the wicked-estate graph (built by `wicked-estate index`, adapted via `scripts/engineering/patch/estate_db.py`), identifies all nodes referencing `OldName`, and computes the full set of affected files including injected edges (bus producer→consumer, dispatch links) that grep cannot see.
|
|
90
90
|
4. The skill shows the patch plan (files affected, kinds of change, risk surface). The developer approves or scopes the change.
|
|
91
91
|
5. On approval, the patch applies deterministically using the language-specific generator for each file type. Generators exist out of the box for Python, TypeScript, Java, Go, SQL, Rust, Kotlin, C#, PHP, and Ruby. A `new-generator` action lets contributors add additional languages.
|
|
92
92
|
6. The result is a complete, consistent rename across every file that references the symbol — including the relationships grep cannot see.
|
|
@@ -42,10 +42,10 @@ Three additional peers are opt-in:
|
|
|
42
42
|
| Peer | npm Package | Required Version | Role |
|
|
43
43
|
|------|-------------|-----------------|------|
|
|
44
44
|
| wicked-testing | `wicked-testing` | `^0.8.0` | Acceptance testing gate; also installs wicked-vault as a transitive dependency |
|
|
45
|
-
| wicked-brain | `wicked-brain` | `^0.18.0` | Cross-session memory, code graph,
|
|
45
|
+
| wicked-brain | `wicked-brain` | `^0.18.0` | Cross-session memory, semantic search (the code graph moved to wicked-estate, ADR 0005) |
|
|
46
46
|
| wicked-bus | `wicked-bus` | `^2.0.0` | Event audit trail, append-only event store, FTS5 search |
|
|
47
47
|
|
|
48
|
-
wicked-understanding (repo playbooks from HEAD) and
|
|
48
|
+
wicked-understanding (repo playbooks from HEAD) and wicked-estate (structural code intelligence — the code graph, ADR 0005) are additional optional integrations.
|
|
49
49
|
|
|
50
50
|
---
|
|
51
51
|
|
|
@@ -57,7 +57,7 @@ wicked-understanding (repo playbooks from HEAD) and codegraph (structural code i
|
|
|
57
57
|
|
|
58
58
|
**SessionState** (`scripts/_session.py`) — per-session ephemeral shared state. Does not persist across process restarts.
|
|
59
59
|
|
|
60
|
-
**
|
|
60
|
+
**estate graph** — wicked-estate builds and maintains the structural code graph (`wicked-estate index <path>`, DB at `.wicked-estate/graph.db` by default; the patch adapter materializes `.codegraph/estate.db`). wicked-patch consumes it for multi-file refactor operations (ADR 0005).
|
|
61
61
|
|
|
62
62
|
---
|
|
63
63
|
|
|
@@ -184,7 +184,7 @@ Compiler
|
|
|
184
184
|
→ emitted gate resolves wicked-vault via npx (no wicked-garden runtime required)
|
|
185
185
|
|
|
186
186
|
wicked-patch
|
|
187
|
-
→ reads
|
|
187
|
+
→ reads the wicked-estate graph (structural graph + injected edges, ADR 0005)
|
|
188
188
|
→ computes affected file set (including injected edges grep cannot see)
|
|
189
189
|
→ applies language-specific generator per file
|
|
190
190
|
→ produces deterministic multi-file change
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: REQ-005-dod-criteria
|
|
3
3
|
title: wicked-garden — Definition of Done Criteria
|
|
4
|
-
status:
|
|
5
|
-
version: 0
|
|
4
|
+
status: verified
|
|
5
|
+
version: 1.0
|
|
6
6
|
date: 2026-07-21
|
|
7
7
|
author: mike.parcewski@gmail.com
|
|
8
8
|
review-required: true
|
|
@@ -93,8 +93,10 @@ These criteria require independent evaluation — the evaluator is not the agent
|
|
|
93
93
|
<!-- evidence: PR #1010 (chore/garden-release-12.29.1) merged to main. plugin.json, marketplace.json, package.json, package-lock.json all bumped to 12.29.1. Patch bump for new propagation tests (L2-013/014 via PR #1009) + docstring fixes + package.json sync from 12.28.1. Prior: PR #1007 bumped plugin.json/marketplace.json to 12.29.0 (minor: sentinel event, two event renames, npm test script). (2026-07-21) -->
|
|
94
94
|
- [x] **L3-008** — `components.json` regenerated and committed with the version bump.
|
|
95
95
|
<!-- evidence: `python3 scripts/ci/sync_components.py` → "components.json: in sync" — no diff from current skill tree. components.json verified current in PR #1010. (2026-07-21) -->
|
|
96
|
-
- [
|
|
97
|
-
|
|
96
|
+
- [x] **L3-009** — Release tagged in git and published to the marketplace registry.
|
|
97
|
+
<!-- evidence: tag `v12.29.1` pushed to GitHub. GitHub release created at https://github.com/mikeparcewski/wicked-garden/releases/tag/v12.29.1. `release.yml` ran on the tag (run ID 29859516956) — pre-publish check passed (`validate.py` + `_validate_registry.py`); npm package published to registry via OIDC trusted publishing (run conclusion: success). (2026-07-21) -->
|
|
98
|
+
- [x] **L3-010** — `test.yml` CI workflow is green on the release tag (unit tests + E2E trust-spine tests + wicked-patch conformance tests all pass).
|
|
99
|
+
<!-- evidence: `test.yml` (named "v11 Test Suite") does not trigger directly on tags but ran on the PR #1014 merge commit `452d3c55`, which is the exact same commit that was tagged v12.29.1. Run ID 29858482241: `test` job conclusion=success (1m26s). 972 passed, 17 skipped. This satisfies "CI green on the release commit". (2026-07-21) -->
|
|
98
100
|
|
|
99
101
|
---
|
|
100
102
|
|
|
@@ -127,3 +129,4 @@ These criteria require independent evaluation — the evaluator is not the agent
|
|
|
127
129
|
| 0.7 | 2026-07-21 | mike.parcewski@gmail.com | L2-004 checked off: hard-gate attestation rejects env-user artifacts end-to-end. vault 0.9.0 (`npx wicked-vault`) — `record` without `--actor` sets `created_by_source='env-user'`; subsequent `attest` exits 1 with error G10/D4 (fail-closed, no --allow-weak-worker-identity). |
|
|
128
130
|
| 0.8 | 2026-07-21 | mike.parcewski@gmail.com | L2-010b, L2-011, L2-012 checked off: compiler end-to-end verified. `compile.py /tmp/l2-010b-test-repo` (package.json with `npm test`) emitted gate.py + contract.json; `python3 .wicked/gate.py` → PASS (vault resolved via npx, no garden install required). `--trigger hook` → pre-push hook created at `.git/hooks/pre-push` (runs gate.py, blocks on non-zero). `--trigger ci` → `.github/workflows/wicked-gate.yml` created (on push+PR, gate job runs gate.py). |
|
|
129
131
|
| 0.9 | 2026-07-21 | mike.parcewski@gmail.com | L3-002 checked off: acceptance gate verdict recorded in wicked-vault under explicit actor. `npx wicked-vault record ... --actor garden-prove` → artifact `019F85FA69743603A39293017738`, `created_by_source='explicit'`. `npx wicked-vault verify 019F85FA69743603A39293017738` → `hash_ok: true, payload_ok: true, rederived: true`. Verdict is re-derivable, not self-asserted. vault 0.9.0. |
|
|
132
|
+
| 1.0 | 2026-07-21 | mike.parcewski@gmail.com | L3-009 and L3-010 checked off. L3-009: `git tag v12.29.1` + `git push origin v12.29.1`; GitHub release at https://github.com/mikeparcewski/wicked-garden/releases/tag/v12.29.1; `release.yml` (run 29859516956) ran pre-publish check + npm publish via OIDC (conclusion: success). L3-010: test.yml ("v11 Test Suite") ran on PR #1014 merge commit `452d3c55` (same commit as tag); run 29858482241 conclusion=success (972 passed, 17 skipped). Status promoted to `verified` — all 42 L1/L2/L3 items checked off. |
|
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
### Changed
|
|
6
|
+
- **wicked-vault is now a direct infra peer — no longer installed "via wicked-testing".** `wicked-vault@0.4.4` is published from its own repo (mikeparcewski/wicked-vault): self-contained, zero runtime deps. The loom peer registry (`scripts/loom/manifest.py`) now installs it directly (`install_cmd` = `["npm", "install", "-g", "wicked-vault@latest"]`, was `["npx", "wicked-testing", "install"]`) and bumps the vault MAJOR.MINOR floor `0.3` → `0.4` (in lockstep with `plugin.json`). `plugin.json` `wicked_vault_version` floor `^0.4.0` → `^0.4.4`. Narrative corrected across `plugin.json` / `marketplace.json` descriptions, `docs/getting-started.md`, and `skills/core/refs/setup.md` (vault installs directly, not through wicked-testing). Fixed a hardcoded `~/Projects/wicked-vault` dev path in `scripts/compiler/phase0/wire_vault.py` so it resolves the published vault via `npx --yes wicked-vault`. This cuts the testing → garden coupling and makes the garden's evidence gate standalone.
|
|
7
|
+
|
|
5
8
|
## [12.29.1] — 2026-07-21
|
|
6
9
|
|
|
7
10
|
### Added
|
package/CONTRIBUTING.md
CHANGED
|
@@ -18,38 +18,19 @@ uv run pytest tests/ -x
|
|
|
18
18
|
|
|
19
19
|
## Escape Hatches
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
export WG_SKIP_WICKED_TESTING_CHECK=1
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
Effect:
|
|
32
|
-
- `wicked_testing_missing` is set to `false` — crew commands proceed normally.
|
|
33
|
-
- The probe subprocess (`npx wicked-testing --version`) is never invoked.
|
|
34
|
-
- A single warning is emitted to **stderr** (not to the Claude session briefing):
|
|
35
|
-
`WG_SKIP_WICKED_TESTING_CHECK is set — wicked-testing version check bypassed (offline dev mode). Do not use in production.`
|
|
36
|
-
|
|
37
|
-
**When to use**: CI pipelines where npm is unavailable; local development on
|
|
38
|
-
machines without Node.js installed; offline development sessions.
|
|
39
|
-
|
|
40
|
-
**When NOT to use**: Production environments, any session where crew QE gates
|
|
41
|
-
will actually run (the bypass skips the version check but wicked-testing agents
|
|
42
|
-
will still fail if the package is absent).
|
|
43
|
-
|
|
44
|
-
This escape hatch is a developer override. It does NOT appear in user-facing help,
|
|
45
|
-
setup wizard output, or the README. It is not a supported production configuration.
|
|
21
|
+
> **Historical note (Phase 6c):** the `WG_SKIP_WICKED_TESTING_CHECK` escape
|
|
22
|
+
> hatch and the SessionStart wicked-testing probe it bypassed were removed
|
|
23
|
+
> when wicked-testing retired — the qe domain ships in-catalog (the
|
|
24
|
+
> `wicked-garden-qe` router + specialists), so there is no peer package to
|
|
25
|
+
> probe. The acceptance gate concept now lives in wicked-crew's
|
|
26
|
+
> `/runs/:id/acceptance` route.
|
|
46
27
|
|
|
47
28
|
### WICKED_VAULT_BIN
|
|
48
29
|
|
|
49
30
|
**For offline CI and dev environments without the wicked-vault peer only.**
|
|
50
31
|
|
|
51
|
-
wicked-vault (npm, ≥0.
|
|
52
|
-
alongside wicked-loom/bus/brain
|
|
32
|
+
wicked-vault (npm, ≥0.4, install `npm i -g wicked-vault`) is a required peer
|
|
33
|
+
alongside wicked-loom/bus/brain. The garden's produces-gates re-derive
|
|
53
34
|
evidence through **wicked-loom** — `scripts/qe/vault_gate.py` shells `wicked-loom
|
|
54
35
|
gate`, which in turn shells `wicked-vault cross-check`, so the vault is the backend
|
|
55
36
|
loom re-runs the verifier against. loom resolves the vault; the concrete-install
|
|
@@ -62,8 +43,7 @@ The vault CLI is resolved in order:
|
|
|
62
43
|
4. a local `node_modules/.bin/wicked-vault`
|
|
63
44
|
5. `npx --yes wicked-vault`
|
|
64
45
|
|
|
65
|
-
Setting `WICKED_VAULT_BIN=""` (set-but-empty)
|
|
66
|
-
`WG_SKIP_WICKED_TESTING_CHECK`:
|
|
46
|
+
Setting `WICKED_VAULT_BIN=""` (set-but-empty) disables vault resolution:
|
|
67
47
|
|
|
68
48
|
```bash
|
|
69
49
|
export WICKED_VAULT_BIN=""
|
|
@@ -88,12 +68,8 @@ setup wizard output, or the README. It is not a supported production configurati
|
|
|
88
68
|
|
|
89
69
|
### Fail-open boundary
|
|
90
70
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
**CH-02 close**: `crew_command_gate()` in `scripts/crew/_prerequisites.py`
|
|
97
|
-
is fail-closed: if `session_state.extras["wicked_testing_probe"]` is absent
|
|
98
|
-
(probe exception path), the gate treats this as missing rather than passing.
|
|
99
|
-
This prevents silent unblocked crew runs when the probe fails silently.
|
|
71
|
+
SessionStart probes in `hooks/scripts/bootstrap.py` (vault / bus / loom
|
|
72
|
+
dependency checks) are fail-open: any exception is caught, logged to stderr
|
|
73
|
+
with actionable detail, and bootstrap continues. Gates that *enforce*
|
|
74
|
+
evidence are fail-closed at their own layer (`scripts/qe/vault_gate.py`),
|
|
75
|
+
never at the probe.
|
package/ETHOS.md
CHANGED
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
|
|
19
19
|
**Quality pressure must be structural, not delegated to willpower.** Reviews skipped under deadline pressure are gates that didn't exist. So enforcement lives in code, not prose: hard gates refuse to advance at runtime, produces re-derive through wicked-loom (which re-runs the verifier via the vault), and the audit trail is append-only. Good intentions don't have to survive a Friday afternoon — the gates do.
|
|
20
20
|
|
|
21
|
-
**Knowledge compounds across sessions or it isn't knowledge.** If a decision, gotcha, or pattern lives only in the current chat, it dies with the chat. Every memorable thing belongs in a tier-appropriate memory store with confidence and decay rules. wicked-
|
|
21
|
+
**Knowledge compounds across sessions or it isn't knowledge.** If a decision, gotcha, or pattern lives only in the current chat, it dies with the chat. Every memorable thing belongs in a tier-appropriate memory store with confidence and decay rules. The mem domain over wicked-estate is the difference between learning once and learning every time.
|
|
22
22
|
|
|
23
23
|
**Native primitives over bespoke abstractions.** Claude Code's `TaskCreate`, `Skill`, `Agent`, and hooks are the surface. We extend them — we don't replace them. A task with metadata is more durable than a custom kanban; a skill with a frontmatter description is more discoverable than a registry call. The plugin is **skills-only**: user entry points are consolidated per-domain skills, and the former agents are fork-context worker skills — one surface, not three.
|
|
24
24
|
|
|
25
|
-
**The gate is required; the rest is a toolkit.** wicked-garden's one non-negotiable is the evidence gate, so it stands on two required peers: **wicked-vault** (the backend that makes "done" re-derivable) and **wicked-loom** (the engine that re-runs the verifier). The core skill's `setup` action (`/wicked-garden-core setup`) blocks without them — a gate you can fake is worse than no gate. The other siblings are **opt-in layers**, not prerequisites: **wicked-
|
|
25
|
+
**The gate is required; the rest is a toolkit.** wicked-garden's one non-negotiable is the evidence gate, so it stands on two required peers: **wicked-vault** (the backend that makes "done" re-derivable) and **wicked-loom** (the engine that re-runs the verifier). The core skill's `setup` action (`/wicked-garden-core setup`) blocks without them — a gate you can fake is worse than no gate. The other siblings are **opt-in layers**, not prerequisites: **wicked-estate** (cross-session memory + knowledge — the *what*), **wicked-understanding** (repo playbooks — the *how*), **wicked-bus** (the audit trail). Acceptance testing needs no sibling at all — the `qe` domain ships in-catalog. Install the ones you'll use; the toolkit works without the others — breadth you adopt incrementally, not a five-thing prerequisite wall. And required-at-install is not brittle-at-runtime: a transient outage degrades gracefully and never bricks a session — but a gate never pretends missing evidence is a pass; that path **fails closed**. We depend on the gate; we don't crash with the layers.
|
|
26
26
|
|
|
27
27
|
**Cross-platform is non-negotiable.** macOS, Linux, Windows (Git Bash, WSL, native). Bare `python3` doesn't exist on Windows; bare `/tmp` doesn't exist on Windows; the shim and `${TMPDIR:-/tmp}` exist for a reason. If a contributor adds shell that breaks on Windows, the contribution is incomplete.
|
|
28
28
|
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
|
|
69
69
|
**Not a single-language toolkit.** Cross-platform stdlib-only Python for the plumbing. wicked-patch's generators support Python, TypeScript, Java, Go, SQL, Rust, Kotlin, C#, PHP, Ruby out of the box; new languages plug in via the generator interface.
|
|
70
70
|
|
|
71
|
-
**Not closed.** The siblings (vault + loom required for the gate;
|
|
71
|
+
**Not closed.** The siblings (vault + loom required for the gate; estate, understanding, bus opt-in) are peers, not forks — and the compiler emits a vault-backed harness any repo can adopt **without installing wicked-garden at all**. The plugin's relationship to other tools is "stand on, and hand off," not "absorb."
|
|
72
72
|
|
|
73
73
|
---
|
|
74
74
|
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
## The premise
|
|
19
19
|
|
|
20
|
-
Coding agents grew up. Claude Code, Codex, Cursor, Antigravity, Aider, OpenCode,
|
|
20
|
+
Coding agents grew up. Claude Code, Codex, Cursor, Antigravity, Aider, OpenCode, Zed/ACP — they're not autocomplete anymore. They plan. They parallelize. And each has *strong opinions* about how it likes to work.
|
|
21
21
|
|
|
22
22
|
Most plugins try to boss them around — re-implement planning, impose a workflow, make the agent dance. You end up fighting your own tools.
|
|
23
23
|
|
|
@@ -30,9 +30,9 @@ Most plugins try to boss them around — re-implement planning, impose a workflo
|
|
|
30
30
|
| says *"tests pass"* (sometimes it's lying) | re-runs the proof. False "done" → **rejected.** Missing backend → **fails closed.** Never a vacuous green. |
|
|
31
31
|
| greps and reads — blind to string-wired links | sees the **injected edges** (event→consumer, command→agent, agent→capability) grep never will → `blast-radius`, `lineage` |
|
|
32
32
|
| refactors on a hope and a prayer | renames across files as a **graph operation**, not find-replace roulette → wicked-patch |
|
|
33
|
-
| forgets everything at `exit` | remembers what session 1 decided when you're in session 47 → wicked-
|
|
33
|
+
| forgets everything at `exit` | remembers what session 1 decided when you're in session 47 → the mem domain over wicked-estate |
|
|
34
34
|
| re-derives *how to work in this repo* every task — which file owns the bug, the wiring step, the test command | loads the repo's own playbooks (`fix-bug`/`add-feature`/`verify`…), generated from HEAD → wicked-understanding |
|
|
35
|
-
| asks *itself* for a second opinion | convenes a **real multi-model panel** (
|
|
35
|
+
| asks *itself* for a second opinion | convenes a **real multi-model panel** (Antigravity / Codex / …) → the jam skill's `council` action |
|
|
36
36
|
| re-derives WCAG/CWE/SOC2 from memory every time | loads the rubric on demand, ships it to any repo |
|
|
37
37
|
| grades its own homework | author ≠ executor ≠ reviewer → evidence-gated testing |
|
|
38
38
|
|
|
@@ -61,7 +61,7 @@ No universal pipeline to obey. A hook reads each prompt's *shape* and that decid
|
|
|
61
61
|
**One required peer, the rest opt-in.** The evidence gate is the floor we won't fake, so it needs one external peer — setup blocks without it:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
|
|
64
|
+
npm i -g wicked-vault # wicked-vault (≥ 0.4.0), the honest-evidence backend the gate re-derives against
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
> The gate/resolve engine (formerly the separate `wicked-loom` package) is now **absorbed in-package** as of v12.27.0 (`scripts/loom/`) — nothing extra to install. The gate re-hashes recorded evidence and re-runs its verifier through that engine; a false "tests pass" is **rejected**, a missing backend **fails closed**.
|
|
@@ -69,12 +69,14 @@ npx wicked-testing install # installs wicked-vault (≥ 0.4.0), the honest-e
|
|
|
69
69
|
The rest of the kit is **opt-in layers** — add what you want, skip the rest and the toolkit still works:
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
# wicked-estate — the memory/knowledge layer (cross-session recall + cited search, the "what"):
|
|
73
|
+
# install the `wicked-estate` + `wicked-estate-mcp` binaries onto PATH or ~/.local/bin
|
|
74
74
|
/plugin install wicked-bus # the audit-trail layer (fire-and-forget; fail-open without it)
|
|
75
75
|
```
|
|
76
76
|
|
|
77
|
-
|
|
77
|
+
> Evidence-gated acceptance testing (author ≠ executor ≠ reviewer) needs no extra install — it ships **in-catalog** as the `qe` domain (`wicked-garden-qe`).
|
|
78
|
+
|
|
79
|
+
Optional, lights up the code graph: **wicked-estate** (single binary; `wicked-estate index <path>` + the estate MCP server) → powers `blast-radius` / `lineage` / `hotspots` / wicked-patch (ADR 0005 — no external codegraph engine, no Node version floor). Details: [`docs/required-peers.md`](docs/required-peers.md).
|
|
78
80
|
|
|
79
81
|
## Try it
|
|
80
82
|
|
|
@@ -94,6 +96,23 @@ Optional, lights up the code graph: `npx @colbymchenry/codegraph` (Node ≥ 22.5
|
|
|
94
96
|
|
|
95
97
|
---
|
|
96
98
|
|
|
99
|
+
## Build on it
|
|
100
|
+
|
|
101
|
+
The catalog is open: ship your own domain pack — a `wicked-pack.json`
|
|
102
|
+
manifest plus `{vendor}-{domain}` router / `{vendor}-{domain}-{role}` fork
|
|
103
|
+
workers — and the runtime discovers it without a garden PR: catalog listing,
|
|
104
|
+
crew specialist routing, peer-floor probing, same evidence discipline.
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npx wicked-garden pack check ./acme-seo-pack # the shipped conformance gate
|
|
108
|
+
npx wicked-installer pack add acme-seo-pack # acquire + validate + install + register
|
|
109
|
+
npx wicked-garden pack list # what the runtime sees
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Full author guide: [`docs/extending.md`](docs/extending.md).
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
97
116
|
## Principles
|
|
98
117
|
|
|
99
118
|
- **Don't fight the harness.** Fill the gaps; never re-implement what it already does well.
|
|
@@ -104,11 +123,11 @@ Optional, lights up the code graph: `npx @colbymchenry/codegraph` (Node ≥ 22.5
|
|
|
104
123
|
|
|
105
124
|
## More
|
|
106
125
|
|
|
107
|
-
[`ETHOS.md`](ETHOS.md) · [`docs/getting-started.md`](docs/getting-started.md) · [`docs/domains.md`](docs/domains.md) · [`docs/required-peers.md`](docs/required-peers.md) · [`docs/compiler.md`](docs/compiler.md)
|
|
126
|
+
[`ETHOS.md`](ETHOS.md) · [`docs/getting-started.md`](docs/getting-started.md) · [`docs/domains.md`](docs/domains.md) · [`docs/required-peers.md`](docs/required-peers.md) · [`docs/compiler.md`](docs/compiler.md) · [`docs/extending.md`](docs/extending.md)
|
|
108
127
|
|
|
109
128
|
## Requirements
|
|
110
129
|
|
|
111
|
-
A coding-agent harness ([Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) ≥ 1.0 for the plugin surface; the peers + compiled gate are harness-agnostic) · Python 3.9+ (stdlib-only hooks) · Node + `npx` · the gate's one required peer (`wicked-vault` ≥ 0.4.0) plus opt-in layers (`wicked-
|
|
130
|
+
A coding-agent harness ([Claude Code](https://docs.anthropic.com/en/docs/claude-code/overview) ≥ 1.0 for the plugin surface; the peers + compiled gate are harness-agnostic) · Python 3.9+ (stdlib-only hooks) · Node + `npx` · the gate's one required peer (`wicked-vault` ≥ 0.4.0) plus opt-in layers (`wicked-estate` · `wicked-bus`).
|
|
112
131
|
|
|
113
132
|
## License
|
|
114
133
|
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
wicked.<domain>.<noun>.<past-tense-verb>
|
|
10
10
|
```
|
|
11
11
|
|
|
12
|
-
Four segments (wicked-bus SPEC grammar). Always starts with `wicked.`. Domain = the producing plugin's short name (`garden` for garden-owned events; `crew` for the shared phase lifecycle
|
|
12
|
+
Four segments (wicked-bus SPEC grammar). Always starts with `wicked.`. Domain = the producing plugin's short name (`garden` for garden-owned events; `crew` for the shared phase lifecycle). Noun = the thing that changed. Verb = past tense.
|
|
13
13
|
`domain` field is always `wicked-garden`. `subdomain` identifies the functional area.
|
|
14
14
|
|
|
15
15
|
## Payload Tiers
|
|
@@ -89,13 +89,13 @@ These fields are **stripped automatically** by `_bus.py` before emission:
|
|
|
89
89
|
|
|
90
90
|
| Event Type | Subdomain | Description |
|
|
91
91
|
|------------|-----------|-------------|
|
|
92
|
-
| `wicked.garden.fact.extracted` | `facts` | Structured fact extracted from conversation (consumed by
|
|
92
|
+
| `wicked.garden.fact.extracted` | `facts` | Structured fact extracted from conversation (consumed by the garden-run auto-memorize drain -> estate memory) |
|
|
93
93
|
|
|
94
94
|
### Gate
|
|
95
95
|
|
|
96
96
|
| Event Type | Subdomain | Description |
|
|
97
97
|
|------------|-----------|-------------|
|
|
98
|
-
| `wicked.test.verdict.created` | `gate.verdict` |
|
|
98
|
+
| `wicked.test.verdict.created` | `gate.verdict` | qe reviewer recorded a gate verdict (PASS/FAIL/N-A/SKIP) |
|
|
99
99
|
|
|
100
100
|
### Jam
|
|
101
101
|
|
|
@@ -125,6 +125,8 @@ These fields are **stripped automatically** by `_bus.py` before emission:
|
|
|
125
125
|
|------------|-----------|-------------|
|
|
126
126
|
| `wicked.garden.coverage.changed` | `qe.coverage` | Test coverage metrics changed |
|
|
127
127
|
| `wicked.garden.scenario.run` | `qe.scenario` | Test scenario executed with pass/fail result |
|
|
128
|
+
| `wicked.qe.release.assessed` | `qe.release` | Release readiness verdict assessed against ledger evidence window |
|
|
129
|
+
| `wicked.qe.scenario.authored` | `qe.scenario` | Scenario file authored from a production incident; queues a human review task |
|
|
128
130
|
|
|
129
131
|
### Sentinel
|
|
130
132
|
|
package/docs/README.md
CHANGED
|
@@ -13,15 +13,17 @@ Work in wicked-garden is organized around **9 work-shape archetypes** — not a
|
|
|
13
13
|
| [Domains](domains.md) | The 10 domain skills archetypes invoke for expertise |
|
|
14
14
|
| [Required Peers](required-peers.md) | The five required peer plugins and the install/runtime stance |
|
|
15
15
|
| [The Compiler](compiler.md) | `/wicked-garden-prove compile` — emit a self-contained vault-backed gate into any repo |
|
|
16
|
-
| [
|
|
16
|
+
| [Extending the Catalog](extending.md) | Ship a third-party pack — `{vendor}-{domain}-{role}` skills, the `wicked-pack.json` manifest, the shipped conformance gate, install + crew routing |
|
|
17
|
+
| [Brain Chunk Format](brain-chunk-format.md) | Historical: how content was chunked for the retired wicked-brain index (the migrated chunks in wicked-estate keep this shape) |
|
|
17
18
|
|
|
18
19
|
## Quick Links
|
|
19
20
|
|
|
20
21
|
- **New to wicked-garden?** Start with [Getting Started](getting-started.md).
|
|
21
22
|
- **Want to understand how work is shaped?** Read [Archetypes](v11/archetypes.md).
|
|
22
|
-
- **Setting up?** The [Required Peers](required-peers.md) — wicked-
|
|
23
|
+
- **Setting up?** The [Required Peers](required-peers.md) — wicked-vault, wicked-estate, wicked-bus — are verified by `/wicked-garden-core setup` (the loom engine ships in-package; the qe domain is in-catalog).
|
|
23
24
|
- **Looking for domain expertise or a specific action?** Browse [Domains](domains.md).
|
|
24
25
|
- **Want a build gate that runs without wicked-garden present?** See [The Compiler](compiler.md).
|
|
26
|
+
- **Shipping your own domain pack?** Follow [Extending the Catalog](extending.md) — `npx wicked-garden pack check` validates it against the same rules the built-ins follow.
|
|
25
27
|
|
|
26
28
|
## Need Help?
|
|
27
29
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# ADR 0003 — Two required peers (the gate), three opt-in layers
|
|
2
2
|
|
|
3
|
-
- **Status:** Accepted — executed.
|
|
3
|
+
- **Status:** Accepted — executed. *(Historical note, Phase 6c: `wicked-testing` has since retired as a peer — its skills ship in-catalog as the `qe` domain and the acceptance gate lives in wicked-crew. The opt-in-layer reasoning below is preserved as written.)*
|
|
4
4
|
- **Date:** 2026-06-09
|
|
5
5
|
- **Supersedes:** the v12 stance in `docs/required-peers.md` ("five peers are required infrastructure").
|
|
6
6
|
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# ADR 0004 — Move the code-relationship graph to wicked-brain (inverts ADR 0001's homing)
|
|
2
2
|
|
|
3
|
-
- **Status:**
|
|
3
|
+
- **Status:** Superseded by [ADR 0005](0005-code-graph-re-homes-to-wicked-estate.md) (2026-08-11) — the
|
|
4
|
+
graph's **home moved from wicked-brain to wicked-estate** (which independently built a more capable
|
|
5
|
+
graph: 75-language tree-sitter extractor, `ExtraEdgeExtractor` TOML injected edges, cross-repo
|
|
6
|
+
`XedgeStore`, and `BlastRadius`/`Lineage`/`TraverseGraph` MCP tools), and the brain graph
|
|
7
|
+
implementation this ADR described was stripped from the wicked-brain tree. The injected-edge idea
|
|
8
|
+
and the knowing/doing split stand; the home and the codegraph engine choice do not. Originally: Accepted.
|
|
4
9
|
- **Date:** 2026-06-10
|
|
5
10
|
- **Supersedes:** the *homing* decision of [ADR 0001](0001-code-relationship-graph-engine.md) (graph lives in garden). **Keeps** ADR 0001's engine choice (codegraph) and the injected-edge concept.
|
|
6
11
|
- **Context owners:** wicked-garden + wicked-brain
|