wicked-garden 12.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (640) hide show
  1. package/.claude-plugin/archetypes.json +166 -0
  2. package/.claude-plugin/components.json +75 -0
  3. package/.claude-plugin/marketplace.json +15 -0
  4. package/.claude-plugin/plugin.json +174 -0
  5. package/.claude-plugin/specialist.json +48 -0
  6. package/.claude-plugin/stack-registry.json +96 -0
  7. package/AGENTS.md +13 -0
  8. package/CHANGELOG.md +712 -0
  9. package/CONTRIBUTING.md +99 -0
  10. package/ETHOS.md +83 -0
  11. package/LICENSE +21 -0
  12. package/README.md +115 -0
  13. package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
  14. package/agents/agentic/architect.md +449 -0
  15. package/agents/agentic/performance-analyst.md +702 -0
  16. package/agents/agentic/safety-reviewer.md +662 -0
  17. package/agents/crew/implementer.md +163 -0
  18. package/agents/crew/researcher.md +94 -0
  19. package/agents/crew/reviewer.md +184 -0
  20. package/agents/data/data-engineer.md +227 -0
  21. package/agents/engineering/api-documentarian.md +440 -0
  22. package/agents/engineering/migration-engineer.md +301 -0
  23. package/agents/engineering/solution-architect.md +208 -0
  24. package/agents/jam/brainstorm-facilitator.md +297 -0
  25. package/agents/jam/council.md +322 -0
  26. package/agents/jam/quick-facilitator.md +85 -0
  27. package/agents/persona/persona-agent.md +121 -0
  28. package/agents/platform/compliance-officer.md +266 -0
  29. package/agents/platform/privacy-expert.md +496 -0
  30. package/agents/platform/security-engineer.md +287 -0
  31. package/agents/product/a11y-expert.md +323 -0
  32. package/agents/product/requirements-analyst.md +238 -0
  33. package/agents/product/ui-reviewer.md +180 -0
  34. package/agents/product/ux-designer.md +199 -0
  35. package/agents/product/value-strategist.md +269 -0
  36. package/agents/qe/semantic-reviewer.md +78 -0
  37. package/commands/agentic/audit.md +24 -0
  38. package/commands/agentic/design.md +24 -0
  39. package/commands/agentic/frameworks.md +25 -0
  40. package/commands/agentic/review.md +27 -0
  41. package/commands/archetype/build.md +12 -0
  42. package/commands/archetype/decide.md +12 -0
  43. package/commands/archetype/explore.md +12 -0
  44. package/commands/archetype/incident.md +12 -0
  45. package/commands/archetype/migrate.md +12 -0
  46. package/commands/archetype/modernize.md +12 -0
  47. package/commands/archetype/review.md +14 -0
  48. package/commands/archetype/ship.md +12 -0
  49. package/commands/archetype/specify.md +12 -0
  50. package/commands/archetype/triage.md +12 -0
  51. package/commands/compile.md +37 -0
  52. package/commands/data/analyze.md +18 -0
  53. package/commands/data/data.md +21 -0
  54. package/commands/data/ml.md +18 -0
  55. package/commands/data/ontology.md +22 -0
  56. package/commands/data/pipeline.md +17 -0
  57. package/commands/deliberate.md +181 -0
  58. package/commands/engineering/add-field.md +77 -0
  59. package/commands/engineering/apply.md +58 -0
  60. package/commands/engineering/arch.md +26 -0
  61. package/commands/engineering/debug.md +27 -0
  62. package/commands/engineering/docs.md +27 -0
  63. package/commands/engineering/new-generator.md +257 -0
  64. package/commands/engineering/patch-plan.md +59 -0
  65. package/commands/engineering/plan.md +29 -0
  66. package/commands/engineering/remove.md +48 -0
  67. package/commands/engineering/rename.md +44 -0
  68. package/commands/engineering/review.md +32 -0
  69. package/commands/help.md +128 -0
  70. package/commands/install.md +118 -0
  71. package/commands/intent.md +54 -0
  72. package/commands/jam/brainstorm.md +37 -0
  73. package/commands/jam/council.md +49 -0
  74. package/commands/jam/quick.md +21 -0
  75. package/commands/jam/revisit.md +79 -0
  76. package/commands/persona/as.md +136 -0
  77. package/commands/persona/define.md +24 -0
  78. package/commands/persona/list.md +118 -0
  79. package/commands/platform/actions.md +20 -0
  80. package/commands/platform/assert.md +18 -0
  81. package/commands/platform/audit.md +23 -0
  82. package/commands/platform/compliance.md +20 -0
  83. package/commands/platform/gh.md +22 -0
  84. package/commands/platform/health.md +22 -0
  85. package/commands/platform/incident.md +23 -0
  86. package/commands/platform/infra.md +24 -0
  87. package/commands/platform/peer-health.md +103 -0
  88. package/commands/platform/plugin-health.md +58 -0
  89. package/commands/platform/security.md +38 -0
  90. package/commands/platform/toolchain.md +96 -0
  91. package/commands/platform/traces.md +20 -0
  92. package/commands/product/a11y.md +19 -0
  93. package/commands/product/acceptance.md +19 -0
  94. package/commands/product/align.md +20 -0
  95. package/commands/product/analyze.md +23 -0
  96. package/commands/product/elicit.md +19 -0
  97. package/commands/product/listen.md +24 -0
  98. package/commands/product/mockup.md +20 -0
  99. package/commands/product/screenshot.md +19 -0
  100. package/commands/product/strategy.md +40 -0
  101. package/commands/product/synthesize.md +23 -0
  102. package/commands/product/ux-review.md +42 -0
  103. package/commands/product/ux.md +20 -0
  104. package/commands/product/visual-direction.md +34 -0
  105. package/commands/prove.md +47 -0
  106. package/commands/report-issue.md +243 -0
  107. package/commands/reset.md +144 -0
  108. package/commands/search/blast-radius.md +58 -0
  109. package/commands/search/hotspots.md +55 -0
  110. package/commands/search/index.md +38 -0
  111. package/commands/search/lineage.md +47 -0
  112. package/commands/search/service-map.md +79 -0
  113. package/commands/setup.md +363 -0
  114. package/commands/smaht/briefing.md +200 -0
  115. package/commands/smaht/events-import.md +95 -0
  116. package/commands/smaht/state.md +19 -0
  117. package/commands/where-am-i.md +58 -0
  118. package/docs/README.md +32 -0
  119. package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
  120. package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
  121. package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
  122. package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
  123. package/docs/brain-chunk-format.md +135 -0
  124. package/docs/compiler.md +95 -0
  125. package/docs/daemon-api.md +70 -0
  126. package/docs/domains.md +197 -0
  127. package/docs/getting-started.md +208 -0
  128. package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
  129. package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
  130. package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
  131. package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
  132. package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
  133. package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
  134. package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
  135. package/docs/required-peers.md +60 -0
  136. package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
  137. package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
  138. package/docs/v11/archetypes.md +231 -0
  139. package/hooks/hooks.json +275 -0
  140. package/hooks/scripts/bootstrap.py +1797 -0
  141. package/hooks/scripts/invoke.py +62 -0
  142. package/hooks/scripts/notification.py +166 -0
  143. package/hooks/scripts/permission_request.py +223 -0
  144. package/hooks/scripts/post_tool.py +1374 -0
  145. package/hooks/scripts/pre_compact.py +272 -0
  146. package/hooks/scripts/pre_tool.py +1278 -0
  147. package/hooks/scripts/prompt_submit.py +1109 -0
  148. package/hooks/scripts/session_end.py +95 -0
  149. package/hooks/scripts/stop.py +624 -0
  150. package/hooks/scripts/subagent_lifecycle.py +464 -0
  151. package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
  152. package/hooks/scripts/task_completed.py +322 -0
  153. package/hooks/scripts/worktree_guard.py +148 -0
  154. package/hooks/subscriptions/on_gate_decided.json +9 -0
  155. package/install.mjs +128 -0
  156. package/package.json +41 -0
  157. package/pyproject.toml +59 -0
  158. package/schemas/README.md +32 -0
  159. package/schemas/assert_contracts.json +37 -0
  160. package/schemas/health_probe.json +46 -0
  161. package/schemas/plugin_status.json +37 -0
  162. package/scripts/_adapters/__init__.py +166 -0
  163. package/scripts/_adapters/jira_adapter.py +18 -0
  164. package/scripts/_adapters/linear_adapter.py +18 -0
  165. package/scripts/_adapters/miro_adapter.py +18 -0
  166. package/scripts/_adapters/notion_adapter.py +18 -0
  167. package/scripts/_agents.py +357 -0
  168. package/scripts/_brain_ingest/__init__.py +2 -0
  169. package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
  170. package/scripts/_brain_port.py +163 -0
  171. package/scripts/_bus.py +1081 -0
  172. package/scripts/_bus_catalog_gen.py +93 -0
  173. package/scripts/_bus_consumers.json +46 -0
  174. package/scripts/_bus_emit.py +43 -0
  175. package/scripts/_capability_registry.py +334 -0
  176. package/scripts/_capability_resolver.py +322 -0
  177. package/scripts/_domain_store.py +559 -0
  178. package/scripts/_event_log_reader.py +154 -0
  179. package/scripts/_event_schema.py +305 -0
  180. package/scripts/_event_store.py +397 -0
  181. package/scripts/_heavy_cadence.py +324 -0
  182. package/scripts/_integration_resolver.py +321 -0
  183. package/scripts/_logger.py +151 -0
  184. package/scripts/_loom.py +482 -0
  185. package/scripts/_paths.py +133 -0
  186. package/scripts/_python.sh +22 -0
  187. package/scripts/_run.py +137 -0
  188. package/scripts/_session.py +502 -0
  189. package/scripts/_validate_registry.py +1042 -0
  190. package/scripts/_wicked_testing_probe.py +277 -0
  191. package/scripts/agentic/analyze_agents.py +391 -0
  192. package/scripts/agentic/detect_framework.py +420 -0
  193. package/scripts/agentic/issue_taxonomy.py +357 -0
  194. package/scripts/agentic/pattern_scorer.py +434 -0
  195. package/scripts/classify/persist.py +169 -0
  196. package/scripts/compiler/compile.py +552 -0
  197. package/scripts/compiler/phase0/VERDICT.md +60 -0
  198. package/scripts/compiler/phase0/detect.py +292 -0
  199. package/scripts/compiler/phase0/emit.py +228 -0
  200. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
  201. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
  202. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
  203. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
  204. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
  205. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
  206. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
  207. package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
  208. package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
  209. package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
  210. package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
  211. package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
  212. package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
  213. package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
  214. package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
  215. package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
  216. package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
  217. package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
  218. package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
  219. package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
  220. package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
  221. package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
  222. package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
  223. package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
  224. package/scripts/compiler/phase0/evidence/verdict.json +104 -0
  225. package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
  226. package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
  227. package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
  228. package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
  229. package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
  230. package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
  231. package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
  232. package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
  233. package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
  234. package/scripts/compiler/phase0/run_probe.py +234 -0
  235. package/scripts/compiler/phase0/wire_vault.py +310 -0
  236. package/scripts/crew/__init__.py +0 -0
  237. package/scripts/crew/_task_audit_writer.py +243 -0
  238. package/scripts/crew/_task_reader.py +389 -0
  239. package/scripts/crew/archetypes_v11.py +348 -0
  240. package/scripts/crew/detectors/__init__.py +12 -0
  241. package/scripts/crew/flow_compiler.py +121 -0
  242. package/scripts/crew/phase_manager.py +703 -0
  243. package/scripts/crew/scope_delta.py +264 -0
  244. package/scripts/crew/specialist_resolver.py +218 -0
  245. package/scripts/crew/stack_registry.py +189 -0
  246. package/scripts/data/data_profiler.py +271 -0
  247. package/scripts/data/ontology_recommender.py +231 -0
  248. package/scripts/data/schema_validator.py +267 -0
  249. package/scripts/delivery/drift.py +739 -0
  250. package/scripts/delivery/telemetry.py +614 -0
  251. package/scripts/engineering/patch/codegraph_db.py +125 -0
  252. package/scripts/engineering/patch/generators/__init__.py +56 -0
  253. package/scripts/engineering/patch/generators/base.py +373 -0
  254. package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
  255. package/scripts/engineering/patch/generators/go_generator.py +430 -0
  256. package/scripts/engineering/patch/generators/java_generator.py +928 -0
  257. package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
  258. package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
  259. package/scripts/engineering/patch/generators/perl_generator.py +510 -0
  260. package/scripts/engineering/patch/generators/php_generator.py +644 -0
  261. package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
  262. package/scripts/engineering/patch/generators/python_generator.py +487 -0
  263. package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
  264. package/scripts/engineering/patch/generators/rust_generator.py +400 -0
  265. package/scripts/engineering/patch/generators/sql_generator.py +594 -0
  266. package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
  267. package/scripts/engineering/patch/patch.py +800 -0
  268. package/scripts/engineering/patch/safety.py +429 -0
  269. package/scripts/jam/__init__.py +0 -0
  270. package/scripts/jam/_bus_consumers.py +271 -0
  271. package/scripts/jam/agentic_cli_registry.py +703 -0
  272. package/scripts/jam/consensus.py +737 -0
  273. package/scripts/jam/detect_clis.py +409 -0
  274. package/scripts/jam/jam.py +283 -0
  275. package/scripts/jam/save_transcript.py +171 -0
  276. package/scripts/loom/__init__.py +22 -0
  277. package/scripts/loom/cli.py +170 -0
  278. package/scripts/loom/compose.py +180 -0
  279. package/scripts/loom/gate.py +120 -0
  280. package/scripts/loom/manifest.py +140 -0
  281. package/scripts/loom/resolve.py +59 -0
  282. package/scripts/persona/__init__.py +0 -0
  283. package/scripts/persona/registry.py +688 -0
  284. package/scripts/platform/guard_pipeline.py +1214 -0
  285. package/scripts/platform/guard_profiles.py +216 -0
  286. package/scripts/platform/observability/assert_contracts.py +434 -0
  287. package/scripts/platform/observability/health_probe.py +915 -0
  288. package/scripts/platform/observability/ops_log_viewer.py +209 -0
  289. package/scripts/platform/prereq_doctor.py +567 -0
  290. package/scripts/qe/conditions_manifest.py +260 -0
  291. package/scripts/qe/content_sanitizer.py +160 -0
  292. package/scripts/qe/coverage_tracker.py +535 -0
  293. package/scripts/qe/discover_scenarios.py +243 -0
  294. package/scripts/qe/evidence_tracker.py +232 -0
  295. package/scripts/qe/prove.py +196 -0
  296. package/scripts/qe/registry_lookup.py +80 -0
  297. package/scripts/qe/registry_store.py +176 -0
  298. package/scripts/qe/semantic_review.py +1005 -0
  299. package/scripts/qe/vault_gate.py +382 -0
  300. package/scripts/qe/verdict_audit.py +175 -0
  301. package/scripts/qe/verdict_schema.py +335 -0
  302. package/scripts/reset.py +220 -0
  303. package/scripts/resolve_path.py +22 -0
  304. package/scripts/sentinel/invariants.py +402 -0
  305. package/scripts/sentinel/pre_push.py +73 -0
  306. package/scripts/setup/__init__.py +1 -0
  307. package/scripts/setup/detect_state.py +114 -0
  308. package/scripts/setup/migrate_legacy.py +67 -0
  309. package/scripts/setup/migrate_v6_projects.py +232 -0
  310. package/scripts/setup/onboarding.py +114 -0
  311. package/scripts/smaht/_bus_consumers.py +98 -0
  312. package/scripts/smaht/adapters/__init__.py +83 -0
  313. package/scripts/smaht/adapters/brain_adapter.py +254 -0
  314. package/scripts/smaht/adapters/context7_adapter.py +438 -0
  315. package/scripts/smaht/adapters/delegation_adapter.py +104 -0
  316. package/scripts/smaht/adapters/domain_adapter.py +206 -0
  317. package/scripts/smaht/adapters/events_adapter.py +231 -0
  318. package/scripts/smaht/adapters/tools_adapter.py +49 -0
  319. package/scripts/smaht/cheatsheet_store.py +236 -0
  320. package/scripts/smaht/context_package.py +386 -0
  321. package/scripts/smaht/knowledge_graph.py +395 -0
  322. package/scripts/smaht/propose_skills.py +856 -0
  323. package/scripts/smaht/test_cheatsheet_store.py +428 -0
  324. package/scripts/statusline.py +151 -0
  325. package/scripts/where_am_i.py +236 -0
  326. package/skills/agentic/agentic-patterns/SKILL.md +91 -0
  327. package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
  328. package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
  329. package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
  330. package/skills/agentic/context-engineering/SKILL.md +142 -0
  331. package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
  332. package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
  333. package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
  334. package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
  335. package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
  336. package/skills/agentic/frameworks/SKILL.md +191 -0
  337. package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
  338. package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
  339. package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
  340. package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
  341. package/skills/agentic/refs/audit.md +134 -0
  342. package/skills/agentic/refs/design.md +137 -0
  343. package/skills/agentic/refs/frameworks.md +102 -0
  344. package/skills/agentic/refs/review.md +160 -0
  345. package/skills/agentic/review-methodology/SKILL.md +186 -0
  346. package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
  347. package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
  348. package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
  349. package/skills/agentic/trust-and-safety/SKILL.md +177 -0
  350. package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
  351. package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
  352. package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
  353. package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
  354. package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
  355. package/skills/archetype/SKILL.md +104 -0
  356. package/skills/archetype/refs/build.md +142 -0
  357. package/skills/archetype/refs/decide.md +117 -0
  358. package/skills/archetype/refs/explore.md +66 -0
  359. package/skills/archetype/refs/incident.md +149 -0
  360. package/skills/archetype/refs/migrate.md +170 -0
  361. package/skills/archetype/refs/modernize.md +187 -0
  362. package/skills/archetype/refs/review.md +145 -0
  363. package/skills/archetype/refs/ship.md +117 -0
  364. package/skills/archetype/refs/specify.md +108 -0
  365. package/skills/archetype/refs/triage.md +62 -0
  366. package/skills/classify/SKILL.md +157 -0
  367. package/skills/data/analysis/SKILL.md +125 -0
  368. package/skills/data/analysis/refs/templates.md +170 -0
  369. package/skills/data/data/SKILL.md +118 -0
  370. package/skills/data/data/refs/examples.md +235 -0
  371. package/skills/data/ml/SKILL.md +125 -0
  372. package/skills/data/ml/refs/templates.md +172 -0
  373. package/skills/data/pipeline/SKILL.md +136 -0
  374. package/skills/data/pipeline/refs/templates.md +175 -0
  375. package/skills/data/refs/analyze.md +123 -0
  376. package/skills/data/refs/data.md +95 -0
  377. package/skills/data/refs/ml.md +118 -0
  378. package/skills/data/refs/pipeline.md +92 -0
  379. package/skills/deliberate/SKILL.md +125 -0
  380. package/skills/deliberate/refs/architecture-lens.md +37 -0
  381. package/skills/deliberate/refs/assumptions-lens.md +43 -0
  382. package/skills/deliberate/refs/code-lens.md +38 -0
  383. package/skills/deliberate/refs/content-lens.md +37 -0
  384. package/skills/deliberate/refs/data-lens.md +43 -0
  385. package/skills/deliberate/refs/design-lens.md +37 -0
  386. package/skills/deliberate/refs/opportunity-patterns.md +107 -0
  387. package/skills/deliberate/refs/ops-lens.md +43 -0
  388. package/skills/deliberate/refs/product-lens.md +46 -0
  389. package/skills/deliberate/refs/rethink-framework.md +77 -0
  390. package/skills/deliberate/refs/security-lens.md +47 -0
  391. package/skills/deliberate/refs/testing-lens.md +45 -0
  392. package/skills/deliberate/refs/timing-lens.md +42 -0
  393. package/skills/engineering/architecture/SKILL.md +177 -0
  394. package/skills/engineering/architecture/refs/adr-template.md +268 -0
  395. package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
  396. package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
  397. package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
  398. package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
  399. package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
  400. package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
  401. package/skills/engineering/backend/SKILL.md +102 -0
  402. package/skills/engineering/backend/refs/checklists.md +146 -0
  403. package/skills/engineering/backend/refs/patterns.md +181 -0
  404. package/skills/engineering/debugging/SKILL.md +99 -0
  405. package/skills/engineering/debugging/refs/patterns.md +248 -0
  406. package/skills/engineering/debugging/refs/process.md +203 -0
  407. package/skills/engineering/docs/SKILL.md +97 -0
  408. package/skills/engineering/engineering/SKILL.md +88 -0
  409. package/skills/engineering/engineering/refs/checklists.md +91 -0
  410. package/skills/engineering/engineering/refs/templates.md +71 -0
  411. package/skills/engineering/frontend/SKILL.md +92 -0
  412. package/skills/engineering/frontend/refs/checklists.md +96 -0
  413. package/skills/engineering/frontend/refs/patterns.md +167 -0
  414. package/skills/engineering/integration/SKILL.md +183 -0
  415. package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
  416. package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
  417. package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
  418. package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
  419. package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
  420. package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
  421. package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
  422. package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
  423. package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
  424. package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
  425. package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
  426. package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
  427. package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
  428. package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
  429. package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
  430. package/skills/engineering/integration/refs/grpc-testing.md +49 -0
  431. package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
  432. package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
  433. package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
  434. package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
  435. package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
  436. package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
  437. package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
  438. package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
  439. package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
  440. package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
  441. package/skills/engineering/large-scale-migration/SKILL.md +65 -0
  442. package/skills/engineering/patch/SKILL.md +184 -0
  443. package/skills/engineering/refs/arch.md +126 -0
  444. package/skills/engineering/refs/debug.md +142 -0
  445. package/skills/engineering/refs/docs.md +190 -0
  446. package/skills/engineering/refs/plan.md +109 -0
  447. package/skills/engineering/refs/review.md +138 -0
  448. package/skills/engineering/system-design/SKILL.md +154 -0
  449. package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
  450. package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
  451. package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
  452. package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
  453. package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
  454. package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
  455. package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
  456. package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
  457. package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
  458. package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
  459. package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
  460. package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
  461. package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
  462. package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
  463. package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
  464. package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
  465. package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
  466. package/skills/engineering/unit-test-quality/SKILL.md +194 -0
  467. package/skills/ground/SKILL.md +130 -0
  468. package/skills/integration-discovery/SKILL.md +168 -0
  469. package/skills/integration-discovery/refs/capabilities.md +282 -0
  470. package/skills/integration-discovery/refs/cli-detection.md +295 -0
  471. package/skills/integration-discovery/refs/discovery-sources.md +233 -0
  472. package/skills/integration-discovery/refs/task-patterns.md +206 -0
  473. package/skills/jam/SKILL.md +45 -0
  474. package/skills/jam/refs/facilitation-patterns.md +125 -0
  475. package/skills/jam/refs/quick.md +64 -0
  476. package/skills/jam/refs/synthesis-patterns.md +114 -0
  477. package/skills/multi-model/SKILL.md +168 -0
  478. package/skills/multi-model/refs/aichat.md +119 -0
  479. package/skills/multi-model/refs/aider.md +100 -0
  480. package/skills/multi-model/refs/auditability.md +238 -0
  481. package/skills/multi-model/refs/codex.md +169 -0
  482. package/skills/multi-model/refs/context.md +306 -0
  483. package/skills/multi-model/refs/copilot.md +161 -0
  484. package/skills/multi-model/refs/examples.md +224 -0
  485. package/skills/multi-model/refs/gemini.md +185 -0
  486. package/skills/multi-model/refs/goose.md +112 -0
  487. package/skills/multi-model/refs/llm.md +124 -0
  488. package/skills/multi-model/refs/opencode.md +196 -0
  489. package/skills/multi-model/refs/orchestration.md +188 -0
  490. package/skills/multi-model/refs/pi.md +208 -0
  491. package/skills/persona/SKILL.md +144 -0
  492. package/skills/persona/refs/define.md +133 -0
  493. package/skills/platform/actions/refs/actions.md +114 -0
  494. package/skills/platform/audit/SKILL.md +174 -0
  495. package/skills/platform/audit/refs/audit.md +145 -0
  496. package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
  497. package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
  498. package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
  499. package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
  500. package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
  501. package/skills/platform/compliance/SKILL.md +169 -0
  502. package/skills/platform/compliance/refs/checklists.md +303 -0
  503. package/skills/platform/compliance/refs/compliance.md +117 -0
  504. package/skills/platform/compliance/refs/frameworks.md +282 -0
  505. package/skills/platform/errors/SKILL.md +183 -0
  506. package/skills/platform/errors/refs/patterns.md +271 -0
  507. package/skills/platform/errors/refs/severity.md +264 -0
  508. package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
  509. package/skills/platform/gh/refs/gh.md +105 -0
  510. package/skills/platform/gh-cli/SKILL.md +120 -0
  511. package/skills/platform/gh-cli/refs/automation.md +63 -0
  512. package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
  513. package/skills/platform/gh-cli/refs/patterns.md +132 -0
  514. package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
  515. package/skills/platform/github-actions/SKILL.md +159 -0
  516. package/skills/platform/github-actions/refs/security.md +150 -0
  517. package/skills/platform/github-actions/refs/templates.md +230 -0
  518. package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
  519. package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
  520. package/skills/platform/gitlab-ci/SKILL.md +140 -0
  521. package/skills/platform/gitlab-ci/refs/templates.md +223 -0
  522. package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
  523. package/skills/platform/glab-cli/SKILL.md +133 -0
  524. package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
  525. package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
  526. package/skills/platform/glab-cli/refs/patterns.md +131 -0
  527. package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
  528. package/skills/platform/health/SKILL.md +177 -0
  529. package/skills/platform/health/refs/health.md +72 -0
  530. package/skills/platform/health/refs/sources.md +302 -0
  531. package/skills/platform/incident/refs/incident.md +136 -0
  532. package/skills/platform/infra/refs/infra.md +104 -0
  533. package/skills/platform/observability/SKILL.md +128 -0
  534. package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
  535. package/skills/platform/prereq-doctor/SKILL.md +57 -0
  536. package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
  537. package/skills/platform/traces/refs/traces.md +101 -0
  538. package/skills/product/acceptance-criteria/SKILL.md +193 -0
  539. package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
  540. package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
  541. package/skills/product/accessibility/SKILL.md +197 -0
  542. package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
  543. package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
  544. package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
  545. package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
  546. package/skills/product/accessibility/refs/audit-report-results.md +276 -0
  547. package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
  548. package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
  549. package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
  550. package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
  551. package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
  552. package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
  553. package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
  554. package/skills/product/analyze/SKILL.md +164 -0
  555. package/skills/product/analyze/refs/algorithms.md +238 -0
  556. package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
  557. package/skills/product/imagery/SKILL.md +97 -0
  558. package/skills/product/imagery/alter/SKILL.md +105 -0
  559. package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
  560. package/skills/product/imagery/create/SKILL.md +109 -0
  561. package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
  562. package/skills/product/imagery/create/refs/provider-reference.md +219 -0
  563. package/skills/product/imagery/review/SKILL.md +101 -0
  564. package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
  565. package/skills/product/imagery/review/refs/quality-gates.md +153 -0
  566. package/skills/product/imagery/scripts/analyze.sh +23 -0
  567. package/skills/product/imagery/scripts/edit.sh +14 -0
  568. package/skills/product/imagery/scripts/generate.sh +13 -0
  569. package/skills/product/imagery/scripts/provider.py +787 -0
  570. package/skills/product/listen/SKILL.md +175 -0
  571. package/skills/product/listen/refs/channels.md +220 -0
  572. package/skills/product/mockup/SKILL.md +106 -0
  573. package/skills/product/mockup/refs/templates.md +95 -0
  574. package/skills/product/refs/a11y.md +109 -0
  575. package/skills/product/refs/acceptance.md +79 -0
  576. package/skills/product/refs/align.md +67 -0
  577. package/skills/product/refs/analyze.md +77 -0
  578. package/skills/product/refs/elicit.md +67 -0
  579. package/skills/product/refs/listen.md +58 -0
  580. package/skills/product/refs/mockup.md +77 -0
  581. package/skills/product/refs/screenshot.md +59 -0
  582. package/skills/product/refs/strategy.md +77 -0
  583. package/skills/product/refs/synthesize.md +54 -0
  584. package/skills/product/refs/ux-review.md +68 -0
  585. package/skills/product/refs/ux.md +101 -0
  586. package/skills/product/requirements-analysis/SKILL.md +136 -0
  587. package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
  588. package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
  589. package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
  590. package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
  591. package/skills/product/requirements-graph/SKILL.md +155 -0
  592. package/skills/product/requirements-graph/refs/examples.md +223 -0
  593. package/skills/product/requirements-graph/refs/schema.md +162 -0
  594. package/skills/product/requirements-migrate/SKILL.md +90 -0
  595. package/skills/product/requirements-navigate/SKILL.md +141 -0
  596. package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
  597. package/skills/product/screenshot/SKILL.md +147 -0
  598. package/skills/product/strategy/SKILL.md +198 -0
  599. package/skills/product/strategy/refs/frameworks.md +295 -0
  600. package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
  601. package/skills/product/strategy/refs/templates-roi-value.md +207 -0
  602. package/skills/product/synthesize/SKILL.md +116 -0
  603. package/skills/product/synthesize/refs/journey-mapping.md +212 -0
  604. package/skills/product/synthesize/refs/prioritization.md +193 -0
  605. package/skills/product/ux-review/SKILL.md +164 -0
  606. package/skills/product/visual-direction/SKILL.md +137 -0
  607. package/skills/product/visual-review/SKILL.md +131 -0
  608. package/skills/runtime-exec/SKILL.md +138 -0
  609. package/skills/search/codebase-narrator/SKILL.md +131 -0
  610. package/skills/search/codebase-narrator/refs/output-template.md +100 -0
  611. package/skills/smaht/SKILL.md +72 -0
  612. package/skills/smaht/discovery/SKILL.md +65 -0
  613. package/skills/smaht/intent/SKILL.md +89 -0
  614. package/skills/smaht/propose-skills/SKILL.md +142 -0
  615. package/skills/smaht/refs/state.md +76 -0
  616. package/skills/swarm/SKILL.md +132 -0
  617. package/skills/swarm/refs/fan-out.md +104 -0
  618. package/skills/swarm/refs/independent-verification.md +86 -0
  619. package/skills/swarm/refs/receipts-and-evidence.md +69 -0
  620. package/skills/swarm/refs/recon-synthesis.md +87 -0
  621. package/skills/swarm/refs/ship-discipline.md +90 -0
  622. package/skills/wickedizer/SKILL.md +147 -0
  623. package/skills/wickedizer/refs/artifact-types.md +238 -0
  624. package/skills/wickedizer/refs/complexity.md +278 -0
  625. package/skills/wickedizer/refs/de-ai-pass.md +140 -0
  626. package/skills/wickedizer/refs/failure-modes.md +249 -0
  627. package/skills/wickedizer/refs/patterns.md +282 -0
  628. package/skills/wickedizer/refs/review.md +221 -0
  629. package/skills/wickedizer/refs/structure.md +282 -0
  630. package/skills/wickedizer/refs/voice-profile.md +125 -0
  631. package/skills/workflow/SKILL.md +132 -0
  632. package/skills/workflow/refs/archetype-adjustments.md +205 -0
  633. package/skills/workflow/refs/evidence.md +58 -0
  634. package/skills/workflow/refs/integration.md +130 -0
  635. package/skills/workflow/refs/risk-dimension-signals.md +260 -0
  636. package/skills/workflow/refs/scoring-rubric.md +49 -0
  637. package/skills/workflow/refs/signal-keywords.md +176 -0
  638. package/skills/workflow/refs/specialist-routing-rules.md +159 -0
  639. package/skills/worktrees/SKILL.md +87 -0
  640. package/skills/worktrees/refs/recipes.md +96 -0
