@phuc1403/musketeer 0.12.0 → 0.14.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 +1 -1
- package/README.md +2 -2
- package/manifest.json +3 -3
- package/package.json +1 -1
- package/template/.claude/skills/logical-components/SKILL.md +165 -94
- package/template/.claude/skills/logical-components/assets/component-diagram-template.html +104 -0
- package/template/.claude/skills/logical-components/references/component-analyst-prompt.md +88 -0
- package/template/.claude/skills/logical-components/references/component-level-detection.md +95 -0
- package/template/.claude/skills/logical-components/references/logical-component-concepts.md +92 -0
- package/template/.claude/skills/logical-components/scripts/build-component-model.cjs +120 -0
- package/template/.claude/skills/logical-components/scripts/index-declared-symbols.cjs +106 -0
- package/template/.claude/skills/logical-components/scripts/lib/coupling-metrics.cjs +48 -0
- package/template/.claude/skills/logical-components/scripts/lib/declared-symbol-patterns.cjs +57 -0
- package/template/.claude/skills/logical-components/scripts/lib/html-sections.cjs +91 -0
- package/template/.claude/skills/logical-components/scripts/lib/mermaid-graph.cjs +55 -0
- package/template/.claude/skills/logical-components/scripts/lib/read-json-input.cjs +109 -0
- package/template/.claude/skills/logical-components/scripts/lib/repo-walk.cjs +61 -0
- package/template/.claude/skills/logical-components/scripts/lib/verify-claims.cjs +159 -0
- package/template/.claude/skills/logical-components/scripts/render-component-diagram-html.cjs +112 -0
- package/template/.claude/skills/logical-components/scripts/scan-folder-tree.cjs +88 -0
- package/template/.claude/skills/logical-components/scripts/select-stale-components.cjs +129 -0
- package/template/.claude/statusline.cjs +26 -22
- package/template/.claude/skills/logical-components/.gitattributes +0 -2
- package/template/.claude/skills/logical-components/references/component-classifier-prompt.md +0 -53
- package/template/.claude/skills/logical-components/references/responsibility-agent-prompt.md +0 -67
- package/template/.claude/skills/logical-components/references/responsibility-verifier-prompt.md +0 -39
- package/template/.claude/skills/logical-components/scripts/Directory.Build.props +0 -7
- package/template/.claude/skills/logical-components/scripts/Directory.Build.rsp +0 -1
- package/template/.claude/skills/logical-components/scripts/Directory.Build.targets +0 -6
- package/template/.claude/skills/logical-components/scripts/Directory.Packages.props +0 -8
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/BatchPlanning.cs +0 -70
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/BatchesCommand.cs +0 -47
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/CandidatesCommand.cs +0 -98
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/CitableSource.cs +0 -54
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/Citation.cs +0 -37
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ClassifyBatchesCommand.cs +0 -86
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ClassifyMergeCommand.cs +0 -219
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentDiscovery.cs +0 -180
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentRule.cs +0 -130
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentsFile.cs +0 -101
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/CouplingResolver.cs +0 -251
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/DisplayName.cs +0 -14
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/EdgeExtraction.cs +0 -111
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ExtractCommand.cs +0 -87
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ExtractConfig.cs +0 -79
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/LogicalComponents.csproj +0 -15
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/MarkdownCodeSpans.cs +0 -72
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/MarkdownRenderer.cs +0 -78
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/MemberUseResolution.cs +0 -272
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/MemberUses.cs +0 -231
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/PlainText.cs +0 -55
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/PortResolution.cs +0 -75
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/Program.cs +0 -27
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ProjectFilters.cs +0 -77
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/PruneCommand.cs +0 -164
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/RenderCommand.cs +0 -234
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ResponsibilityBatches.cs +0 -84
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/ResponsibilityValidation.cs +0 -197
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/SeamDispatch.cs +0 -115
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/SourceCodeLines.cs +0 -79
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/SymbolNames.cs +0 -53
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/TypeMap.cs +0 -106
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/WalkRoots.cs +0 -63
- package/template/.claude/skills/logical-components/scripts/LogicalComponents/WorkspaceLoader.cs +0 -297
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/AssignIdsTests.cs +0 -41
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/BatchPlanningTests.cs +0 -90
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/BatchesCommandTests.cs +0 -37
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CandidatesCommandTests.cs +0 -59
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CitationTests.cs +0 -42
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ClassifyCommandsTests.cs +0 -249
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ComponentDiscoveryTests.cs +0 -253
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CouplingAppExtractionTests.cs +0 -188
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CouplingAppWorkspace.cs +0 -30
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CouplingExtractionTests.cs +0 -174
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/DisplayNameTests.cs +0 -17
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ExtractConfigTests.cs +0 -72
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/FixturePaths.cs +0 -36
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/LogicalComponents.Tests.csproj +0 -23
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/MarkdownRendererTests.cs +0 -93
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ProjectFiltersTests.cs +0 -69
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/PruneCommandTests.cs +0 -149
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderCommandTests.cs +0 -225
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderGoldenTests.cs +0 -34
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderTestData.cs +0 -55
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ResponsibilityValidationTests.cs +0 -315
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/SampleAppWorkspace.cs +0 -27
- package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/WorkspaceLoaderTests.cs +0 -266
- package/template/.claude/skills/logical-components/scripts/NuGet.config +0 -17
- package/template/.claude/skills/logical-components/scripts/fixtures/BrokenApp/src/Broken.Application/Broken.Application.csproj +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/BrokenApp/src/Broken.Application/Broken.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/CompositionRootApp/CompositionRootApp.slnx +0 -5
- package/template/.claude/skills/logical-components/scripts/fixtures/CompositionRootApp/src/Root.Application/HostBuilderExtensions.cs +0 -15
- package/template/.claude/skills/logical-components/scripts/fixtures/CompositionRootApp/src/Root.Application/HostBuilderShims.cs +0 -25
- package/template/.claude/skills/logical-components/scripts/fixtures/CompositionRootApp/src/Root.Application/NativeInterop.cs +0 -17
- package/template/.claude/skills/logical-components/scripts/fixtures/CompositionRootApp/src/Root.Application/Root.Application.csproj +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/CompositionRootApp/src/Root.Application/RootAutofacModule.cs +0 -11
- package/template/.claude/skills/logical-components/scripts/fixtures/CompositionRootApp/src/Root.Application/RootGreeter.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/logical-components.json +0 -48
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/AbstractMemberCases.cs +0 -27
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/AttributeCases.cs +0 -23
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/CouplingApp.Application.csproj +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/GenericBaseCases.cs +0 -14
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/GenericSeamBindingCases.cs +0 -59
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/ImplicitCallCases.cs +0 -230
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/PartialInheritCases.First.cs +0 -11
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/PartialInheritCases.Second.cs +0 -14
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/StackOverflowCases.cs +0 -14
- package/template/.claude/skills/logical-components/scripts/fixtures/CouplingApp/src/CouplingApp.Application/ViaDisambiguationCases.cs +0 -36
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/MultiTargetApp.slnx +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Legacy.FSharp/Legacy.FSharp.fsproj +0 -8
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Legacy.FSharp/Library.fs +0 -5
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Application/Multi.Application.csproj +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Application/Scheduling.cs +0 -14
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Infrastructure/Multi.Infrastructure.csproj +0 -12
- package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Infrastructure/SchedulingClient.cs +0 -12
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application/Solo.Application.csproj +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application/SoloGreeting.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application.Tests/FakeGreeting.cs +0 -6
- package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application.Tests/Solo.Application.Tests.csproj +0 -11
- package/template/.claude/skills/logical-components/scripts/fixtures/ObjOutputApp/ObjOutputApp.slnx +0 -5
- package/template/.claude/skills/logical-components/scripts/fixtures/ObjOutputApp/src/Obj.Application/Greeting.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/ObjOutputApp/src/Obj.Application/Obj.Application.csproj +0 -14
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/components.json +0 -67
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/expected.md +0 -28
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/repo/src/App/OrderAcceptance.cs +0 -16
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/repo/src/Infra/OrderQueue.cs +0 -10
- package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/resp/batch-01.json +0 -18
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/SampleApp.slnx +0 -10
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/logical-components.json +0 -78
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/CandidateCases.cs +0 -37
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/CouplingCases.cs +0 -33
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/DependencyInjection.cs +0 -18
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/EdgeCases.cs +0 -63
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/LoudNotifying.Base.cs +0 -5
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/LoudNotifying.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderAcceptance.cs +0 -17
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderOptions.cs +0 -9
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRejectedException.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRequest.cs +0 -4
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRunning.cs +0 -18
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderValidation.cs +0 -6
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/Ports.cs +0 -19
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/PriceRules.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReceiptPrinting.Totals.cs +0 -6
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReceiptPrinting.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReviewCases.cs +0 -107
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReviewFixCases.cs +0 -143
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/RunClock.cs +0 -12
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/Sample.Application.csproj +0 -10
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/SeeThroughCases.cs +0 -89
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Billing.Application/OrderRunning.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Billing.Application/Sample.Billing.Application.csproj +0 -11
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ForwardedNotifier.cs +0 -8
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/InfrastructureDependencyInjection.cs +0 -16
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/Mailer.cs +0 -6
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/OrderQueue.cs +0 -11
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/QueueEntry.cs +0 -4
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/QueueStore.cs +0 -8
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ReviewCases.cs +0 -35
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ReviewFixCases.cs +0 -13
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/Sample.Infrastructure.csproj +0 -13
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/SeeThroughCases.cs +0 -18
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/UnreachedPlumbing.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/tests/Sample.Tests/FakeOrderQueue.cs +0 -11
- package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/tests/Sample.Tests/Sample.Tests.csproj +0 -11
- package/template/.claude/skills/logical-components/scripts/fixtures/SharedOutsideRepo/SharedClock.cs +0 -7
- package/template/.claude/skills/logical-components/scripts/global.json +0 -5
- package/template/.claude/skills/logical-components/scripts/smoke-sample.sh +0 -26
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
-
<!-- A test project inside src/ with no test packages: only its *.Tests name marks it. -->
|
|
3
|
-
<PropertyGroup>
|
|
4
|
-
<TargetFramework>net10.0</TargetFramework>
|
|
5
|
-
<Nullable>enable</Nullable>
|
|
6
|
-
<ImplicitUsings>enable</ImplicitUsings>
|
|
7
|
-
</PropertyGroup>
|
|
8
|
-
<ItemGroup>
|
|
9
|
-
<ProjectReference Include="../Solo.Application/Solo.Application.csproj" />
|
|
10
|
-
</ItemGroup>
|
|
11
|
-
</Project>
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
|
2
|
-
<PropertyGroup>
|
|
3
|
-
<TargetFramework>net10.0</TargetFramework>
|
|
4
|
-
<Nullable>enable</Nullable>
|
|
5
|
-
<ImplicitUsings>enable</ImplicitUsings>
|
|
6
|
-
</PropertyGroup>
|
|
7
|
-
<ItemGroup>
|
|
8
|
-
<!-- Simulates gRPC/NSwag output written into obj/ by a build-time code generator: an explicit Compile item
|
|
9
|
-
(not the SDK's default glob, which excludes obj/) pointing at a real file, not a Roslyn source generator's
|
|
10
|
-
virtual document. obj/ is gitignored in scripts/, so this file is not checked in; the test that loads this
|
|
11
|
-
fixture writes it before calling WorkspaceLoader.LoadAsync. -->
|
|
12
|
-
<Compile Include="obj/Generated/GrpcStub.cs" />
|
|
13
|
-
</ItemGroup>
|
|
14
|
-
</Project>
|
package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/components.json
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"components": [
|
|
3
|
-
{
|
|
4
|
-
"id": "OrderAcceptance",
|
|
5
|
-
"type": "Sample.Application.OrderAcceptance",
|
|
6
|
-
"name": "Order Acceptance",
|
|
7
|
-
"module": "Sample",
|
|
8
|
-
"layer": "Application",
|
|
9
|
-
"spans": [
|
|
10
|
-
{
|
|
11
|
-
"file": "src/App/OrderAcceptance.cs",
|
|
12
|
-
"start": 3,
|
|
13
|
-
"end": 16
|
|
14
|
-
}
|
|
15
|
-
]
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
"id": "OrderQueue",
|
|
19
|
-
"type": "Sample.Infrastructure.OrderQueue",
|
|
20
|
-
"name": "Order Queue",
|
|
21
|
-
"module": "Sample",
|
|
22
|
-
"layer": "Infrastructure",
|
|
23
|
-
"spans": [
|
|
24
|
-
{
|
|
25
|
-
"file": "src/Infra/OrderQueue.cs",
|
|
26
|
-
"start": 5,
|
|
27
|
-
"end": 10
|
|
28
|
-
}
|
|
29
|
-
]
|
|
30
|
-
}
|
|
31
|
-
],
|
|
32
|
-
"externalNodes": [
|
|
33
|
-
{
|
|
34
|
-
"id": "IAuditTrail",
|
|
35
|
-
"type": "Sample.Application.IAuditTrail",
|
|
36
|
-
"name": "I Audit Trail",
|
|
37
|
-
"layer": "port"
|
|
38
|
-
}
|
|
39
|
-
],
|
|
40
|
-
"edges": [
|
|
41
|
-
{
|
|
42
|
-
"from": "OrderAcceptance",
|
|
43
|
-
"to": "IAuditTrail",
|
|
44
|
-
"kinds": [
|
|
45
|
-
"di"
|
|
46
|
-
],
|
|
47
|
-
"via": [],
|
|
48
|
-
"at": "src/App/OrderAcceptance.cs:3"
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
"from": "OrderAcceptance",
|
|
52
|
-
"to": "OrderQueue",
|
|
53
|
-
"kinds": [
|
|
54
|
-
"di"
|
|
55
|
-
],
|
|
56
|
-
"via": [
|
|
57
|
-
"IOrderQueue"
|
|
58
|
-
],
|
|
59
|
-
"at": "src/App/OrderAcceptance.cs:3"
|
|
60
|
-
}
|
|
61
|
-
],
|
|
62
|
-
"warnings": [],
|
|
63
|
-
"fileHashes": {
|
|
64
|
-
"src/App/OrderAcceptance.cs": "28a98da24919780874e1d25e8c2c9ef6b496cf3dfd6dc171e79dda6bfc9f062a",
|
|
65
|
-
"src/Infra/OrderQueue.cs": "5d0de05d2b60730ec4accce7cc93da9c025fb7961549a1ca154400a6de5d12b7"
|
|
66
|
-
}
|
|
67
|
-
}
|
package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/expected.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
# Logical Components
|
|
2
|
-
|
|
3
|
-
## Order Acceptance
|
|
4
|
-
|
|
5
|
-
`Sample.Application.OrderAcceptance`
|
|
6
|
-
|
|
7
|
-
- Rejects an order with a non-positive total and records the rejection in the audit trail. (`src/App/OrderAcceptance.cs:7-11`)
|
|
8
|
-
- Queues every accepted order. (`src/App/OrderAcceptance.cs:13`)
|
|
9
|
-
|
|
10
|
-
## Order Queue
|
|
11
|
-
|
|
12
|
-
`Sample.Infrastructure.OrderQueue`
|
|
13
|
-
|
|
14
|
-
- Keeps queued orders in memory, in arrival order. (`src/Infra/OrderQueue.cs:7-9`)
|
|
15
|
-
|
|
16
|
-
# Coupling
|
|
17
|
-
|
|
18
|
-
`A --> B` means A depends on B: it calls, creates, holds or inherits from B. A component's incoming arrows are its afferent coupling, its outgoing arrows its efferent coupling. Only components in `*.Application` and `*.Infrastructure` projects are drawn; callers in other projects, such as the host, are not shown.
|
|
19
|
-
|
|
20
|
-
```mermaid
|
|
21
|
-
%%{init: {"layout": "elk"}}%%
|
|
22
|
-
flowchart LR
|
|
23
|
-
n_IAuditTrail["I Audit Trail"]
|
|
24
|
-
n_OrderAcceptance["Order Acceptance"]
|
|
25
|
-
n_OrderQueue["Order Queue"]
|
|
26
|
-
n_OrderAcceptance --> n_IAuditTrail
|
|
27
|
-
n_OrderAcceptance --> n_OrderQueue
|
|
28
|
-
```
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
namespace Sample.Application;
|
|
2
|
-
|
|
3
|
-
public sealed class OrderAcceptance(IOrderQueue queue, IAuditTrail audit)
|
|
4
|
-
{
|
|
5
|
-
public bool Accept(Order order)
|
|
6
|
-
{
|
|
7
|
-
if (order.Total <= 0)
|
|
8
|
-
{
|
|
9
|
-
audit.Record($"Rejected {order.Id}");
|
|
10
|
-
return false;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
queue.Enqueue(order);
|
|
14
|
-
return true;
|
|
15
|
-
}
|
|
16
|
-
}
|
package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/resp/batch-01.json
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"OrderAcceptance": [
|
|
3
|
-
{
|
|
4
|
-
"text": "Rejects an order with a non-positive total and records the rejection in the audit trail.",
|
|
5
|
-
"cite": "src/App/OrderAcceptance.cs:7-11"
|
|
6
|
-
},
|
|
7
|
-
{
|
|
8
|
-
"text": "Queues every accepted order.",
|
|
9
|
-
"cite": "src/App/OrderAcceptance.cs:13"
|
|
10
|
-
}
|
|
11
|
-
],
|
|
12
|
-
"OrderQueue": [
|
|
13
|
-
{
|
|
14
|
-
"text": "Keeps queued orders in memory, in arrival order.",
|
|
15
|
-
"cite": "src/Infra/OrderQueue.cs:7-9"
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
}
|
package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/SampleApp.slnx
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
<Solution>
|
|
2
|
-
<Folder Name="/src/">
|
|
3
|
-
<Project Path="src/Sample.Application/Sample.Application.csproj" />
|
|
4
|
-
<Project Path="src/Sample.Billing.Application/Sample.Billing.Application.csproj" />
|
|
5
|
-
<Project Path="src/Sample.Infrastructure/Sample.Infrastructure.csproj" />
|
|
6
|
-
</Folder>
|
|
7
|
-
<Folder Name="/tests/">
|
|
8
|
-
<Project Path="tests/Sample.Tests/Sample.Tests.csproj" />
|
|
9
|
-
</Folder>
|
|
10
|
-
</Solution>
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"components": [
|
|
3
|
-
"Sample.Application.Archiving",
|
|
4
|
-
"Sample.Application.BatchRunning",
|
|
5
|
-
"Sample.Application.Builder",
|
|
6
|
-
"Sample.Application.Cache",
|
|
7
|
-
"Sample.Application.Cache`1",
|
|
8
|
-
"Sample.Application.CallbackNormalizing",
|
|
9
|
-
"Sample.Application.CrashSettling",
|
|
10
|
-
"Sample.Application.Echoing",
|
|
11
|
-
"Sample.Application.FallbackPricing",
|
|
12
|
-
"Sample.Application.JobCounting",
|
|
13
|
-
"Sample.Application.JobReporting",
|
|
14
|
-
"Sample.Application.JobShowing",
|
|
15
|
-
"Sample.Application.LabelMaking",
|
|
16
|
-
"Sample.Application.Labelling",
|
|
17
|
-
"Sample.Application.LazyWork",
|
|
18
|
-
"Sample.Application.Limits",
|
|
19
|
-
"Sample.Application.LineCounting",
|
|
20
|
-
"Sample.Application.LoudNotifying",
|
|
21
|
-
"Sample.Application.Measuring",
|
|
22
|
-
"Sample.Application.NotifyAll",
|
|
23
|
-
"Sample.Application.Notifying",
|
|
24
|
-
"Sample.Application.OrderAcceptance",
|
|
25
|
-
"Sample.Application.OrderHandling",
|
|
26
|
-
"Sample.Application.OrderNumberFormat",
|
|
27
|
-
"Sample.Application.OrderRunning",
|
|
28
|
-
"Sample.Application.OrderTextExtensions",
|
|
29
|
-
"Sample.Application.OrderValidation",
|
|
30
|
-
"Sample.Application.PingSending",
|
|
31
|
-
"Sample.Application.PongViaSeam",
|
|
32
|
-
"Sample.Application.PriceFormatting",
|
|
33
|
-
"Sample.Application.PriceRules",
|
|
34
|
-
"Sample.Application.ReceiptIssuing",
|
|
35
|
-
"Sample.Application.ReceiptPrinting",
|
|
36
|
-
"Sample.Application.Receipts",
|
|
37
|
-
"Sample.Application.RecoveryRouting",
|
|
38
|
-
"Sample.Application.RegistryReading",
|
|
39
|
-
"Sample.Application.RunClock",
|
|
40
|
-
"Sample.Application.ShapeListing",
|
|
41
|
-
"Sample.Application.ShippingStage",
|
|
42
|
-
"Sample.Application.Stamping",
|
|
43
|
-
"Sample.Application.TickCounter",
|
|
44
|
-
"Sample.Application.TickReading",
|
|
45
|
-
"Sample.Application.TitleReading",
|
|
46
|
-
"Sample.Application.TrackedReading",
|
|
47
|
-
"Sample.Application.TrackedWriting",
|
|
48
|
-
"Sample.Application.UrgentNotifying",
|
|
49
|
-
"Sample.Billing.Application.OrderRunning",
|
|
50
|
-
"Sample.Infrastructure.DefaultPricing",
|
|
51
|
-
"Sample.Infrastructure.DiskStorage",
|
|
52
|
-
"Sample.Infrastructure.DwgDrawing",
|
|
53
|
-
"Sample.Infrastructure.ExportRecovery",
|
|
54
|
-
"Sample.Infrastructure.ForwardedNotifier",
|
|
55
|
-
"Sample.Infrastructure.ImportRecovery",
|
|
56
|
-
"Sample.Infrastructure.LoggingHandler`1",
|
|
57
|
-
"Sample.Infrastructure.Mailer",
|
|
58
|
-
"Sample.Infrastructure.OrderQueue",
|
|
59
|
-
"Sample.Infrastructure.OrderRequestHandler",
|
|
60
|
-
"Sample.Infrastructure.PingHandling",
|
|
61
|
-
"Sample.Infrastructure.PongHandling",
|
|
62
|
-
"Sample.Infrastructure.QueueStore",
|
|
63
|
-
"Sample.Infrastructure.TextHandler",
|
|
64
|
-
"Sample.Infrastructure.UnreachedPlumbing"
|
|
65
|
-
],
|
|
66
|
-
"helpers": {
|
|
67
|
-
"Sample.Application.Dispatch": "Generic dispatch to handlers; no decision.",
|
|
68
|
-
"Sample.Application.LabelFormat": "Formats a label with the elapsed time; no decision.",
|
|
69
|
-
"Sample.Application.OrderNumber": "Value object: validates its own value.",
|
|
70
|
-
"Sample.Application.PaymentMethod": "Value object: one accepted-code check.",
|
|
71
|
-
"Sample.Application.PingText": "Text formatting.",
|
|
72
|
-
"Sample.Application.PongText": "Text formatting.",
|
|
73
|
-
"Sample.Application.Quantity": "Value object: arithmetic on its own value.",
|
|
74
|
-
"Sample.Application.StampedText": "Appends a fixed stamp to text.",
|
|
75
|
-
"Sample.Application.Ticks": "Enumerates ticks.",
|
|
76
|
-
"Sample.Application.TwoWay": "Handler pair used as a helper."
|
|
77
|
-
}
|
|
78
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
namespace Sample.Application;
|
|
2
|
-
|
|
3
|
-
// A value object that validates itself: a record with a method of its own, so a candidate (the config calls it a helper).
|
|
4
|
-
public sealed record OrderNumber(string Value)
|
|
5
|
-
{
|
|
6
|
-
public static OrderNumber Create(string raw) =>
|
|
7
|
-
raw.Length > 0 ? new OrderNumber(raw) : throw new ArgumentException("empty order number", nameof(raw));
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
// An abstract record holding a decision: a candidate, even though abstract records are never seams.
|
|
11
|
-
public abstract record PaymentMethod
|
|
12
|
-
{
|
|
13
|
-
public static bool IsAccepted(string code) => code == "card";
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
// A record struct with behaviour: a candidate.
|
|
17
|
-
public readonly record struct Quantity(int Value)
|
|
18
|
-
{
|
|
19
|
-
public Quantity Add(int more) => new(Value + more);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Only overrides object.ToString: formatting what it holds is not behaviour, so not a candidate.
|
|
23
|
-
public sealed record Money(decimal Amount)
|
|
24
|
-
{
|
|
25
|
-
public override string ToString() => $"{Amount:0.00}";
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// Properties and a constructor only: not a candidate.
|
|
29
|
-
public sealed class OrderSnapshot
|
|
30
|
-
{
|
|
31
|
-
public OrderSnapshot(int id)
|
|
32
|
-
{
|
|
33
|
-
Id = id;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
public int Id { get; }
|
|
37
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
namespace Sample.Application;
|
|
2
|
-
|
|
3
|
-
// Injects RunClock and also news one: a single edge with both kinds. Calls a C# 14 extension member: a static edge.
|
|
4
|
-
// Also takes a framework interface (IReadOnlyList<string>): not a port, never an edge.
|
|
5
|
-
public sealed class BatchRunning(RunClock clock, IReadOnlyList<string> labels)
|
|
6
|
-
{
|
|
7
|
-
public int LabelCount() => labels.Count;
|
|
8
|
-
|
|
9
|
-
public TimeSpan Run()
|
|
10
|
-
{
|
|
11
|
-
using var fresh = new RunClock();
|
|
12
|
-
return clock.Elapsed() + fresh.Elapsed();
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
public string Cost(decimal price) => price.AsMoney();
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
// A multi-registration: IEnumerable<INotifier> resolves to every INotifier implementation. Calls a classic extension method.
|
|
19
|
-
public sealed class NotifyAll(IEnumerable<INotifier> notifiers)
|
|
20
|
-
{
|
|
21
|
-
public void Send(string message)
|
|
22
|
-
{
|
|
23
|
-
foreach (var notifier in notifiers)
|
|
24
|
-
{
|
|
25
|
-
notifier.Notify(message.Shout());
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
public static class OrderTextExtensions
|
|
31
|
-
{
|
|
32
|
-
public static string Shout(this string text) => text.ToUpperInvariant();
|
|
33
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
using Microsoft.Extensions.DependencyInjection;
|
|
2
|
-
|
|
3
|
-
namespace Sample.Application;
|
|
4
|
-
|
|
5
|
-
// Composition root: it `new`s everything, so it must never become a component or an edge source.
|
|
6
|
-
public static class DependencyInjection
|
|
7
|
-
{
|
|
8
|
-
public static IServiceCollection AddSampleApplication(this IServiceCollection services)
|
|
9
|
-
{
|
|
10
|
-
services.AddSingleton(new OrderValidation());
|
|
11
|
-
services.AddSingleton(sp => new OrderAcceptance(
|
|
12
|
-
sp.GetRequiredService<IOrderQueue>(),
|
|
13
|
-
sp.GetRequiredService<OrderValidation>(),
|
|
14
|
-
sp.GetRequiredService<INotifier>()));
|
|
15
|
-
services.AddSingleton(sp => new OrderRunning(sp.GetRequiredService<IAuditTrail>()));
|
|
16
|
-
return services;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
using System.Text.RegularExpressions;
|
|
2
|
-
using Microsoft.Extensions.DependencyInjection;
|
|
3
|
-
|
|
4
|
-
namespace Sample.Application;
|
|
5
|
-
|
|
6
|
-
// File-local: its metadata name embeds a hash of the absolute path, so it must never become a component.
|
|
7
|
-
file static class FileHelper
|
|
8
|
-
{
|
|
9
|
-
public static int Twice(int value) => value * 2;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
// Partial with a source-generated half: only this file may appear in its spans.
|
|
13
|
-
public sealed partial class OrderNumberFormat
|
|
14
|
-
{
|
|
15
|
-
[GeneratedRegex("^[0-9]+$")]
|
|
16
|
-
private static partial Regex Digits();
|
|
17
|
-
|
|
18
|
-
public bool IsValid(string orderNumber) => Digits().IsMatch(orderNumber);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// C# 14 extension block: its methods are behaviour, so this is a component.
|
|
22
|
-
public static class PriceFormatting
|
|
23
|
-
{
|
|
24
|
-
extension(decimal price)
|
|
25
|
-
{
|
|
26
|
-
public string AsMoney() => price.ToString("0.00");
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
// Composition root written as an extension block, with an ordinary helper beside it: still not a component.
|
|
31
|
-
public static class BillingSetup
|
|
32
|
-
{
|
|
33
|
-
extension(IServiceCollection services)
|
|
34
|
-
{
|
|
35
|
-
public IServiceCollection AddBilling() => services;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
public static int DefaultCurrencyDigits() => 2;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// Only explicit interface implementations: still behaviour, so a component.
|
|
42
|
-
public interface ITick
|
|
43
|
-
{
|
|
44
|
-
void Tick();
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public sealed class TickCounter : ITick
|
|
48
|
-
{
|
|
49
|
-
void ITick.Tick()
|
|
50
|
-
{
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
// Same simple name, same module: the module prefix alone cannot tell these apart.
|
|
55
|
-
public sealed class Cache
|
|
56
|
-
{
|
|
57
|
-
public int Size() => 0;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
public sealed class Cache<T>
|
|
61
|
-
{
|
|
62
|
-
public T? Get() => default;
|
|
63
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
namespace Sample.Application;
|
|
2
|
-
|
|
3
|
-
// Primary constructor: DI of a port (IOrderQueue), a class (OrderValidation) and a forwarded port (INotifier).
|
|
4
|
-
public sealed class OrderAcceptance(IOrderQueue queue, OrderValidation validation, INotifier notifier)
|
|
5
|
-
{
|
|
6
|
-
public bool Accept(OrderRequest request)
|
|
7
|
-
{
|
|
8
|
-
if (!validation.IsValid(request))
|
|
9
|
-
{
|
|
10
|
-
notifier.Notify($"Rejected order {request.Id}");
|
|
11
|
-
return false;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
queue.Enqueue(request);
|
|
15
|
-
return true;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
namespace Sample.Application;
|
|
2
|
-
|
|
3
|
-
// An exception with a method of its own: still never a logical component.
|
|
4
|
-
public sealed class OrderRejectedException(string reason) : Exception(reason)
|
|
5
|
-
{
|
|
6
|
-
public static OrderRejectedException ForPrice(decimal price) => new($"Price {price} is not allowed");
|
|
7
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
namespace Sample.Application;
|
|
2
|
-
|
|
3
|
-
// Classic constructor: DI of a port with no implementation, plus a `new` edge inside a method body.
|
|
4
|
-
public sealed class OrderRunning
|
|
5
|
-
{
|
|
6
|
-
private readonly IAuditTrail _audit;
|
|
7
|
-
|
|
8
|
-
public OrderRunning(IAuditTrail audit)
|
|
9
|
-
{
|
|
10
|
-
_audit = audit;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
public void Run()
|
|
14
|
-
{
|
|
15
|
-
using var clock = new RunClock();
|
|
16
|
-
_audit.Record($"Ran in {clock.Elapsed()}");
|
|
17
|
-
}
|
|
18
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
namespace Sample.Application;
|
|
2
|
-
|
|
3
|
-
// Port implemented in Infrastructure: edges through it resolve to OrderQueue.
|
|
4
|
-
public interface IOrderQueue
|
|
5
|
-
{
|
|
6
|
-
void Enqueue(OrderRequest request);
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
// Port implemented in Infrastructure by a class registered through forwarding.
|
|
10
|
-
public interface INotifier
|
|
11
|
-
{
|
|
12
|
-
void Notify(string message);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
// Port with no implementation anywhere: must surface as an unresolved port.
|
|
16
|
-
public interface IAuditTrail
|
|
17
|
-
{
|
|
18
|
-
void Record(string entry);
|
|
19
|
-
}
|