@opengroundplan/core 0.1.1

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 (1739) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/adapters/README.md +155 -0
  4. package/adapters/_shared/README.md +16 -0
  5. package/adapters/aider/adapter.yaml +30 -0
  6. package/adapters/aider/templates/.aider.conf.yml.tmpl +5 -0
  7. package/adapters/amp/adapter.yaml +32 -0
  8. package/adapters/amp/templates/SKILL.md.tmpl +8 -0
  9. package/adapters/antigravity-cli/adapter.yaml +36 -0
  10. package/adapters/antigravity-cli/templates/ANTIGRAVITY.md.tmpl +11 -0
  11. package/adapters/claude-code/adapter.yaml +65 -0
  12. package/adapters/claude-code/templates/CLAUDE.md.tmpl +24 -0
  13. package/adapters/claude-code/templates/SKILL.md.tmpl +8 -0
  14. package/adapters/claude-code/templates/agent.md.tmpl +9 -0
  15. package/adapters/claude-code/templates/command.md.tmpl +6 -0
  16. package/adapters/claude-code/templates/rule.md.tmpl +8 -0
  17. package/adapters/claude-code/templates/settings.json.tmpl +11 -0
  18. package/adapters/cline/adapter.yaml +31 -0
  19. package/adapters/cline/templates/rule.md.tmpl +8 -0
  20. package/adapters/codex/adapter.yaml +29 -0
  21. package/adapters/continue/adapter.yaml +36 -0
  22. package/adapters/continue/templates/00-agents-md.md.tmpl +9 -0
  23. package/adapters/continue/templates/rule.md.tmpl +8 -0
  24. package/adapters/cursor/adapter.yaml +34 -0
  25. package/adapters/cursor/templates/rule.mdc.tmpl +9 -0
  26. package/adapters/gemini-cli/adapter.yaml +51 -0
  27. package/adapters/gemini-cli/templates/GEMINI.md.tmpl +9 -0
  28. package/adapters/gemini-cli/templates/command.toml.tmpl +4 -0
  29. package/adapters/github-copilot/adapter.yaml +44 -0
  30. package/adapters/github-copilot/templates/instructions.md.tmpl +8 -0
  31. package/adapters/github-copilot/templates/prompt.prompt.md.tmpl +6 -0
  32. package/adapters/opencode/adapter.yaml +18 -0
  33. package/adapters/opencode/templates/opencode.json.tmpl +4 -0
  34. package/adapters/roo-code/adapter.yaml +21 -0
  35. package/adapters/roo-code/templates/rule.md.tmpl +5 -0
  36. package/adapters/windsurf/adapter.yaml +34 -0
  37. package/adapters/windsurf/templates/agents-md.md.tmpl +12 -0
  38. package/adapters/windsurf/templates/rule.md.tmpl +9 -0
  39. package/adapters/windsurf/templates/workflow.md.tmpl +7 -0
  40. package/adapters/zed/adapter.yaml +14 -0
  41. package/catalog/README.md +62 -0
  42. package/catalog/architectures/agentic-tool-loop.yaml +62 -0
  43. package/catalog/architectures/bff.yaml +58 -0
  44. package/catalog/architectures/clean.yaml +61 -0
  45. package/catalog/architectures/cqrs.yaml +58 -0
  46. package/catalog/architectures/ddd-tactical.yaml +68 -0
  47. package/catalog/architectures/event-driven.yaml +59 -0
  48. package/catalog/architectures/feature-sliced-design.yaml +61 -0
  49. package/catalog/architectures/hexagonal.yaml +60 -0
  50. package/catalog/architectures/lakehouse.yaml +63 -0
  51. package/catalog/architectures/layered.yaml +60 -0
  52. package/catalog/architectures/llm-workflow.yaml +59 -0
  53. package/catalog/architectures/medallion.yaml +60 -0
  54. package/catalog/architectures/micro-frontends.yaml +60 -0
  55. package/catalog/architectures/microservices.yaml +62 -0
  56. package/catalog/architectures/modular-monolith.yaml +62 -0
  57. package/catalog/architectures/monolith.yaml +61 -0
  58. package/catalog/architectures/multi-agent.yaml +61 -0
  59. package/catalog/architectures/mvc-mvvm.yaml +62 -0
  60. package/catalog/architectures/nextjs-colocation.yaml +67 -0
  61. package/catalog/architectures/onion.yaml +60 -0
  62. package/catalog/architectures/pipes-and-filters.yaml +59 -0
  63. package/catalog/architectures/rag-hybrid.yaml +62 -0
  64. package/catalog/architectures/serverless.yaml +58 -0
  65. package/catalog/architectures/vertical-slice.yaml +61 -0
  66. package/catalog/characteristics.yaml +165 -0
  67. package/catalog/decision.yaml +309 -0
  68. package/catalog/sources/README.md +697 -0
  69. package/catalog/sources/agent-tooling.yaml +1180 -0
  70. package/catalog/sources/ai-llm.yaml +508 -0
  71. package/catalog/sources/auth.yaml +618 -0
  72. package/catalog/sources/backend-api.yaml +720 -0
  73. package/catalog/sources/cms-ecommerce.yaml +558 -0
  74. package/catalog/sources/data-engineering.yaml +618 -0
  75. package/catalog/sources/database-orm.yaml +507 -0
  76. package/catalog/sources/devops-cicd.yaml +422 -0
  77. package/catalog/sources/frontend-ui.yaml +654 -0
  78. package/catalog/sources/fullstack-saas.yaml +629 -0
  79. package/catalog/sources/game-3d.yaml +834 -0
  80. package/catalog/sources/gaps.md +268 -0
  81. package/catalog/sources/layer-plan.yaml +3919 -0
  82. package/catalog/sources/mobile-desktop.yaml +638 -0
  83. package/catalog/sources/observability.yaml +1364 -0
  84. package/catalog/sources/payments-billing.yaml +553 -0
  85. package/catalog/sources/realtime-messaging.yaml +787 -0
  86. package/catalog/sources/security-compliance.yaml +613 -0
  87. package/catalog/sources/testing.yaml +652 -0
  88. package/dist/adapters.d.ts +43 -0
  89. package/dist/adapters.js +181 -0
  90. package/dist/adapters.js.map +1 -0
  91. package/dist/agentkit.d.ts +65 -0
  92. package/dist/agentkit.js +183 -0
  93. package/dist/agentkit.js.map +1 -0
  94. package/dist/apply.d.ts +21 -0
  95. package/dist/apply.js +135 -0
  96. package/dist/apply.js.map +1 -0
  97. package/dist/condition.d.ts +14 -0
  98. package/dist/condition.js +121 -0
  99. package/dist/condition.js.map +1 -0
  100. package/dist/config.d.ts +36 -0
  101. package/dist/config.js +131 -0
  102. package/dist/config.js.map +1 -0
  103. package/dist/index.d.ts +15 -0
  104. package/dist/index.js +16 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/intent.d.ts +52 -0
  107. package/dist/intent.js +220 -0
  108. package/dist/intent.js.map +1 -0
  109. package/dist/license.d.ts +11 -0
  110. package/dist/license.js +68 -0
  111. package/dist/license.js.map +1 -0
  112. package/dist/loader.d.ts +12 -0
  113. package/dist/loader.js +118 -0
  114. package/dist/loader.js.map +1 -0
  115. package/dist/merge.d.ts +28 -0
  116. package/dist/merge.js +412 -0
  117. package/dist/merge.js.map +1 -0
  118. package/dist/plan.d.ts +12 -0
  119. package/dist/plan.js +206 -0
  120. package/dist/plan.js.map +1 -0
  121. package/dist/python-data.json +575 -0
  122. package/dist/python-requirements.d.ts +7 -0
  123. package/dist/python-requirements.js +79 -0
  124. package/dist/python-requirements.js.map +1 -0
  125. package/dist/recommend.d.ts +27 -0
  126. package/dist/recommend.js +68 -0
  127. package/dist/recommend.js.map +1 -0
  128. package/dist/resolve.d.ts +22 -0
  129. package/dist/resolve.js +132 -0
  130. package/dist/resolve.js.map +1 -0
  131. package/dist/schema.d.ts +878 -0
  132. package/dist/schema.js +307 -0
  133. package/dist/schema.js.map +1 -0
  134. package/dist/tokens.d.ts +42 -0
  135. package/dist/tokens.js +90 -0
  136. package/dist/tokens.js.map +1 -0
  137. package/package.json +61 -0
  138. package/registry/README.md +194 -0
  139. package/registry/agents/architecture-reviewer/agent.md +59 -0
  140. package/registry/agents/architecture-reviewer/agent.yaml +7 -0
  141. package/registry/agents/breaking-change-detector/agent.md +83 -0
  142. package/registry/agents/breaking-change-detector/agent.yaml +7 -0
  143. package/registry/agents/security-reviewer/agent.md +63 -0
  144. package/registry/agents/security-reviewer/agent.yaml +7 -0
  145. package/registry/agents/solid-reviewer/agent.md +61 -0
  146. package/registry/agents/solid-reviewer/agent.yaml +7 -0
  147. package/registry/agents/spec-consistency-checker/agent.md +70 -0
  148. package/registry/agents/spec-consistency-checker/agent.yaml +7 -0
  149. package/registry/agents/test-coverage-reviewer/agent.md +67 -0
  150. package/registry/agents/test-coverage-reviewer/agent.yaml +7 -0
  151. package/registry/commands/adr/command.md +80 -0
  152. package/registry/commands/adr/command.yaml +7 -0
  153. package/registry/commands/breaking/command.md +72 -0
  154. package/registry/commands/breaking/command.yaml +7 -0
  155. package/registry/commands/done/command.md +50 -0
  156. package/registry/commands/done/command.yaml +7 -0
  157. package/registry/commands/handoff/command.md +65 -0
  158. package/registry/commands/handoff/command.yaml +7 -0
  159. package/registry/commands/plan/command.md +81 -0
  160. package/registry/commands/plan/command.yaml +7 -0
  161. package/registry/commands/review/command.md +54 -0
  162. package/registry/commands/review/command.yaml +8 -0
  163. package/registry/commands/scope/command.md +45 -0
  164. package/registry/commands/scope/command.yaml +7 -0
  165. package/registry/commands/spec/command.md +81 -0
  166. package/registry/commands/spec/command.yaml +7 -0
  167. package/registry/commands/tasks/command.md +70 -0
  168. package/registry/commands/tasks/command.yaml +7 -0
  169. package/registry/commands/verify/command.md +43 -0
  170. package/registry/commands/verify/command.yaml +7 -0
  171. package/registry/hooks/_lib/config.ps1 +116 -0
  172. package/registry/hooks/_lib/config.sh +143 -0
  173. package/registry/hooks/_lib/defaults.json +76 -0
  174. package/registry/hooks/_lib/json_get.mjs +59 -0
  175. package/registry/hooks/_lib/json_get.py +60 -0
  176. package/registry/hooks/architecture-boundary-check/hook.ps1 +46 -0
  177. package/registry/hooks/architecture-boundary-check/hook.sh +49 -0
  178. package/registry/hooks/architecture-boundary-check/hook.yaml +18 -0
  179. package/registry/hooks/conventional-commit-check/hook.ps1 +68 -0
  180. package/registry/hooks/conventional-commit-check/hook.sh +68 -0
  181. package/registry/hooks/conventional-commit-check/hook.yaml +16 -0
  182. package/registry/hooks/format-on-write/hook.ps1 +36 -0
  183. package/registry/hooks/format-on-write/hook.sh +33 -0
  184. package/registry/hooks/format-on-write/hook.yaml +14 -0
  185. package/registry/hooks/guard-protected-paths/hook.ps1 +34 -0
  186. package/registry/hooks/guard-protected-paths/hook.sh +35 -0
  187. package/registry/hooks/guard-protected-paths/hook.yaml +14 -0
  188. package/registry/hooks/no-secrets/hook.ps1 +67 -0
  189. package/registry/hooks/no-secrets/hook.sh +56 -0
  190. package/registry/hooks/no-secrets/hook.yaml +16 -0
  191. package/registry/skills/adr-write/SKILL.md +127 -0
  192. package/registry/skills/adr-write/references/adr-template.md +143 -0
  193. package/registry/skills/adr-write/references/when-to-write-an-adr.md +74 -0
  194. package/registry/skills/adr-write/skill.yaml +7 -0
  195. package/registry/skills/architecture-guard/SKILL.md +150 -0
  196. package/registry/skills/architecture-guard/references/boundary-patterns.md +142 -0
  197. package/registry/skills/architecture-guard/references/violation-catalog.md +149 -0
  198. package/registry/skills/architecture-guard/skill.yaml +7 -0
  199. package/registry/skills/handoff/SKILL.md +125 -0
  200. package/registry/skills/handoff/references/agent-protocol.md +128 -0
  201. package/registry/skills/handoff/references/handoff-template.md +116 -0
  202. package/registry/skills/handoff/skill.yaml +7 -0
  203. package/registry/skills/onboard/SKILL.md +120 -0
  204. package/registry/skills/onboard/references/discovery-checklist.md +129 -0
  205. package/registry/skills/onboard/references/repo-map-template.md +120 -0
  206. package/registry/skills/onboard/skill.yaml +7 -0
  207. package/registry/skills/perf-budget/SKILL.md +152 -0
  208. package/registry/skills/perf-budget/references/budget-catalog.md +165 -0
  209. package/registry/skills/perf-budget/references/measurement-sources.md +163 -0
  210. package/registry/skills/perf-budget/skill.yaml +7 -0
  211. package/registry/skills/security-review/SKILL.md +145 -0
  212. package/registry/skills/security-review/references/owasp-checklist.md +190 -0
  213. package/registry/skills/security-review/references/secret-patterns.md +110 -0
  214. package/registry/skills/security-review/skill.yaml +7 -0
  215. package/registry/skills/spec-driven/SKILL.md +124 -0
  216. package/registry/skills/spec-driven/references/phase-gates.md +115 -0
  217. package/registry/skills/spec-driven/references/plan-template.md +98 -0
  218. package/registry/skills/spec-driven/references/spec-template.md +101 -0
  219. package/registry/skills/spec-driven/references/tasks-template.md +96 -0
  220. package/registry/skills/spec-driven/skill.yaml +7 -0
  221. package/registry/skills/test-first/SKILL.md +125 -0
  222. package/registry/skills/test-first/references/anti-patterns.md +178 -0
  223. package/registry/skills/test-first/references/test-design.md +156 -0
  224. package/registry/skills/test-first/skill.yaml +7 -0
  225. package/templates/README.md +104 -0
  226. package/templates/agent-kits/core/blueprint.yaml +39 -0
  227. package/templates/agent-kits/core/files/.agent/ACTIVE.md +25 -0
  228. package/templates/agent-kits/core/files/.agent/DECISIONS.md +27 -0
  229. package/templates/agent-kits/core/files/.agent/DELEGATION.md +30 -0
  230. package/templates/agent-kits/core/files/.agent/DONE.md +9 -0
  231. package/templates/agent-kits/core/files/.agent/HANDOFF.md +38 -0
  232. package/templates/agent-kits/core/files/.agent/delegate.mjs +352 -0
  233. package/templates/agent-kits/core/files/.agent/delegation-tools.json +1 -0
  234. package/templates/agent-kits/core/files/.agent/delegation.yaml +33 -0
  235. package/templates/agent-kits/core/files/AGENTS.md +107 -0
  236. package/templates/agent-kits/core/files/docs/ARCHITECTURE.md +26 -0
  237. package/templates/agent-kits/core/files/docs/adr/0001-record-architecture-decisions.md +27 -0
  238. package/templates/agent-kits/core/files/specs/000-template/plan.md +48 -0
  239. package/templates/agent-kits/core/files/specs/000-template/spec.md +45 -0
  240. package/templates/agent-kits/core/files/specs/000-template/tasks.md +21 -0
  241. package/templates/agent-kits/core/files/specs/README.md +32 -0
  242. package/templates/architectures/agentic-tool-loop/blueprint.yaml +137 -0
  243. package/templates/architectures/agentic-tool-loop/files/.importlinter +47 -0
  244. package/templates/architectures/agentic-tool-loop/files/docs/architecture/agentic-tool-loop.node.md +83 -0
  245. package/templates/architectures/agentic-tool-loop/files/docs/architecture/agentic-tool-loop.python.md +93 -0
  246. package/templates/architectures/agentic-tool-loop/files/package.json +6 -0
  247. package/templates/architectures/agentic-tool-loop/files/pyproject.toml +5 -0
  248. package/templates/architectures/agentic-tool-loop/files/scripts/check-agent-loop.mjs +227 -0
  249. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/__init__.py +20 -0
  250. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/loop.py +112 -0
  251. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/model.py +50 -0
  252. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/sandbox.py +62 -0
  253. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/settings.py +69 -0
  254. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/tools/__init__.py +6 -0
  255. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/tools/current_time.py +27 -0
  256. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/tools/registry.py +44 -0
  257. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/tools/spec.py +29 -0
  258. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/tools/write_note.py +36 -0
  259. package/templates/architectures/agentic-tool-loop/files/src/__solutionName.snake__/agent/trace.py +33 -0
  260. package/templates/architectures/agentic-tool-loop/files/src/agent/config.ts +65 -0
  261. package/templates/architectures/agentic-tool-loop/files/src/agent/index.ts +8 -0
  262. package/templates/architectures/agentic-tool-loop/files/src/agent/loop.ts +117 -0
  263. package/templates/architectures/agentic-tool-loop/files/src/agent/model.ts +35 -0
  264. package/templates/architectures/agentic-tool-loop/files/src/agent/sandbox.ts +52 -0
  265. package/templates/architectures/agentic-tool-loop/files/src/agent/tools/current-time.ts +13 -0
  266. package/templates/architectures/agentic-tool-loop/files/src/agent/tools/registry.ts +49 -0
  267. package/templates/architectures/agentic-tool-loop/files/src/agent/tools/types.ts +26 -0
  268. package/templates/architectures/agentic-tool-loop/files/src/agent/tools/write-note.ts +23 -0
  269. package/templates/architectures/agentic-tool-loop/files/src/agent/trace.ts +26 -0
  270. package/templates/architectures/agentic-tool-loop/files/tests/architecture/test_agent_loop.py +167 -0
  271. package/templates/architectures/bff/blueprint.yaml +83 -0
  272. package/templates/architectures/bff/files/docs/architecture/bff.node.md +115 -0
  273. package/templates/architectures/bff/files/docs/architecture/bff.typescript.md +113 -0
  274. package/templates/architectures/bff/files/scripts/check-bff-boundaries.mjs +223 -0
  275. package/templates/architectures/bff/files/src/bff/__primaryClient.kebab__/aggregate.ts +38 -0
  276. package/templates/architectures/bff/files/src/bff/__primaryClient.kebab__/config.ts +30 -0
  277. package/templates/architectures/bff/files/src/bff/__primaryClient.kebab__/dto.ts +21 -0
  278. package/templates/architectures/bff/files/src/bff/__primaryClient.kebab__/index.ts +6 -0
  279. package/templates/architectures/bff/files/src/bff/__primaryClient.kebab__/routes.ts +21 -0
  280. package/templates/architectures/bff/files/src/bff/__secondaryClient.kebab__/aggregate.ts +23 -0
  281. package/templates/architectures/bff/files/src/bff/__secondaryClient.kebab__/config.ts +26 -0
  282. package/templates/architectures/bff/files/src/bff/__secondaryClient.kebab__/dto.ts +16 -0
  283. package/templates/architectures/bff/files/src/bff/__secondaryClient.kebab__/index.ts +6 -0
  284. package/templates/architectures/bff/files/src/bff/__secondaryClient.kebab__/routes.ts +21 -0
  285. package/templates/architectures/bff/files/src/downstream/config.ts +35 -0
  286. package/templates/architectures/bff/files/src/downstream/http-client.ts +41 -0
  287. package/templates/architectures/bff/files/src/downstream/index.ts +9 -0
  288. package/templates/architectures/bff/files/src/downstream/orders-client.ts +23 -0
  289. package/templates/architectures/bff/files/src/downstream/profile-client.ts +18 -0
  290. package/templates/architectures/clean/blueprint.yaml +147 -0
  291. package/templates/architectures/clean/files/.importlinter +35 -0
  292. package/templates/architectures/clean/files/Directory.Packages.props +7 -0
  293. package/templates/architectures/clean/files/__solutionName.dot__.slnx +10 -0
  294. package/templates/architectures/clean/files/docs/architecture/clean.md +87 -0
  295. package/templates/architectures/clean/files/eslint.config.architecture.mjs +27 -0
  296. package/templates/architectures/clean/files/internal/application/doc.go +2 -0
  297. package/templates/architectures/clean/files/internal/application/ports/doc.go +2 -0
  298. package/templates/architectures/clean/files/internal/architecture/architecture_test.go +166 -0
  299. package/templates/architectures/clean/files/internal/architecture/doc.go +3 -0
  300. package/templates/architectures/clean/files/internal/domain/doc.go +2 -0
  301. package/templates/architectures/clean/files/internal/infrastructure/doc.go +2 -0
  302. package/templates/architectures/clean/files/pyproject.toml +2 -0
  303. package/templates/architectures/clean/files/scripts/check-architecture.mjs +68 -0
  304. package/templates/architectures/clean/files/src/__solutionName.dot__.Application/Abstractions/.gitkeep +1 -0
  305. package/templates/architectures/clean/files/src/__solutionName.dot__.Application/AssemblyMarker.cs +10 -0
  306. package/templates/architectures/clean/files/src/__solutionName.dot__.Application/UseCases/.gitkeep +1 -0
  307. package/templates/architectures/clean/files/src/__solutionName.dot__.Application/__solutionName.dot__.Application.csproj +14 -0
  308. package/templates/architectures/clean/files/src/__solutionName.dot__.Domain/AssemblyMarker.cs +10 -0
  309. package/templates/architectures/clean/files/src/__solutionName.dot__.Domain/Entities/.gitkeep +1 -0
  310. package/templates/architectures/clean/files/src/__solutionName.dot__.Domain/Events/.gitkeep +1 -0
  311. package/templates/architectures/clean/files/src/__solutionName.dot__.Domain/ValueObjects/.gitkeep +1 -0
  312. package/templates/architectures/clean/files/src/__solutionName.dot__.Domain/__solutionName.dot__.Domain.csproj +11 -0
  313. package/templates/architectures/clean/files/src/__solutionName.dot__.Infrastructure/AssemblyMarker.cs +10 -0
  314. package/templates/architectures/clean/files/src/__solutionName.dot__.Infrastructure/External/.gitkeep +1 -0
  315. package/templates/architectures/clean/files/src/__solutionName.dot__.Infrastructure/Persistence/.gitkeep +1 -0
  316. package/templates/architectures/clean/files/src/__solutionName.dot__.Infrastructure/__solutionName.dot__.Infrastructure.csproj +14 -0
  317. package/templates/architectures/clean/files/src/__solutionName.snake__/application/__init__.py +1 -0
  318. package/templates/architectures/clean/files/src/__solutionName.snake__/application/ports/__init__.py +1 -0
  319. package/templates/architectures/clean/files/src/__solutionName.snake__/application/use_cases/__init__.py +1 -0
  320. package/templates/architectures/clean/files/src/__solutionName.snake__/domain/__init__.py +1 -0
  321. package/templates/architectures/clean/files/src/__solutionName.snake__/domain/entities/__init__.py +1 -0
  322. package/templates/architectures/clean/files/src/__solutionName.snake__/domain/events/__init__.py +1 -0
  323. package/templates/architectures/clean/files/src/__solutionName.snake__/infrastructure/__init__.py +1 -0
  324. package/templates/architectures/clean/files/src/__solutionName.snake__/infrastructure/external/__init__.py +1 -0
  325. package/templates/architectures/clean/files/src/__solutionName.snake__/infrastructure/persistence/__init__.py +1 -0
  326. package/templates/architectures/clean/files/src/application/ports/README.md +1 -0
  327. package/templates/architectures/clean/files/src/application/use-cases/README.md +1 -0
  328. package/templates/architectures/clean/files/src/domain/README.md +1 -0
  329. package/templates/architectures/clean/files/src/infrastructure/README.md +1 -0
  330. package/templates/architectures/clean/files/tests/__solutionName.dot__.ArchitectureTests/DependencyRuleTests.cs +118 -0
  331. package/templates/architectures/clean/files/tests/__solutionName.dot__.ArchitectureTests/__solutionName.dot__.ArchitectureTests.csproj +27 -0
  332. package/templates/architectures/cqrs/blueprint.yaml +134 -0
  333. package/templates/architectures/cqrs/files/.importlinter +26 -0
  334. package/templates/architectures/cqrs/files/Directory.Packages.props +7 -0
  335. package/templates/architectures/cqrs/files/__solutionName.dot__.slnx +11 -0
  336. package/templates/architectures/cqrs/files/docs/architecture/cqrs.dotnet.md +116 -0
  337. package/templates/architectures/cqrs/files/docs/architecture/cqrs.node.md +117 -0
  338. package/templates/architectures/cqrs/files/docs/architecture/cqrs.python.md +107 -0
  339. package/templates/architectures/cqrs/files/eslint.config.cqrs.mjs +29 -0
  340. package/templates/architectures/cqrs/files/pyproject.toml +2 -0
  341. package/templates/architectures/cqrs/files/scripts/check-cqrs-boundaries.mjs +132 -0
  342. package/templates/architectures/cqrs/files/src/__contextName.kebab__/commands/index.ts +15 -0
  343. package/templates/architectures/cqrs/files/src/__contextName.kebab__/domain/index.ts +10 -0
  344. package/templates/architectures/cqrs/files/src/__contextName.kebab__/queries/index.ts +13 -0
  345. package/templates/architectures/cqrs/files/src/__contextName.kebab__/read-models/index.ts +7 -0
  346. package/templates/architectures/cqrs/files/src/__solutionName.dot__.Abstractions/AssemblyMarker.cs +9 -0
  347. package/templates/architectures/cqrs/files/src/__solutionName.dot__.Abstractions/ICommandHandler.cs +12 -0
  348. package/templates/architectures/cqrs/files/src/__solutionName.dot__.Abstractions/IQueryHandler.cs +10 -0
  349. package/templates/architectures/cqrs/files/src/__solutionName.dot__.Abstractions/__solutionName.dot__.Abstractions.csproj +11 -0
  350. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Commands/AssemblyMarker.cs +9 -0
  351. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Commands/Handlers/.gitkeep +2 -0
  352. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Commands/__solutionName.dot__.__contextName.pascal__.Commands.csproj +15 -0
  353. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Domain/Aggregates/.gitkeep +2 -0
  354. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Domain/AssemblyMarker.cs +9 -0
  355. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Domain/__solutionName.dot__.__contextName.pascal__.Domain.csproj +11 -0
  356. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Queries/AssemblyMarker.cs +9 -0
  357. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Queries/Handlers/.gitkeep +2 -0
  358. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Queries/ReadModels/.gitkeep +2 -0
  359. package/templates/architectures/cqrs/files/src/__solutionName.dot__.__contextName.pascal__.Queries/__solutionName.dot__.__contextName.pascal__.Queries.csproj +14 -0
  360. package/templates/architectures/cqrs/files/src/__solutionName.snake__/__contextName.snake__/__init__.py +6 -0
  361. package/templates/architectures/cqrs/files/src/__solutionName.snake__/__contextName.snake__/commands/__init__.py +15 -0
  362. package/templates/architectures/cqrs/files/src/__solutionName.snake__/__contextName.snake__/domain/__init__.py +9 -0
  363. package/templates/architectures/cqrs/files/src/__solutionName.snake__/__contextName.snake__/queries/__init__.py +14 -0
  364. package/templates/architectures/cqrs/files/src/__solutionName.snake__/__contextName.snake__/read_models/__init__.py +14 -0
  365. package/templates/architectures/cqrs/files/tests/ArchitectureTests/ArchitectureTests.csproj +33 -0
  366. package/templates/architectures/cqrs/files/tests/ArchitectureTests/CqrsBoundaryTests.cs +104 -0
  367. package/templates/architectures/event-driven/blueprint.yaml +163 -0
  368. package/templates/architectures/event-driven/files/.importlinter +43 -0
  369. package/templates/architectures/event-driven/files/Directory.Packages.props +11 -0
  370. package/templates/architectures/event-driven/files/__solutionName.dot__.slnx +11 -0
  371. package/templates/architectures/event-driven/files/docs/architecture/event-driven.dotnet.md +117 -0
  372. package/templates/architectures/event-driven/files/docs/architecture/event-driven.node.md +98 -0
  373. package/templates/architectures/event-driven/files/docs/architecture/event-driven.python.md +100 -0
  374. package/templates/architectures/event-driven/files/scripts/check-event-boundaries.mjs +181 -0
  375. package/templates/architectures/event-driven/files/src/EventCatalog/EventCatalog.csproj +11 -0
  376. package/templates/architectures/event-driven/files/src/EventCatalog/EventContract.cs +36 -0
  377. package/templates/architectures/event-driven/files/src/EventCatalog/EventEnvelope.cs +10 -0
  378. package/templates/architectures/event-driven/files/src/EventCatalog/EventRegistry.cs +16 -0
  379. package/templates/architectures/event-driven/files/src/EventCatalog/EventSchemaException.cs +19 -0
  380. package/templates/architectures/event-driven/files/src/EventCatalog/__eventDomain.pascal__/__firstEvent.pascal__V1.cs +20 -0
  381. package/templates/architectures/event-driven/files/src/EventHandlers/EventHandlers.csproj +14 -0
  382. package/templates/architectures/event-driven/files/src/EventHandlers/__firstHandler.pascal__/__firstHandler.pascal__Handler.cs +32 -0
  383. package/templates/architectures/event-driven/files/src/EventHandlers/__secondHandler.pascal__/__secondHandler.pascal__Handler.cs +30 -0
  384. package/templates/architectures/event-driven/files/src/EventPublishers/EventPublishers.csproj +14 -0
  385. package/templates/architectures/event-driven/files/src/EventPublishers/__eventDomain.pascal__/__eventDomain.pascal__Publisher.cs +27 -0
  386. package/templates/architectures/event-driven/files/src/Messaging/Adapters/InMemoryEventBroker.cs +107 -0
  387. package/templates/architectures/event-driven/files/src/Messaging/BrokerOptions.cs +19 -0
  388. package/templates/architectures/event-driven/files/src/Messaging/IEventBroker.cs +6 -0
  389. package/templates/architectures/event-driven/files/src/Messaging/IEventPublisher.cs +9 -0
  390. package/templates/architectures/event-driven/files/src/Messaging/IEventSubscriber.cs +11 -0
  391. package/templates/architectures/event-driven/files/src/Messaging/Messaging.csproj +18 -0
  392. package/templates/architectures/event-driven/files/src/Messaging/MessagingRegistration.cs +36 -0
  393. package/templates/architectures/event-driven/files/src/__solutionName.snake__/broker/__init__.py +17 -0
  394. package/templates/architectures/event-driven/files/src/__solutionName.snake__/broker/adapters/__init__.py +1 -0
  395. package/templates/architectures/event-driven/files/src/__solutionName.snake__/broker/adapters/in_memory.py +61 -0
  396. package/templates/architectures/event-driven/files/src/__solutionName.snake__/broker/config.py +42 -0
  397. package/templates/architectures/event-driven/files/src/__solutionName.snake__/broker/factory.py +13 -0
  398. package/templates/architectures/event-driven/files/src/__solutionName.snake__/broker/port.py +25 -0
  399. package/templates/architectures/event-driven/files/src/__solutionName.snake__/eventing.py +26 -0
  400. package/templates/architectures/event-driven/files/src/__solutionName.snake__/events/__eventDomain.snake__/__firstEvent.snake__/__init__.py +5 -0
  401. package/templates/architectures/event-driven/files/src/__solutionName.snake__/events/__eventDomain.snake__/__firstEvent.snake__/v1.py +34 -0
  402. package/templates/architectures/event-driven/files/src/__solutionName.snake__/events/__eventDomain.snake__/__init__.py +1 -0
  403. package/templates/architectures/event-driven/files/src/__solutionName.snake__/events/__init__.py +27 -0
  404. package/templates/architectures/event-driven/files/src/__solutionName.snake__/events/contract.py +35 -0
  405. package/templates/architectures/event-driven/files/src/__solutionName.snake__/events/envelope.py +24 -0
  406. package/templates/architectures/event-driven/files/src/__solutionName.snake__/handlers/__firstHandler.snake__/__init__.py +30 -0
  407. package/templates/architectures/event-driven/files/src/__solutionName.snake__/handlers/__init__.py +1 -0
  408. package/templates/architectures/event-driven/files/src/__solutionName.snake__/handlers/__secondHandler.snake__/__init__.py +25 -0
  409. package/templates/architectures/event-driven/files/src/__solutionName.snake__/publishers/__eventDomain.snake__.py +17 -0
  410. package/templates/architectures/event-driven/files/src/__solutionName.snake__/publishers/__init__.py +5 -0
  411. package/templates/architectures/event-driven/files/src/bootstrap/events.ts +24 -0
  412. package/templates/architectures/event-driven/files/src/broker/adapters/in-memory-broker.ts +63 -0
  413. package/templates/architectures/event-driven/files/src/broker/config.ts +39 -0
  414. package/templates/architectures/event-driven/files/src/broker/factory.ts +13 -0
  415. package/templates/architectures/event-driven/files/src/broker/index.ts +6 -0
  416. package/templates/architectures/event-driven/files/src/broker/port.ts +15 -0
  417. package/templates/architectures/event-driven/files/src/events/__eventDomain.kebab__/__firstEvent.kebab__/v1.ts +20 -0
  418. package/templates/architectures/event-driven/files/src/events/contract.ts +36 -0
  419. package/templates/architectures/event-driven/files/src/events/envelope.ts +20 -0
  420. package/templates/architectures/event-driven/files/src/events/index.ts +17 -0
  421. package/templates/architectures/event-driven/files/src/handlers/__firstHandler.kebab__/index.ts +21 -0
  422. package/templates/architectures/event-driven/files/src/handlers/__secondHandler.kebab__/index.ts +17 -0
  423. package/templates/architectures/event-driven/files/src/publishers/__eventDomain.kebab__.publisher.ts +20 -0
  424. package/templates/architectures/event-driven/files/tests/EventArchitectureTests/EventArchitectureTests.csproj +31 -0
  425. package/templates/architectures/event-driven/files/tests/EventArchitectureTests/EventBoundaryTests.cs +121 -0
  426. package/templates/architectures/event-driven/files/tests/architecture/test_event_boundaries.py +161 -0
  427. package/templates/architectures/feature-sliced-design/blueprint.yaml +121 -0
  428. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/app/.gitkeep +1 -0
  429. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/entities/.gitkeep +1 -0
  430. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/features/.gitkeep +1 -0
  431. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/pages/.gitkeep +1 -0
  432. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/shared/api/index.ts +3 -0
  433. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/shared/config/index.ts +3 -0
  434. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/shared/lib/index.ts +3 -0
  435. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/shared/ui/index.ts +3 -0
  436. package/templates/architectures/feature-sliced-design/files/apps/__appName.kebab__/src/widgets/.gitkeep +1 -0
  437. package/templates/architectures/feature-sliced-design/files/docs/architecture.md +148 -0
  438. package/templates/architectures/feature-sliced-design/files/package.json +6 -0
  439. package/templates/architectures/feature-sliced-design/files/scripts/check-fsd-boundaries.mjs +210 -0
  440. package/templates/architectures/feature-sliced-design/files/src/_app/.gitkeep +1 -0
  441. package/templates/architectures/feature-sliced-design/files/src/_pages/.gitkeep +1 -0
  442. package/templates/architectures/feature-sliced-design/files/src/app/.gitkeep +1 -0
  443. package/templates/architectures/feature-sliced-design/files/src/entities/.gitkeep +1 -0
  444. package/templates/architectures/feature-sliced-design/files/src/features/.gitkeep +1 -0
  445. package/templates/architectures/feature-sliced-design/files/src/pages/.gitkeep +1 -0
  446. package/templates/architectures/feature-sliced-design/files/src/shared/api/index.ts +3 -0
  447. package/templates/architectures/feature-sliced-design/files/src/shared/config/index.ts +3 -0
  448. package/templates/architectures/feature-sliced-design/files/src/shared/lib/index.ts +3 -0
  449. package/templates/architectures/feature-sliced-design/files/src/shared/ui/index.ts +3 -0
  450. package/templates/architectures/feature-sliced-design/files/src/widgets/.gitkeep +1 -0
  451. package/templates/architectures/feature-sliced-design/files/steiger.config.js +21 -0
  452. package/templates/architectures/hexagonal/blueprint.yaml +146 -0
  453. package/templates/architectures/hexagonal/files/.importlinter +33 -0
  454. package/templates/architectures/hexagonal/files/Directory.Packages.props +8 -0
  455. package/templates/architectures/hexagonal/files/__solutionName.dot__.slnx +13 -0
  456. package/templates/architectures/hexagonal/files/docs/architecture/hexagonal.md +102 -0
  457. package/templates/architectures/hexagonal/files/internal/adapters/inbound/rest/doc.go +2 -0
  458. package/templates/architectures/hexagonal/files/internal/adapters/outbound/memory/doc.go +2 -0
  459. package/templates/architectures/hexagonal/files/internal/adapters/outbound/postgres/doc.go +2 -0
  460. package/templates/architectures/hexagonal/files/internal/application/doc.go +2 -0
  461. package/templates/architectures/hexagonal/files/internal/architecture/architecture_test.go +150 -0
  462. package/templates/architectures/hexagonal/files/internal/architecture/doc.go +2 -0
  463. package/templates/architectures/hexagonal/files/internal/bootstrap/doc.go +2 -0
  464. package/templates/architectures/hexagonal/files/internal/domain/doc.go +2 -0
  465. package/templates/architectures/hexagonal/files/internal/ports/inbound/doc.go +2 -0
  466. package/templates/architectures/hexagonal/files/internal/ports/outbound/doc.go +2 -0
  467. package/templates/architectures/hexagonal/files/pyproject.toml +2 -0
  468. package/templates/architectures/hexagonal/files/scripts/check-architecture.mjs +104 -0
  469. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Adapters.Inbound.Http/HttpAdapterMarker.cs +4 -0
  470. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Adapters.Inbound.Http/__solutionName.dot__.Adapters.Inbound.Http.csproj +15 -0
  471. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Adapters.Outbound.InMemory/InMemoryAdapterMarker.cs +4 -0
  472. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Adapters.Outbound.InMemory/__solutionName.dot__.Adapters.Outbound.InMemory.csproj +15 -0
  473. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Adapters.Outbound.Persistence/PersistenceAdapterMarker.cs +4 -0
  474. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Adapters.Outbound.Persistence/__solutionName.dot__.Adapters.Outbound.Persistence.csproj +15 -0
  475. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Application/ApplicationMarker.cs +4 -0
  476. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Application/Ports/Inbound/.gitkeep +1 -0
  477. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Application/Ports/Outbound/.gitkeep +1 -0
  478. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Application/UseCases/.gitkeep +1 -0
  479. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Application/__solutionName.dot__.Application.csproj +15 -0
  480. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Bootstrap/CompositionRoot.cs +8 -0
  481. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Bootstrap/__solutionName.dot__.Bootstrap.csproj +18 -0
  482. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Domain/DomainMarker.cs +4 -0
  483. package/templates/architectures/hexagonal/files/src/__solutionName.dot__.Domain/__solutionName.dot__.Domain.csproj +12 -0
  484. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/adapters/__init__.py +1 -0
  485. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/adapters/inbound/__init__.py +1 -0
  486. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/adapters/inbound/http/__init__.py +1 -0
  487. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/adapters/outbound/__init__.py +1 -0
  488. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/adapters/outbound/in_memory/__init__.py +1 -0
  489. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/adapters/outbound/persistence/__init__.py +1 -0
  490. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/application/__init__.py +1 -0
  491. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/bootstrap/__init__.py +1 -0
  492. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/domain/__init__.py +1 -0
  493. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/ports/__init__.py +1 -0
  494. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/ports/inbound/__init__.py +1 -0
  495. package/templates/architectures/hexagonal/files/src/__solutionName.snake__/ports/outbound/__init__.py +1 -0
  496. package/templates/architectures/hexagonal/files/src/adapters/inbound/http/index.ts +2 -0
  497. package/templates/architectures/hexagonal/files/src/adapters/outbound/in-memory/index.ts +2 -0
  498. package/templates/architectures/hexagonal/files/src/adapters/outbound/persistence/index.ts +2 -0
  499. package/templates/architectures/hexagonal/files/src/application/index.ts +2 -0
  500. package/templates/architectures/hexagonal/files/src/bootstrap/index.ts +2 -0
  501. package/templates/architectures/hexagonal/files/src/domain/index.ts +2 -0
  502. package/templates/architectures/hexagonal/files/src/ports/inbound/index.ts +2 -0
  503. package/templates/architectures/hexagonal/files/src/ports/outbound/index.ts +2 -0
  504. package/templates/architectures/hexagonal/files/tests/ArchitectureTests/ArchitectureTests.csproj +34 -0
  505. package/templates/architectures/hexagonal/files/tests/ArchitectureTests/HexagonBoundaryTests.cs +135 -0
  506. package/templates/architectures/lakehouse/blueprint.yaml +103 -0
  507. package/templates/architectures/lakehouse/files/.importlinter +51 -0
  508. package/templates/architectures/lakehouse/files/docs/architecture/lakehouse.python.md +134 -0
  509. package/templates/architectures/lakehouse/files/pyproject.toml +5 -0
  510. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/__init__.py +20 -0
  511. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/catalog/__init__.py +21 -0
  512. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/catalog/_delta.py +155 -0
  513. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/catalog/_iceberg.py +214 -0
  514. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/maintenance/__init__.py +9 -0
  515. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/maintenance/__main__.py +31 -0
  516. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/maintenance/jobs.py +38 -0
  517. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/ports.py +58 -0
  518. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/queries/__init__.py +13 -0
  519. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/queries/reads.py +30 -0
  520. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/schema.py +66 -0
  521. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/settings.py +61 -0
  522. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/tables/__firstTable.snake__.py +22 -0
  523. package/templates/architectures/lakehouse/files/src/__solutionName.snake__/lakehouse/tables/__init__.py +28 -0
  524. package/templates/architectures/lakehouse/files/tests/architecture/test_lakehouse_boundaries.py +155 -0
  525. package/templates/architectures/layered/blueprint.yaml +159 -0
  526. package/templates/architectures/layered/files/.importlinter +18 -0
  527. package/templates/architectures/layered/files/Directory.Build.targets +10 -0
  528. package/templates/architectures/layered/files/Directory.Packages.props +7 -0
  529. package/templates/architectures/layered/files/__solutionName.dot__.slnx +9 -0
  530. package/templates/architectures/layered/files/architecture.layers.json +19 -0
  531. package/templates/architectures/layered/files/docs/architecture/layered.md +94 -0
  532. package/templates/architectures/layered/files/internal/architecture/doc.go +3 -0
  533. package/templates/architectures/layered/files/internal/architecture/layers_test.go +138 -0
  534. package/templates/architectures/layered/files/internal/business/doc.go +3 -0
  535. package/templates/architectures/layered/files/internal/data/doc.go +3 -0
  536. package/templates/architectures/layered/files/internal/presentation/doc.go +4 -0
  537. package/templates/architectures/layered/files/pyproject.toml +2 -0
  538. package/templates/architectures/layered/files/scripts/check-layers.mjs +125 -0
  539. package/templates/architectures/layered/files/src/__solutionName.dot__.Business/AssemblyMarker.cs +7 -0
  540. package/templates/architectures/layered/files/src/__solutionName.dot__.Business/__solutionName.dot__.Business.csproj +15 -0
  541. package/templates/architectures/layered/files/src/__solutionName.dot__.Data/AssemblyMarker.cs +7 -0
  542. package/templates/architectures/layered/files/src/__solutionName.dot__.Data/__solutionName.dot__.Data.csproj +10 -0
  543. package/templates/architectures/layered/files/src/__solutionName.snake__/business/__init__.py +1 -0
  544. package/templates/architectures/layered/files/src/__solutionName.snake__/data/__init__.py +1 -0
  545. package/templates/architectures/layered/files/src/__solutionName.snake__/presentation/__init__.py +1 -0
  546. package/templates/architectures/layered/files/src/business/README.md +1 -0
  547. package/templates/architectures/layered/files/src/data/README.md +1 -0
  548. package/templates/architectures/layered/files/src/presentation/README.md +1 -0
  549. package/templates/architectures/layered/files/src/shared/README.md +1 -0
  550. package/templates/architectures/layered/files/tests/__solutionName.dot__.ArchitectureTests/LayerBoundaryTests.cs +151 -0
  551. package/templates/architectures/layered/files/tests/__solutionName.dot__.ArchitectureTests/__solutionName.dot__.ArchitectureTests.csproj +27 -0
  552. package/templates/architectures/llm-workflow/blueprint.yaml +129 -0
  553. package/templates/architectures/llm-workflow/files/.importlinter +34 -0
  554. package/templates/architectures/llm-workflow/files/__promptsDir__/README.md +26 -0
  555. package/templates/architectures/llm-workflow/files/__promptsDir__/__firstStep.kebab__/__promptVersion__.md +7 -0
  556. package/templates/architectures/llm-workflow/files/docs/architecture/llm-workflow.python.md +133 -0
  557. package/templates/architectures/llm-workflow/files/docs/architecture/llm-workflow.typescript.md +124 -0
  558. package/templates/architectures/llm-workflow/files/package.json +9 -0
  559. package/templates/architectures/llm-workflow/files/scripts/check-llm-workflow.mjs +200 -0
  560. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/__init__.py +5 -0
  561. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/chains/__init__.py +5 -0
  562. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/chains/__workflowName.snake__.py +19 -0
  563. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/evals/__init__.py +1 -0
  564. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/evals/assertions.py +82 -0
  565. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/evals/goldens.jsonl +4 -0
  566. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/evals/runner.py +64 -0
  567. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/parallel/__init__.py +5 -0
  568. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/parallel/gather.py +28 -0
  569. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/ports/__init__.py +38 -0
  570. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/ports/llm.py +41 -0
  571. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/ports/stub.py +27 -0
  572. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/prompts.py +22 -0
  573. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/routing/__init__.py +5 -0
  574. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/routing/route.py +47 -0
  575. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/settings.py +60 -0
  576. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/steps/__firstStep.snake__.py +24 -0
  577. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/steps/__init__.py +6 -0
  578. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/steps/normalize.py +11 -0
  579. package/templates/architectures/llm-workflow/files/src/__solutionName.snake__/workflow/types.py +40 -0
  580. package/templates/architectures/llm-workflow/files/src/workflow/chains/__workflowName.kebab__.ts +14 -0
  581. package/templates/architectures/llm-workflow/files/src/workflow/evals/assert.ts +59 -0
  582. package/templates/architectures/llm-workflow/files/src/workflow/evals/goldens.jsonl +4 -0
  583. package/templates/architectures/llm-workflow/files/src/workflow/evals/run.ts +60 -0
  584. package/templates/architectures/llm-workflow/files/src/workflow/parallel/gather.ts +25 -0
  585. package/templates/architectures/llm-workflow/files/src/workflow/ports/index.ts +34 -0
  586. package/templates/architectures/llm-workflow/files/src/workflow/ports/llm.ts +33 -0
  587. package/templates/architectures/llm-workflow/files/src/workflow/ports/stub.ts +23 -0
  588. package/templates/architectures/llm-workflow/files/src/workflow/prompts.ts +27 -0
  589. package/templates/architectures/llm-workflow/files/src/workflow/routing/route.ts +38 -0
  590. package/templates/architectures/llm-workflow/files/src/workflow/settings.ts +44 -0
  591. package/templates/architectures/llm-workflow/files/src/workflow/steps/__firstStep.kebab__.ts +19 -0
  592. package/templates/architectures/llm-workflow/files/src/workflow/steps/index.ts +3 -0
  593. package/templates/architectures/llm-workflow/files/src/workflow/steps/normalize.ts +8 -0
  594. package/templates/architectures/llm-workflow/files/src/workflow/types.ts +29 -0
  595. package/templates/architectures/llm-workflow/files/tests/test_workflow_boundaries.py +171 -0
  596. package/templates/architectures/llm-workflow/files/tests/test_workflow_goldens.py +30 -0
  597. package/templates/architectures/medallion/blueprint.yaml +91 -0
  598. package/templates/architectures/medallion/files/.importlinter +31 -0
  599. package/templates/architectures/medallion/files/contracts/bronze.contract.toml +16 -0
  600. package/templates/architectures/medallion/files/contracts/gold.contract.toml +21 -0
  601. package/templates/architectures/medallion/files/contracts/silver.contract.toml +31 -0
  602. package/templates/architectures/medallion/files/docs/architecture/medallion.python.md +104 -0
  603. package/templates/architectures/medallion/files/pyproject.toml +2 -0
  604. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/__init__.py +5 -0
  605. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/bronze/__init__.py +5 -0
  606. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/bronze/ingest.py +41 -0
  607. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/config.py +48 -0
  608. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/contracts.py +166 -0
  609. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/gold/__init__.py +5 -0
  610. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/gold/aggregate.py +40 -0
  611. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/io.py +28 -0
  612. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/run.py +40 -0
  613. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/silver/__init__.py +6 -0
  614. package/templates/architectures/medallion/files/src/__solutionName.snake__/pipelines/silver/conform.py +53 -0
  615. package/templates/architectures/medallion/files/tests/architecture/test_layer_contracts.py +72 -0
  616. package/templates/architectures/medallion/files/tests/architecture/test_medallion_boundaries.py +166 -0
  617. package/templates/architectures/micro-frontends/blueprint.yaml +124 -0
  618. package/templates/architectures/micro-frontends/files/apps/host/package.json +10 -0
  619. package/templates/architectures/micro-frontends/files/apps/host/remotes.example.json +9 -0
  620. package/templates/architectures/micro-frontends/files/apps/host/src/config.ts +34 -0
  621. package/templates/architectures/micro-frontends/files/apps/host/src/loaders/import-map.ts +34 -0
  622. package/templates/architectures/micro-frontends/files/apps/host/src/loaders/module-federation.ts +29 -0
  623. package/templates/architectures/micro-frontends/files/apps/host/src/remote-loader.ts +45 -0
  624. package/templates/architectures/micro-frontends/files/apps/remotes/__remoteName.kebab__/module-federation.config.mjs +19 -0
  625. package/templates/architectures/micro-frontends/files/apps/remotes/__remoteName.kebab__/package.json +15 -0
  626. package/templates/architectures/micro-frontends/files/apps/remotes/__remoteName.kebab__/src/config.ts +28 -0
  627. package/templates/architectures/micro-frontends/files/apps/remotes/__remoteName.kebab__/src/index.ts +5 -0
  628. package/templates/architectures/micro-frontends/files/apps/remotes/__remoteName.kebab__/src/mount.ts +32 -0
  629. package/templates/architectures/micro-frontends/files/docs/architecture/micro-frontends.md +161 -0
  630. package/templates/architectures/micro-frontends/files/package.json +14 -0
  631. package/templates/architectures/micro-frontends/files/packages/design-system/README.md +27 -0
  632. package/templates/architectures/micro-frontends/files/packages/design-system/package.json +11 -0
  633. package/templates/architectures/micro-frontends/files/packages/design-system/src/index.ts +10 -0
  634. package/templates/architectures/micro-frontends/files/packages/design-system/src/tokens.ts +20 -0
  635. package/templates/architectures/micro-frontends/files/packages/host-contract/package.json +11 -0
  636. package/templates/architectures/micro-frontends/files/packages/host-contract/src/index.ts +18 -0
  637. package/templates/architectures/micro-frontends/files/scripts/check-mfe-boundaries.mjs +199 -0
  638. package/templates/architectures/microservices/blueprint.yaml +160 -0
  639. package/templates/architectures/microservices/files/.importlinter +22 -0
  640. package/templates/architectures/microservices/files/Directory.Packages.props +8 -0
  641. package/templates/architectures/microservices/files/__solutionName.dot__.slnx +9 -0
  642. package/templates/architectures/microservices/files/contracts/__firstService.kebab__/package.json +8 -0
  643. package/templates/architectures/microservices/files/contracts/__firstService.kebab__/src/index.ts +32 -0
  644. package/templates/architectures/microservices/files/contracts/__firstService.lower__/contract.go +35 -0
  645. package/templates/architectures/microservices/files/contracts/__solutionName.pascal__.Contracts.__firstService.pascal__/__firstService.pascal__Contract.cs +26 -0
  646. package/templates/architectures/microservices/files/contracts/__solutionName.pascal__.Contracts.__firstService.pascal__/__solutionName.pascal__.Contracts.__firstService.pascal__.csproj +11 -0
  647. package/templates/architectures/microservices/files/deploy/__firstService.kebab__/Dockerfile +16 -0
  648. package/templates/architectures/microservices/files/docs/architecture/microservices.dotnet.md +91 -0
  649. package/templates/architectures/microservices/files/docs/architecture/microservices.go.md +77 -0
  650. package/templates/architectures/microservices/files/docs/architecture/microservices.node.md +88 -0
  651. package/templates/architectures/microservices/files/docs/architecture/microservices.python.md +92 -0
  652. package/templates/architectures/microservices/files/internal/architecture/boundary_test.go +139 -0
  653. package/templates/architectures/microservices/files/package.json +9 -0
  654. package/templates/architectures/microservices/files/pyproject.toml +2 -0
  655. package/templates/architectures/microservices/files/scripts/check-service-boundaries.mjs +200 -0
  656. package/templates/architectures/microservices/files/services/__firstService.kebab__/Dockerfile +19 -0
  657. package/templates/architectures/microservices/files/services/__firstService.kebab__/package.json +9 -0
  658. package/templates/architectures/microservices/files/services/__firstService.kebab__/src/config.ts +50 -0
  659. package/templates/architectures/microservices/files/services/__firstService.kebab__/src/index.ts +26 -0
  660. package/templates/architectures/microservices/files/services/__firstService.lower__/Dockerfile +18 -0
  661. package/templates/architectures/microservices/files/services/__firstService.lower__/internal/config/config.go +45 -0
  662. package/templates/architectures/microservices/files/services/__firstService.lower__/main.go +23 -0
  663. package/templates/architectures/microservices/files/services/__solutionName.pascal__.Services.__firstService.pascal__/Dockerfile +17 -0
  664. package/templates/architectures/microservices/files/services/__solutionName.pascal__.Services.__firstService.pascal__/ServiceAssemblyMarker.cs +10 -0
  665. package/templates/architectures/microservices/files/services/__solutionName.pascal__.Services.__firstService.pascal__/ServiceOptions.cs +28 -0
  666. package/templates/architectures/microservices/files/services/__solutionName.pascal__.Services.__firstService.pascal__/__solutionName.pascal__.Services.__firstService.pascal__.csproj +14 -0
  667. package/templates/architectures/microservices/files/src/__solutionName.snake__/contracts/__firstService.snake__/__init__.py +42 -0
  668. package/templates/architectures/microservices/files/src/__solutionName.snake__/contracts/__init__.py +5 -0
  669. package/templates/architectures/microservices/files/src/__solutionName.snake__/services/__firstService.snake__/__init__.py +5 -0
  670. package/templates/architectures/microservices/files/src/__solutionName.snake__/services/__firstService.snake__/config.py +54 -0
  671. package/templates/architectures/microservices/files/src/__solutionName.snake__/services/__firstService.snake__/service.py +21 -0
  672. package/templates/architectures/microservices/files/src/__solutionName.snake__/services/__init__.py +5 -0
  673. package/templates/architectures/microservices/files/tests/ArchitectureTests/ArchitectureTests.csproj +29 -0
  674. package/templates/architectures/microservices/files/tests/ArchitectureTests/ServiceBoundaryTests.cs +102 -0
  675. package/templates/architectures/microservices/files/tests/architecture/test_service_boundaries.py +120 -0
  676. package/templates/architectures/modular-monolith/blueprint.yaml +111 -0
  677. package/templates/architectures/modular-monolith/files/.importlinter +22 -0
  678. package/templates/architectures/modular-monolith/files/Directory.Packages.props +9 -0
  679. package/templates/architectures/modular-monolith/files/__solutionName.dot__.slnx +9 -0
  680. package/templates/architectures/modular-monolith/files/docs/architecture/modular-monolith.dotnet.md +54 -0
  681. package/templates/architectures/modular-monolith/files/docs/architecture/modular-monolith.go.md +50 -0
  682. package/templates/architectures/modular-monolith/files/docs/architecture/modular-monolith.node.md +56 -0
  683. package/templates/architectures/modular-monolith/files/docs/architecture/modular-monolith.python.md +54 -0
  684. package/templates/architectures/modular-monolith/files/internal/architecture/boundary_test.go +151 -0
  685. package/templates/architectures/modular-monolith/files/internal/modules/__moduleName.lower__/__moduleName.lower__.go +56 -0
  686. package/templates/architectures/modular-monolith/files/internal/modules/__moduleName.lower__/internal/store/store.go +12 -0
  687. package/templates/architectures/modular-monolith/files/internal/shared/events/bus.go +60 -0
  688. package/templates/architectures/modular-monolith/files/scripts/check-module-boundaries.mjs +185 -0
  689. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.Modules.__moduleName.pascal__/Api/I__moduleName.pascal__Module.cs +14 -0
  690. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.Modules.__moduleName.pascal__/Api/__moduleName.pascal__Events.cs +6 -0
  691. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.Modules.__moduleName.pascal__/Api/__moduleName.pascal__ModuleRegistration.cs +18 -0
  692. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.Modules.__moduleName.pascal__/Internal/__moduleName.pascal__Service.cs +19 -0
  693. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.Modules.__moduleName.pascal__/__solutionName.dot__.Modules.__moduleName.pascal__.csproj +16 -0
  694. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.SharedKernel/Events/EventBusRegistration.cs +14 -0
  695. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.SharedKernel/Events/IEventBus.cs +15 -0
  696. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.SharedKernel/Events/IIntegrationEvent.cs +8 -0
  697. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.SharedKernel/Events/InProcessEventBus.cs +23 -0
  698. package/templates/architectures/modular-monolith/files/src/__solutionName.dot__.SharedKernel/__solutionName.dot__.SharedKernel.csproj +12 -0
  699. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/modules/__init__.py +1 -0
  700. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/modules/__moduleName.snake__/__init__.py +1 -0
  701. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/modules/__moduleName.snake__/api/__init__.py +15 -0
  702. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/modules/__moduleName.snake__/api/contracts.py +27 -0
  703. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/modules/__moduleName.snake__/api/factory.py +11 -0
  704. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/modules/__moduleName.snake__/internal/__init__.py +1 -0
  705. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/modules/__moduleName.snake__/internal/service.py +20 -0
  706. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/shared/__init__.py +1 -0
  707. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/shared/events/__init__.py +3 -0
  708. package/templates/architectures/modular-monolith/files/src/__solutionName.snake__/shared/events/bus.py +43 -0
  709. package/templates/architectures/modular-monolith/files/src/modules/__moduleName.kebab__/api/contracts.ts +19 -0
  710. package/templates/architectures/modular-monolith/files/src/modules/__moduleName.kebab__/api/index.ts +18 -0
  711. package/templates/architectures/modular-monolith/files/src/modules/__moduleName.kebab__/internal/__moduleName.kebab__.service.ts +24 -0
  712. package/templates/architectures/modular-monolith/files/src/shared/events/event-bus.ts +34 -0
  713. package/templates/architectures/modular-monolith/files/src/shared/events/index.ts +2 -0
  714. package/templates/architectures/modular-monolith/files/tests/__solutionName.dot__.ArchitectureTests/ModuleBoundaryTests.cs +102 -0
  715. package/templates/architectures/modular-monolith/files/tests/__solutionName.dot__.ArchitectureTests/__solutionName.dot__.ArchitectureTests.csproj +30 -0
  716. package/templates/architectures/modular-monolith/files/tests/architecture/test_module_boundaries.py +114 -0
  717. package/templates/architectures/monolith/blueprint.yaml +141 -0
  718. package/templates/architectures/monolith/files/.importlinter +14 -0
  719. package/templates/architectures/monolith/files/Directory.Packages.props +8 -0
  720. package/templates/architectures/monolith/files/__solutionName.dot__.slnx +5 -0
  721. package/templates/architectures/monolith/files/docs/architecture/monolith.dotnet.md +78 -0
  722. package/templates/architectures/monolith/files/docs/architecture/monolith.go.md +69 -0
  723. package/templates/architectures/monolith/files/docs/architecture/monolith.node.md +70 -0
  724. package/templates/architectures/monolith/files/docs/architecture/monolith.python.md +71 -0
  725. package/templates/architectures/monolith/files/internal/architecture/boundary_test.go +141 -0
  726. package/templates/architectures/monolith/files/internal/features/__featureName.lower__/__featureName.lower__.go +37 -0
  727. package/templates/architectures/monolith/files/internal/features/__featureName.lower__/internal/store/store.go +14 -0
  728. package/templates/architectures/monolith/files/internal/features/features.go +18 -0
  729. package/templates/architectures/monolith/files/internal/shared/apperr/apperr.go +17 -0
  730. package/templates/architectures/monolith/files/pyproject.toml +2 -0
  731. package/templates/architectures/monolith/files/scripts/check-monolith-boundaries.mjs +187 -0
  732. package/templates/architectures/monolith/files/src/__solutionName.dot__.Api/Features/__featureName.pascal__/Internal/__featureName.pascal__Service.cs +12 -0
  733. package/templates/architectures/monolith/files/src/__solutionName.dot__.Api/Features/__featureName.pascal__/__featureName.pascal__Feature.cs +13 -0
  734. package/templates/architectures/monolith/files/src/__solutionName.dot__.Api/Features/__featureName.pascal__/__featureName.pascal__Registration.cs +13 -0
  735. package/templates/architectures/monolith/files/src/__solutionName.dot__.Api/Kernel/AppException.cs +30 -0
  736. package/templates/architectures/monolith/files/src/__solutionName.pascal__.Api/Features/__featureName.pascal__/Internal/__featureName.pascal__Service.cs +12 -0
  737. package/templates/architectures/monolith/files/src/__solutionName.pascal__.Api/Features/__featureName.pascal__/__featureName.pascal__Feature.cs +13 -0
  738. package/templates/architectures/monolith/files/src/__solutionName.pascal__.Api/Features/__featureName.pascal__/__featureName.pascal__Registration.cs +13 -0
  739. package/templates/architectures/monolith/files/src/__solutionName.pascal__.Api/Kernel/AppException.cs +30 -0
  740. package/templates/architectures/monolith/files/src/__solutionName.snake__/features/__featureName.snake__/__init__.py +31 -0
  741. package/templates/architectures/monolith/files/src/__solutionName.snake__/features/__featureName.snake__/service.py +22 -0
  742. package/templates/architectures/monolith/files/src/__solutionName.snake__/features/__init__.py +14 -0
  743. package/templates/architectures/monolith/files/src/__solutionName.snake__/shared/__init__.py +11 -0
  744. package/templates/architectures/monolith/files/src/__solutionName.snake__/shared/errors.py +13 -0
  745. package/templates/architectures/monolith/files/src/features/__featureName.kebab__/__featureName.kebab__.service.ts +15 -0
  746. package/templates/architectures/monolith/files/src/features/__featureName.kebab__/index.ts +20 -0
  747. package/templates/architectures/monolith/files/src/features/index.ts +11 -0
  748. package/templates/architectures/monolith/files/src/shared/errors.ts +13 -0
  749. package/templates/architectures/monolith/files/src/shared/index.ts +7 -0
  750. package/templates/architectures/monolith/files/tests/ArchitectureTests/ArchitectureTests.csproj +32 -0
  751. package/templates/architectures/monolith/files/tests/ArchitectureTests/FeatureBoundaryTests.cs +129 -0
  752. package/templates/architectures/monolith/files/tests/architecture/test_monolith_boundaries.py +136 -0
  753. package/templates/architectures/multi-agent/blueprint.yaml +97 -0
  754. package/templates/architectures/multi-agent/files/.importlinter +36 -0
  755. package/templates/architectures/multi-agent/files/docs/architecture/multi-agent.node.md +110 -0
  756. package/templates/architectures/multi-agent/files/docs/architecture/multi-agent.python.md +94 -0
  757. package/templates/architectures/multi-agent/files/docs/architecture/multi-agent.typescript.md +102 -0
  758. package/templates/architectures/multi-agent/files/pyproject.toml +2 -0
  759. package/templates/architectures/multi-agent/files/scripts/check-agent-boundaries.mjs +207 -0
  760. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/__init__.py +5 -0
  761. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/config.py +52 -0
  762. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/contracts.py +62 -0
  763. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/orchestrator/__init__.py +9 -0
  764. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/orchestrator/budget.py +45 -0
  765. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/orchestrator/fanout.py +63 -0
  766. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/orchestrator/lead.py +92 -0
  767. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/runtime/__init__.py +5 -0
  768. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/runtime/runner.py +48 -0
  769. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/workers/__init__.py +27 -0
  770. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/workers/__workerName.snake__/__init__.py +9 -0
  771. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/workers/__workerName.snake__/prompt.py +31 -0
  772. package/templates/architectures/multi-agent/files/src/__solutionName.snake__/agents/workers/__workerName.snake__/worker.py +28 -0
  773. package/templates/architectures/multi-agent/files/src/agents/config.ts +46 -0
  774. package/templates/architectures/multi-agent/files/src/agents/contracts/index.ts +4 -0
  775. package/templates/architectures/multi-agent/files/src/agents/contracts/result.ts +50 -0
  776. package/templates/architectures/multi-agent/files/src/agents/contracts/task.ts +19 -0
  777. package/templates/architectures/multi-agent/files/src/agents/orchestrator/budget.ts +51 -0
  778. package/templates/architectures/multi-agent/files/src/agents/orchestrator/fanout.ts +67 -0
  779. package/templates/architectures/multi-agent/files/src/agents/orchestrator/index.ts +4 -0
  780. package/templates/architectures/multi-agent/files/src/agents/orchestrator/lead.ts +77 -0
  781. package/templates/architectures/multi-agent/files/src/agents/runtime/index.ts +3 -0
  782. package/templates/architectures/multi-agent/files/src/agents/runtime/runner.ts +36 -0
  783. package/templates/architectures/multi-agent/files/src/agents/workers/README.md +13 -0
  784. package/templates/architectures/multi-agent/files/src/agents/workers/__workerName.kebab__/prompt.ts +22 -0
  785. package/templates/architectures/multi-agent/files/src/agents/workers/__workerName.kebab__/worker.ts +25 -0
  786. package/templates/architectures/multi-agent/files/src/agents/workers/index.ts +15 -0
  787. package/templates/architectures/multi-agent/files/tests/architecture/test_agent_boundaries.py +184 -0
  788. package/templates/architectures/mvc-mvvm/blueprint.yaml +156 -0
  789. package/templates/architectures/mvc-mvvm/files/.importlinter +25 -0
  790. package/templates/architectures/mvc-mvvm/files/Directory.Packages.props +8 -0
  791. package/templates/architectures/mvc-mvvm/files/__solutionName.dot__.slnx +8 -0
  792. package/templates/architectures/mvc-mvvm/files/docs/architecture/mvc-mvvm.dotnet.md +84 -0
  793. package/templates/architectures/mvc-mvvm/files/docs/architecture/mvc-mvvm.python.md +69 -0
  794. package/templates/architectures/mvc-mvvm/files/docs/architecture/mvc-mvvm.typescript.md +85 -0
  795. package/templates/architectures/mvc-mvvm/files/scripts/check-mvvm-boundaries.mjs +234 -0
  796. package/templates/architectures/mvc-mvvm/files/src/__solutionName.dot__.Presentation/Models/__firstScreen.pascal__.cs +8 -0
  797. package/templates/architectures/mvc-mvvm/files/src/__solutionName.dot__.Presentation/ViewModels/RelayCommand.cs +18 -0
  798. package/templates/architectures/mvc-mvvm/files/src/__solutionName.dot__.Presentation/ViewModels/ViewModelBase.cs +27 -0
  799. package/templates/architectures/mvc-mvvm/files/src/__solutionName.dot__.Presentation/ViewModels/__firstScreen.pascal__ViewModel.cs +55 -0
  800. package/templates/architectures/mvc-mvvm/files/src/__solutionName.dot__.Presentation/Views/README.md +12 -0
  801. package/templates/architectures/mvc-mvvm/files/src/__solutionName.dot__.Presentation/__solutionName.dot__.Presentation.csproj +11 -0
  802. package/templates/architectures/mvc-mvvm/files/src/__solutionName.snake__/controllers/__firstScreen.snake___controller.py +17 -0
  803. package/templates/architectures/mvc-mvvm/files/src/__solutionName.snake__/controllers/__init__.py +5 -0
  804. package/templates/architectures/mvc-mvvm/files/src/__solutionName.snake__/models/__firstScreen.snake__.py +13 -0
  805. package/templates/architectures/mvc-mvvm/files/src/__solutionName.snake__/models/__init__.py +5 -0
  806. package/templates/architectures/mvc-mvvm/files/src/__solutionName.snake__/models/repository.py +17 -0
  807. package/templates/architectures/mvc-mvvm/files/src/__solutionName.snake__/views/__firstScreen.snake___view.py +17 -0
  808. package/templates/architectures/mvc-mvvm/files/src/__solutionName.snake__/views/__init__.py +6 -0
  809. package/templates/architectures/mvc-mvvm/files/src/models/index.ts +4 -0
  810. package/templates/architectures/mvc-mvvm/files/src/viewmodels/index.ts +12 -0
  811. package/templates/architectures/mvc-mvvm/files/src/views/index.ts +10 -0
  812. package/templates/architectures/mvc-mvvm/files/tests/__solutionName.dot__.ArchitectureTests/PresentationBoundaryTests.cs +124 -0
  813. package/templates/architectures/mvc-mvvm/files/tests/__solutionName.dot__.ArchitectureTests/__solutionName.dot__.ArchitectureTests.csproj +28 -0
  814. package/templates/architectures/mvc-mvvm/files/tests/test_presentation_boundaries.py +33 -0
  815. package/templates/architectures/onion/blueprint.yaml +146 -0
  816. package/templates/architectures/onion/files/.dependency-cruiser.cjs +50 -0
  817. package/templates/architectures/onion/files/.importlinter +33 -0
  818. package/templates/architectures/onion/files/Directory.Packages.props +8 -0
  819. package/templates/architectures/onion/files/__solutionName.dot__.slnx +11 -0
  820. package/templates/architectures/onion/files/docs/architecture/onion-dotnet.md +39 -0
  821. package/templates/architectures/onion/files/docs/architecture/onion-go.md +33 -0
  822. package/templates/architectures/onion/files/docs/architecture/onion-python.md +35 -0
  823. package/templates/architectures/onion/files/docs/architecture/onion-typescript.md +34 -0
  824. package/templates/architectures/onion/files/internal/applicationservices/doc.go +4 -0
  825. package/templates/architectures/onion/files/internal/arch/rings.go +11 -0
  826. package/templates/architectures/onion/files/internal/arch/rings_test.go +112 -0
  827. package/templates/architectures/onion/files/internal/domain/doc.go +4 -0
  828. package/templates/architectures/onion/files/internal/domainservices/doc.go +5 -0
  829. package/templates/architectures/onion/files/internal/infrastructure/doc.go +5 -0
  830. package/templates/architectures/onion/files/pyproject.toml +2 -0
  831. package/templates/architectures/onion/files/src/__solutionName.dot__.ApplicationServices/ApplicationServicesAssemblyMarker.cs +4 -0
  832. package/templates/architectures/onion/files/src/__solutionName.dot__.ApplicationServices/__solutionName.dot__.ApplicationServices.csproj +13 -0
  833. package/templates/architectures/onion/files/src/__solutionName.dot__.Domain/DomainAssemblyMarker.cs +4 -0
  834. package/templates/architectures/onion/files/src/__solutionName.dot__.Domain/__solutionName.dot__.Domain.csproj +11 -0
  835. package/templates/architectures/onion/files/src/__solutionName.dot__.DomainServices/DomainServicesAssemblyMarker.cs +4 -0
  836. package/templates/architectures/onion/files/src/__solutionName.dot__.DomainServices/Repositories/.gitkeep +2 -0
  837. package/templates/architectures/onion/files/src/__solutionName.dot__.DomainServices/__solutionName.dot__.DomainServices.csproj +14 -0
  838. package/templates/architectures/onion/files/src/__solutionName.dot__.Infrastructure/InfrastructureAssemblyMarker.cs +4 -0
  839. package/templates/architectures/onion/files/src/__solutionName.dot__.Infrastructure/Repositories/.gitkeep +2 -0
  840. package/templates/architectures/onion/files/src/__solutionName.dot__.Infrastructure/__solutionName.dot__.Infrastructure.csproj +14 -0
  841. package/templates/architectures/onion/files/src/__solutionName.snake__/application_services/__init__.py +4 -0
  842. package/templates/architectures/onion/files/src/__solutionName.snake__/domain/__init__.py +5 -0
  843. package/templates/architectures/onion/files/src/__solutionName.snake__/domain_services/__init__.py +6 -0
  844. package/templates/architectures/onion/files/src/__solutionName.snake__/infrastructure/__init__.py +5 -0
  845. package/templates/architectures/onion/files/src/application-services/index.ts +3 -0
  846. package/templates/architectures/onion/files/src/domain/index.ts +3 -0
  847. package/templates/architectures/onion/files/src/domain-services/index.ts +3 -0
  848. package/templates/architectures/onion/files/src/infrastructure/index.ts +3 -0
  849. package/templates/architectures/onion/files/tests/__solutionName.dot__.ArchitectureTests/RingDependencyTests.cs +104 -0
  850. package/templates/architectures/onion/files/tests/__solutionName.dot__.ArchitectureTests/__solutionName.dot__.ArchitectureTests.csproj +31 -0
  851. package/templates/architectures/pipes-and-filters/blueprint.yaml +104 -0
  852. package/templates/architectures/pipes-and-filters/files/.importlinter +25 -0
  853. package/templates/architectures/pipes-and-filters/files/docs/architecture/pipes-and-filters.go.md +72 -0
  854. package/templates/architectures/pipes-and-filters/files/docs/architecture/pipes-and-filters.node.md +73 -0
  855. package/templates/architectures/pipes-and-filters/files/docs/architecture/pipes-and-filters.python.md +76 -0
  856. package/templates/architectures/pipes-and-filters/files/internal/pipeline/boundary_test.go +107 -0
  857. package/templates/architectures/pipes-and-filters/files/internal/pipeline/config.go +53 -0
  858. package/templates/architectures/pipes-and-filters/files/internal/pipeline/contract/contract.go +35 -0
  859. package/templates/architectures/pipes-and-filters/files/internal/pipeline/pipeline.go +39 -0
  860. package/templates/architectures/pipes-and-filters/files/internal/pipeline/stages/__firstStage.lower__/__firstStage.lower__.go +42 -0
  861. package/templates/architectures/pipes-and-filters/files/internal/pipeline/stages/__firstStage.lower__/__firstStage.lower___test.go +59 -0
  862. package/templates/architectures/pipes-and-filters/files/package.json +8 -0
  863. package/templates/architectures/pipes-and-filters/files/pyproject.toml +2 -0
  864. package/templates/architectures/pipes-and-filters/files/scripts/check-stage-boundaries.mjs +172 -0
  865. package/templates/architectures/pipes-and-filters/files/src/__solutionName.snake__/pipeline/__init__.py +16 -0
  866. package/templates/architectures/pipes-and-filters/files/src/__solutionName.snake__/pipeline/config.py +26 -0
  867. package/templates/architectures/pipes-and-filters/files/src/__solutionName.snake__/pipeline/contract.py +34 -0
  868. package/templates/architectures/pipes-and-filters/files/src/__solutionName.snake__/pipeline/pipeline.py +33 -0
  869. package/templates/architectures/pipes-and-filters/files/src/__solutionName.snake__/pipeline/stages/__firstStage.snake__/__init__.py +3 -0
  870. package/templates/architectures/pipes-and-filters/files/src/__solutionName.snake__/pipeline/stages/__firstStage.snake__/stage.py +31 -0
  871. package/templates/architectures/pipes-and-filters/files/src/__solutionName.snake__/pipeline/stages/__init__.py +1 -0
  872. package/templates/architectures/pipes-and-filters/files/src/pipeline/config.ts +24 -0
  873. package/templates/architectures/pipes-and-filters/files/src/pipeline/contract.ts +41 -0
  874. package/templates/architectures/pipes-and-filters/files/src/pipeline/pipeline.ts +37 -0
  875. package/templates/architectures/pipes-and-filters/files/src/pipeline/stages/__firstStage.kebab__/__firstStage.kebab__.test.ts +32 -0
  876. package/templates/architectures/pipes-and-filters/files/src/pipeline/stages/__firstStage.kebab__/index.ts +29 -0
  877. package/templates/architectures/pipes-and-filters/files/tests/architecture/test_stage_boundaries.py +127 -0
  878. package/templates/architectures/pipes-and-filters/files/tests/pipeline/test___firstStage.snake__.py +32 -0
  879. package/templates/architectures/rag-hybrid/blueprint.yaml +121 -0
  880. package/templates/architectures/rag-hybrid/files/.importlinter +42 -0
  881. package/templates/architectures/rag-hybrid/files/docs/architecture/rag-hybrid.node.md +159 -0
  882. package/templates/architectures/rag-hybrid/files/docs/architecture/rag-hybrid.python.md +157 -0
  883. package/templates/architectures/rag-hybrid/files/evals/corpus/chunking.md +20 -0
  884. package/templates/architectures/rag-hybrid/files/evals/corpus/fusion.md +17 -0
  885. package/templates/architectures/rag-hybrid/files/evals/corpus/hybrid-retrieval.md +21 -0
  886. package/templates/architectures/rag-hybrid/files/evals/corpus/reranking.md +17 -0
  887. package/templates/architectures/rag-hybrid/files/evals/golden/queries.jsonl +5 -0
  888. package/templates/architectures/rag-hybrid/files/package.json +9 -0
  889. package/templates/architectures/rag-hybrid/files/pyproject.toml +2 -0
  890. package/templates/architectures/rag-hybrid/files/scripts/check-retrieval-seam.mjs +156 -0
  891. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/__init__.py +23 -0
  892. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/chunk/__init__.py +57 -0
  893. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/config.py +101 -0
  894. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/contracts.py +58 -0
  895. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/embed/__init__.py +90 -0
  896. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/evaluation/__init__.py +11 -0
  897. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/evaluation/cli.py +47 -0
  898. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/evaluation/harness.py +115 -0
  899. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/evaluation/metrics.py +51 -0
  900. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/generate/__init__.py +85 -0
  901. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/indexing.py +23 -0
  902. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/ingest/__init__.py +45 -0
  903. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/pipeline.py +27 -0
  904. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/rerank/__init__.py +85 -0
  905. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/retrieve/__init__.py +37 -0
  906. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/retrieve/dense.py +25 -0
  907. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/retrieve/fusion.py +30 -0
  908. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/retrieve/keyword.py +45 -0
  909. package/templates/architectures/rag-hybrid/files/src/__solutionName.snake__/rag/store/__init__.py +87 -0
  910. package/templates/architectures/rag-hybrid/files/src/rag/chunk/index.ts +56 -0
  911. package/templates/architectures/rag-hybrid/files/src/rag/config.ts +96 -0
  912. package/templates/architectures/rag-hybrid/files/src/rag/contracts.ts +50 -0
  913. package/templates/architectures/rag-hybrid/files/src/rag/embed/index.ts +98 -0
  914. package/templates/architectures/rag-hybrid/files/src/rag/evaluation/cli.ts +47 -0
  915. package/templates/architectures/rag-hybrid/files/src/rag/evaluation/harness.ts +101 -0
  916. package/templates/architectures/rag-hybrid/files/src/rag/evaluation/metrics.ts +40 -0
  917. package/templates/architectures/rag-hybrid/files/src/rag/generate/index.ts +86 -0
  918. package/templates/architectures/rag-hybrid/files/src/rag/indexing.ts +21 -0
  919. package/templates/architectures/rag-hybrid/files/src/rag/ingest/index.ts +58 -0
  920. package/templates/architectures/rag-hybrid/files/src/rag/pipeline.ts +32 -0
  921. package/templates/architectures/rag-hybrid/files/src/rag/rerank/index.ts +90 -0
  922. package/templates/architectures/rag-hybrid/files/src/rag/retrieve/dense.ts +26 -0
  923. package/templates/architectures/rag-hybrid/files/src/rag/retrieve/fusion.ts +32 -0
  924. package/templates/architectures/rag-hybrid/files/src/rag/retrieve/index.ts +38 -0
  925. package/templates/architectures/rag-hybrid/files/src/rag/retrieve/keyword.ts +42 -0
  926. package/templates/architectures/rag-hybrid/files/src/rag/store/index.ts +108 -0
  927. package/templates/architectures/rag-hybrid/files/tests/architecture/test_retrieval_seam.py +108 -0
  928. package/templates/architectures/serverless/blueprint.yaml +139 -0
  929. package/templates/architectures/serverless/files/.gitignore.serverless +3 -0
  930. package/templates/architectures/serverless/files/.importlinter +18 -0
  931. package/templates/architectures/serverless/files/cdk.json +7 -0
  932. package/templates/architectures/serverless/files/docs/architecture/serverless.node.md +97 -0
  933. package/templates/architectures/serverless/files/docs/architecture/serverless.python.md +108 -0
  934. package/templates/architectures/serverless/files/events/__firstHandler.kebab__.json +21 -0
  935. package/templates/architectures/serverless/files/infra/app.ts +15 -0
  936. package/templates/architectures/serverless/files/infra/config.ts +22 -0
  937. package/templates/architectures/serverless/files/infra/stack.ts +45 -0
  938. package/templates/architectures/serverless/files/package.json +9 -0
  939. package/templates/architectures/serverless/files/pyproject.toml +2 -0
  940. package/templates/architectures/serverless/files/scripts/check-handler-boundaries.mjs +144 -0
  941. package/templates/architectures/serverless/files/scripts/invoke-local.ts +57 -0
  942. package/templates/architectures/serverless/files/scripts/invoke_local.py +61 -0
  943. package/templates/architectures/serverless/files/src/__solutionName.snake__/functions/__firstHandler.snake__/__init__.py +1 -0
  944. package/templates/architectures/serverless/files/src/__solutionName.snake__/functions/__firstHandler.snake__/handler.py +27 -0
  945. package/templates/architectures/serverless/files/src/__solutionName.snake__/functions/__init__.py +4 -0
  946. package/templates/architectures/serverless/files/src/__solutionName.snake__/layers/__init__.py +5 -0
  947. package/templates/architectures/serverless/files/src/__solutionName.snake__/layers/config.py +45 -0
  948. package/templates/architectures/serverless/files/src/__solutionName.snake__/layers/observability.py +35 -0
  949. package/templates/architectures/serverless/files/src/functions/__firstHandler.kebab__/handler.ts +26 -0
  950. package/templates/architectures/serverless/files/src/layers/config/index.ts +31 -0
  951. package/templates/architectures/serverless/files/src/layers/observability/index.ts +38 -0
  952. package/templates/architectures/serverless/files/src/requirements.txt +3 -0
  953. package/templates/architectures/serverless/files/template.yaml +48 -0
  954. package/templates/architectures/serverless/files/tests/architecture/test_handler_boundaries.py +32 -0
  955. package/templates/architectures/vertical-slice/blueprint.yaml +124 -0
  956. package/templates/architectures/vertical-slice/files/.importlinter +18 -0
  957. package/templates/architectures/vertical-slice/files/Directory.Packages.props +8 -0
  958. package/templates/architectures/vertical-slice/files/__solutionName.dot__.slnx +5 -0
  959. package/templates/architectures/vertical-slice/files/docs/architecture/vertical-slice.md +75 -0
  960. package/templates/architectures/vertical-slice/files/internal/features/__firstSlice.lower__/__firstSlice.lower__.go +2 -0
  961. package/templates/architectures/vertical-slice/files/internal/features/boundary_test.go +92 -0
  962. package/templates/architectures/vertical-slice/files/internal/features/doc.go +3 -0
  963. package/templates/architectures/vertical-slice/files/internal/shared/doc.go +2 -0
  964. package/templates/architectures/vertical-slice/files/pyproject.toml +2 -0
  965. package/templates/architectures/vertical-slice/files/scripts/check-slice-boundaries.mjs +118 -0
  966. package/templates/architectures/vertical-slice/files/src/__solutionName.dot__.Api/Common/.gitkeep +0 -0
  967. package/templates/architectures/vertical-slice/files/src/__solutionName.dot__.Api/Features/.gitkeep +0 -0
  968. package/templates/architectures/vertical-slice/files/src/__solutionName.dot__.Api/Features/__firstSlice.pascal__/Slice.cs +15 -0
  969. package/templates/architectures/vertical-slice/files/src/__solutionName.pascal__.Api/Common/.gitkeep +0 -0
  970. package/templates/architectures/vertical-slice/files/src/__solutionName.pascal__.Api/Features/.gitkeep +0 -0
  971. package/templates/architectures/vertical-slice/files/src/__solutionName.pascal__.Api/Features/__firstSlice.pascal__/Slice.cs +15 -0
  972. package/templates/architectures/vertical-slice/files/src/__solutionName.snake__/features/__firstSlice.snake__/__init__.py +1 -0
  973. package/templates/architectures/vertical-slice/files/src/__solutionName.snake__/features/__init__.py +1 -0
  974. package/templates/architectures/vertical-slice/files/src/__solutionName.snake__/shared/__init__.py +1 -0
  975. package/templates/architectures/vertical-slice/files/src/features/__firstSlice.kebab__/index.ts +3 -0
  976. package/templates/architectures/vertical-slice/files/src/shared/.gitkeep +0 -0
  977. package/templates/architectures/vertical-slice/files/tests/ArchitectureTests/ArchitectureTests.csproj +33 -0
  978. package/templates/architectures/vertical-slice/files/tests/ArchitectureTests/SliceBoundaryTests.cs +110 -0
  979. package/templates/architectures/vertical-slice/files/tests/test_architecture.py +32 -0
  980. package/templates/bases/dotnet-aspire/blueprint.yaml +120 -0
  981. package/templates/bases/dotnet-aspire/files/Directory.Build.props +11 -0
  982. package/templates/bases/dotnet-aspire/files/Directory.Packages.props +17 -0
  983. package/templates/bases/dotnet-aspire/files/README.md +60 -0
  984. package/templates/bases/dotnet-aspire/files/__solutionName.dot__.slnx +7 -0
  985. package/templates/bases/dotnet-aspire/files/aspire.config.json +5 -0
  986. package/templates/bases/dotnet-aspire/files/gitignore +44 -0
  987. package/templates/bases/dotnet-aspire/files/global.json +6 -0
  988. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.Api/Configuration/ApiOptions.cs +20 -0
  989. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.Api/Program.cs +37 -0
  990. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.Api/Properties/launchSettings.json +23 -0
  991. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.Api/__solutionName.pascal__.Api.csproj +11 -0
  992. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.Api/appsettings.Development.json +8 -0
  993. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.Api/appsettings.json +14 -0
  994. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.AppHost/AppHost.cs +8 -0
  995. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.AppHost/Properties/launchSettings.json +29 -0
  996. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.AppHost/__solutionName.pascal__.AppHost.csproj +11 -0
  997. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.AppHost/appsettings.Development.json +8 -0
  998. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.AppHost/appsettings.json +9 -0
  999. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.ServiceDefaults/Extensions.cs +101 -0
  1000. package/templates/bases/dotnet-aspire/files/src/__solutionName.pascal__.ServiceDefaults/__solutionName.pascal__.ServiceDefaults.csproj +19 -0
  1001. package/templates/bases/dotnet-webapi/blueprint.yaml +112 -0
  1002. package/templates/bases/dotnet-webapi/files/.editorconfig +78 -0
  1003. package/templates/bases/dotnet-webapi/files/Directory.Build.props +28 -0
  1004. package/templates/bases/dotnet-webapi/files/Directory.Packages.props +18 -0
  1005. package/templates/bases/dotnet-webapi/files/README.md +71 -0
  1006. package/templates/bases/dotnet-webapi/files/__solutionName.dot__.slnx +11 -0
  1007. package/templates/bases/dotnet-webapi/files/gitignore +49 -0
  1008. package/templates/bases/dotnet-webapi/files/global.json +7 -0
  1009. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/Configuration/ApiOptions.cs +23 -0
  1010. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/Configuration/ServiceCollectionExtensions.cs +35 -0
  1011. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/Endpoints/GreetingEndpoints.cs +24 -0
  1012. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/Endpoints/HealthEndpoints.cs +11 -0
  1013. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/Program.cs +23 -0
  1014. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/Properties/launchSettings.json +21 -0
  1015. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/__solutionName.dot__.Api.csproj +19 -0
  1016. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/appsettings.Development.json +8 -0
  1017. package/templates/bases/dotnet-webapi/files/src/__solutionName.dot__.Api/appsettings.json +9 -0
  1018. package/templates/bases/fastapi-service/blueprint.yaml +87 -0
  1019. package/templates/bases/fastapi-service/files/.env.example +10 -0
  1020. package/templates/bases/fastapi-service/files/README.md +42 -0
  1021. package/templates/bases/fastapi-service/files/gitignore +27 -0
  1022. package/templates/bases/fastapi-service/files/pyproject.toml +35 -0
  1023. package/templates/bases/fastapi-service/files/src/__solutionName.snake__/__init__.py +1 -0
  1024. package/templates/bases/fastapi-service/files/src/__solutionName.snake__/api/__init__.py +1 -0
  1025. package/templates/bases/fastapi-service/files/src/__solutionName.snake__/api/routes.py +38 -0
  1026. package/templates/bases/fastapi-service/files/src/__solutionName.snake__/main.py +34 -0
  1027. package/templates/bases/fastapi-service/files/src/__solutionName.snake__/settings.py +30 -0
  1028. package/templates/bases/go-api/blueprint.yaml +58 -0
  1029. package/templates/bases/go-api/files/.env.example +16 -0
  1030. package/templates/bases/go-api/files/README.md +76 -0
  1031. package/templates/bases/go-api/files/cmd/__solutionName.kebab__/main.go +65 -0
  1032. package/templates/bases/go-api/files/gitignore +27 -0
  1033. package/templates/bases/go-api/files/go.mod +5 -0
  1034. package/templates/bases/go-api/files/internal/config/config.go +127 -0
  1035. package/templates/bases/go-api/files/internal/httpapi/greeting.go +25 -0
  1036. package/templates/bases/go-api/files/internal/httpapi/health.go +25 -0
  1037. package/templates/bases/go-api/files/internal/httpapi/respond.go +25 -0
  1038. package/templates/bases/go-api/files/internal/httpapi/router.go +63 -0
  1039. package/templates/bases/hono-api/blueprint.yaml +94 -0
  1040. package/templates/bases/hono-api/files/.env.example +7 -0
  1041. package/templates/bases/hono-api/files/README.md +77 -0
  1042. package/templates/bases/hono-api/files/biome.json +24 -0
  1043. package/templates/bases/hono-api/files/gitignore +16 -0
  1044. package/templates/bases/hono-api/files/package.json +29 -0
  1045. package/templates/bases/hono-api/files/src/app.ts +27 -0
  1046. package/templates/bases/hono-api/files/src/config.ts +27 -0
  1047. package/templates/bases/hono-api/files/src/index.ts +17 -0
  1048. package/templates/bases/hono-api/files/src/routes/greetings.ts +17 -0
  1049. package/templates/bases/hono-api/files/src/routes/health.ts +13 -0
  1050. package/templates/bases/hono-api/files/tsconfig.json +18 -0
  1051. package/templates/bases/nestjs-api/blueprint.yaml +94 -0
  1052. package/templates/bases/nestjs-api/files/.env.example +8 -0
  1053. package/templates/bases/nestjs-api/files/.prettierrc +5 -0
  1054. package/templates/bases/nestjs-api/files/README.md +69 -0
  1055. package/templates/bases/nestjs-api/files/eslint.config.mjs +23 -0
  1056. package/templates/bases/nestjs-api/files/gitignore +11 -0
  1057. package/templates/bases/nestjs-api/files/nest-cli.json +9 -0
  1058. package/templates/bases/nestjs-api/files/package.json +41 -0
  1059. package/templates/bases/nestjs-api/files/src/app.module.ts +16 -0
  1060. package/templates/bases/nestjs-api/files/src/config/app.config.ts +30 -0
  1061. package/templates/bases/nestjs-api/files/src/config/env.validation.ts +15 -0
  1062. package/templates/bases/nestjs-api/files/src/health/health.controller.ts +19 -0
  1063. package/templates/bases/nestjs-api/files/src/health/health.module.ts +6 -0
  1064. package/templates/bases/nestjs-api/files/src/main.ts +25 -0
  1065. package/templates/bases/nestjs-api/files/src/modules/__solutionName.kebab__/__solutionName.kebab__.controller.ts +14 -0
  1066. package/templates/bases/nestjs-api/files/src/modules/__solutionName.kebab__/__solutionName.kebab__.module.ts +11 -0
  1067. package/templates/bases/nestjs-api/files/src/modules/__solutionName.kebab__/__solutionName.kebab__.service.ts +12 -0
  1068. package/templates/bases/nestjs-api/files/src/modules/__solutionName.kebab__/dto/greet-query.dto.ts +10 -0
  1069. package/templates/bases/nestjs-api/files/tsconfig.build.json +4 -0
  1070. package/templates/bases/nestjs-api/files/tsconfig.json +26 -0
  1071. package/templates/bases/nextjs-app/blueprint.yaml +80 -0
  1072. package/templates/bases/nextjs-app/files/.env.example +10 -0
  1073. package/templates/bases/nextjs-app/files/README.md +48 -0
  1074. package/templates/bases/nextjs-app/files/eslint.config.mjs +12 -0
  1075. package/templates/bases/nextjs-app/files/gitignore +32 -0
  1076. package/templates/bases/nextjs-app/files/next.config.ts +8 -0
  1077. package/templates/bases/nextjs-app/files/package.json +30 -0
  1078. package/templates/bases/nextjs-app/files/postcss.config.mjs +7 -0
  1079. package/templates/bases/nextjs-app/files/src/app/api/health/route.ts +21 -0
  1080. package/templates/bases/nextjs-app/files/src/app/globals.css +45 -0
  1081. package/templates/bases/nextjs-app/files/src/app/layout.tsx +28 -0
  1082. package/templates/bases/nextjs-app/files/src/app/page.tsx +39 -0
  1083. package/templates/bases/nextjs-app/files/src/config/env.ts +64 -0
  1084. package/templates/bases/nextjs-app/files/tsconfig.json +35 -0
  1085. package/templates/bases/python-ai-agent/blueprint.yaml +84 -0
  1086. package/templates/bases/python-ai-agent/files/.env.example +29 -0
  1087. package/templates/bases/python-ai-agent/files/README.md +80 -0
  1088. package/templates/bases/python-ai-agent/files/gitignore +21 -0
  1089. package/templates/bases/python-ai-agent/files/pyproject.toml +34 -0
  1090. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/__init__.py +1 -0
  1091. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/api/__init__.py +1 -0
  1092. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/api/routes.py +69 -0
  1093. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/config.py +70 -0
  1094. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/llm/__init__.py +1 -0
  1095. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/llm/anthropic_provider.py +69 -0
  1096. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/llm/openai_provider.py +75 -0
  1097. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/llm/provider.py +45 -0
  1098. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/llm/registry.py +35 -0
  1099. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/main.py +33 -0
  1100. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/observability/__init__.py +1 -0
  1101. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/observability/evals.py +28 -0
  1102. package/templates/bases/python-ai-agent/files/src/__solutionName.snake__/observability/tracing.py +49 -0
  1103. package/templates/bases/react-vite-spa/blueprint.yaml +92 -0
  1104. package/templates/bases/react-vite-spa/files/.env.example +13 -0
  1105. package/templates/bases/react-vite-spa/files/README.md +49 -0
  1106. package/templates/bases/react-vite-spa/files/eslint.config.mjs +26 -0
  1107. package/templates/bases/react-vite-spa/files/gitignore +25 -0
  1108. package/templates/bases/react-vite-spa/files/index.html +13 -0
  1109. package/templates/bases/react-vite-spa/files/package.json +37 -0
  1110. package/templates/bases/react-vite-spa/files/src/api/client.ts +28 -0
  1111. package/templates/bases/react-vite-spa/files/src/api/health.ts +12 -0
  1112. package/templates/bases/react-vite-spa/files/src/app/query-client.ts +12 -0
  1113. package/templates/bases/react-vite-spa/files/src/app/root-layout.tsx +24 -0
  1114. package/templates/bases/react-vite-spa/files/src/app/router.tsx +44 -0
  1115. package/templates/bases/react-vite-spa/files/src/config/env.ts +37 -0
  1116. package/templates/bases/react-vite-spa/files/src/main.tsx +18 -0
  1117. package/templates/bases/react-vite-spa/files/src/pages/home-page.tsx +31 -0
  1118. package/templates/bases/react-vite-spa/files/src/pages/not-found-page.tsx +13 -0
  1119. package/templates/bases/react-vite-spa/files/src/pages/status-page.tsx +37 -0
  1120. package/templates/bases/react-vite-spa/files/src/styles/global.css +169 -0
  1121. package/templates/bases/react-vite-spa/files/src/vite-env.d.ts +15 -0
  1122. package/templates/bases/react-vite-spa/files/tsconfig.app.json +29 -0
  1123. package/templates/bases/react-vite-spa/files/tsconfig.json +4 -0
  1124. package/templates/bases/react-vite-spa/files/tsconfig.node.json +24 -0
  1125. package/templates/bases/react-vite-spa/files/vite.config.ts +25 -0
  1126. package/templates/bases/turborepo-monorepo/blueprint.yaml +84 -0
  1127. package/templates/bases/turborepo-monorepo/files/.env.example +7 -0
  1128. package/templates/bases/turborepo-monorepo/files/.prettierignore +9 -0
  1129. package/templates/bases/turborepo-monorepo/files/.prettierrc.json +5 -0
  1130. package/templates/bases/turborepo-monorepo/files/README.md +55 -0
  1131. package/templates/bases/turborepo-monorepo/files/apps/__appName.kebab__/eslint.config.js +3 -0
  1132. package/templates/bases/turborepo-monorepo/files/apps/__appName.kebab__/package.json +25 -0
  1133. package/templates/bases/turborepo-monorepo/files/apps/__appName.kebab__/src/config.ts +46 -0
  1134. package/templates/bases/turborepo-monorepo/files/apps/__appName.kebab__/src/index.ts +20 -0
  1135. package/templates/bases/turborepo-monorepo/files/apps/__appName.kebab__/src/router.ts +24 -0
  1136. package/templates/bases/turborepo-monorepo/files/apps/__appName.kebab__/tsconfig.json +8 -0
  1137. package/templates/bases/turborepo-monorepo/files/gitignore +17 -0
  1138. package/templates/bases/turborepo-monorepo/files/package.json +25 -0
  1139. package/templates/bases/turborepo-monorepo/files/packages/eslint-config/index.js +21 -0
  1140. package/templates/bases/turborepo-monorepo/files/packages/eslint-config/package.json +21 -0
  1141. package/templates/bases/turborepo-monorepo/files/packages/shared/eslint.config.js +3 -0
  1142. package/templates/bases/turborepo-monorepo/files/packages/shared/package.json +26 -0
  1143. package/templates/bases/turborepo-monorepo/files/packages/shared/src/health.ts +23 -0
  1144. package/templates/bases/turborepo-monorepo/files/packages/shared/src/index.ts +2 -0
  1145. package/templates/bases/turborepo-monorepo/files/packages/shared/tsconfig.json +10 -0
  1146. package/templates/bases/turborepo-monorepo/files/packages/tsconfig/base.json +19 -0
  1147. package/templates/bases/turborepo-monorepo/files/packages/tsconfig/node.json +7 -0
  1148. package/templates/bases/turborepo-monorepo/files/packages/tsconfig/package.json +9 -0
  1149. package/templates/bases/turborepo-monorepo/files/pnpm-workspace.yaml +7 -0
  1150. package/templates/bases/turborepo-monorepo/files/turbo.json +22 -0
  1151. package/templates/layers/api-versioning/blueprint.yaml +264 -0
  1152. package/templates/layers/api-versioning/files/.env.apiversion.example +53 -0
  1153. package/templates/layers/api-versioning/files/__apiVersionContractDir__/README.md +48 -0
  1154. package/templates/layers/api-versioning/files/__solutionName.dot__.slnx +5 -0
  1155. package/templates/layers/api-versioning/files/docs/api-versioning.md +100 -0
  1156. package/templates/layers/api-versioning/files/internal/apiversion/apiversion_test.go +202 -0
  1157. package/templates/layers/api-versioning/files/internal/apiversion/config.go +242 -0
  1158. package/templates/layers/api-versioning/files/internal/apiversion/contract.go +280 -0
  1159. package/templates/layers/api-versioning/files/internal/apiversion/headers.go +55 -0
  1160. package/templates/layers/api-versioning/files/internal/apiversion/middleware.go +53 -0
  1161. package/templates/layers/api-versioning/files/internal/apiversion/negotiate.go +107 -0
  1162. package/templates/layers/api-versioning/files/internal/apiversion/snapshot.go +72 -0
  1163. package/templates/layers/api-versioning/files/internal/apiversion/versions.go +72 -0
  1164. package/templates/layers/api-versioning/files/package.json +5 -0
  1165. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ApiVersionHeaders.cs +62 -0
  1166. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ApiVersionNegotiator.cs +129 -0
  1167. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ApiVersionOptions.cs +58 -0
  1168. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ApiVersionPolicy.cs +99 -0
  1169. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ApiVersioningMiddleware.cs +58 -0
  1170. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ApiVersioningServiceCollectionExtensions.cs +18 -0
  1171. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ContractDiff.cs +152 -0
  1172. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ContractShape.cs +142 -0
  1173. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/ContractStore.cs +64 -0
  1174. package/templates/layers/api-versioning/files/src/__solutionName.dot__.ApiVersioning/__solutionName.dot__.ApiVersioning.csproj +17 -0
  1175. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/__init__.py +67 -0
  1176. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/contract.py +191 -0
  1177. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/errors.py +28 -0
  1178. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/headers.py +56 -0
  1179. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/middleware.py +76 -0
  1180. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/negotiate.py +94 -0
  1181. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/settings.py +189 -0
  1182. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/snapshot.py +74 -0
  1183. package/templates/layers/api-versioning/files/src/__solutionName.snake__/apiversion/versions.py +70 -0
  1184. package/templates/layers/api-versioning/files/src/apiversion/client/pinned-fetch.ts +89 -0
  1185. package/templates/layers/api-versioning/files/src/apiversion/contract/diff.ts +153 -0
  1186. package/templates/layers/api-versioning/files/src/apiversion/contract/node/snapshot.ts +76 -0
  1187. package/templates/layers/api-versioning/files/src/apiversion/contract/shape.ts +94 -0
  1188. package/templates/layers/api-versioning/files/src/apiversion/errors.ts +36 -0
  1189. package/templates/layers/api-versioning/files/src/apiversion/headers.ts +52 -0
  1190. package/templates/layers/api-versioning/files/src/apiversion/index.ts +23 -0
  1191. package/templates/layers/api-versioning/files/src/apiversion/middleware.ts +59 -0
  1192. package/templates/layers/api-versioning/files/src/apiversion/negotiate.ts +113 -0
  1193. package/templates/layers/api-versioning/files/src/apiversion/node/http.ts +50 -0
  1194. package/templates/layers/api-versioning/files/src/apiversion/settings.ts +214 -0
  1195. package/templates/layers/api-versioning/files/src/apiversion/tests/apiversion.spec.ts +162 -0
  1196. package/templates/layers/api-versioning/files/src/apiversion/tests/apiversion.test.ts +167 -0
  1197. package/templates/layers/api-versioning/files/src/apiversion/versions.ts +66 -0
  1198. package/templates/layers/api-versioning/files/tests/test_api_versioning.py +162 -0
  1199. package/templates/layers/audit-log/blueprint.yaml +186 -0
  1200. package/templates/layers/audit-log/files/.env.audit.example +41 -0
  1201. package/templates/layers/audit-log/files/__solutionName.dot__.slnx +5 -0
  1202. package/templates/layers/audit-log/files/docs/audit-log.md +195 -0
  1203. package/templates/layers/audit-log/files/internal/audit/audit_test.go +141 -0
  1204. package/templates/layers/audit-log/files/internal/audit/chain.go +91 -0
  1205. package/templates/layers/audit-log/files/internal/audit/config.go +143 -0
  1206. package/templates/layers/audit-log/files/internal/audit/event.go +87 -0
  1207. package/templates/layers/audit-log/files/internal/audit/recorder.go +133 -0
  1208. package/templates/layers/audit-log/files/internal/audit/redact.go +83 -0
  1209. package/templates/layers/audit-log/files/internal/audit/sink.go +196 -0
  1210. package/templates/layers/audit-log/files/internal/audit/verify.go +17 -0
  1211. package/templates/layers/audit-log/files/package.json +5 -0
  1212. package/templates/layers/audit-log/files/pyproject.toml +2 -0
  1213. package/templates/layers/audit-log/files/src/__solutionName.dot__.Auditing/AuditChain.cs +74 -0
  1214. package/templates/layers/audit-log/files/src/__solutionName.dot__.Auditing/AuditEvent.cs +90 -0
  1215. package/templates/layers/audit-log/files/src/__solutionName.dot__.Auditing/AuditOptions.cs +104 -0
  1216. package/templates/layers/audit-log/files/src/__solutionName.dot__.Auditing/AuditRecorder.cs +106 -0
  1217. package/templates/layers/audit-log/files/src/__solutionName.dot__.Auditing/AuditSerialization.cs +116 -0
  1218. package/templates/layers/audit-log/files/src/__solutionName.dot__.Auditing/AuditSinks.cs +165 -0
  1219. package/templates/layers/audit-log/files/src/__solutionName.dot__.Auditing/__solutionName.dot__.Auditing.csproj +17 -0
  1220. package/templates/layers/audit-log/files/src/__solutionName.snake__/audit/chain.py +56 -0
  1221. package/templates/layers/audit-log/files/src/__solutionName.snake__/audit/event.py +118 -0
  1222. package/templates/layers/audit-log/files/src/__solutionName.snake__/audit/recorder.py +118 -0
  1223. package/templates/layers/audit-log/files/src/__solutionName.snake__/audit/redact.py +41 -0
  1224. package/templates/layers/audit-log/files/src/__solutionName.snake__/audit/settings.py +102 -0
  1225. package/templates/layers/audit-log/files/src/__solutionName.snake__/audit/sinks.py +121 -0
  1226. package/templates/layers/audit-log/files/src/__solutionName.snake__/audit/verify.py +14 -0
  1227. package/templates/layers/audit-log/files/src/audit/chain.ts +59 -0
  1228. package/templates/layers/audit-log/files/src/audit/event.ts +73 -0
  1229. package/templates/layers/audit-log/files/src/audit/index.ts +32 -0
  1230. package/templates/layers/audit-log/files/src/audit/recorder.ts +108 -0
  1231. package/templates/layers/audit-log/files/src/audit/redact.ts +54 -0
  1232. package/templates/layers/audit-log/files/src/audit/settings.ts +113 -0
  1233. package/templates/layers/audit-log/files/src/audit/sinks.ts +131 -0
  1234. package/templates/layers/audit-log/files/src/audit/tests/audit.spec.ts +97 -0
  1235. package/templates/layers/audit-log/files/src/audit/tests/audit.test.ts +103 -0
  1236. package/templates/layers/audit-log/files/tests/test_audit_log.py +91 -0
  1237. package/templates/layers/auth-jwt/blueprint.yaml +124 -0
  1238. package/templates/layers/auth-jwt/files/.env.auth.example +17 -0
  1239. package/templates/layers/auth-jwt/files/Directory.Packages.props +5 -0
  1240. package/templates/layers/auth-jwt/files/__solutionName.dot__.slnx +5 -0
  1241. package/templates/layers/auth-jwt/files/docs/auth-jwt.md +198 -0
  1242. package/templates/layers/auth-jwt/files/go.mod +2 -0
  1243. package/templates/layers/auth-jwt/files/internal/auth/auth_test.go +167 -0
  1244. package/templates/layers/auth-jwt/files/internal/auth/config.go +108 -0
  1245. package/templates/layers/auth-jwt/files/internal/auth/errors.go +21 -0
  1246. package/templates/layers/auth-jwt/files/internal/auth/http.go +65 -0
  1247. package/templates/layers/auth-jwt/files/internal/auth/password.go +76 -0
  1248. package/templates/layers/auth-jwt/files/internal/auth/service.go +213 -0
  1249. package/templates/layers/auth-jwt/files/internal/auth/store.go +138 -0
  1250. package/templates/layers/auth-jwt/files/internal/auth/token.go +83 -0
  1251. package/templates/layers/auth-jwt/files/package.json +9 -0
  1252. package/templates/layers/auth-jwt/files/pyproject.toml +2 -0
  1253. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/AuthException.cs +39 -0
  1254. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/AuthOptions.cs +35 -0
  1255. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/AuthService.cs +132 -0
  1256. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/AuthServiceCollectionExtensions.cs +48 -0
  1257. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/JwtTokenService.cs +84 -0
  1258. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/PasswordHasher.cs +52 -0
  1259. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/Stores.cs +100 -0
  1260. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/__solutionName.dot__.Auth.csproj +21 -0
  1261. package/templates/layers/auth-jwt/files/src/__solutionName.dot__.Auth/appsettings.Auth.sample.json +10 -0
  1262. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/__init__.py +42 -0
  1263. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/config.py +49 -0
  1264. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/errors.py +21 -0
  1265. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/http.py +36 -0
  1266. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/passwords.py +37 -0
  1267. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/service.py +139 -0
  1268. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/store.py +90 -0
  1269. package/templates/layers/auth-jwt/files/src/__solutionName.snake__/auth/tokens.py +72 -0
  1270. package/templates/layers/auth-jwt/files/src/auth/config.ts +77 -0
  1271. package/templates/layers/auth-jwt/files/src/auth/errors.ts +32 -0
  1272. package/templates/layers/auth-jwt/files/src/auth/http.ts +35 -0
  1273. package/templates/layers/auth-jwt/files/src/auth/index.ts +20 -0
  1274. package/templates/layers/auth-jwt/files/src/auth/password.ts +23 -0
  1275. package/templates/layers/auth-jwt/files/src/auth/random.ts +28 -0
  1276. package/templates/layers/auth-jwt/files/src/auth/service.ts +125 -0
  1277. package/templates/layers/auth-jwt/files/src/auth/store.memory.ts +50 -0
  1278. package/templates/layers/auth-jwt/files/src/auth/store.ts +37 -0
  1279. package/templates/layers/auth-jwt/files/src/auth/tests/auth.spec.ts +98 -0
  1280. package/templates/layers/auth-jwt/files/src/auth/tests/auth.test.ts +102 -0
  1281. package/templates/layers/auth-jwt/files/src/auth/tokens.ts +56 -0
  1282. package/templates/layers/auth-jwt/files/tests/auth/test_auth.py +106 -0
  1283. package/templates/layers/auth-oidc/blueprint.yaml +89 -0
  1284. package/templates/layers/auth-oidc/files/dotnet/.env.oidc.example +14 -0
  1285. package/templates/layers/auth-oidc/files/dotnet/docs/auth-oidc.md +73 -0
  1286. package/templates/layers/auth-oidc/files/dotnet/src/__solutionName.pascal__.Api/Auth/OidcAuthenticationExtensions.cs +65 -0
  1287. package/templates/layers/auth-oidc/files/dotnet/src/__solutionName.pascal__.Api/Auth/OidcOptions.cs +25 -0
  1288. package/templates/layers/auth-oidc/files/dotnet/src/__solutionName.pascal__.Api/Auth/ScopeRequirement.cs +29 -0
  1289. package/templates/layers/auth-oidc/files/node/.env.oidc.example +14 -0
  1290. package/templates/layers/auth-oidc/files/node/docs/auth-oidc.md +66 -0
  1291. package/templates/layers/auth-oidc/files/node/src/auth/auth.config.ts +64 -0
  1292. package/templates/layers/auth-oidc/files/node/src/auth/auth.decorators.ts +19 -0
  1293. package/templates/layers/auth-oidc/files/node/src/auth/auth.guard.ts +61 -0
  1294. package/templates/layers/auth-oidc/files/node/src/auth/auth.module.ts +12 -0
  1295. package/templates/layers/auth-oidc/files/node/src/auth/jwt-verifier.ts +97 -0
  1296. package/templates/layers/auth-oidc/files/package.json +6 -0
  1297. package/templates/layers/auth-oidc/files/pyproject.toml +2 -0
  1298. package/templates/layers/auth-oidc/files/python/.env.oidc.example +14 -0
  1299. package/templates/layers/auth-oidc/files/python/app/auth/dependencies.py +69 -0
  1300. package/templates/layers/auth-oidc/files/python/app/auth/settings.py +32 -0
  1301. package/templates/layers/auth-oidc/files/python/app/auth/verifier.py +57 -0
  1302. package/templates/layers/auth-oidc/files/python/docs/auth-oidc.md +57 -0
  1303. package/templates/layers/auth-oidc/files/python/requirements-auth-oidc.txt +4 -0
  1304. package/templates/layers/auth-oidc/files/typescript/.env.oidc.example +21 -0
  1305. package/templates/layers/auth-oidc/files/typescript/docs/auth-oidc.md +69 -0
  1306. package/templates/layers/auth-oidc/files/typescript/src/app/api/auth/callback/route.ts +43 -0
  1307. package/templates/layers/auth-oidc/files/typescript/src/app/api/auth/login/route.ts +40 -0
  1308. package/templates/layers/auth-oidc/files/typescript/src/app/api/auth/logout/route.ts +27 -0
  1309. package/templates/layers/auth-oidc/files/typescript/src/app/api/auth/me/route.ts +12 -0
  1310. package/templates/layers/auth-oidc/files/typescript/src/lib/auth/config.ts +98 -0
  1311. package/templates/layers/auth-oidc/files/typescript/src/lib/auth/guard.ts +23 -0
  1312. package/templates/layers/auth-oidc/files/typescript/src/lib/auth/oidc.ts +19 -0
  1313. package/templates/layers/auth-oidc/files/typescript/src/lib/auth/session.ts +81 -0
  1314. package/templates/layers/cache-redis/blueprint.yaml +186 -0
  1315. package/templates/layers/cache-redis/files/.env.cache.example +29 -0
  1316. package/templates/layers/cache-redis/files/Directory.Packages.props +5 -0
  1317. package/templates/layers/cache-redis/files/__solutionName.dot__.slnx +5 -0
  1318. package/templates/layers/cache-redis/files/docker-compose.redis.yml +33 -0
  1319. package/templates/layers/cache-redis/files/docs/cache/redis.md +113 -0
  1320. package/templates/layers/cache-redis/files/go.mod +1 -0
  1321. package/templates/layers/cache-redis/files/internal/cache/cache.go +127 -0
  1322. package/templates/layers/cache-redis/files/internal/cache/cache_test.go +113 -0
  1323. package/templates/layers/cache-redis/files/internal/cache/config.go +110 -0
  1324. package/templates/layers/cache-redis/files/internal/cache/memory.go +124 -0
  1325. package/templates/layers/cache-redis/files/internal/cache/redis.go +108 -0
  1326. package/templates/layers/cache-redis/files/package.json +5 -0
  1327. package/templates/layers/cache-redis/files/pyproject.toml +2 -0
  1328. package/templates/layers/cache-redis/files/src/__solutionName.dot__.Cache.Redis/CacheKey.cs +44 -0
  1329. package/templates/layers/cache-redis/files/src/__solutionName.dot__.Cache.Redis/CacheOptions.cs +119 -0
  1330. package/templates/layers/cache-redis/files/src/__solutionName.dot__.Cache.Redis/CacheStoreFactory.cs +16 -0
  1331. package/templates/layers/cache-redis/files/src/__solutionName.dot__.Cache.Redis/ICacheStore.cs +37 -0
  1332. package/templates/layers/cache-redis/files/src/__solutionName.dot__.Cache.Redis/MemoryCacheStore.cs +129 -0
  1333. package/templates/layers/cache-redis/files/src/__solutionName.dot__.Cache.Redis/RedisCacheStore.cs +139 -0
  1334. package/templates/layers/cache-redis/files/src/__solutionName.dot__.Cache.Redis/__solutionName.dot__.Cache.Redis.csproj +18 -0
  1335. package/templates/layers/cache-redis/files/src/__solutionName.snake__/cache/api.py +67 -0
  1336. package/templates/layers/cache-redis/files/src/__solutionName.snake__/cache/keys.py +39 -0
  1337. package/templates/layers/cache-redis/files/src/__solutionName.snake__/cache/redis_store.py +85 -0
  1338. package/templates/layers/cache-redis/files/src/__solutionName.snake__/cache/settings.py +82 -0
  1339. package/templates/layers/cache-redis/files/src/__solutionName.snake__/cache/store.py +113 -0
  1340. package/templates/layers/cache-redis/files/src/cache/index.ts +54 -0
  1341. package/templates/layers/cache-redis/files/src/cache/keys.ts +28 -0
  1342. package/templates/layers/cache-redis/files/src/cache/redis.ts +131 -0
  1343. package/templates/layers/cache-redis/files/src/cache/settings.ts +86 -0
  1344. package/templates/layers/cache-redis/files/src/cache/store.ts +98 -0
  1345. package/templates/layers/cache-redis/files/tests/test_cache_redis.py +105 -0
  1346. package/templates/layers/ci-github-actions/blueprint.yaml +174 -0
  1347. package/templates/layers/ci-github-actions/files/.github/actions/dotnet-setup/action.yml +25 -0
  1348. package/templates/layers/ci-github-actions/files/.github/actions/go-setup/action.yml +30 -0
  1349. package/templates/layers/ci-github-actions/files/.github/actions/node-setup/action.yml +58 -0
  1350. package/templates/layers/ci-github-actions/files/.github/actions/python-setup/action.yml +23 -0
  1351. package/templates/layers/ci-github-actions/files/.github/dependabot.yml +13 -0
  1352. package/templates/layers/ci-github-actions/files/.github/scripts/run-package-script.sh +13 -0
  1353. package/templates/layers/ci-github-actions/files/.github/workflows/ci-dotnet.yml +85 -0
  1354. package/templates/layers/ci-github-actions/files/.github/workflows/ci-go.yml +91 -0
  1355. package/templates/layers/ci-github-actions/files/.github/workflows/ci-node.yml +111 -0
  1356. package/templates/layers/ci-github-actions/files/.github/workflows/ci-python.yml +125 -0
  1357. package/templates/layers/ci-github-actions/files/docs/ci-github-actions.md +106 -0
  1358. package/templates/layers/db-core/blueprint.yaml +98 -0
  1359. package/templates/layers/db-core/files/.env.example +18 -0
  1360. package/templates/layers/db-core/files/__solutionName.dot__.slnx +5 -0
  1361. package/templates/layers/db-core/files/docs/persistence.md +91 -0
  1362. package/templates/layers/db-core/files/internal/db/config.go +108 -0
  1363. package/templates/layers/db-core/files/internal/db/errors.go +61 -0
  1364. package/templates/layers/db-core/files/internal/db/memory.go +141 -0
  1365. package/templates/layers/db-core/files/internal/db/memory_test.go +195 -0
  1366. package/templates/layers/db-core/files/internal/db/ports.go +76 -0
  1367. package/templates/layers/db-core/files/internal/db/repository.go +134 -0
  1368. package/templates/layers/db-core/files/internal/db/retry.go +30 -0
  1369. package/templates/layers/db-core/files/package.json +5 -0
  1370. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/DatabaseException.cs +39 -0
  1371. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/DatabaseOptions.cs +65 -0
  1372. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/DatabaseRetry.cs +24 -0
  1373. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/IRepository.cs +30 -0
  1374. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/IUnitOfWork.cs +23 -0
  1375. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/InMemory/InMemoryDatabase.cs +188 -0
  1376. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/Query.cs +29 -0
  1377. package/templates/layers/db-core/files/src/__solutionName.dot__.Data/__solutionName.dot__.Data.csproj +16 -0
  1378. package/templates/layers/db-core/files/src/__solutionName.snake__/db/api.py +63 -0
  1379. package/templates/layers/db-core/files/src/__solutionName.snake__/db/config.py +79 -0
  1380. package/templates/layers/db-core/files/src/__solutionName.snake__/db/errors.py +47 -0
  1381. package/templates/layers/db-core/files/src/__solutionName.snake__/db/memory.py +143 -0
  1382. package/templates/layers/db-core/files/src/__solutionName.snake__/db/ports.py +80 -0
  1383. package/templates/layers/db-core/files/src/__solutionName.snake__/db/retry.py +25 -0
  1384. package/templates/layers/db-core/files/src/db/config.ts +65 -0
  1385. package/templates/layers/db-core/files/src/db/errors.ts +52 -0
  1386. package/templates/layers/db-core/files/src/db/index.ts +41 -0
  1387. package/templates/layers/db-core/files/src/db/memory.test.ts +107 -0
  1388. package/templates/layers/db-core/files/src/db/memory.ts +182 -0
  1389. package/templates/layers/db-core/files/src/db/ports.ts +58 -0
  1390. package/templates/layers/db-core/files/src/db/retry.ts +20 -0
  1391. package/templates/layers/db-core/files/tests/test_db_core.py +95 -0
  1392. package/templates/layers/db-mongo/blueprint.yaml +157 -0
  1393. package/templates/layers/db-mongo/files/.env.mongo.example +17 -0
  1394. package/templates/layers/db-mongo/files/Directory.Packages.props +7 -0
  1395. package/templates/layers/db-mongo/files/__solutionName.dot__.slnx +5 -0
  1396. package/templates/layers/db-mongo/files/docker-compose.mongo.yml +27 -0
  1397. package/templates/layers/db-mongo/files/docs/db-mongo.md +138 -0
  1398. package/templates/layers/db-mongo/files/go.mod +1 -0
  1399. package/templates/layers/db-mongo/files/internal/db/mongodb/client.go +57 -0
  1400. package/templates/layers/db-mongo/files/internal/db/mongodb/config.go +105 -0
  1401. package/templates/layers/db-mongo/files/internal/db/mongodb/indexes.go +42 -0
  1402. package/templates/layers/db-mongo/files/package.json +5 -0
  1403. package/templates/layers/db-mongo/files/pyproject.toml +2 -0
  1404. package/templates/layers/db-mongo/files/requirements-mongo.txt +2 -0
  1405. package/templates/layers/db-mongo/files/src/__solutionName.dot__.Infrastructure.Mongo/MongoContext.cs +21 -0
  1406. package/templates/layers/db-mongo/files/src/__solutionName.dot__.Infrastructure.Mongo/MongoHealthCheck.cs +28 -0
  1407. package/templates/layers/db-mongo/files/src/__solutionName.dot__.Infrastructure.Mongo/MongoIndexes.cs +25 -0
  1408. package/templates/layers/db-mongo/files/src/__solutionName.dot__.Infrastructure.Mongo/MongoOptions.cs +23 -0
  1409. package/templates/layers/db-mongo/files/src/__solutionName.dot__.Infrastructure.Mongo/MongoServiceCollectionExtensions.cs +31 -0
  1410. package/templates/layers/db-mongo/files/src/__solutionName.dot__.Infrastructure.Mongo/__solutionName.dot__.Infrastructure.Mongo.csproj +18 -0
  1411. package/templates/layers/db-mongo/files/src/__solutionName.snake__/db/mongo/client.py +48 -0
  1412. package/templates/layers/db-mongo/files/src/__solutionName.snake__/db/mongo/config.py +66 -0
  1413. package/templates/layers/db-mongo/files/src/__solutionName.snake__/db/mongo/indexes.py +29 -0
  1414. package/templates/layers/db-mongo/files/src/db/mongo/client.rs +37 -0
  1415. package/templates/layers/db-mongo/files/src/db/mongo/client.ts +51 -0
  1416. package/templates/layers/db-mongo/files/src/db/mongo/config.rs +68 -0
  1417. package/templates/layers/db-mongo/files/src/db/mongo/config.ts +58 -0
  1418. package/templates/layers/db-mongo/files/src/db/mongo/index.ts +3 -0
  1419. package/templates/layers/db-mongo/files/src/db/mongo/indexes.rs +26 -0
  1420. package/templates/layers/db-mongo/files/src/db/mongo/indexes.ts +21 -0
  1421. package/templates/layers/db-mongo/files/src/db/mongo/mod.rs +7 -0
  1422. package/templates/layers/db-mongo/files/src/main/java/__solutionName.lower__/db/mongo/MongoClientProvider.java +66 -0
  1423. package/templates/layers/db-mongo/files/src/main/java/__solutionName.lower__/db/mongo/MongoConfig.java +56 -0
  1424. package/templates/layers/db-mongo/files/src/main/java/__solutionName.lower__/db/mongo/MongoIndexes.java +26 -0
  1425. package/templates/layers/db-postgres/blueprint.yaml +130 -0
  1426. package/templates/layers/db-postgres/files/.env.postgres.example +31 -0
  1427. package/templates/layers/db-postgres/files/Directory.Packages.props +5 -0
  1428. package/templates/layers/db-postgres/files/__solutionName.dot__.slnx +5 -0
  1429. package/templates/layers/db-postgres/files/docker-compose.postgres.yml +28 -0
  1430. package/templates/layers/db-postgres/files/docs/postgres.md +152 -0
  1431. package/templates/layers/db-postgres/files/go.mod +1 -0
  1432. package/templates/layers/db-postgres/files/internal/db/postgres.go +48 -0
  1433. package/templates/layers/db-postgres/files/internal/db/postgres_config.go +79 -0
  1434. package/templates/layers/db-postgres/files/internal/db/postgres_errors.go +59 -0
  1435. package/templates/layers/db-postgres/files/internal/db/postgres_migrate.go +155 -0
  1436. package/templates/layers/db-postgres/files/migrations/0001_init.sql +9 -0
  1437. package/templates/layers/db-postgres/files/package.json +11 -0
  1438. package/templates/layers/db-postgres/files/pyproject.toml +2 -0
  1439. package/templates/layers/db-postgres/files/src/__solutionName.dot__.Data.Postgres/PostgresErrors.cs +57 -0
  1440. package/templates/layers/db-postgres/files/src/__solutionName.dot__.Data.Postgres/PostgresMigrator.cs +171 -0
  1441. package/templates/layers/db-postgres/files/src/__solutionName.dot__.Data.Postgres/PostgresOptions.cs +92 -0
  1442. package/templates/layers/db-postgres/files/src/__solutionName.dot__.Data.Postgres/__solutionName.dot__.Data.Postgres.csproj +25 -0
  1443. package/templates/layers/db-postgres/files/src/__solutionName.snake__/db/postgres.py +256 -0
  1444. package/templates/layers/db-postgres/files/src/__solutionName.snake__/db/postgres_config.py +81 -0
  1445. package/templates/layers/db-postgres/files/src/__solutionName.snake__/db/postgres_errors.py +48 -0
  1446. package/templates/layers/db-postgres/files/src/__solutionName.snake__/db/postgres_migrate.py +132 -0
  1447. package/templates/layers/db-postgres/files/src/db/postgres/config.ts +86 -0
  1448. package/templates/layers/db-postgres/files/src/db/postgres/database.ts +109 -0
  1449. package/templates/layers/db-postgres/files/src/db/postgres/errors.ts +48 -0
  1450. package/templates/layers/db-postgres/files/src/db/postgres/index.ts +16 -0
  1451. package/templates/layers/db-postgres/files/src/db/postgres/migrate.cli.ts +11 -0
  1452. package/templates/layers/db-postgres/files/src/db/postgres/migrate.ts +134 -0
  1453. package/templates/layers/db-postgres/files/src/db/postgres/repository.ts +159 -0
  1454. package/templates/layers/db-sqlite/blueprint.yaml +147 -0
  1455. package/templates/layers/db-sqlite/files/.env.sqlite.example +20 -0
  1456. package/templates/layers/db-sqlite/files/.gitignore.sqlite +5 -0
  1457. package/templates/layers/db-sqlite/files/Directory.Packages.props +6 -0
  1458. package/templates/layers/db-sqlite/files/__solutionName.dot__.slnx +5 -0
  1459. package/templates/layers/db-sqlite/files/docs/db/sqlite.md +91 -0
  1460. package/templates/layers/db-sqlite/files/go.mod +1 -0
  1461. package/templates/layers/db-sqlite/files/internal/db/sqlite/health.go +39 -0
  1462. package/templates/layers/db-sqlite/files/internal/db/sqlite/migrate.go +106 -0
  1463. package/templates/layers/db-sqlite/files/internal/db/sqlite/settings.go +103 -0
  1464. package/templates/layers/db-sqlite/files/internal/db/sqlite/sqlite.go +78 -0
  1465. package/templates/layers/db-sqlite/files/internal/db/sqlite/sqlite_test.go +94 -0
  1466. package/templates/layers/db-sqlite/files/migrations/0001_init.sql +11 -0
  1467. package/templates/layers/db-sqlite/files/package.json +8 -0
  1468. package/templates/layers/db-sqlite/files/pyproject.toml +2 -0
  1469. package/templates/layers/db-sqlite/files/src/__solutionName.dot__.Persistence.Sqlite/SqliteConnectionFactory.cs +67 -0
  1470. package/templates/layers/db-sqlite/files/src/__solutionName.dot__.Persistence.Sqlite/SqliteHealth.cs +37 -0
  1471. package/templates/layers/db-sqlite/files/src/__solutionName.dot__.Persistence.Sqlite/SqliteMigrator.cs +99 -0
  1472. package/templates/layers/db-sqlite/files/src/__solutionName.dot__.Persistence.Sqlite/SqliteOptions.cs +81 -0
  1473. package/templates/layers/db-sqlite/files/src/__solutionName.dot__.Persistence.Sqlite/__solutionName.dot__.Persistence.Sqlite.csproj +18 -0
  1474. package/templates/layers/db-sqlite/files/src/__solutionName.snake__/db/sqlite/connection.py +49 -0
  1475. package/templates/layers/db-sqlite/files/src/__solutionName.snake__/db/sqlite/health.py +36 -0
  1476. package/templates/layers/db-sqlite/files/src/__solutionName.snake__/db/sqlite/migrate.py +58 -0
  1477. package/templates/layers/db-sqlite/files/src/__solutionName.snake__/db/sqlite/settings.py +68 -0
  1478. package/templates/layers/db-sqlite/files/src/db/sqlite/cli.ts +38 -0
  1479. package/templates/layers/db-sqlite/files/src/db/sqlite/client.ts +45 -0
  1480. package/templates/layers/db-sqlite/files/src/db/sqlite/health.ts +30 -0
  1481. package/templates/layers/db-sqlite/files/src/db/sqlite/index.ts +8 -0
  1482. package/templates/layers/db-sqlite/files/src/db/sqlite/migrate.ts +51 -0
  1483. package/templates/layers/db-sqlite/files/src/db/sqlite/settings.ts +75 -0
  1484. package/templates/layers/db-sqlite/files/tests/test_db_sqlite.py +50 -0
  1485. package/templates/layers/devcontainer/blueprint.yaml +130 -0
  1486. package/templates/layers/devcontainer/files/.devcontainer/devcontainer.json +61 -0
  1487. package/templates/layers/devcontainer/files/.devcontainer/post-create.sh +29 -0
  1488. package/templates/layers/devcontainer/files/.devcontainer/setup-dotnet.sh +19 -0
  1489. package/templates/layers/devcontainer/files/.devcontainer/setup-go.sh +13 -0
  1490. package/templates/layers/devcontainer/files/.devcontainer/setup-node.sh +29 -0
  1491. package/templates/layers/devcontainer/files/.devcontainer/setup-python.sh +32 -0
  1492. package/templates/layers/devcontainer/files/docs/devcontainer.md +75 -0
  1493. package/templates/layers/docker/blueprint.yaml +168 -0
  1494. package/templates/layers/docker/files/.dockerignore +80 -0
  1495. package/templates/layers/docker/files/.env.docker.example +17 -0
  1496. package/templates/layers/docker/files/Dockerfile.dotnet +38 -0
  1497. package/templates/layers/docker/files/Dockerfile.go +40 -0
  1498. package/templates/layers/docker/files/Dockerfile.nextjs +42 -0
  1499. package/templates/layers/docker/files/Dockerfile.nodejs +46 -0
  1500. package/templates/layers/docker/files/Dockerfile.python +52 -0
  1501. package/templates/layers/docker/files/Dockerfile.spa +30 -0
  1502. package/templates/layers/docker/files/compose.yaml +35 -0
  1503. package/templates/layers/docker/files/docker/nginx.conf +44 -0
  1504. package/templates/layers/docker/files/docs/docker.md +115 -0
  1505. package/templates/layers/docker/files/next.config.ts +11 -0
  1506. package/templates/layers/docker-compose/blueprint.yaml +118 -0
  1507. package/templates/layers/docker-compose/files/.env.compose.example +66 -0
  1508. package/templates/layers/docker-compose/files/compose/cache-none.yml +3 -0
  1509. package/templates/layers/docker-compose/files/compose/cache-redis.yml +28 -0
  1510. package/templates/layers/docker-compose/files/compose/cache-valkey.yml +27 -0
  1511. package/templates/layers/docker-compose/files/compose/db-mongo.yml +27 -0
  1512. package/templates/layers/docker-compose/files/compose/db-mysql.yml +31 -0
  1513. package/templates/layers/docker-compose/files/compose/db-none.yml +4 -0
  1514. package/templates/layers/docker-compose/files/compose/db-postgres.yml +28 -0
  1515. package/templates/layers/docker-compose/files/compose/queue-kafka.yml +35 -0
  1516. package/templates/layers/docker-compose/files/compose/queue-nats.yml +26 -0
  1517. package/templates/layers/docker-compose/files/compose/queue-none.yml +3 -0
  1518. package/templates/layers/docker-compose/files/compose/queue-rabbitmq.yml +27 -0
  1519. package/templates/layers/docker-compose/files/docker-compose.yml +20 -0
  1520. package/templates/layers/docker-compose/files/docs/local-stack.md +135 -0
  1521. package/templates/layers/evals/blueprint.yaml +211 -0
  1522. package/templates/layers/evals/files/.github/workflows/evals-node.yml +55 -0
  1523. package/templates/layers/evals/files/.github/workflows/evals-python.yml +54 -0
  1524. package/templates/layers/evals/files/docs/evals.md +68 -0
  1525. package/templates/layers/evals/files/evals/README.md +73 -0
  1526. package/templates/layers/evals/files/evals/assertions.py +56 -0
  1527. package/templates/layers/evals/files/evals/assertions.ts +66 -0
  1528. package/templates/layers/evals/files/evals/budget.py +55 -0
  1529. package/templates/layers/evals/files/evals/budget.ts +61 -0
  1530. package/templates/layers/evals/files/evals/cli.ts +76 -0
  1531. package/templates/layers/evals/files/evals/config.py +83 -0
  1532. package/templates/layers/evals/files/evals/config.ts +77 -0
  1533. package/templates/layers/evals/files/evals/dataset.py +90 -0
  1534. package/templates/layers/evals/files/evals/dataset.ts +101 -0
  1535. package/templates/layers/evals/files/evals/datasets/case.schema.json +67 -0
  1536. package/templates/layers/evals/files/evals/datasets/golden.jsonl +4 -0
  1537. package/templates/layers/evals/files/evals/run.py +85 -0
  1538. package/templates/layers/evals/files/evals/runner.py +114 -0
  1539. package/templates/layers/evals/files/evals/runner.ts +125 -0
  1540. package/templates/layers/evals/files/evals/target.ts +95 -0
  1541. package/templates/layers/evals/files/evals/targets.py +103 -0
  1542. package/templates/layers/evals/files/evals/tracing.py +49 -0
  1543. package/templates/layers/evals/files/evals/tracing.ts +31 -0
  1544. package/templates/layers/evals/files/evals/tsconfig.json +15 -0
  1545. package/templates/layers/health-checks/blueprint.yaml +170 -0
  1546. package/templates/layers/health-checks/files/.env.health.example +23 -0
  1547. package/templates/layers/health-checks/files/__solutionName.dot__.slnx +5 -0
  1548. package/templates/layers/health-checks/files/docs/health-checks.md +200 -0
  1549. package/templates/layers/health-checks/files/internal/health/config.go +96 -0
  1550. package/templates/layers/health-checks/files/internal/health/health.go +113 -0
  1551. package/templates/layers/health-checks/files/internal/health/health_test.go +102 -0
  1552. package/templates/layers/health-checks/files/internal/health/http.go +56 -0
  1553. package/templates/layers/health-checks/files/internal/health/probes.go +88 -0
  1554. package/templates/layers/health-checks/files/internal/health/runner.go +100 -0
  1555. package/templates/layers/health-checks/files/package.json +5 -0
  1556. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/DependencyProbeOptions.cs +26 -0
  1557. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/HealthEndpointExtensions.cs +34 -0
  1558. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/HealthOptions.cs +25 -0
  1559. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/HealthProbeResponder.cs +121 -0
  1560. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/HealthServiceCollectionExtensions.cs +51 -0
  1561. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/HealthTags.cs +10 -0
  1562. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/HttpDependencyHealthCheck.cs +44 -0
  1563. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/TcpDependencyHealthCheck.cs +36 -0
  1564. package/templates/layers/health-checks/files/src/__solutionName.dot__.Health/__solutionName.dot__.Health.csproj +15 -0
  1565. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/__init__.py +28 -0
  1566. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/models.py +48 -0
  1567. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/probes.py +82 -0
  1568. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/register.py +15 -0
  1569. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/registry.py +24 -0
  1570. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/router.py +52 -0
  1571. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/runner.py +94 -0
  1572. package/templates/layers/health-checks/files/src/__solutionName.snake__/health/settings.py +33 -0
  1573. package/templates/layers/health-checks/files/src/app/health/live/route.ts +11 -0
  1574. package/templates/layers/health-checks/files/src/app/health/ready/route.ts +10 -0
  1575. package/templates/layers/health-checks/files/src/app/health/startup/route.ts +10 -0
  1576. package/templates/layers/health-checks/files/src/health/__tests__/health.test.ts +66 -0
  1577. package/templates/layers/health-checks/files/src/health/config.ts +62 -0
  1578. package/templates/layers/health-checks/files/src/health/handler.ts +50 -0
  1579. package/templates/layers/health-checks/files/src/health/index.ts +20 -0
  1580. package/templates/layers/health-checks/files/src/health/node/http.ts +26 -0
  1581. package/templates/layers/health-checks/files/src/health/node/tcp.ts +36 -0
  1582. package/templates/layers/health-checks/files/src/health/probes.ts +61 -0
  1583. package/templates/layers/health-checks/files/src/health/register.ts +15 -0
  1584. package/templates/layers/health-checks/files/src/health/registry.ts +27 -0
  1585. package/templates/layers/health-checks/files/src/health/runner.ts +76 -0
  1586. package/templates/layers/health-checks/files/src/health/types.ts +39 -0
  1587. package/templates/layers/health-checks/files/tests/__init__.py +1 -0
  1588. package/templates/layers/health-checks/files/tests/test_health.py +51 -0
  1589. package/templates/layers/lint-format/blueprint.yaml +178 -0
  1590. package/templates/layers/lint-format/files/.editorconfig +87 -0
  1591. package/templates/layers/lint-format/files/.golangci.yml +34 -0
  1592. package/templates/layers/lint-format/files/.prettierignore +20 -0
  1593. package/templates/layers/lint-format/files/.prettierrc.json +11 -0
  1594. package/templates/layers/lint-format/files/docs/lint-format.md +111 -0
  1595. package/templates/layers/lint-format/files/eslint.config.mjs +43 -0
  1596. package/templates/layers/lint-format/files/package.json +9 -0
  1597. package/templates/layers/lint-format/files/ruff.toml +25 -0
  1598. package/templates/layers/observability-otel/blueprint.yaml +212 -0
  1599. package/templates/layers/observability-otel/files/.env.otel.example +30 -0
  1600. package/templates/layers/observability-otel/files/Directory.Packages.props +8 -0
  1601. package/templates/layers/observability-otel/files/__solutionName.dot__.slnx +5 -0
  1602. package/templates/layers/observability-otel/files/docker-compose.otel.yml +16 -0
  1603. package/templates/layers/observability-otel/files/docs/observability.md +224 -0
  1604. package/templates/layers/observability-otel/files/go.mod +7 -0
  1605. package/templates/layers/observability-otel/files/internal/telemetry/config.go +122 -0
  1606. package/templates/layers/observability-otel/files/internal/telemetry/http.go +33 -0
  1607. package/templates/layers/observability-otel/files/internal/telemetry/logging.go +84 -0
  1608. package/templates/layers/observability-otel/files/internal/telemetry/provider.go +77 -0
  1609. package/templates/layers/observability-otel/files/otel-collector-config.yaml +47 -0
  1610. package/templates/layers/observability-otel/files/package.json +15 -0
  1611. package/templates/layers/observability-otel/files/pyproject.toml +2 -0
  1612. package/templates/layers/observability-otel/files/src/__solutionName.dot__.Observability/ObservabilityExtensions.cs +81 -0
  1613. package/templates/layers/observability-otel/files/src/__solutionName.dot__.Observability/ObservabilityOptions.cs +37 -0
  1614. package/templates/layers/observability-otel/files/src/__solutionName.dot__.Observability/__solutionName.dot__.Observability.csproj +25 -0
  1615. package/templates/layers/observability-otel/files/src/__solutionName.snake__/otel/__init__.py +15 -0
  1616. package/templates/layers/observability-otel/files/src/__solutionName.snake__/otel/config.py +99 -0
  1617. package/templates/layers/observability-otel/files/src/__solutionName.snake__/otel/log.py +86 -0
  1618. package/templates/layers/observability-otel/files/src/__solutionName.snake__/otel/setup.py +124 -0
  1619. package/templates/layers/observability-otel/files/src/instrumentation.ts +9 -0
  1620. package/templates/layers/observability-otel/files/src/otel/config.ts +83 -0
  1621. package/templates/layers/observability-otel/files/src/otel/logger.ts +46 -0
  1622. package/templates/layers/observability-otel/files/src/otel/register.ts +5 -0
  1623. package/templates/layers/observability-otel/files/src/otel/sdk.ts +73 -0
  1624. package/templates/layers/queue-broker/blueprint.yaml +194 -0
  1625. package/templates/layers/queue-broker/files/.env.queue.example +35 -0
  1626. package/templates/layers/queue-broker/files/Directory.Packages.props +7 -0
  1627. package/templates/layers/queue-broker/files/__solutionName.dot__.slnx +5 -0
  1628. package/templates/layers/queue-broker/files/cmd/worker/main.go +34 -0
  1629. package/templates/layers/queue-broker/files/docker-compose.queue-rabbitmq.yml +26 -0
  1630. package/templates/layers/queue-broker/files/docker-compose.queue-redis.yml +23 -0
  1631. package/templates/layers/queue-broker/files/docs/queue-asynq.md +71 -0
  1632. package/templates/layers/queue-broker/files/docs/queue-bullmq.md +62 -0
  1633. package/templates/layers/queue-broker/files/docs/queue-celery.md +58 -0
  1634. package/templates/layers/queue-broker/files/docs/queue-masstransit.md +84 -0
  1635. package/templates/layers/queue-broker/files/go.mod +2 -0
  1636. package/templates/layers/queue-broker/files/internal/queue/client.go +57 -0
  1637. package/templates/layers/queue-broker/files/internal/queue/config.go +109 -0
  1638. package/templates/layers/queue-broker/files/internal/queue/config_test.go +38 -0
  1639. package/templates/layers/queue-broker/files/internal/queue/handlers.go +33 -0
  1640. package/templates/layers/queue-broker/files/internal/queue/server.go +29 -0
  1641. package/templates/layers/queue-broker/files/internal/queue/tasks.go +11 -0
  1642. package/templates/layers/queue-broker/files/package.json +6 -0
  1643. package/templates/layers/queue-broker/files/pyproject.toml +2 -0
  1644. package/templates/layers/queue-broker/files/src/__solutionName.dot__.Queue/Consumers/WelcomeEmailRequestedConsumer.cs +24 -0
  1645. package/templates/layers/queue-broker/files/src/__solutionName.dot__.Queue/Contracts/WelcomeEmailRequested.cs +7 -0
  1646. package/templates/layers/queue-broker/files/src/__solutionName.dot__.Queue/IJobPublisher.cs +11 -0
  1647. package/templates/layers/queue-broker/files/src/__solutionName.dot__.Queue/JobPublisher.cs +10 -0
  1648. package/templates/layers/queue-broker/files/src/__solutionName.dot__.Queue/QueueOptions.cs +32 -0
  1649. package/templates/layers/queue-broker/files/src/__solutionName.dot__.Queue/QueueServiceCollectionExtensions.cs +60 -0
  1650. package/templates/layers/queue-broker/files/src/__solutionName.dot__.Queue/__solutionName.dot__.Queue.csproj +21 -0
  1651. package/templates/layers/queue-broker/files/src/__solutionName.snake__/queue/__init__.py +12 -0
  1652. package/templates/layers/queue-broker/files/src/__solutionName.snake__/queue/app.py +35 -0
  1653. package/templates/layers/queue-broker/files/src/__solutionName.snake__/queue/config.py +90 -0
  1654. package/templates/layers/queue-broker/files/src/__solutionName.snake__/queue/producer.py +10 -0
  1655. package/templates/layers/queue-broker/files/src/__solutionName.snake__/queue/tasks.py +31 -0
  1656. package/templates/layers/queue-broker/files/src/queue/config.ts +60 -0
  1657. package/templates/layers/queue-broker/files/src/queue/connection.ts +19 -0
  1658. package/templates/layers/queue-broker/files/src/queue/handlers.ts +22 -0
  1659. package/templates/layers/queue-broker/files/src/queue/index.ts +8 -0
  1660. package/templates/layers/queue-broker/files/src/queue/jobs.ts +15 -0
  1661. package/templates/layers/queue-broker/files/src/queue/producer.ts +39 -0
  1662. package/templates/layers/queue-broker/files/src/queue/worker.cli.ts +32 -0
  1663. package/templates/layers/queue-broker/files/src/queue/worker.ts +28 -0
  1664. package/templates/layers/queue-broker/files/tests/test_queue_config.py +37 -0
  1665. package/templates/layers/release-automation/blueprint.yaml +205 -0
  1666. package/templates/layers/release-automation/files/.changeset/README.md +31 -0
  1667. package/templates/layers/release-automation/files/.changeset/config.json +12 -0
  1668. package/templates/layers/release-automation/files/.githooks/commit-msg +32 -0
  1669. package/templates/layers/release-automation/files/.github/workflows/commit-conventions.yml +45 -0
  1670. package/templates/layers/release-automation/files/.github/workflows/release-changesets.yml +68 -0
  1671. package/templates/layers/release-automation/files/.github/workflows/release-dotnet.yml +90 -0
  1672. package/templates/layers/release-automation/files/.github/workflows/release-go.yml +89 -0
  1673. package/templates/layers/release-automation/files/.github/workflows/release-monorepo.yml +40 -0
  1674. package/templates/layers/release-automation/files/.github/workflows/release-node.yml +85 -0
  1675. package/templates/layers/release-automation/files/.github/workflows/release-python.yml +68 -0
  1676. package/templates/layers/release-automation/files/.release-please-manifest.json +3 -0
  1677. package/templates/layers/release-automation/files/docs/release-automation.md +154 -0
  1678. package/templates/layers/release-automation/files/release-please-config.json +22 -0
  1679. package/templates/layers/security-supply-chain/blueprint.yaml +208 -0
  1680. package/templates/layers/security-supply-chain/files/.githooks/pre-commit +17 -0
  1681. package/templates/layers/security-supply-chain/files/.github/dependabot.yml +30 -0
  1682. package/templates/layers/security-supply-chain/files/.github/workflows/codeql.yml +54 -0
  1683. package/templates/layers/security-supply-chain/files/.github/workflows/dependency-review.yml +35 -0
  1684. package/templates/layers/security-supply-chain/files/.github/workflows/sbom.yml +56 -0
  1685. package/templates/layers/security-supply-chain/files/.github/workflows/scorecard.yml +51 -0
  1686. package/templates/layers/security-supply-chain/files/.github/workflows/secret-scan.yml +62 -0
  1687. package/templates/layers/security-supply-chain/files/.gitleaks.toml +42 -0
  1688. package/templates/layers/security-supply-chain/files/SECURITY.md +36 -0
  1689. package/templates/layers/security-supply-chain/files/docs/security-supply-chain.md +124 -0
  1690. package/templates/layers/security-supply-chain/files/npmrc +13 -0
  1691. package/templates/layers/security-supply-chain/files/renovate.json +26 -0
  1692. package/templates/layers/testing-e2e/blueprint.yaml +199 -0
  1693. package/templates/layers/testing-e2e/files/.env.e2e.example +32 -0
  1694. package/templates/layers/testing-e2e/files/Directory.Packages.props +7 -0
  1695. package/templates/layers/testing-e2e/files/__solutionName.dot__.slnx +5 -0
  1696. package/templates/layers/testing-e2e/files/docs/testing-e2e.md +106 -0
  1697. package/templates/layers/testing-e2e/files/e2e/api/contract.spec.ts +37 -0
  1698. package/templates/layers/testing-e2e/files/e2e/api/health.spec.ts +29 -0
  1699. package/templates/layers/testing-e2e/files/e2e/browser/app.spec.ts +27 -0
  1700. package/templates/layers/testing-e2e/files/e2e/browser/navigation.spec.ts +26 -0
  1701. package/templates/layers/testing-e2e/files/e2e/config.ts +85 -0
  1702. package/templates/layers/testing-e2e/files/e2e/support.ts +20 -0
  1703. package/templates/layers/testing-e2e/files/package.json +8 -0
  1704. package/templates/layers/testing-e2e/files/playwright.config.ts +44 -0
  1705. package/templates/layers/testing-e2e/files/test/e2e/config.go +71 -0
  1706. package/templates/layers/testing-e2e/files/test/e2e/contract_test.go +65 -0
  1707. package/templates/layers/testing-e2e/files/test/e2e/health_test.go +71 -0
  1708. package/templates/layers/testing-e2e/files/tests/__solutionName.dot__.E2E/ApiContractTests.cs +51 -0
  1709. package/templates/layers/testing-e2e/files/tests/__solutionName.dot__.E2E/DeploymentFixture.cs +44 -0
  1710. package/templates/layers/testing-e2e/files/tests/__solutionName.dot__.E2E/E2eSettings.cs +26 -0
  1711. package/templates/layers/testing-e2e/files/tests/__solutionName.dot__.E2E/HealthContractTests.cs +42 -0
  1712. package/templates/layers/testing-e2e/files/tests/__solutionName.dot__.E2E/__solutionName.dot__.E2E.csproj +23 -0
  1713. package/templates/layers/testing-e2e/files/tests/e2e/conftest.py +52 -0
  1714. package/templates/layers/testing-e2e/files/tests/e2e/e2e_config.py +47 -0
  1715. package/templates/layers/testing-e2e/files/tests/e2e/test_api_contract.py +35 -0
  1716. package/templates/layers/testing-e2e/files/tests/e2e/test_health_contract.py +28 -0
  1717. package/templates/layers/testing-unit/blueprint.yaml +161 -0
  1718. package/templates/layers/testing-unit/files/.coveragerc +12 -0
  1719. package/templates/layers/testing-unit/files/Directory.Packages.props +9 -0
  1720. package/templates/layers/testing-unit/files/__solutionName.dot__.slnx +5 -0
  1721. package/templates/layers/testing-unit/files/docs/testing.md +90 -0
  1722. package/templates/layers/testing-unit/files/internal/testsupport/clock.go +89 -0
  1723. package/templates/layers/testing-unit/files/internal/testsupport/clock_test.go +132 -0
  1724. package/templates/layers/testing-unit/files/internal/testsupport/recorder.go +41 -0
  1725. package/templates/layers/testing-unit/files/package.json +10 -0
  1726. package/templates/layers/testing-unit/files/pyproject.toml +2 -0
  1727. package/templates/layers/testing-unit/files/pytest.ini +16 -0
  1728. package/templates/layers/testing-unit/files/tests/__solutionName.dot__.Tests/Recorder.cs +66 -0
  1729. package/templates/layers/testing-unit/files/tests/__solutionName.dot__.Tests/RecorderTests.cs +90 -0
  1730. package/templates/layers/testing-unit/files/tests/__solutionName.dot__.Tests/__solutionName.dot__.Tests.csproj +32 -0
  1731. package/templates/layers/testing-unit/files/tests/__solutionName.dot__.Tests/coverlet.runsettings +17 -0
  1732. package/templates/layers/testing-unit/files/tests/conftest.py +17 -0
  1733. package/templates/layers/testing-unit/files/tests/support/clock.ts +81 -0
  1734. package/templates/layers/testing-unit/files/tests/support/index.ts +2 -0
  1735. package/templates/layers/testing-unit/files/tests/support/recorder.ts +21 -0
  1736. package/templates/layers/testing-unit/files/tests/support.py +78 -0
  1737. package/templates/layers/testing-unit/files/tests/support.test.ts +87 -0
  1738. package/templates/layers/testing-unit/files/tests/test_support.py +85 -0
  1739. package/templates/layers/testing-unit/files/vitest.config.ts +52 -0