@@ -0,0 +1,187 @@
1
+ # modernize — discover / extract / blueprint / transform / parity / cutover
2
+
3
+ For porting a **legacy codebase to a new stack** (a language/framework/runtime
4
+ jump, a rehost/replatform, a rewrite from the working code as the spec). This is
5
+ NOT `migrate` — `migrate` is in-place expand-contract shape change on a *running*
6
+ system. `modernize` reverse-engineers an estate, blueprints a target, transforms
7
+ with leverage, and proves parity before cutting over.
8
+
9
+ This archetype is a **general modernization steering shape**. It is self-contained
10
+ and **composes the general `code-modernization` skills** for the heavy lifting —
11
+ it does not own a parallel lifecycle, and it routes the same rigor/gate discipline
12
+ garden already preaches into those skills.
13
+
14
+ ## Phase shape
15
+
16
+ | Phase | Goal |
17
+ |-----------|-------------------------------------------------------------------|
18
+ | discover | Map the estate; resolve the legacy **stack class** via the registry. |
19
+ | extract | Pull out the testable business rules (what it does, not how). |
20
+ | blueprint | Decide the target-state architecture. Decision matrix, not prose. |
21
+ | transform | Codemod / regenerate with leverage. Deterministic before AI. |
22
+ | parity | Prove old ≡ new on identical inputs. Differential equivalence. |
23
+ | cutover | Switch to the new stack. **Hard gate** — staged, parity-proved. |
24
+
25
+ ## Produces
26
+
27
+ - **Modernization blueprint**: the target-state architecture (target stack,
28
+ package/module structure, API surface, data model) + the recorded technique
29
+ choice per transform wave.
30
+ - **Parity proof**: an executable, re-derivable equivalence check — old vs new
31
+ on identical seeded inputs assert identical outputs (the trust, not review).
32
+
33
+ The cutover gate **re-derives** these via `wicked-loom` (`scripts/qe/vault_gate.py`
34
+ shells `wicked-loom gate`, which shells `wicked-vault cross-check`): the parity
35
+ harness is re-run and the blueprint post-condition re-checked, never trusting a
36
+ self-asserted "ported fine". wicked-loom (the gate engine) and wicked-vault (the
37
+ evidence backend) are **required** peers (installed by `/wicked-garden:setup`); if
38
+ loom is unresolvable — or the vault behind it absent — the gate **fails closed**
39
+ (`gate: "unavailable"`, `satisfied: false`) rather than self-asserting a PASS.
40
+ Because `cutover` is a HARD gate, the gate also demands an **independent
41
+ attestation**: an evaluator who is **not** the modernizer confirms the parity proof
42
+ and blueprint are adequate (recorded via `wicked-vault:analyze-evidence`), and the
43
+ gate fails closed on a self-grade.
44
+
45
+ ## HITL
46
+
47
+ `hard:cutover-gate` — cutover is a hard gate. Don't cut over to the new stack
48
+ without explicit user approval AND a green pre-cutover checklist (parity proved on
49
+ real seeded data, rollback path to the legacy system tested, traffic plan staged).
50
+
51
+ ## Ground in the repo's method first
52
+
53
+ Before you discover, check for **wicked-understanding** repo playbooks (the opt-in
54
+ "how to work in THIS repo" layer). A modernization lives or dies on repo-specific
55
+ wiring — the build/run command, where the seam between old and new lives, the
56
+ deploy/rollback command. If its skills are present, **load the matching playbook**
57
+ and let it name those points instead of rediscovering them mid-cutover. Absent?
58
+ Discover it the usual way — and consider
59
+ `npx skills add mikeparcewski/wicked-understanding --all`.
60
+
61
+ ## How to run
62
+
63
+ ### discover
64
+
65
+ 1. Survey the legacy estate: entry points, modules, data stores, external
66
+ contracts. Use `code-modernization:modernize-assess` for the structural read
67
+ and `code-modernization:modernize-brief` to frame scope + risk.
68
+ 2. **Resolve the stack class — DO NOT fabricate a playbook.** Read the dispatch
69
+ truth in `.claude-plugin/stack-registry.json` via the reader:
70
+ ```bash
71
+ sh "${CLAUDE_PLUGIN_ROOT}/scripts/_python.sh" \
72
+ "${CLAUDE_PLUGIN_ROOT}/scripts/crew/stack_registry.py" \
73
+ resolve --stack <stack-id>
74
+ ```
75
+ - `status: wired` (exit 0) → the printed `dispatch` names the `blueprint`,
76
+ `transform`, and `validate` skills/gate to use in the phases below.
77
+ - unknown / `planned` / `none` (exit 3) → the reader returns a **capability-gap
78
+ task** and emits `wicked.modernize.stack_gap`. **STOP.** Create that task
79
+ (`TaskCreate`) and surface the gap to the user — never invent a transform for a
80
+ stack the system can't actually handle. This is the fail-closed ETHOS as
81
+ dispatch data: an honest "we don't handle this yet" beats a fabricated port.
82
+ - When the legacy stack genuinely is not in the registry but IS general
83
+ (any language → modern target), use the `generic-cross-stack` entry, which is
84
+ wired to the general `code-modernization` skills.
85
+
86
+ ### extract
87
+
88
+ 1. Mine the domain logic — calculations, validations, policies — into testable
89
+ Given/When/Then specs with `code-modernization:modernize-extract-rules`.
90
+ Separate *what the business requires* from *how the old code happened to do it*.
91
+ 2. These extracted rules become the parity oracle: the new stack must satisfy the
92
+ same rules. Pin each rule so the parity phase has a bar to check.
93
+
94
+ ### blueprint
95
+
96
+ 1. Decide the **target-state architecture** with `code-modernization:modernize-reimagine`
97
+ (the registry `blueprint` field names this for the resolved stack). Capture it
98
+ as a **decision matrix, not a narrative**: target stack + version (pin, don't
99
+ "latest"), module/package structure, API surface, data model, the engines/tools.
100
+ 2. Write the blueprint to `docs/modernization/{slug}-blueprint.md` and declare the
101
+ re-derivable contract early so the cutover gate has a bar. If a vault is
102
+ resolvable (`scripts/qe/vault_gate.py resolve` → `available: true`):
103
+ `wicked-vault init` then
104
+ `wicked-vault declare-contract --scope <scope> --phase modernize --spec contract.json`.
105
+ `required_evidence` must pin `parity-proof` to a deterministic verifier
106
+ (`exit_code_eq:0` on the differential harness). Skip silently if no vault.
107
+
108
+ ### transform
109
+
110
+ 1. Transform **with leverage, not an agent-grind** — follow
111
+ `wicked-garden:engineering:large-scale-migration` (MAP → TRANSFORM → GATE) and
112
+ its ranked techniques menu: **prefer the lowest-numbered technique that fully
113
+ covers the task** (deterministic recipe/codemod before AI-assisted waves), and
114
+ **record the chosen technique** per wave. Drive the bulk through a deterministic
115
+ codemod/codegen; touch only the self-flagged residue by hand.
116
+ 2. Run the resolved `transform` skills (`code-modernization:modernize-map` then
117
+ `code-modernization:modernize-transform`) over the estate.
118
+ 3. **Don't grandfather.** No exemptions, no "left raw with a TODO" — an exemption
119
+ preserves the exact legacy case the modernization exists to remove.
120
+
121
+ ### parity
122
+
123
+ 1. Prove **old ≡ new** on identical seeded inputs (differential equivalence) — the
124
+ parity proof is the trust, not a diff review. Seed broadly; an empty fixture
125
+ passes trivially and lies.
126
+ 2. Harden the result with `code-modernization:modernize-harden` (security/CVEs,
127
+ error handling) before it carries traffic.
128
+ 3. Record the parity proof as re-derivable evidence (vault present; **wicked-vault
129
+ ≥ 0.4.0**):
130
+ `wicked-vault record --scope <scope> --phase modernize --claim parity-proof
131
+ --kind differential --source "<the differential harness command>"
132
+ --criteria "old(input) == new(input) on seeded data" --verifier exit_code_eq:0
133
+ --actor "${WICKED_VAULT_ACTOR:-garden-prove}" --run`. The **`--actor`** is
134
+ mandatory because `cutover` is a hard gate: vault ≥ 0.4.0 refuses an `attest`
135
+ over weak/ambient-identity evidence, so without an explicit actor the
136
+ independent attestation fails closed and cutover can never be gated PASS. The
137
+ `--run` captures the real exit code now and the gate re-runs it later — a claim
138
+ you can't re-derive is not evidence. No vault → fall back to
139
+ `evidence_tracker.py claim`.
140
+
141
+ ### cutover
142
+
143
+ 1. **Pre-cutover checklist**:
144
+ - Parity proved on real seeded data. (`✓` or block.)
145
+ - Rollback path to the legacy system tested.
146
+ - Traffic plan staged (canary first, not big-bang).
147
+ - Monitoring + alerts cover the new stack.
148
+ 2. **Gate before any switch** — don't self-assert the checklist. Run the
149
+ produces-gate WITH judgment:
150
+ `scripts/qe/prove.py parity-proof --by "<command>" --scope <scope> --phase modernize --with-attestations`
151
+ (frictionless, single claim — re-derive, don't assert) — or the full multi-claim
152
+ contract via
153
+ `scripts/qe/vault_gate.py gate <project_dir> --scope <scope> --phase modernize --with-attestations`.
154
+ `--with-attestations` keeps this gate `UNATTESTED`/`REJECT` until an INDEPENDENT
155
+ evaluator (not the doer) runs `wicked-vault attest <artifact-id> --opinion pass`
156
+ — find it via `wicked-vault list --scope <scope> --phase modernize`. The doer's
157
+ own evidence cannot satisfy a hard gate. (exit 0 = satisfied.) A REJECT means the
158
+ parity proof doesn't clear its contract — fix the work, not the claim. An
159
+ `unavailable` verdict means the required vault isn't installed — run
160
+ `/wicked-garden:setup`. **No cutover on a fail-closed verdict.**
161
+ 3. **Cutover staged**: canary the new stack, watch, ramp. Hand the rollout tail to
162
+ the `ship` archetype if blast radius warrants.
163
+ 4. The cutover gate is HARD — explicit user "go" before each ramp step.
164
+ 5. If anything looks off post-cutover: **roll back to the legacy system first,
165
+ debug second.**
166
+
167
+ ## When to stop
168
+
169
+ Cutover may only proceed when the produces-gate is satisfied — check it, don't
170
+ self-assert it (see the cutover step). Modernize is done when traffic is on the new
171
+ stack, parity has soaked, and the blueprint matches what shipped. Hand off to
172
+ `review` for a post-modernization audit when the change touched compliance or
173
+ revenue surface.
174
+
175
+ ## Anti-patterns
176
+
177
+ - **Don't fabricate a playbook for an unhandled stack.** If the registry says
178
+ `planned`/`none`/unknown, emit the gap task and stop. A fabricated port is the
179
+ exact failure the fail-closed ETHOS exists to prevent.
180
+ - **Don't hand-edit the bulk.** Modernization is MAP → TRANSFORM → GATE, not "fan
181
+ out N agents to rewrite each file." Deterministic transform first; AI only for the
182
+ residue, eval-gated.
183
+ - **Don't trust build-green as parity.** Build/test green ≠ behavior preserved —
184
+ *especially* for any LLM/agent surface. Prove `old ≡ new` on real inputs.
185
+ - **Don't big-bang the cutover.** Canary, ramp, soak — same discipline as `migrate`.
186
+ - **Don't skip rollback testing.** A path back to the legacy system you haven't
187
+ exercised is not a rollback path.
@@ -0,0 +1,145 @@
1
+ # review — independent assessment with hard verdict
2
+
3
+ When an artifact (code, design, spec, incident response) needs an
4
+ external quality check. Produces a verdict: APPROVE / CONDITIONAL /
5
+ REJECT, with a remediation list when not APPROVE.
6
+
7
+ ## Phase shape
8
+
9
+ | Phase | Goal |
10
+ |------------------------|--------------------------------------------|
11
+ | scope | Name what's being reviewed and what isn't. |
12
+ | assess | Apply the relevant rubric / quality bar. |
13
+ | findings | List what's wrong, what's missing, what's good (in that order). |
14
+ | remediate-or-accept | Pick: fix the findings, accept them with a CONDITIONAL, or reject. |
15
+
16
+ ## Produces
17
+
18
+ - **Verdict**: `APPROVE` / `CONDITIONAL` / `REJECT`.
19
+ - **Remediation list**: each item has an id, severity, and a concrete
20
+ action. Empty when APPROVE.
21
+
22
+ The final-verdict gate **re-derives** these via `wicked-loom` (`scripts/qe/vault_gate.py` shells `wicked-loom gate`, which shells `wicked-vault cross-check`): the verdict JSON is re-validated and the
23
+ remediation-list structure re-checked, never trusting a self-asserted
24
+ "done". wicked-loom (the gate engine) and wicked-vault (the evidence backend) are **required** peers (installed by `/wicked-garden:setup`); if loom is unresolvable — or the vault behind it absent — the gate **fails closed** (`gate: "unavailable"`, `satisfied: false`) rather than passing
25
+ on a claim alone. Because final-verdict is a **hard** gate, the contract
26
+ also demands an **independent attestation** — the verdict must be signed
27
+ off by an evaluator that is NOT the worker who did the reviewed work
28
+ (anti-self-grade, G10). `--no-require` opts a throwaway/low-rigor run
29
+ back to the doctrine-light claim-only path.
30
+
31
+ ## HITL
32
+
33
+ `hard:final-verdict` — the verdict is a hard gate. Auto-approve is
34
+ banned (banned-reviewer enforcement applies — `auto-approve-*`,
35
+ `fast-pass`, `just-finish-auto` are rejected at the gate).
36
+
37
+ ## How to run
38
+
39
+ ### scope
40
+
41
+ 1. Name what's in scope: this PR, this commit, this design doc.
42
+ 2. Name what's out of scope: don't drift into adjacent code that wasn't
43
+ changed.
44
+ 3. Pick the rubric: code review uses R1–R6; design review uses
45
+ testability + boundary clarity; spec review uses SMART+T.
46
+ 4. If a vault is resolvable (`scripts/qe/vault_gate.py resolve` →
47
+ `available: true`), declare the re-derivable contract for this phase
48
+ so the final-verdict gate has a bar to check against:
49
+ `wicked-vault init` (once per repo) then
50
+ `wicked-vault declare-contract --scope <scope> --phase review --spec contract.json`.
51
+ `required_evidence` should pin `verdict` to `exit_code_eq:0` on a
52
+ verdict-schema validation (`scripts/qe/verdict_schema.py`) and
53
+ `remediation-list` to a presence/structure `regex_match`. Because
54
+ this is a **hard** gate, the contract also requires a passing
55
+ independent `opinion_attestation` (the judgment tier). Skip silently
56
+ if no vault.
57
+
58
+ ### assess
59
+
60
+ 1. Apply the rubric. Take notes; don't write the findings yet.
61
+ 2. Use the right specialist subagent — `pr-review-toolkit:code-reviewer`,
62
+ `wicked-garden:crew:reviewer`, `wicked-garden:qe:semantic-reviewer`,
63
+ `wicked-garden:engineering:solution-architect`, etc. Match the artifact
64
+ to the specialist.
65
+ 3. For high-stakes reviews, run a council via
66
+ `wicked-garden:jam:council` — independent multi-model verdicts
67
+ catch what a single reviewer misses.
68
+
69
+ ### findings
70
+
71
+ 1. Write the findings list. Each finding:
72
+ - `id`: F-1, F-2, ...
73
+ - `severity`: blocker / major / minor / nit
74
+ - `claim`: what's wrong, in one sentence.
75
+ - `fix`: a concrete action.
76
+ 2. Order: blockers first, then major, then minor. Nits last (or
77
+ collapsed into a "nit-pile" comment).
78
+
79
+ ### remediate-or-accept
80
+
81
+ 1. Decide the verdict:
82
+ - **APPROVE**: no blockers, no majors, the code is shippable as-is.
83
+ - **CONDITIONAL**: blockers/majors that have a clear fix path. Each
84
+ condition gets a row in the conditions manifest so the next
85
+ archetype (build / migrate / etc.) can pin it to the resolution
86
+ artifact.
87
+ - **REJECT**: fundamental issues. Don't bandaid; send back to the
88
+ author.
89
+ 2. Write the verdict JSON. Validate with `scripts/qe/verdict_schema.py`
90
+ — confirms shape (verdict enum, reviewer not banned, score in
91
+ range, invariants per verdict type).
92
+ 3. Sanitize free-text fields with `scripts/qe/content_sanitizer.py`
93
+ to strip prompt-injection patterns from reasons / findings /
94
+ condition descriptions before persisting.
95
+ 4. Append to the audit log with `scripts/qe/verdict_audit.py append`
96
+ so the verdict is replayable.
97
+ Then record both produces as re-derivable evidence (vault present;
98
+ **wicked-vault ≥ 0.4.0**):
99
+ `wicked-vault record --scope <scope> --phase review --claim verdict
100
+ --kind verdict --source "<verdict.json>" --criteria "<the bar>"
101
+ --verifier exit_code_eq:0 --actor "${WICKED_VAULT_ACTOR:-garden-prove}"
102
+ --run` where the run is `scripts/qe/verdict_schema.py <verdict.json>`,
103
+ and a second `record` for `--claim remediation-list ... --verifier
104
+ regex_match:<pattern> --actor "${WICKED_VAULT_ACTOR:-garden-prove}"`.
105
+ The **`--actor`** is mandatory for a hard gate: vault ≥ 0.4.0 refuses an
106
+ `attest` over evidence recorded under a weak/ambient identity
107
+ (`created_by_source='env-user'`), so without an explicit actor the
108
+ independent sign-off below fails closed and the gate can never reach
109
+ PASS. The `--run` captures the validator's real exit code now and the
110
+ gate re-runs it later — a claim you can't re-derive is not evidence. No
111
+ vault → fall back to `evidence_tracker.py claim`.
112
+ Then have an **independent** evaluator sign off via the
113
+ `wicked-vault:analyze-evidence` skill, which records an
114
+ `opinion_attestation` over the frozen criteria. The evaluator must
115
+ NOT be the agent that did the reviewed work — the gate fails closed
116
+ on a self-grade. This is the "never let work self-grade its own done"
117
+ guarantee.
118
+ 5. On CONDITIONAL: initialise the conditions manifest with
119
+ `scripts/qe/conditions_manifest.py init --from-verdict <path>`.
120
+ The downstream archetype calls `mark` as it satisfies each one.
121
+ 6. Don't soften — REJECT means REJECT.
122
+
123
+ ## When to stop
124
+
125
+ Review is done when the produces-gate is satisfied. Check the gate —
126
+ don't self-assert it:
127
+ `scripts/qe/prove.py <claim> --by "<command>" --scope <scope> --phase review --with-attestations` (frictionless, single claim — re-derive, don't assert) — or the full multi-claim contract via `scripts/qe/vault_gate.py gate <project_dir> --scope <scope> --phase review --with-attestations` **`--with-attestations`** keeps this gate `UNATTESTED`/`REJECT` until an INDEPENDENT evaluator (not the doer) runs `wicked-vault attest <artifact-id> --opinion pass` — find it via `wicked-vault list --scope <scope> --phase review`. The doer's own evidence cannot satisfy a hard gate.
128
+ (exit 0 = satisfied). This is a re-derived PASS over the declared
129
+ contract. `--with-attestations` makes the gate require a passing
130
+ independent `opinion_attestation` recorded via the
131
+ `wicked-vault:analyze-evidence` skill, where the evaluator ≠ the agent
132
+ that did the reviewed work — it fails closed on a self-grade. A REJECT
133
+ means the recorded evidence does not clear its contract — fix the work,
134
+ not the claim. An `unavailable` verdict means the required vault isn't
135
+ installed — run `/wicked-garden:setup`. Then hand off to `build` (when
136
+ fixes are needed before ship) or `ship` (when APPROVE).
137
+
138
+ ## Anti-patterns
139
+
140
+ - **Don't sandbag with nits.** If the only findings are nits, APPROVE.
141
+ Don't gate on cosmetic preferences.
142
+ - **Don't write a fix during review.** The reviewer's job is the
143
+ verdict; the fix is the author's.
144
+ - **Don't auto-approve for speed.** Banned-reviewer enforcement exists
145
+ for a reason. Time pressure is not a CONDITIONAL.
@@ -0,0 +1,117 @@
1
+ # ship — progressive rollout with widening blast radius
2
+
3
+ For changes that are already built and tested but need controlled exposure
4
+ to production. Each phase widens blast radius; gates are explicit ramps.
5
+
6
+ ## Phase shape
7
+
8
+ | Phase | Goal |
9
+ |--------|------------------------------------------------------------|
10
+ | canary | Expose to a small slice (1–5% traffic, internal only, single region). |
11
+ | ramp | Widen progressively (10% → 25% → 50%) with monitoring at each step. |
12
+ | full | 100% exposure. Production traffic on the new path. |
13
+ | soak | Keep the new path running unchanged for 24–72h. Watch the long tail. |
14
+
15
+ ## Produces
16
+
17
+ - **Rollout verdict**: APPROVE / ROLLBACK / HOLD at each gate.
18
+ - **SLO snapshot**: error rate, latency, saturation at each phase
19
+ boundary, compared to the pre-rollout baseline.
20
+
21
+ The ramp gate **re-derives** these via `wicked-loom` (`scripts/qe/vault_gate.py` shells `wicked-loom gate`, which shells `wicked-vault cross-check`): the SLO snapshot's verifier is re-run and
22
+ the rollout-verdict command's exit code re-checked, never trusting a
23
+ cached "looked clean". Because live observation verifiers
24
+ (`http_status_eq`, `pr_check_status`) aren't implemented yet, **capture
25
+ the SLO metrics to a snapshot file** and verify with `jq_pred` over that
26
+ captured JSON — deterministic and re-derivable, not a one-shot live
27
+ probe. wicked-loom (the gate engine) and wicked-vault (the evidence backend) are **required** peers (installed by `/wicked-garden:setup`); if loom is unresolvable — or the vault behind it absent — the gate **fails closed** (`gate: "unavailable"`, `satisfied: false`) rather than
28
+ self-asserting an APPROVE. `--no-require` opts a throwaway/low-rigor
29
+ rollout back to the doctrine-light claim-only path.
30
+
31
+ ## HITL
32
+
33
+ `discrete:ramp-gates` — each phase boundary is a discrete gate. Auto-pass
34
+ is allowed when SLO criteria are clean and prior phases passed; auto-fail
35
+ (rollback) is allowed when SLO criteria breach. **Manual override is
36
+ always available.** Don't bypass the gate; widen the criteria.
37
+
38
+ ## How to run
39
+
40
+ ### canary
41
+
42
+ 1. Define the slice: which traffic, what %, what region.
43
+ 2. Define the SLO criteria: error rate threshold, latency p95/p99
44
+ threshold, saturation threshold. Pull baseline from the last 7d.
45
+ 3. If a vault is resolvable
46
+ (`scripts/qe/vault_gate.py resolve` → `available: true`), declare the
47
+ re-derivable contract for this rollout so every ramp gate has a bar to
48
+ check against: `wicked-vault init` (once per repo) then
49
+ `wicked-vault declare-contract --scope <scope> --phase ship --spec
50
+ contract.json`. `required_evidence` pins `slo-snapshot` (kind
51
+ `metrics-snapshot`) to a `jq_pred` verifier over a captured metrics
52
+ JSON file (e.g. `.error_rate <= 0.01 and .p95_ms < 250`) and
53
+ `rollout-verdict` to `exit_code_eq:0` on the canary/ramp check command.
54
+ Skip silently if no vault.
55
+ 4. Deploy. Watch for at least 1 hour OR 1000 requests, whichever is
56
+ longer.
57
+ 5. Compare to baseline. If clean: pass to ramp. If degraded:
58
+ **rollback immediately**. Don't tune in production.
59
+
60
+ ### ramp
61
+
62
+ 1. Step the ramp at 10% → 25% → 50%. Don't skip steps.
63
+ 2. At each step, the SLO criteria from canary still apply. New metrics
64
+ may surface as load scales (saturation, queue depth, lock contention).
65
+ 3. Each step gets at least 30 minutes of soak before stepping up.
66
+ 4. At each step, **capture fresh SLO metrics to a snapshot file** (don't
67
+ probe live), then record both produces as re-derivable evidence
68
+ (vault present):
69
+ `wicked-vault record --scope <scope> --phase ship --claim slo-snapshot
70
+ --kind metrics-snapshot --artifact <metrics.json> --criteria "<the
71
+ SLO bar>" --verifier 'jq_pred:.error_rate <= 0.01 and .p95_ms < 250'`
72
+ and `wicked-vault record --scope <scope> --phase ship --claim
73
+ rollout-verdict --kind check --source "<the canary/ramp check
74
+ command>" --criteria "verdict is APPROVE" --verifier exit_code_eq:0
75
+ --run`. The `jq_pred` re-runs against the captured snapshot and
76
+ `--run` re-checks the verdict command's real exit code — a claim you
77
+ can't re-derive is not evidence. Each ramp step supersedes the prior
78
+ snapshot, so the cross-check runs against fresh captured evidence at
79
+ every step. No vault → fall back to `evidence_tracker.py claim`.
80
+ 5. The `ship` archetype owns the canonical rollout playbook.
81
+
82
+ ### full
83
+
84
+ 1. Step from 50% → 100%. The same SLO criteria apply.
85
+ 2. Tag the release. Publish a one-line "shipped X" note for visibility.
86
+
87
+ ### soak
88
+
89
+ 1. Watch for 24–72h depending on the change's criticality.
90
+ 2. The long tail surfaces issues canary missed: data drift, slow leaks,
91
+ off-hours load patterns, third-party rate limits.
92
+ 3. Soak ends when there's no anomaly outside the baseline noise band.
93
+
94
+ ## When to stop
95
+
96
+ Each ramp step advances only when the produces-gate is satisfied — check
97
+ it, don't self-assert it:
98
+ `scripts/qe/prove.py <claim> --by "<command>" --scope <scope> --phase ship` (frictionless, single claim — re-derive, don't assert) — or the full multi-claim contract via `scripts/qe/vault_gate.py gate <project_dir> --scope <scope> --phase ship`
99
+ (exit 0 = satisfied). This is a re-derived APPROVE over the declared
100
+ contract, re-run at **every** ramp step against the fresh captured
101
+ snapshot. A REJECT means the recorded SLO snapshot doesn't clear its
102
+ budget — **rollback**, don't widen. An `unavailable` verdict means the
103
+ required vault isn't installed — run `/wicked-garden:setup`.
104
+
105
+ Ship is done when soak is clean. Hand off to `review` for a post-rollout
106
+ audit when the change was high-blast-radius, or close out otherwise.
107
+
108
+ ## Anti-patterns
109
+
110
+ - **Don't skip ramp.** 0% → 100% is not a rollout; it's a deploy.
111
+ - **Don't auto-pass under degraded SLOs.** "It's only slightly worse"
112
+ has rolled out exactly the kind of regression rollouts are meant to
113
+ catch.
114
+ - **Don't ship and walk.** Soak is part of ship. A rollout that ends at
115
+ full is incomplete.
116
+ - **Don't treat ramp as a build phase.** No code changes during ramp.
117
+ Tuning happens in a follow-up build → ship cycle.
@@ -0,0 +1,108 @@
1
+ # specify — turn an ask into testable acceptance criteria
2
+
3
+ When the implementation path is clear-ish but the success criteria are
4
+ fuzzy. Produces SMART acceptance criteria — Specific, Measurable,
5
+ Achievable, Relevant, Time-bound — that downstream `build` can verify.
6
+
7
+ ## Phase shape
8
+
9
+ | Phase | Goal |
10
+ |----------|------------------------------------------------------------|
11
+ | elicit | Surface the user's intent through targeted questions. |
12
+ | structure | Convert intent into REQ-/AC- numbered acceptance criteria.|
13
+ | validate | Confirm with the user that the ACs match their intent. |
14
+
15
+ ## Produces
16
+
17
+ - **SMART acceptance criteria** in the form `AC-N: when X, then Y`.
18
+ - One-line invariants: "A response time over 500ms is a regression".
19
+ - Optional: a `requirements.md` artifact in the project dir.
20
+
21
+ The validate gate **re-derives** this via `wicked-loom` (`scripts/qe/vault_gate.py` shells `wicked-loom gate`, which shells `wicked-vault cross-check`): the recorded `smart-acceptance-criteria`
22
+ artifact is re-hashed and its structural verifier re-run, never trusting
23
+ a self-asserted "the ACs are testable". wicked-loom (the gate engine) and wicked-vault (the evidence backend) are **required** peers (installed by `/wicked-garden:setup`); if loom is unresolvable — or the vault behind it absent — the gate **fails closed** (`gate: "unavailable"`, `satisfied: false`) rather
24
+ than claiming a PASS. `--no-require` opts a throwaway/low-rigor run back
25
+ to the doctrine-light claim-only path. This is a discrete (light) gate —
26
+ the deterministic check proves *shape* (each AC is measurable); if the
27
+ AC *quality* needs an independent sign-off, the judgment tier
28
+ (`wicked-vault analyze-evidence` / `--with-attestations`) is available.
29
+
30
+ ## HITL
31
+
32
+ `discrete:validate-gate` — the validate phase is a hard checkpoint. Don't
33
+ proceed past validate without explicit user agreement on the AC set.
34
+
35
+ ## How to run
36
+
37
+ ### elicit
38
+
39
+ 1. Use `/wicked-garden:product:elicit` if requirements analysis is needed,
40
+ or jump in directly when the surface is small.
41
+ 2. Ask 3–5 questions. Each should be answerable in one line and target a
42
+ specific dimension: scope, success metric, failure mode, edge case,
43
+ non-goal.
44
+ 3. **Don't ask open-ended "tell me more about X".** Force the user to pick
45
+ between concrete options.
46
+
47
+ ### structure
48
+
49
+ 1. If a vault is resolvable
50
+ (`scripts/qe/vault_gate.py resolve` → `available: true`), declare the
51
+ re-derivable contract for this phase so the validate gate has a bar to
52
+ check against: `wicked-vault init` (once per repo) then
53
+ `wicked-vault declare-contract --scope <scope> --phase specify --spec contract.json`
54
+ — `required_evidence` should pin `smart-acceptance-criteria`
55
+ (kind `spec-doc`) to a `regex_match` verifier proving the criteria are
56
+ testable/measurable (e.g. each AC carries a measurable assertion or a
57
+ Given/When/Then shape). Skip silently if no vault.
58
+ 2. Convert each elicited fact into one acceptance criterion: `AC-N: when
59
+ <trigger>, then <observable>`.
60
+ 3. Add invariants for things that should NOT change: `INV-N: <thing> must
61
+ stay under <threshold>`.
62
+ 4. Keep ACs minimal — 3–7 is the sweet spot. More than 10 means you're
63
+ treating ACs as design.
64
+ 5. Record the AC artifact as re-derivable evidence (vault present;
65
+ **wicked-vault ≥ 0.4.0**):
66
+ `wicked-vault record --scope <scope> --phase specify
67
+ --claim smart-acceptance-criteria --kind spec-doc
68
+ --artifact <path/to/requirements.md>
69
+ --criteria "<the testability bar>"
70
+ --verifier regex_match:'(?im)^(AC|INV)-\d+:'
71
+ --actor "${WICKED_VAULT_ACTOR:-garden-prove}" --run`. The **`--actor`**
72
+ records under an explicit identity so that if AC quality needs an
73
+ independent sign-off (the optional `--with-attestations` judgment tier
74
+ above), vault ≥ 0.4.0 will let that attestation through instead of
75
+ refusing it as a weak/ambient identity. The verifier re-runs against
76
+ the artifact later — a claim you can't re-derive is not evidence. No
77
+ vault → fall back to the claim-only path.
78
+
79
+ ### validate
80
+
81
+ 1. Show the user the AC list.
82
+ 2. Ask: "is anything missing? is anything wrong? is anything overspecified?"
83
+ 3. **Hard gate**: do not exit specify until the user explicitly approves the
84
+ AC set. "Looks good" is enough; silence is not.
85
+ 4. If they want changes, loop back to elicit or structure as appropriate.
86
+
87
+ ## When to stop
88
+
89
+ Specify is done when the user has signed off on the AC list AND the
90
+ produces-gate is satisfied. Check the gate — don't self-assert it:
91
+ `scripts/qe/prove.py <claim> --by "<command>" --scope <scope> --phase specify` (frictionless, single claim — re-derive, don't assert) — or the full multi-claim contract via `scripts/qe/vault_gate.py gate <project_dir> --scope <scope> --phase specify`
92
+ (exit 0 = satisfied). This is a re-derived PASS over the declared
93
+ contract: the AC artifact is re-hashed and its structural verifier
94
+ re-run. A REJECT means the recorded ACs don't clear the testability bar —
95
+ fix the criteria, not the claim. An `unavailable` verdict means the
96
+ required vault isn't installed — run `/wicked-garden:setup`. Then hand off
97
+ to `build` (when the next step is implementation), `decide` (when you've
98
+ uncovered competing options), or `explore` (when the act of writing ACs
99
+ revealed the problem isn't well understood).
100
+
101
+ ## Anti-patterns
102
+
103
+ - **Don't write design inside ACs.** "AC-1: implementation uses Redis"
104
+ is a design choice, not an acceptance criterion. Use `decide` for that.
105
+ - **Don't merge multiple criteria into one.** Split them so each is
106
+ individually testable.
107
+ - **Don't auto-pass the validate gate.** The whole point is the user
108
+ agrees this is what they wanted.
@@ -0,0 +1,62 @@
1
+ # triage — classify and route
2
+
3
+ The entry archetype. Every prompt that doesn't already carry an archetype tag
4
+ starts here. Triage is not a workflow on its own — it's a routing decision.
5
+
6
+ ## Phase shape
7
+
8
+ | Phase | Goal |
9
+ |----------|-----------------------------------------------|
10
+ | classify | Pick the right archetype (or set of archetypes) and hand off. |
11
+
12
+ ## Produces
13
+
14
+ - A routing decision: which archetype(s) this prompt belongs in.
15
+
16
+ ## HITL
17
+
18
+ `none` — fully automated. The detector runs, the directive emits, the
19
+ agent picks up the playbook from there.
20
+
21
+ ## How to run
22
+
23
+ 1. **Read the prompt.** What is the user actually asking for?
24
+ 2. **Run the detector.** Call `scripts/crew/archetypes_v11.py detect` with
25
+ the prompt and any known signals.
26
+ 3. **Inspect the matches.**
27
+ - Single high-confidence match (≥ 0.7): hand off to that archetype's
28
+ playbook.
29
+ - Multiple medium matches (0.5–0.7): pick the one with the strongest
30
+ evidence; if you can't, ask the user which shape they want.
31
+ - Only triage matched: ask a clarifying question naming what's
32
+ missing — usually the work isn't ambiguous, the prompt is.
33
+
34
+ ## When to stop in triage
35
+
36
+ Triage exits as soon as you've named the next archetype. Do **not**
37
+ do work inside triage — every minute spent here is a minute the
38
+ real work isn't moving.
39
+
40
+ ## Examples
41
+
42
+ | Prompt | Routes to |
43
+ |---------------------------------------------------|----------------------|
44
+ | "implement caching for the dashboard" | build |
45
+ | "drop legacy_id column" | build + migrate |
46
+ | "checkout is down — 5xx spiking" | incident |
47
+ | "redis or memcached for sessions?" | decide |
48
+ | "review the new auth middleware" | review |
49
+ | "what should we do about rate limiting?" | explore |
50
+ | "write acceptance criteria for the export" | specify |
51
+ | "kick off canary for the pricing change" | ship |
52
+ | "fix typo in README" | (suppressed — simple-edit, no archetype) |
53
+
54
+ ## Anti-patterns
55
+
56
+ - **Don't classify into a tier.** "standard rigor" is not an archetype.
57
+ Triage picks a *shape*, not a depth dial.
58
+ - **Don't stack triage onto an active archetype.** If the user is already
59
+ inside `build`, a follow-up "and also run the migration" doesn't restart
60
+ triage — it adds `migrate` as a co-archetype.
61
+ - **Don't write code in triage.** If your hands are at the keyboard,
62
+ you've already left triage.