@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.
Files changed (280) hide show
  1. package/INSTALLATION.md +53 -52
  2. package/README.md +1 -1
  3. package/bin/musketeer.js +168 -168
  4. package/manifest.json +19 -2
  5. package/package.json +48 -48
  6. package/src/dotnet-scaffold-copier.js +79 -79
  7. package/src/provisioner/detect.js +93 -93
  8. package/src/self-update.js +77 -77
  9. package/template/.claude/agents/git-manager.md +18 -18
  10. package/template/.claude/agents/hallmark-auditor.md +78 -78
  11. package/template/.claude/agents/researcher.md +33 -33
  12. package/template/.claude/hooks/block-unsafe-adr-title.cjs +85 -85
  13. package/template/.claude/hooks/init-adr-dir.cjs +173 -173
  14. package/template/.claude/hooks/inject-adr-flags.cjs +94 -94
  15. package/template/.claude/hooks/lib/adr/command-scan.cjs +115 -115
  16. package/template/.claude/hooks/lib/characteristics/checker.cjs +357 -357
  17. package/template/.claude/hooks/lib/git-info-cache.cjs +191 -191
  18. package/template/.claude/hooks/sync-adr-toc.cjs +146 -146
  19. package/template/.claude/hooks/usage-quota-cache-refresh.cjs +166 -166
  20. package/template/.claude/hooks/validate-characteristics-hook.cjs +66 -66
  21. package/template/.claude/hooks/validate-cml-hook.js +146 -145
  22. package/template/.claude/skills/adr-writer/SKILL.md +48 -48
  23. package/template/.claude/skills/adr-writer/references/adr-example.md +35 -35
  24. package/template/.claude/skills/architecture-characteristic-writer/SKILL.md +215 -215
  25. package/template/.claude/skills/architecture-characteristic-writer/assets/worksheet-template.md +29 -29
  26. package/template/.claude/skills/architecture-characteristic-writer/references/characteristics-catalog.md +40 -40
  27. package/template/.claude/skills/architecture-characteristic-writer/scripts/ranking-table.cjs +171 -171
  28. package/template/.claude/skills/context-map/SKILL.md +80 -80
  29. package/template/.claude/skills/context-map/example.cml +106 -106
  30. package/template/.claude/skills/context-map/reference/Bounded Context/Bounded Context.md +40 -40
  31. package/template/.claude/skills/context-map/reference/Bounded Context/businessModel.md +5 -5
  32. package/template/.claude/skills/context-map/reference/Bounded Context/domainVisionStatement.md +2 -2
  33. package/template/.claude/skills/context-map/reference/Bounded Context/evolution.md +5 -5
  34. package/template/.claude/skills/context-map/reference/Bounded Context/implementationTechnology.md +1 -1
  35. package/template/.claude/skills/context-map/reference/Bounded Context/implements.md +1 -1
  36. package/template/.claude/skills/context-map/reference/Bounded Context/knowledgeLevel.md +4 -4
  37. package/template/.claude/skills/context-map/reference/Bounded Context/realizes.md +9 -9
  38. package/template/.claude/skills/context-map/reference/Bounded Context/refines.md +10 -10
  39. package/template/.claude/skills/context-map/reference/Bounded Context/responsibilities.md +26 -26
  40. package/template/.claude/skills/context-map/reference/Bounded Context/type.md +23 -23
  41. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Anticorruption Layer.md +5 -5
  42. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Bounded Context Relationship.md +12 -12
  43. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Conformist.md +5 -5
  44. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Customer-Supplier (C-S).md +22 -22
  45. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Open Host Service.md +4 -4
  46. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Partnership (P).md +13 -13
  47. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Published Language.md +4 -4
  48. package/template/.claude/skills/context-map/reference/Bounded Context Relationship/Shared Kernel (SK).md +12 -12
  49. package/template/.claude/skills/context-map/reference/Context Map.md +62 -62
  50. package/template/.claude/skills/context-map/reference/Domain/Domain.md +30 -30
  51. package/template/.claude/skills/context-map/reference/Domain/supports.md +33 -33
  52. package/template/.claude/skills/context-map/reference/Domain/type.md +3 -3
  53. package/template/.claude/skills/context-map/reference/Semantic Rules.md +32 -32
  54. package/template/.claude/skills/hallmark/SKILL.md +552 -552
  55. package/template/.claude/skills/hallmark/references/anti-patterns.md +412 -412
  56. package/template/.claude/skills/hallmark/references/assets.md +406 -406
  57. package/template/.claude/skills/hallmark/references/color.md +95 -95
  58. package/template/.claude/skills/hallmark/references/component-cookbook.md +256 -256
  59. package/template/.claude/skills/hallmark/references/components/c1-outlined-chip.md +12 -12
  60. package/template/.claude/skills/hallmark/references/components/c2-inline-form-as-cta.md +16 -16
  61. package/template/.claude/skills/hallmark/references/components/c3-typographic-link.md +8 -8
  62. package/template/.claude/skills/hallmark/references/components/c4-sticky-bottom-bar.md +16 -16
  63. package/template/.claude/skills/hallmark/references/components/f1-bento-grid.md +20 -20
  64. package/template/.claude/skills/hallmark/references/components/f2-sticky-scroll-stack.md +20 -20
  65. package/template/.claude/skills/hallmark/references/components/f3-tabular-spec-sheet.md +11 -11
  66. package/template/.claude/skills/hallmark/references/components/f4-step-sequence.md +11 -11
  67. package/template/.claude/skills/hallmark/references/components/f5-annotated-screenshot.md +11 -11
  68. package/template/.claude/skills/hallmark/references/components/f6-product-card-grid.md +41 -41
  69. package/template/.claude/skills/hallmark/references/components/ft1-mast-headed.md +13 -13
  70. package/template/.claude/skills/hallmark/references/components/ft2-inline-rule-single-line.md +10 -10
  71. package/template/.claude/skills/hallmark/references/components/ft3-index-style-category-list.md +12 -12
  72. package/template/.claude/skills/hallmark/references/components/ft4-dense-typographic.md +10 -10
  73. package/template/.claude/skills/hallmark/references/components/ft5-statement.md +21 -21
  74. package/template/.claude/skills/hallmark/references/components/ft6-letter-close.md +19 -19
  75. package/template/.claude/skills/hallmark/references/components/ft7-newsletter-first.md +27 -27
  76. package/template/.claude/skills/hallmark/references/components/ft8-marquee-scroll.md +25 -25
  77. package/template/.claude/skills/hallmark/references/components/h1-marquee.md +15 -15
  78. package/template/.claude/skills/hallmark/references/components/h2-split-diptych.md +15 -15
  79. package/template/.claude/skills/hallmark/references/components/h3-quote-led.md +11 -11
  80. package/template/.claude/skills/hallmark/references/components/h4-stat-led.md +14 -14
  81. package/template/.claude/skills/hallmark/references/components/h5-letter-hero.md +11 -11
  82. package/template/.claude/skills/hallmark/references/components/h6-photographic-fold.md +16 -16
  83. package/template/.claude/skills/hallmark/references/components/h7-demo-video-clipped-by-viewport-edge.md +27 -27
  84. package/template/.claude/skills/hallmark/references/components/h8-mockup-split-browser-framed.md +23 -23
  85. package/template/.claude/skills/hallmark/references/components/h9-custom-illustration-centerpiece.md +27 -27
  86. package/template/.claude/skills/hallmark/references/components/n1-wordmark-2-links.md +12 -12
  87. package/template/.claude/skills/hallmark/references/components/n10-floating-on-scroll-morph.md +19 -19
  88. package/template/.claude/skills/hallmark/references/components/n2-floating-chip.md +14 -14
  89. package/template/.claude/skills/hallmark/references/components/n3-side-rail.md +14 -14
  90. package/template/.claude/skills/hallmark/references/components/n4-hidden-behind-k.md +9 -9
  91. package/template/.claude/skills/hallmark/references/components/n5-floating-pill.md +28 -28
  92. package/template/.claude/skills/hallmark/references/components/n6-newspaper-masthead.md +24 -24
  93. package/template/.claude/skills/hallmark/references/components/n7-brutal-slab.md +22 -22
  94. package/template/.claude/skills/hallmark/references/components/n8-terminal-command.md +21 -21
  95. package/template/.claude/skills/hallmark/references/components/n9-edge-aligned-minimal.md +17 -17
  96. package/template/.claude/skills/hallmark/references/components/s1-left-margin-numbered.md +15 -15
  97. package/template/.claude/skills/hallmark/references/components/s2-hanging.md +13 -13
  98. package/template/.claude/skills/hallmark/references/components/s3-sticky-pinned.md +19 -19
  99. package/template/.claude/skills/hallmark/references/components/s4-inline-no-break.md +11 -11
  100. package/template/.claude/skills/hallmark/references/components/s5-bottom-anchored.md +13 -13
  101. package/template/.claude/skills/hallmark/references/components/t1-pull-quote-with-marginalia.md +12 -12
  102. package/template/.claude/skills/hallmark/references/components/t2-logo-wall-hairline.md +19 -19
  103. package/template/.claude/skills/hallmark/references/components/t3-single-huge-quote.md +11 -11
  104. package/template/.claude/skills/hallmark/references/components/t4-numbered-stat-strip.md +14 -14
  105. package/template/.claude/skills/hallmark/references/contract.md +24 -24
  106. package/template/.claude/skills/hallmark/references/copy.md +182 -182
  107. package/template/.claude/skills/hallmark/references/custom-craft.md +626 -626
  108. package/template/.claude/skills/hallmark/references/custom-theme.md +329 -329
  109. package/template/.claude/skills/hallmark/references/design-md.md +116 -116
  110. package/template/.claude/skills/hallmark/references/export-formats.md +328 -328
  111. package/template/.claude/skills/hallmark/references/floating-nav.md +89 -89
  112. package/template/.claude/skills/hallmark/references/genres/atmospheric.md +65 -65
  113. package/template/.claude/skills/hallmark/references/genres/editorial.md +70 -70
  114. package/template/.claude/skills/hallmark/references/genres/modern-minimal.md +67 -67
  115. package/template/.claude/skills/hallmark/references/genres/playful.md +65 -65
  116. package/template/.claude/skills/hallmark/references/hero-enrichment.md +474 -474
  117. package/template/.claude/skills/hallmark/references/imagery-kit.md +170 -170
  118. package/template/.claude/skills/hallmark/references/interaction-and-states.md +207 -207
  119. package/template/.claude/skills/hallmark/references/layout-and-space.md +111 -111
  120. package/template/.claude/skills/hallmark/references/macrostructures/01-bento-grid.md +35 -35
  121. package/template/.claude/skills/hallmark/references/macrostructures/02-long-document.md +34 -34
  122. package/template/.claude/skills/hallmark/references/macrostructures/03-marquee-hero.md +31 -31
  123. package/template/.claude/skills/hallmark/references/macrostructures/04-stat-led.md +32 -32
  124. package/template/.claude/skills/hallmark/references/macrostructures/05-workbench.md +32 -32
  125. package/template/.claude/skills/hallmark/references/macrostructures/06-conversational-faq.md +33 -33
  126. package/template/.claude/skills/hallmark/references/macrostructures/07-manifesto.md +32 -32
  127. package/template/.claude/skills/hallmark/references/macrostructures/08-photographic.md +34 -34
  128. package/template/.claude/skills/hallmark/references/macrostructures/09-quote-led.md +32 -32
  129. package/template/.claude/skills/hallmark/references/macrostructures/10-specimen.md +32 -32
  130. package/template/.claude/skills/hallmark/references/macrostructures/11-catalogue.md +23 -23
  131. package/template/.claude/skills/hallmark/references/macrostructures/12-letter.md +23 -23
  132. package/template/.claude/skills/hallmark/references/macrostructures/13-index-first.md +23 -23
  133. package/template/.claude/skills/hallmark/references/macrostructures/14-narrative-workflow.md +23 -23
  134. package/template/.claude/skills/hallmark/references/macrostructures/15-split-studio.md +23 -23
  135. package/template/.claude/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -23
  136. package/template/.claude/skills/hallmark/references/macrostructures/17-type-specimen.md +23 -23
  137. package/template/.claude/skills/hallmark/references/macrostructures/18-portfolio-grid.md +23 -23
  138. package/template/.claude/skills/hallmark/references/macrostructures/19-map-diagram.md +23 -23
  139. package/template/.claude/skills/hallmark/references/macrostructures/20-ecosystem-index.md +23 -23
  140. package/template/.claude/skills/hallmark/references/macrostructures/21-component-playground.md +23 -23
  141. package/template/.claude/skills/hallmark/references/macrostructures.md +89 -89
  142. package/template/.claude/skills/hallmark/references/microinteractions.md +260 -260
  143. package/template/.claude/skills/hallmark/references/motion.md +109 -109
  144. package/template/.claude/skills/hallmark/references/preview-examples.md +49 -49
  145. package/template/.claude/skills/hallmark/references/responsive.md +138 -138
  146. package/template/.claude/skills/hallmark/references/slop-test.md +205 -205
  147. package/template/.claude/skills/hallmark/references/structure.md +164 -164
  148. package/template/.claude/skills/hallmark/references/study.md +511 -511
  149. package/template/.claude/skills/hallmark/references/typography.md +243 -243
  150. package/template/.claude/skills/hallmark/references/verbs/audit.md +25 -25
  151. package/template/.claude/skills/hallmark/references/verbs/redesign.md +269 -269
  152. package/template/.claude/skills/hallmark-loop/SKILL.md +105 -105
  153. package/template/.claude/skills/hallmark-loop/references/auditor-call.md +60 -60
  154. package/template/.claude/skills/hallmark-loop/references/capture.md +78 -78
  155. package/template/.claude/skills/hallmark-loop/references/loop-control.md +79 -79
  156. package/template/.claude/skills/handoff/SKILL.md +15 -15
  157. package/template/.claude/skills/knowledge-crunching/SKILL.md +94 -94
  158. package/template/.claude/skills/logical-components/.gitattributes +2 -0
  159. package/template/.claude/skills/logical-components/SKILL.md +102 -0
  160. package/template/.claude/skills/logical-components/references/component-classifier-prompt.md +53 -0
  161. package/template/.claude/skills/logical-components/references/responsibility-agent-prompt.md +67 -0
  162. package/template/.claude/skills/logical-components/references/responsibility-verifier-prompt.md +39 -0
  163. package/template/.claude/skills/logical-components/scripts/Directory.Build.props +7 -0
  164. package/template/.claude/skills/logical-components/scripts/Directory.Packages.props +8 -0
  165. package/template/.claude/skills/logical-components/scripts/LogicalComponents/BatchPlanning.cs +69 -0
  166. package/template/.claude/skills/logical-components/scripts/LogicalComponents/BatchesCommand.cs +39 -0
  167. package/template/.claude/skills/logical-components/scripts/LogicalComponents/CandidatesCommand.cs +70 -0
  168. package/template/.claude/skills/logical-components/scripts/LogicalComponents/CitableSource.cs +39 -0
  169. package/template/.claude/skills/logical-components/scripts/LogicalComponents/Citation.cs +37 -0
  170. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ClassifyBatchesCommand.cs +65 -0
  171. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ClassifyMergeCommand.cs +187 -0
  172. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentDiscovery.cs +166 -0
  173. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentRule.cs +87 -0
  174. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ComponentsFile.cs +83 -0
  175. package/template/.claude/skills/logical-components/scripts/LogicalComponents/CouplingResolver.cs +196 -0
  176. package/template/.claude/skills/logical-components/scripts/LogicalComponents/DisplayName.cs +14 -0
  177. package/template/.claude/skills/logical-components/scripts/LogicalComponents/EdgeExtraction.cs +111 -0
  178. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ExtractCommand.cs +72 -0
  179. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ExtractConfig.cs +79 -0
  180. package/template/.claude/skills/logical-components/scripts/LogicalComponents/LogicalComponents.csproj +15 -0
  181. package/template/.claude/skills/logical-components/scripts/LogicalComponents/MarkdownRenderer.cs +73 -0
  182. package/template/.claude/skills/logical-components/scripts/LogicalComponents/MemberUseResolution.cs +203 -0
  183. package/template/.claude/skills/logical-components/scripts/LogicalComponents/MemberUses.cs +155 -0
  184. package/template/.claude/skills/logical-components/scripts/LogicalComponents/PortResolution.cs +75 -0
  185. package/template/.claude/skills/logical-components/scripts/LogicalComponents/Program.cs +27 -0
  186. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ProjectFilters.cs +76 -0
  187. package/template/.claude/skills/logical-components/scripts/LogicalComponents/PruneCommand.cs +132 -0
  188. package/template/.claude/skills/logical-components/scripts/LogicalComponents/RenderCommand.cs +173 -0
  189. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ResponsibilityBatches.cs +84 -0
  190. package/template/.claude/skills/logical-components/scripts/LogicalComponents/ResponsibilityValidation.cs +178 -0
  191. package/template/.claude/skills/logical-components/scripts/LogicalComponents/SeamDispatch.cs +59 -0
  192. package/template/.claude/skills/logical-components/scripts/LogicalComponents/SymbolNames.cs +53 -0
  193. package/template/.claude/skills/logical-components/scripts/LogicalComponents/TypeMap.cs +75 -0
  194. package/template/.claude/skills/logical-components/scripts/LogicalComponents/WalkRoots.cs +63 -0
  195. package/template/.claude/skills/logical-components/scripts/LogicalComponents/WorkspaceLoader.cs +227 -0
  196. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/AssignIdsTests.cs +41 -0
  197. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/BatchPlanningTests.cs +82 -0
  198. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CandidatesCommandTests.cs +34 -0
  199. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CitationTests.cs +42 -0
  200. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ClassifyCommandsTests.cs +176 -0
  201. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ComponentDiscoveryTests.cs +190 -0
  202. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/CouplingExtractionTests.cs +174 -0
  203. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/DisplayNameTests.cs +17 -0
  204. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ExtractConfigTests.cs +72 -0
  205. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/FixturePaths.cs +32 -0
  206. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/LogicalComponents.Tests.csproj +23 -0
  207. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/MarkdownRendererTests.cs +50 -0
  208. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ProjectFiltersTests.cs +65 -0
  209. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/PruneCommandTests.cs +119 -0
  210. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderCommandTests.cs +162 -0
  211. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderGoldenTests.cs +34 -0
  212. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/RenderTestData.cs +49 -0
  213. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/ResponsibilityValidationTests.cs +227 -0
  214. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/SampleAppWorkspace.cs +27 -0
  215. package/template/.claude/skills/logical-components/scripts/LogicalComponents.Tests/WorkspaceLoaderTests.cs +87 -0
  216. package/template/.claude/skills/logical-components/scripts/fixtures/BrokenApp/src/Broken.Application/Broken.Application.csproj +7 -0
  217. package/template/.claude/skills/logical-components/scripts/fixtures/BrokenApp/src/Broken.Application/Broken.cs +7 -0
  218. package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/MultiTargetApp.slnx +6 -0
  219. package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Legacy.FSharp/Legacy.FSharp.fsproj +8 -0
  220. package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Legacy.FSharp/Library.fs +5 -0
  221. package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Application/Multi.Application.csproj +7 -0
  222. package/template/.claude/skills/logical-components/scripts/fixtures/MultiTargetApp/src/Multi.Application/Scheduling.cs +14 -0
  223. package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application/Solo.Application.csproj +7 -0
  224. package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application/SoloGreeting.cs +7 -0
  225. package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application.Tests/FakeGreeting.cs +6 -0
  226. package/template/.claude/skills/logical-components/scripts/fixtures/NoSolutionApp/src/Solo.Application.Tests/Solo.Application.Tests.csproj +11 -0
  227. package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/components.json +63 -0
  228. package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/expected.md +28 -0
  229. package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/repo/src/App/OrderAcceptance.cs +16 -0
  230. package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/repo/src/Infra/OrderQueue.cs +10 -0
  231. package/template/.claude/skills/logical-components/scripts/fixtures/RenderGolden/resp/batch-01.json +18 -0
  232. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/SampleApp.slnx +10 -0
  233. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/logical-components.json +78 -0
  234. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/CandidateCases.cs +37 -0
  235. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/CouplingCases.cs +33 -0
  236. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/DependencyInjection.cs +18 -0
  237. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/EdgeCases.cs +63 -0
  238. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/LoudNotifying.Base.cs +5 -0
  239. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/LoudNotifying.cs +7 -0
  240. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderAcceptance.cs +17 -0
  241. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderOptions.cs +9 -0
  242. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRejectedException.cs +7 -0
  243. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRequest.cs +4 -0
  244. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderRunning.cs +18 -0
  245. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/OrderValidation.cs +6 -0
  246. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/Ports.cs +19 -0
  247. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/PriceRules.cs +7 -0
  248. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReceiptPrinting.Totals.cs +6 -0
  249. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReceiptPrinting.cs +7 -0
  250. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReviewCases.cs +107 -0
  251. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/ReviewFixCases.cs +143 -0
  252. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/RunClock.cs +12 -0
  253. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/Sample.Application.csproj +10 -0
  254. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Application/SeeThroughCases.cs +89 -0
  255. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Billing.Application/OrderRunning.cs +7 -0
  256. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Billing.Application/Sample.Billing.Application.csproj +11 -0
  257. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ForwardedNotifier.cs +8 -0
  258. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/InfrastructureDependencyInjection.cs +16 -0
  259. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/Mailer.cs +6 -0
  260. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/OrderQueue.cs +11 -0
  261. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/QueueEntry.cs +4 -0
  262. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/QueueStore.cs +8 -0
  263. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ReviewCases.cs +35 -0
  264. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/ReviewFixCases.cs +13 -0
  265. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/Sample.Infrastructure.csproj +13 -0
  266. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/SeeThroughCases.cs +18 -0
  267. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/src/Sample.Infrastructure/UnreachedPlumbing.cs +7 -0
  268. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/tests/Sample.Tests/FakeOrderQueue.cs +11 -0
  269. package/template/.claude/skills/logical-components/scripts/fixtures/SampleApp/tests/Sample.Tests/Sample.Tests.csproj +11 -0
  270. package/template/.claude/skills/logical-components/scripts/fixtures/SharedOutsideRepo/SharedClock.cs +7 -0
  271. package/template/.claude/skills/logical-components/scripts/global.json +5 -0
  272. package/template/.claude/skills/logical-components/scripts/smoke-sample.sh +26 -0
  273. package/template/.claude/skills/research/SKILL.md +69 -69
  274. package/template/.claude/skills/tdd/SKILL.md +142 -142
  275. package/template/.claude/skills/tdd/deep-modules.md +15 -15
  276. package/template/.claude/skills/tdd/interface-design.md +31 -31
  277. package/template/.claude/skills/tdd/mocking.md +59 -59
  278. package/template/.claude/skills/tdd/refactoring.md +10 -10
  279. package/template/.claude/skills/tdd/tests.md +61 -61
  280. package/template/.claude/statusline.cjs +100 -37
