@vyuhlabs/dxkit 2.4.8 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/CHANGELOG.md +235 -0
  2. package/README.md +360 -439
  3. package/dist/analyzers/security/aggregator.d.ts.map +1 -1
  4. package/dist/analyzers/security/aggregator.js +4 -46
  5. package/dist/analyzers/security/aggregator.js.map +1 -1
  6. package/dist/analyzers/tools/fingerprint.d.ts +91 -26
  7. package/dist/analyzers/tools/fingerprint.d.ts.map +1 -1
  8. package/dist/analyzers/tools/fingerprint.js +111 -22
  9. package/dist/analyzers/tools/fingerprint.js.map +1 -1
  10. package/dist/analyzers/tools/generic.d.ts.map +1 -1
  11. package/dist/analyzers/tools/generic.js +6 -1
  12. package/dist/analyzers/tools/generic.js.map +1 -1
  13. package/dist/analyzers/tools/gitleaks.d.ts +24 -1
  14. package/dist/analyzers/tools/gitleaks.d.ts.map +1 -1
  15. package/dist/analyzers/tools/gitleaks.js +20 -11
  16. package/dist/analyzers/tools/gitleaks.js.map +1 -1
  17. package/dist/analyzers/types.d.ts +6 -4
  18. package/dist/analyzers/types.d.ts.map +1 -1
  19. package/dist/baseline/baseline-file.d.ts +104 -0
  20. package/dist/baseline/baseline-file.d.ts.map +1 -0
  21. package/dist/baseline/baseline-file.js +110 -0
  22. package/dist/baseline/baseline-file.js.map +1 -0
  23. package/dist/baseline/check-renderers.d.ts +108 -0
  24. package/dist/baseline/check-renderers.d.ts.map +1 -0
  25. package/dist/baseline/check-renderers.js +379 -0
  26. package/dist/baseline/check-renderers.js.map +1 -0
  27. package/dist/baseline/check.d.ts +127 -0
  28. package/dist/baseline/check.d.ts.map +1 -0
  29. package/dist/baseline/check.js +462 -0
  30. package/dist/baseline/check.js.map +1 -0
  31. package/dist/baseline/content-hash.d.ts +83 -0
  32. package/dist/baseline/content-hash.d.ts.map +1 -0
  33. package/dist/baseline/content-hash.js +131 -0
  34. package/dist/baseline/content-hash.js.map +1 -0
  35. package/dist/baseline/create.d.ts +96 -0
  36. package/dist/baseline/create.d.ts.map +1 -0
  37. package/dist/baseline/create.js +339 -0
  38. package/dist/baseline/create.js.map +1 -0
  39. package/dist/baseline/entry-to-located.d.ts +35 -0
  40. package/dist/baseline/entry-to-located.d.ts.map +1 -0
  41. package/dist/baseline/entry-to-located.js +72 -0
  42. package/dist/baseline/entry-to-located.js.map +1 -0
  43. package/dist/baseline/finding-identity.d.ts +47 -0
  44. package/dist/baseline/finding-identity.d.ts.map +1 -0
  45. package/dist/baseline/finding-identity.js +292 -0
  46. package/dist/baseline/finding-identity.js.map +1 -0
  47. package/dist/baseline/git-aware-match.d.ts +146 -0
  48. package/dist/baseline/git-aware-match.d.ts.map +1 -0
  49. package/dist/baseline/git-aware-match.js +439 -0
  50. package/dist/baseline/git-aware-match.js.map +1 -0
  51. package/dist/baseline/policy.d.ts +171 -0
  52. package/dist/baseline/policy.d.ts.map +1 -0
  53. package/dist/baseline/policy.js +206 -0
  54. package/dist/baseline/policy.js.map +1 -0
  55. package/dist/baseline/producers/health.d.ts +30 -0
  56. package/dist/baseline/producers/health.d.ts.map +1 -0
  57. package/dist/baseline/producers/health.js +42 -0
  58. package/dist/baseline/producers/health.js.map +1 -0
  59. package/dist/baseline/producers/index.d.ts +164 -0
  60. package/dist/baseline/producers/index.d.ts.map +1 -0
  61. package/dist/baseline/producers/index.js +200 -0
  62. package/dist/baseline/producers/index.js.map +1 -0
  63. package/dist/baseline/producers/licenses.d.ts +23 -0
  64. package/dist/baseline/producers/licenses.d.ts.map +1 -0
  65. package/dist/baseline/producers/licenses.js +46 -0
  66. package/dist/baseline/producers/licenses.js.map +1 -0
  67. package/dist/baseline/producers/quality.d.ts +39 -0
  68. package/dist/baseline/producers/quality.d.ts.map +1 -0
  69. package/dist/baseline/producers/quality.js +84 -0
  70. package/dist/baseline/producers/quality.js.map +1 -0
  71. package/dist/baseline/producers/secret-hmac.d.ts +45 -0
  72. package/dist/baseline/producers/secret-hmac.d.ts.map +1 -0
  73. package/dist/baseline/producers/secret-hmac.js +70 -0
  74. package/dist/baseline/producers/secret-hmac.js.map +1 -0
  75. package/dist/baseline/producers/security.d.ts +59 -0
  76. package/dist/baseline/producers/security.d.ts.map +1 -0
  77. package/dist/baseline/producers/security.js +135 -0
  78. package/dist/baseline/producers/security.js.map +1 -0
  79. package/dist/baseline/producers/tests.d.ts +36 -0
  80. package/dist/baseline/producers/tests.d.ts.map +1 -0
  81. package/dist/baseline/producers/tests.js +69 -0
  82. package/dist/baseline/producers/tests.js.map +1 -0
  83. package/dist/baseline/salt.d.ts +45 -0
  84. package/dist/baseline/salt.d.ts.map +1 -0
  85. package/dist/baseline/salt.js +113 -0
  86. package/dist/baseline/salt.js.map +1 -0
  87. package/dist/baseline/show.d.ts +79 -0
  88. package/dist/baseline/show.d.ts.map +1 -0
  89. package/dist/baseline/show.js +233 -0
  90. package/dist/baseline/show.js.map +1 -0
  91. package/dist/baseline/types.d.ts +482 -0
  92. package/dist/baseline/types.d.ts.map +1 -0
  93. package/dist/baseline/types.js +53 -0
  94. package/dist/baseline/types.js.map +1 -0
  95. package/dist/cli.d.ts.map +1 -1
  96. package/dist/cli.js +360 -81
  97. package/dist/cli.js.map +1 -1
  98. package/dist/codebase-scanner.d.ts.map +1 -1
  99. package/dist/codebase-scanner.js +0 -1
  100. package/dist/codebase-scanner.js.map +1 -1
  101. package/dist/constants.d.ts.map +1 -1
  102. package/dist/constants.js +0 -4
  103. package/dist/constants.js.map +1 -1
  104. package/dist/doctor.d.ts.map +1 -1
  105. package/dist/doctor.js +22 -25
  106. package/dist/doctor.js.map +1 -1
  107. package/dist/fail-on.d.ts +84 -0
  108. package/dist/fail-on.d.ts.map +1 -0
  109. package/dist/fail-on.js +128 -0
  110. package/dist/fail-on.js.map +1 -0
  111. package/dist/generator.d.ts.map +1 -1
  112. package/dist/generator.js +2 -141
  113. package/dist/generator.js.map +1 -1
  114. package/dist/languages/csharp.d.ts.map +1 -1
  115. package/dist/languages/csharp.js +0 -9
  116. package/dist/languages/csharp.js.map +1 -1
  117. package/dist/languages/go.d.ts.map +1 -1
  118. package/dist/languages/go.js +0 -15
  119. package/dist/languages/go.js.map +1 -1
  120. package/dist/languages/index.d.ts +1 -1
  121. package/dist/languages/index.d.ts.map +1 -1
  122. package/dist/languages/index.js.map +1 -1
  123. package/dist/languages/java.d.ts.map +1 -1
  124. package/dist/languages/java.js +0 -6
  125. package/dist/languages/java.js.map +1 -1
  126. package/dist/languages/kotlin.d.ts.map +1 -1
  127. package/dist/languages/kotlin.js +0 -11
  128. package/dist/languages/kotlin.js.map +1 -1
  129. package/dist/languages/python.d.ts.map +1 -1
  130. package/dist/languages/python.js +0 -15
  131. package/dist/languages/python.js.map +1 -1
  132. package/dist/languages/ruby.d.ts.map +1 -1
  133. package/dist/languages/ruby.js +0 -6
  134. package/dist/languages/ruby.js.map +1 -1
  135. package/dist/languages/rust.d.ts.map +1 -1
  136. package/dist/languages/rust.js +0 -4
  137. package/dist/languages/rust.js.map +1 -1
  138. package/dist/languages/types.d.ts +2 -28
  139. package/dist/languages/types.d.ts.map +1 -1
  140. package/dist/languages/typescript.d.ts.map +1 -1
  141. package/dist/languages/typescript.js +26 -4
  142. package/dist/languages/typescript.js.map +1 -1
  143. package/dist/lib.d.ts +2 -3
  144. package/dist/lib.d.ts.map +1 -1
  145. package/dist/lib.js +3 -6
  146. package/dist/lib.js.map +1 -1
  147. package/dist/prompts.d.ts.map +1 -1
  148. package/dist/prompts.js +0 -10
  149. package/dist/prompts.js.map +1 -1
  150. package/dist/report-schema.d.ts +42 -0
  151. package/dist/report-schema.d.ts.map +1 -0
  152. package/dist/report-schema.js +54 -0
  153. package/dist/report-schema.js.map +1 -0
  154. package/dist/ship-installers.d.ts +106 -0
  155. package/dist/ship-installers.d.ts.map +1 -0
  156. package/dist/ship-installers.js +415 -0
  157. package/dist/ship-installers.js.map +1 -0
  158. package/dist/types.d.ts +0 -4
  159. package/dist/types.d.ts.map +1 -1
  160. package/dist/update.d.ts.map +1 -1
  161. package/dist/update.js +0 -4
  162. package/dist/update.js.map +1 -1
  163. package/package.json +17 -11
  164. package/templates/.claude/agents/onboarding.md +5 -4
  165. package/templates/.claude/agents-available/codebase-explorer.md +1 -1
  166. package/templates/.claude/agents-available/debugger.md +2 -2
  167. package/templates/.claude/agents-available/health-auditor.md +2 -2
  168. package/templates/.claude/commands/doctor.md +20 -12
  169. package/templates/.claude/skills/build/SKILL.md.template +22 -30
  170. package/templates/.claude/skills/deploy/SKILL.md.template +5 -25
  171. package/templates/.claude/skills/doctor/SKILL.md +24 -47
  172. package/templates/.claude/skills/gcloud/SKILL.md +5 -5
  173. package/templates/.claude/skills/learned/SKILL.md +1 -1
  174. package/templates/.claude/skills/pulumi/SKILL.md +2 -2
  175. package/templates/.claude/skills/quality/SKILL.md.template +4 -23
  176. package/templates/.claude/skills/review/SKILL.md.template +4 -3
  177. package/templates/.claude/skills/scaffold/SKILL.md.template +5 -15
  178. package/templates/.claude/skills/secrets/SKILL.md +20 -21
  179. package/templates/.claude/skills/session/SKILL.md +20 -31
  180. package/templates/.claude/skills/test/SKILL.md.template +1 -7
  181. package/templates/.devcontainer/devcontainer.json +81 -0
  182. package/templates/.devcontainer/install-agent-clis.sh +42 -0
  183. package/templates/.devcontainer/post-create.sh +67 -0
  184. package/templates/.githooks/pre-commit +55 -0
  185. package/templates/.githooks/pre-push +63 -0
  186. package/templates/.github/workflows/dxkit-baseline-refresh.yml +78 -0
  187. package/templates/.github/workflows/dxkit-guardrails.yml +98 -0
  188. package/templates/CLAUDE.md.template +62 -196
  189. package/dist/project-yaml.d.ts +0 -13
  190. package/dist/project-yaml.d.ts.map +0 -1
  191. package/dist/project-yaml.js +0 -188
  192. package/dist/project-yaml.js.map +0 -1
  193. package/templates/.ai/README.md +0 -117
  194. package/templates/.ai/prompts/execution-prompt.md +0 -9
  195. package/templates/.ai/prompts/planning-prompt.md +0 -18
  196. package/templates/.ai/prompts/session-end-template.md +0 -182
  197. package/templates/.ai/prompts/session-end.md +0 -132
  198. package/templates/.ai/prompts/session-start.md +0 -109
  199. package/templates/.ai/prompts/step-by-step.md +0 -113
  200. package/templates/.ai/sessions/.gitkeep +0 -0
  201. package/templates/.claude/commands/setup-pr-review.md +0 -72
  202. package/templates/.devcontainer/Dockerfile.dev.template +0 -89
  203. package/templates/.devcontainer/devcontainer.json.template +0 -184
  204. package/templates/.devcontainer/docker-compose.yml.template +0 -105
  205. package/templates/.devcontainer/init-scripts/01-init.sql.template +0 -12
  206. package/templates/.devcontainer/post-create.sh.template +0 -298
  207. package/templates/.github/workflows/ci.yml.template +0 -399
  208. package/templates/.github/workflows/quality.yml.template +0 -376
  209. package/templates/.pre-commit-config.yaml.template +0 -106
  210. package/templates/.project/config/edit_config.py +0 -275
  211. package/templates/.project/config/project_config.py +0 -894
  212. package/templates/.project/scripts/codegen/generate-all.sh +0 -20
  213. package/templates/.project/scripts/codegen/validate-all.sh +0 -17
  214. package/templates/.project/scripts/docs/generate-all.sh +0 -30
  215. package/templates/.project/scripts/docs/serve.sh +0 -20
  216. package/templates/.project/scripts/quality/fix-all.sh +0 -138
  217. package/templates/.project/scripts/quality/lint-go.sh +0 -34
  218. package/templates/.project/scripts/quality/lint-python.sh +0 -54
  219. package/templates/.project/scripts/quality/run-all.sh +0 -497
  220. package/templates/.project/scripts/session/commit.sh +0 -70
  221. package/templates/.project/scripts/session/create-pr.sh +0 -165
  222. package/templates/.project/scripts/session/end.sh +0 -207
  223. package/templates/.project/scripts/session/start.sh +0 -233
  224. package/templates/.project/scripts/setup/doctor.sh +0 -404
  225. package/templates/.project/scripts/setup/interactive-setup.sh +0 -585
  226. package/templates/.project/scripts/sync/sync-template.sh +0 -328
  227. package/templates/.project/scripts/test/run-all.sh +0 -179
  228. package/templates/.project/scripts/test/run-quick.sh +0 -25
  229. package/templates/Makefile +0 -514
  230. package/templates/config/versions.yaml +0 -57
  231. package/templates/configs/go/.golangci.yml.template +0 -172
  232. package/templates/configs/go/go.mod.template +0 -15
  233. package/templates/configs/java/README.md +0 -6
  234. package/templates/configs/kotlin/README.md +0 -6
  235. package/templates/configs/node/package.json.template +0 -67
  236. package/templates/configs/node/tsconfig.json.template +0 -53
  237. package/templates/configs/python/pyproject.toml.template +0 -92
  238. package/templates/configs/python/pytest.ini.template +0 -64
  239. package/templates/configs/python/ruff.toml.template +0 -79
  240. package/templates/configs/ruby/README.md +0 -6
  241. package/templates/configs/rust/Cargo.toml.template +0 -51
  242. package/templates/configs/shared/.editorconfig +0 -67
  243. package/templates/scripts/validate-templates.sh +0 -449
