wicked-garden 12.37.1 → 12.37.2

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.
Files changed (65) hide show
  1. package/.claude-plugin/components.json +3 -7
  2. package/.claude-plugin/marketplace.json +1 -1
  3. package/.claude-plugin/plugin.json +1 -1
  4. package/CHANGELOG.md +12 -1
  5. package/docs/domains.md +1 -1
  6. package/docs/outgov-per-turn.md +1 -1
  7. package/package.json +1 -1
  8. package/scripts/platform/guard_pipeline.py +1 -1
  9. package/skills/agentic-safety-reviewer/SKILL.md +0 -1
  10. package/skills/core/SKILL.md +2 -0
  11. package/skills/{runtime-exec/SKILL.md → core/refs/runtime.md} +7 -19
  12. package/skills/data-engineer/SKILL.md +0 -1
  13. package/skills/engineering/SKILL.md +3 -0
  14. package/skills/{engineering-conformance-reviewer/SKILL.md → engineering/refs/conformance.md} +12 -27
  15. package/skills/jam/SKILL.md +16 -23
  16. package/skills/jam/refs/council-verdict.md +1 -1
  17. package/skills/jam/refs/revisit.md +3 -16
  18. package/skills/jam-brainstorm-facilitator/SKILL.md +24 -43
  19. package/skills/jam-council/SKILL.md +31 -39
  20. package/skills/mem-capture/SKILL.md +2 -6
  21. package/skills/mem-ingest/SKILL.md +2 -6
  22. package/skills/persona/SKILL.md +10 -8
  23. package/skills/persona/refs/as.md +117 -12
  24. package/skills/platform-security-engineer/SKILL.md +0 -2
  25. package/skills/qe/SKILL.md +31 -31
  26. package/skills/qe/refs/accept.md +24 -32
  27. package/skills/qe/refs/author.md +5 -9
  28. package/skills/qe/refs/campaign-grading.md +1 -1
  29. package/skills/qe/refs/campaign.md +4 -7
  30. package/skills/qe/refs/execute.md +7 -11
  31. package/skills/qe/refs/insight.md +5 -9
  32. package/skills/qe/refs/integration.md +1 -1
  33. package/skills/qe/refs/plan.md +9 -18
  34. package/skills/qe/refs/review.md +11 -17
  35. package/skills/qe-a11y-test-engineer/SKILL.md +2 -17
  36. package/skills/qe-acceptance-test-executor/SKILL.md +5 -16
  37. package/skills/qe-acceptance-test-reviewer/SKILL.md +3 -10
  38. package/skills/qe-acceptance-test-writer/SKILL.md +3 -14
  39. package/skills/qe-ai-feature-test-engineer/SKILL.md +5 -30
  40. package/skills/qe-chaos-test-engineer/SKILL.md +5 -20
  41. package/skills/qe-code-analyzer/SKILL.md +2 -9
  42. package/skills/qe-compliance-test-engineer/SKILL.md +5 -21
  43. package/skills/qe-contract-testing-engineer/SKILL.md +2 -9
  44. package/skills/qe-coverage-archaeologist/SKILL.md +2 -9
  45. package/skills/qe-data-quality-tester/SKILL.md +2 -9
  46. package/skills/qe-e2e-orchestrator/SKILL.md +2 -9
  47. package/skills/qe-exploratory-tester/SKILL.md +2 -9
  48. package/skills/qe-flaky-test-hunter/SKILL.md +5 -10
  49. package/skills/qe-fuzz-property-engineer/SKILL.md +2 -9
  50. package/skills/qe-iac-test-engineer/SKILL.md +5 -10
  51. package/skills/qe-incident-to-scenario-synthesizer/SKILL.md +5 -20
  52. package/skills/qe-integration-test-engineer/SKILL.md +2 -9
  53. package/skills/qe-load-performance-engineer/SKILL.md +2 -9
  54. package/skills/qe-localization-test-engineer/SKILL.md +2 -9
  55. package/skills/smaht/SKILL.md +11 -17
  56. package/skills/smaht/discovery/SKILL.md +6 -7
  57. package/skills/smaht/intent/SKILL.md +4 -3
  58. package/skills/smaht/propose-skills/SKILL.md +6 -5
  59. package/skills/smaht/refs/briefing.md +1 -3
  60. package/skills/integration-discovery/SKILL.md +0 -170
  61. package/skills/integration-discovery/refs/capabilities.md +0 -282
  62. package/skills/integration-discovery/refs/cli-detection.md +0 -297
  63. package/skills/integration-discovery/refs/discovery-sources.md +0 -233
  64. package/skills/integration-discovery/refs/task-patterns.md +0 -206
  65. package/skills/persona-agent/SKILL.md +0 -122
@@ -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": 144,
6
- "fork_skills": 73,
5
+ "skills": 140,
6
+ "fork_skills": 69,
7
7
  "hooks": 13,
8
8
  "specialists": 7
9
9
  },
@@ -28,12 +28,10 @@
28
28
  "draft": ["draft"],
29
29
  "engineering": ["architecture", "backend", "debugging", "docs", "engineering", "frontend", "integration", "large-scale-migration", "patch", "system-design", "unit-test-quality"],
30
30
  "engineering-api-documentarian": ["engineering-api-documentarian"],
31
- "engineering-conformance-reviewer": ["engineering-conformance-reviewer"],
32
31
  "engineering-migration-engineer": ["engineering-migration-engineer"],
33
32
  "engineering-solution-architect": ["engineering-solution-architect"],
34
33
  "governed-worker": ["governed-worker"],
35
34
  "ground": ["ground"],
36
- "integration-discovery": ["integration-discovery"],
37
35
  "jam": ["jam"],
38
36
  "jam-brainstorm-facilitator": ["jam-brainstorm-facilitator"],
39
37
  "jam-council": ["jam-council"],
@@ -41,7 +39,6 @@
41
39
  "mem-capture": ["mem-capture"],
42
40
  "mem-ingest": ["mem-ingest"],
43
41
  "persona": ["persona"],
44
- "persona-agent": ["persona-agent"],
45
42
  "platform": ["audit", "compliance", "errors", "gate-benchmark-rebaseline", "gh-cli", "github-actions", "gitlab-ci", "glab-cli", "health", "observability", "peer-health", "platform", "prereq-doctor"],
46
43
  "platform-compliance-officer": ["platform-compliance-officer"],
47
44
  "platform-privacy-expert": ["platform-privacy-expert"],
@@ -95,7 +92,6 @@
95
92
  "qe-ui-component-test-engineer": ["qe-ui-component-test-engineer"],
96
93
  "qe-visual-regression-engineer": ["qe-visual-regression-engineer"],
97
94
  "repo-learn": ["repo-learn"],
98
- "runtime-exec": ["runtime-exec"],
99
95
  "search": ["codebase-narrator", "search"],
