container-superposition 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 (327) hide show
  1. package/README.md +843 -0
  2. package/dist/scripts/init.d.ts +3 -0
  3. package/dist/scripts/init.d.ts.map +1 -0
  4. package/dist/scripts/init.js +1190 -0
  5. package/dist/scripts/init.js.map +1 -0
  6. package/dist/scripts/migrate-to-manifests.d.ts +12 -0
  7. package/dist/scripts/migrate-to-manifests.d.ts.map +1 -0
  8. package/dist/scripts/migrate-to-manifests.js +230 -0
  9. package/dist/scripts/migrate-to-manifests.js.map +1 -0
  10. package/dist/tool/questionnaire/composer.d.ts +6 -0
  11. package/dist/tool/questionnaire/composer.d.ts.map +1 -0
  12. package/dist/tool/questionnaire/composer.js +1232 -0
  13. package/dist/tool/questionnaire/composer.js.map +1 -0
  14. package/dist/tool/readme/markdown-parser.d.ts +30 -0
  15. package/dist/tool/readme/markdown-parser.d.ts.map +1 -0
  16. package/dist/tool/readme/markdown-parser.js +139 -0
  17. package/dist/tool/readme/markdown-parser.js.map +1 -0
  18. package/dist/tool/readme/readme-generator.d.ts +9 -0
  19. package/dist/tool/readme/readme-generator.d.ts.map +1 -0
  20. package/dist/tool/readme/readme-generator.js +422 -0
  21. package/dist/tool/readme/readme-generator.js.map +1 -0
  22. package/dist/tool/schema/custom-loader.d.ts +17 -0
  23. package/dist/tool/schema/custom-loader.d.ts.map +1 -0
  24. package/dist/tool/schema/custom-loader.js +149 -0
  25. package/dist/tool/schema/custom-loader.js.map +1 -0
  26. package/dist/tool/schema/overlay-loader.d.ts +47 -0
  27. package/dist/tool/schema/overlay-loader.d.ts.map +1 -0
  28. package/dist/tool/schema/overlay-loader.js +252 -0
  29. package/dist/tool/schema/overlay-loader.js.map +1 -0
  30. package/dist/tool/schema/types.d.ts +212 -0
  31. package/dist/tool/schema/types.d.ts.map +1 -0
  32. package/dist/tool/schema/types.js +5 -0
  33. package/dist/tool/schema/types.js.map +1 -0
  34. package/docs/README.md +308 -0
  35. package/docs/architecture.md +233 -0
  36. package/docs/creating-overlays.md +549 -0
  37. package/docs/custom-patches.md +540 -0
  38. package/docs/dependencies.md +279 -0
  39. package/docs/examples/custom-patches-example.md +85 -0
  40. package/docs/examples.md +576 -0
  41. package/docs/messaging-comparison.md +265 -0
  42. package/docs/messaging-quick-start.md +385 -0
  43. package/docs/observability-workflow.md +537 -0
  44. package/docs/overlay-manifest-refactoring.md +214 -0
  45. package/docs/overlay-metadata-archive.md +54 -0
  46. package/docs/overlays.md +523 -0
  47. package/docs/presets-architecture.md +498 -0
  48. package/docs/presets.md +366 -0
  49. package/docs/publishing.md +476 -0
  50. package/docs/quick-reference.md +326 -0
  51. package/docs/ux.md +170 -0
  52. package/features/README.md +85 -0
  53. package/features/cross-distro-packages/README.md +146 -0
  54. package/features/cross-distro-packages/devcontainer-feature.json +20 -0
  55. package/features/cross-distro-packages/install.sh +58 -0
  56. package/features/local-secrets-manager/devcontainer-feature.json +18 -0
  57. package/features/local-secrets-manager/install.sh +127 -0
  58. package/features/project-scaffolder/devcontainer-feature.json +24 -0
  59. package/features/project-scaffolder/install.sh +100 -0
  60. package/features/team-conventions/devcontainer-feature.json +24 -0
  61. package/features/team-conventions/install.sh +93 -0
  62. package/overlays/.registry/README.md +14 -0
  63. package/overlays/.registry/base-images.yml +26 -0
  64. package/overlays/.registry/base-templates.yml +7 -0
  65. package/overlays/README.md +155 -0
  66. package/overlays/alertmanager/.env.example +5 -0
  67. package/overlays/alertmanager/README.md +465 -0
  68. package/overlays/alertmanager/alert-rules.yml +56 -0
  69. package/overlays/alertmanager/alertmanager.yml +42 -0
  70. package/overlays/alertmanager/devcontainer.patch.json +12 -0
  71. package/overlays/alertmanager/docker-compose.yml +20 -0
  72. package/overlays/alertmanager/overlay.yml +17 -0
  73. package/overlays/alertmanager/setup.sh +53 -0
  74. package/overlays/alertmanager/verify.sh +31 -0
  75. package/overlays/aws-cli/README.md +473 -0
  76. package/overlays/aws-cli/devcontainer.patch.json +13 -0
  77. package/overlays/aws-cli/overlay.yml +13 -0
  78. package/overlays/azure-cli/README.md +551 -0
  79. package/overlays/azure-cli/devcontainer.patch.json +8 -0
  80. package/overlays/azure-cli/overlay.yml +13 -0
  81. package/overlays/bun/README.md +312 -0
  82. package/overlays/bun/devcontainer.patch.json +41 -0
  83. package/overlays/bun/overlay.yml +16 -0
  84. package/overlays/bun/setup.sh +79 -0
  85. package/overlays/bun/verify.sh +30 -0
  86. package/overlays/codex/README.md +128 -0
  87. package/overlays/codex/devcontainer.patch.json +3 -0
  88. package/overlays/codex/overlay.yml +14 -0
  89. package/overlays/codex/setup.sh +24 -0
  90. package/overlays/codex/verify.sh +30 -0
  91. package/overlays/commitlint/README.md +333 -0
  92. package/overlays/commitlint/devcontainer.patch.json +8 -0
  93. package/overlays/commitlint/overlay.yml +16 -0
  94. package/overlays/commitlint/setup.sh +234 -0
  95. package/overlays/direnv/README.md +504 -0
  96. package/overlays/direnv/devcontainer.patch.json +6 -0
  97. package/overlays/direnv/overlay.yml +13 -0
  98. package/overlays/direnv/setup.sh +139 -0
  99. package/overlays/docker-in-docker/README.md +534 -0
  100. package/overlays/docker-in-docker/devcontainer.patch.json +10 -0
  101. package/overlays/docker-in-docker/overlay.yml +13 -0
  102. package/overlays/docker-sock/README.md +256 -0
  103. package/overlays/docker-sock/devcontainer.patch.json +9 -0
  104. package/overlays/docker-sock/docker-compose.yml +8 -0
  105. package/overlays/docker-sock/overlay.yml +13 -0
  106. package/overlays/dotnet/README.md +147 -0
  107. package/overlays/dotnet/devcontainer.patch.json +51 -0
  108. package/overlays/dotnet/global-tools.txt +24 -0
  109. package/overlays/dotnet/overlay.yml +13 -0
  110. package/overlays/dotnet/setup.sh +51 -0
  111. package/overlays/dotnet/verify.sh +26 -0
  112. package/overlays/gcloud/README.md +269 -0
  113. package/overlays/gcloud/devcontainer.patch.json +14 -0
  114. package/overlays/gcloud/overlay.yml +14 -0
  115. package/overlays/gcloud/verify.sh +52 -0
  116. package/overlays/git-helpers/README.md +168 -0
  117. package/overlays/git-helpers/devcontainer.patch.json +33 -0
  118. package/overlays/git-helpers/overlay.yml +15 -0
  119. package/overlays/git-helpers/setup.sh +91 -0
  120. package/overlays/go/README.md +293 -0
  121. package/overlays/go/devcontainer.patch.json +43 -0
  122. package/overlays/go/overlay.yml +15 -0
  123. package/overlays/go/setup.sh +33 -0
  124. package/overlays/go/verify.sh +40 -0
  125. package/overlays/grafana/.env.example +9 -0
  126. package/overlays/grafana/README.md +462 -0
  127. package/overlays/grafana/dashboard-provider.yml +11 -0
  128. package/overlays/grafana/dashboards/observability-overview.json +263 -0
  129. package/overlays/grafana/devcontainer.patch.json +12 -0
  130. package/overlays/grafana/docker-compose.yml +27 -0
  131. package/overlays/grafana/grafana-datasources.yml +57 -0
  132. package/overlays/grafana/overlay.yml +21 -0
  133. package/overlays/grafana/verify.sh +34 -0
  134. package/overlays/jaeger/.env.example +7 -0
  135. package/overlays/jaeger/README.md +867 -0
  136. package/overlays/jaeger/devcontainer.patch.json +12 -0
  137. package/overlays/jaeger/docker-compose.yml +17 -0
  138. package/overlays/jaeger/overlay.yml +19 -0
  139. package/overlays/java/README.md +267 -0
  140. package/overlays/java/devcontainer.patch.json +44 -0
  141. package/overlays/java/overlay.yml +16 -0
  142. package/overlays/java/setup.sh +41 -0
  143. package/overlays/java/verify.sh +42 -0
  144. package/overlays/just/README.md +443 -0
  145. package/overlays/just/devcontainer.patch.json +3 -0
  146. package/overlays/just/overlay.yml +13 -0
  147. package/overlays/just/setup.sh +182 -0
  148. package/overlays/kubectl-helm/README.md +660 -0
  149. package/overlays/kubectl-helm/devcontainer.patch.json +10 -0
  150. package/overlays/kubectl-helm/overlay.yml +13 -0
  151. package/overlays/loki/.env.example +5 -0
  152. package/overlays/loki/README.md +1156 -0
  153. package/overlays/loki/devcontainer.patch.json +12 -0
  154. package/overlays/loki/docker-compose.yml +18 -0
  155. package/overlays/loki/loki-config.yaml +45 -0
  156. package/overlays/loki/overlay.yml +17 -0
  157. package/overlays/minio/.env.example +9 -0
  158. package/overlays/minio/README.md +639 -0
  159. package/overlays/minio/devcontainer.patch.json +30 -0
  160. package/overlays/minio/docker-compose.yml +28 -0
  161. package/overlays/minio/overlay.yml +18 -0
  162. package/overlays/minio/setup.sh +61 -0
  163. package/overlays/minio/verify.sh +64 -0
  164. package/overlays/mkdocs/README.md +309 -0
  165. package/overlays/mkdocs/devcontainer.patch.json +24 -0
  166. package/overlays/mkdocs/overlay.yml +15 -0
  167. package/overlays/modern-cli-tools/README.md +556 -0
  168. package/overlays/modern-cli-tools/devcontainer.patch.json +3 -0
  169. package/overlays/modern-cli-tools/overlay.yml +13 -0
  170. package/overlays/modern-cli-tools/setup.sh +153 -0
  171. package/overlays/mongodb/.env.example +9 -0
  172. package/overlays/mongodb/README.md +481 -0
  173. package/overlays/mongodb/devcontainer.patch.json +32 -0
  174. package/overlays/mongodb/docker-compose.yml +44 -0
  175. package/overlays/mongodb/overlay.yml +17 -0
  176. package/overlays/mongodb/verify.sh +48 -0
  177. package/overlays/mysql/.env.example +11 -0
  178. package/overlays/mysql/README.md +542 -0
  179. package/overlays/mysql/devcontainer.patch.json +34 -0
  180. package/overlays/mysql/docker-compose.yml +55 -0
  181. package/overlays/mysql/overlay.yml +16 -0
  182. package/overlays/mysql/verify.sh +48 -0
  183. package/overlays/nats/.env.example +5 -0
  184. package/overlays/nats/README.md +762 -0
  185. package/overlays/nats/devcontainer.patch.json +24 -0
  186. package/overlays/nats/docker-compose.yml +31 -0
  187. package/overlays/nats/overlay.yml +18 -0
  188. package/overlays/nats/verify.sh +50 -0
  189. package/overlays/ngrok/README.md +503 -0
  190. package/overlays/ngrok/devcontainer.patch.json +3 -0
  191. package/overlays/ngrok/overlay.yml +14 -0
  192. package/overlays/ngrok/setup.sh +125 -0
  193. package/overlays/nodejs/README.md +192 -0
  194. package/overlays/nodejs/devcontainer.patch.json +49 -0
  195. package/overlays/nodejs/global-packages.txt +16 -0
  196. package/overlays/nodejs/overlay.yml +14 -0
  197. package/overlays/nodejs/setup.sh +46 -0
  198. package/overlays/nodejs/verify.sh +32 -0
  199. package/overlays/otel-collector/.env.example +9 -0
  200. package/overlays/otel-collector/README.md +1257 -0
  201. package/overlays/otel-collector/devcontainer.patch.json +28 -0
  202. package/overlays/otel-collector/docker-compose.yml +22 -0
  203. package/overlays/otel-collector/otel-collector-config.yaml +68 -0
  204. package/overlays/otel-collector/overlay.yml +21 -0
  205. package/overlays/otel-collector/setup.sh +49 -0
  206. package/overlays/otel-demo-nodejs/.env.example +2 -0
  207. package/overlays/otel-demo-nodejs/Dockerfile-otel-demo-nodejs +17 -0
  208. package/overlays/otel-demo-nodejs/README.md +409 -0
  209. package/overlays/otel-demo-nodejs/devcontainer.patch.json +12 -0
  210. package/overlays/otel-demo-nodejs/docker-compose.yml +19 -0
  211. package/overlays/otel-demo-nodejs/overlay.yml +23 -0
  212. package/overlays/otel-demo-nodejs/package-otel-demo-nodejs.json +20 -0
  213. package/overlays/otel-demo-nodejs/server-otel-demo-nodejs.js +259 -0
  214. package/overlays/otel-demo-nodejs/tracing-otel-demo-nodejs.js +57 -0
  215. package/overlays/otel-demo-nodejs/verify.sh +31 -0
  216. package/overlays/otel-demo-python/.env.example +2 -0
  217. package/overlays/otel-demo-python/Dockerfile-otel-demo-python +16 -0
  218. package/overlays/otel-demo-python/README.md +82 -0
  219. package/overlays/otel-demo-python/app-otel-demo-python.py +208 -0
  220. package/overlays/otel-demo-python/devcontainer.patch.json +12 -0
  221. package/overlays/otel-demo-python/docker-compose.yml +19 -0
  222. package/overlays/otel-demo-python/overlay.yml +23 -0
  223. package/overlays/otel-demo-python/requirements-otel-demo-python.txt +4 -0
  224. package/overlays/otel-demo-python/verify.sh +31 -0
  225. package/overlays/playwright/README.md +629 -0
  226. package/overlays/playwright/devcontainer.patch.json +9 -0
  227. package/overlays/playwright/overlay.yml +13 -0
  228. package/overlays/postgres/.env.example +6 -0
  229. package/overlays/postgres/README.md +602 -0
  230. package/overlays/postgres/devcontainer.patch.json +21 -0
  231. package/overlays/postgres/docker-compose.yml +22 -0
  232. package/overlays/postgres/overlay.yml +15 -0
  233. package/overlays/postgres/verify.sh +45 -0
  234. package/overlays/powershell/README.md +314 -0
  235. package/overlays/powershell/devcontainer.patch.json +22 -0
  236. package/overlays/powershell/overlay.yml +13 -0
  237. package/overlays/powershell/setup.sh +29 -0
  238. package/overlays/powershell/verify.sh +38 -0
  239. package/overlays/pre-commit/README.md +263 -0
  240. package/overlays/pre-commit/devcontainer.patch.json +9 -0
  241. package/overlays/pre-commit/overlay.yml +16 -0
  242. package/overlays/pre-commit/setup.sh +129 -0
  243. package/overlays/presets/docs-site.yml +118 -0
  244. package/overlays/presets/fullstack.yml +181 -0
  245. package/overlays/presets/microservice.yml +118 -0
  246. package/overlays/presets/web-api.yml +109 -0
  247. package/overlays/prometheus/.env.example +5 -0
  248. package/overlays/prometheus/README.md +1246 -0
  249. package/overlays/prometheus/devcontainer.patch.json +12 -0
  250. package/overlays/prometheus/docker-compose.yml +22 -0
  251. package/overlays/prometheus/overlay.yml +17 -0
  252. package/overlays/prometheus/prometheus.yml +12 -0
  253. package/overlays/prometheus/verify.sh +34 -0
  254. package/overlays/promtail/.env.example +2 -0
  255. package/overlays/promtail/README.md +357 -0
  256. package/overlays/promtail/devcontainer.patch.json +5 -0
  257. package/overlays/promtail/docker-compose.yml +16 -0
  258. package/overlays/promtail/overlay.yml +17 -0
  259. package/overlays/promtail/promtail-config.yaml +60 -0
  260. package/overlays/promtail/verify.sh +31 -0
  261. package/overlays/pulumi/README.md +472 -0
  262. package/overlays/pulumi/devcontainer.patch.json +13 -0
  263. package/overlays/pulumi/overlay.yml +14 -0
  264. package/overlays/pulumi/verify.sh +31 -0
  265. package/overlays/python/README.md +919 -0
  266. package/overlays/python/devcontainer.patch.json +41 -0
  267. package/overlays/python/overlay.yml +12 -0
  268. package/overlays/python/requirements-overlay.txt +13 -0
  269. package/overlays/python/setup.sh +47 -0
  270. package/overlays/python/verify.sh +32 -0
  271. package/overlays/rabbitmq/.env.example +7 -0
  272. package/overlays/rabbitmq/README.md +680 -0
  273. package/overlays/rabbitmq/devcontainer.patch.json +28 -0
  274. package/overlays/rabbitmq/docker-compose.yml +30 -0
  275. package/overlays/rabbitmq/overlay.yml +18 -0
  276. package/overlays/rabbitmq/verify.sh +41 -0
  277. package/overlays/redis/.env.example +4 -0
  278. package/overlays/redis/README.md +776 -0
  279. package/overlays/redis/devcontainer.patch.json +21 -0
  280. package/overlays/redis/docker-compose.yml +21 -0
  281. package/overlays/redis/overlay.yml +15 -0
  282. package/overlays/redis/verify.sh +41 -0
  283. package/overlays/redpanda/.env.example +10 -0
  284. package/overlays/redpanda/README.md +703 -0
  285. package/overlays/redpanda/devcontainer.patch.json +37 -0
  286. package/overlays/redpanda/docker-compose.yml +67 -0
  287. package/overlays/redpanda/overlay.yml +21 -0
  288. package/overlays/redpanda/verify.sh +48 -0
  289. package/overlays/rust/README.md +299 -0
  290. package/overlays/rust/devcontainer.patch.json +39 -0
  291. package/overlays/rust/overlay.yml +15 -0
  292. package/overlays/rust/setup.sh +36 -0
  293. package/overlays/rust/verify.sh +51 -0
  294. package/overlays/sqlite/README.md +584 -0
  295. package/overlays/sqlite/devcontainer.patch.json +14 -0
  296. package/overlays/sqlite/overlay.yml +15 -0
  297. package/overlays/sqlite/setup.sh +27 -0
  298. package/overlays/sqlite/verify.sh +43 -0
  299. package/overlays/sqlserver/.env.example +6 -0
  300. package/overlays/sqlserver/README.md +592 -0
  301. package/overlays/sqlserver/devcontainer.patch.json +22 -0
  302. package/overlays/sqlserver/docker-compose.yml +32 -0
  303. package/overlays/sqlserver/overlay.yml +17 -0
  304. package/overlays/sqlserver/verify.sh +30 -0
  305. package/overlays/tempo/.env.example +5 -0
  306. package/overlays/tempo/README.md +273 -0
  307. package/overlays/tempo/devcontainer.patch.json +12 -0
  308. package/overlays/tempo/docker-compose.yml +20 -0
  309. package/overlays/tempo/overlay.yml +20 -0
  310. package/overlays/tempo/tempo-config.yaml +32 -0
  311. package/overlays/tempo/verify.sh +31 -0
  312. package/overlays/terraform/README.md +389 -0
  313. package/overlays/terraform/devcontainer.patch.json +15 -0
  314. package/overlays/terraform/overlay.yml +14 -0
  315. package/overlays/terraform/verify.sh +63 -0
  316. package/package.json +74 -0
  317. package/templates/README.md +285 -0
  318. package/templates/compose/.devcontainer/devcontainer.json +46 -0
  319. package/templates/compose/.devcontainer/docker-compose.yml +12 -0
  320. package/templates/compose/README.md +20 -0
  321. package/templates/plain/.devcontainer/devcontainer.json +35 -0
  322. package/templates/plain/README.md +21 -0
  323. package/tool/README.md +281 -0
  324. package/tool/schema/base-images.schema.json +43 -0
  325. package/tool/schema/base-templates.schema.json +34 -0
  326. package/tool/schema/config.schema.json +71 -0
  327. package/tool/schema/overlay-manifest.schema.json +86 -0