@@ -1,89 +0,0 @@
1
- # Generated from template - do not edit directly
2
- # Regenerate with: ./scripts/bootstrap/bootstrap.sh
3
-
4
- FROM mcr.microsoft.com/vscode/devcontainers/base:ubuntu-22.04
5
-
6
- # Install system dependencies
7
- RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
8
- && apt-get -y install --no-install-recommends \
9
- build-essential \
10
- curl \
11
- git \
12
- wget \
13
- unzip \
14
- ca-certificates \
15
- jq \
16
- {{#IF_POSTGRES}}
17
- postgresql-client \
18
- {{/IF_POSTGRES}}
19
- {{#IF_REDIS}}
20
- redis-tools \
21
- {{/IF_REDIS}}
22
- && apt-get autoremove -y && apt-get clean -y
23
-
24
- {{#IF_GO}}
25
- # ============================================================================
26
- # Go {{GO_VERSION}}
27
- # ============================================================================
28
- RUN wget -q https://golang.org/dl/go{{GO_VERSION}}.linux-amd64.tar.gz \
29
- && tar -C /usr/local -xzf go{{GO_VERSION}}.linux-amd64.tar.gz \
30
- && rm go{{GO_VERSION}}.linux-amd64.tar.gz
31
-
32
- ENV PATH="/usr/local/go/bin:${PATH}"
33
- ENV GOPATH="/go"
34
- ENV GOBIN="/go/bin"
35
- ENV PATH="${PATH}:${GOBIN}"
36
-
37
- # Create Go workspace
38
- RUN mkdir -p /go/src /go/bin /go/pkg && chmod -R 777 /go
39
-
40
- {{/IF_GO}}
41
- {{#IF_PYTHON}}
42
- # ============================================================================
43
- # Python {{PYTHON_VERSION}}
44
- # ============================================================================
45
- # Note: We use ensurepip instead of apt's python3-pip because:
46
- # 1. It installs pip for the specific Python version, not the system Python
47
- # 2. Python 3.12+ removed distutils which breaks the system pip package
48
- RUN apt-get update && apt-get install -y software-properties-common \
49
- && add-apt-repository ppa:deadsnakes/ppa -y \
50
- && apt-get update \
51
- && apt-get install -y \
52
- python{{PYTHON_VERSION}} \
53
- python{{PYTHON_VERSION}}-dev \
54
- python{{PYTHON_VERSION}}-venv \
55
- && update-alternatives --install /usr/bin/python3 python3 /usr/bin/python{{PYTHON_VERSION}} 1 \
56
- && update-alternatives --install /usr/bin/python python /usr/bin/python{{PYTHON_VERSION}} 1 \
57
- && python{{PYTHON_VERSION}} -m ensurepip --upgrade \
58
- && python{{PYTHON_VERSION}} -m pip install --upgrade pip
59
-
60
- {{/IF_PYTHON}}
61
- {{#IF_NODE}}
62
- # ============================================================================
63
- # Node.js {{NODE_VERSION}}
64
- # ============================================================================
65
- RUN curl -fsSL https://deb.nodesource.com/setup_{{NODE_VERSION}}.x | bash - \
66
- && apt-get install -y nodejs
67
-
68
- {{/IF_NODE}}
69
- {{#IF_RUST}}
70
- # ============================================================================
71
- # Rust {{RUST_VERSION}}
72
- # ============================================================================
73
- RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain {{RUST_VERSION}}
74
- ENV PATH="/root/.cargo/bin:${PATH}"
75
-
76
- {{/IF_RUST}}
77
- # ============================================================================
78
- # Utility Tools
79
- # ============================================================================
80
-
81
- # Install yq for YAML processing
82
- RUN wget -qO /usr/local/bin/yq https://github.com/mikefarah/yq/releases/latest/download/yq_linux_amd64 \
83
- && chmod +x /usr/local/bin/yq
84
-
85
- # Set the default user
86
- USER vscode
87
-
88
- # Set working directory
89
- WORKDIR /workspaces/{{PROJECT_NAME}}
@@ -1,184 +0,0 @@
1
- {
2
- "name": "{{PROJECT_NAME}} Development Environment",
3
- "dockerComposeFile": "docker-compose.yml",
4
- "service": "dev-environment",
5
- "workspaceFolder": "/workspaces/{{PROJECT_NAME}}",
6
- "shutdownAction": "stopCompose",
7
-
8
- "features": {
9
- "ghcr.io/devcontainers/features/sshd:1": {
10
- "version": "latest"
11
- },
12
- "ghcr.io/devcontainers/features/git:1": {
13
- "version": "latest",
14
- "ppa": false
15
- }{{#IF_DOCKER}},
16
- "ghcr.io/devcontainers/features/docker-in-docker:2": {
17
- "version": "latest",
18
- "moby": true,
19
- "dockerDashComposeVersion": "v2"
20
- }{{/IF_DOCKER}}
21
- },
22
-
23
- "postCreateCommand": "bash .devcontainer/post-create.sh",
24
-
25
- "customizations": {
26
- "vscode": {
27
- "extensions": [
28
- "ms-azuretools.vscode-docker",
29
- "ms-vscode.makefile-tools",
30
- "EditorConfig.EditorConfig",
31
- "eamodio.gitlens",
32
- "usernamehw.errorlens",
33
- "gruntfuggly.todo-tree",
34
- {{#IF_CLAUDE_CODE}}
35
- "anthropic.claude-code",
36
- {{/IF_CLAUDE_CODE}}
37
- {{#IF_PYTHON}}
38
- "ms-python.python",
39
- "ms-python.vscode-pylance",
40
- "charliermarsh.ruff",
41
- "ms-python.black-formatter",
42
- {{/IF_PYTHON}}
43
- {{#IF_GO}}
44
- "golang.go",
45
- {{/IF_GO}}
46
- {{#IF_NODE}}
47
- "dbaeumer.vscode-eslint",
48
- "esbenp.prettier-vscode",
49
- {{/IF_NODE}}
50
- {{#IF_NEXTJS}}
51
- "bradlc.vscode-tailwindcss",
52
- "csstools.postcss",
53
- {{/IF_NEXTJS}}
54
- {{#IF_RUST}}
55
- "rust-lang.rust-analyzer",
56
- {{/IF_RUST}}
57
- {{#IF_POSTGRES}}
58
- "mtxr.sqltools",
59
- "mtxr.sqltools-driver-pg",
60
- {{/IF_POSTGRES}}
61
- {{#IF_REDIS}}
62
- "cweijan.vscode-redis-client",
63
- {{/IF_REDIS}}
64
- "redhat.vscode-yaml",
65
- "yzhang.markdown-all-in-one"
66
- ],
67
- "settings": {
68
- "terminal.integrated.defaultProfile.linux": "bash",
69
- "terminal.integrated.scrollback": 10000,
70
- "editor.formatOnSave": true,
71
- "editor.rulers": [88, 120],
72
- "editor.tabSize": 4,
73
- "editor.insertSpaces": true,
74
- "files.trimTrailingWhitespace": true,
75
- "files.insertFinalNewline": true,
76
- {{#IF_PYTHON}}
77
- "python.defaultInterpreterPath": "/usr/bin/python{{PYTHON_VERSION}}",
78
- "python.formatting.provider": "none",
79
- "[python]": {
80
- "editor.defaultFormatter": "charliermarsh.ruff",
81
- "editor.formatOnSave": true,
82
- "editor.codeActionsOnSave": {
83
- "source.fixAll.ruff": "explicit",
84
- "source.organizeImports.ruff": "explicit"
85
- }
86
- },
87
- {{/IF_PYTHON}}
88
- {{#IF_GO}}
89
- "go.gopath": "/go",
90
- "go.goroot": "/usr/local/go",
91
- "go.formatTool": "goimports",
92
- "go.lintTool": "golangci-lint",
93
- "go.lintOnSave": "package",
94
- "[go]": {
95
- "editor.formatOnSave": true,
96
- "editor.codeActionsOnSave": {
97
- "source.organizeImports": "explicit"
98
- }
99
- },
100
- {{/IF_GO}}
101
- {{#IF_NODE}}
102
- "[javascript]": {
103
- "editor.defaultFormatter": "esbenp.prettier-vscode"
104
- },
105
- "[typescript]": {
106
- "editor.defaultFormatter": "esbenp.prettier-vscode"
107
- },
108
- "[json]": {
109
- "editor.defaultFormatter": "esbenp.prettier-vscode"
110
- },
111
- {{/IF_NODE}}
112
- {{#IF_NEXTJS}}
113
- "[typescriptreact]": {
114
- "editor.defaultFormatter": "esbenp.prettier-vscode"
115
- },
116
- "[css]": {
117
- "editor.defaultFormatter": "esbenp.prettier-vscode"
118
- },
119
- "tailwindCSS.includeLanguages": {
120
- "typescript": "javascript",
121
- "typescriptreact": "javascript"
122
- },
123
- {{/IF_NEXTJS}}
124
- {{#IF_RUST}}
125
- "[rust]": {
126
- "editor.formatOnSave": true,
127
- "editor.defaultFormatter": "rust-lang.rust-analyzer"
128
- },
129
- "rust-analyzer.checkOnSave.command": "clippy",
130
- {{/IF_RUST}}
131
- {{#IF_POSTGRES}}
132
- "sqltools.connections": [
133
- {
134
- "name": "{{PROJECT_NAME}} Dev DB",
135
- "driver": "PostgreSQL",
136
- "server": "db",
137
- "port": 5432,
138
- "database": "{{DB_NAME}}",
139
- "username": "{{DB_USER}}",
140
- "password": "{{DB_PASSWORD}}"
141
- }
142
- ],
143
- {{/IF_POSTGRES}}
144
- "files.associations": {
145
- "*.env*": "dotenv",
146
- "Makefile*": "makefile"
147
- }
148
- }
149
- }
150
- },
151
-
152
- "forwardPorts": [
153
- 8080,
154
- 3000{{#IF_POSTGRES}},
155
- 5432{{/IF_POSTGRES}}{{#IF_REDIS}},
156
- 6379{{/IF_REDIS}}
157
- ],
158
-
159
- "portsAttributes": {
160
- "8080": {
161
- "label": "API Server",
162
- "onAutoForward": "notify"
163
- },
164
- "3000": {
165
- "label": "Frontend Dev Server",
166
- "onAutoForward": "notify"
167
- }{{#IF_POSTGRES}},
168
- "5432": {
169
- "label": "PostgreSQL",
170
- "onAutoForward": "silent"
171
- }{{/IF_POSTGRES}}{{#IF_REDIS}},
172
- "6379": {
173
- "label": "Redis",
174
- "onAutoForward": "silent"
175
- }{{/IF_REDIS}}
176
- },
177
-
178
- "containerEnv": {
179
- "PROJECT_NAME": "{{PROJECT_NAME}}",
180
- "ENVIRONMENT": "development"
181
- },
182
-
183
- "remoteUser": "vscode"
184
- }
@@ -1,105 +0,0 @@
1
- # Generated from template - do not edit directly
2
- # Regenerate with: ./scripts/bootstrap/bootstrap.sh
3
-
4
- version: '3.8'
5
-
6
- services:
7
- # ==========================================================================
8
- # Development Container
9
- # ==========================================================================
10
- dev-environment:
11
- build:
12
- context: .
13
- dockerfile: Dockerfile.dev
14
- volumes:
15
- - ../..:/workspaces:cached
16
- working_dir: /workspaces/{{PROJECT_NAME}}
17
- command: sleep infinity
18
- {{#IF_HAS_SERVICES}}
19
- depends_on:
20
- {{#IF_POSTGRES}}
21
- db:
22
- condition: service_healthy
23
- {{/IF_POSTGRES}}
24
- {{#IF_REDIS}}
25
- redis:
26
- condition: service_healthy
27
- {{/IF_REDIS}}
28
- {{/IF_HAS_SERVICES}}
29
- ports:
30
- - "8080:8080"
31
- - "3000:3000"
32
- environment:
33
- - TERM=xterm-256color
34
- {{#IF_POSTGRES}}
35
- - DATABASE_URL=postgresql://{{DB_USER}}:{{DB_PASSWORD}}@db:5432/{{DB_NAME}}
36
- - DB_HOST=db
37
- - DB_PORT=5432
38
- - DB_NAME={{DB_NAME}}
39
- - DB_USER={{DB_USER}}
40
- - DB_PASSWORD={{DB_PASSWORD}}
41
- {{/IF_POSTGRES}}
42
- {{#IF_REDIS}}
43
- - REDIS_URL=redis://redis:6379
44
- - REDIS_HOST=redis
45
- - REDIS_PORT=6379
46
- {{/IF_REDIS}}
47
-
48
- {{#IF_POSTGRES}}
49
- # ==========================================================================
50
- # PostgreSQL Database
51
- # ==========================================================================
52
- db:
53
- image: postgres:{{POSTGRES_VERSION}}-alpine
54
- restart: unless-stopped
55
- volumes:
56
- - postgres-data:/var/lib/postgresql/data
57
- - ./init-scripts:/docker-entrypoint-initdb.d:ro
58
- environment:
59
- POSTGRES_USER: {{DB_USER}}
60
- POSTGRES_PASSWORD: {{DB_PASSWORD}}
61
- POSTGRES_DB: {{DB_NAME}}
62
- ports:
63
- - "5432:5432"
64
- healthcheck:
65
- test: ["CMD-SHELL", "pg_isready -U {{DB_USER}} -d {{DB_NAME}}"]
66
- interval: 10s
67
- timeout: 5s
68
- retries: 5
69
- start_period: 10s
70
-
71
- {{/IF_POSTGRES}}
72
- {{#IF_REDIS}}
73
- # ==========================================================================
74
- # Redis Cache
75
- # ==========================================================================
76
- redis:
77
- image: redis:{{REDIS_VERSION}}-alpine
78
- restart: unless-stopped
79
- volumes:
80
- - redis-data:/data
81
- ports:
82
- - "6379:6379"
83
- command: redis-server --appendonly yes
84
- healthcheck:
85
- test: ["CMD", "redis-cli", "ping"]
86
- interval: 10s
87
- timeout: 5s
88
- retries: 3
89
- start_period: 5s
90
-
91
- {{/IF_REDIS}}
92
- {{#IF_HAS_SERVICES}}
93
- # ============================================================================
94
- # Volumes
95
- # ============================================================================
96
- volumes:
97
- {{#IF_POSTGRES}}
98
- postgres-data:
99
- name: {{PROJECT_NAME_SNAKE}}_postgres_data
100
- {{/IF_POSTGRES}}
101
- {{#IF_REDIS}}
102
- redis-data:
103
- name: {{PROJECT_NAME_SNAKE}}_redis_data
104
- {{/IF_REDIS}}
105
- {{/IF_HAS_SERVICES}}
@@ -1,12 +0,0 @@
1
- -- PostgreSQL initialization script
2
- -- This script runs when the database container is first created
3
-
4
- -- Create extensions
5
- CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
6
- CREATE EXTENSION IF NOT EXISTS "pgcrypto";
7
-
8
- -- Log completion
9
- DO $$
10
- BEGIN
11
- RAISE NOTICE 'Database initialization complete for {{DB_NAME}}';
12
- END $$;
@@ -1,298 +0,0 @@
1
- #!/bin/bash
2
- # Generated from template - do not edit directly
3
- # Regenerate with: ./scripts/bootstrap/bootstrap.sh
4
-
5
- set -e
6
-
7
- # Colors for output
8
- CYAN='\033[36m'
9
- GREEN='\033[32m'
10
- YELLOW='\033[33m'
11
- RED='\033[31m'
12
- RESET='\033[0m'
13
-
14
- echo ""
15
- echo -e "${CYAN}╔════════════════════════════════════════════════════════════╗${RESET}"
16
- echo -e "${CYAN}║ ║${RESET}"
17
- echo -e "${CYAN}║ 🚀 Setting up {{PROJECT_NAME}} development environment${RESET}"
18
- echo -e "${CYAN}║ ║${RESET}"
19
- echo -e "${CYAN}╚════════════════════════════════════════════════════════════╝${RESET}"
20
- echo ""
21
-
22
- cd /workspaces/{{PROJECT_NAME}} || exit 1
23
-
24
- # ============================================================================
25
- # Wait for Services
26
- # ============================================================================
27
-
28
- {{#IF_POSTGRES}}
29
- echo -e "${CYAN}⏳ Waiting for PostgreSQL...${RESET}"
30
- for i in {1..30}; do
31
- if pg_isready -h db -p 5432 -U {{DB_USER}} > /dev/null 2>&1; then
32
- echo -e "${GREEN}✅ PostgreSQL is ready${RESET}"
33
- break
34
- fi
35
- if [ $i -eq 30 ]; then
36
- echo -e "${YELLOW}⚠️ PostgreSQL not ready after 30 seconds${RESET}"
37
- fi
38
- sleep 1
39
- done
40
-
41
- {{/IF_POSTGRES}}
42
- {{#IF_REDIS}}
43
- echo -e "${CYAN}⏳ Waiting for Redis...${RESET}"
44
- for i in {1..30}; do
45
- if redis-cli -h redis -p 6379 ping > /dev/null 2>&1; then
46
- echo -e "${GREEN}✅ Redis is ready${RESET}"
47
- break
48
- fi
49
- if [ $i -eq 30 ]; then
50
- echo -e "${YELLOW}⚠️ Redis not ready after 30 seconds${RESET}"
51
- fi
52
- sleep 1
53
- done
54
-
55
- {{/IF_REDIS}}
56
- # ============================================================================
57
- # Language-Specific Setup
58
- # ============================================================================
59
-
60
- {{#IF_GO}}
61
- echo -e "${CYAN}🔧 Installing Go development tools...${RESET}"
62
- go install github.com/air-verse/air@latest 2>/dev/null || true
63
- go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest 2>/dev/null || true
64
- go install golang.org/x/tools/cmd/goimports@latest 2>/dev/null || true
65
- go install github.com/go-delve/delve/cmd/dlv@latest 2>/dev/null || true
66
- echo -e "${GREEN}✅ Go tools installed${RESET}"
67
-
68
- {{/IF_GO}}
69
- {{#IF_PYTHON}}
70
- echo -e "${CYAN}🐍 Setting up Python environment...${RESET}"
71
- pip install --upgrade pip --quiet
72
-
73
- # Install common dev tools (versions synced with .template/config/versions.yaml)
74
- pip install --quiet \
75
- "ruff>=0.8.0" \
76
- "mypy>=1.8.0" \
77
- "pytest>=8.0.0" \
78
- pytest-cov \
79
- pytest-asyncio \
80
- httpx \
81
- pyyaml
82
-
83
- # Install project dependencies if pyproject.toml exists
84
- if [ -f "pyproject.toml" ]; then
85
- echo -e "${CYAN} Installing project dependencies...${RESET}"
86
- pip install -e ".[dev]" --quiet 2>/dev/null || pip install -e . --quiet 2>/dev/null || true
87
- fi
88
-
89
- # Install requirements.txt if it exists
90
- if [ -f "requirements.txt" ]; then
91
- echo -e "${CYAN} Installing requirements.txt...${RESET}"
92
- pip install -r requirements.txt --quiet
93
- fi
94
-
95
- if [ -f "requirements-dev.txt" ]; then
96
- echo -e "${CYAN} Installing requirements-dev.txt...${RESET}"
97
- pip install -r requirements-dev.txt --quiet
98
- fi
99
-
100
- echo -e "${GREEN}✅ Python environment ready${RESET}"
101
-
102
- {{/IF_PYTHON}}
103
- {{#IF_NODE}}
104
- echo -e "${CYAN}📦 Setting up Node.js environment...${RESET}"
105
-
106
- # Install global tools
107
- npm install -g npm@latest --silent 2>/dev/null || true
108
-
109
- # Install project dependencies if package.json exists
110
- if [ -f "package.json" ]; then
111
- echo -e "${CYAN} Installing npm dependencies...${RESET}"
112
- npm install --silent 2>/dev/null || true
113
- fi
114
-
115
- echo -e "${GREEN}✅ Node.js environment ready${RESET}"
116
-
117
- {{/IF_NODE}}
118
- {{#IF_NEXTJS}}
119
- echo -e "${CYAN}⚡ Setting up Next.js frontend...${RESET}"
120
-
121
- # Check if frontend directory exists
122
- if [ -d "frontend" ] && [ -f "frontend/package.json" ]; then
123
- echo -e "${CYAN} Installing frontend dependencies...${RESET}"
124
- (cd frontend && npm install --silent 2>/dev/null) || true
125
- echo -e "${GREEN}✅ Next.js frontend ready${RESET}"
126
- echo -e " ${CYAN}Run: cd frontend && npm run dev${RESET}"
127
- else
128
- # Scaffold Next.js app if not created during bootstrap (npx wasn't available)
129
- echo -e "${CYAN} Scaffolding Next.js app...${RESET}"
130
- if npx --yes create-next-app@latest frontend \
131
- --yes \
132
- --typescript \
133
- --tailwind \
134
- --eslint \
135
- --app \
136
- --src-dir \
137
- --import-alias "@/*" \
138
- --use-npm 2>&1; then
139
- echo -e "${GREEN}✅ Next.js frontend created${RESET}"
140
- echo -e " ${CYAN}Run: cd frontend && npm run dev${RESET}"
141
- else
142
- echo -e "${RED}❌ Failed to create Next.js app${RESET}"
143
- echo -e " ${YELLOW}Try manually: npx create-next-app@latest frontend${RESET}"
144
- fi
145
- fi
146
-
147
- {{/IF_NEXTJS}}
148
- {{#IF_RUST}}
149
- echo -e "${CYAN}🦀 Setting up Rust environment...${RESET}"
150
-
151
- # Update rust and install common tools
152
- rustup update stable --quiet 2>/dev/null || true
153
- rustup component add rustfmt clippy --quiet 2>/dev/null || true
154
- cargo install cargo-watch --quiet 2>/dev/null || true
155
-
156
- echo -e "${GREEN}✅ Rust environment ready${RESET}"
157
-
158
- {{/IF_RUST}}
159
- # ============================================================================
160
- # Additional Tools
161
- # ============================================================================
162
-
163
- {{#IF_GH_CLI}}
164
- echo -e "${CYAN}🐙 Installing GitHub CLI...${RESET}"
165
- if ! command -v gh &> /dev/null; then
166
- curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg 2>/dev/null \
167
- && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
168
- && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
169
- && sudo apt update -qq \
170
- && sudo apt install gh -y -qq
171
- echo -e "${GREEN}✅ GitHub CLI installed${RESET}"
172
- else
173
- echo -e "${GREEN}✅ GitHub CLI already installed${RESET}"
174
- fi
175
-
176
- {{/IF_GH_CLI}}
177
- {{#IF_PULUMI}}
178
- echo -e "${CYAN}☁️ Installing Pulumi...${RESET}"
179
- if ! command -v pulumi &> /dev/null; then
180
- curl -fsSL https://get.pulumi.com | sh -s -- --no-edit-path 2>/dev/null
181
- echo 'export PATH="$PATH:$HOME/.pulumi/bin"' >> ~/.bashrc
182
- echo -e "${GREEN}✅ Pulumi installed${RESET}"
183
- else
184
- echo -e "${GREEN}✅ Pulumi already installed${RESET}"
185
- fi
186
-
187
- {{/IF_PULUMI}}
188
- {{#IF_GCLOUD}}
189
- echo -e "${CYAN}☁️ Installing Google Cloud SDK...${RESET}"
190
- if ! command -v gcloud &> /dev/null; then
191
- curl -fsSL https://sdk.cloud.google.com | bash -s -- --disable-prompts --install-dir=$HOME 2>/dev/null
192
- echo 'source ~/google-cloud-sdk/path.bash.inc' >> ~/.bashrc
193
- echo 'source ~/google-cloud-sdk/completion.bash.inc' >> ~/.bashrc
194
- export PATH="$PATH:$HOME/google-cloud-sdk/bin"
195
- echo -e "${GREEN}✅ Google Cloud SDK installed${RESET}"
196
- else
197
- echo -e "${GREEN}✅ Google Cloud SDK already installed${RESET}"
198
- fi
199
-
200
- {{/IF_GCLOUD}}
201
- {{#IF_CLAUDE_CODE}}
202
- echo -e "${CYAN}🤖 Installing Claude Code CLI...${RESET}"
203
- if ! command -v claude &> /dev/null; then
204
- curl -fsSL https://claude.ai/install.sh | bash 2>/dev/null || true
205
- echo -e "${GREEN}✅ Claude Code CLI installed${RESET}"
206
- else
207
- echo -e "${GREEN}✅ Claude Code CLI already installed${RESET}"
208
- fi
209
-
210
- {{/IF_CLAUDE_CODE}}
211
- {{#IF_INFISICAL}}
212
- echo -e "${CYAN}🔐 Installing Infisical CLI...${RESET}"
213
- if ! command -v infisical &> /dev/null; then
214
- curl -1sLf 'https://artifacts-cli.infisical.com/setup.deb.sh' | sudo -E bash 2>/dev/null
215
- sudo apt-get update -qq && sudo apt-get install -y -qq infisical
216
- echo -e "${GREEN}✅ Infisical CLI installed${RESET}"
217
- else
218
- echo -e "${GREEN}✅ Infisical CLI already installed${RESET}"
219
- fi
220
-
221
- {{/IF_INFISICAL}}
222
- {{#IF_PRECOMMIT}}
223
- echo -e "${CYAN}🪝 Setting up pre-commit hooks...${RESET}"
224
- if command -v pre-commit &> /dev/null; then
225
- if [ -f ".pre-commit-config.yaml" ]; then
226
- pre-commit install --install-hooks 2>/dev/null || true
227
- echo -e "${GREEN}✅ Pre-commit hooks installed${RESET}"
228
- fi
229
- else
230
- pip install pre-commit --quiet
231
- if [ -f ".pre-commit-config.yaml" ]; then
232
- pre-commit install --install-hooks 2>/dev/null || true
233
- echo -e "${GREEN}✅ Pre-commit hooks installed${RESET}"
234
- fi
235
- fi
236
-
237
- {{/IF_PRECOMMIT}}
238
- # ============================================================================
239
- # Git Configuration
240
- # ============================================================================
241
-
242
- echo -e "${CYAN}🔧 Configuring Git...${RESET}"
243
-
244
- git config --global init.defaultBranch main
245
- git config --global pull.rebase false
246
- git config --global core.autocrlf input
247
- git config --global --add safe.directory /workspaces/{{PROJECT_NAME}}
248
-
249
- echo -e "${GREEN}✅ Git configured${RESET}"
250
-
251
- # ============================================================================
252
- # Shell Aliases
253
- # ============================================================================
254
-
255
- if ! grep -q "# {{PROJECT_NAME}} aliases" ~/.bashrc 2>/dev/null; then
256
- cat >> ~/.bashrc << 'ALIASES'
257
-
258
- # {{PROJECT_NAME}} aliases
259
- alias ll='ls -alF'
260
- alias la='ls -A'
261
- alias ..='cd ..'
262
- alias ...='cd ../..'
263
- alias ws='cd /workspaces/{{PROJECT_NAME}}'
264
- alias mh='make help'
265
- alias mt='make test'
266
- alias mq='make quality'
267
- alias mc='make check'
268
- ALIASES
269
- fi
270
-
271
- # ============================================================================
272
- # Done!
273
- # ============================================================================
274
-
275
- echo ""
276
- echo -e "${GREEN}╔════════════════════════════════════════════════════════════╗${RESET}"
277
- echo -e "${GREEN}║ ✨ Development environment is ready! ║${RESET}"
278
- echo -e "${GREEN}╚════════════════════════════════════════════════════════════╝${RESET}"
279
- echo ""
280
- echo -e "${CYAN}🎯 Next steps:${RESET}"
281
- echo ""
282
- echo " • Run ${CYAN}make doctor${RESET} to verify your setup"
283
- echo " • Run ${CYAN}make help${RESET} to see available commands"
284
- {{#IF_AI_SESSIONS}}
285
- echo " • Run ${CYAN}make session-start${RESET} to begin an AI-assisted dev session"
286
- {{/IF_AI_SESSIONS}}
287
- echo " • Run ${CYAN}make test${RESET} to run tests"
288
- echo " • Run ${CYAN}make quality${RESET} to check code quality"
289
- echo ""
290
- {{#IF_POSTGRES}}
291
- echo -e "${CYAN}📊 Database:${RESET} postgresql://{{DB_USER}}:{{DB_PASSWORD}}@db:5432/{{DB_NAME}}"
292
- {{/IF_POSTGRES}}
293
- {{#IF_REDIS}}
294
- echo -e "${CYAN}📦 Redis:${RESET} redis://redis:6379"
295
- {{/IF_REDIS}}
296
- echo ""
297
- echo -e "${GREEN}Happy coding! 🚀${RESET}"
298
- echo ""