wicked-garden 12.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/archetypes.json +166 -0
- package/.claude-plugin/components.json +75 -0
- package/.claude-plugin/marketplace.json +15 -0
- package/.claude-plugin/plugin.json +174 -0
- package/.claude-plugin/specialist.json +48 -0
- package/.claude-plugin/stack-registry.json +96 -0
- package/AGENTS.md +13 -0
- package/CHANGELOG.md +712 -0
- package/CONTRIBUTING.md +99 -0
- package/ETHOS.md +83 -0
- package/LICENSE +21 -0
- package/README.md +115 -0
- package/WICKED_GARDEN_BUS_EVENTS.md +149 -0
- package/agents/agentic/architect.md +449 -0
- package/agents/agentic/performance-analyst.md +702 -0
- package/agents/agentic/safety-reviewer.md +662 -0
- package/agents/crew/implementer.md +163 -0
- package/agents/crew/researcher.md +94 -0
- package/agents/crew/reviewer.md +184 -0
- package/agents/data/data-engineer.md +227 -0
- package/agents/engineering/api-documentarian.md +440 -0
- package/agents/engineering/migration-engineer.md +301 -0
- package/agents/engineering/solution-architect.md +208 -0
- package/agents/jam/brainstorm-facilitator.md +297 -0
- package/agents/jam/council.md +322 -0
- package/agents/jam/quick-facilitator.md +85 -0
- package/agents/persona/persona-agent.md +121 -0
- package/agents/platform/compliance-officer.md +266 -0
- package/agents/platform/privacy-expert.md +496 -0
- package/agents/platform/security-engineer.md +287 -0
- package/agents/product/a11y-expert.md +323 -0
- package/agents/product/requirements-analyst.md +238 -0
- package/agents/product/ui-reviewer.md +180 -0
- package/agents/product/ux-designer.md +199 -0
- package/agents/product/value-strategist.md +269 -0
- package/agents/qe/semantic-reviewer.md +78 -0
- package/commands/agentic/audit.md +24 -0
- package/commands/agentic/design.md +24 -0
- package/commands/agentic/frameworks.md +25 -0
- package/commands/agentic/review.md +27 -0
- package/commands/archetype/build.md +12 -0
- package/commands/archetype/decide.md +12 -0
- package/commands/archetype/explore.md +12 -0
- package/commands/archetype/incident.md +12 -0
- package/commands/archetype/migrate.md +12 -0
- package/commands/archetype/modernize.md +12 -0
- package/commands/archetype/review.md +14 -0
- package/commands/archetype/ship.md +12 -0
- package/commands/archetype/specify.md +12 -0
- package/commands/archetype/triage.md +12 -0
- package/commands/compile.md +37 -0
- package/commands/data/analyze.md +18 -0
- package/commands/data/data.md +21 -0
- package/commands/data/ml.md +18 -0
- package/commands/data/ontology.md +22 -0
- package/commands/data/pipeline.md +17 -0
- package/commands/deliberate.md +181 -0
- package/commands/engineering/add-field.md +77 -0
- package/commands/engineering/apply.md +58 -0
- package/commands/engineering/arch.md +26 -0
- package/commands/engineering/debug.md +27 -0
- package/commands/engineering/docs.md +27 -0
- package/commands/engineering/new-generator.md +257 -0
- package/commands/engineering/patch-plan.md +59 -0
- package/commands/engineering/plan.md +29 -0
- package/commands/engineering/remove.md +48 -0
- package/commands/engineering/rename.md +44 -0
- package/commands/engineering/review.md +32 -0
- package/commands/help.md +128 -0
- package/commands/install.md +118 -0
- package/commands/intent.md +54 -0
- package/commands/jam/brainstorm.md +37 -0
- package/commands/jam/council.md +49 -0
- package/commands/jam/quick.md +21 -0
- package/commands/jam/revisit.md +79 -0
- package/commands/persona/as.md +136 -0
- package/commands/persona/define.md +24 -0
- package/commands/persona/list.md +118 -0
- package/commands/platform/actions.md +20 -0
- package/commands/platform/assert.md +18 -0
- package/commands/platform/audit.md +23 -0
- package/commands/platform/compliance.md +20 -0
- package/commands/platform/gh.md +22 -0
- package/commands/platform/health.md +22 -0
- package/commands/platform/incident.md +23 -0
- package/commands/platform/infra.md +24 -0
- package/commands/platform/peer-health.md +103 -0
- package/commands/platform/plugin-health.md +58 -0
- package/commands/platform/security.md +38 -0
- package/commands/platform/toolchain.md +96 -0
- package/commands/platform/traces.md +20 -0
- package/commands/product/a11y.md +19 -0
- package/commands/product/acceptance.md +19 -0
- package/commands/product/align.md +20 -0
- package/commands/product/analyze.md +23 -0
- package/commands/product/elicit.md +19 -0
- package/commands/product/listen.md +24 -0
- package/commands/product/mockup.md +20 -0
- package/commands/product/screenshot.md +19 -0
- package/commands/product/strategy.md +40 -0
- package/commands/product/synthesize.md +23 -0
- package/commands/product/ux-review.md +42 -0
- package/commands/product/ux.md +20 -0
- package/commands/product/visual-direction.md +34 -0
- package/commands/prove.md +47 -0
- package/commands/report-issue.md +243 -0
- package/commands/reset.md +144 -0
- package/commands/search/blast-radius.md +58 -0
- package/commands/search/hotspots.md +55 -0
- package/commands/search/index.md +38 -0
- package/commands/search/lineage.md +47 -0
- package/commands/search/service-map.md +79 -0
- package/commands/setup.md +363 -0
- package/commands/smaht/briefing.md +200 -0
- package/commands/smaht/events-import.md +95 -0
- package/commands/smaht/state.md +19 -0
- package/commands/where-am-i.md +58 -0
- package/docs/README.md +32 -0
- package/docs/adr/0001-code-relationship-graph-engine.md +116 -0
- package/docs/adr/0002-major-cleanup-keep-cut.md +91 -0
- package/docs/adr/0003-peers-gate-required-layers-optin.md +41 -0
- package/docs/adr/0004-code-graph-moves-to-wicked-brain.md +47 -0
- package/docs/brain-chunk-format.md +135 -0
- package/docs/compiler.md +95 -0
- package/docs/daemon-api.md +70 -0
- package/docs/domains.md +197 -0
- package/docs/getting-started.md +208 -0
- package/docs/plans/2026-06-08-wicked-loom-conduct.md +1337 -0
- package/docs/plans/2026-06-08-wicked-loom-contract.md +638 -0
- package/docs/plans/2026-06-08-wicked-loom-cutover.md +1300 -0
- package/docs/plans/2026-06-08-wicked-loom-expand-compose.md +843 -0
- package/docs/plans/2026-06-08-wicked-loom-flow-cutover.md +403 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1a-graph-core.md +838 -0
- package/docs/plans/2026-06-10-codegraph-to-brain-phase1b-injected-edges.md +44 -0
- package/docs/required-peers.md +60 -0
- package/docs/specs/2026-06-08-wicked-loom-extraction.md +225 -0
- package/docs/specs/2026-06-10-codegraph-to-brain-migration.md +168 -0
- package/docs/v11/archetypes.md +231 -0
- package/hooks/hooks.json +275 -0
- package/hooks/scripts/bootstrap.py +1797 -0
- package/hooks/scripts/invoke.py +62 -0
- package/hooks/scripts/notification.py +166 -0
- package/hooks/scripts/permission_request.py +223 -0
- package/hooks/scripts/post_tool.py +1374 -0
- package/hooks/scripts/pre_compact.py +272 -0
- package/hooks/scripts/pre_tool.py +1278 -0
- package/hooks/scripts/prompt_submit.py +1109 -0
- package/hooks/scripts/session_end.py +95 -0
- package/hooks/scripts/stop.py +624 -0
- package/hooks/scripts/subagent_lifecycle.py +464 -0
- package/hooks/scripts/subscribers/on_gate_decided.py +84 -0
- package/hooks/scripts/task_completed.py +322 -0
- package/hooks/scripts/worktree_guard.py +148 -0
- package/hooks/subscriptions/on_gate_decided.json +9 -0
- package/install.mjs +128 -0
- package/package.json +41 -0
- package/pyproject.toml +59 -0
- package/schemas/README.md +32 -0
- package/schemas/assert_contracts.json +37 -0
- package/schemas/health_probe.json +46 -0
- package/schemas/plugin_status.json +37 -0
- package/scripts/_adapters/__init__.py +166 -0
- package/scripts/_adapters/jira_adapter.py +18 -0
- package/scripts/_adapters/linear_adapter.py +18 -0
- package/scripts/_adapters/miro_adapter.py +18 -0
- package/scripts/_adapters/notion_adapter.py +18 -0
- package/scripts/_agents.py +357 -0
- package/scripts/_brain_ingest/__init__.py +2 -0
- package/scripts/_brain_ingest/session_fact_extractor.py +341 -0
- package/scripts/_brain_port.py +163 -0
- package/scripts/_bus.py +1081 -0
- package/scripts/_bus_catalog_gen.py +93 -0
- package/scripts/_bus_consumers.json +46 -0
- package/scripts/_bus_emit.py +43 -0
- package/scripts/_capability_registry.py +334 -0
- package/scripts/_capability_resolver.py +322 -0
- package/scripts/_domain_store.py +559 -0
- package/scripts/_event_log_reader.py +154 -0
- package/scripts/_event_schema.py +305 -0
- package/scripts/_event_store.py +397 -0
- package/scripts/_heavy_cadence.py +324 -0
- package/scripts/_integration_resolver.py +321 -0
- package/scripts/_logger.py +151 -0
- package/scripts/_loom.py +482 -0
- package/scripts/_paths.py +133 -0
- package/scripts/_python.sh +22 -0
- package/scripts/_run.py +137 -0
- package/scripts/_session.py +502 -0
- package/scripts/_validate_registry.py +1042 -0
- package/scripts/_wicked_testing_probe.py +277 -0
- package/scripts/agentic/analyze_agents.py +391 -0
- package/scripts/agentic/detect_framework.py +420 -0
- package/scripts/agentic/issue_taxonomy.py +357 -0
- package/scripts/agentic/pattern_scorer.py +434 -0
- package/scripts/classify/persist.py +169 -0
- package/scripts/compiler/compile.py +552 -0
- package/scripts/compiler/phase0/VERDICT.md +60 -0
- package/scripts/compiler/phase0/detect.py +292 -0
- package/scripts/compiler/phase0/emit.py +228 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.bindings.json +30 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/Enterprise-AISDLC.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/command_iq.bindings.json +45 -0
- package/scripts/compiler/phase0/evidence/command_iq.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/.projects/evidence-domain/phase-1-clarify/evidence/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/command_iq.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/memos.bindings.json +28 -0
- package/scripts/compiler/phase0/evidence/memos.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/memos.stage/.wg/evidence/honest-tests.txt +2 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/memos.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/verdict.json +104 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.bindings.json +29 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.lint-output.txt +17 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/failing-tests.txt +4 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/coverage/honest-tests.txt +3 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-fail.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/fab-missing.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/honest.build.md +8 -0
- package/scripts/compiler/phase0/evidence/wicked-bus.stage/wg_check_claims.py +174 -0
- package/scripts/compiler/phase0/evidence/wire-vault-transcript.txt +60 -0
- package/scripts/compiler/phase0/run_probe.py +234 -0
- package/scripts/compiler/phase0/wire_vault.py +310 -0
- package/scripts/crew/__init__.py +0 -0
- package/scripts/crew/_task_audit_writer.py +243 -0
- package/scripts/crew/_task_reader.py +389 -0
- package/scripts/crew/archetypes_v11.py +348 -0
- package/scripts/crew/detectors/__init__.py +12 -0
- package/scripts/crew/flow_compiler.py +121 -0
- package/scripts/crew/phase_manager.py +703 -0
- package/scripts/crew/scope_delta.py +264 -0
- package/scripts/crew/specialist_resolver.py +218 -0
- package/scripts/crew/stack_registry.py +189 -0
- package/scripts/data/data_profiler.py +271 -0
- package/scripts/data/ontology_recommender.py +231 -0
- package/scripts/data/schema_validator.py +267 -0
- package/scripts/delivery/drift.py +739 -0
- package/scripts/delivery/telemetry.py +614 -0
- package/scripts/engineering/patch/codegraph_db.py +125 -0
- package/scripts/engineering/patch/generators/__init__.py +56 -0
- package/scripts/engineering/patch/generators/base.py +373 -0
- package/scripts/engineering/patch/generators/csharp_generator.py +494 -0
- package/scripts/engineering/patch/generators/go_generator.py +430 -0
- package/scripts/engineering/patch/generators/java_generator.py +928 -0
- package/scripts/engineering/patch/generators/jsp_generator.py +454 -0
- package/scripts/engineering/patch/generators/kotlin_generator.py +561 -0
- package/scripts/engineering/patch/generators/perl_generator.py +510 -0
- package/scripts/engineering/patch/generators/php_generator.py +644 -0
- package/scripts/engineering/patch/generators/propagation_engine.py +929 -0
- package/scripts/engineering/patch/generators/python_generator.py +487 -0
- package/scripts/engineering/patch/generators/ruby_generator.py +463 -0
- package/scripts/engineering/patch/generators/rust_generator.py +400 -0
- package/scripts/engineering/patch/generators/sql_generator.py +594 -0
- package/scripts/engineering/patch/generators/typescript_generator.py +439 -0
- package/scripts/engineering/patch/patch.py +800 -0
- package/scripts/engineering/patch/safety.py +429 -0
- package/scripts/jam/__init__.py +0 -0
- package/scripts/jam/_bus_consumers.py +271 -0
- package/scripts/jam/agentic_cli_registry.py +703 -0
- package/scripts/jam/consensus.py +737 -0
- package/scripts/jam/detect_clis.py +409 -0
- package/scripts/jam/jam.py +283 -0
- package/scripts/jam/save_transcript.py +171 -0
- package/scripts/loom/__init__.py +22 -0
- package/scripts/loom/cli.py +170 -0
- package/scripts/loom/compose.py +180 -0
- package/scripts/loom/gate.py +120 -0
- package/scripts/loom/manifest.py +140 -0
- package/scripts/loom/resolve.py +59 -0
- package/scripts/persona/__init__.py +0 -0
- package/scripts/persona/registry.py +688 -0
- package/scripts/platform/guard_pipeline.py +1214 -0
- package/scripts/platform/guard_profiles.py +216 -0
- package/scripts/platform/observability/assert_contracts.py +434 -0
- package/scripts/platform/observability/health_probe.py +915 -0
- package/scripts/platform/observability/ops_log_viewer.py +209 -0
- package/scripts/platform/prereq_doctor.py +567 -0
- package/scripts/qe/conditions_manifest.py +260 -0
- package/scripts/qe/content_sanitizer.py +160 -0
- package/scripts/qe/coverage_tracker.py +535 -0
- package/scripts/qe/discover_scenarios.py +243 -0
- package/scripts/qe/evidence_tracker.py +232 -0
- package/scripts/qe/prove.py +196 -0
- package/scripts/qe/registry_lookup.py +80 -0
- package/scripts/qe/registry_store.py +176 -0
- package/scripts/qe/semantic_review.py +1005 -0
- package/scripts/qe/vault_gate.py +382 -0
- package/scripts/qe/verdict_audit.py +175 -0
- package/scripts/qe/verdict_schema.py +335 -0
- package/scripts/reset.py +220 -0
- package/scripts/resolve_path.py +22 -0
- package/scripts/sentinel/invariants.py +402 -0
- package/scripts/sentinel/pre_push.py +73 -0
- package/scripts/setup/__init__.py +1 -0
- package/scripts/setup/detect_state.py +114 -0
- package/scripts/setup/migrate_legacy.py +67 -0
- package/scripts/setup/migrate_v6_projects.py +232 -0
- package/scripts/setup/onboarding.py +114 -0
- package/scripts/smaht/_bus_consumers.py +98 -0
- package/scripts/smaht/adapters/__init__.py +83 -0
- package/scripts/smaht/adapters/brain_adapter.py +254 -0
- package/scripts/smaht/adapters/context7_adapter.py +438 -0
- package/scripts/smaht/adapters/delegation_adapter.py +104 -0
- package/scripts/smaht/adapters/domain_adapter.py +206 -0
- package/scripts/smaht/adapters/events_adapter.py +231 -0
- package/scripts/smaht/adapters/tools_adapter.py +49 -0
- package/scripts/smaht/cheatsheet_store.py +236 -0
- package/scripts/smaht/context_package.py +386 -0
- package/scripts/smaht/knowledge_graph.py +395 -0
- package/scripts/smaht/propose_skills.py +856 -0
- package/scripts/smaht/test_cheatsheet_store.py +428 -0
- package/scripts/statusline.py +151 -0
- package/scripts/where_am_i.py +236 -0
- package/skills/agentic/agentic-patterns/SKILL.md +91 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-design.md +283 -0
- package/skills/agentic/agentic-patterns/refs/anti-patterns-operational.md +216 -0
- package/skills/agentic/agentic-patterns/refs/pattern-catalog.md +329 -0
- package/skills/agentic/context-engineering/SKILL.md +142 -0
- package/skills/agentic/context-engineering/refs/caching-and-optimization.md +251 -0
- package/skills/agentic/context-engineering/refs/compression-techniques.md +171 -0
- package/skills/agentic/context-engineering/refs/cost-calculation-budget.md +250 -0
- package/skills/agentic/context-engineering/refs/cost-optimization-reporting.md +300 -0
- package/skills/agentic/context-engineering/refs/selective-loading.md +179 -0
- package/skills/agentic/frameworks/SKILL.md +191 -0
- package/skills/agentic/frameworks/refs/framework-profiles-1.md +209 -0
- package/skills/agentic/frameworks/refs/framework-profiles-2.md +214 -0
- package/skills/agentic/frameworks/refs/migration-patterns-paths.md +267 -0
- package/skills/agentic/frameworks/refs/migration-patterns-testing.md +208 -0
- package/skills/agentic/refs/audit.md +134 -0
- package/skills/agentic/refs/design.md +137 -0
- package/skills/agentic/refs/frameworks.md +102 -0
- package/skills/agentic/refs/review.md +160 -0
- package/skills/agentic/review-methodology/SKILL.md +186 -0
- package/skills/agentic/review-methodology/refs/deliverable-templates.md +246 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-quality-testing.md +277 -0
- package/skills/agentic/review-methodology/refs/issue-taxonomy-reliability-safety.md +253 -0
- package/skills/agentic/trust-and-safety/SKILL.md +177 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-actions.md +246 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-input-output.md +238 -0
- package/skills/agentic/trust-and-safety/refs/guardrails-resources.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-advanced.md +209 -0
- package/skills/agentic/trust-and-safety/refs/safety-checklist-core.md +215 -0
- package/skills/archetype/SKILL.md +104 -0
- package/skills/archetype/refs/build.md +142 -0
- package/skills/archetype/refs/decide.md +117 -0
- package/skills/archetype/refs/explore.md +66 -0
- package/skills/archetype/refs/incident.md +149 -0
- package/skills/archetype/refs/migrate.md +170 -0
- package/skills/archetype/refs/modernize.md +187 -0
- package/skills/archetype/refs/review.md +145 -0
- package/skills/archetype/refs/ship.md +117 -0
- package/skills/archetype/refs/specify.md +108 -0
- package/skills/archetype/refs/triage.md +62 -0
- package/skills/classify/SKILL.md +157 -0
- package/skills/data/analysis/SKILL.md +125 -0
- package/skills/data/analysis/refs/templates.md +170 -0
- package/skills/data/data/SKILL.md +118 -0
- package/skills/data/data/refs/examples.md +235 -0
- package/skills/data/ml/SKILL.md +125 -0
- package/skills/data/ml/refs/templates.md +172 -0
- package/skills/data/pipeline/SKILL.md +136 -0
- package/skills/data/pipeline/refs/templates.md +175 -0
- package/skills/data/refs/analyze.md +123 -0
- package/skills/data/refs/data.md +95 -0
- package/skills/data/refs/ml.md +118 -0
- package/skills/data/refs/pipeline.md +92 -0
- package/skills/deliberate/SKILL.md +125 -0
- package/skills/deliberate/refs/architecture-lens.md +37 -0
- package/skills/deliberate/refs/assumptions-lens.md +43 -0
- package/skills/deliberate/refs/code-lens.md +38 -0
- package/skills/deliberate/refs/content-lens.md +37 -0
- package/skills/deliberate/refs/data-lens.md +43 -0
- package/skills/deliberate/refs/design-lens.md +37 -0
- package/skills/deliberate/refs/opportunity-patterns.md +107 -0
- package/skills/deliberate/refs/ops-lens.md +43 -0
- package/skills/deliberate/refs/product-lens.md +46 -0
- package/skills/deliberate/refs/rethink-framework.md +77 -0
- package/skills/deliberate/refs/security-lens.md +47 -0
- package/skills/deliberate/refs/testing-lens.md +45 -0
- package/skills/deliberate/refs/timing-lens.md +42 -0
- package/skills/engineering/architecture/SKILL.md +177 -0
- package/skills/engineering/architecture/refs/adr-template.md +268 -0
- package/skills/engineering/architecture/refs/architecture-template-deployment.md +176 -0
- package/skills/engineering/architecture/refs/architecture-template-design.md +300 -0
- package/skills/engineering/architecture/refs/examples-ecommerce-analytics.md +299 -0
- package/skills/engineering/architecture/refs/examples-saas-trading.md +291 -0
- package/skills/engineering/architecture/refs/patterns-advanced.md +238 -0
- package/skills/engineering/architecture/refs/patterns-structural.md +303 -0
- package/skills/engineering/backend/SKILL.md +102 -0
- package/skills/engineering/backend/refs/checklists.md +146 -0
- package/skills/engineering/backend/refs/patterns.md +181 -0
- package/skills/engineering/debugging/SKILL.md +99 -0
- package/skills/engineering/debugging/refs/patterns.md +248 -0
- package/skills/engineering/debugging/refs/process.md +203 -0
- package/skills/engineering/docs/SKILL.md +97 -0
- package/skills/engineering/engineering/SKILL.md +88 -0
- package/skills/engineering/engineering/refs/checklists.md +91 -0
- package/skills/engineering/engineering/refs/templates.md +71 -0
- package/skills/engineering/frontend/SKILL.md +92 -0
- package/skills/engineering/frontend/refs/checklists.md +96 -0
- package/skills/engineering/frontend/refs/patterns.md +167 -0
- package/skills/engineering/integration/SKILL.md +183 -0
- package/skills/engineering/integration/refs/error-handling-best-practices.md +139 -0
- package/skills/engineering/integration/refs/error-handling-error-classes-typescript.md +212 -0
- package/skills/engineering/integration/refs/error-handling-error-response-format.md +301 -0
- package/skills/engineering/integration/refs/error-handling-retry-strategies.md +190 -0
- package/skills/engineering/integration/refs/event-schemas-best-practices.md +225 -0
- package/skills/engineering/integration/refs/event-schemas-event-naming-conventions.md +303 -0
- package/skills/engineering/integration/refs/event-schemas-event-structure.md +288 -0
- package/skills/engineering/integration/refs/graphql-best-practices.md +138 -0
- package/skills/engineering/integration/refs/graphql-error-handling.md +198 -0
- package/skills/engineering/integration/refs/graphql-graphql-basics.md +197 -0
- package/skills/engineering/integration/refs/graphql-query-examples.md +226 -0
- package/skills/engineering/integration/refs/graphql-schema-design-patterns.md +280 -0
- package/skills/engineering/integration/refs/grpc-grpc-overview.md +246 -0
- package/skills/engineering/integration/refs/grpc-implementation-examples.md +269 -0
- package/skills/engineering/integration/refs/grpc-metadata-headers.md +304 -0
- package/skills/engineering/integration/refs/grpc-testing.md +49 -0
- package/skills/engineering/integration/refs/openapi-template.yaml +682 -0
- package/skills/engineering/integration/refs/resilience-best-practices.md +109 -0
- package/skills/engineering/integration/refs/resilience-circuit-breaker-pattern.md +302 -0
- package/skills/engineering/integration/refs/resilience-rate-limiting.md +245 -0
- package/skills/engineering/integration/refs/resilience-timeout-pattern.md +212 -0
- package/skills/engineering/integration/refs/rest-api-fundamentals.md +299 -0
- package/skills/engineering/integration/refs/rest-api-responses-security.md +302 -0
- package/skills/engineering/integration/refs/versioning-breaking-changes.md +237 -0
- package/skills/engineering/integration/refs/versioning-migration-strategies.md +257 -0
- package/skills/engineering/integration/refs/versioning-versioning-strategies.md +296 -0
- package/skills/engineering/large-scale-migration/SKILL.md +65 -0
- package/skills/engineering/patch/SKILL.md +184 -0
- package/skills/engineering/refs/arch.md +126 -0
- package/skills/engineering/refs/debug.md +142 -0
- package/skills/engineering/refs/docs.md +190 -0
- package/skills/engineering/refs/plan.md +109 -0
- package/skills/engineering/refs/review.md +138 -0
- package/skills/engineering/system-design/SKILL.md +154 -0
- package/skills/engineering/system-design/refs/anti-patterns-big-ball-of-mud.md +254 -0
- package/skills/engineering/system-design/refs/anti-patterns-circular-dependencies.md +241 -0
- package/skills/engineering/system-design/refs/anti-patterns-feature-envy.md +168 -0
- package/skills/engineering/system-design/refs/anti-patterns-god-object.md +247 -0
- package/skills/engineering/system-design/refs/component-template-lifecycle.md +210 -0
- package/skills/engineering/system-design/refs/component-template-maintenance.md +219 -0
- package/skills/engineering/system-design/refs/component-template-structure.md +276 -0
- package/skills/engineering/system-design/refs/dependencies-best-practices.md +260 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-principles.md +295 -0
- package/skills/engineering/system-design/refs/dependencies-dependency-tracking.md +261 -0
- package/skills/engineering/system-design/refs/interface-template-lifecycle.md +211 -0
- package/skills/engineering/system-design/refs/interface-template-maintenance.md +212 -0
- package/skills/engineering/system-design/refs/interface-template-structure.md +269 -0
- package/skills/engineering/system-design/refs/patterns-dependency-injection.md +151 -0
- package/skills/engineering/system-design/refs/patterns-facade-pattern.md +257 -0
- package/skills/engineering/system-design/refs/patterns-layered-pattern.md +204 -0
- package/skills/engineering/system-design/refs/patterns-plugin-architecture.md +229 -0
- package/skills/engineering/unit-test-quality/SKILL.md +194 -0
- package/skills/ground/SKILL.md +130 -0
- package/skills/integration-discovery/SKILL.md +168 -0
- package/skills/integration-discovery/refs/capabilities.md +282 -0
- package/skills/integration-discovery/refs/cli-detection.md +295 -0
- package/skills/integration-discovery/refs/discovery-sources.md +233 -0
- package/skills/integration-discovery/refs/task-patterns.md +206 -0
- package/skills/jam/SKILL.md +45 -0
- package/skills/jam/refs/facilitation-patterns.md +125 -0
- package/skills/jam/refs/quick.md +64 -0
- package/skills/jam/refs/synthesis-patterns.md +114 -0
- package/skills/multi-model/SKILL.md +168 -0
- package/skills/multi-model/refs/aichat.md +119 -0
- package/skills/multi-model/refs/aider.md +100 -0
- package/skills/multi-model/refs/auditability.md +238 -0
- package/skills/multi-model/refs/codex.md +169 -0
- package/skills/multi-model/refs/context.md +306 -0
- package/skills/multi-model/refs/copilot.md +161 -0
- package/skills/multi-model/refs/examples.md +224 -0
- package/skills/multi-model/refs/gemini.md +185 -0
- package/skills/multi-model/refs/goose.md +112 -0
- package/skills/multi-model/refs/llm.md +124 -0
- package/skills/multi-model/refs/opencode.md +196 -0
- package/skills/multi-model/refs/orchestration.md +188 -0
- package/skills/multi-model/refs/pi.md +208 -0
- package/skills/persona/SKILL.md +144 -0
- package/skills/persona/refs/define.md +133 -0
- package/skills/platform/actions/refs/actions.md +114 -0
- package/skills/platform/audit/SKILL.md +174 -0
- package/skills/platform/audit/refs/audit.md +145 -0
- package/skills/platform/audit/refs/checklists-evidence-operations.md +144 -0
- package/skills/platform/audit/refs/checklists-gdpr-pci-evidence.md +213 -0
- package/skills/platform/audit/refs/checklists-soc2-hipaa.md +120 -0
- package/skills/platform/audit/refs/frameworks-gdpr-pci.md +225 -0
- package/skills/platform/audit/refs/frameworks-soc2-hipaa.md +228 -0
- package/skills/platform/compliance/SKILL.md +169 -0
- package/skills/platform/compliance/refs/checklists.md +303 -0
- package/skills/platform/compliance/refs/compliance.md +117 -0
- package/skills/platform/compliance/refs/frameworks.md +282 -0
- package/skills/platform/errors/SKILL.md +183 -0
- package/skills/platform/errors/refs/patterns.md +271 -0
- package/skills/platform/errors/refs/severity.md +264 -0
- package/skills/platform/gate-benchmark-rebaseline/SKILL.md +108 -0
- package/skills/platform/gh/refs/gh.md +105 -0
- package/skills/platform/gh-cli/SKILL.md +120 -0
- package/skills/platform/gh-cli/refs/automation.md +63 -0
- package/skills/platform/gh-cli/refs/gh-ops.md +103 -0
- package/skills/platform/gh-cli/refs/patterns.md +132 -0
- package/skills/platform/gh-cli/scripts/gh_ops.py +454 -0
- package/skills/platform/github-actions/SKILL.md +159 -0
- package/skills/platform/github-actions/refs/security.md +150 -0
- package/skills/platform/github-actions/refs/templates.md +230 -0
- package/skills/platform/github-actions/refs/troubleshooting.md +174 -0
- package/skills/platform/github-actions/scripts/workflow_gen.py +215 -0
- package/skills/platform/gitlab-ci/SKILL.md +140 -0
- package/skills/platform/gitlab-ci/refs/templates.md +223 -0
- package/skills/platform/gitlab-ci/refs/troubleshooting.md +213 -0
- package/skills/platform/glab-cli/SKILL.md +133 -0
- package/skills/platform/glab-cli/refs/ci-debugging.md +95 -0
- package/skills/platform/glab-cli/refs/glab-ops.md +78 -0
- package/skills/platform/glab-cli/refs/patterns.md +131 -0
- package/skills/platform/glab-cli/scripts/glab_ops.py +313 -0
- package/skills/platform/health/SKILL.md +177 -0
- package/skills/platform/health/refs/health.md +72 -0
- package/skills/platform/health/refs/sources.md +302 -0
- package/skills/platform/incident/refs/incident.md +136 -0
- package/skills/platform/infra/refs/infra.md +104 -0
- package/skills/platform/observability/SKILL.md +128 -0
- package/skills/platform/observability/refs/toolchain-discovery.md +243 -0
- package/skills/platform/prereq-doctor/SKILL.md +57 -0
- package/skills/platform/prereq-doctor/refs/tool-registry.md +58 -0
- package/skills/platform/traces/refs/traces.md +101 -0
- package/skills/product/acceptance-criteria/SKILL.md +193 -0
- package/skills/product/acceptance-criteria/refs/ac-anti-patterns.md +291 -0
- package/skills/product/acceptance-criteria/refs/ac-examples.md +277 -0
- package/skills/product/accessibility/SKILL.md +197 -0
- package/skills/product/accessibility/refs/aria-patterns-basics.md +250 -0
- package/skills/product/accessibility/refs/aria-patterns-dynamic.md +187 -0
- package/skills/product/accessibility/refs/aria-patterns-interactive.md +246 -0
- package/skills/product/accessibility/refs/audit-report-findings.md +248 -0
- package/skills/product/accessibility/refs/audit-report-results.md +276 -0
- package/skills/product/accessibility/refs/common-violations-html-css.md +270 -0
- package/skills/product/accessibility/refs/common-violations-interactive.md +303 -0
- package/skills/product/accessibility/refs/keyboard-testing-basics.md +222 -0
- package/skills/product/accessibility/refs/keyboard-testing-patterns.md +173 -0
- package/skills/product/accessibility/refs/screen-reader-testing-advanced.md +294 -0
- package/skills/product/accessibility/refs/screen-reader-testing-commands.md +255 -0
- package/skills/product/accessibility/refs/wcag-checklist.md +262 -0
- package/skills/product/analyze/SKILL.md +164 -0
- package/skills/product/analyze/refs/algorithms.md +238 -0
- package/skills/product/analyze/refs/sentiment-patterns.md +180 -0
- package/skills/product/imagery/SKILL.md +97 -0
- package/skills/product/imagery/alter/SKILL.md +105 -0
- package/skills/product/imagery/alter/refs/editing-reference.md +146 -0
- package/skills/product/imagery/create/SKILL.md +109 -0
- package/skills/product/imagery/create/refs/prompt-engineering.md +112 -0
- package/skills/product/imagery/create/refs/provider-reference.md +219 -0
- package/skills/product/imagery/review/SKILL.md +101 -0
- package/skills/product/imagery/review/refs/analysis-lenses.md +136 -0
- package/skills/product/imagery/review/refs/quality-gates.md +153 -0
- package/skills/product/imagery/scripts/analyze.sh +23 -0
- package/skills/product/imagery/scripts/edit.sh +14 -0
- package/skills/product/imagery/scripts/generate.sh +13 -0
- package/skills/product/imagery/scripts/provider.py +787 -0
- package/skills/product/listen/SKILL.md +175 -0
- package/skills/product/listen/refs/channels.md +220 -0
- package/skills/product/mockup/SKILL.md +106 -0
- package/skills/product/mockup/refs/templates.md +95 -0
- package/skills/product/refs/a11y.md +109 -0
- package/skills/product/refs/acceptance.md +79 -0
- package/skills/product/refs/align.md +67 -0
- package/skills/product/refs/analyze.md +77 -0
- package/skills/product/refs/elicit.md +67 -0
- package/skills/product/refs/listen.md +58 -0
- package/skills/product/refs/mockup.md +77 -0
- package/skills/product/refs/screenshot.md +59 -0
- package/skills/product/refs/strategy.md +77 -0
- package/skills/product/refs/synthesize.md +54 -0
- package/skills/product/refs/ux-review.md +68 -0
- package/skills/product/refs/ux.md +101 -0
- package/skills/product/requirements-analysis/SKILL.md +136 -0
- package/skills/product/requirements-analysis/refs/requirements-example-auth.md +264 -0
- package/skills/product/requirements-analysis/refs/requirements-example-export-integration.md +88 -0
- package/skills/product/requirements-analysis/refs/requirements-output-format-template.md +247 -0
- package/skills/product/requirements-analysis/refs/user-story-guide.md +296 -0
- package/skills/product/requirements-graph/SKILL.md +155 -0
- package/skills/product/requirements-graph/refs/examples.md +223 -0
- package/skills/product/requirements-graph/refs/schema.md +162 -0
- package/skills/product/requirements-migrate/SKILL.md +90 -0
- package/skills/product/requirements-navigate/SKILL.md +141 -0
- package/skills/product/requirements-navigate/refs/meta-templates.md +141 -0
- package/skills/product/screenshot/SKILL.md +147 -0
- package/skills/product/strategy/SKILL.md +198 -0
- package/skills/product/strategy/refs/frameworks.md +295 -0
- package/skills/product/strategy/refs/templates-competitive-market.md +299 -0
- package/skills/product/strategy/refs/templates-roi-value.md +207 -0
- package/skills/product/synthesize/SKILL.md +116 -0
- package/skills/product/synthesize/refs/journey-mapping.md +212 -0
- package/skills/product/synthesize/refs/prioritization.md +193 -0
- package/skills/product/ux-review/SKILL.md +164 -0
- package/skills/product/visual-direction/SKILL.md +137 -0
- package/skills/product/visual-review/SKILL.md +131 -0
- package/skills/runtime-exec/SKILL.md +138 -0
- package/skills/search/codebase-narrator/SKILL.md +131 -0
- package/skills/search/codebase-narrator/refs/output-template.md +100 -0
- package/skills/smaht/SKILL.md +72 -0
- package/skills/smaht/discovery/SKILL.md +65 -0
- package/skills/smaht/intent/SKILL.md +89 -0
- package/skills/smaht/propose-skills/SKILL.md +142 -0
- package/skills/smaht/refs/state.md +76 -0
- package/skills/swarm/SKILL.md +132 -0
- package/skills/swarm/refs/fan-out.md +104 -0
- package/skills/swarm/refs/independent-verification.md +86 -0
- package/skills/swarm/refs/receipts-and-evidence.md +69 -0
- package/skills/swarm/refs/recon-synthesis.md +87 -0
- package/skills/swarm/refs/ship-discipline.md +90 -0
- package/skills/wickedizer/SKILL.md +147 -0
- package/skills/wickedizer/refs/artifact-types.md +238 -0
- package/skills/wickedizer/refs/complexity.md +278 -0
- package/skills/wickedizer/refs/de-ai-pass.md +140 -0
- package/skills/wickedizer/refs/failure-modes.md +249 -0
- package/skills/wickedizer/refs/patterns.md +282 -0
- package/skills/wickedizer/refs/review.md +221 -0
- package/skills/wickedizer/refs/structure.md +282 -0
- package/skills/wickedizer/refs/voice-profile.md +125 -0
- package/skills/workflow/SKILL.md +132 -0
- package/skills/workflow/refs/archetype-adjustments.md +205 -0
- package/skills/workflow/refs/evidence.md +58 -0
- package/skills/workflow/refs/integration.md +130 -0
- package/skills/workflow/refs/risk-dimension-signals.md +260 -0
- package/skills/workflow/refs/scoring-rubric.md +49 -0
- package/skills/workflow/refs/signal-keywords.md +176 -0
- package/skills/workflow/refs/specialist-routing-rules.md +159 -0
- package/skills/worktrees/SKILL.md +87 -0
- package/skills/worktrees/refs/recipes.md +96 -0
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wicked-garden-engineering-migration-engineer
|
|
3
|
+
context: fork
|
|
4
|
+
subagent_type: wicked-garden:engineering:migration-engineer
|
|
5
|
+
description: "Schema migrations, data backfills, deprecation paths, rollback plans, and... Use when: schema migration, data..."
|
|
6
|
+
model: sonnet
|
|
7
|
+
effort: medium
|
|
8
|
+
max-turns: 12
|
|
9
|
+
color: yellow
|
|
10
|
+
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Migration Engineer
|
|
14
|
+
|
|
15
|
+
You move live production systems from one shape to another **without breaking
|
|
16
|
+
them**. You specialize in the expand-contract pattern, dual-write/backfill
|
|
17
|
+
pipelines, versioned deprecation, and verifiable rollback plans. You are the
|
|
18
|
+
role that answers "how do we ship this breaking change safely?"
|
|
19
|
+
|
|
20
|
+
## When to Invoke
|
|
21
|
+
|
|
22
|
+
- Any database schema change beyond adding a nullable column
|
|
23
|
+
- Splitting or merging tables / services
|
|
24
|
+
- Renaming fields or primary keys
|
|
25
|
+
- Changing data types or tightening constraints
|
|
26
|
+
- Sunsetting API versions
|
|
27
|
+
- Consolidating duplicate data sources
|
|
28
|
+
- Breaking changes to event payloads or message formats
|
|
29
|
+
- Multi-month data reshape with production ongoing
|
|
30
|
+
|
|
31
|
+
## First Strategy: Use wicked-* Ecosystem
|
|
32
|
+
|
|
33
|
+
- **Search**: Use wicked-garden:search to inventory call sites, consumers, and references
|
|
34
|
+
- **Memory**: Use wicked-brain:memory to recall past migration patterns and pitfalls
|
|
35
|
+
- **Data Architect**: Coordinate on target schema design
|
|
36
|
+
- **Contract Testing**: Coordinate on API version compatibility matrix
|
|
37
|
+
- **Tasks**: Track migration phases via TaskCreate/TaskUpdate with `metadata={event_type, chain_id, source_agent, phase}`
|
|
38
|
+
|
|
39
|
+
## Core Pattern: Expand-Contract
|
|
40
|
+
|
|
41
|
+
Every non-additive change follows the same five-phase pattern:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
┌─────────┐ ┌──────────┐ ┌──────────┐ ┌───────────┐ ┌─────────┐
|
|
45
|
+
│ EXPAND │ → │ BACKFILL │ → │ MIGRATE │ → │ CUTOVER │ → │ CONTRACT│
|
|
46
|
+
│ (add) │ │ (fill) │ │ (switch) │ │ (enforce) │ │ (drop) │
|
|
47
|
+
└─────────┘ └──────────┘ └──────────┘ └───────────┘ └─────────┘
|
|
48
|
+
both new writers readers old
|
|
49
|
+
live shape on new on new dies
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Never combine phases**. Every phase is independently deployable and rollback-able.
|
|
53
|
+
|
|
54
|
+
### Phase 1 — EXPAND
|
|
55
|
+
|
|
56
|
+
Add the new shape alongside the old shape. Both coexist.
|
|
57
|
+
|
|
58
|
+
- New column / new table / new API version / new event field
|
|
59
|
+
- **Nullable** or **defaulted** — must not require data to exist yet
|
|
60
|
+
- Writers now write to BOTH shapes (dual-write)
|
|
61
|
+
- Readers still read from the OLD shape
|
|
62
|
+
|
|
63
|
+
Rollback: drop the new shape; writes keep working on old.
|
|
64
|
+
|
|
65
|
+
### Phase 2 — BACKFILL
|
|
66
|
+
|
|
67
|
+
Populate the new shape with historical data.
|
|
68
|
+
|
|
69
|
+
- Idempotent: safe to re-run
|
|
70
|
+
- Batched: doesn't monopolize the DB
|
|
71
|
+
- Observable: progress metric, error rate
|
|
72
|
+
- Verifiable: row count / checksum parity between old and new
|
|
73
|
+
- Throttled: respects production traffic
|
|
74
|
+
|
|
75
|
+
Backfill script shape:
|
|
76
|
+
```python
|
|
77
|
+
def backfill_batch(start_id: int, batch_size: int = 1000) -> int:
|
|
78
|
+
rows = db.query("SELECT id FROM old WHERE id >= ? AND id < ? AND new_col IS NULL",
|
|
79
|
+
start_id, start_id + batch_size)
|
|
80
|
+
for row in rows:
|
|
81
|
+
new_value = transform(row)
|
|
82
|
+
db.execute("UPDATE old SET new_col = ? WHERE id = ? AND new_col IS NULL",
|
|
83
|
+
new_value, row.id) # idempotent via IS NULL guard
|
|
84
|
+
return len(rows)
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Rollback: stop the backfill; nothing is broken.
|
|
88
|
+
|
|
89
|
+
### Phase 3 — MIGRATE
|
|
90
|
+
|
|
91
|
+
Move writers to use the new shape exclusively. Readers still use old.
|
|
92
|
+
|
|
93
|
+
- Dual-write becomes new-only-write
|
|
94
|
+
- Consistency verification job runs in background
|
|
95
|
+
- Old shape becomes a staleness-tolerated read path
|
|
96
|
+
|
|
97
|
+
Rollback: flip writers back to dual-write. Requires feature flag.
|
|
98
|
+
|
|
99
|
+
### Phase 4 — CUTOVER
|
|
100
|
+
|
|
101
|
+
Move readers to the new shape. Verify everything.
|
|
102
|
+
|
|
103
|
+
- Canary readers first (1%, 10%, 50%, 100%)
|
|
104
|
+
- Error-rate and latency monitoring at each step
|
|
105
|
+
- Side-by-side comparison: new shape result matches old shape result
|
|
106
|
+
|
|
107
|
+
Rollback: flip readers back to old shape. Writers still writing new.
|
|
108
|
+
|
|
109
|
+
### Phase 5 — CONTRACT
|
|
110
|
+
|
|
111
|
+
Drop the old shape. **Only after** cutover has held for a stability window.
|
|
112
|
+
|
|
113
|
+
- Drop old column / table / API version / event field
|
|
114
|
+
- Remove dual-write code
|
|
115
|
+
- Remove compatibility shim
|
|
116
|
+
|
|
117
|
+
Rollback: restore from backup / re-migrate in reverse (expensive — hence the
|
|
118
|
+
stability window).
|
|
119
|
+
|
|
120
|
+
## Process
|
|
121
|
+
|
|
122
|
+
### 1. Inventory Consumers
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
# Find call sites
|
|
126
|
+
/wicked-garden:search:blast-radius {symbol}
|
|
127
|
+
|
|
128
|
+
# Find clients of an API version
|
|
129
|
+
wicked-garden:search "/v1/users" --type http
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Enumerate every consumer. Tag each: internal/external, owner, traffic share.
|
|
133
|
+
|
|
134
|
+
### 2. Design Target Shape
|
|
135
|
+
|
|
136
|
+
Coordinate with data-architect on OLTP/OLAP target. Document what changes and why.
|
|
137
|
+
|
|
138
|
+
### 3. Feature-Flag Every Phase Transition
|
|
139
|
+
|
|
140
|
+
Each phase flip needs a flag:
|
|
141
|
+
- `dual_write_enabled`
|
|
142
|
+
- `read_from_new_shape_percent` (0 → 100)
|
|
143
|
+
- `old_shape_deprecated` (boolean — enforces 4xx on old API)
|
|
144
|
+
|
|
145
|
+
Flags allow instant rollback without deploy.
|
|
146
|
+
|
|
147
|
+
### 4. Write the Runbook
|
|
148
|
+
|
|
149
|
+
```markdown
|
|
150
|
+
## Migration Runbook: {name}
|
|
151
|
+
|
|
152
|
+
### Target State
|
|
153
|
+
- Before: {current shape}
|
|
154
|
+
- After: {target shape}
|
|
155
|
+
- Breaking changes: {list}
|
|
156
|
+
|
|
157
|
+
### Timeline
|
|
158
|
+
- Expand: week 1 (deploy + verify dual-write)
|
|
159
|
+
- Backfill: weeks 2-3 (batched; {N} rows/sec; total {M} rows)
|
|
160
|
+
- Migrate: week 4 (flip write flag; verify for 7 days)
|
|
161
|
+
- Cutover: week 5 (canary readers: 1/10/50/100)
|
|
162
|
+
- Contract: week 7 (after 2-week stability window)
|
|
163
|
+
|
|
164
|
+
### Phase Gates
|
|
165
|
+
Each phase requires verification before advancing:
|
|
166
|
+
- [ ] Expand: dual-write error rate < 0.01%
|
|
167
|
+
- [ ] Backfill: row-count parity; checksum parity on 1% sample
|
|
168
|
+
- [ ] Migrate: zero drift in side-by-side read comparison for 7 days
|
|
169
|
+
- [ ] Cutover: canary at 10% shows p95 regression < 5%
|
|
170
|
+
- [ ] Contract: no traffic on old shape for 14 days
|
|
171
|
+
|
|
172
|
+
### Rollback per Phase
|
|
173
|
+
- Expand: disable dual-write flag; drop new shape
|
|
174
|
+
- Backfill: stop job; data is idempotent
|
|
175
|
+
- Migrate: re-enable dual-write flag
|
|
176
|
+
- Cutover: set read_percent = 0
|
|
177
|
+
- Contract: restore from backup (avoid via stability window)
|
|
178
|
+
|
|
179
|
+
### Communication Plan
|
|
180
|
+
- External consumers: {notification dates + channels}
|
|
181
|
+
- Internal owners: {kickoff + weekly status + launch}
|
|
182
|
+
- Support: {runbook for customer questions}
|
|
183
|
+
|
|
184
|
+
### Success Criteria
|
|
185
|
+
- Zero data loss
|
|
186
|
+
- p95 latency change < 5%
|
|
187
|
+
- Error-rate change < 0.01%
|
|
188
|
+
- All consumers verified on new shape
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 5. Deprecation Path (API versions)
|
|
192
|
+
|
|
193
|
+
Standard timeline:
|
|
194
|
+
1. **Announce** — release notes, email, dashboard warning
|
|
195
|
+
2. **Header warning** — every response carries `Deprecation: true` and `Sunset: <date>`
|
|
196
|
+
3. **Metrics** — track remaining traffic per consumer
|
|
197
|
+
4. **Grace period** — typical 90 days, extendable for critical consumers
|
|
198
|
+
5. **Sunset** — return 410 Gone or redirect; keep for 30 days then drop
|
|
199
|
+
|
|
200
|
+
**Rule**: sunset only when remaining traffic is below a threshold AND all known consumers have been contacted.
|
|
201
|
+
|
|
202
|
+
## Output Format
|
|
203
|
+
|
|
204
|
+
```markdown
|
|
205
|
+
## Migration Plan: {name}
|
|
206
|
+
|
|
207
|
+
### Scope
|
|
208
|
+
- Source: {current shape}
|
|
209
|
+
- Target: {target shape}
|
|
210
|
+
- Breaking for: {list of consumers}
|
|
211
|
+
|
|
212
|
+
### Consumer Inventory
|
|
213
|
+
| Consumer | Owner | Traffic | Contacted? | Cutover Date |
|
|
214
|
+
|----------|-------|---------|------------|--------------|
|
|
215
|
+
|
|
216
|
+
### Phases
|
|
217
|
+
| Phase | Duration | Flag | Success Criteria | Rollback |
|
|
218
|
+
|-------|----------|------|------------------|----------|
|
|
219
|
+
| Expand | 1w | dual_write_enabled | err < 0.01% | drop new shape |
|
|
220
|
+
| Backfill | 2w | — | row count parity | stop job |
|
|
221
|
+
| Migrate | 1w | write_target=new | zero drift | flip flag |
|
|
222
|
+
| Cutover | 1w | read_percent | latency δ < 5% | percent=0 |
|
|
223
|
+
| Contract | — | — | 14d no old traffic | backup restore |
|
|
224
|
+
|
|
225
|
+
### Data Reshape Details
|
|
226
|
+
{transformation logic, null handling, default values}
|
|
227
|
+
|
|
228
|
+
### Risks
|
|
229
|
+
| Risk | Probability | Impact | Mitigation |
|
|
230
|
+
|------|-------------|--------|------------|
|
|
231
|
+
|
|
232
|
+
### Verification Plan
|
|
233
|
+
- Shadow reads comparing old vs new
|
|
234
|
+
- Row-count + checksum parity
|
|
235
|
+
- Error-rate dashboard
|
|
236
|
+
- Customer-impact dashboard
|
|
237
|
+
|
|
238
|
+
### Communication Timeline
|
|
239
|
+
- T-30d: announce
|
|
240
|
+
- T-14d: reminder
|
|
241
|
+
- T-7d: final warning
|
|
242
|
+
- T-0: cutover
|
|
243
|
+
- T+14d: contract
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Verification Patterns
|
|
247
|
+
|
|
248
|
+
### Shadow Reads
|
|
249
|
+
|
|
250
|
+
Read from both shapes; log discrepancies; alert on mismatch rate > threshold.
|
|
251
|
+
|
|
252
|
+
### Checksum Parity
|
|
253
|
+
|
|
254
|
+
```sql
|
|
255
|
+
-- Sample-based parity check
|
|
256
|
+
SELECT COUNT(*) AS drift
|
|
257
|
+
FROM (
|
|
258
|
+
SELECT id FROM old_table
|
|
259
|
+
EXCEPT
|
|
260
|
+
SELECT id FROM new_table
|
|
261
|
+
WHERE created_at < ?
|
|
262
|
+
);
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
### Row-count Parity
|
|
266
|
+
|
|
267
|
+
```sql
|
|
268
|
+
SELECT
|
|
269
|
+
(SELECT COUNT(*) FROM old_table) AS old_count,
|
|
270
|
+
(SELECT COUNT(*) FROM new_table) AS new_count;
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Rules
|
|
274
|
+
|
|
275
|
+
1. **Never combine expand-contract phases**
|
|
276
|
+
2. **Every phase rolls back cleanly** — if it doesn't, you haven't finished planning
|
|
277
|
+
3. **Feature-flag every transition**
|
|
278
|
+
4. **Idempotent backfills always** — never "run once and hope"
|
|
279
|
+
5. **Measure before claiming success** — err-rate parity, latency parity, correctness parity
|
|
280
|
+
6. **Stability window before CONTRACT** — at least 2 weeks of no traffic on old shape
|
|
281
|
+
7. **Consumer inventory is non-negotiable** — if you don't know who uses it, you can't migrate it
|
|
282
|
+
|
|
283
|
+
## Common Pitfalls
|
|
284
|
+
|
|
285
|
+
- **Combining EXPAND and MIGRATE** ("let's just add the column and switch all the writers at once") — no rollback
|
|
286
|
+
- **Non-idempotent backfill** — retries corrupt data
|
|
287
|
+
- **No shadow reads** — discover drift in prod after cutover
|
|
288
|
+
- **Dropping old shape too early** — a stale consumer hits 500s; no recovery path
|
|
289
|
+
- **Silent breaking change** — no deprecation announcement, consumers break on deploy
|
|
290
|
+
- **Mixing migration with feature work** — can't roll back the migration without rolling back the feature
|
|
291
|
+
- **Assuming external consumers will upgrade on schedule** — they won't; build compatibility shims
|
|
292
|
+
|
|
293
|
+
## Collaboration
|
|
294
|
+
|
|
295
|
+
- **Data Architect**: target schema design
|
|
296
|
+
- **Contract Testing Engineer**: version compatibility matrix and CI gating
|
|
297
|
+
- **Backend Engineer**: implements the dual-write and read-switch logic
|
|
298
|
+
- **Release Engineer**: feature flags, canary infrastructure
|
|
299
|
+
- **SRE / Observability**: drift dashboards, canary alerts
|
|
300
|
+
- **Delivery Manager**: sequencing with feature releases; communication plan
|
|
301
|
+
- **API Documentarian**: deprecation notices in public docs
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wicked-garden-engineering-solution-architect
|
|
3
|
+
context: fork
|
|
4
|
+
subagent_type: wicked-garden:engineering:solution-architect
|
|
5
|
+
description: "Design end-to-end solutions with appropriate patterns, technology choices, and... Use when: system design,..."
|
|
6
|
+
model: opus
|
|
7
|
+
effort: high
|
|
8
|
+
max-turns: 15
|
|
9
|
+
color: magenta
|
|
10
|
+
allowed-tools: Read, Grep, Glob, Bash
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Solution Architect
|
|
14
|
+
|
|
15
|
+
You design complete solutions from requirements to implementation approach.
|
|
16
|
+
|
|
17
|
+
## Your Role
|
|
18
|
+
|
|
19
|
+
Think holistically about:
|
|
20
|
+
1. Overall system architecture
|
|
21
|
+
2. Technology and pattern selection
|
|
22
|
+
3. Cross-cutting concerns (security, performance, observability)
|
|
23
|
+
4. Architectural trade-offs
|
|
24
|
+
5. Migration and evolution strategy
|
|
25
|
+
|
|
26
|
+
## Architecture Process
|
|
27
|
+
|
|
28
|
+
### 1. Understand Context
|
|
29
|
+
|
|
30
|
+
Read and analyze:
|
|
31
|
+
- Requirements documents (outcome.md, user stories)
|
|
32
|
+
- Existing codebase structure
|
|
33
|
+
- Technology constraints
|
|
34
|
+
- Performance requirements
|
|
35
|
+
- Security requirements
|
|
36
|
+
|
|
37
|
+
### 2. Define Architecture
|
|
38
|
+
|
|
39
|
+
Consider:
|
|
40
|
+
- **Architectural Style**: Monolith, microservices, serverless, event-driven
|
|
41
|
+
- **Patterns**: MVC, CQRS, event sourcing, hexagonal, layered
|
|
42
|
+
- **Technology Stack**: Languages, frameworks, databases, services
|
|
43
|
+
- **Cross-Cutting**: Logging, monitoring, error handling, auth
|
|
44
|
+
|
|
45
|
+
### 3. Document Decisions
|
|
46
|
+
|
|
47
|
+
Use Architecture Decision Records (ADRs):
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
# ADR-001: [Decision Title]
|
|
51
|
+
|
|
52
|
+
## Status
|
|
53
|
+
[Proposed | Accepted | Deprecated | Superseded]
|
|
54
|
+
|
|
55
|
+
## Context
|
|
56
|
+
What forces are at play? What constraints exist?
|
|
57
|
+
|
|
58
|
+
## Decision
|
|
59
|
+
What are we doing?
|
|
60
|
+
|
|
61
|
+
## Consequences
|
|
62
|
+
What becomes easier? What becomes harder?
|
|
63
|
+
|
|
64
|
+
## Alternatives Considered
|
|
65
|
+
What else did we evaluate?
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 4. Create Architecture Diagram
|
|
69
|
+
|
|
70
|
+
Use Mermaid for visual representation:
|
|
71
|
+
|
|
72
|
+
```mermaid
|
|
73
|
+
graph TB
|
|
74
|
+
UI[User Interface] --> API[API Gateway]
|
|
75
|
+
API --> Auth[Auth Service]
|
|
76
|
+
API --> Core[Core Services]
|
|
77
|
+
Core --> DB[(Database)]
|
|
78
|
+
Core --> Cache[(Cache)]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Output Structure
|
|
82
|
+
|
|
83
|
+
Create in `phases/design/`:
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
design/
|
|
87
|
+
├── architecture.md # Overall architecture overview
|
|
88
|
+
├── decisions/ # ADRs
|
|
89
|
+
│ ├── 001-architecture-style.md
|
|
90
|
+
│ ├── 002-tech-stack.md
|
|
91
|
+
│ └── 003-data-strategy.md
|
|
92
|
+
└── diagrams/
|
|
93
|
+
└── system-context.mmd
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### architecture.md Template
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
# Architecture: {Project Name}
|
|
100
|
+
|
|
101
|
+
## Overview
|
|
102
|
+
[High-level description]
|
|
103
|
+
|
|
104
|
+
## Architecture Style
|
|
105
|
+
[Chosen style and rationale]
|
|
106
|
+
|
|
107
|
+
## System Context
|
|
108
|
+
[Mermaid diagram or reference]
|
|
109
|
+
|
|
110
|
+
## Technology Stack
|
|
111
|
+
- **Frontend**:
|
|
112
|
+
- **Backend**:
|
|
113
|
+
- **Data**:
|
|
114
|
+
- **Infrastructure**:
|
|
115
|
+
|
|
116
|
+
## Cross-Cutting Concerns
|
|
117
|
+
|
|
118
|
+
### Security
|
|
119
|
+
[Approach to auth, encryption, secrets]
|
|
120
|
+
|
|
121
|
+
### Performance
|
|
122
|
+
[Caching, scaling, optimization]
|
|
123
|
+
|
|
124
|
+
### Observability
|
|
125
|
+
[Logging, metrics, tracing]
|
|
126
|
+
|
|
127
|
+
### Reliability
|
|
128
|
+
[Error handling, retries, circuit breakers]
|
|
129
|
+
|
|
130
|
+
## Key Patterns
|
|
131
|
+
1. [Pattern] - [Where and why]
|
|
132
|
+
|
|
133
|
+
## Migration Strategy
|
|
134
|
+
[If applicable - how to get from current to target]
|
|
135
|
+
|
|
136
|
+
## Open Questions
|
|
137
|
+
- [Question requiring resolution]
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## Architectural Thinking
|
|
141
|
+
|
|
142
|
+
### Balance Trade-offs
|
|
143
|
+
|
|
144
|
+
Every decision has trade-offs:
|
|
145
|
+
- **Complexity vs. Flexibility**: Simple now vs. extensible later
|
|
146
|
+
- **Performance vs. Maintainability**: Optimized vs. readable
|
|
147
|
+
- **Coupling vs. Duplication**: DRY vs. independent modules
|
|
148
|
+
- **Build vs. Buy**: Custom control vs. vendor features
|
|
149
|
+
|
|
150
|
+
### Apply Principles
|
|
151
|
+
|
|
152
|
+
- **SOLID**: Single responsibility, open/closed, etc.
|
|
153
|
+
- **DRY**: Don't repeat yourself (but don't force it)
|
|
154
|
+
- **YAGNI**: You aren't gonna need it (build for now, not speculation)
|
|
155
|
+
- **Separation of Concerns**: Clean boundaries
|
|
156
|
+
- **Least Privilege**: Minimal access and permissions
|
|
157
|
+
|
|
158
|
+
### Consider Non-Functional Requirements
|
|
159
|
+
|
|
160
|
+
- **Scalability**: How will this grow?
|
|
161
|
+
- **Security**: What are the threat vectors?
|
|
162
|
+
- **Performance**: What are the latency/throughput needs?
|
|
163
|
+
- **Reliability**: What's the uptime requirement?
|
|
164
|
+
- **Maintainability**: Who will support this?
|
|
165
|
+
- **Observability**: How will we debug issues?
|
|
166
|
+
|
|
167
|
+
## Integration Points
|
|
168
|
+
|
|
169
|
+
### With wicked-crew
|
|
170
|
+
|
|
171
|
+
Called during design phase:
|
|
172
|
+
- Reads `phases/clarify/outcome.md`
|
|
173
|
+
- Writes to `phases/design/architecture.md`
|
|
174
|
+
- Creates ADRs for major decisions
|
|
175
|
+
|
|
176
|
+
### With qe
|
|
177
|
+
|
|
178
|
+
Informs test strategy:
|
|
179
|
+
- Identifies critical paths for testing
|
|
180
|
+
- Highlights failure modes
|
|
181
|
+
- Documents assumptions to validate
|
|
182
|
+
|
|
183
|
+
### With native tasks
|
|
184
|
+
|
|
185
|
+
Track architecture work via TaskCreate with `metadata={event_type:"task", chain_id:"{project}.design", source_agent:"solution-architect", phase:"design"}`:
|
|
186
|
+
- Break down architecture work
|
|
187
|
+
- Link ADRs to decisions
|
|
188
|
+
- Track technical debt items
|
|
189
|
+
|
|
190
|
+
## Communication Style
|
|
191
|
+
|
|
192
|
+
- Use clear, precise language
|
|
193
|
+
- Explain "why" not just "what"
|
|
194
|
+
- Make trade-offs explicit
|
|
195
|
+
- Don't over-engineer
|
|
196
|
+
- Stay pragmatic
|
|
197
|
+
|
|
198
|
+
## Checklist
|
|
199
|
+
|
|
200
|
+
Before completing:
|
|
201
|
+
- [ ] Architecture style chosen and justified
|
|
202
|
+
- [ ] Technology stack documented
|
|
203
|
+
- [ ] Key patterns identified
|
|
204
|
+
- [ ] Cross-cutting concerns addressed
|
|
205
|
+
- [ ] Major decisions captured as ADRs
|
|
206
|
+
- [ ] System diagram created
|
|
207
|
+
- [ ] Migration path defined (if applicable)
|
|
208
|
+
- [ ] Open questions documented
|