@@ -0,0 +1,89 @@
1
+ namespace Sample.Application;
2
+
3
+ // A method parameter of interface type is called: an edge to its implementation.
4
+ public interface IDrawing
5
+ {
6
+ string Title();
7
+ }
8
+
9
+ public sealed class TitleReading
10
+ {
11
+ public string Read(IDrawing drawing) => drawing.Title();
12
+ }
13
+
14
+ // A call on a returned object: an edge to the implementations of what is returned.
15
+ public interface IRecovery
16
+ {
17
+ void Settle();
18
+ }
19
+
20
+ public sealed class RecoveryRouting(IEnumerable<IRecovery> recoveries)
21
+ {
22
+ public IRecovery Find() => recoveries.First();
23
+ }
24
+
25
+ public sealed class CrashSettling(RecoveryRouting routes)
26
+ {
27
+ public void Settle() => routes.Find().Settle();
28
+ }
29
+
30
+ // A record property that calls a component: reading that property couples the reader; reading another does not.
31
+ public sealed record Job(int Id, string Callback)
32
+ {
33
+ public string CallbackTarget => CallbackNormalizing.Normalize(Callback);
34
+ }
35
+
36
+ public static class CallbackNormalizing
37
+ {
38
+ public static string Normalize(string url) => url.Trim();
39
+ }
40
+
41
+ public sealed class JobReporting
42
+ {
43
+ public string Target(Job job) => job.CallbackTarget;
44
+ }
45
+
46
+ public sealed class JobCounting
47
+ {
48
+ public int Count(Job job) => job.Id;
49
+ }
50
+
51
+ // A helper that calls a component: the helper's caller depends on the component; the helper is no node.
52
+ public sealed class LabelFormat(RunClock clock)
53
+ {
54
+ public string Stamp(string text) => $"{text} {clock.Elapsed()}";
55
+ }
56
+
57
+ public sealed class Labelling(LabelFormat format)
58
+ {
59
+ public string Label(string text) => format.Stamp(text);
60
+ }
61
+
62
+ // Only constructing a helper runs its field initializers: they count.
63
+ public sealed class StampedText
64
+ {
65
+ private readonly string _stamp = PriceRules.Check(1m) ? "ok" : "no";
66
+
67
+ public string Apply(string text) => text + _stamp;
68
+ }
69
+
70
+ public sealed class Stamping
71
+ {
72
+ public object Make() => new StampedText();
73
+ }
74
+
75
+ // Helpers calling each other in a cycle: the walk ends, and what they reach is reached once.
76
+ public static class PingText
77
+ {
78
+ public static string Ping(int n) => n > 0 ? PongText.Pong(n - 1) : 1m.AsMoney();
79
+ }
80
+
81
+ public static class PongText
82
+ {
83
+ public static string Pong(int n) => PingText.Ping(n);
84
+ }
85
+
86
+ public sealed class Echoing
87
+ {
88
+ public string Echo() => PingText.Ping(3);
89
+ }
@@ -0,0 +1,7 @@
1
+ namespace Sample.Billing.Application;
2
+
3
+ // Same simple name as Sample.Application.OrderRunning: exercises the name-clash rule.
4
+ public sealed class OrderRunning
5
+ {
6
+ public decimal Total(IEnumerable<decimal> lines) => lines.Sum();
7
+ }
@@ -0,0 +1,11 @@
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
+ <!-- A source file outside the repo root: exercises the out-of-repo declaration rule. -->
9
+ <Compile Include="../../../SharedOutsideRepo/SharedClock.cs" Link="SharedClock.cs" />
10
+ </ItemGroup>
11
+ </Project>
@@ -0,0 +1,8 @@
1
+ using Sample.Application;
2
+
3
+ namespace Sample.Infrastructure;
4
+
5
+ public sealed class ForwardedNotifier(Mailer mailer) : INotifier
6
+ {
7
+ public void Notify(string message) => mailer.Send(message);
8
+ }
@@ -0,0 +1,16 @@
1
+ using Microsoft.Extensions.DependencyInjection;
2
+ using Sample.Application;
3
+
4
+ namespace Sample.Infrastructure;
5
+
6
+ // The three registration styles seen in real code: instance, factory, forwarding.
7
+ public static class InfrastructureDependencyInjection
8
+ {
9
+ public static IServiceCollection AddSampleInfrastructure(this IServiceCollection services)
10
+ {
11
+ services.AddSingleton<IOrderQueue>(new OrderQueue());
12
+ services.AddSingleton(sp => new ForwardedNotifier(new Mailer()));
13
+ services.AddSingleton<INotifier>(sp => sp.GetRequiredService<ForwardedNotifier>());
14
+ return services;
15
+ }
16
+ }
@@ -0,0 +1,6 @@
1
+ namespace Sample.Infrastructure;
2
+
3
+ public sealed class Mailer
4
+ {
5
+ public void Send(string message) => Console.WriteLine(message);
6
+ }
@@ -0,0 +1,11 @@
1
+ using Sample.Application;
2
+
3
+ namespace Sample.Infrastructure;
4
+
5
+ // Implements a port, and reaches QueueStore only from within Infrastructure.
6
+ public sealed class OrderQueue : IOrderQueue
7
+ {
8
+ private readonly QueueStore _store = new QueueStore();
9
+
10
+ public void Enqueue(OrderRequest request) => _store.Add(new QueueEntry(request.Id));
11
+ }
@@ -0,0 +1,4 @@
1
+ namespace Sample.Infrastructure;
2
+
3
+ // Data reached from Infrastructure: still not a component.
4
+ public record QueueEntry(int OrderId);
@@ -0,0 +1,8 @@
1
+ namespace Sample.Infrastructure;
2
+
3
+ public sealed class QueueStore
4
+ {
5
+ private readonly List<QueueEntry> _entries = [];
6
+
7
+ public void Add(QueueEntry entry) => _entries.Add(entry);
8
+ }
@@ -0,0 +1,35 @@
1
+ using Sample.Application;
2
+
3
+ namespace Sample.Infrastructure;
4
+
5
+ public sealed class OrderRequestHandler : IHandler<OrderRequest>
6
+ {
7
+ public void Handle(OrderRequest item)
8
+ {
9
+ }
10
+ }
11
+
12
+ // Implements a different construction of the same generic port: never reached from IHandler<OrderRequest>.
13
+ public sealed class TextHandler : IHandler<string>
14
+ {
15
+ public void Handle(string item)
16
+ {
17
+ }
18
+ }
19
+
20
+ // Open generic: implements every construction, so it is reached from IHandler<OrderRequest>.
21
+ public sealed class LoggingHandler<T> : IHandler<T>
22
+ {
23
+ public void Handle(T item) => Console.WriteLine(item);
24
+ }
25
+
26
+ // Implements the interface whose static member is called: still not reached by that call.
27
+ public sealed class DefaultPricing : IPricingDefaults
28
+ {
29
+ public decimal Rate() => 2m;
30
+ }
31
+
32
+ public sealed class DiskStorage : StorageBase
33
+ {
34
+ public override void Save(string text) => File.WriteAllText("out.txt", text);
35
+ }
@@ -0,0 +1,13 @@
1
+ using Sample.Application;
2
+
3
+ namespace Sample.Infrastructure;
4
+
5
+ public sealed class PingHandling : ICommandHandler<Ping>
6
+ {
7
+ public void Handle(Ping command) => Console.WriteLine(command.N);
8
+ }
9
+
10
+ public sealed class PongHandling : ICommandHandler<Pong>
11
+ {
12
+ public void Handle(Pong command) => Console.WriteLine(command.N);
13
+ }
@@ -0,0 +1,13 @@
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
+ <PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="10.0.0" />
9
+ </ItemGroup>
10
+ <ItemGroup>
11
+ <ProjectReference Include="../Sample.Application/Sample.Application.csproj" />
12
+ </ItemGroup>
13
+ </Project>
@@ -0,0 +1,18 @@
1
+ using Sample.Application;
2
+
3
+ namespace Sample.Infrastructure;
4
+
5
+ public sealed class DwgDrawing : IDrawing
6
+ {
7
+ public string Title() => "drawing";
8
+ }
9
+
10
+ public sealed class ExportRecovery : IRecovery
11
+ {
12
+ public void Settle() => Console.WriteLine("export settled");
13
+ }
14
+
15
+ public sealed class ImportRecovery : IRecovery
16
+ {
17
+ public void Settle() => Console.WriteLine("import settled");
18
+ }
@@ -0,0 +1,7 @@
1
+ namespace Sample.Infrastructure;
2
+
3
+ // Nothing reaches this, yet it is a candidate: every class in scope is listed, reached or not.
4
+ public sealed class UnreachedPlumbing
5
+ {
6
+ public int Answer() => 42;
7
+ }
@@ -0,0 +1,11 @@
1
+ using Sample.Application;
2
+
3
+ namespace Sample.Tests;
4
+
5
+ // Test double implementing a port. Test projects are never loaded, so it must never become an edge target.
6
+ public sealed class FakeOrderQueue : IOrderQueue
7
+ {
8
+ public List<OrderRequest> Queued { get; } = [];
9
+
10
+ public void Enqueue(OrderRequest request) => Queued.Add(request);
11
+ }
@@ -0,0 +1,11 @@
1
+ <Project Sdk="Microsoft.NET.Sdk">
2
+ <PropertyGroup>
3
+ <TargetFramework>net10.0</TargetFramework>
4
+ <Nullable>enable</Nullable>
5
+ <ImplicitUsings>enable</ImplicitUsings>
6
+ <IsTestProject>true</IsTestProject>
7
+ </PropertyGroup>
8
+ <ItemGroup>
9
+ <ProjectReference Include="../../src/Sample.Application/Sample.Application.csproj" />
10
+ </ItemGroup>
11
+ </Project>
@@ -0,0 +1,7 @@
1
+ namespace Sample.Billing.Application;
2
+
3
+ // Linked into Sample.Billing.Application from outside the SampleApp repo root: it cannot be cited, so it is dropped.
4
+ public sealed class SharedClock
5
+ {
6
+ public DateTime Now() => DateTime.UtcNow;
7
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "test": {
3
+ "runner": "Microsoft.Testing.Platform"
4
+ }
5
+ }
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env bash
2
+ # Smoke check of the built CLI against the checked-in golden fixture (no LLM involved):
3
+ # batches must plan the fixture, and render must reproduce fixtures/RenderGolden/expected.md exactly.
4
+ # Usage: scripts/smoke-sample.sh (from anywhere; exits non-zero on any difference)
5
+ set -euo pipefail
6
+
7
+ here="$(cd "$(dirname "$0")" && pwd)"
8
+ golden="$here/fixtures/RenderGolden"
9
+ work="$(mktemp -d)"
10
+ trap 'rm -rf "$work"' EXIT
11
+
12
+ dotnet build "$here/LogicalComponents" -c Release -nologo -v q >/dev/null
13
+ lc=(dotnet "$here/LogicalComponents/bin/Release/net10.0/LogicalComponents.dll")
14
+
15
+ "${lc[@]}" batches --components "$golden/components.json" --agents 9 --out "$work/batches"
16
+ test -f "$work/batches/batch-01.json" && test -f "$work/batches/batch-02.json"
17
+
18
+ "${lc[@]}" render --components "$golden/components.json" --resp "$golden/resp" --repo "$golden/repo" --out "$work/out.md"
19
+
20
+ # Git may check expected.md out with CRLF; render always writes LF.
21
+ if diff <(tr -d '\r' < "$golden/expected.md") "$work/out.md"; then
22
+ echo "smoke: OK"
23
+ else
24
+ echo "smoke: render output differs from expected.md" >&2
25
+ exit 1
26
+ fi
@@ -1,69 +1,69 @@
1
- ---
2
- name: research
3
- description: "Research technical solutions and analyze architectures by spawning parallel researcher agents that search the web and cross-reference findings. Use for technology evaluation, best-practices research, solution design, and scalability/security/maintainability analysis."
4
- license: MIT
5
- argument-hint: "[topic]"
6
- metadata:
7
- author: Phuc Pham
8
- version: "2.1.1"
9
- ---
10
-
11
- # Research
12
-
13
- ## 1. Decompose
14
-
15
- Break the topic into independent sub-questions. Note recency requirements (how current
16
- the information must be) and any specific angles the user cares about (security, perf,
17
- cost, migration path) — these shape both the queries and the final sections.
18
-
19
- ## 2. Gather (parallel agents)
20
-
21
- For each independent sub-question, dispatch a `researcher` agent via the Agent tool
22
- (`subagent_type: "researcher"`). Run independent agents in a single message so they execute
23
- concurrently. Scale the count to the topic's breadth; don't spawn overlapping agents.
24
-
25
- Give each agent **one** sub-question plus any recency/angle constraints from step 1. The
26
- agent handles query crafting, source prioritization, and returning findings with URLs.
27
- Keep synthesis (steps 3–4) in the main agent.
28
-
29
- ## 3. Cross-reference
30
-
31
- Before synthesizing:
32
- - **Verify** each significant claim across multiple independent sources.
33
- - **Check dates** — flag stale information.
34
- - **Surface conflicts** explicitly rather than silently picking a side.
35
- - **Flag single-source claims** as unverified; discard or downgrade what fails.
36
-
37
- ## 4. Report
38
-
39
- Save to the output path if the main agent provided one; otherwise return inline. Cite
40
- sources throughout. Sacrifice grammar for concision.
41
-
42
- Adapt the structure to the topic — don't pad with empty sections. A typical shape:
43
-
44
- ```markdown
45
- # Research: [Topic]
46
-
47
- ## Summary
48
- [Key findings + recommendation, 1-3 paragraphs]
49
-
50
- ## Findings
51
- [Organized by sub-question. Add security / performance / cost subsections
52
- only where they're relevant to this topic.]
53
-
54
- ## Conflicts & Caveats
55
- [Conflicting or single-source claims, stale info]
56
-
57
- ## Recommendations
58
- [Actionable: what to do, code examples, pitfalls. Include a comparison if evaluating options.]
59
-
60
- ## References
61
- [Linked sources]
62
-
63
- ## Open Questions
64
- [Unresolved items — always include, even if empty.]
65
- ```
66
-
67
- **Standards:** accuracy (cross-referenced), currency (prefer last 12 months unless history
68
- matters), always cite with links. Deliver strategic intelligence that enables a decision,
69
- not a pile of links.
1
+ ---
2
+ name: research
3
+ description: "Research technical solutions and analyze architectures by spawning parallel researcher agents that search the web and cross-reference findings. Use for technology evaluation, best-practices research, solution design, and scalability/security/maintainability analysis."
4
+ license: MIT
5
+ argument-hint: "[topic]"
6
+ metadata:
7
+ author: Phuc Pham
8
+ version: "2.1.1"
9
+ ---
10
+
11
+ # Research
12
+
13
+ ## 1. Decompose
14
+
15
+ Break the topic into independent sub-questions. Note recency requirements (how current
16
+ the information must be) and any specific angles the user cares about (security, perf,
17
+ cost, migration path) — these shape both the queries and the final sections.
18
+
19
+ ## 2. Gather (parallel agents)
20
+
21
+ For each independent sub-question, dispatch a `researcher` agent via the Agent tool
22
+ (`subagent_type: "researcher"`). Run independent agents in a single message so they execute
23
+ concurrently. Scale the count to the topic's breadth; don't spawn overlapping agents.
24
+
25
+ Give each agent **one** sub-question plus any recency/angle constraints from step 1. The
26
+ agent handles query crafting, source prioritization, and returning findings with URLs.
27
+ Keep synthesis (steps 3–4) in the main agent.
28
+
29
+ ## 3. Cross-reference
30
+
31
+ Before synthesizing:
32
+ - **Verify** each significant claim across multiple independent sources.
33
+ - **Check dates** — flag stale information.
34
+ - **Surface conflicts** explicitly rather than silently picking a side.
35
+ - **Flag single-source claims** as unverified; discard or downgrade what fails.
36
+
37
+ ## 4. Report
38
+
39
+ Save to the output path if the main agent provided one; otherwise return inline. Cite
40
+ sources throughout. Sacrifice grammar for concision.
41
+
42
+ Adapt the structure to the topic — don't pad with empty sections. A typical shape:
43
+
44
+ ```markdown
45
+ # Research: [Topic]
46
+
47
+ ## Summary
48
+ [Key findings + recommendation, 1-3 paragraphs]
49
+
50
+ ## Findings
51
+ [Organized by sub-question. Add security / performance / cost subsections
52
+ only where they're relevant to this topic.]
53
+
54
+ ## Conflicts & Caveats
55
+ [Conflicting or single-source claims, stale info]
56
+
57
+ ## Recommendations
58
+ [Actionable: what to do, code examples, pitfalls. Include a comparison if evaluating options.]
59
+
60
+ ## References
61
+ [Linked sources]
62
+
63
+ ## Open Questions
64
+ [Unresolved items — always include, even if empty.]
65
+ ```
66
+
67
+ **Standards:** accuracy (cross-referenced), currency (prefer last 12 months unless history
68
+ matters), always cite with links. Deliver strategic intelligence that enables a decision,
69
+ not a pile of links.