@phuc1403/musketeer 0.9.0 → 0.11.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/INSTALLATION.md +53 -52
- package/README.md +1 -1
- package/bin/musketeer.js +168 -168
- package/manifest.json +19 -2
- package/package.json +48 -48
- package/src/dotnet-scaffold-copier.js +79 -79
- package/src/provisioner/detect.js +93 -93
- package/src/self-update.js +77 -77
- package/template/.claude/agents/git-manager.md +18 -18
- package/template/.claude/agents/hallmark-auditor.md +78 -78
- package/template/.claude/agents/researcher.md +33 -33
- package/template/.claude/hooks/block-unsafe-adr-title.cjs +85 -85
- package/template/.claude/hooks/init-adr-dir.cjs +173 -173
- package/template/.claude/hooks/inject-adr-flags.cjs +94 -94
- package/template/.claude/hooks/lib/adr/command-scan.cjs +115 -115
- package/template/.claude/hooks/lib/characteristics/checker.cjs +357 -357
- package/template/.claude/hooks/lib/git-info-cache.cjs +191 -191
- package/template/.claude/hooks/sync-adr-toc.cjs +146 -146
- package/template/.claude/hooks/usage-quota-cache-refresh.cjs +166 -166
- package/template/.claude/hooks/validate-characteristics-hook.cjs +66 -66
- package/template/.claude/hooks/validate-cml-hook.js +146 -145
- package/template/.claude/skills/adr-writer/SKILL.md +48 -48
- package/template/.claude/skills/adr-writer/references/adr-example.md +35 -35
- package/template/.claude/skills/architecture-characteristic-writer/SKILL.md +215 -215
- package/template/.claude/skills/architecture-characteristic-writer/assets/worksheet-template.md +29 -29
- package/template/.claude/skills/architecture-characteristic-writer/references/characteristics-catalog.md +40 -40
- package/template/.claude/skills/architecture-characteristic-writer/scripts/ranking-table.cjs +171 -171
- package/template/.claude/skills/context-map/SKILL.md +80 -80
- package/template/.claude/skills/context-map/example.cml +106 -106
- package/template/.claude/skills/context-map/reference/Bounded Context/Bounded Context.md +40 -40
- package/template/.claude/skills/context-map/reference/Bounded Context/businessModel.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context/domainVisionStatement.md +2 -2
- package/template/.claude/skills/context-map/reference/Bounded Context/evolution.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context/implementationTechnology.md +1 -1
- package/template/.claude/skills/context-map/reference/Bounded Context/implements.md +1 -1
- package/template/.claude/skills/context-map/reference/Bounded Context/knowledgeLevel.md +4 -4
- package/template/.claude/skills/context-map/reference/Bounded Context/realizes.md +9 -9
- package/template/.claude/skills/context-map/reference/Bounded Context/refines.md +10 -10
- package/template/.claude/skills/context-map/reference/Bounded Context/responsibilities.md +26 -26
- package/template/.claude/skills/context-map/reference/Bounded Context/type.md +23 -23
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Anticorruption Layer.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Bounded Context Relationship.md +12 -12
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Conformist.md +5 -5
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Customer-Supplier (C-S).md +22 -22
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Open Host Service.md +4 -4
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Partnership (P).md +13 -13
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Published Language.md +4 -4
- package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Shared Kernel (SK).md +12 -12
- package/template/.claude/skills/context-map/reference/Context Map.md +62 -62
- package/template/.claude/skills/context-map/reference/Domain/Domain.md +30 -30
- package/template/.claude/skills/context-map/reference/Domain/supports.md +33 -33
- package/template/.claude/skills/context-map/reference/Domain/type.md +3 -3
- package/template/.claude/skills/context-map/reference/Semantic Rules.md +32 -32
- package/template/.claude/skills/hallmark/SKILL.md +552 -552
- package/template/.claude/skills/hallmark/references/anti-patterns.md +412 -412
- package/template/.claude/skills/hallmark/references/assets.md +406 -406
- package/template/.claude/skills/hallmark/references/color.md +95 -95
- package/template/.claude/skills/hallmark/references/component-cookbook.md +256 -256
- package/template/.claude/skills/hallmark/references/components/c1-outlined-chip.md +12 -12
- package/template/.claude/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -16
- package/template/.claude/skills/hallmark/references/components/c3-typographic-link.md +8 -8
- package/template/.claude/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -16
- package/template/.claude/skills/hallmark/references/components/f1-bento-grid.md +20 -20
- package/template/.claude/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -20
- package/template/.claude/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -11
- package/template/.claude/skills/hallmark/references/components/f4-step-sequence.md +11 -11
- package/template/.claude/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -11
- package/template/.claude/skills/hallmark/references/components/f6-product-card-grid.md +41 -41
- package/template/.claude/skills/hallmark/references/components/ft1-mast-headed.md +13 -13
- package/template/.claude/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -10
- package/template/.claude/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -12
- package/template/.claude/skills/hallmark/references/components/ft4-dense-typographic.md +10 -10
- package/template/.claude/skills/hallmark/references/components/ft5-statement.md +21 -21
- package/template/.claude/skills/hallmark/references/components/ft6-letter-close.md +19 -19
- package/template/.claude/skills/hallmark/references/components/ft7-newsletter-first.md +27 -27
- package/template/.claude/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -25
- package/template/.claude/skills/hallmark/references/components/h1-marquee.md +15 -15
- package/template/.claude/skills/hallmark/references/components/h2-split-diptych.md +15 -15
- package/template/.claude/skills/hallmark/references/components/h3-quote-led.md +11 -11
- package/template/.claude/skills/hallmark/references/components/h4-stat-led.md +14 -14
- package/template/.claude/skills/hallmark/references/components/h5-letter-hero.md +11 -11
- package/template/.claude/skills/hallmark/references/components/h6-photographic-fold.md +16 -16
- package/template/.claude/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -27
- package/template/.claude/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -23
- package/template/.claude/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -27
- package/template/.claude/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -12
- package/template/.claude/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -19
- package/template/.claude/skills/hallmark/references/components/n2-floating-chip.md +14 -14
- package/template/.claude/skills/hallmark/references/components/n3-side-rail.md +14 -14
- package/template/.claude/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -9
- package/template/.claude/skills/hallmark/references/components/n5-floating-pill.md +28 -28
- package/template/.claude/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -24
- package/template/.claude/skills/hallmark/references/components/n7-brutal-slab.md +22 -22
- package/template/.claude/skills/hallmark/references/components/n8-terminal-command.md +21 -21
- package/template/.claude/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -17
- package/template/.claude/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -15
- package/template/.claude/skills/hallmark/references/components/s2-hanging.md +13 -13
- package/template/.claude/skills/hallmark/references/components/s3-sticky-pinned.md +19 -19
- package/template/.claude/skills/hallmark/references/components/s4-inline-no-break.md +11 -11
- package/template/.claude/skills/hallmark/references/components/s5-bottom-anchored.md +13 -13
- package/template/.claude/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -12
- package/template/.claude/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -19
- package/template/.claude/skills/hallmark/references/components/t3-single-huge-quote.md +11 -11
- package/template/.claude/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -14
- package/template/.claude/skills/hallmark/references/contract.md +24 -24
- package/template/.claude/skills/hallmark/references/copy.md +182 -182
- package/template/.claude/skills/hallmark/references/custom-craft.md +626 -626
- package/template/.claude/skills/hallmark/references/custom-theme.md +329 -329
- package/template/.claude/skills/hallmark/references/design-md.md +116 -116
- package/template/.claude/skills/hallmark/references/export-formats.md +328 -328
- package/template/.claude/skills/hallmark/references/floating-nav.md +89 -89
- package/template/.claude/skills/hallmark/references/genres/atmospheric.md +65 -65
- package/template/.claude/skills/hallmark/references/genres/editorial.md +70 -70
- package/template/.claude/skills/hallmark/references/genres/modern-minimal.md +67 -67
- package/template/.claude/skills/hallmark/references/genres/playful.md +65 -65
- package/template/.claude/skills/hallmark/references/hero-enrichment.md +474 -474
- package/template/.claude/skills/hallmark/references/imagery-kit.md +170 -170
- package/template/.claude/skills/hallmark/references/interaction-and-states.md +207 -207
- package/template/.claude/skills/hallmark/references/layout-and-space.md +111 -111
- package/template/.claude/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -35
- package/template/.claude/skills/hallmark/references/macrostructures/02-long-document.md +34 -34
- package/template/.claude/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -31
- package/template/.claude/skills/hallmark/references/macrostructures/04-stat-led.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/05-workbench.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -33
- package/template/.claude/skills/hallmark/references/macrostructures/07-manifesto.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/08-photographic.md +34 -34
- package/template/.claude/skills/hallmark/references/macrostructures/09-quote-led.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/10-specimen.md +32 -32
- package/template/.claude/skills/hallmark/references/macrostructures/11-catalogue.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/12-letter.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/13-index-first.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/15-split-studio.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures/21-component-playground.md +23 -23
- package/template/.claude/skills/hallmark/references/macrostructures.md +89 -89
- package/template/.claude/skills/hallmark/references/microinteractions.md +260 -260
- package/template/.claude/skills/hallmark/references/motion.md +109 -109
- package/template/.claude/skills/hallmark/references/preview-examples.md +49 -49
- package/template/.claude/skills/hallmark/references/responsive.md +138 -138
- package/template/.claude/skills/hallmark/references/slop-test.md +205 -205
- package/template/.claude/skills/hallmark/references/structure.md +164 -164
- package/template/.claude/skills/hallmark/references/study.md +511 -511
- package/template/.claude/skills/hallmark/references/typography.md +243 -243
- package/template/.claude/skills/hallmark/references/verbs/audit.md +25 -25
- package/template/.claude/skills/hallmark/references/verbs/redesign.md +269 -269
- package/template/.claude/skills/hallmark-loop/SKILL.md +105 -105
- package/template/.claude/skills/hallmark-loop/references/auditor-call.md +60 -60
- package/template/.claude/skills/hallmark-loop/references/capture.md +78 -78
- package/template/.claude/skills/hallmark-loop/references/loop-control.md +79 -79
- package/template/.claude/skills/handoff/SKILL.md +15 -15
- package/template/.claude/skills/knowledge-crunching/SKILL.md +94 -94
- package/template/.claude/skills/logical-components/.gitattributes +2 -0
- package/template/.claude/skills/logical-components/SKILL.md +102 -0
- package/template/.claude/skills/logical-components/references/component-classifier-prompt.md +53 -0
- package/template/.claude/skills/logical-components/references/responsibility-agent-prompt.md +67 -0
- package/template/.claude/skills/logical-components/references/responsibility-verifier-prompt.md +39 -0
- package/template/.claude/skills/logical-components/scripts/Directory.Build.props +7 -0
- package/template/.claude/skills/logical-components/scripts/Directory.Packages.props +8 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/BatchPlanning.cs +69 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/BatchesCommand.cs +39 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/CandidatesCommand.cs +70 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/CitableSource.cs +39 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/Citation.cs +37 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ClassifyBatchesCommand.cs +65 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ClassifyMergeCommand.cs +187 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentDiscovery.cs +166 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentRule.cs +87 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentsFile.cs +83 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/CouplingResolver.cs +196 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/DisplayName.cs +14 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/EdgeExtraction.cs +111 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ExtractCommand.cs +72 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ExtractConfig.cs +79 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/LogicalComponents.csproj +15 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/MarkdownRenderer.cs +73 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/MemberUseResolution.cs +203 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/MemberUses.cs +155 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/PortResolution.cs +75 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/Program.cs +27 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ProjectFilters.cs +76 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/PruneCommand.cs +132 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/RenderCommand.cs +173 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ResponsibilityBatches.cs +84 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ResponsibilityValidation.cs +178 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/SeamDispatch.cs +59 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/SymbolNames.cs +53 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/TypeMap.cs +75 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/WalkRoots.cs +63 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/WorkspaceLoader.cs +227 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/AssignIdsTests.cs +41 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/BatchPlanningTests.cs +82 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CandidatesCommandTests.cs +34 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CitationTests.cs +42 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ClassifyCommandsTests.cs +176 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ComponentDiscoveryTests.cs +190 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CouplingExtractionTests.cs +174 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/DisplayNameTests.cs +17 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ExtractConfigTests.cs +72 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/FixturePaths.cs +32 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/LogicalComponents.Tests.csproj +23 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/MarkdownRendererTests.cs +50 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ProjectFiltersTests.cs +65 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/PruneCommandTests.cs +119 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderCommandTests.cs +162 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderGoldenTests.cs +34 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderTestData.cs +49 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ResponsibilityValidationTests.cs +227 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/SampleAppWorkspace.cs +27 -0
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/WorkspaceLoaderTests.cs +87 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/BrokenApp/src/Broken.Application/Broken.Application.csproj +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/BrokenApp/src/Broken.Application/Broken.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/MultiTargetApp.slnx +6 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Legacy.FSharp/Legacy.FSharp.fsproj +8 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Legacy.FSharp/Library.fs +5 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Application/Multi.Application.csproj +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Application/Scheduling.cs +14 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application/Solo.Application.csproj +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application/SoloGreeting.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application.Tests/FakeGreeting.cs +6 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application.Tests/Solo.Application.Tests.csproj +11 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/components.json +63 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/expected.md +28 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/repo/src/App/OrderAcceptance.cs +16 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/repo/src/Infra/OrderQueue.cs +10 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/resp/batch-01.json +18 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/SampleApp.slnx +10 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/logical-components.json +78 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/CandidateCases.cs +37 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/CouplingCases.cs +33 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/DependencyInjection.cs +18 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/EdgeCases.cs +63 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/LoudNotifying.Base.cs +5 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/LoudNotifying.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderAcceptance.cs +17 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderOptions.cs +9 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRejectedException.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRequest.cs +4 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRunning.cs +18 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderValidation.cs +6 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/Ports.cs +19 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/PriceRules.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReceiptPrinting.Totals.cs +6 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReceiptPrinting.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReviewCases.cs +107 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReviewFixCases.cs +143 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/RunClock.cs +12 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/Sample.Application.csproj +10 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/SeeThroughCases.cs +89 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Billing.Application/OrderRunning.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Billing.Application/Sample.Billing.Application.csproj +11 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ForwardedNotifier.cs +8 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/InfrastructureDependencyInjection.cs +16 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/Mailer.cs +6 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/OrderQueue.cs +11 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/QueueEntry.cs +4 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/QueueStore.cs +8 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ReviewCases.cs +35 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ReviewFixCases.cs +13 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/Sample.Infrastructure.csproj +13 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/SeeThroughCases.cs +18 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/UnreachedPlumbing.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/tests/Sample.Tests/FakeOrderQueue.cs +11 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/tests/Sample.Tests/Sample.Tests.csproj +11 -0
- package/template/.claude/skills/logical-components/scripts/fixtures/SharedOutsideRepo/SharedClock.cs +7 -0
- package/template/.claude/skills/logical-components/scripts/global.json +5 -0
- package/template/.claude/skills/logical-components/scripts/smoke-sample.sh +26 -0
- package/template/.claude/skills/research/SKILL.md +69 -69
- package/template/.claude/skills/tdd/SKILL.md +142 -142
- package/template/.claude/skills/tdd/deep-modules.md +15 -15
- package/template/.claude/skills/tdd/interface-design.md +31 -31
- package/template/.claude/skills/tdd/mocking.md +59 -59
- package/template/.claude/skills/tdd/refactoring.md +10 -10
- package/template/.claude/skills/tdd/tests.md +61 -61
- package/template/.claude/statusline.cjs +100 -37
|
@@ -1,106 +1,106 @@
|
|
|
1
|
-
/* Canonical Context Map example for the context-map skill.
|
|
2
|
-
*
|
|
3
|
-
* Grammar reference: ./reference/Context Map.md
|
|
4
|
-
* Role combination rules: ./reference/Semantic Rules.md
|
|
5
|
-
*
|
|
6
|
-
* Shows all four relationship shapes (Partnership, Shared Kernel,
|
|
7
|
-
* Upstream-Downstream, Customer-Supplier) with the full attribute
|
|
8
|
-
* vocabulary so per-wall maps have a single place to copy from.
|
|
9
|
-
*
|
|
10
|
-
* This file is intended to compile clean against `cm validate -i <file>.cml`
|
|
11
|
-
* (Context Mapper CLI 6.12+). Every Bounded Context referenced in the
|
|
12
|
-
* ContextMap must also be declared as a `BoundedContext <Name>` below —
|
|
13
|
-
* forgetting that produces the Xtext linking error:
|
|
14
|
-
* "Couldn't resolve reference to BoundedContext '<Name>'."
|
|
15
|
-
* "The Bounded Context 'null' is not part of the Context Map."
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
ContextMap DDDSampleContextMap {
|
|
19
|
-
type = SYSTEM_LANDSCAPE
|
|
20
|
-
state = AS_IS
|
|
21
|
-
|
|
22
|
-
contains CargoBookingContext, VoyagePlanningContext, LocationContext
|
|
23
|
-
contains ContractsContext, ClaimsContext
|
|
24
|
-
contains CustomerSelfServiceContext, CustomerManagementContext
|
|
25
|
-
contains PrintingContext, PolicyManagementContext
|
|
26
|
-
|
|
27
|
-
/* Shared Kernel (symmetric) --------------------------------------------
|
|
28
|
-
* Two contexts share a common subset of the model (a library, a package).
|
|
29
|
-
* Changes on either side need coordinated review.
|
|
30
|
-
*/
|
|
31
|
-
CargoBookingContext [SK]<->[SK] VoyagePlanningContext : BookingVoyageRelationship {
|
|
32
|
-
implementationTechnology = "Java Library"
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/* Partnership (symmetric) ----------------------------------------------
|
|
36
|
-
* Two contexts succeed or fail together. Joint planning, shared roadmap.
|
|
37
|
-
*/
|
|
38
|
-
ContractsContext [P]<->[P] ClaimsContext : ContractClaimRelationship {
|
|
39
|
-
implementationTechnology = "Messaging"
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/* Upstream-Downstream with OHS / PL / ACL ------------------------------
|
|
43
|
-
* Upstream publishes a stable, documented API in a Published Language.
|
|
44
|
-
* Downstream wraps incoming data in an Anti-Corruption Layer to keep
|
|
45
|
-
* upstream model leakage out of its own domain.
|
|
46
|
-
*/
|
|
47
|
-
CargoBookingContext [D,ACL]<-[U,OHS,PL] LocationContext : CargoLocationRelationship {
|
|
48
|
-
implementationTechnology = "RESTful HTTP"
|
|
49
|
-
downstreamRights = VETO_RIGHT
|
|
50
|
-
exposedAggregates = Locations, Addresses
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/* Customer-Supplier (asymmetric, downstream has influence) -------------
|
|
54
|
-
* Special case of upstream-downstream: downstream's priorities factor
|
|
55
|
-
* into upstream planning. Note: CF and OHS are NOT applicable here
|
|
56
|
-
* (semantic-rule errors). ACL is allowed but emits a semantic WARNING
|
|
57
|
-
* (rule #7 in Semantic Rules.md) — kept here to show the form.
|
|
58
|
-
*/
|
|
59
|
-
CustomerSelfServiceContext [D,C,ACL]<-[U,S,PL] CustomerManagementContext : CustomerFrontendBackendRelationship {
|
|
60
|
-
implementationTechnology = "RESTful HTTP"
|
|
61
|
-
downstreamRights = OPINION_LEADER
|
|
62
|
-
exposedAggregates = Customers
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/* Upstream-Downstream with CF (no ACL) ---------------------------------
|
|
66
|
-
* Downstream conforms to the upstream model wholesale — no translation.
|
|
67
|
-
* Cheap to integrate, but downstream becomes coupled to upstream changes.
|
|
68
|
-
*/
|
|
69
|
-
PolicyManagementContext [D,CF]<-[U,OHS,PL] PrintingContext {
|
|
70
|
-
implementationTechnology = "SOAP"
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/* ---------------------------------------------------------------------------
|
|
75
|
-
* Bounded Context declarations.
|
|
76
|
-
*
|
|
77
|
-
* Each name used above in `contains` and in relationship lines must resolve
|
|
78
|
-
* to a BoundedContext declaration somewhere in the file. Empty bodies are
|
|
79
|
-
* legal — declarations can stay minimal in a strategic-only map.
|
|
80
|
-
*
|
|
81
|
-
* Aggregates referenced by `exposedAggregates` MUST live inside the upstream
|
|
82
|
-
* BoundedContext of the relationship — see the LocationContext block (which
|
|
83
|
-
* owns Locations + Addresses, exposed to CargoBookingContext) and the
|
|
84
|
-
* CustomerManagementContext block (which owns Customers, exposed to
|
|
85
|
-
* CustomerSelfServiceContext).
|
|
86
|
-
* --------------------------------------------------------------------------- */
|
|
87
|
-
|
|
88
|
-
BoundedContext CargoBookingContext
|
|
89
|
-
BoundedContext VoyagePlanningContext
|
|
90
|
-
|
|
91
|
-
BoundedContext LocationContext {
|
|
92
|
-
Aggregate Locations
|
|
93
|
-
Aggregate Addresses
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
BoundedContext ContractsContext
|
|
97
|
-
BoundedContext ClaimsContext
|
|
98
|
-
|
|
99
|
-
BoundedContext CustomerSelfServiceContext
|
|
100
|
-
|
|
101
|
-
BoundedContext CustomerManagementContext {
|
|
102
|
-
Aggregate Customers
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
BoundedContext PrintingContext
|
|
106
|
-
BoundedContext PolicyManagementContext
|
|
1
|
+
/* Canonical Context Map example for the context-map skill.
|
|
2
|
+
*
|
|
3
|
+
* Grammar reference: ./reference/Context Map.md
|
|
4
|
+
* Role combination rules: ./reference/Semantic Rules.md
|
|
5
|
+
*
|
|
6
|
+
* Shows all four relationship shapes (Partnership, Shared Kernel,
|
|
7
|
+
* Upstream-Downstream, Customer-Supplier) with the full attribute
|
|
8
|
+
* vocabulary so per-wall maps have a single place to copy from.
|
|
9
|
+
*
|
|
10
|
+
* This file is intended to compile clean against `cm validate -i <file>.cml`
|
|
11
|
+
* (Context Mapper CLI 6.12+). Every Bounded Context referenced in the
|
|
12
|
+
* ContextMap must also be declared as a `BoundedContext <Name>` below —
|
|
13
|
+
* forgetting that produces the Xtext linking error:
|
|
14
|
+
* "Couldn't resolve reference to BoundedContext '<Name>'."
|
|
15
|
+
* "The Bounded Context 'null' is not part of the Context Map."
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
ContextMap DDDSampleContextMap {
|
|
19
|
+
type = SYSTEM_LANDSCAPE
|
|
20
|
+
state = AS_IS
|
|
21
|
+
|
|
22
|
+
contains CargoBookingContext, VoyagePlanningContext, LocationContext
|
|
23
|
+
contains ContractsContext, ClaimsContext
|
|
24
|
+
contains CustomerSelfServiceContext, CustomerManagementContext
|
|
25
|
+
contains PrintingContext, PolicyManagementContext
|
|
26
|
+
|
|
27
|
+
/* Shared Kernel (symmetric) --------------------------------------------
|
|
28
|
+
* Two contexts share a common subset of the model (a library, a package).
|
|
29
|
+
* Changes on either side need coordinated review.
|
|
30
|
+
*/
|
|
31
|
+
CargoBookingContext [SK]<->[SK] VoyagePlanningContext : BookingVoyageRelationship {
|
|
32
|
+
implementationTechnology = "Java Library"
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/* Partnership (symmetric) ----------------------------------------------
|
|
36
|
+
* Two contexts succeed or fail together. Joint planning, shared roadmap.
|
|
37
|
+
*/
|
|
38
|
+
ContractsContext [P]<->[P] ClaimsContext : ContractClaimRelationship {
|
|
39
|
+
implementationTechnology = "Messaging"
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Upstream-Downstream with OHS / PL / ACL ------------------------------
|
|
43
|
+
* Upstream publishes a stable, documented API in a Published Language.
|
|
44
|
+
* Downstream wraps incoming data in an Anti-Corruption Layer to keep
|
|
45
|
+
* upstream model leakage out of its own domain.
|
|
46
|
+
*/
|
|
47
|
+
CargoBookingContext [D,ACL]<-[U,OHS,PL] LocationContext : CargoLocationRelationship {
|
|
48
|
+
implementationTechnology = "RESTful HTTP"
|
|
49
|
+
downstreamRights = VETO_RIGHT
|
|
50
|
+
exposedAggregates = Locations, Addresses
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Customer-Supplier (asymmetric, downstream has influence) -------------
|
|
54
|
+
* Special case of upstream-downstream: downstream's priorities factor
|
|
55
|
+
* into upstream planning. Note: CF and OHS are NOT applicable here
|
|
56
|
+
* (semantic-rule errors). ACL is allowed but emits a semantic WARNING
|
|
57
|
+
* (rule #7 in Semantic Rules.md) — kept here to show the form.
|
|
58
|
+
*/
|
|
59
|
+
CustomerSelfServiceContext [D,C,ACL]<-[U,S,PL] CustomerManagementContext : CustomerFrontendBackendRelationship {
|
|
60
|
+
implementationTechnology = "RESTful HTTP"
|
|
61
|
+
downstreamRights = OPINION_LEADER
|
|
62
|
+
exposedAggregates = Customers
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* Upstream-Downstream with CF (no ACL) ---------------------------------
|
|
66
|
+
* Downstream conforms to the upstream model wholesale — no translation.
|
|
67
|
+
* Cheap to integrate, but downstream becomes coupled to upstream changes.
|
|
68
|
+
*/
|
|
69
|
+
PolicyManagementContext [D,CF]<-[U,OHS,PL] PrintingContext {
|
|
70
|
+
implementationTechnology = "SOAP"
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/* ---------------------------------------------------------------------------
|
|
75
|
+
* Bounded Context declarations.
|
|
76
|
+
*
|
|
77
|
+
* Each name used above in `contains` and in relationship lines must resolve
|
|
78
|
+
* to a BoundedContext declaration somewhere in the file. Empty bodies are
|
|
79
|
+
* legal — declarations can stay minimal in a strategic-only map.
|
|
80
|
+
*
|
|
81
|
+
* Aggregates referenced by `exposedAggregates` MUST live inside the upstream
|
|
82
|
+
* BoundedContext of the relationship — see the LocationContext block (which
|
|
83
|
+
* owns Locations + Addresses, exposed to CargoBookingContext) and the
|
|
84
|
+
* CustomerManagementContext block (which owns Customers, exposed to
|
|
85
|
+
* CustomerSelfServiceContext).
|
|
86
|
+
* --------------------------------------------------------------------------- */
|
|
87
|
+
|
|
88
|
+
BoundedContext CargoBookingContext
|
|
89
|
+
BoundedContext VoyagePlanningContext
|
|
90
|
+
|
|
91
|
+
BoundedContext LocationContext {
|
|
92
|
+
Aggregate Locations
|
|
93
|
+
Aggregate Addresses
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
BoundedContext ContractsContext
|
|
97
|
+
BoundedContext ClaimsContext
|
|
98
|
+
|
|
99
|
+
BoundedContext CustomerSelfServiceContext
|
|
100
|
+
|
|
101
|
+
BoundedContext CustomerManagementContext {
|
|
102
|
+
Aggregate Customers
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
BoundedContext PrintingContext
|
|
106
|
+
BoundedContext PolicyManagementContext
|
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
BoundedContext CustomerManagementContext implements CustomerManagementDomain {
|
|
3
|
-
type = FEATURE
|
|
4
|
-
domainVisionStatement = "The customer management context is responsible for ..."
|
|
5
|
-
implementationTechnology = "Java, JEE Application"
|
|
6
|
-
responsibilities = "Customers", "Addresses"
|
|
7
|
-
knowledgeLevel = CONCRETE
|
|
8
|
-
|
|
9
|
-
Module addresses {
|
|
10
|
-
Aggregate Addresses {
|
|
11
|
-
Entity Address {
|
|
12
|
-
String city
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
Aggregate Customers {
|
|
17
|
-
Entity Customer {
|
|
18
|
-
aggregateRoot
|
|
19
|
-
|
|
20
|
-
- SocialInsuranceNumber sin
|
|
21
|
-
String firstname
|
|
22
|
-
String lastname
|
|
23
|
-
- List<Address> addresses
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
Note: Bounded Context names must be unique within your CML model.
|
|
30
|
-
|
|
31
|
-
[[implements]]
|
|
32
|
-
[[refines]]
|
|
33
|
-
[[domainVisionStatement]]
|
|
34
|
-
[[implementationTechnology]]
|
|
35
|
-
[[responsibilities]]
|
|
36
|
-
[[Domain-Driven Design/Context Map/Bounded Context/type]]
|
|
37
|
-
[[knowledgeLevel]]
|
|
38
|
-
[[businessModel]]
|
|
39
|
-
[[evolution]]
|
|
40
|
-
[[realizes]]
|
|
1
|
+
```cml
|
|
2
|
+
BoundedContext CustomerManagementContext implements CustomerManagementDomain {
|
|
3
|
+
type = FEATURE
|
|
4
|
+
domainVisionStatement = "The customer management context is responsible for ..."
|
|
5
|
+
implementationTechnology = "Java, JEE Application"
|
|
6
|
+
responsibilities = "Customers", "Addresses"
|
|
7
|
+
knowledgeLevel = CONCRETE
|
|
8
|
+
|
|
9
|
+
Module addresses {
|
|
10
|
+
Aggregate Addresses {
|
|
11
|
+
Entity Address {
|
|
12
|
+
String city
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
Aggregate Customers {
|
|
17
|
+
Entity Customer {
|
|
18
|
+
aggregateRoot
|
|
19
|
+
|
|
20
|
+
- SocialInsuranceNumber sin
|
|
21
|
+
String firstname
|
|
22
|
+
String lastname
|
|
23
|
+
- List<Address> addresses
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Note: Bounded Context names must be unique within your CML model.
|
|
30
|
+
|
|
31
|
+
[[implements]]
|
|
32
|
+
[[refines]]
|
|
33
|
+
[[domainVisionStatement]]
|
|
34
|
+
[[implementationTechnology]]
|
|
35
|
+
[[responsibilities]]
|
|
36
|
+
[[Domain-Driven Design/Context Map/Bounded Context/type]]
|
|
37
|
+
[[knowledgeLevel]]
|
|
38
|
+
[[businessModel]]
|
|
39
|
+
[[evolution]]
|
|
40
|
+
[[realizes]]
|
|
41
41
|
[[Bounded Context Relationship]]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
https://github.com/ddd-crew/bounded-context-canvas
|
|
2
|
-
- UNDEFINED
|
|
3
|
-
- REVENUE
|
|
4
|
-
- ENGAGEMENT
|
|
5
|
-
- COMPLIANCE
|
|
1
|
+
https://github.com/ddd-crew/bounded-context-canvas
|
|
2
|
+
- UNDEFINED
|
|
3
|
+
- REVENUE
|
|
4
|
+
- ENGAGEMENT
|
|
5
|
+
- COMPLIANCE
|
|
6
6
|
- COST_REDUCTION
|
package/template/.claude/skills/context-map/reference/Bounded Context/domainVisionStatement.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
The `domainVisionStatement` keyword describes the vision statement of your bounded context, according to the DDD Domain Vision Statement pattern. https://contextmapper.org/docs/domain-vision-statement/
|
|
2
|
-
|
|
1
|
+
The `domainVisionStatement` keyword describes the vision statement of your bounded context, according to the DDD Domain Vision Statement pattern. https://contextmapper.org/docs/domain-vision-statement/
|
|
2
|
+
|
|
3
3
|
Can be used in a [[Domain-Driven Design/Context Map/Bounded Context/Bounded Context|Bounded Context]], a [[Domain]], and a subdomain.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
https://github.com/ddd-crew/bounded-context-canvas
|
|
2
|
-
- UNDEFINED
|
|
3
|
-
- GENESIS
|
|
4
|
-
- CUSTOM_BUILT
|
|
5
|
-
- PRODUCT
|
|
1
|
+
https://github.com/ddd-crew/bounded-context-canvas
|
|
2
|
+
- UNDEFINED
|
|
3
|
+
- GENESIS
|
|
4
|
+
- CUSTOM_BUILT
|
|
5
|
+
- PRODUCT
|
|
6
6
|
- COMMODITY
|
package/template/.claude/skills/context-map/reference/Bounded Context/implementationTechnology.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
The `implementationTechnology` adds information about how the corresponding bounded context is implemented. Note that this attribute does not correspond to any DDD pattern.
|
|
1
|
+
The `implementationTechnology` adds information about how the corresponding bounded context is implemented. Note that this attribute does not correspond to any DDD pattern.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
The `implements` keyword specifies which domain or subdomains are implemented by this bounded context. Behind the `implements` keyword you can either reference a list of subdomains (comma-separated) or one top-level domain.
|
|
1
|
+
The `implements` keyword specifies which domain or subdomains are implemented by this bounded context. Behind the `implements` keyword you can either reference a list of subdomains (comma-separated) or one top-level domain.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
The `knowledgeLevel` keyword defines the knowledge level of the bounded context which can be one of the following two:
|
|
2
|
-
- `CONCRETE`
|
|
3
|
-
- `META`
|
|
4
|
-
|
|
1
|
+
The `knowledgeLevel` keyword defines the knowledge level of the bounded context which can be one of the following two:
|
|
2
|
+
- `CONCRETE`
|
|
3
|
+
- `META`
|
|
4
|
+
|
|
5
5
|
Also supports [[Aggregate]]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
If your bounded context is of the type TEAM, you can specify which bounded context the team implements by using the `realizes` keyword. The following example illustrates this:
|
|
2
|
-
|
|
3
|
-
```cml
|
|
4
|
-
BoundedContext CustomersBackofficeTeam implements CustomerManagementDomain realizes CustomerManagementContext {
|
|
5
|
-
type = TEAM
|
|
6
|
-
domainVisionStatement = "This team is responsible for implementing ..."
|
|
7
|
-
}
|
|
8
|
-
```
|
|
9
|
-
|
|
1
|
+
If your bounded context is of the type TEAM, you can specify which bounded context the team implements by using the `realizes` keyword. The following example illustrates this:
|
|
2
|
+
|
|
3
|
+
```cml
|
|
4
|
+
BoundedContext CustomersBackofficeTeam implements CustomerManagementDomain realizes CustomerManagementContext {
|
|
5
|
+
type = TEAM
|
|
6
|
+
domainVisionStatement = "This team is responsible for implementing ..."
|
|
7
|
+
}
|
|
8
|
+
```
|
|
9
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
The `refines` keyword allows you to create some kind of an inheritance hierarchy in case one bounded context can be seen as a refinement of another bounded context.
|
|
2
|
-
However, note that this is only a modeling information and generators do not recursively resolve the domain model (Aggregates, etc.) of refined bounded contexts.
|
|
3
|
-
|
|
4
|
-
```cml
|
|
5
|
-
BoundedContext ContextMapperTool refines StrategicDomainDrivenDesignContext {
|
|
6
|
-
type FEATURE
|
|
7
|
-
domainVisionStatement "Context Mapper provides a formal way to model strategic DDD Context Maps."
|
|
8
|
-
implementationTechnology "Java, Eclipse"
|
|
9
|
-
}
|
|
10
|
-
```
|
|
1
|
+
The `refines` keyword allows you to create some kind of an inheritance hierarchy in case one bounded context can be seen as a refinement of another bounded context.
|
|
2
|
+
However, note that this is only a modeling information and generators do not recursively resolve the domain model (Aggregates, etc.) of refined bounded contexts.
|
|
3
|
+
|
|
4
|
+
```cml
|
|
5
|
+
BoundedContext ContextMapperTool refines StrategicDomainDrivenDesignContext {
|
|
6
|
+
type FEATURE
|
|
7
|
+
domainVisionStatement "Context Mapper provides a formal way to model strategic DDD Context Maps."
|
|
8
|
+
implementationTechnology "Java, Eclipse"
|
|
9
|
+
}
|
|
10
|
+
```
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
With the `responsibilities` keyword you are allowed to specify the responsibilities of the bounded context, according to the DDD Responsibility Layers pattern.
|
|
2
|
-
|
|
3
|
-
Can be used on [[Domain-Driven Design/Context Map/Bounded Context/Bounded Context|Bounded Context]]s and [[Aggregate]]s to specify their responsibilities.
|
|
4
|
-
|
|
5
|
-
```cml
|
|
6
|
-
BoundedContext CustomerManagementContext implements CustomerManagementDomain {
|
|
7
|
-
type = FEATURE
|
|
8
|
-
domainVisionStatement = "The customer management context is responsible for ..."
|
|
9
|
-
implementationTechnology = "Java, JEE Application"
|
|
10
|
-
responsibilities = "Customers", "Addresses"
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
Aggregate Customers {
|
|
14
|
-
responsibilities = "Customers", "Addresses"
|
|
15
|
-
|
|
16
|
-
Entity Customer {
|
|
17
|
-
aggregateRoot
|
|
18
|
-
|
|
19
|
-
- SocialInsuranceNumber sin
|
|
20
|
-
String firstname
|
|
21
|
-
String lastname
|
|
22
|
-
- List<Address> addresses
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
|
|
1
|
+
With the `responsibilities` keyword you are allowed to specify the responsibilities of the bounded context, according to the DDD Responsibility Layers pattern.
|
|
2
|
+
|
|
3
|
+
Can be used on [[Domain-Driven Design/Context Map/Bounded Context/Bounded Context|Bounded Context]]s and [[Aggregate]]s to specify their responsibilities.
|
|
4
|
+
|
|
5
|
+
```cml
|
|
6
|
+
BoundedContext CustomerManagementContext implements CustomerManagementDomain {
|
|
7
|
+
type = FEATURE
|
|
8
|
+
domainVisionStatement = "The customer management context is responsible for ..."
|
|
9
|
+
implementationTechnology = "Java, JEE Application"
|
|
10
|
+
responsibilities = "Customers", "Addresses"
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
Aggregate Customers {
|
|
14
|
+
responsibilities = "Customers", "Addresses"
|
|
15
|
+
|
|
16
|
+
Entity Customer {
|
|
17
|
+
aggregateRoot
|
|
18
|
+
|
|
19
|
+
- SocialInsuranceNumber sin
|
|
20
|
+
String firstname
|
|
21
|
+
String lastname
|
|
22
|
+
- List<Address> addresses
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
# Bounded Context Type
|
|
2
|
-
|
|
3
|
-
The `type` provides an indicator for which reason a bounded context may have been evolved. It further allows you to specify from which viewpoint you describe your bounded contexts.
|
|
4
|
-
|
|
5
|
-
- `FEATURE`: analysis or early design abstractions, taking a functional scenario view
|
|
6
|
-
- For example, everything that is related to customer management in an insurance scenario: create customer, update customer, update customer address, etc.
|
|
7
|
-
- `APPLICATION`: represent more elaborated, logical designs and implementation views
|
|
8
|
-
- For example: a self-service frontend application for the customers, a backend system to manage the customers and contract, etc.
|
|
9
|
-
- An application typically encompasses multiple functional features. In a (micro-)service-oriented architecture, each (micro-)service can be seen as an application.
|
|
10
|
-
- `SYSTEM`: contexts add a more physical, process- and deployment-oriented view
|
|
11
|
-
- Examples for systems: a single page application for the frontend, a Spring Boot application that realizes the domain logic, an Oracle database that holds the data, etc.
|
|
12
|
-
- An application typically consists of multiple systems.
|
|
13
|
-
- `TEAM`: allows you to specify which team is implementing which bounded contexts
|
|
14
|
-
- For example: multiple teams work on different parts of the software: customer frontend team, customer backend\_ team, contracts team, etc.
|
|
15
|
-
|
|
16
|
-
## Example: The "Returns" Domain
|
|
17
|
-
|
|
18
|
-
1. Feature Context: We identify "Return Eligibility." This is purely a business concept: rules checking if an item is within the 30-day window and undamaged. It doesn't imply a server or a database yet.
|
|
19
|
-
2. Application Context: We design the "Returns Service." This is a deployable logical unit (a Microservice) that handles eligibility, printing labels, and refund triggering. It encapsulates the "Return Eligibility" feature.
|
|
20
|
-
3. System Context: When deploying, the "Returns Service" is actually split into two physical pieces:
|
|
21
|
-
- "Returns Backend API" (Spring Boot container).
|
|
22
|
-
- "Returns Dashboard" (React SPA for warehouse workers). These are two separate SYSTEM contexts.
|
|
23
|
-
1. Team Context: All of the above is owned by "Team After-Sales", a squad of 6 developers.
|
|
1
|
+
# Bounded Context Type
|
|
2
|
+
|
|
3
|
+
The `type` provides an indicator for which reason a bounded context may have been evolved. It further allows you to specify from which viewpoint you describe your bounded contexts.
|
|
4
|
+
|
|
5
|
+
- `FEATURE`: analysis or early design abstractions, taking a functional scenario view
|
|
6
|
+
- For example, everything that is related to customer management in an insurance scenario: create customer, update customer, update customer address, etc.
|
|
7
|
+
- `APPLICATION`: represent more elaborated, logical designs and implementation views
|
|
8
|
+
- For example: a self-service frontend application for the customers, a backend system to manage the customers and contract, etc.
|
|
9
|
+
- An application typically encompasses multiple functional features. In a (micro-)service-oriented architecture, each (micro-)service can be seen as an application.
|
|
10
|
+
- `SYSTEM`: contexts add a more physical, process- and deployment-oriented view
|
|
11
|
+
- Examples for systems: a single page application for the frontend, a Spring Boot application that realizes the domain logic, an Oracle database that holds the data, etc.
|
|
12
|
+
- An application typically consists of multiple systems.
|
|
13
|
+
- `TEAM`: allows you to specify which team is implementing which bounded contexts
|
|
14
|
+
- For example: multiple teams work on different parts of the software: customer frontend team, customer backend\_ team, contracts team, etc.
|
|
15
|
+
|
|
16
|
+
## Example: The "Returns" Domain
|
|
17
|
+
|
|
18
|
+
1. Feature Context: We identify "Return Eligibility." This is purely a business concept: rules checking if an item is within the 30-day window and undamaged. It doesn't imply a server or a database yet.
|
|
19
|
+
2. Application Context: We design the "Returns Service." This is a deployable logical unit (a Microservice) that handles eligibility, printing labels, and refund triggering. It encapsulates the "Return Eligibility" feature.
|
|
20
|
+
3. System Context: When deploying, the "Returns Service" is actually split into two physical pieces:
|
|
21
|
+
- "Returns Backend API" (Spring Boot container).
|
|
22
|
+
- "Returns Dashboard" (React SPA for warehouse workers). These are two separate SYSTEM contexts.
|
|
23
|
+
1. Team Context: All of the above is owned by "Team After-Sales", a squad of 6 developers.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
DebtCollection [D,ACL]<-[U,OHS,PL] PrintingContext {
|
|
3
|
-
implementationTechnology = "SOAP"
|
|
4
|
-
}
|
|
5
|
-
```
|
|
1
|
+
```cml
|
|
2
|
+
DebtCollection [D,ACL]<-[U,OHS,PL] PrintingContext {
|
|
3
|
+
implementationTechnology = "SOAP"
|
|
4
|
+
}
|
|
5
|
+
```
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
symmetric relationships
|
|
2
|
-
- [[Partnership (P)]]
|
|
3
|
-
- [[Shared Kernel (SK)]]
|
|
4
|
-
asymmetric relationships
|
|
5
|
-
- Upstream-Downstream (generic)
|
|
6
|
-
- [[Customer-Supplier (C-S)]], a special form of an Upstream-Downstream relationship
|
|
7
|
-
|
|
8
|
-
```cml
|
|
9
|
-
CargoBookingContext [D]<-[U] LocationContext
|
|
10
|
-
|
|
11
|
-
// A colon at the end assigns a relationship a name
|
|
12
|
-
LocationContext Upstream-Downstream CargoBookingContext : CargoLocationRelationship
|
|
1
|
+
symmetric relationships
|
|
2
|
+
- [[Partnership (P)]]
|
|
3
|
+
- [[Shared Kernel (SK)]]
|
|
4
|
+
asymmetric relationships
|
|
5
|
+
- Upstream-Downstream (generic)
|
|
6
|
+
- [[Customer-Supplier (C-S)]], a special form of an Upstream-Downstream relationship
|
|
7
|
+
|
|
8
|
+
```cml
|
|
9
|
+
CargoBookingContext [D]<-[U] LocationContext
|
|
10
|
+
|
|
11
|
+
// A colon at the end assigns a relationship a name
|
|
12
|
+
LocationContext Upstream-Downstream CargoBookingContext : CargoLocationRelationship
|
|
13
13
|
```
|
package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Conformist.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
-
implementationTechnology = "RESTful HTTP"
|
|
4
|
-
}
|
|
5
|
-
```
|
|
1
|
+
```cml
|
|
2
|
+
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
+
implementationTechnology = "RESTful HTTP"
|
|
4
|
+
}
|
|
5
|
+
```
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
The customer-supplier relationship is a special case of a upstream-downstream relationship
|
|
2
|
-
|
|
3
|
-
A customer-supplier relationship is an upstream-downstream relationship where the downstream priorities factor into upstream planning.
|
|
4
|
-
The upstream team may succeed interdependently of the fate of the downstream team and therefore the needs of the downstream have to be addressed by the upstream. They interact as customer and supplier.
|
|
5
|
-
|
|
6
|
-
```cml
|
|
7
|
-
CustomerSelfServiceContext [D,C]<-[U,S] CustomerManagementContext
|
|
8
|
-
|
|
9
|
-
CustomerSelfServiceContext Customer-Supplier CustomerManagementContext
|
|
10
|
-
|
|
11
|
-
CustomerSelfServiceContext [C]<-[S] CustomerManagementContext
|
|
12
|
-
|
|
13
|
-
CustomerSelfServiceContext [D,C,ACL]<-[U,S,PL] CustomerManagementContext : Customer_Frontend_Backend_Relationship { // Relationship name is optional
|
|
14
|
-
implementationTechnology = "RESTful HTTP"
|
|
15
|
-
|
|
16
|
-
CustomerSelfServiceContext[ACL] Customer-Supplier [PL]CustomerManagementContext
|
|
17
|
-
}
|
|
18
|
-
```
|
|
19
|
-
|
|
20
|
-
The [[Conformist]] pattern is not applicable in a Customer/Supplier relationship.
|
|
21
|
-
The [[Open Host Service]] pattern is not applicable in a Customer/Supplier relationship.
|
|
22
|
-
The [[Anticorruption Layer]] pattern can be used in a Customer/Supplier relationship, but this leads to contradictions with the original pattern definition according to our understanding.
|
|
1
|
+
The customer-supplier relationship is a special case of a upstream-downstream relationship
|
|
2
|
+
|
|
3
|
+
A customer-supplier relationship is an upstream-downstream relationship where the downstream priorities factor into upstream planning.
|
|
4
|
+
The upstream team may succeed interdependently of the fate of the downstream team and therefore the needs of the downstream have to be addressed by the upstream. They interact as customer and supplier.
|
|
5
|
+
|
|
6
|
+
```cml
|
|
7
|
+
CustomerSelfServiceContext [D,C]<-[U,S] CustomerManagementContext
|
|
8
|
+
|
|
9
|
+
CustomerSelfServiceContext Customer-Supplier CustomerManagementContext
|
|
10
|
+
|
|
11
|
+
CustomerSelfServiceContext [C]<-[S] CustomerManagementContext
|
|
12
|
+
|
|
13
|
+
CustomerSelfServiceContext [D,C,ACL]<-[U,S,PL] CustomerManagementContext : Customer_Frontend_Backend_Relationship { // Relationship name is optional
|
|
14
|
+
implementationTechnology = "RESTful HTTP"
|
|
15
|
+
|
|
16
|
+
CustomerSelfServiceContext[ACL] Customer-Supplier [PL]CustomerManagementContext
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The [[Conformist]] pattern is not applicable in a Customer/Supplier relationship.
|
|
21
|
+
The [[Open Host Service]] pattern is not applicable in a Customer/Supplier relationship.
|
|
22
|
+
The [[Anticorruption Layer]] pattern can be used in a Customer/Supplier relationship, but this leads to contradictions with the original pattern definition according to our understanding.
|
|
23
23
|
The usage of Anticorruption Layer in a Customer/Supplier relationship produces a Warning only.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
PrintingContext [U,OHS]->[D,ACL] PolicyManagementContext {
|
|
3
|
-
implementationTechnology = "SOAP"
|
|
4
|
-
}
|
|
1
|
+
```cml
|
|
2
|
+
PrintingContext [U,OHS]->[D,ACL] PolicyManagementContext {
|
|
3
|
+
implementationTechnology = "SOAP"
|
|
4
|
+
}
|
|
5
5
|
```
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
ContractsContext [P]<->[P] ClaimsContext {
|
|
3
|
-
implementationTechnology = "Messaging"
|
|
4
|
-
}
|
|
5
|
-
|
|
6
|
-
ContractsContext Partnership ClaimsContext {
|
|
7
|
-
implementationTechnology = "Messaging"
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// With a colon it is possible (optionally) to add a relationship name to the specification
|
|
11
|
-
ContractsContext [P]<->[P] ClaimsContext : ContractClaimRelationship {
|
|
12
|
-
implementationTechnology = "Messaging"
|
|
13
|
-
}
|
|
1
|
+
```cml
|
|
2
|
+
ContractsContext [P]<->[P] ClaimsContext {
|
|
3
|
+
implementationTechnology = "Messaging"
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
ContractsContext Partnership ClaimsContext {
|
|
7
|
+
implementationTechnology = "Messaging"
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
// With a colon it is possible (optionally) to add a relationship name to the specification
|
|
11
|
+
ContractsContext [P]<->[P] ClaimsContext : ContractClaimRelationship {
|
|
12
|
+
implementationTechnology = "Messaging"
|
|
13
|
+
}
|
|
14
14
|
```
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
```cml
|
|
2
|
-
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
-
implementationTechnology = "RESTful HTTP"
|
|
4
|
-
}
|
|
1
|
+
```cml
|
|
2
|
+
PolicyManagementContext [D,CF]<-[U,OHS,PL] CustomerManagementContext {
|
|
3
|
+
implementationTechnology = "RESTful HTTP"
|
|
4
|
+
}
|
|
5
5
|
```
|