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,299 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "build"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Architecture Examples - E-Commerce and Analytics
|
|
6
|
+
|
|
7
|
+
Real-world architecture examples with complete ADRs and diagrams for e-commerce and analytics platforms.
|
|
8
|
+
|
|
9
|
+
## Example 1: E-Commerce Platform
|
|
10
|
+
|
|
11
|
+
### Context
|
|
12
|
+
|
|
13
|
+
Medium-sized online retail platform:
|
|
14
|
+
- 50,000 daily users
|
|
15
|
+
- 10,000 orders/day
|
|
16
|
+
- Integration with payment gateway, shipping
|
|
17
|
+
- Mobile + web clients
|
|
18
|
+
- Small team (5 developers)
|
|
19
|
+
|
|
20
|
+
### Architecture Decision
|
|
21
|
+
|
|
22
|
+
**Chosen**: Modular Monolith with Event-Driven components
|
|
23
|
+
|
|
24
|
+
**Rationale**:
|
|
25
|
+
- Team too small for microservices overhead
|
|
26
|
+
- Need quick iteration
|
|
27
|
+
- Event-driven for order processing
|
|
28
|
+
- Can extract services later
|
|
29
|
+
|
|
30
|
+
### ADR: Architecture Style
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# ADR-001: Modular Monolith Architecture
|
|
34
|
+
|
|
35
|
+
**Status**: Accepted
|
|
36
|
+
**Date**: 2025-01-15
|
|
37
|
+
|
|
38
|
+
## Context
|
|
39
|
+
|
|
40
|
+
We need to build an e-commerce platform that:
|
|
41
|
+
- Handles 50K daily users
|
|
42
|
+
- Processes 10K orders/day
|
|
43
|
+
- Integrates with external payment and shipping
|
|
44
|
+
- Supports web and mobile clients
|
|
45
|
+
- Can be built by a 5-person team
|
|
46
|
+
|
|
47
|
+
Initial launch in 3 months, with plans to scale 3x in first year.
|
|
48
|
+
|
|
49
|
+
## Decision
|
|
50
|
+
|
|
51
|
+
We will build a **modular monolith** with event-driven order processing.
|
|
52
|
+
|
|
53
|
+
Structure:
|
|
54
|
+
- Single deployable application
|
|
55
|
+
- Clear module boundaries (catalog, cart, orders, users)
|
|
56
|
+
- Event bus for async workflows (order processing)
|
|
57
|
+
- Shared database with schema-per-module
|
|
58
|
+
|
|
59
|
+
## Consequences
|
|
60
|
+
|
|
61
|
+
**Positive**: Faster development; easier debugging; simple deployment; lower ops overhead; clear module boundaries enable future extraction.
|
|
62
|
+
**Negative**: All modules deploy together; shared database limits independent scaling; risk of coupling if not disciplined.
|
|
63
|
+
**Mitigation**: Enforce boundaries via package structure; use events for cross-module communication.
|
|
64
|
+
|
|
65
|
+
## Alternatives Considered
|
|
66
|
+
|
|
67
|
+
**Microservices**: Independent scaling but operational complexity exceeds team capacity — rejected.
|
|
68
|
+
**Traditional Monolith**: Simplest but no clear boundaries, harder to extract later — rejected.
|
|
69
|
+
|
|
70
|
+
## Migration Path
|
|
71
|
+
|
|
72
|
+
**Phase 1** (Months 0-6): Modular monolith
|
|
73
|
+
**Phase 2** (Months 6-12): Extract payment service (PCI compliance)
|
|
74
|
+
**Phase 3** (Months 12-18): Extract order service (independent scaling)
|
|
75
|
+
|
|
76
|
+
## Research
|
|
77
|
+
|
|
78
|
+
- [Shopify's Modular Monolith](https://example.com)
|
|
79
|
+
- Team survey: 3/5 have microservices experience but prefer starting simple
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Component Structure
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
src/
|
|
86
|
+
├── modules/
|
|
87
|
+
│ ├── catalog/
|
|
88
|
+
│ │ ├── domain/
|
|
89
|
+
│ │ │ ├── Product.ts
|
|
90
|
+
│ │ │ └── Category.ts
|
|
91
|
+
│ │ ├── application/
|
|
92
|
+
│ │ │ └── ProductService.ts
|
|
93
|
+
│ │ ├── infrastructure/
|
|
94
|
+
│ │ │ └── ProductRepository.ts
|
|
95
|
+
│ │ └── api/
|
|
96
|
+
│ │ └── ProductController.ts
|
|
97
|
+
│ │
|
|
98
|
+
│ ├── cart/
|
|
99
|
+
│ │ └── [same structure]
|
|
100
|
+
│ │
|
|
101
|
+
│ ├── orders/
|
|
102
|
+
│ │ └── [same structure]
|
|
103
|
+
│ │
|
|
104
|
+
│ └── users/
|
|
105
|
+
│ └── [same structure]
|
|
106
|
+
│
|
|
107
|
+
├── shared/
|
|
108
|
+
│ ├── events/
|
|
109
|
+
│ │ └── EventBus.ts
|
|
110
|
+
│ ├── database/
|
|
111
|
+
│ │ └── connection.ts
|
|
112
|
+
│ └── utils/
|
|
113
|
+
│
|
|
114
|
+
└── app.ts
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### System Diagram
|
|
118
|
+
|
|
119
|
+
```mermaid
|
|
120
|
+
graph TD
|
|
121
|
+
subgraph "Clients"
|
|
122
|
+
Web[Web App]
|
|
123
|
+
Mobile[Mobile App]
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
subgraph "Modular Monolith"
|
|
127
|
+
API[API Gateway]
|
|
128
|
+
|
|
129
|
+
subgraph "Modules"
|
|
130
|
+
Catalog[Catalog Module]
|
|
131
|
+
Cart[Cart Module]
|
|
132
|
+
Orders[Orders Module]
|
|
133
|
+
Users[Users Module]
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
Events[Event Bus]
|
|
137
|
+
|
|
138
|
+
Catalog --> Events
|
|
139
|
+
Cart --> Events
|
|
140
|
+
Orders --> Events
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
subgraph "Data Layer"
|
|
144
|
+
DB[(PostgreSQL)]
|
|
145
|
+
Cache[(Redis)]
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
subgraph "External"
|
|
149
|
+
Payment[Payment Gateway]
|
|
150
|
+
Shipping[Shipping API]
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
Web --> API
|
|
154
|
+
Mobile --> API
|
|
155
|
+
API --> Catalog
|
|
156
|
+
API --> Cart
|
|
157
|
+
API --> Orders
|
|
158
|
+
API --> Users
|
|
159
|
+
|
|
160
|
+
Catalog --> DB
|
|
161
|
+
Cart --> Cache
|
|
162
|
+
Orders --> DB
|
|
163
|
+
Orders --> Payment
|
|
164
|
+
Orders --> Shipping
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Order Processing Flow
|
|
168
|
+
|
|
169
|
+
```mermaid
|
|
170
|
+
sequenceDiagram
|
|
171
|
+
participant C as Client
|
|
172
|
+
participant API
|
|
173
|
+
participant Cart
|
|
174
|
+
participant Orders
|
|
175
|
+
participant Events
|
|
176
|
+
participant Payment
|
|
177
|
+
participant Email
|
|
178
|
+
|
|
179
|
+
C->>API: POST /checkout
|
|
180
|
+
API->>Cart: Get Cart
|
|
181
|
+
Cart-->>API: Cart Items
|
|
182
|
+
API->>Orders: Create Order
|
|
183
|
+
Orders->>DB: Insert Order
|
|
184
|
+
Orders->>Events: Publish OrderCreated
|
|
185
|
+
Orders-->>API: Order ID
|
|
186
|
+
API-->>C: 202 Accepted
|
|
187
|
+
|
|
188
|
+
Events->>Payment: Process Payment
|
|
189
|
+
Payment->>External: Charge Card
|
|
190
|
+
External-->>Payment: Success
|
|
191
|
+
Payment->>Events: Publish PaymentCompleted
|
|
192
|
+
|
|
193
|
+
Events->>Email: Send Confirmation
|
|
194
|
+
Events->>Orders: Update Status
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
## Example 2: Real-Time Analytics Platform
|
|
198
|
+
|
|
199
|
+
### Context
|
|
200
|
+
|
|
201
|
+
Analytics SaaS for tracking user behavior:
|
|
202
|
+
- Ingests millions of events/day
|
|
203
|
+
- Real-time dashboards
|
|
204
|
+
- Historical reporting
|
|
205
|
+
- Multi-tenant
|
|
206
|
+
|
|
207
|
+
### Architecture Decision
|
|
208
|
+
|
|
209
|
+
**Chosen**: Lambda Architecture (Batch + Speed layers)
|
|
210
|
+
|
|
211
|
+
### ADR: Lambda Architecture
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
# ADR-002: Lambda Architecture for Analytics
|
|
215
|
+
|
|
216
|
+
**Status**: Accepted
|
|
217
|
+
**Date**: 2025-01-20
|
|
218
|
+
|
|
219
|
+
## Context
|
|
220
|
+
|
|
221
|
+
Building analytics platform with:
|
|
222
|
+
- 10M events/day ingestion
|
|
223
|
+
- Real-time dashboards (<5s freshness)
|
|
224
|
+
- Historical reports (TB-scale data)
|
|
225
|
+
- Both need to query same logical data
|
|
226
|
+
|
|
227
|
+
Conflicting requirements:
|
|
228
|
+
- Real-time needs low latency
|
|
229
|
+
- Historical needs batch efficiency
|
|
230
|
+
- Both need accurate aggregations
|
|
231
|
+
|
|
232
|
+
## Decision
|
|
233
|
+
|
|
234
|
+
Implement **Lambda Architecture**:
|
|
235
|
+
|
|
236
|
+
**Speed Layer**: Real-time processing
|
|
237
|
+
- Kafka → Flink → Redis
|
|
238
|
+
- Recent data (last 24 hours)
|
|
239
|
+
- Approximate aggregations
|
|
240
|
+
|
|
241
|
+
**Batch Layer**: Historical processing
|
|
242
|
+
- S3 → Spark → Parquet
|
|
243
|
+
- All data (immutable)
|
|
244
|
+
- Accurate aggregations
|
|
245
|
+
|
|
246
|
+
**Serving Layer**: Unified queries
|
|
247
|
+
- Merge results from both layers
|
|
248
|
+
- API abstracts the complexity
|
|
249
|
+
|
|
250
|
+
## Consequences
|
|
251
|
+
|
|
252
|
+
**Positive**: Independent optimization of real-time and batch; immutable batch layer (replayable); scalable to billions of events.
|
|
253
|
+
**Negative**: Two processing paths; eventual consistency; duplicate logic risk.
|
|
254
|
+
**Mitigation**: Share logic as libraries; automated reconciliation; clear data freshness SLAs.
|
|
255
|
+
|
|
256
|
+
## Alternatives Considered
|
|
257
|
+
|
|
258
|
+
**Pure Streaming (Kappa)**: Single path, but hard to replay history — rejected, historical queries are critical.
|
|
259
|
+
**Pure Batch**: Simpler, accurate, but can't meet real-time SLA — rejected, real-time is a key differentiator.
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### System Diagram
|
|
263
|
+
|
|
264
|
+
```mermaid
|
|
265
|
+
graph TD
|
|
266
|
+
subgraph "Ingestion"
|
|
267
|
+
Events[Event Stream]
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
subgraph "Speed Layer - Real-time"
|
|
271
|
+
Kafka[Kafka]
|
|
272
|
+
Flink[Flink Stream]
|
|
273
|
+
Redis[(Redis)]
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
subgraph "Batch Layer - Historical"
|
|
277
|
+
S3[(S3 Raw Data)]
|
|
278
|
+
Spark[Spark Batch]
|
|
279
|
+
Parquet[(Parquet Files)]
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
subgraph "Serving Layer"
|
|
283
|
+
API[Query API]
|
|
284
|
+
Dashboard[Dashboard]
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
Events --> Kafka
|
|
288
|
+
Events --> S3
|
|
289
|
+
|
|
290
|
+
Kafka --> Flink
|
|
291
|
+
Flink --> Redis
|
|
292
|
+
|
|
293
|
+
S3 --> Spark
|
|
294
|
+
Spark --> Parquet
|
|
295
|
+
|
|
296
|
+
API --> Redis
|
|
297
|
+
API --> Parquet
|
|
298
|
+
Dashboard --> API
|
|
299
|
+
```
|
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
---
|
|
2
|
+
phase_relevance: ["design", "build"]
|
|
3
|
+
archetype_relevance: ["*"]
|
|
4
|
+
---
|
|
5
|
+
# Architecture Examples - SaaS and Trading
|
|
6
|
+
|
|
7
|
+
Real-world architecture examples with complete ADRs and diagrams for multi-tenant SaaS and financial trading platforms, plus pattern matching guide.
|
|
8
|
+
|
|
9
|
+
## Example 3: Multi-Tenant SaaS
|
|
10
|
+
|
|
11
|
+
### Context
|
|
12
|
+
|
|
13
|
+
B2B SaaS application:
|
|
14
|
+
- 1,000 customer tenants
|
|
15
|
+
- Varying sizes (10-10,000 users each)
|
|
16
|
+
- Data isolation required
|
|
17
|
+
- White-label capability
|
|
18
|
+
|
|
19
|
+
### Architecture Decision
|
|
20
|
+
|
|
21
|
+
**Chosen**: Hybrid tenancy model
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
# ADR-003: Hybrid Multi-Tenancy Model
|
|
25
|
+
|
|
26
|
+
**Status**: Accepted
|
|
27
|
+
**Date**: 2025-01-22
|
|
28
|
+
|
|
29
|
+
## Context
|
|
30
|
+
|
|
31
|
+
Multi-tenant SaaS with diverse customer sizes:
|
|
32
|
+
- Tier 1: Enterprise (10 customers, 5K+ users each)
|
|
33
|
+
- Tier 2: Business (100 customers, 100-1K users)
|
|
34
|
+
- Tier 3: Starter (1K+ customers, 10-100 users)
|
|
35
|
+
|
|
36
|
+
Requirements:
|
|
37
|
+
- Data isolation (regulatory)
|
|
38
|
+
- Cost efficiency
|
|
39
|
+
- Performance isolation for large tenants
|
|
40
|
+
- White-label for enterprise
|
|
41
|
+
|
|
42
|
+
## Decision
|
|
43
|
+
|
|
44
|
+
**Hybrid tenancy model**:
|
|
45
|
+
|
|
46
|
+
**Tier 1 (Enterprise)**:
|
|
47
|
+
- Dedicated database per tenant
|
|
48
|
+
- Dedicated app instances
|
|
49
|
+
- Custom subdomain
|
|
50
|
+
- SLA: 99.9%
|
|
51
|
+
|
|
52
|
+
**Tier 2 (Business)**:
|
|
53
|
+
- Shared database, separate schemas
|
|
54
|
+
- Shared app pool
|
|
55
|
+
- Tenant subdomain
|
|
56
|
+
- SLA: 99.5%
|
|
57
|
+
|
|
58
|
+
**Tier 3 (Starter)**:
|
|
59
|
+
- Shared database, shared schema (tenant_id column)
|
|
60
|
+
- Shared app pool
|
|
61
|
+
- Shared domain
|
|
62
|
+
- SLA: 99%
|
|
63
|
+
|
|
64
|
+
## Consequences
|
|
65
|
+
|
|
66
|
+
### Positive
|
|
67
|
+
|
|
68
|
+
- Cost-effective for small tenants
|
|
69
|
+
- Performance isolation for large tenants
|
|
70
|
+
- Can customize enterprise deployments
|
|
71
|
+
- Clear upgrade path
|
|
72
|
+
|
|
73
|
+
### Negative
|
|
74
|
+
|
|
75
|
+
- More infrastructure variants
|
|
76
|
+
- Complex tenant routing
|
|
77
|
+
- Migration complexity on upgrades
|
|
78
|
+
|
|
79
|
+
## Implementation
|
|
80
|
+
|
|
81
|
+
**Tenant Resolver Middleware**:
|
|
82
|
+
```typescript
|
|
83
|
+
async function resolveTenant(req: Request): Promise<Tenant> {
|
|
84
|
+
const hostname = req.hostname;
|
|
85
|
+
|
|
86
|
+
// Enterprise: custom domain
|
|
87
|
+
if (hostname.endsWith('.enterprise.com')) {
|
|
88
|
+
return await enterpriseRepo.findByDomain(hostname);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Business/Starter: subdomain
|
|
92
|
+
const subdomain = hostname.split('.')[0];
|
|
93
|
+
return await tenantRepo.findBySubdomain(subdomain);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
async function connectDatabase(tenant: Tenant): Promise<Connection> {
|
|
97
|
+
switch (tenant.tier) {
|
|
98
|
+
case 'enterprise':
|
|
99
|
+
return dedicatedPool.get(tenant.id);
|
|
100
|
+
case 'business':
|
|
101
|
+
return sharedPool.schema(tenant.schema);
|
|
102
|
+
case 'starter':
|
|
103
|
+
return sharedPool.where({ tenant_id: tenant.id });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Tenant Routing
|
|
110
|
+
|
|
111
|
+
```mermaid
|
|
112
|
+
graph TD
|
|
113
|
+
Request[Incoming Request]
|
|
114
|
+
|
|
115
|
+
Request --> Router{Tenant Resolver}
|
|
116
|
+
|
|
117
|
+
Router -->|enterprise.acme.com| Ent[Enterprise Pool]
|
|
118
|
+
Router -->|acme.app.com| Bus[Business Pool]
|
|
119
|
+
Router -->|shared.app.com| Start[Starter Pool]
|
|
120
|
+
|
|
121
|
+
Ent --> DB1[(Dedicated DB)]
|
|
122
|
+
Bus --> DB2[(Shared DB<br/>Schema: acme)]
|
|
123
|
+
Start --> DB3[(Shared DB<br/>WHERE tenant_id)]
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
## Example 4: Financial Trading Platform
|
|
127
|
+
|
|
128
|
+
### Context
|
|
129
|
+
|
|
130
|
+
Real-time trading platform:
|
|
131
|
+
- <50ms latency requirement
|
|
132
|
+
- High availability (99.99%)
|
|
133
|
+
- Regulatory compliance
|
|
134
|
+
- Complex event processing
|
|
135
|
+
|
|
136
|
+
### Architecture Decision
|
|
137
|
+
|
|
138
|
+
**Chosen**: CQRS + Event Sourcing
|
|
139
|
+
|
|
140
|
+
### ADR: Event Sourcing for Audit
|
|
141
|
+
|
|
142
|
+
```markdown
|
|
143
|
+
# ADR-004: Event Sourcing for Trade Audit Trail
|
|
144
|
+
|
|
145
|
+
**Status**: Accepted
|
|
146
|
+
**Date**: 2025-01-18
|
|
147
|
+
|
|
148
|
+
## Context
|
|
149
|
+
|
|
150
|
+
Regulatory requirements:
|
|
151
|
+
- Complete audit trail of all trades
|
|
152
|
+
- Point-in-time state reconstruction
|
|
153
|
+
- Immutable records
|
|
154
|
+
- 7-year retention
|
|
155
|
+
|
|
156
|
+
Performance requirements:
|
|
157
|
+
- <50ms trade execution
|
|
158
|
+
- High read throughput for positions
|
|
159
|
+
- Complex queries on trade history
|
|
160
|
+
|
|
161
|
+
## Decision
|
|
162
|
+
|
|
163
|
+
Implement **Event Sourcing** with **CQRS**:
|
|
164
|
+
|
|
165
|
+
**Write Side**:
|
|
166
|
+
- Store events in append-only log
|
|
167
|
+
- Events are source of truth
|
|
168
|
+
- Fast writes to event store
|
|
169
|
+
|
|
170
|
+
**Read Side**:
|
|
171
|
+
- Materialized views for queries
|
|
172
|
+
- Optimized for different use cases
|
|
173
|
+
- Eventually consistent
|
|
174
|
+
|
|
175
|
+
## Event Store
|
|
176
|
+
|
|
177
|
+
PostgreSQL with append-only table:
|
|
178
|
+
```sql
|
|
179
|
+
CREATE TABLE events (
|
|
180
|
+
id SERIAL PRIMARY KEY,
|
|
181
|
+
stream_id UUID NOT NULL,
|
|
182
|
+
event_type VARCHAR(100) NOT NULL,
|
|
183
|
+
event_data JSONB NOT NULL,
|
|
184
|
+
metadata JSONB,
|
|
185
|
+
version INTEGER NOT NULL,
|
|
186
|
+
timestamp TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
187
|
+
UNIQUE(stream_id, version)
|
|
188
|
+
);
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## Read Models
|
|
192
|
+
|
|
193
|
+
Multiple projections:
|
|
194
|
+
- `current_positions`: Latest state
|
|
195
|
+
- `trade_history`: Queryable trades
|
|
196
|
+
- `risk_metrics`: Aggregated risk
|
|
197
|
+
- `compliance_view`: Regulatory reporting
|
|
198
|
+
|
|
199
|
+
## Consequences
|
|
200
|
+
|
|
201
|
+
### Positive
|
|
202
|
+
|
|
203
|
+
- Complete audit trail (regulatory requirement)
|
|
204
|
+
- Point-in-time reconstruction
|
|
205
|
+
- Optimized read models
|
|
206
|
+
- Natural event replay
|
|
207
|
+
- Temporal queries easy
|
|
208
|
+
|
|
209
|
+
### Negative
|
|
210
|
+
|
|
211
|
+
- Eventually consistent reads
|
|
212
|
+
- More storage (all events kept)
|
|
213
|
+
- Projection rebuilding complexity
|
|
214
|
+
- Schema evolution challenges
|
|
215
|
+
|
|
216
|
+
## Alternatives
|
|
217
|
+
|
|
218
|
+
### Traditional CRUD
|
|
219
|
+
|
|
220
|
+
**Rejected**: Can't reconstruct history, audit trail requires separate logging
|
|
221
|
+
|
|
222
|
+
### Change Data Capture
|
|
223
|
+
|
|
224
|
+
**Rejected**: Not all databases in stack support, harder to reason about
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### Event Flow
|
|
228
|
+
|
|
229
|
+
```mermaid
|
|
230
|
+
sequenceDiagram
|
|
231
|
+
participant Trader
|
|
232
|
+
participant Command
|
|
233
|
+
participant Events
|
|
234
|
+
participant Projection
|
|
235
|
+
participant Query
|
|
236
|
+
|
|
237
|
+
Trader->>Command: PlaceTrade
|
|
238
|
+
Command->>Events: TradeSubmitted
|
|
239
|
+
Command->>Events: TradeValidated
|
|
240
|
+
Command->>Events: TradeExecuted
|
|
241
|
+
Command-->>Trader: Trade ID
|
|
242
|
+
|
|
243
|
+
Events->>Projection: Update Positions
|
|
244
|
+
Events->>Projection: Update History
|
|
245
|
+
Events->>Projection: Update Risk
|
|
246
|
+
|
|
247
|
+
Trader->>Query: Get Positions
|
|
248
|
+
Query->>Projection: Read View
|
|
249
|
+
Projection-->>Query: Current State
|
|
250
|
+
Query-->>Trader: Positions
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
## Pattern Matching Guide
|
|
254
|
+
|
|
255
|
+
| Example | Pattern | Why |
|
|
256
|
+
|---------|---------|-----|
|
|
257
|
+
| E-Commerce | Modular Monolith | Small team, known domain, future extraction |
|
|
258
|
+
| Analytics | Lambda Architecture | Real-time + historical, different optimization |
|
|
259
|
+
| SaaS | Hybrid Tenancy | Cost + isolation balance |
|
|
260
|
+
| Trading | Event Sourcing + CQRS | Audit + performance |
|
|
261
|
+
|
|
262
|
+
## Key Takeaways
|
|
263
|
+
|
|
264
|
+
1. **Start Simple**: E-commerce example chose monolith over microservices
|
|
265
|
+
2. **Match Requirements**: Analytics needed both real-time and batch
|
|
266
|
+
3. **Consider Trade-offs**: SaaS balanced cost vs isolation
|
|
267
|
+
4. **Regulatory Matters**: Trading chose event sourcing for compliance
|
|
268
|
+
5. **Team Size**: Architecture should match team capabilities
|
|
269
|
+
6. **Evolution Path**: All examples planned for future changes
|
|
270
|
+
|
|
271
|
+
## Common Mistakes
|
|
272
|
+
|
|
273
|
+
### Over-Engineering Early
|
|
274
|
+
|
|
275
|
+
Bad: "Let's use microservices for this 3-person startup"
|
|
276
|
+
Good: "Start with a modular monolith, extract later"
|
|
277
|
+
|
|
278
|
+
### Ignoring Non-Functional Requirements
|
|
279
|
+
|
|
280
|
+
Bad: Choosing CQRS because it's cool
|
|
281
|
+
Good: Choosing CQRS for audit/performance requirements
|
|
282
|
+
|
|
283
|
+
### No Evolution Plan
|
|
284
|
+
|
|
285
|
+
Bad: "This is the final architecture"
|
|
286
|
+
Good: "Phase 1: Monolith, Phase 2: Extract high-change services"
|
|
287
|
+
|
|
288
|
+
### Copying Without Understanding
|
|
289
|
+
|
|
290
|
+
Bad: "Netflix uses microservices, so should we"
|
|
291
|
+
Good: "Our requirements are X, so pattern Y fits"
|