@@ -0,0 +1,476 @@
1
+ # Publishing to npm
2
+
3
+ This guide explains how to publish `container-superposition` to npm, making it available via `npx container-superposition`.
4
+
5
+ ## Package Overview
6
+
7
+ **Package Name:** `container-superposition`
8
+ **Current Version:** `0.1.0`
9
+ **Size:** ~327 KB (compressed), 1.2 MB (unpacked)
10
+ **Files:** 327 files
11
+ **Entry Point:** `dist/scripts/init.js`
12
+
13
+ **Available Commands:**
14
+
15
+ - `container-superposition init` - Interactive devcontainer setup
16
+ - `container-superposition regen` - Regenerate from manifest
17
+ - `container-superposition list` - List available overlays
18
+ - `container-superposition doctor` - Environment validation
19
+
20
+ ## Publishing Process
21
+
22
+ Publishing is **automated via GitHub Actions** when a new release is created.
23
+
24
+ ### Automated Publishing (Recommended)
25
+
26
+ 1. **Update version in package.json:**
27
+
28
+ ```bash
29
+ npm version patch # 0.1.0 → 0.1.1 (bug fixes)
30
+ npm version minor # 0.1.0 → 0.2.0 (new features)
31
+ npm version major # 0.1.0 → 1.0.0 (breaking changes)
32
+ ```
33
+
34
+ 2. **Update CHANGELOG.md** with release notes
35
+
36
+ 3. **Commit and push changes:**
37
+
38
+ ```bash
39
+ git add package.json package-lock.json CHANGELOG.md
40
+ git commit -m "chore: bump version to X.Y.Z"
41
+ git push
42
+ ```
43
+
44
+ 4. **Create GitHub Release:**
45
+ - Go to https://github.com/veggerby/container-superposition/releases/new
46
+ - Tag: `vX.Y.Z` (e.g., `v0.1.1`)
47
+ - Title: `vX.Y.Z`
48
+ - Description: Copy from CHANGELOG.md
49
+ - Click "Publish release"
50
+
51
+ 5. **GitHub Actions will automatically:**
52
+ - ✅ Validate semantic version format
53
+ - ✅ Install dependencies
54
+ - ✅ Run tests
55
+ - ✅ Build TypeScript
56
+ - ✅ Verify package contents
57
+ - ✅ Publish to npm with provenance
58
+ - ✅ Verify publication
59
+
60
+ ### Manual Publishing (Development/Testing)
61
+
62
+ For testing or emergency releases:
63
+
64
+ ```bash
65
+ # 1. Ensure you're logged in to npm
66
+ npm whoami
67
+
68
+ # If not logged in:
69
+ npm login
70
+
71
+ # 2. Run pre-publish checks
72
+ npm run clean
73
+ npm install
74
+ npm run build
75
+ npm test
76
+
77
+ # 3. Verify package contents
78
+ npm pack --dry-run
79
+
80
+ # 4. Test locally with npx
81
+ npm pack
82
+ cd /tmp && npm install /path/to/container-superposition-X.Y.Z.tgz
83
+ npx container-superposition --help
84
+ npx container-superposition list
85
+
86
+ # 5. Publish to npm
87
+ npm publish --access public
88
+
89
+ # For beta/test releases
90
+ npm publish --tag beta --access public
91
+ ```
92
+
93
+ ## Pre-Publish Checklist
94
+
95
+ Before creating a release, verify:
96
+
97
+ - [ ] All tests pass (`npm test`)
98
+ - [ ] TypeScript builds without errors (`npm run build`)
99
+ - [ ] Package size is reasonable (`npm pack --dry-run`)
100
+ - [ ] CHANGELOG.md is updated with release notes
101
+ - [ ] Version number follows semantic versioning
102
+ - [ ] README.md reflects current functionality
103
+ - [ ] No secrets or sensitive data in package
104
+ - [ ] All CLI commands work (`init`, `regen`, `list`, `doctor`)
105
+
106
+ ## Post-Publication
107
+
108
+ After publishing, verify:
109
+
110
+ 1. **Package is live on npm:**
111
+
112
+ ```bash
113
+ npm view container-superposition
114
+ ```
115
+
116
+ 2. **npx works:**
117
+
118
+ ```bash
119
+ npx container-superposition@latest --help
120
+ npx container-superposition@latest list
121
+ npx container-superposition@latest doctor
122
+ ```
123
+
124
+ 3. **Installation works:**
125
+
126
+ ```bash
127
+ npm install -g container-superposition
128
+ container-superposition init --help
129
+ ```
130
+
131
+ 4. **Update documentation:**
132
+ - Ensure README.md shows latest version
133
+ - Update any version-specific examples
134
+ - Announce on relevant channels
135
+
136
+ ## Pre-Publish Checklist
137
+
138
+ ### 1. Check Package Name Availability
139
+
140
+ ```bash
141
+ # Check if name is available
142
+ npm view container-superposition
143
+
144
+ # If you see "npm error code E404", the name is available ✓
145
+ # If you see package info, the name is taken ✗
146
+ ```
147
+
148
+ ### 2. Run Tests
149
+
150
+ ```bash
151
+ # Unit tests
152
+ npm test
153
+
154
+ # Smoke tests
155
+ npm run test:smoke
156
+ ```
157
+
158
+ ### 3. Verify Package Contents
159
+
160
+ ```bash
161
+ # Dry run to see what will be published
162
+ npm pack --dry-run
163
+
164
+ # Note: You may see a warning about .npmignore not being found.
165
+ # This is safe to ignore - we use the "files" field in package.json
166
+ # as the primary inclusion mechanism (explicit allowlist approach).
167
+ ```
168
+
169
+ **Expected contents:**
170
+
171
+ - ✅ 138 files
172
+ - ✅ All overlays (dotnet, nodejs, python, postgres, redis, jaeger, prometheus, grafana, loki, etc.)
173
+ - ✅ All templates (plain, compose)
174
+ - ✅ All features (local-secrets-manager, project-scaffolder, team-conventions)
175
+ - ✅ Compiled dist/ folder
176
+ - ✅ Tool configuration (overlays.yml, schema)
177
+ - ✅ README and LICENSE
178
+
179
+ **Package size:**
180
+
181
+ - Compressed: ~122 KB
182
+ - Unpacked: ~462 KB
183
+
184
+ ### 4. Update Version (if needed)
185
+
186
+ ```bash
187
+ # First release (already at 0.1.0)
188
+ # For subsequent releases:
189
+
190
+ # Patch release (bug fixes): 0.1.0 → 0.1.1
191
+ npm version patch
192
+
193
+ # Minor release (new features): 0.1.0 → 0.2.0
194
+ npm version minor
195
+
196
+ # Major release (breaking changes): 0.1.0 → 1.0.0
197
+ npm version major
198
+ ```
199
+
200
+ ### 5. Update CHANGELOG.md
201
+
202
+ Document changes in [CHANGELOG.md](../CHANGELOG.md):
203
+
204
+ ```markdown
205
+ ## [0.1.0] - 2026-02-05
206
+
207
+ ### Added
208
+
209
+ - Initial release
210
+ - Interactive questionnaire with dependency resolution
211
+ - 24+ overlays across languages, databases, observability, cloud tools, dev tools
212
+ - Plain and compose base templates
213
+ - ...
214
+ ```
215
+
216
+ ## Publishing
217
+
218
+ ### Option 1: Public Release
219
+
220
+ ```bash
221
+ # Build is automatic via prepublishOnly hook
222
+ npm publish
223
+
224
+ # The package will be available at:
225
+ # https://www.npmjs.com/package/container-superposition
226
+ ```
227
+
228
+ ### Option 2: Beta Release (Recommended for First Publish)
229
+
230
+ Test with a beta tag first:
231
+
232
+ ```bash
233
+ # Publish as beta
234
+ npm publish --tag beta
235
+
236
+ # Users install with:
237
+ # npx container-superposition@beta init
238
+ # or
239
+ # npm install -g container-superposition@beta
240
+
241
+ # When ready to promote to latest:
242
+ npm dist-tag add container-superposition@0.1.0 latest
243
+ ```
244
+
245
+ ### Option 3: Scoped Package (If Name Taken)
246
+
247
+ If `container-superposition` is unavailable, use a scoped package:
248
+
249
+ ```bash
250
+ # Update package.json name to:
251
+ # "@veggerby/container-superposition"
252
+
253
+ # Publish publicly (scoped packages default to private)
254
+ npm publish --access public
255
+ ```
256
+
257
+ ## Post-Publish
258
+
259
+ ### 1. Verify Installation
260
+
261
+ ```bash
262
+ # Test npx execution (may take 1-2 minutes to propagate)
263
+ npx container-superposition@latest init --help
264
+
265
+ # Test global installation
266
+ npm install -g container-superposition
267
+ container-superposition init --help
268
+ ```
269
+
270
+ ### 2. Create GitHub Release
271
+
272
+ ```bash
273
+ # Tag the release
274
+ git tag v0.1.0
275
+ git push origin v0.1.0
276
+
277
+ # Create release on GitHub:
278
+ # https://github.com/veggerby/container-superposition/releases/new
279
+ ```
280
+
281
+ ### 3. Update Documentation
282
+
283
+ Update README.md to reflect published status:
284
+
285
+ ````markdown
286
+ ## Quick Start
287
+
288
+ ### Via npx (Recommended)
289
+
290
+ ```bash
291
+ npx container-superposition init
292
+ ```
293
+ ````
294
+
295
+ ### Or Install Globally
296
+
297
+ ```bash
298
+ npm install -g container-superposition
299
+ container-superposition init
300
+ ```
301
+
302
+ ````
303
+
304
+ ## Continuous Publishing
305
+
306
+ ### Automated Releases (Future Enhancement)
307
+
308
+ Consider GitHub Actions for automated publishing:
309
+
310
+ ```yaml
311
+ # .github/workflows/publish.yml
312
+ name: Publish to npm
313
+
314
+ on:
315
+ release:
316
+ types: [created]
317
+
318
+ jobs:
319
+ publish:
320
+ runs-on: ubuntu-latest
321
+ steps:
322
+ - uses: actions/checkout@v4
323
+ - uses: actions/setup-node@v4
324
+ with:
325
+ node-version: '20'
326
+ registry-url: 'https://registry.npmjs.org'
327
+ - run: npm ci
328
+ - run: npm test
329
+ - run: npm publish
330
+ env:
331
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
332
+ ```
333
+
334
+ ## Troubleshooting
335
+
336
+ ### ".npmignore not found" Warning
337
+
338
+ If you see:
339
+ ```
340
+ npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion.
341
+ ```
342
+
343
+ **This warning can be safely ignored.** The package uses the `"files"` field in `package.json` as the primary inclusion mechanism (allowlist approach), which is more explicit and maintainable than `.npmignore` (denylist approach).
344
+
345
+ The `"files"` field specifies exactly what to include:
346
+ ```json
347
+ {
348
+ "files": [
349
+ "dist/",
350
+ "templates/",
351
+ "features/",
352
+ "overlays/",
353
+ "tool/**/*.json",
354
+ "tool/**/*.yml",
355
+ "docs/**/*.md"
356
+ ]
357
+ }
358
+ ```
359
+
360
+ This approach is recommended by npm for packages.
361
+
362
+ ### Build Fails
363
+
364
+ ```bash
365
+ # Clean everything and rebuild
366
+ npm run clean
367
+ rm -rf node_modules package-lock.json
368
+ npm install
369
+ npm run build
370
+ ```
371
+
372
+ ### Package Size Too Large
373
+
374
+ Check what's being included:
375
+
376
+ ```bash
377
+ npm pack --dry-run | grep "npm notice"
378
+ ```
379
+
380
+ To exclude unnecessary files, modify the `"files"` array in `package.json`:
381
+
382
+ ```json
383
+ {
384
+ "files": [
385
+ "dist/", // Keep compiled code
386
+ "templates/", // Keep base templates
387
+ "features/", // Keep custom features
388
+ "overlays/", // Keep all overlays
389
+ // Exclude specific patterns with "!" prefix if needed
390
+ "!overlays/**/node_modules"
391
+ ]
392
+ }
393
+ ```
394
+
395
+ The `"files"` field is an allowlist - only listed items are included. This is more explicit and maintainable than using `.npmignore`.
396
+
397
+ ### Permission Errors
398
+
399
+ ```bash
400
+ # Verify npm login
401
+ npm whoami
402
+
403
+ # If not logged in:
404
+ npm login
405
+ ```
406
+
407
+ ### Name Already Taken
408
+
409
+ Options:
410
+ 1. Use scoped package: `@veggerby/container-superposition`
411
+ 2. Choose different name: `devcontainer-superposition`, `superposition-dev`, etc.
412
+ 3. Contact current owner if package is abandoned
413
+
414
+ ### Version Already Published
415
+
416
+ ```bash
417
+ # Cannot republish same version
418
+ # Bump version and republish:
419
+ npm version patch
420
+ npm publish
421
+ ```
422
+
423
+ ## Best Practices
424
+
425
+ ### Versioning Strategy
426
+
427
+ Follow [Semantic Versioning](https://semver.org/):
428
+ - **MAJOR**: Breaking changes (e.g., removing overlays, changing CLI args)
429
+ - **MINOR**: New features (e.g., adding overlays, new CLI options)
430
+ - **PATCH**: Bug fixes (e.g., fixing composition logic, updating deps)
431
+
432
+ ### Pre-Release Versions
433
+
434
+ For experimental features:
435
+
436
+ ```bash
437
+ # Create pre-release
438
+ npm version 0.2.0-alpha.1
439
+
440
+ # Publish with tag
441
+ npm publish --tag next
442
+
443
+ # Users install with:
444
+ # npx container-superposition@next init
445
+ ```
446
+
447
+ ### Deprecation
448
+
449
+ If publishing a new major version:
450
+
451
+ ```bash
452
+ # Deprecate old version
453
+ npm deprecate container-superposition@0.1.0 "Use v1.0.0 instead"
454
+ ```
455
+
456
+ ## Unpublishing (Emergency Only)
457
+
458
+ **⚠️ Only use within 72 hours of publishing:**
459
+
460
+ ```bash
461
+ # Unpublish specific version
462
+ npm unpublish container-superposition@0.1.0
463
+
464
+ # Unpublish entire package (use with caution!)
465
+ npm unpublish container-superposition --force
466
+ ```
467
+
468
+ **Note:** npm discourages unpublishing as it breaks dependents. Prefer deprecation instead.
469
+
470
+ ## References
471
+
472
+ - [npm Publishing Packages](https://docs.npmjs.com/cli/v10/commands/npm-publish)
473
+ - [npm Version Management](https://docs.npmjs.com/cli/v10/commands/npm-version)
474
+ - [Semantic Versioning](https://semver.org/)
475
+ - [npm Package Lifecycle Scripts](https://docs.npmjs.com/cli/v10/using-npm/scripts#life-cycle-scripts)
476
+ ````