100
96
  "smaht": ["discovery", "intent", "propose-skills", "smaht"],
101
97
  "swarm": ["swarm"],
@@ -103,7 +99,7 @@
103
99
  "workflow": ["workflow"],
104
100
  "worktrees": ["worktrees"]
105
101
  },
106
- "fork_skills": ["wicked-garden-agentic-architect", "wicked-garden-agentic-performance-analyst", "wicked-garden-agentic-safety-reviewer", "wicked-garden-archetype", "wicked-garden-classify", "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-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-smaht", "wicked-garden-swarm", "wicked-garden-wickedizer", "wicked-garden-workflow", "wicked-garden-worktrees"],
102
+ "fork_skills": ["wicked-garden-agentic-architect", "wicked-garden-agentic-performance-analyst", "wicked-garden-agentic-safety-reviewer", "wicked-garden-archetype", "wicked-garden-classify", "wicked-garden-data-engineer", "wicked-garden-domain-coverage", "wicked-garden-domain-extractor", "wicked-garden-domain-modeler", "wicked-garden-engineering-api-documentarian", "wicked-garden-engineering-migration-engineer", "wicked-garden-engineering-solution-architect", "wicked-garden-ground", "wicked-garden-jam-brainstorm-facilitator", "wicked-garden-jam-council", "wicked-garden-mem-capture", "wicked-garden-mem-ingest", "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-swarm", "wicked-garden-wickedizer", "wicked-garden-workflow", "wicked-garden-worktrees"],
107
103
  "hooks": ["SessionStart", "UserPromptSubmit", "PreToolUse", "PostToolUse", "PostToolUseFailure", "TaskCompleted", "SubagentStart", "SubagentStop", "PermissionRequest", "Notification", "PreCompact", "Stop", "SessionEnd"],