@@ -0,0 +1,1364 @@
1
+ # Groundplan template catalog - source research
2
+ # category: observability
3
+ # researched: 2026-07-18
4
+ # adversarially verified: 2026-07-18
5
+ # gap-fill pass + full re-verification: 2026-07-19
6
+ # adversarial re-verification (3rd pass): 2026-07-19
7
+ #
8
+ # VERIFICATION STATUS - READ THIS FIRST
9
+ # The 2026-07-19 adversarial pass independently re-verified all 38 pre-existing entries
10
+ # (33 sources + 1 reference-only + 4 excluded) against primary sources, and added 4 new
11
+ # source entries, giving 42 total: 37 sources + 1 reference-only + 4 excluded.
12
+ #
13
+ # License: read from each repository's actual LICENSE file via raw.githubusercontent.com,
14
+ # AND cross-checked against the GitHub API's license.spdx_id for all 42 entries once the
15
+ # rate-limit window allowed. The two agreed everywhere the API committed to an answer.
16
+ # Every recorded `spdx` matched the licence text actually served. NO license mismatches
17
+ # were found - the gate held on all 42 entries, and on all 38 pre-existing ones across
18
+ # three consecutive passes. Nothing was dropped for licence this pass.
19
+ # Three repos return spdx_id NOASSERTION, i.e. the API declines to classify them, and these
20
+ # are exactly the ones where reading the raw text is load-bearing:
21
+ # - hynek/structlog -> dual "Apache-2.0 OR MIT" (LICENSE-MIT + LICENSE-APACHE + NOTICE,
22
+ # no root LICENSE). Vendorable; reproduce one licence's notice.
23
+ # - SigNoz/signoz -> MIT Expat core with a proprietary ee/ carve-out. Vendorable only
24
+ # outside ee/ and cmd/enterprise/.
25
+ # - getsentry/sentry -> FSL-1.1-Apache-2.0, source-available. EXCLUDED, and it is the
26
+ # NOASSERTION case that would have been most damaging to guess.
27
+ # Anything trusting spdx_id alone would have mis-shelved all three. The three carve-out claims
28
+ # (SigNoz ee/, coroot absent ee/, structlog dual-licence file layout) were each re-read
29
+ # from source and confirmed verbatim; see the licenseNote on those entries.
30
+ # Stars / archived / lastCommit: star counts read from the github.com repo star counter and
31
+ # lastCommit from the DEFAULT-BRANCH commits.atom feed. Default branch matters: two repos
32
+ # here do not use main/master (getsentry/sentry-javascript is `develop`,
33
+ # getsentry/sentry-python is `master` with a stale `main` still present), and reading the
34
+ # wrong branch understates lastCommit by months. Both were resolved against the default
35
+ # branch and both recorded dates are correct. All 42 URLs return HTTP 200, and the API
36
+ # confirms archived=false and disabled=false on every one. Every star count is within 0.1%
37
+ # of the recorded figure - no entry came close to the 20% drift threshold. Oldest pushed_at
38
+ # is OpenSLO at 2025-11-25, ~8 months, so no entry is anywhere near the 18-month gate.
39
+ # ONE REPO WAS RENAMED: dotnet/aspire is now microsoft/aspire. The old path still resolves
40
+ # over HTML and raw.githubusercontent because GitHub keeps rename redirects, so only the API
41
+ # exposes it - and it does so as a bare HTTP 301, which silently yields no repo object to
42
+ # tooling that does not follow redirects. Name and url updated to canonical. Worth repeating
43
+ # on future passes: a 301 from api.github.com/repos/{owner}/{repo} means renamed, not missing.
44
+ # Note on pushed_at vs lastCommit: these legitimately differ. pushed_at advances on a push to
45
+ # ANY branch or tag; lastCommit here is the DEFAULT-branch commit date. Several entries show
46
+ # a later pushed_at for that reason (see google/slo-generator, where the gap is ~4 months).
47
+ # Neither figure is wrong; do not reconcile them by editing one.
48
+ # Path claims: every file and directory named in a whatToBorrow was fetched. Negative
49
+ # controls (known-bad paths) were run to confirm the checker distinguishes 200 from 404.
50
+ #
51
+ # SYSTEMATIC DEFECT FOUND AND FIXED THIS PASS - CORE vs CONTRIB.
52
+ # The 2026-07-19 pass found the same error repeated across FOUR languages: artifacts that
53
+ # live in an OTel *-contrib repo were attributed to the corresponding core repo, so the
54
+ # cited paths 404 and a scaffolder following them would generate nothing.
55
+ # - opentelemetry-go: cited example/otel-collector and example/dice; core has no
56
+ # example/ directory at all. They are in opentelemetry-go-contrib/examples/.
57
+ # - opentelemetry-python: cited the opentelemetry-instrument zero-code CLI; that console
58
+ # script is declared in opentelemetry-python-contrib, not core.
59
+ # - opentelemetry-js: cited getNodeAutoInstrumentations() alongside NodeSDK as if both
60
+ # were core; NodeSDK is core, the auto-instrumentations are in opentelemetry-js-contrib.
61
+ # - opentelemetry-dotnet: its `stack` line advertised "ASP.NET Core and HttpClient
62
+ # instrumentation"; src/OpenTelemetry.Instrumentation.AspNetCore and .Http both 404 in
63
+ # core and live in opentelemetry-dotnet-contrib.
64
+ # Each core entry now states the split explicitly, and the four contrib repos were added as
65
+ # first-class gated entries (all Apache-2.0, all verified) rather than left as bare prose
66
+ # references - code we point at must clear the same licence gate as code we list.
67
+ # Two further stale-path defects were corrected outside that family:
68
+ # - opentelemetry-java-instrumentation cited docs/suppressing-instrumentation.md, which
69
+ # does not exist; the surviving docs are agent-features.md, supported-libraries.md and
70
+ # advanced-configuration-options.md.
71
+ # - SigNoz was told to borrow "the deploy/ compose files". Upstream has deprecated and
72
+ # DELETED them - deploy/ now holds only README.md, MIGRATION.md and a dead install.sh,
73
+ # and deploy/README.md says so in as many words. That entry was rewritten around what
74
+ # still exists (conf/example.yaml, pkg/telemetrystore/) and demoted in practice to
75
+ # reference reading.
76
+ # A licence nuance was also made explicit on grafana/docker-otel-lgtm: the repo is honestly
77
+ # Apache-2.0 and its own files are safe to copy, but its Dockerfile DOWNLOADS pinned Grafana
78
+ # and Loki binaries, so the built image is an AGPL-containing aggregate. Copying the repo is
79
+ # clean; redistributing the image as your own artifact is not.
80
+ # One stale API convention was corrected: getsentry/sentry-javascript's Next.js layout.
81
+ # The recorded three-file convention put client init in sentry.client.config.ts; the SDK
82
+ # source now logs a deprecation warning for that filename and states it stops working under
83
+ # Turbopack, having moved client init to instrumentation-client.ts. Read from
84
+ # packages/nextjs/src/config/webpack.ts, not from docs. Everything else resolved.
85
+ # Staleness: the oldest entry is OpenSLO at 2025-10-09 (~9 months), comfortably inside the
86
+ # 18-month gate. No entry marked maintained:true is stale.
87
+ #
88
+ # licenseClass: vendorable = MIT/Apache-2.0/BSD/ISC/Unlicense/CC0/0BSD (copy and adapt,
89
+ # with attribution where the license requires it - Apache-2.0 and BSD need the notice);
90
+ # reference-only = MPL-2.0/LGPL/EPL (read for ideas, do not copy files);
91
+ # excluded = GPL/AGPL/SSPL/BUSL/source-available/unlicensed.
92
+ # maintained = not archived AND pushed_at within 18 months of the research date.
93
+
94
+ category: observability
95
+
96
+ sources:
97
+ - name: "grafana/docker-otel-lgtm"
98
+ url: "https://github.com/grafana/docker-otel-lgtm"
99
+ stars: 1939
100
+ spdx: "Apache-2.0"
101
+ licenseClass: vendorable
102
+ maintained: true
103
+ lastCommit: "2026-07-17"
104
+ archived: false
105
+ stack: "Docker image bundling OpenTelemetry Collector + Loki, Grafana, Tempo, Prometheus/Mimir, Pyroscope"
106
+ complexity: simple
107
+ proposedLayerIds:
108
+ - obs-stack-lgtm-single-container
109
+ - otel-collector-config
110
+ - obs-grafana-provisioning
111
+ - obs-local-dev-backend
112
+ whatToBorrow: >-
113
+ The single best "observability backend in one container" layer. Borrow docker/Dockerfile
114
+ plus docker/run-all.sh, the supervisor-style entrypoint that boots all five backends from
115
+ one image via the per-component run-*.sh scripts. Take docker/otelcol-config.yaml as a
116
+ minimal working collector config that fans OTLP out to Loki for logs, Tempo for traces and
117
+ Prometheus for metrics. For zero-click Grafana, the provisioning artifacts are FLAT FILES
118
+ in docker/, not a directory tree: docker/grafana-datasources.yaml,
119
+ docker/grafana-dashboards.yaml and docker/grafana-dashboard-*.json (red-metrics-classic,
120
+ red-metrics-native, jvm-metrics). The Dockerfile COPYs them to
121
+ /otel-lgtm/grafana/conf/provisioning/{datasources,dashboards}/ - that path is the
122
+ destination inside the image, so replicate the copy step, do not look for it in the repo.
123
+ The examples/ directory holds small per-language senders that convert directly into
124
+ template smoke tests.
125
+ whatToAvoid: >-
126
+ Explicitly not a production target - no persistence by default, admin/admin credentials
127
+ baked into the image, and all five components share one container so they cannot be
128
+ scaled, upgraded or restarted independently. Note the repo ships an IMAGE, not a compose
129
+ file, so the generated repo must supply its own compose service. Use it strictly as the
130
+ local/CI backend and keep a separate production backend layer; a generated repo that ships
131
+ this as its only observability story will lose all telemetry on container restart.
132
+ licenseNote: >-
133
+ Apache-2.0 confirmed from the LICENSE file, and every artifact this entry tells you to
134
+ copy (Dockerfile, run-*.sh, otelcol-config.yaml, the grafana-* provisioning files and
135
+ dashboards) is original work in THIS repo and therefore genuinely Apache-2.0.
136
+ But do not over-read that: the repo vendors no AGPL source, it DOWNLOADS AGPL binaries
137
+ at build time. docker/Dockerfile pins GRAFANA_VERSION and LOKI_VERSION as build args
138
+ (v13.1.0 and v3.7.3 at the time of checking) and fetches the released binaries, and
139
+ there is no NOTICE or third-party-license file in the repo to inherit. The practical
140
+ boundary: copying this repo's own files into a generated repo is clean, and running or
141
+ referencing the resulting image is clean, but the image itself is an aggregate
142
+ containing AGPL components - so a generated repo must never present that image as its
143
+ own redistributable artifact, and must never lift Grafana or Loki source out of it.
144
+ See the grafana/loki and grafana/grafana entries in `excluded` for the same boundary.
145
+
146
+ - name: "open-telemetry/opentelemetry-collector-contrib"
147
+ url: "https://github.com/open-telemetry/opentelemetry-collector-contrib"
148
+ stars: 4796
149
+ spdx: "Apache-2.0"
150
+ licenseClass: vendorable
151
+ maintained: true
152
+ lastCommit: "2026-07-17"
153
+ archived: false
154
+ stack: "Go - OpenTelemetry Collector components (receivers, processors, exporters, connectors)"
155
+ complexity: enterprise
156
+ proposedLayerIds:
157
+ - otel-collector-config
158
+ - obs-pipeline-processors
159
+ - obs-tail-sampling
160
+ whatToBorrow: >-
161
+ This is where real collector COMPONENT configuration lives. Borrow the processor
162
+ configuration patterns that every production pipeline needs - memory_limiter and batch
163
+ ordering, resourcedetection for cloud/host attributes, transform/filter with OTTL
164
+ statements, and tailsamplingprocessor policy blocks for keeping errors and slow traces
165
+ while dropping the rest. Each component directory carries its own README with a worked
166
+ config example; those examples are the copyable unit.
167
+ whatToAvoid: >-
168
+ Enormous surface - hundreds of components at differing stability levels, and alpha
169
+ components change their config schema between minor releases, so copied YAML silently
170
+ breaks on upgrade. Check each component's stability badge before a template depends on
171
+ it. Never vendor Go source from this repo; take YAML config only. The full contrib
172
+ distribution is far too heavy to be a sensible default runtime.
173
+ CORRECTION: the OCB builder does NOT live here. A previous revision of this file
174
+ attributed it to contrib and called it the highest-leverage artifact in this repo - that
175
+ was wrong and would have sent the scaffolder to a path that 404s. cmd/builder is in
176
+ open-telemetry/opentelemetry-collector; ready-made distribution manifests are in
177
+ open-telemetry/opentelemetry-collector-releases (distributions/). See the dedicated
178
+ entry below.
179
+
180
+ - name: "open-telemetry/opentelemetry-collector-releases"
181
+ url: "https://github.com/open-telemetry/opentelemetry-collector-releases"
182
+ stars: 488
183
+ spdx: "Apache-2.0"
184
+ licenseClass: vendorable
185
+ maintained: true
186
+ lastCommit: "2026-07-15"
187
+ archived: false
188
+ stack: "OCB (OpenTelemetry Collector Builder) distribution manifests and release tooling"
189
+ complexity: standard
190
+ proposedLayerIds:
191
+ - otel-collector-custom-distro
192
+ whatToBorrow: >-
193
+ The correct home for the custom-distribution pattern that the contrib entry previously
194
+ misattributed. distributions/ holds real manifest.yaml files (otelcol, otelcol-contrib,
195
+ otelcol-k8s) showing the exact schema - dist: name/description/output_path, then explicit
196
+ receivers/processors/exporters/connectors lists pinned by gomod line. Generating one of
197
+ these plus an `ocb --config manifest.yaml` build step produces a slim purpose-built
198
+ collector binary instead of shipping the multi-hundred-megabyte contrib image. This is
199
+ the single highest-leverage collector artifact a scaffolder can generate.
200
+ whatToAvoid: >-
201
+ Every component gomod line carries a version that must match the collector core version
202
+ or the build fails with confusing Go module errors - generate the manifest with one
203
+ pinned version variable rather than per-line literals. The builder is a build-time
204
+ dependency, so the generated repo needs a Go toolchain in CI even if the app is not Go.
205
+ verificationNote: >-
206
+ Added during adversarial verification to carry the OCB layer that was wrongly attributed
207
+ to collector-contrib. Apache-2.0 confirmed from the LICENSE file; distributions/ path
208
+ confirmed to resolve.
209
+
210
+ - name: "open-telemetry/opentelemetry-dotnet"
211
+ url: "https://github.com/open-telemetry/opentelemetry-dotnet"
212
+ stars: 3731
213
+ spdx: "Apache-2.0"
214
+ licenseClass: vendorable
215
+ maintained: true
216
+ lastCommit: "2026-07-17"
217
+ archived: false
218
+ stack: ".NET / C# - OpenTelemetry SDK, OTLP/Prometheus/Console exporters, hosting extensions (instrumentation packages are in dotnet-contrib)"
219
+ complexity: standard
220
+ proposedLayerIds:
221
+ - otel-instrumentation-dotnet
222
+ - otel-exporter-otlp
223
+ - obs-metrics-prometheus
224
+ whatToBorrow: >-
225
+ The builder-extension wiring is the copyable artifact: a single
226
+ services.AddOpenTelemetry().ConfigureResource(...).WithTracing(...).WithMetrics(...)
227
+ block plus .UseOtlpExporter(), which collapses the whole setup into one file that drops
228
+ cleanly into a ServiceDefaults-style project. Borrow the ResourceBuilder construction
229
+ (service.name, service.version, deployment.environment from config rather than
230
+ literals), the ActivitySource/Meter singleton-per-assembly convention for custom spans
231
+ and metrics, and the docs/ plus examples/ trees which carry compiling reference setups
232
+ for console, ASP.NET Core and worker hosts.
233
+ Scope correction: this repo's src/ holds OpenTelemetry, OpenTelemetry.Api, the exporters
234
+ (OpenTelemetryProtocol, Prometheus.AspNetCore, Prometheus.HttpListener, Console, Zipkin),
235
+ Extensions.Hosting and Extensions.Propagators. It does NOT hold the AspNetCore or Http
236
+ instrumentation packages - those moved to opentelemetry-dotnet-contrib, and a previous
237
+ revision listed them here. AddAspNetCoreInstrumentation()/AddHttpClientInstrumentation()
238
+ therefore need a package reference resolved against contrib; see the entry below.
239
+ Note the LICENSE file here is LICENSE.TXT, not LICENSE - the attribution step in a
240
+ generated repo must copy the right filename.
241
+ whatToAvoid: >-
242
+ Instrumentation packages version independently from the core SDK and several remain
243
+ pre-release, so a template must pin a coherent set or restore resolves a mismatched pair
244
+ that fails at runtime. The logging story changed across major versions (ILogger bridge
245
+ vs OpenTelemetryLoggerProvider), so older snippets do not compile. Metrics exported
246
+ without an explicit view can produce very high cardinality from ASP.NET Core route
247
+ templates - constrain this in the generated config.
248
+
249
+ - name: "open-telemetry/opentelemetry-dotnet-contrib"
250
+ url: "https://github.com/open-telemetry/opentelemetry-dotnet-contrib"
251
+ stars: 646
252
+ spdx: "Apache-2.0"
253
+ licenseClass: vendorable
254
+ maintained: true
255
+ lastCommit: "2026-07-17"
256
+ archived: false
257
+ stack: ".NET - OTel instrumentation packages (ASP.NET Core, HttpClient, SQL, StackExchange.Redis) and resource detectors"
258
+ complexity: standard
259
+ proposedLayerIds:
260
+ - otel-instrumentation-dotnet
261
+ - obs-http-server-instrumentation
262
+ whatToBorrow: >-
263
+ Where the .NET instrumentation packages actually live, added during verification because
264
+ the core opentelemetry-dotnet entry claimed them.
265
+ src/OpenTelemetry.Instrumentation.AspNetCore and src/OpenTelemetry.Instrumentation.Http
266
+ are the two that matter for any web service - they are what make
267
+ AddAspNetCoreInstrumentation() and AddHttpClientInstrumentation() resolve, and without
268
+ them the ServiceDefaults-style block from the core entry compiles to a tracer that emits
269
+ no server spans. Each package README documents its options object, which is where request
270
+ filtering and route-template enrichment are configured. The resource-detector packages
271
+ are the clean way to populate cloud/host resource attributes without hand-rolling them.
272
+ whatToAvoid: >-
273
+ Independently versioned from the core SDK and several packages sit at -beta/-rc even
274
+ while core is stable, so a template must pin core and each instrumentation package as one
275
+ coherent set - this is the concrete cause of the version-mismatch failure the core entry
276
+ warns about. Its LICENSE file is LICENSE.TXT (same filename caveat as core). Prefer
277
+ individual packages over broad meta-references so the dependency surface stays small.
278
+ verificationNote: >-
279
+ Added 2026-07-19. Apache-2.0 read from LICENSE.TXT (there is no plain LICENSE - both
280
+ LICENSE and LICENSE.md 404); 646 stars, not archived, last commit 2026-07-17.
281
+
282
+ - name: "open-telemetry/opentelemetry-python"
283
+ url: "https://github.com/open-telemetry/opentelemetry-python"
284
+ stars: 2550
285
+ spdx: "Apache-2.0"
286
+ licenseClass: vendorable
287
+ maintained: true
288
+ lastCommit: "2026-07-16"
289
+ archived: false
290
+ stack: "Python - OpenTelemetry API/SDK, OTLP exporters (auto-instrumentation is NOT here - see python-contrib)"
291
+ complexity: standard
292
+ proposedLayerIds:
293
+ - otel-instrumentation-python
294
+ - otel-exporter-otlp
295
+ - obs-tracing-python
296
+ - logging-trace-correlation-python
297
+ whatToBorrow: >-
298
+ Two distinct layers worth generating separately, but they come from TWO DIFFERENT REPOS
299
+ and a previous revision wrongly attributed both to this one. First, the zero-code path:
300
+ the opentelemetry-instrument CLI plus OTEL_* environment variables
301
+ (OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_TRACES_SAMPLER), which gives a
302
+ Django/Flask/FastAPI app traces with no source changes and belongs in the Dockerfile
303
+ entrypoint - that CLI is NOT in this repo. This repo ships only opentelemetry-api,
304
+ opentelemetry-sdk, opentelemetry-proto, opentelemetry-semantic-conventions, exporter/
305
+ and propagator/; the console script is declared in
306
+ opentelemetry-python-contrib/opentelemetry-instrumentation/pyproject.toml. See the
307
+ dedicated python-contrib entry below.
308
+ Second - and this IS this repo - the explicit path in docs/examples/ - TracerProvider with a Resource
309
+ carrying service.name, BatchSpanProcessor wrapping an OTLPSpanExporter, and the
310
+ LoggingHandler bridge that attaches trace_id/span_id to stdlib log records so logs
311
+ correlate with traces.
312
+ whatToAvoid: >-
313
+ The auto-instrumentation agent monkey-patches at import time and interacts badly with
314
+ gunicorn/uvicorn pre-fork workers - the provider must be initialised post-fork or spans
315
+ vanish silently, which is the most common failure mode and must be handled in any
316
+ generated Dockerfile. API/SDK packages and the separately versioned contrib
317
+ instrumentation packages must be pinned together. Logs and some metrics APIs stabilised
318
+ later than tracing, so pin versions rather than tracking latest.
319
+
320
+ - name: "open-telemetry/opentelemetry-python-contrib"
321
+ url: "https://github.com/open-telemetry/opentelemetry-python-contrib"
322
+ stars: 1073
323
+ spdx: "Apache-2.0"
324
+ licenseClass: vendorable
325
+ maintained: true
326
+ lastCommit: "2026-07-17"
327
+ archived: false
328
+ stack: "Python - opentelemetry-instrument zero-code agent plus per-framework instrumentation packages"
329
+ complexity: standard
330
+ proposedLayerIds:
331
+ - otel-instrumentation-python
332
+ - otel-agent-python
333
+ - logging-trace-correlation-python
334
+ whatToBorrow: >-
335
+ This is where Python's zero-code story actually lives, added during verification because
336
+ the core opentelemetry-python entry claimed it. opentelemetry-instrumentation/ declares
337
+ both console scripts in its pyproject.toml - opentelemetry-instrument (wraps the app
338
+ process and patches libraries at startup) and opentelemetry-bootstrap (scans installed
339
+ packages and prints the matching instrumentation deps, which is the piece to run at
340
+ image-build time so the generated Dockerfile pins an explicit list rather than guessing).
341
+ The generated layer is therefore Dockerfile plus env, not source: install the framework
342
+ package, set OTEL_SERVICE_NAME / OTEL_EXPORTER_OTLP_ENDPOINT / OTEL_TRACES_SAMPLER, and
343
+ change the entrypoint to `opentelemetry-instrument python -m app`.
344
+ instrumentation/opentelemetry-instrumentation-{django,fastapi,flask,logging} are the
345
+ four to read first; the -logging one is what injects trace_id/span_id into log records
346
+ for correlation.
347
+ whatToAvoid: >-
348
+ Versioned separately from opentelemetry-python core with its own release cadence, and the
349
+ packages carry pre-1.0 version numbers even when the core API is stable - pin core and
350
+ contrib as a matched set or resolution produces a combination that fails at import. Do
351
+ not let opentelemetry-bootstrap auto-install at container start; run it at build time and
352
+ commit the resulting pins. The same post-fork initialisation caveat as the core entry
353
+ applies and is the most common silent failure under gunicorn/uvicorn.
354
+ portability: "Config-only - Dockerfile entrypoint plus env vars, transfers across Python web frameworks."
355
+ verificationNote: >-
356
+ Added 2026-07-19. Apache-2.0 read from the LICENSE file; 1073 stars, not archived, last
357
+ commit 2026-07-17. Promoted to a first-class gated entry rather than a bare cross-
358
+ reference because the zero-code layer is generated from this repo's tooling.
359
+
360
+ - name: "open-telemetry/opentelemetry-demo"
361
+ url: "https://github.com/open-telemetry/opentelemetry-demo"
362
+ stars: 3217
363
+ spdx: "Apache-2.0"
364
+ licenseClass: vendorable
365
+ maintained: true
366
+ lastCommit: "2026-07-17"
367
+ archived: false
368
+ stack: "Polyglot microservice demo - OTel across ~15 languages with a full backend stack"
369
+ complexity: professional
370
+ proposedLayerIds:
371
+ - otel-instrumentation-polyglot
372
+ - obs-stack-compose
373
+ whatToBorrow: >-
374
+ Canonical polyglot OTel reference. Borrow otel-config.yml and the split compose layering
375
+ (compose.yaml for services, compose.observability.yaml for backends, compose.full.yaml
376
+ for everything, plus compose.extras.yaml / compose.profiling.yaml / compose.tests.yaml),
377
+ which is exactly the composable pattern a scaffolder wants - the generated repo picks the
378
+ overlays it needs. Per-language bootstrap files under src/ show idiomatic SDK init for
379
+ each runtime. All file paths in this entry were confirmed to exist at main.
380
+ whatToAvoid: >-
381
+ It is a demo carrying an astronomy-shop domain, a load generator and a feature-flag
382
+ service, and it needs roughly 6GB of RAM. Take the wiring patterns, never the domain
383
+ code. Do not use it as a starting repo - strip to the compose overlay shape and the
384
+ collector config.
385
+
386
+ - name: "pinojs/pino"
387
+ url: "https://github.com/pinojs/pino"
388
+ stars: 18044
389
+ spdx: "MIT"
390
+ licenseClass: vendorable
391
+ maintained: true
392
+ lastCommit: "2026-07-18"
393
+ archived: false
394
+ stack: "Node.js structured JSON logging"
395
+ complexity: simple
396
+ proposedLayerIds:
397
+ - logging-structured-node-pino
398
+ - logging-http-middleware
399
+ - logging-redaction
400
+ whatToBorrow: >-
401
+ The logger factory with redact paths for auth headers and cookies, custom serializers,
402
+ the pino-pretty-in-dev / raw-JSON-in-prod transport split, and pino-http for per-request
403
+ child loggers carrying a request id.
404
+ whatToAvoid: >-
405
+ Transports run in worker threads and can lose buffered logs on abrupt exit without an
406
+ explicit flush - wire a shutdown handler. Keep pino-pretty a devDependency; shipping it
407
+ to production costs throughput for no benefit.
408
+
409
+ - name: "hynek/structlog"
410
+ url: "https://github.com/hynek/structlog"
411
+ stars: 4878
412
+ spdx: "Apache-2.0 OR MIT"
413
+ licenseClass: vendorable
414
+ maintained: true
415
+ lastCommit: "2026-07-18"
416
+ archived: false
417
+ stack: "Python structured logging"
418
+ complexity: simple
419
+ proposedLayerIds:
420
+ - logging-structured-python-structlog
421
+ - logging-context-vars
422
+ - logging-json-renderer
423
+ whatToBorrow: >-
424
+ The configure() processor chain (merge_contextvars, add_log_level, TimeStamper(iso),
425
+ format_exc_info, then JSONRenderer in prod and ConsoleRenderer in dev) and the
426
+ ProcessorFormatter bridge that routes stdlib logging from third-party libraries through
427
+ the same chain so output stays uniform.
428
+ whatToAvoid: >-
429
+ Configuration is global and import-order sensitive - configure() must run before any
430
+ module grabs a logger, so it belongs at the top of the app entrypoint, not in a package
431
+ __init__.
432
+ licenseNote: >-
433
+ Dual-licensed. There is no top-level LICENSE file; the repo carries LICENSE-MIT and
434
+ LICENSE-APACHE plus a NOTICE, all confirmed present. Pick one license and reproduce its
435
+ notice - do not omit attribution on the assumption that dual-licensing waives it.
436
+
437
+ - name: "getsentry/sentry-javascript"
438
+ url: "https://github.com/getsentry/sentry-javascript"
439
+ stars: 8710
440
+ spdx: "MIT"
441
+ licenseClass: vendorable
442
+ maintained: true
443
+ lastCommit: "2026-07-17"
444
+ archived: false
445
+ stack: "JavaScript/TypeScript error and performance monitoring SDKs"
446
+ complexity: standard
447
+ proposedLayerIds:
448
+ - observability-sentry-nextjs
449
+ - observability-sentry-node
450
+ - observability-sentry-react
451
+ - obs-sourcemaps-upload
452
+ whatToBorrow: >-
453
+ The Next.js file convention, withSentryConfig for source-map upload at build time, and
454
+ global-error.tsx for the React error boundary.
455
+ CONVENTION UPDATED - verify before generating. A previous revision described a three-file
456
+ layout of instrumentation.ts + sentry.client.config.ts + sentry.server.config.ts. The
457
+ client half of that is now deprecated: client init belongs in instrumentation-client.ts
458
+ (or src/instrumentation-client.ts). This was read from the SDK source, not from docs -
459
+ packages/nextjs/src/config/webpack.ts still resolves sentry.client.config.ts via
460
+ getClientSentryConfigFile() but logs "DEPRECATION WARNING: It is recommended renaming
461
+ your sentry.client.config.ts file, or moving its content to instrumentation-client.ts.
462
+ When using Turbopack sentry.client.config.ts will no longer work", while
463
+ getInstrumentationClientFile() resolves the replacement. Server-side registration through
464
+ instrumentation.ts / register() is unchanged. Generate instrumentation-client.ts, not
465
+ sentry.client.config.ts, or the output is born deprecated and breaks under Turbopack.
466
+ whatToAvoid: >-
467
+ The docs default tracesSampleRate to 1.0, which destroys a quota on any real traffic -
468
+ generate a low sampled default driven by an env var. Session Replay captures user input
469
+ and must default to off for privacy. Source-map upload needs an auth token that must come
470
+ from CI secrets, never a committed config file.
471
+ licenseNote: >-
472
+ MIT confirmed from the LICENSE file, read on BOTH `develop` and `master`. Note the
473
+ default branch here is `develop`, not master/main - a previous revision cited master
474
+ only, and any tooling that reads this repo must target develop or it will report a
475
+ months-stale commit date. This is the SDK repo and is genuinely MIT - distinct from
476
+ getsentry/sentry (the server), which is FSL source-available and excluded below.
477
+ Do not conflate the two.
478
+
479
+ - name: "Xabaril/AspNetCore.Diagnostics.HealthChecks"
480
+ url: "https://github.com/Xabaril/AspNetCore.Diagnostics.HealthChecks"
481
+ stars: 4369
482
+ spdx: "Apache-2.0"
483
+ licenseClass: vendorable
484
+ maintained: true
485
+ lastCommit: "2026-04-16"
486
+ archived: false
487
+ stack: ".NET health-check packages, publishers and UI"
488
+ complexity: standard
489
+ proposedLayerIds:
490
+ - health-checks-dotnet
491
+ - health-checks-ui
492
+ - obs-readiness-liveness-probes
493
+ whatToBorrow: >-
494
+ Reference implementation of health-check patterns usable in any stack. Borrow the
495
+ tag-based split (register checks with ready/live tags, map /health/ready and /health/live
496
+ to tag-filtered predicates - exactly what Kubernetes probes need), the Degraded vs
497
+ Unhealthy distinction, and the publisher push model for reporting status outward.
498
+ whatToAvoid: >-
499
+ One NuGet package per backend and several are deprecated or lag their driver - pin and
500
+ check each one rather than adding the meta-package. The UI needs storage and is a
501
+ separate deployment concern; do not make it a default.
502
+
503
+ - name: "nestjs/terminus"
504
+ url: "https://github.com/nestjs/terminus"
505
+ stars: 741
506
+ spdx: "MIT"
507
+ licenseClass: vendorable
508
+ maintained: true
509
+ lastCommit: "2026-03-08"
510
+ archived: false
511
+ stack: "NestJS health-check module"
512
+ complexity: simple
513
+ proposedLayerIds:
514
+ - health-checks-nestjs
515
+ - obs-readiness-liveness-probes
516
+ whatToBorrow: >-
517
+ The HealthController shape (@Get('health') @HealthCheck() returning
518
+ health.check([...indicators])) and the custom-indicator contract for app-specific checks.
519
+ whatToAvoid: >-
520
+ Tightly coupled to Nest DI, so it does not transfer to other Node frameworks. Optional
521
+ peer dependencies fail at boot with opaque errors when an indicator is registered without
522
+ its driver installed - generate the peer deps alongside each indicator.
523
+
524
+ - name: "slok/sloth"
525
+ url: "https://github.com/slok/sloth"
526
+ stars: 2515
527
+ spdx: "Apache-2.0"
528
+ licenseClass: vendorable
529
+ maintained: true
530
+ lastCommit: "2026-05-26"
531
+ archived: false
532
+ stack: "Go - Prometheus SLO generator producing multi-window multi-burn-rate alert rules"
533
+ complexity: standard
534
+ proposedLayerIds:
535
+ - slo-prometheus-sloth
536
+ - obs-alerting-rules
537
+ - obs-slo-definitions
538
+ whatToBorrow: >-
539
+ The cleanest path from a short SLO spec to correct multi-window multi-burn-rate alerts,
540
+ which almost nobody writes correctly by hand. Borrow the spec format and the examples/
541
+ tree (confirmed present) including the generated output shape, plus the
542
+ PrometheusServiceLevel CRD for a GitOps flow.
543
+ whatToAvoid: >-
544
+ Prometheus-only. Generated rule sets are large and materially raise evaluation cost on a
545
+ small Prometheus - do not generate SLOs for every endpoint by default.
546
+
547
+ - name: "OpenSLO/OpenSLO"
548
+ url: "https://github.com/OpenSLO/OpenSLO"
549
+ stars: 1509
550
+ spdx: "Apache-2.0"
551
+ licenseClass: vendorable
552
+ maintained: true
553
+ lastCommit: "2025-10-09"
554
+ archived: false
555
+ stack: "Vendor-neutral SLO specification (YAML schema)"
556
+ complexity: simple
557
+ proposedLayerIds:
558
+ - slo-definitions-openslo
559
+ - obs-slo-definitions
560
+ whatToBorrow: >-
561
+ Use as the schema layer, not a runtime. Borrow the Kubernetes-style kinds - SLO, SLI,
562
+ AlertPolicy, AlertCondition, AlertNotificationTarget, Service and DataSource, all seven
563
+ confirmed present in the spec README - as the shape for an slo/ directory so definitions
564
+ stay portable across backends. The current apiVersion is `openslo/v1`; generate that
565
+ literal rather than an unpinned reference.
566
+ whatToAvoid: >-
567
+ A specification only - nothing in this repo evaluates SLOs, so it must be paired with
568
+ sloth or slo-generator to produce anything that alerts. Pin apiVersion; the spec still
569
+ moves. Note this is the slowest-moving entry in the list at ~9 months since the last
570
+ commit - still inside the 18-month gate, but re-check before relying on it.
571
+
572
+ - name: "stefanprodan/dockprom"
573
+ url: "https://github.com/stefanprodan/dockprom"
574
+ stars: 6571
575
+ spdx: "MIT"
576
+ licenseClass: vendorable
577
+ maintained: true
578
+ lastCommit: "2026-03-06"
579
+ archived: false
580
+ stack: "Docker Compose host/container monitoring stack - Prometheus, Grafana, Alertmanager, cAdvisor, node-exporter"
581
+ complexity: simple
582
+ proposedLayerIds:
583
+ - obs-stack-prometheus-compose
584
+ - obs-alertmanager-rules
585
+ - obs-host-container-metrics
586
+ whatToBorrow: >-
587
+ Classic host and container monitoring compose stack, small enough to read end to end.
588
+ Borrow docker-compose.yml, prometheus/prometheus.yml scrape configs for cAdvisor and
589
+ node-exporter, prometheus/alert.rules, alertmanager/config.yml routing, and
590
+ grafana/provisioning/. Paths confirmed at master.
591
+ whatToAvoid: >-
592
+ Infrastructure metrics only - no tracing, no logging, no OTel path, so it does not serve
593
+ an app-telemetry story on its own. The Caddy basic-auth front is not a real security
594
+ boundary. Bundled dashboards drift against newer exporter label schemas and often need
595
+ fixing after an exporter bump.
596
+
597
+ - name: "prometheus/client_golang"
598
+ url: "https://github.com/prometheus/client_golang"
599
+ stars: 6010
600
+ spdx: "Apache-2.0"
601
+ licenseClass: vendorable
602
+ maintained: true
603
+ lastCommit: "2026-07-17"
604
+ archived: false
605
+ stack: "Go Prometheus instrumentation client"
606
+ complexity: simple
607
+ proposedLayerIds:
608
+ - obs-metrics-prometheus
609
+ - obs-metrics-go-client
610
+ whatToBorrow: >-
611
+ The custom-registry pattern (prometheus.NewRegistry() with explicit MustRegister rather
612
+ than the global default, so tests stay isolated), promauto.With(reg) for declaration,
613
+ promhttp.HandlerFor mounted on a separate admin port rather than the public router, and
614
+ InstrumentHandlerDuration/InstrumentHandlerCounter for RED metrics. promauto path
615
+ confirmed present.
616
+ whatToAvoid: >-
617
+ Unbounded label values (user ids, URLs, request ids) cause cardinality explosions that
618
+ take down Prometheus - the generated code must use bounded label sets and route patterns
619
+ rather than raw paths.
620
+
621
+ - name: "microsoft/aspire"
622
+ url: "https://github.com/microsoft/aspire"
623
+ stars: 6172
624
+ spdx: "MIT"
625
+ licenseClass: vendorable
626
+ maintained: true
627
+ lastCommit: "2026-07-18"
628
+ archived: false
629
+ formerName: "dotnet/aspire"
630
+ stack: ".NET cloud-native orchestration, ServiceDefaults, OTLP dashboard"
631
+ complexity: enterprise
632
+ proposedLayerIds:
633
+ - obs-dotnet-servicedefaults
634
+ - obs-dashboard-otlp
635
+ whatToBorrow: >-
636
+ The ServiceDefaults project is a ready-made observability layer - one AddServiceDefaults()
637
+ wiring OTel tracing/metrics/logging with OTLP export, AddDefaultHealthChecks() with
638
+ tag-filtered /health and /alive, resilience handlers and service discovery, plus
639
+ MapDefaultEndpoints() guarded to development. The exact artifact to lift is the
640
+ src/Aspire.ProjectTemplates/templates/aspire-servicedefaults template directory
641
+ (confirmed present) - that is the ServiceDefaults project in template form, so it can be
642
+ adapted wholesale rather than reconstructed from docs. The standalone Aspire Dashboard container
643
+ is a useful generic OTLP viewer for ANY language, not just .NET - worth a language-neutral
644
+ layer.
645
+ whatToAvoid: >-
646
+ AppHost orchestration is heavy and is over-engineering if all you want is observability -
647
+ take ServiceDefaults and the dashboard without adopting AppHost. LICENSE file is
648
+ LICENSE.TXT.
649
+ verificationNote: >-
650
+ RENAMED - recorded as dotnet/aspire in previous revisions; the repository has moved to
651
+ microsoft/aspire (canonical full_name confirmed via the GitHub API, repo id 696529789,
652
+ MIT, 6172 stars, not archived). github.com/dotnet/aspire still resolves because GitHub
653
+ keeps rename redirects, so an HTML or raw.githubusercontent check does NOT reveal this -
654
+ only the API does, and it answers HTTP 301 "Moved Permanently" rather than a repo object,
655
+ which is silently fatal to any tooling that does not follow the redirect. Both name and
656
+ url updated to the canonical form; use microsoft/aspire in generated references so the
657
+ catalog does not depend on a redirect that would break if the old path were ever reused.
658
+
659
+ - name: "SigNoz/signoz"
660
+ url: "https://github.com/SigNoz/signoz"
661
+ stars: 30828
662
+ spdx: "MIT"
663
+ licenseClass: vendorable
664
+ maintained: true
665
+ lastCommit: "2026-07-18"
666
+ archived: false
667
+ stack: "Self-hosted OTel-native APM on ClickHouse"
668
+ complexity: enterprise
669
+ proposedLayerIds:
670
+ - obs-stack-signoz
671
+ - obs-dashboard-unified
672
+ whatToBorrow: >-
673
+ Self-hosted OTel-native alternative to Datadog, useful mainly as a READING reference for
674
+ how OTLP data is modelled on ClickHouse. conf/example.yaml is the annotated server
675
+ config. pkg/telemetrystore/ is the store abstraction - telemetrystore.go plus
676
+ clickhousetelemetrystore/ show the column layout and query construction for spans and
677
+ metrics, which is the genuinely instructive part and the reason to look at this repo at
678
+ all. All of the above sit outside the enterprise carve-out and are MIT.
679
+ IMPORTANT - the compose artifact this entry previously pointed at is GONE. deploy/ now
680
+ contains only README.md, MIGRATION.md and a deprecated install.sh; deploy/README.md
681
+ states plainly that "the `install.sh` script and the `docker-compose` manifests have
682
+ been deprecated" and that SigNoz now installs via its "Foundry" tooling documented
683
+ off-repo. Do not generate a SigNoz compose service from this repository - there is no
684
+ longer one to copy.
685
+ whatToAvoid: >-
686
+ Operationally heavy - ClickHouse plus several services, not a reasonable default for a
687
+ small generated repo. With the compose manifests removed, standing it up now means
688
+ following vendor-hosted Foundry docs rather than anything version-pinned in-repo, which
689
+ is a poor fit for a reproducible scaffolder; treat this entry as reference reading and
690
+ prefer docker-otel-lgtm or dockprom for an actual runnable local backend.
691
+ See the license carve-out below; it is a hard boundary and the ee/ directory does exist
692
+ at main, so the path filter is not hypothetical.
693
+ licenseNote: >-
694
+ MIXED LICENSE - verified by reading the root LICENSE and ee/LICENSE directly.
695
+ Root LICENSE states: content under "ee/" and "cmd/enterprise/" is governed by ee/LICENSE;
696
+ everything else is "MIT Expat". ee/LICENSE was fetched and confirmed to be the proprietary
697
+ "SigNoz Enterprise license", which restricts use to licensed customers.
698
+ Therefore: the core is vendorable under MIT, but ee/ and cmd/enterprise/ are EXCLUDED and
699
+ must never be copied. Any automated vendoring from this repo must apply a path filter that
700
+ rejects those two directories.
701
+
702
+ - name: "coroot/coroot"
703
+ url: "https://github.com/coroot/coroot"
704
+ stars: 7838
705
+ spdx: "Apache-2.0"
706
+ licenseClass: vendorable
707
+ maintained: true
708
+ lastCommit: "2026-07-02"
709
+ archived: false
710
+ stack: "eBPF-based zero-instrumentation observability, service map, SLO tracking"
711
+ complexity: professional
712
+ proposedLayerIds:
713
+ - obs-ebpf-zero-instrumentation
714
+ - obs-slo-tracking
715
+ - obs-service-map
716
+ whatToBorrow: >-
717
+ The strongest zero-instrumentation option - eBPF captures service-to-service traffic with
718
+ no code changes, which makes it viable as a default-on layer that cannot break the user's
719
+ application. The deployment artifact is a single file - manifests/coroot.yaml (not a tree
720
+ of manifests) - which is small enough to read end to end and adapt. Borrow it plus the SLO
721
+ model derived from observed traffic rather than hand-written SLIs.
722
+ whatToAvoid: >-
723
+ Needs a recent Linux kernel and privileged or CAP_BPF containers, so it cannot be the only
724
+ local path on macOS or Windows hosts - always pair it with a portable fallback layer.
725
+ licenseNote: >-
726
+ The previous revision flagged an open question about an enterprise directory. Resolved:
727
+ there is NO ee/ directory in coroot/coroot at main (checked, 404). The root LICENSE is
728
+ plain Apache-2.0 with no carve-out clause. Clean to vendor with the Apache notice.
729
+
730
+ - name: "grafana/alloy"
731
+ url: "https://github.com/grafana/alloy"
732
+ stars: 3346
733
+ spdx: "Apache-2.0"
734
+ licenseClass: vendorable
735
+ maintained: true
736
+ lastCommit: "2026-07-17"
737
+ archived: false
738
+ stack: "Grafana's OpenTelemetry Collector distribution with a programmable config language"
739
+ complexity: professional
740
+ proposedLayerIds:
741
+ - otel-collector-alloy
742
+ - obs-pipeline-processors
743
+ whatToBorrow: >-
744
+ An official OTel Collector distribution with a programmable configuration language.
745
+ Borrow example-config.alloy and the example/ directory (both confirmed present) - the
746
+ component-and-forward_to syntax is far more readable in a generated repo than deeply
747
+ nested YAML, and the dataflow is explicit.
748
+ whatToAvoid: >-
749
+ The Alloy configuration language does NOT port to a vanilla OTel Collector. For a
750
+ vendor-neutral scaffolder that is genuine lock-in, so this must be an opt-in alternative
751
+ to the plain collector layer, never the default.
752
+
753
+ - name: "jaegertracing/jaeger"
754
+ url: "https://github.com/jaegertracing/jaeger"
755
+ stars: 23012
756
+ spdx: "Apache-2.0"
757
+ licenseClass: vendorable
758
+ maintained: true
759
+ lastCommit: "2026-07-15"
760
+ archived: false
761
+ stack: "Distributed tracing backend; v2 is built on the OTel Collector"
762
+ complexity: professional
763
+ proposedLayerIds:
764
+ - obs-trace-jaeger
765
+ - obs-stack-compose
766
+ whatToBorrow: >-
767
+ The all-in-one compose service (OTLP ingest on 4317/4318, UI on 16686) as the dev default
768
+ when only tracing is needed. Jaeger v2 is built on the OTel Collector, so its config IS a
769
+ collector config - that keeps dev and prod in a single format and is the main reason to
770
+ prefer it over a bespoke tracing backend.
771
+ whatToAvoid: >-
772
+ Traces only - no metrics or logs, so it cannot be the whole observability layer. The
773
+ all-in-one image is in-memory and loses everything on restart. The v1-to-v2 transition
774
+ changed flags and config format, so most compose files found online are dead; generate
775
+ against v2 only.
776
+
777
+ - name: "micrometer-metrics/micrometer"
778
+ url: "https://github.com/micrometer-metrics/micrometer"
779
+ stars: 4871
780
+ spdx: "Apache-2.0"
781
+ licenseClass: vendorable
782
+ maintained: true
783
+ lastCommit: "2026-07-17"
784
+ archived: false
785
+ stack: "JVM metrics and observation facade, Spring Boot Actuator integration"
786
+ complexity: professional
787
+ proposedLayerIds:
788
+ - obs-metrics-jvm-micrometer
789
+ - obs-tracing-jvm
790
+ whatToBorrow: >-
791
+ The JVM observability layer. Borrow MeterRegistry injection, micrometer-registry-prometheus
792
+ wiring that exposes /actuator/prometheus, common tags applied through a
793
+ MeterRegistryCustomizer, and the micrometer-observation API where a single Observation
794
+ emits metrics, spans and logs together. The micrometer-observation module is in THIS repo
795
+ (confirmed alongside micrometer-core, micrometer-commons and the jetty/jakarta modules),
796
+ but the span half of that promise is not: turning an Observation into a trace needs
797
+ micrometer-tracing from the separate micrometer-metrics/tracing repo (also Apache-2.0).
798
+ A generated JVM layer that adds micrometer-observation alone gets metrics and no spans,
799
+ which looks like a broken tracing setup rather than a missing dependency.
800
+ whatToAvoid: >-
801
+ Naming translation (dots to underscores between Micrometer and Prometheus) reliably trips
802
+ up query authors - document the mapping in the generated repo. Do not layer the
803
+ Observation API and raw OTel instrumentation together; pick one or spans get duplicated.
804
+
805
+ - name: "google/slo-generator"
806
+ url: "https://github.com/google/slo-generator"
807
+ stars: 564
808
+ spdx: "Apache-2.0"
809
+ licenseClass: vendorable
810
+ maintained: true
811
+ lastCommit: "2026-02-25"
812
+ archived: false
813
+ stack: "Python - multi-backend SLO and error-budget computation (Cloud Monitoring, Prometheus, Elasticsearch, Datadog, Dynatrace)"
814
+ complexity: standard
815
+ proposedLayerIds:
816
+ - slo-multi-backend-generator
817
+ whatToBorrow: >-
818
+ The multi-backend SLO layer for stacks that are not Prometheus-only, which is where sloth
819
+ stops being an option. The copyable artifacts are concrete: samples/config.yaml is the
820
+ shared config, and its four top-level keys (default_exporters, backends, exporters,
821
+ error_budget_policies) are the schema to generate; note every backend credential in it is
822
+ written as a ${ENV_VAR} interpolation rather than a literal, which is exactly the pattern
823
+ a generated repo should preserve. samples/<backend>/ holds
824
+ per-backend SLO specs - samples/prometheus/ alone gives four spec shapes worth adapting
825
+ (slo_prom_metrics_availability_ratio.yaml, ..._availability_query_sli.yaml,
826
+ ..._latency_distribution_cut.yaml, ..._latency_query_sli.yaml), which between them cover
827
+ good-events/total-events ratio, raw-query SLI, and latency-bucket-threshold indicators.
828
+ Sibling directories (datadog, dynatrace, elasticsearch, opensearch, cloud_monitoring,
829
+ custom) show the same SLO restated against each backend, which is exactly the evidence a
830
+ generator needs to keep one spec portable. slo_generator/backends/ and
831
+ slo_generator/exporters/ are the plugin interfaces to read if a custom source is needed.
832
+ whatToAvoid: >-
833
+ Heavier and less focused than sloth - if the target stack is Prometheus-only, sloth is the
834
+ better generated default. Backend plugins pull cloud-vendor SDKs, so only install the one
835
+ backend actually in use.
836
+ verificationNote: >-
837
+ STALENESS CLAIM CORRECTED, then re-confirmed 2026-07-19. An older revision marked this
838
+ "LIKELY STALE - most recent release v2.6.0 from February 2024" and told readers not to use
839
+ it; that read the last RELEASE date as the last COMMIT date and was wrong. An infrequent
840
+ release cadence is not staleness.
841
+ The two dates recorded here differ and BOTH are correct - do not "fix" one to match the
842
+ other. lastCommit 2026-02-25 is the last commit on the default branch (master), read from
843
+ the commits atom feed. The GitHub API reports pushed_at 2026-07-06, which is later because
844
+ pushed_at reflects a push to ANY branch or tag, not just the default one. Either way the
845
+ repo is not archived and clears the 18-month gate comfortably. The `maintained` flag here
846
+ is judged on pushed_at per this file's own definition at the top.
847
+
848
+ # -------------------------------------------------------------------------
849
+ # ADDED 2026-07-19 - gap-fill pass. Every figure below was read from
850
+ # github.com repo HTML (star counter), the default-branch commits.atom feed
851
+ # (lastCommit) and the LICENSE file fetched from raw.githubusercontent.com.
852
+ # The GitHub REST API was rate-limited during this pass; the HTML/atom/raw
853
+ # method is the same one cross-checked against the API in the 2026-07-18 pass.
854
+ # -------------------------------------------------------------------------
855
+
856
+ - name: "open-telemetry/opentelemetry-go"
857
+ url: "https://github.com/open-telemetry/opentelemetry-go"
858
+ stars: 6480
859
+ spdx: "Apache-2.0"
860
+ licenseClass: vendorable
861
+ maintained: true
862
+ lastCommit: "2026-07-17"
863
+ archived: false
864
+ stack: "Go - OpenTelemetry API/SDK, OTLP trace/metric/log exporters"
865
+ complexity: standard
866
+ proposedLayerIds:
867
+ - otel-instrumentation-go
868
+ - otel-exporter-otlp
869
+ - obs-graceful-shutdown
870
+ whatToBorrow: >-
871
+ Go has no auto-instrumentation agent, so the explicit bootstrap IS the layer. The core
872
+ repo ships the API/SDK and the exporters (exporters/otlp/otlptrace/otlptracegrpc,
873
+ confirmed present) but has NO example/ or examples/ directory - a previous revision
874
+ cited example/otel-collector and example/dice here and both 404. The runnable examples
875
+ live in the SEPARATE open-telemetry/opentelemetry-go-contrib repo (also Apache-2.0, so
876
+ still vendorable): examples/dice/instrumented/otel.go is the exact file to copy, and
877
+ examples/dice/uninstrumented/ beside it gives the before/after diff showing precisely
878
+ what instrumentation adds. examples/otel-collector/ adds main.go plus a working
879
+ docker-compose.yaml, otel-collector.yaml and prometheus.yaml for the backend side.
880
+ The copyable unit is a single setupOTelSDK(ctx) function
881
+ that builds a resource.New with semconv service.name/version, registers a
882
+ TracerProvider with sdktrace.NewBatchSpanProcessor over an otlptracegrpc exporter, a
883
+ MeterProvider with a PeriodicReader, sets otel.SetTextMapPropagator with a composite
884
+ TraceContext+Baggage propagator, and returns a single shutdown(ctx) func that joins
885
+ every provider's Shutdown error. That returned-shutdown-closure idiom is the piece
886
+ worth standardising - it is what makes spans actually flush on SIGTERM.
887
+ whatToAvoid: >-
888
+ The propagator default is a no-op: forget otel.SetTextMapPropagator and traces silently
889
+ break at every service boundary while each service still looks correctly instrumented
890
+ on its own. This is the single most common Go OTel bug. HTTP/gRPC instrumentation lives
891
+ in the separate opentelemetry-go-contrib module (otelhttp, otelgrpc) versioned apart
892
+ from core - pin them as a set. Metrics and logs stabilised later than tracing.
893
+ portability: "High - stdlib-only wiring, no framework assumptions; drops into any Go service."
894
+
895
+ - name: "open-telemetry/opentelemetry-go-contrib"
896
+ url: "https://github.com/open-telemetry/opentelemetry-go-contrib"
897
+ stars: 1652
898
+ spdx: "Apache-2.0"
899
+ licenseClass: vendorable
900
+ maintained: true
901
+ lastCommit: "2026-07-17"
902
+ archived: false
903
+ stack: "Go - OTel HTTP/gRPC instrumentation libraries, propagators, detectors, runnable examples"
904
+ complexity: standard
905
+ proposedLayerIds:
906
+ - otel-instrumentation-go
907
+ - obs-http-server-instrumentation
908
+ whatToBorrow: >-
909
+ The companion the core Go SDK entry depends on, added during verification because the
910
+ core repo's examples were cited there but actually live here. Two things to take.
911
+ First, the examples: examples/dice/instrumented/otel.go is a complete, compiling
912
+ setupOTelSDK bootstrap, and the instrumented/ vs uninstrumented/ pair is the clearest
913
+ before/after in the whole OTel ecosystem for showing what a template's instrumentation
914
+ layer actually changes. examples/otel-collector/ pairs main.go with a working
915
+ docker-compose.yaml, otel-collector.yaml and prometheus.yaml.
916
+ Second, the middleware: instrumentation/net/http/otelhttp wraps a handler
917
+ (otelhttp.NewHandler) and a client transport in one line each, and
918
+ instrumentation/google.golang.org/grpc/otelgrpc supplies the stats-handler equivalent.
919
+ Those two lines are what actually produce server spans, so a Go observability layer that
920
+ omits them emits an empty trace tree.
921
+ whatToAvoid: >-
922
+ Versioned as a SEPARATE Go module from opentelemetry-go core and released on its own
923
+ cadence, so otelhttp/otelgrpc and the core SDK must be pinned as a compatible set - this
924
+ mismatch is the usual cause of confusing Go module resolution errors. Each example
925
+ directory is its own module with its own go.mod, so copying one wholesale drags a module
926
+ boundary into the generated repo; lift the source file and re-declare the dependency
927
+ against the parent module instead. otelgrpc's older interceptor API is deprecated in
928
+ favour of the stats handler - do not copy interceptor snippets found in older docs.
929
+ portability: "High - otelhttp is a stdlib net/http wrapper and mounts on any Go router."
930
+ verificationNote: >-
931
+ Added 2026-07-19. Promoted to a first-class entry rather than left as a bare cross-
932
+ reference, so the code it points at passes the same license gate as everything else.
933
+ Apache-2.0 read from the LICENSE file; 1652 stars, not archived, last commit 2026-07-17.
934
+
935
+ - name: "open-telemetry/opentelemetry-js"
936
+ url: "https://github.com/open-telemetry/opentelemetry-js"
937
+ stars: 3419
938
+ spdx: "Apache-2.0"
939
+ licenseClass: vendorable
940
+ maintained: true
941
+ lastCommit: "2026-07-17"
942
+ archived: false
943
+ stack: "TypeScript/JavaScript - OpenTelemetry API/SDK for Node and browser"
944
+ complexity: standard
945
+ proposedLayerIds:
946
+ - otel-instrumentation-node
947
+ - otel-exporter-otlp
948
+ - logging-trace-correlation-node
949
+ whatToBorrow: >-
950
+ The NodeSDK quickstart plus the packages/opentelemetry-sdk-trace-node README give the
951
+ copyable unit: an instrumentation.ts that constructs new NodeSDK({ resource,
952
+ traceExporter: new OTLPTraceExporter(), instrumentations:
953
+ [getNodeAutoInstrumentations()] }) and calls sdk.start(). Note the split: NodeSDK is in
954
+ THIS repo at experimental/packages/opentelemetry-sdk-node, but getNodeAutoInstrumentations
955
+ comes from @opentelemetry/auto-instrumentations-node which lives in the separate
956
+ opentelemetry-js-contrib repo - the one-line snippet spans two repos and two release
957
+ trains. The load-order rule is the
958
+ real content - that file must be imported before any instrumented library, which in
959
+ practice means `node --import ./instrumentation.mjs app.js` or --require for CJS. Pair
960
+ it with pino's mixin reading trace.getActiveSpan() to stamp trace_id onto every log line.
961
+ whatToAvoid: >-
962
+ getNodeAutoInstrumentations() enables everything including fs, which floods the backend
963
+ with useless spans - disable @opentelemetry/instrumentation-fs explicitly in any
964
+ generated config. Auto-instrumentation relies on module patching and does not work under
965
+ bundlers or ESM without the --import hook, so serverless/bundled targets need the manual
966
+ path. API and SDK packages version separately; a mismatched @opentelemetry/api produces
967
+ silent no-op tracers rather than an error.
968
+
969
+ - name: "open-telemetry/opentelemetry-js-contrib"
970
+ url: "https://github.com/open-telemetry/opentelemetry-js-contrib"
971
+ stars: 917
972
+ spdx: "Apache-2.0"
973
+ licenseClass: vendorable
974
+ maintained: true
975
+ lastCommit: "2026-07-17"
976
+ archived: false
977
+ stack: "TypeScript - Node auto-instrumentation meta-package and per-library instrumentations"
978
+ complexity: standard
979
+ proposedLayerIds:
980
+ - otel-instrumentation-node
981
+ - obs-http-server-instrumentation
982
+ whatToBorrow: >-
983
+ The half of the Node OTel story that is not in core, added during verification because
984
+ the opentelemetry-js entry's snippet silently depended on it.
985
+ packages/auto-instrumentations-node is the meta-package exporting
986
+ getNodeAutoInstrumentations(), and its README documents the per-instrumentation config
987
+ object - that config object is the artifact worth generating, because it is where you
988
+ disable the noisy instrumentations by name rather than accepting the default set.
989
+ packages/instrumentation-fs is the specific one to switch off. The individual
990
+ packages/instrumentation-* directories each carry a README with a minimal manual-
991
+ registration example, which is the path to use when bundling or serverless rules out the
992
+ auto-instrumentation hook.
993
+ whatToAvoid: >-
994
+ Released independently of opentelemetry-js core, so the auto-instrumentations version and
995
+ the SDK version must be pinned as a compatible pair; a mismatch typically surfaces as
996
+ instrumentations that load but never emit spans rather than as an install error. The
997
+ meta-package pulls a large dependency tree for libraries the app may not use - for a lean
998
+ image, depend on the specific instrumentation-* packages instead of the meta-package.
999
+ verificationNote: >-
1000
+ Added 2026-07-19. Apache-2.0 read from the LICENSE file; 917 stars, not archived, last
1001
+ commit 2026-07-17.
1002
+
1003
+ - name: "open-telemetry/opentelemetry-java-instrumentation"
1004
+ url: "https://github.com/open-telemetry/opentelemetry-java-instrumentation"
1005
+ stars: 2581
1006
+ spdx: "Apache-2.0"
1007
+ licenseClass: vendorable
1008
+ maintained: true
1009
+ lastCommit: "2026-07-17"
1010
+ archived: false
1011
+ stack: "Java - bytecode-agent auto-instrumentation for JVM frameworks"
1012
+ complexity: professional
1013
+ proposedLayerIds:
1014
+ - otel-instrumentation-java
1015
+ - otel-agent-jvm
1016
+ - obs-metrics-jvm
1017
+ whatToBorrow: >-
1018
+ The zero-code JVM layer. What a scaffolder generates is not source but Dockerfile and
1019
+ env: download opentelemetry-javaagent.jar from the release assets, add
1020
+ -javaagent:/otel/opentelemetry-javaagent.jar to JAVA_TOOL_OPTIONS, then configure
1021
+ entirely through OTEL_SERVICE_NAME, OTEL_EXPORTER_OTLP_ENDPOINT, OTEL_TRACES_SAMPLER
1022
+ and OTEL_INSTRUMENTATION_<name>_ENABLED. docs/agent-features.md,
1023
+ docs/supported-libraries.md and docs/advanced-configuration-options.md (all three
1024
+ confirmed present at main) are the reference for trimming the agent down; there is no
1025
+ docs/suppressing-instrumentation.md, which a previous revision cited and which 404s.
1026
+ Borrow the
1027
+ multi-stage Dockerfile pattern that pins the agent by version and checksum rather than
1028
+ fetching latest at build time.
1029
+ whatToAvoid: >-
1030
+ The agent adds meaningful JVM startup time and patches hundreds of libraries by default -
1031
+ for short-lived or serverless JVMs the cost is real, and for anything latency-sensitive
1032
+ the instrumentation list should be narrowed. Never fetch the jar unpinned at container
1033
+ build. Agent and SDK versions must be compatible if the app also uses the manual API.
1034
+ portability: "Config-only - the layer is Dockerfile plus env vars, so it transfers across any JVM framework."
1035
+
1036
+ - name: "serilog/serilog"
1037
+ url: "https://github.com/serilog/serilog"
1038
+ stars: 8013
1039
+ spdx: "Apache-2.0"
1040
+ licenseClass: vendorable
1041
+ maintained: true
1042
+ lastCommit: "2026-07-10"
1043
+ archived: false
1044
+ stack: ".NET structured logging with message templates and sinks"
1045
+ complexity: simple
1046
+ proposedLayerIds:
1047
+ - logging-structured-dotnet-serilog
1048
+ - logging-enrichers
1049
+ - logging-trace-correlation-dotnet
1050
+ whatToBorrow: >-
1051
+ The message-template model is the point: log.Information("Order {OrderId} shipped to
1052
+ {Customer}", id, customer) preserves OrderId and Customer as queryable fields instead of
1053
+ flattening to a string. Borrow the two-stage bootstrap the repo documents - a minimal
1054
+ Serilog.Log.Logger created before the host builds so startup crashes are still captured,
1055
+ then ReadFrom.Configuration(context.Configuration) once the host exists so sinks and
1056
+ levels come from appsettings.json rather than code. Take the enrichment chain
1057
+ (FromLogContext, WithMachineName, WithEnvironmentName) and LogContext.PushProperty for
1058
+ scoped correlation ids, plus CompactJsonFormatter for production output.
1059
+ Scope note: this repo contains only src/Serilog - the core. Three of the pieces named
1060
+ above ship from separate (also Apache-2.0) repos and need their own package references:
1061
+ CompactJsonFormatter from serilog/serilog-formatting-compact, ReadFrom.Configuration
1062
+ from serilog/serilog-settings-configuration, and UseSerilogRequestLogging from
1063
+ serilog/serilog-aspnetcore. A generated repo that references only Serilog core will not
1064
+ compile any of them.
1065
+ whatToAvoid: >-
1066
+ String interpolation in a log call defeats the entire structured model and produces
1067
+ unqueryable text plus a cardinality explosion - forbid it with a Serilog analyzer in any
1068
+ generated repo. Sinks are separate independently versioned packages. The file sink needs
1069
+ an explicit rolling and retention policy or it will fill a disk. Serilog.AspNetCore's
1070
+ UseSerilogRequestLogging replaces the noisy default request logging and should be enabled
1071
+ rather than layered on top of it. The analyzer that catches interpolated log messages is
1072
+ Suchiman/SerilogAnalyzer, a THIRD-PARTY repo outside the Serilog org (Apache-2.0) - vet
1073
+ it as such rather than assuming it is an official Serilog component.
1074
+
1075
+ - name: "rs/zerolog"
1076
+ url: "https://github.com/rs/zerolog"
1077
+ stars: 12476
1078
+ spdx: "MIT"
1079
+ licenseClass: vendorable
1080
+ maintained: true
1081
+ lastCommit: "2026-04-20"
1082
+ archived: false
1083
+ stack: "Go zero-allocation JSON structured logging"
1084
+ complexity: simple
1085
+ proposedLayerIds:
1086
+ - logging-structured-go-zerolog
1087
+ - logging-http-middleware
1088
+ - logging-trace-correlation-go
1089
+ whatToBorrow: >-
1090
+ The chained-field API (log.Info().Str("k",v).Int("n",1).Msg("done")) and, more usefully
1091
+ for a template, hlog - the bundled net/http middleware in the hlog subpackage that
1092
+ attaches a request-scoped logger to the context, generates a request id, and emits one
1093
+ access-log line per request with method, status, size and duration. Borrow the
1094
+ zerolog.New(os.Stderr).With().Timestamp().Caller().Logger() constructor plus the
1095
+ ConsoleWriter-in-dev / raw-JSON-in-prod switch, and the hook interface for stamping
1096
+ trace_id from an OTel span onto every event.
1097
+ whatToAvoid: >-
1098
+ The zero-allocation guarantee is lost the moment you use the reflection-based
1099
+ .Interface() or .Fields() helpers - keep to typed field methods on hot paths. An Event
1100
+ is single-use and must be terminated by exactly one Msg/Send; forgetting it drops the
1101
+ log with no error, and reusing an Event after Msg is a data race. Global log.Logger is
1102
+ convenient but makes tests order-dependent - prefer injecting a logger.
1103
+ portability: "High - stdlib io.Writer sink, no framework coupling."
1104
+
1105
+ - name: "uber-go/zap"
1106
+ url: "https://github.com/uber-go/zap"
1107
+ stars: 24576
1108
+ spdx: "MIT"
1109
+ licenseClass: vendorable
1110
+ maintained: true
1111
+ lastCommit: "2026-04-28"
1112
+ archived: false
1113
+ stack: "Go high-performance structured logging"
1114
+ complexity: standard
1115
+ proposedLayerIds:
1116
+ - logging-structured-go-zap
1117
+ - logging-sampling
1118
+ - logging-testable
1119
+ whatToBorrow: >-
1120
+ The config-driven constructor is what to adapt: zap.Config as a struct populated from
1121
+ environment (level, encoding json|console, outputPaths, initialFields) then .Build(),
1122
+ which gives dev and prod presets from one code path via NewDevelopmentConfig /
1123
+ NewProductionConfig. Borrow the production sampling policy (SamplingConfig Initial/
1124
+ Thereafter) - it is the built-in answer to a hot loop flooding the log pipeline, which
1125
+ zerolog leaves to you. zaptest/observer is the other high-value piece: an in-memory core
1126
+ that makes "assert this log line was emitted with these fields" a normal unit test.
1127
+ whatToAvoid: >-
1128
+ Two APIs coexist and mixing them confuses generated code - the typed zap.Logger is fast,
1129
+ SugaredLogger is ergonomic but allocates; pick one per template and stay with it. Missing
1130
+ defer logger.Sync() loses buffered entries on exit, and Sync on stderr returns a
1131
+ spurious error on some platforms that naive code will log or panic on. The Config struct
1132
+ is verbose enough that it belongs in one config module, never inline at call sites.
1133
+
1134
+ - name: "getsentry/sentry-python"
1135
+ url: "https://github.com/getsentry/sentry-python"
1136
+ stars: 2197
1137
+ spdx: "MIT"
1138
+ licenseClass: vendorable
1139
+ maintained: true
1140
+ lastCommit: "2026-07-17"
1141
+ archived: false
1142
+ stack: "Python error and performance monitoring SDK with framework integrations"
1143
+ complexity: standard
1144
+ proposedLayerIds:
1145
+ - observability-sentry-python
1146
+ - observability-pii-scrubbing
1147
+ - obs-release-tracking
1148
+ whatToBorrow: >-
1149
+ The single sentry_sdk.init() block belongs in one config module: dsn and environment from
1150
+ env vars, traces_sample_rate as a float setting, release stamped from the CI commit sha,
1151
+ and an explicit integrations list (DjangoIntegration, FastApiIntegration,
1152
+ CeleryIntegration) rather than relying on auto-discovery. Borrow the before_send hook for
1153
+ scrubbing PII before transmission and the ignore_errors list for expected exceptions,
1154
+ plus sentry_sdk.set_user / set_tag for request-scoped context. The integrations/
1155
+ directory is a readable catalogue of how each framework hooks its error path.
1156
+ whatToAvoid: >-
1157
+ send_default_pii=True ships request bodies, headers and user data to a third party - it
1158
+ must default to False in any generated repo and be an explicit opt-in. traces_sample_rate
1159
+ of 1.0 will exhaust a quota under real traffic. The DSN is not secret but the auth token
1160
+ used for release/sourcemap upload is, and belongs in CI secrets. Celery and ASGI
1161
+ integrations need init() to run in each worker process, not only in the parent.
1162
+
1163
+ - name: "hellofresh/health-go"
1164
+ url: "https://github.com/hellofresh/health-go"
1165
+ stars: 589
1166
+ spdx: "Apache-2.0"
1167
+ licenseClass: vendorable
1168
+ maintained: true
1169
+ lastCommit: "2026-04-17"
1170
+ archived: false
1171
+ stack: "Go library for HTTP health/readiness endpoints with pluggable dependency checks"
1172
+ complexity: simple
1173
+ proposedLayerIds:
1174
+ - health-checks
1175
+ - health-readiness-go
1176
+ - obs-dependency-probes
1177
+ whatToBorrow: >-
1178
+ The smallest complete readiness pattern in Go, and a direct fit for the existing
1179
+ health-checks layer. Borrow health.New() with health.WithChecks(health.Config{Name,
1180
+ Timeout, SkipOnErr, Check: func(ctx) error}) - the per-check Timeout and the SkipOnErr
1181
+ flag are the two fields that matter, because they encode the distinction between a
1182
+ degraded dependency (report but stay serving) and a fatal one (fail readiness). The
1183
+ checks/ subpackages give ready-made probes for postgres, mysql, redis, mongo, rabbitmq
1184
+ and http, each a tiny file that is easy to read and adapt. The handler returns aggregate
1185
+ status plus per-check detail as JSON, which is exactly the response shape a Kubernetes
1186
+ readinessProbe and a status page both want.
1187
+ whatToAvoid: >-
1188
+ Do not point a liveness probe at an endpoint that checks dependencies - a slow database
1189
+ then causes Kubernetes to kill otherwise healthy pods and cascade the outage. Generate
1190
+ two endpoints: a trivial /livez returning 200 unconditionally, and /readyz running these
1191
+ checks. Keep check timeouts well below the probe timeout, and do not expose the detailed
1192
+ JSON publicly since it enumerates your internal dependencies.
1193
+ licenseNote: >-
1194
+ Apache-2.0, but the file is LICENSE.txt (lowercase extension), not LICENSE - the
1195
+ attribution step in a generated repo must copy that exact filename, same caveat as
1196
+ opentelemetry-dotnet and dotnet/aspire which both use LICENSE.TXT.
1197
+ portability: "High - plain net/http handler, mounts on any Go router."
1198
+
1199
+ - name: "pyrra-dev/pyrra"
1200
+ url: "https://github.com/pyrra-dev/pyrra"
1201
+ stars: 1529
1202
+ spdx: "Apache-2.0"
1203
+ licenseClass: vendorable
1204
+ maintained: true
1205
+ lastCommit: "2026-06-22"
1206
+ archived: false
1207
+ stack: "Go + React - SLO definitions compiled to Prometheus recording/alerting rules, error-budget UI"
1208
+ complexity: standard
1209
+ proposedLayerIds:
1210
+ - slo-error-budget
1211
+ - slo-prometheus-rules
1212
+ - obs-alerting-burnrate
1213
+ whatToBorrow: >-
1214
+ The error-budget calculator the brief asks for, and the natural complement to sloth.
1215
+ Borrow the ServiceLevelObjective spec shape from examples/ - target as a percentage,
1216
+ window as a duration, and an indicator that is either a ratio (errors query over total
1217
+ query) or a latency block with a bucket threshold. Pyrra compiles that into multi-window
1218
+ multi-burn-rate recording and alerting rules, so the copyable artifact is the generated
1219
+ rule YAML plus the filesystem/kubernetes operating modes: filesystem mode reads a
1220
+ directory of SLO YAML and writes Prometheus rule files, which is exactly what a
1221
+ generated repo can commit and diff in CI without running an operator. The UI showing
1222
+ remaining budget and burn rate is the reference for what an error-budget dashboard needs.
1223
+ whatToAvoid: >-
1224
+ It expects Prometheus-compatible metrics that already exist and are correctly labelled -
1225
+ an SLO layer is worthless without a working RED-metrics layer beneath it, so order the
1226
+ layer dependencies accordingly. The Kubernetes operator mode pulls in CRDs and a
1227
+ controller that a small repo does not need; prefer filesystem mode as the default. The
1228
+ generated recording rules add real cardinality and evaluation cost at scale.
1229
+
1230
+ - name: "prometheus-operator/kube-prometheus"
1231
+ url: "https://github.com/prometheus-operator/kube-prometheus"
1232
+ stars: 7695
1233
+ spdx: "Apache-2.0"
1234
+ licenseClass: vendorable
1235
+ maintained: true
1236
+ lastCommit: "2026-07-18"
1237
+ archived: false
1238
+ stack: "Jsonnet + generated Kubernetes manifests - Prometheus Operator, Alertmanager, Grafana, node-exporter, kube-state-metrics"
1239
+ complexity: enterprise
1240
+ proposedLayerIds:
1241
+ - obs-stack-kubernetes
1242
+ - obs-alerting-rules
1243
+ - slo-prometheus-rules
1244
+ whatToBorrow: >-
1245
+ The production Kubernetes counterpart to dockprom's compose stack. The manifests/
1246
+ directory is fully generated, committed YAML - it can be applied directly or read as the
1247
+ reference for what a complete cluster monitoring install contains: ServiceMonitor and
1248
+ PodMonitor custom resources, PrometheusRule objects carrying the battle-tested
1249
+ kubernetes-apps / kubernetes-resources alert families, Alertmanager routing config, and
1250
+ RBAC. Borrow the ServiceMonitor shape as the standard way an application declares its own
1251
+ scrape target, and the PrometheusRule alert definitions (KubePodCrashLooping,
1252
+ KubeDeploymentReplicasMismatch and friends) as a starting alert set rather than authoring
1253
+ one from scratch. jsonnet/ shows the customisation path if a repo wants to regenerate.
1254
+ whatToAvoid: >-
1255
+ Enterprise weight - this is a whole cluster monitoring platform with a substantial
1256
+ resource footprint, wholly inappropriate as a default for a small generated repo. Version
1257
+ compatibility with the Kubernetes minor release is strict and documented in the README
1258
+ matrix; applying a mismatched release breaks on CRD schema. The bundled Grafana is AGPL
1259
+ as a deployed binary - configuring it is fine, vendoring Grafana source is not. Editing
1260
+ manifests/ by hand is a dead end since it is regenerated from jsonnet.
1261
+
1262
+ - name: "prometheus/prometheus"
1263
+ url: "https://github.com/prometheus/prometheus"
1264
+ stars: 65222
1265
+ spdx: "Apache-2.0"
1266
+ licenseClass: vendorable
1267
+ maintained: true
1268
+ lastCommit: "2026-07-18"
1269
+ archived: false
1270
+ stack: "Go - metrics TSDB, scrape engine, PromQL, alerting rules"
1271
+ complexity: professional
1272
+ proposedLayerIds:
1273
+ - obs-metrics-prometheus
1274
+ - obs-alerting-rules
1275
+ - obs-recording-rules
1276
+ whatToBorrow: >-
1277
+ The upstream source of the config schemas every other layer here references. Borrow
1278
+ documentation/examples/prometheus.yml as the canonical scrape_config skeleton - global
1279
+ scrape_interval and evaluation_interval, rule_files, alerting.alertmanagers, and
1280
+ relabel_configs, which is the part most templates get wrong. The config/testdata tree is
1281
+ an unusually good reference for valid and invalid config shapes, and the unit-test format
1282
+ consumed by `promtool test rules` lets a generated repo assert its alerts actually fire
1283
+ against synthetic series - that promtool rule test is a genuinely underused CI gate worth
1284
+ generating.
1285
+ whatToAvoid: >-
1286
+ Do not vendor Go source; take config, rules and promtool usage. Default retention is
1287
+ local-disk only with no built-in HA or long-term storage - a template that implies
1288
+ durability without adding remote_write is misleading. High-cardinality labels (user ids,
1289
+ request ids, full URLs) are the standard way people destroy a Prometheus instance, so any
1290
+ generated instrumentation guidance must call that out explicitly.
1291
+
1292
+ # ---------------------------------------------------------------------------
1293
+ # REFERENCE-ONLY - weak copyleft. Read for design ideas, never copy files.
1294
+ # ---------------------------------------------------------------------------
1295
+ referenceOnly:
1296
+ - name: "vectordotdev/vector"
1297
+ url: "https://github.com/vectordotdev/vector"
1298
+ spdx: "MPL-2.0"
1299
+ licenseClass: reference-only
1300
+ reason: >-
1301
+ LICENSE fetched from raw.githubusercontent.com confirms Mozilla Public License 2.0.
1302
+ File-level copyleft: modifying an MPL file obliges you to publish that file's source under
1303
+ MPL, which does not infect the rest of a generated repo but is still a condition we do not
1304
+ want to impose silently. Read its log-pipeline and transform design for ideas; do not copy
1305
+ files into generated repos.
1306
+ verificationNote: >-
1307
+ Moved out of the `excluded:` block during verification. The previous revision filed it
1308
+ under `excluded` while labelling it licenseClass reference-only, contradicting the file's
1309
+ own taxonomy. The classification was right; the placement was wrong. MPL-2.0 is
1310
+ reference-only, not excluded.
1311
+
1312
+ # ---------------------------------------------------------------------------
1313
+ # EXCLUDED - license gate failed. Each verified from the LICENSE file itself.
1314
+ # ---------------------------------------------------------------------------
1315
+ excluded:
1316
+ - name: "grafana/loki"
1317
+ url: "https://github.com/grafana/loki"
1318
+ stars: 28581
1319
+ spdx: "AGPL-3.0"
1320
+ licenseClass: excluded
1321
+ lastCommit: "2026-07-18"
1322
+ archived: false
1323
+ reason: >-
1324
+ Added 2026-07-19. AGPL-3.0 confirmed by fetching the LICENSE file from
1325
+ raw.githubusercontent.com, which opens "GNU AFFERO GENERAL PUBLIC LICENSE Version 3,
1326
+ 19 November 2007". Same boundary as grafana/grafana: Loki may be RUN as a container and
1327
+ pointed at by a collector exporter or a Grafana datasource we author ourselves, but no
1328
+ source, no client library code and no bundled config from this repo may be vendored into
1329
+ a generated repo. Worth stating explicitly because grafana/docker-otel-lgtm - which IS
1330
+ promoted above as Apache-2.0 - bundles a Loki binary in its image. Running that image is
1331
+ fine; copying Loki source out of it is not.
1332
+ - name: "grafana/grafana"
1333
+ url: "https://github.com/grafana/grafana"
1334
+ stars: 75619
1335
+ spdx: "AGPL-3.0"
1336
+ licenseClass: excluded
1337
+ lastCommit: "2026-07-18"
1338
+ archived: false
1339
+ reason: >-
1340
+ AGPL-3.0 confirmed by reading the LICENSE file ("GNU AFFERO GENERAL PUBLIC LICENSE
1341
+ Version 3"). Copying Grafana source would force AGPL terms onto every repo Groundplan
1342
+ generates. Grafana may still be RUN as a container and configured via provisioning YAML
1343
+ that we author ourselves - that config is our own work and carries no AGPL obligation -
1344
+ but no source, plugin code or bundled dashboard JSON from this repo may be vendored.
1345
+
1346
+ - name: "openobserve/openobserve"
1347
+ url: "https://github.com/openobserve/openobserve"
1348
+ spdx: "AGPL-3.0"
1349
+ licenseClass: excluded
1350
+ reason: >-
1351
+ AGPL-3.0 confirmed by fetching the LICENSE file directly ("GNU AFFERO GENERAL PUBLIC
1352
+ LICENSE Version 3"), upgrading the previous revision's README-based claim to a primary
1353
+ source. A separate commercial Enterprise Edition exists. The license gate excludes it
1354
+ regardless of stars or activity.
1355
+
1356
+ - name: "getsentry/sentry"
1357
+ url: "https://github.com/getsentry/sentry"
1358
+ spdx: "FSL-1.1-Apache-2.0"
1359
+ licenseClass: excluded
1360
+ reason: >-
1361
+ LICENSE.md fetched from raw.githubusercontent.com confirms "Functional Source License,
1362
+ Version 1.1, Apache 2.0 Future License". Source-available with a competitive-use
1363
+ restriction, not open source - excluded. This applies to the Sentry SERVER only; the
1364
+ getsentry/sentry-javascript SDK is separately MIT and is promoted in sources above.