108
104
  "specialists": [
109
105
  {
@@ -1 +1 @@
1
- {"name": "wicked-garden", "owner": {"name": "Mike Parcewski"}, "plugins": [{"name": "wicked-garden", "source": "./", "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; estate/bus are opt-in layers (wicked-testing and wicked-brain are retired \u2014 QE ships in-catalog as the qe domain, memory lives in wicked-estate).", "version": "12.37.1"}], "version": "12.37.1"}
1
+ {"name": "wicked-garden", "owner": {"name": "Mike Parcewski"}, "plugins": [{"name": "wicked-garden", "source": "./", "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; estate/bus are opt-in layers (wicked-testing and wicked-brain are retired \u2014 QE ships in-catalog as the qe domain, memory lives in wicked-estate).", "version": "12.37.2"}], "version": "12.37.2"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wicked-garden",
3
- "version": "12.37.1",
3
+ "version": "12.37.2",
4
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 \u2014 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 \u2014 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 \u2014 steering, not a pipeline \u2014 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 \u2014 install what you'll use, the toolkit works without the rest.",
5
5
  "wicked_vault_version": "^0.5.0",
6
6
  "wicked_ledger_version": "^0.4.0",
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [12.37.2] — 2026-09-15
6
+
7
+ ### Changed
8
+ - **Hotfix (frontmatter-drop class; ship-blocker for 12.37.1 → cut as 12.37.2): three translated skills had a dropped `tool-capabilities:` key that left its value line(s) ORPHANED in the frontmatter (fixall L6-hotfix).** `skills/data-engineer/SKILL.md` (batch B8) left ` - data-query` after the key was removed, which made the frontmatter INVALID YAML (`expected <block end>, but found '<block sequence start>'`) — `yaml.safe_load` refused it, blocking the ENTIRE skills publish (rig can't republish → `baseSkillPolicy=require` refuses every launch). Two more of the same class were absorbed into a `|` block description (valid YAML, corrupt content, so `yaml.safe_load` did not catch them): `skills/agentic-safety-reviewer/SKILL.md` (B8, ` - security-scanning`) and `skills/platform-security-engineer/SKILL.md` (B6, ` - security-scanning` + ` - version-control`). All orphaned value lines are deleted (the `tool-capabilities` key was intentionally dropped in those batches; its values go with it). **Systemic guard:** `scripts/ci/validate.py` now runs a strict STRUCTURAL frontmatter check on every SKILL.md (stdlib only — garden CI runs the validate/test legs with a bare interpreter, no PyYAML, so it cannot import the publish's `yaml.safe_load`; the check reproduces the one failure mode that matters) and FAILS on an orphaned value line under a scalar key (the syntax break that stopped 12.37.1's publish) AND on a bare-token list value absorbed into a `|` block scalar (the silent subclass); `tests/test_validate_frontmatter.py` carries the adversarial rows (an orphan after a quoted scalar, an orphan absorbed into a `|` block, a nested-map orphan, and missing frontmatter all fail; clean frontmatter, a `|` block, `mandates:` lists, and legitimate prose bullets pass) plus a live-tree assertion. Root cause: the cross-CLI batches' frontmatter rewriter dropped a key's line without its indented value lines, and garden CI read frontmatter with a lenient regex, not a strict YAML parse — so it slipped through fifteen batches. A full repo sweep of all 140 SKILL.md confirms these three were the only affected files.
9
+ - **Wave-2 catalog batch B9 (DES-L6 B11): the `jam` and `persona` domains — two routers, `jam-brainstorm-facilitator` / `jam-council`, three refs — are cross-CLI, and the `persona-agent` worker is RETIRED into `persona/refs/as.md` (fixall L6-B9; D-21 — BC-37 / BC-39).** The routers carry the closed key set with `metadata.role: router` (`jam` phases `clarify,design`; `persona` phases `*`): `jam`'s `brainstorm` and `council` sub-actions hand off to the two worker skills through Hand-off paragraphs carrying the exact asks (the routing table says "Hand-off →", the Workers section drops "forked", council seats are "separate-worker seats"); `persona`'s Source Priority names "the harness's plugin cache" instead of a `.claude/plugins` path. The two jam workers are `role: worker` (Claude hint keys, fork sentences and the pre-v12.25 `Task(subagent_type=…)` compat tails dropped — reached by name through a Hand-off; "dispatched by" → "handed off by" in their descriptions); the facilitator's `TaskCreate(` / `TaskUpdate(` session tracking reads as "track the session in the harness's task list where it has one, else your working notes" with the subject, metadata and appends named, its three `Skill(skill="wicked-garden-mem", …)` recall/store calls are Hand-off paragraphs and its Step 1b names the `wicked-garden-search` skill; the council's "subagent tier" is "the separate-worker tier" (its seat-independence Hand-off was already cross-CLI) and its outcome store is a Hand-off paragraph. `persona-agent` (a 122-line fork worker whose whole job was to run the profile the `as` action assembled) is retired: `persona/refs/as.md` Step 5 "Embody the persona" carries the profile as a ```markdown template and a new "Embodying the persona" section carries the worker's behavioral guidelines, archetype patterns, response format and task-type adaptations verbatim (harness-neutral tool wording); `skills/persona-agent/` is deleted, `components.json` regenerated (`fork_skills` 73 → 72, skills 144 → 143), `docs/domains.md` says so. `jam/refs/revisit.md`'s two mem calls are Hand-off paragraphs; `council-verdict.md` says "worker returns". `tests/test_skill_naming.py` loses the ">= 3 skills keep a `subagent_type` compat key" floor — the batches drop the key on purpose (BC-37), so the drop is not silent; the well-formedness test still runs over the two remaining declarers (`mem-capture`, `mem-ingest`) until B10 retires them. Kept on purpose: the `{topic-slug}` / `{persona}` template placeholders, description trigger phrases → the B18 colon-form token. `tests/cross_cli_baseline.json` shrinks by exactly this batch (20 pairs across 7 files → 119; 0 stale; nothing added — the deleted `persona-agent/SKILL.md` entry goes with the file). BM-style check for the wave-2 P2b/BM re-run: a non-claude seat receives both routers and the two jam workers in `skillsSnapshotHanded` with 0 `seatConstraint`, a jam `brainstorm` unit on that seat hands off to `wicked-garden-jam-brainstorm-facilitator` by name, and a persona `as` unit embodies the persona inline with no `Skill(` in its output.
10
+ - **Wave-2 catalog batch B10 (DES-L6 B12): the fold/retire batch — `integration-discovery` RETIRED, `runtime-exec` folded into `core/refs/runtime.md`, `engineering-conformance-reviewer` folded into `engineering/refs/conformance.md`, and `smaht` (+ `discovery` / `intent` / `propose-skills` / `refs/briefing.md`), `mem-capture` and `mem-ingest` are cross-CLI (fixall L6-B10; D-21 — BC-37 / BC-39).** `wicked-garden-integration-discovery` (a `user-invocable: false`, `status: experimental` capability router nothing dispatched — the `integration-discovery` strings in `_domain_store.py` / `_session.py` / `domain_adapter.py` name the routing mechanism, not the skill) is deleted with its four refs. `wicked-garden-runtime-exec`'s body moves verbatim into `skills/core/refs/runtime.md` minus its frontmatter, H1 and the shared launcher paragraph `core/SKILL.md` already carries, and the router's Runtime section points at it; `wicked-garden-engineering-conformance-reviewer`'s body moves verbatim into `skills/engineering/refs/conformance.md`, a pointer lands at the end of the router's Knowledge modules section, `scripts/platform/guard_pipeline.py` stops telling the operator to invoke a skill that no longer exists, and `docs/outgov-per-turn.md` names the ref. The `smaht` router carries the closed key set with `metadata.role: router` (phases `*`; description 1042 → under 1024 chars — the alias line drops and `wicked-garden:search` reads as the `wicked-garden-search` skill), loses its fork sentence and the dispatch-fallback sentence, and its Quick Reference's two `Skill(skill="wicked-garden-mem", …)` calls become one Hand-off paragraph (the symbol-lookup comment now says "through the estate read-only shim", matching the grounding doctrine that landed in 12.37.1); `discovery` / `intent` / `propose-skills` are `role: module` (discovery's "Fork-worker dispatches (`Skill(skill=…)`, or the legacy `subagent_type=…` compat form)" detection bullets describe Hand-off paragraphs and worker names, propose-skills reads "the harness's session transcripts"), and `refs/briefing.md`'s fallback memory call is a Hand-off paragraph. `mem-capture` and `mem-ingest` get the closed key set with `metadata.role: worker` — bodies untouched. **Scope deviation from DES B12, disclosed:** the DES says those two workers and `smaht` RETIRE "— `mem/SKILL.md` untouched", but both clauses cannot hold — the L4-owned `skills/mem/SKILL.md` dispatches `wicked-garden-mem-ingest` and `wicked-garden-mem-capture` by name at four sites (and `mem/refs/scopes.md` at one), so deleting them dangles five identifiers in files this lane does not own and `unresolved-skill-name` fails loud on exactly that (B9's guard); `wicked-garden-smaht-intent` is a live user-override path in `hooks/scripts/prompt_submit.py` and `scripts/_session.py`, `core/SKILL.md` lists smaht in two routing tables, and `docs/domains.md` counts it among the 9 domains. Both are translated here and their retirement is owed as a follow-up that carries the L4 router edit (mem) and the hook/docs changes (smaht) in the same PR. `tests/cross_cli_baseline.json` shrinks by exactly this batch (26 pairs across 10 files → 93; 0 stale; nothing added — the deleted files' entries go with them); `.claude-plugin/components.json` regenerated (`fork_skills` 72 → 69 — `engineering-conformance-reviewer` and `integration-discovery` leave with their deleted files and `smaht` leaves the set because it is now `metadata.role: router` instead of a `context: fork`-inferred worker; `runtime-exec` was already a module); `scripts/wg/_relevance_bulkadd.py` drops the two rows for the deleted dirs and the `portability_rules.garden.json` corpus entry pinned to the retired `runtime-exec` file is re-pointed at its new home, so no corpus row names a deleted file. BM-style check for the wave-2 P2b/BM re-run: a non-claude seat receives `wicked-garden-smaht`, `wicked-garden-mem-capture` and `wicked-garden-mem-ingest` in `skillsSnapshotHanded` with 0 `seatConstraint` and none of the three retired names, and a smaht `briefing` unit on that seat hands off to `wicked-garden-mem` by name with no `Skill(` in its output.
11
+ - **Wave-2 catalog batch B11 (DES-L6 B13): the `qe` router and its refs go cross-CLI (fixall L6-B11; D-21 — BC-37 / BC-39; C7).** The router carries the closed key set with `metadata.role: router` (phases `*`; description trimmed 1339 → 1012 chars), its "Fork workers (dispatch with the Skill tool)" section is "Workers", and the dispatch-guard names the hand-off instead of "the Skill call". Nine dispatch fences across `accept` (writer / executor / reviewer), `author`, `execute`, `insight`, `plan`, `review` become Hand-off paragraphs that keep each worker's full arg brief verbatim in a ```markdown block; the "Every id … invoke it with the Skill tool" intros read "reach it by name through a Hand-off", the shared "Dispatch uses the Skill tool on Claude Code …" fallback sentences are dropped, the `Skill(skill="wicked-garden-mem")` / `-search` recalls in `accept` / `campaign` are Hand-off paragraphs or plain skill references, and the "one `Skill(...)` call each" dispatch prose in `execute` / `plan` / `campaign` reads "one hand-off". Two arg-body tool nouns ("Read the scenario via the Read tool", "Use the Read tool to open") say "with your file reader"; the reviewer-isolation enforcement tables in `accept` / `campaign-grading` are keyed by capability ("a host that enforces `allowed-tools`") instead of naming "Claude Code"; and `integration.md`'s retained-for-compat `subagent_type` wire-field note is marked historical. **C7 (DES B13):** the router's preflight is scoped to writing actions (author / execute / intake / accept) — read-only actions (plan / insight / review) never force setup — and `plan.md`'s preflight reads "config is optional for planning; never run setup from plan". Every `.wicked-testing/` dual-read line (router :36/:68/:69, `accept` :103/:104/:124, `campaign` :250) is marked `<!-- historical -->` (the functional bash lines via a trailing `# <!-- historical -->` comment so the illustrative command still parses). No lint rule or regex changed. `tests/cross_cli_baseline.json` shrinks by exactly this batch (30 pairs across 10 files → 63; 0 stale; nothing added); `components.json` unchanged (the qe router was already a router; the 40 `qe-*` workers are B14–B17). BM-style check for the wave-2 P2b/BM re-run: a non-claude seat receives `wicked-garden-qe` in `skillsSnapshotHanded` with 0 `seatConstraint`, and a qe `accept` unit on that seat hands off to `wicked-garden-qe-acceptance-test-{writer,executor,reviewer}` by name (no `Skill(` in its output).
12
+ - **Wave-2 catalog batch B14 (DES-L6 B14; first of the 40 `qe-*` workers): 10 qe specialist workers (`qe-a11y-test-engineer`, `qe-acceptance-test-{executor,reviewer,writer}`, `qe-ai-feature-test-engineer`, `qe-chaos-test-engineer`, `qe-code-analyzer`, `qe-compliance-test-engineer`, `qe-contract-testing-engineer`, `qe-coverage-archaeologist`) go cross-CLI (fixall L6-B14; D-21 — BC-37 / BC-39).** Each drops its Claude-only frontmatter (`context: fork`, `model`, `effort`, `max-turns`, `allowed-tools`, `phase_relevance`, `archetype_relevance`) for the closed key set with `metadata.role: worker`, and the "This skill is designed to run as an isolated worker …" fork sentence is removed. Four over-long descriptions are trimmed under 1024 (a11y 1160 → 772, ai-feature 1593 → 991, chaos 1046 → 508, compliance 1289 → 807 — the illustrative `<example>` blocks removed, ai-feature's NOT/Cross-ref lists condensed). The three acceptance workers' dispatch is translated: `qe-acceptance-test-executor` and `-writer`'s `Skill(skill="wicked-garden-mem", …)` recalls are Hand-off paragraphs, the executor's "Use Bash tool" / "Use Read tool" evidence rows say "your shell" / "your file reader", and the reviewer's enforcement note is keyed by capability ("a host that enforces `allowed-tools`") instead of naming "Claude Code". The `qe-chaos-test-engineer` and `qe-compliance-test-engineer` `VERDICT={PASS|FAIL} REVIEWER=… RUN_ID=…` output footers become the D-9 grammar on separate lines (`VERDICT: PASS|FAIL` / `REVIEWER: …` / `RUN_ID: …`) and leave `verdict_spelling.legacy_footer_files` (7 → 5); the verdict-spelling test fixture + corpus entry re-point from chaos to `qe-visual-regression-engineer` (a survivor through B17). B14 also converted the LAST `Skill(skill="wicked-garden-…")` dispatch call-form in the catalog, so `test_reference_extraction_is_not_vacuous`'s Skill-ref non-vacuity assert inverts to the zero-invariant (a reappearing `Skill(` ref is now a regression; the launcher-count guards keep the test non-vacuous) — the B9 review's N2 item, retired by the batch that made it come due. `tests/cross_cli_baseline.json` shrinks by exactly this batch (21 pairs across 10 files → 42; 0 stale; nothing added); `components.json` unchanged (all 10 were already `context: fork`-inferred workers). BM-style check for the wave-2 P2b/BM re-run: a non-claude seat receives the 10 workers in `skillsSnapshotHanded` with 0 `seatConstraint`; a qe `accept` unit on that seat hands off to `wicked-garden-qe-acceptance-test-{writer,executor,reviewer}` by name (no `Skill(` in its output) and a chaos/compliance run writes `VERDICT: PASS|FAIL` on its own line.
13
+ - **Wave-2 catalog batch B15 (DES-L6 B14–B17; second of the 40 `qe-*` workers): 10 qe specialist workers (`qe-data-quality-tester`, `qe-e2e-orchestrator`, `qe-exploratory-tester`, `qe-flaky-test-hunter`, `qe-fuzz-property-engineer`, `qe-iac-test-engineer`, `qe-incident-to-scenario-synthesizer`, `qe-integration-test-engineer`, `qe-load-performance-engineer`, `qe-localization-test-engineer`) go cross-CLI (fixall L6-B15; D-21 — BC-37 / BC-39).** Each drops its Claude-only frontmatter for the closed key set with `metadata.role: worker` and loses the "This skill is designed to run as an isolated worker …" fork sentence; `qe-incident-to-scenario-synthesizer`'s over-long description (1165 → 643) drops its illustrative `<example>` block. The `qe-flaky-test-hunter` and `qe-iac-test-engineer` `VERDICT={PASS|FAIL} REVIEWER=… RUN_ID=…` output footers become the D-9 grammar on separate lines (`VERDICT: PASS|FAIL` / `REVIEWER:` / `RUN_ID:`), and `qe-incident-to-scenario-synthesizer`'s concrete `VERDICT=PASS …` footer becomes `VERDICT: PASS` + separate lines; all three leave `verdict_spelling.legacy_footer_files` (5 → 2, leaving `qe-mutation-test-engineer` (B16) and `qe-visual-regression-engineer` (B17, the verdict-spelling test fixture target)). No dispatch/prose in these 10 (a full ungrouped sweep confirmed it); no test-fixture move (the fixture points at visual-regression, which stays legacy). `tests/cross_cli_baseline.json` shrinks by exactly this batch (11 pairs across 10 files → 31; 0 stale; nothing added); `components.json` unchanged. BM-style check for the wave-2 P2b/BM re-run: a non-claude seat receives the 10 workers in `skillsSnapshotHanded` with 0 `seatConstraint`, and a flaky/iac/incident run writes `VERDICT: …` on its own line.
14
+
5
15
  ## [12.37.1] — 2026-09-14
6
16
 
7
17
  ### Changed
@@ -908,6 +918,7 @@ through `v9.2.18`. Major themes across that span:
908
918
 
909
919
  For each of those releases, see the corresponding tag in git history.
910
920
 
911
- [Unreleased]: https://github.com/mikeparcewski/wicked-garden/compare/v12.37.1...HEAD
921
+ [Unreleased]: https://github.com/mikeparcewski/wicked-garden/compare/v12.37.2...HEAD
922
+ [12.37.2]: https://github.com/mikeparcewski/wicked-garden/compare/v12.37.1...v12.37.2
912
923
  [12.37.1]: https://github.com/mikeparcewski/wicked-garden/compare/v12.37.0...v12.37.1
913
924
  [12.37.0]: https://github.com/mikeparcewski/wicked-garden/compare/v12.36.0...v12.37.0
package/docs/domains.md CHANGED
@@ -159,7 +159,7 @@ They do not overlap; pick by target:
159
159
  | `define` | Create or update a custom persona |
160
160
  | `list` | List all available personas (Methodology vs Generic tiers) |
161
161
 
162
- **Fork worker**: `wicked-garden-persona-agent` (the `as` action builds its prompt from the registry at runtime and dispatches to it — kept). `define` runs inline from `refs/define.md`; the no-op `persona:submit` stub was deleted.
162
+ **Worker**: none — the former `wicked-garden-persona-agent` worker is retired into `refs/as.md` (wave-2 B9): the `as` action builds the profile from the registry at runtime and embodies it inline. `define` runs inline from `refs/define.md`; the no-op `persona:submit` stub was deleted.
163
163
 
164
164
  ## smaht — Context Assembly
165
165
 
@@ -136,7 +136,7 @@ Hermetic tests — no live estate needed, fixture rules dirs only:
136
136
  - `hooks/scripts/stop.py` — `_check_outgov_compliance` (per-turn advisory)
137
137
  - `scripts/platform/guard_pipeline.py` — Check 6 (`check_outgov_pattern`),
138
138
  `compute_rules_content_hash`, `write_rules_provenance`, the `hash` CLI
139
- - `skills/engineering-conformance-reviewer/SKILL.md` — the agent-half that
139
+ - `skills/engineering/refs/conformance.md` — the agent-half rubric that
140
140
  evaluates Check 6's surfaced rules semantically
141
141
  - wicked-core `crates/wicked-governance` — the graph side: `rules ingest`,
142
142
  `rules fanout` (the manifest + store split), `rules.recall`'s Rust twin
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "wicked-garden",
3
- "version": "12.37.1",
3
+ "version": "12.37.2",
4
4
  "type": "module",
5
5
  "description": "Curated toolkit for what AI coding agents can't do alone: evidence-gated work, codegraph relationships, deterministic multi-file refactor, multi-model second opinions, and cross-session memory. Installs as a Claude Code plugin.",
6
6
  "keywords": [
@@ -1214,7 +1214,7 @@ def check_outgov_pattern(
1214
1214
  rule_id=str(rid),
1215
1215
  severity=sev,
1216
1216
  message=f"[{rid}] {statement} — evaluate this session's output for conformance "
1217
- f"(invoke wicked-garden-engineering-conformance-reviewer with this rule as rubric)",
1217
+ f"(evaluate with the wicked-garden-engineering skill's refs/conformance.md rubric)",
1218
1218
  ))
1219
1219
 
1220
1220
  result.duration_ms = int((time.monotonic() - t0) * 1000)
@@ -12,7 +12,6 @@ description: |
12
12
  a live LLM feature with evidence artifacts + a ledger verdict is
13
13
  `wicked-garden-qe-ai-feature-test-engineer` (executor); THIS skill is the
14
14
  design-time safety review.
15
- - security-scanning
16
15
  metadata:
17
16
  role: worker
18
17
  ---
@@ -30,6 +30,8 @@ documents). Everything runs in the parent context.
30
30
  Script-backed steps use the `wicked-garden` launcher: `wicked-garden run <plugin-root-relative path, e.g. scripts/…> [args]`. It is on PATH after `npm i -g wicked-garden`; otherwise use `npx wicked-garden run …`; inside a wicked-crew run it is `"$WICKED_GARDEN_ROOT/scripts/wicked-garden"`.
31
31
  If none of these is available, or Python 3 is missing, skip the script-backed step, say so, and follow the manual alternative where one is given next to it — never invent the script's output.
32
32
  Relative paths in this skill are relative to the directory that contains this SKILL.md.
33
+ Runtime resolution in depth — the Python/Node detection ladders, usage patterns and troubleshooting —
34
+ is `refs/runtime.md`.
33
35
 
34
36
  ## Action router
35
37
 
@@ -1,22 +1,10 @@
1
- ---
2
- name: wicked-garden-runtime-exec
3
- description: |
4
- Smart runtime execution for Python and Node scripts with automatic package manager detection.
5
- Invoked by other skills and agents when scripts need execution with correct runtime resolution.
6
- metadata:
7
- role: module
8
- phases: "*"
9
- archetypes: "*"
10
- ---
11
-
12
- # Runtime Execution Skill
13
-
14
- Execute Python and Node scripts using the best available package manager.
15
-
16
- ## Runtime
17
- Script-backed steps use the `wicked-garden` launcher: `wicked-garden run <plugin-root-relative path, e.g. scripts/…> [args]`. It is on PATH after `npm i -g wicked-garden`; otherwise use `npx wicked-garden run …`; inside a wicked-crew run it is `"$WICKED_GARDEN_ROOT/scripts/wicked-garden"`.
18
- If none of these is available, or Python 3 is missing, skip the script-backed step, say so, and follow the manual alternative where one is given next to it — never invent the script's output.
19
- Relative paths in this skill are relative to the directory that contains this SKILL.md.
1
+ # Runtime execution — Python and Node
2
+
3
+ Reference for the `wicked-garden-core` skill (the former runtime-exec module, folded here in
4
+ wave-2 B10). Execute Python and Node scripts using the best available package manager, with automatic
5
+ package-manager detection — other skills and agents come here when a script needs execution with correct
6
+ runtime resolution. The launcher paragraph in `SKILL.md`'s Runtime section is the short form; this ref is the
7
+ detection ladder, the usage patterns and the troubleshooting.
20
8
 
21
9
  ## Recommended: use the `wicked-garden` launcher
22
10
 
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: wicked-garden-data-engineer
3
3
  description: "ETL pipeline design, data quality assessment, schema validation, and performance optimization as a delegated worker skill. Use when: designing or reviewing ETL/ELT pipelines, assessing dataset quality (completeness, uniqueness, validity, consistency, timeliness), validating data against schemas, optimizing data-processing performance, or recording data-engineering findings on an active task. For inline (non-delegated) data work, use the wicked-garden-data skill's sub-actions instead."
4
- - data-query
5
4
  metadata:
6
5
  role: worker
7
6
  ---
@@ -147,6 +147,9 @@ Audit (coverage metrics) and sync (stale-docs detection) modes live in the
147
147
  [docs](docs/SKILL.md) · [large-scale-migration](large-scale-migration/SKILL.md) ·
148
148
  [patch](patch/SKILL.md) · [unit-test-quality](unit-test-quality/SKILL.md)
149
149
 
150
+ - [refs/conformance.md](refs/conformance.md) — pattern-conformance review: load the applicable Pattern rules,
151
+ judge the artifact semantically per rule, emit `CONFORMANT` / `DRIFT` / `VIOLATION` (report only, never gate).
152
+
150
153
  ## Workers
151
154
 
152
155
  | Skill | Hand off for |
@@ -1,30 +1,15 @@
1
- ---
2
- name: wicked-garden-engineering-conformance-reviewer
3
- description: |
4
- Pattern-conformance agent-half: evaluates a produced artifact or diff against
5
- a set of architectural/design pattern rules from the conformance-rule store
6
- (wicked_governance schema). Returns structured findings with rule ID, severity,
7
- and rationale — the deterministic half (mechanical rule recall) is done by the
8
- guard pipeline; this is the semantic evaluation step.
9
-
10
- Triggered by: the guard_pipeline `outgov_pattern` check (session-close), or
11
- explicitly by an engineering review when WICKED_OUTGOV_RULES_DIR is populated.
12
-
13
- NOT a replacement for the full `engineering` review skill — focuses only on
14
- conformance to stored Pattern rules; architecture and code-quality checks live
15
- in the `engineering` skill.
16
-
17
- Semantic evaluation reuses `wicked-garden-qe-semantic-reviewer` as the
18
- designated agent-half evaluator (per garden#983 spec). This skill is the
19
- orchestrating wrapper that loads applicable Pattern rules and delegates the
20
- per-rule semantic judgment to qe-semantic-reviewer.
21
- metadata:
22
- role: worker
23
- phases: "build,review"
24
- archetypes: "build,review,modernize"
25
- ---
26
-
27
- # Conformance Reviewer — Pattern-Conformance Agent-Half
1
+ # Conformance review — the pattern-conformance agent-half
2
+
3
+ Reference for the `wicked-garden-engineering` skill (the former engineering-conformance-reviewer worker,
4
+ folded here in wave-2 B10). Apply it inline when the guard pipeline's (`scripts/platform/guard_pipeline.py`) `outgov_pattern` check surfaces
5
+ Pattern rules at session close, or when an engineering review runs with `WICKED_OUTGOV_RULES_DIR` populated.
6
+
7
+ **Scope.** This is NOT a replacement for the full `wicked-garden-engineering` review — it covers only
8
+ conformance to stored Pattern rules; architecture and code-quality checks live in the engineering skill itself.
9
+
10
+ **Delegation.** Semantic evaluation reuses `wicked-garden-qe-semantic-reviewer` as the designated agent-half
11
+ evaluator (garden#983): this rubric is the orchestrating wrapper that loads the applicable Pattern rules and
12
+ delegates the per-rule semantic judgment to that skill.
28
13
 
29
14
  You are the **agent-half** of the output-governance pattern-conformance validator.
30
15
  The deterministic half has already run: it read Pattern-type rules from the estate
@@ -1,6 +1,5 @@
1
1
  ---
2
2
  name: wicked-garden-jam
3
- user-invocable: true
4
3
  description: |
5
4
  Orchestrates AI-powered brainstorming sessions with dynamic focus groups.
6
5
  quick sessions are ephemeral (no storage). brainstorm and council sessions
@@ -10,8 +9,10 @@ description: |
10
9
  "jam quick <idea>", "jam brainstorm <topic>", "jam council <topic> with
11
10
  options A/B/C", "multi-model evaluation", "council verdict",
12
11
  "jam revisit <decision>", "how did that decision work out".
13
- phase_relevance: ["clarify", "design"]
14
- archetype_relevance: ["*"]
12
+ metadata:
13
+ role: router
14
+ phases: "clarify,design"
15
+ archetypes: "*"
15
16
  ---
16
17
 
17
18
  # Brainstorming Skill
@@ -30,8 +31,8 @@ Relative paths in this skill are relative to the directory that contains this SK
30
31
  | Sub-action | When | How it runs |
31
32
  |------------|------|-------------|
32
33
  | `quick` | Gut-check, rapid exploration (~60s) | Inline — apply `refs/quick.md` directly |
33
- | `brainstorm` | Important decisions, complex problems | Fork → `wicked-garden-jam-brainstorm-facilitator` |
34
- | `council` | Defined options needing a rigid verdict | Fork → `wicked-garden-jam-council` |
34
+ | `brainstorm` | Important decisions, complex problems | Hand-off → `wicked-garden-jam-brainstorm-facilitator` |
35
+ | `council` | Defined options needing a rigid verdict | Hand-off → `wicked-garden-jam-council` |
35
36
  | `revisit` | Record the outcome of a past decision | Inline — follow `refs/revisit.md` |
36
37
 
37
38
  > **Progression**: `quick` (60s gut-check, ephemeral) → `brainstorm` (full
@@ -84,15 +85,10 @@ stored via the wicked-garden-mem skill for organizational memory.
84
85
  - **fast** (`--converge fast`): After each round, assess whether there is
85
86
  enough signal to synthesize; skip remaining rounds when personas converge.
86
87
 
87
- Dispatch to the forked facilitator skill (it owns the convergence checks,
88
- native-task tracking, transcript storage, and bus events):
88
+ Hand off to the facilitator worker skill (it owns the convergence checks,
89
+ task tracking, transcript storage, and bus events):
89
90
 
90
- Dispatch uses the Skill tool on Claude Code (a fresh forked context). On any other harness, open the named skill's `SKILL.md` from your skills catalog and carry out its instructions inline with the given args, then continue here.
91
-
92
- ```
93
- Skill(skill="wicked-garden-jam-brainstorm-facilitator",
94
- args="Run a full brainstorm session on: {topic}. Options: {personas}, {rounds}, convergence_mode={converge|'normal'}.")
95
- ```
91
+ **Hand-off** — open the `wicked-garden-jam-brainstorm-facilitator` skill with "Run a full brainstorm session on: {topic}. Options: {personas}, {rounds}, convergence_mode={converge|'normal'}." as the argument; on Claude Code this is the Skill tool, on any other seat open the named skill from your catalog and carry it out inline, then continue here.
96
92
 
97
93
  ## Sub-action: council
98
94
 
@@ -104,21 +100,18 @@ see `scripts/jam/agentic_cli_registry.py`) — to get genuinely independent
104
100
  model perspectives. Installed CLIs are detected AND usability-probed via
105
101
  `wicked-garden run scripts/jam/detect_clis.py --probe` (auth-revoked / unconfigured /
106
102
  daemon-down CLIs are excluded). When fewer than 2 usable external CLIs are
107
- present, council seats are filled with forked subagent seats so deliberation
103
+ present, council seats are filled with separate-worker seats so deliberation
108
104
  always happens. Unlike brainstorm (free-form creative exploration), council is
109
105
  a **rigid evaluation tool** for when you have defined options and need a
110
106
  verdict.
111
107
 
112
108
  Natural workflow: `brainstorm → identify candidates → council → decide`
113
109
 
114
- Dispatch to the forked council skill:
110
+ Hand off to the council worker skill:
115
111
 
116
- ```
117
- Skill(skill="wicked-garden-jam-council",
118
- args="Run a council evaluation on: {topic}. Options: {options}. Criteria: {criteria}.")
119
- ```
112
+ **Hand-off** — open the `wicked-garden-jam-council` skill with "Run a council evaluation on: {topic}. Options: {options}. Criteria: {criteria}." as the argument; on Claude Code this is the Skill tool, on any other seat open the named skill from your catalog and carry it out inline, then continue here.
120
113
 
121
- **After the fork returns**: read
114
+ **After the council returns**: read
122
115
  `refs/council-verdict.md` — it holds the
123
116
  caller-side heuristics for acting on the verdict (when to proceed, when to
124
117
  surface raw votes and pause for human adjudication, hard-gate archetype rules)
@@ -130,7 +123,7 @@ and the `raw_votes` output envelope contract
130
123
  **Args**: `<topic or decision keyword>`
131
124
 
132
125
  Revisit a past brainstorm decision to record whether it was validated,
133
- invalidated, or modified. Light workflow — run it inline, no fork:
126
+ invalidated, or modified. Light workflow — run it inline, no hand-off:
134
127
 
135
128
  1. Read `refs/revisit.md` — the 5-step
136
129
  workflow: recall the decision via the wicked-garden-mem skill, display
@@ -139,10 +132,10 @@ invalidated, or modified. Light workflow — run it inline, no fork:
139
132
  memory layer is absent.
140
133
  2. Follow it step by step, waiting for the user's outcome answer in step 3.
141
134
 
142
- ## Workers (forked skills)
135
+ ## Workers
143
136
 
144
137
  - `skills/jam-brainstorm-facilitator/SKILL.md` — multi-round, evidence gathering, transcript storage, decision record
145
- - `skills/jam-council/SKILL.md` — registry-driven multi-model council with isolation-enforced parallel dispatch
138
+ - `skills/jam-council/SKILL.md` — registry-driven multi-model council with isolation-enforced parallel seats
146
139
 
147
140
  (`jam quick` runs inline via `refs/quick.md` — the former quick-facilitator
148
141
  agent was retired; the ref is the sole, up-to-date rubric.)
@@ -4,7 +4,7 @@ archetype_relevance: ["*"]
4
4
  ---
5
5
  # Acting on the Council Verdict (caller side)
6
6
 
7
- This ref guides the PARENT after the `wicked-garden-jam-council` fork returns.
7
+ This ref guides the PARENT after the `wicked-garden-jam-council` worker returns.
8
8
  It is caller-side policy — the council worker produces the verdict; the caller
9
9
  decides what to do with it.
10
10
 
@@ -5,20 +5,13 @@ archetype_relevance: ["*"]
5
5
  # jam revisit — Decision Outcome Workflow
6
6
 
7
7
  Revisit a past brainstorm decision to record whether it was validated,
8
- invalidated, or modified. Light workflow — run it inline, no fork needed.
8
+ invalidated, or modified. Light workflow — run it inline, no hand-off needed.
9
9
 
10
10
  ## Instructions
11
11
 
12
12
  ### 1. Recall Past Decision
13
13
 
14
- Search for the decision via the wicked-garden-mem skill
15
-
16
- ```
17
- Skill(
18
- skill="wicked-garden-mem",
19
- args="recall \"jam decision related to: {topic}\""
20
- )
21
- ```
14
+ **Hand-off** — open the `wicked-garden-mem` skill and run its `recall` action with `jam decision related to: {topic}` as the query; on Claude Code this is the Skill tool, on any other seat open the named skill from your catalog and carry it out inline, then continue here.
22
15
 
23
16
  If no matching decision found, inform the user and suggest running the jam
24
17
  skill's `brainstorm` sub-action first.
@@ -52,13 +45,7 @@ How did this decision work out?
52
45
 
53
46
  ### 4. Record Outcome
54
47
 
55
- Store the outcome via the wicked-garden-mem skill
56
-
57
- Dispatch uses the Skill tool on Claude Code (a fresh forked context). On any other harness, open the named skill's `SKILL.md` from your skills catalog and carry out its instructions inline with the given args, then continue here.
58
-
59
- ```
60
- Skill(skill="wicked-garden-mem", args="store \"Outcome: {topic}\nOriginal decision: {chosen}\nResult: {validated/invalidated/modified}\nReason: {user's explanation}\nLessons: {what we learned}\" (kind=fact, about=[jam, outcome, {topic-keywords}])")
61
- ```
48
+ **Hand-off** — open the `wicked-garden-mem` skill and run its `store` action with the record `Outcome: {topic} / Original decision: {chosen} / Result: {validated/invalidated/modified} / Reason: {user's explanation} / Lessons: {what we learned}` (kind=fact, about=[jam, outcome, {topic-keywords}]); on Claude Code this is the Skill tool, on any other seat open the named skill from your catalog and carry it out inline, then continue here.
62
49
 
63
50
  ### 5. Report
64
51
 
@@ -1,25 +1,18 @@
1
1
  ---
2
2
  name: wicked-garden-jam-brainstorm-facilitator
3
- context: fork
4
- subagent_type: wicked-garden:jam:brainstorm-facilitator
5
- description: "Role-plays as focus group personas and synthesizes brainstorming discussions. Use when: brainstorming, ideation, running a full jam session with evidence gathering, discussion rounds, and decision record storage — dispatched by the wicked-garden-jam skill's brainstorm sub-action."
6
- model: sonnet
7
- effort: medium
8
- max-turns: 10
9
- allowed-tools: Read, Grep, Glob, Bash
3
+ description: "Role-plays as focus group personas and synthesizes brainstorming discussions. Use when: brainstorming, ideation, running a full jam session with evidence gathering, discussion rounds, and decision record storage — handed off by the wicked-garden-jam skill's brainstorm sub-action."
4
+ metadata:
5
+ role: worker
10
6
  ---
11
7
 
12
8
  # Facilitator
13
9
 
14
- This skill is designed to run as an isolated worker; when your harness cannot fork, run it inline and keep its output separate from the caller's.
15
-
16
10
  You orchestrate brainstorming sessions with dynamic focus groups.
17
11
 
18
12
  ## Runtime
19
13
  Script-backed steps use the `wicked-garden` launcher: `wicked-garden run <plugin-root-relative path, e.g. scripts/…> [args]`. It is on PATH after `npm i -g wicked-garden`; otherwise use `npx wicked-garden run …`; inside a wicked-crew run it is `"$WICKED_GARDEN_ROOT/scripts/wicked-garden"`.
20
14
  If none of these is available, or Python 3 is missing, skip the script-backed step, say so, and follow the manual alternative where one is given next to it — never invent the script's output.
21
15
  Relative paths in this skill are relative to the directory that contains this SKILL.md.
22
- Dispatch uses the Skill tool on Claude Code (a fresh forked context). On any other harness, open the named skill's `SKILL.md` from your skills catalog and carry out its instructions inline with the given args, then continue here.
23
16
 
24
17
  ## Your Role
25
18
 
@@ -31,7 +24,7 @@ Guide structured brainstorming through:
31
24
 
32
25
  ## Inputs
33
26
 
34
- The dispatcher gives you: `topic` (required), and optionally `personas`,
27
+ The caller gives you: `topic` (required), and optionally `personas`,
35
28
  `rounds` (default 2-3), and `convergence_mode` (`normal` | `fast`, default
36
29
  `normal`).
37
30
 
@@ -46,16 +39,15 @@ The dispatcher gives you: `topic` (required), and optionally `personas`,
46
39
  do not run extra rounds just because they were planned. Maximum: 1 round
47
40
  before early synthesis is allowed (Round 1 always runs).
48
41
 
49
- ## Native-Task Tracking
42
+ ## Task Tracking
50
43
 
51
- Track the session as a native task (fail open on any tool errors):
44
+ Track the session in the harness's task list where it has one (the `wicked-garden-workflow` skill's `refs/integration.md` carries the field list and the harness-specific Hand-off), else your working notes (fail open on any tool errors):
52
45
 
53
- 1. Session start: `TaskCreate(subject='Jam: {topic}', metadata={'event_type':'task','chain_id':'jam-{topic-slug}.root','source_agent':'jam-facilitator','initiative':'{topic-slug}'})`
54
- 2. After each persona contributes, after synthesis, and on decision:
55
- `TaskUpdate(taskId, description='append: {persona_name}: {key_insight}' / 'Synthesis: {summary}' / 'Decision: {decision_record}')`
46
+ 1. Session start: a task `Jam: {topic}` with metadata `event_type=task, chain_id=jam-{topic-slug}.root, source_agent=jam-facilitator, initiative={topic-slug}`.
47
+ 2. After each persona contributes, after synthesis, and on decision: append `{persona_name}: {key_insight}` / `Synthesis: {summary}` / `Decision: {decision_record}` to its description.
56
48
 
57
- Continue storing outcomes via the wicked-garden-mem skill (native task =
58
- process, stored memory = outcome).
49
+ Continue storing outcomes via the wicked-garden-mem skill (task = process,
50
+ stored memory = outcome).
59
51
 
60
52
  ## Session Structure
61
53
 
@@ -64,27 +56,21 @@ process, stored memory = outcome).
64
56
  Before assembling personas, gather real evidence from the ecosystem:
65
57
 
66
58
  **Step 1a: Recall past decisions** (if the knowledge layer is available)
67
- ```
68
- Skill(
69
- skill="wicked-garden-mem",
70
- args="recall \"past decisions related to: {topic}\""
71
- )
72
- ```
59
+
60
+ **Hand-off** — open the `wicked-garden-mem` skill and run its `recall` action with `past decisions related to: {topic}` as the query; on Claude Code this is the Skill tool, on any other seat open the named skill from your catalog and carry it out inline, then continue here.
61
+
73
62
  This surfaces: "Last time we discussed caching, we chose Redis because of X. Outcome: validated."
74
63
 
75
64
  **Step 1b: Gather code evidence** (if code-related topic)
76
- ```
77
- Use Grep or wicked-garden:search to find relevant code patterns, existing implementations, or blast radius.
78
- ```
65
+
66
+ Use your harness's file search or the `wicked-garden-search` skill to find relevant code patterns, existing implementations, or blast radius.
67
+
79
68
  This surfaces: "There are 3 existing cache implementations in the codebase using pattern X."
80
69
 
81
70
  **Step 1c: Check past brainstorm outcomes** (if the knowledge layer is available)
82
- ```
83
- Skill(
84
- skill="wicked-garden-mem",
85
- args="recall \"brainstorm outcomes jam decision\""
86
- )
87
- ```
71
+
72
+ **Hand-off** — open the `wicked-garden-mem` skill and run its `recall` action with `brainstorm outcomes jam decision` as the query; on Claude Code this is the Skill tool, on any other seat open the named skill from your catalog and carry it out inline, then continue here.
73
+
88
74
  This surfaces: "2 past decisions on similar topics: 1 validated, 1 modified."
89
75
 
90
76
  **Step 1d: Compile evidence summary** (max 500 words)
@@ -292,10 +278,8 @@ Skip this step if no external CLIs are available. This is graceful enhancement,
292
278
 
293
279
  After synthesis, automatically store a structured decision record:
294
280
 
295
- 1. Store via the wicked-garden-mem skill (store action) — graceful degradation: skip if unavailable:
296
- ```
297
- Skill(skill="wicked-garden-mem", args="store \"Decision: {topic}\nChosen: {recommended option from synthesis}\nRationale: {key reasoning}\nAlternatives considered: {other options}\nConfidence: {HIGH/MEDIUM/LOW}\nEvidence used: {summary of evidence brief}\nPersonas: {list of personas}\" (kind=fact, about=[jam, decision, {2-3 topic keywords}])")
298
- ```
281
+ 1. Store via the wicked-garden-mem skill (store action) — graceful degradation: skip if unavailable.
282
+ **Hand-off** — open the `wicked-garden-mem` skill and run its `store` action with the record `Decision: {topic} / Chosen: {recommended option from synthesis} / Rationale: {key reasoning} / Alternatives considered: {other options} / Confidence: {HIGH/MEDIUM/LOW} / Evidence used: {summary of evidence brief} / Personas: {list of personas}` (kind=fact, about=[jam, decision, {2-3 topic keywords}]); on Claude Code this is the Skill tool, on any other seat open the named skill from your catalog and carry it out inline, then continue here.
299
283
  2. **If unavailable**: Show the decision record inline so users can manually save it
300
284
 
301
285
  This creates organizational memory — every brainstorm becomes a searchable, recallable decision record.
@@ -341,9 +325,6 @@ Put synthesis FIRST (context efficiency):
341
325
 
342
326
  ## Dispatch
343
327
 
344
- Forked-context worker, reachable two ways:
345
-
346
- - **Primary (skills-only):** invoke the skill by its frontmatter name — `wicked-garden-jam-brainstorm-facilitator` (used by the `wicked-garden-jam` skill's brainstorm sub-action).
347
- - **Legacy delegation adapter (compat):** callers still emitting the pre-v12.25
348
- subagent form resolve here through the frontmatter `subagent_type:` compat key —
349
- `Task(subagent_type="wicked-garden:jam:brainstorm-facilitator")` maps to this fork skill.
328
+ Worker skill, reached by its name — `wicked-garden-jam-brainstorm-facilitator` — through a
329
+ Hand-off from the `wicked-garden-jam` skill's brainstorm sub-action or any caller. The pre-v12.25
330
+ subagent-delegation form is retired with the fork frontmatter.