@vyuhlabs/dxkit 2.4.8 → 2.5.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 (319) hide show
  1. package/CHANGELOG.md +312 -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/tools/graphify.d.ts.map +1 -1
  18. package/dist/analyzers/tools/graphify.js +9 -5
  19. package/dist/analyzers/tools/graphify.js.map +1 -1
  20. package/dist/analyzers/tools/tool-registry.d.ts +19 -1
  21. package/dist/analyzers/tools/tool-registry.d.ts.map +1 -1
  22. package/dist/analyzers/tools/tool-registry.js +25 -0
  23. package/dist/analyzers/tools/tool-registry.js.map +1 -1
  24. package/dist/analyzers/types.d.ts +6 -4
  25. package/dist/analyzers/types.d.ts.map +1 -1
  26. package/dist/baseline/baseline-file.d.ts +104 -0
  27. package/dist/baseline/baseline-file.d.ts.map +1 -0
  28. package/dist/baseline/baseline-file.js +110 -0
  29. package/dist/baseline/baseline-file.js.map +1 -0
  30. package/dist/baseline/check-renderers.d.ts +108 -0
  31. package/dist/baseline/check-renderers.d.ts.map +1 -0
  32. package/dist/baseline/check-renderers.js +379 -0
  33. package/dist/baseline/check-renderers.js.map +1 -0
  34. package/dist/baseline/check.d.ts +127 -0
  35. package/dist/baseline/check.d.ts.map +1 -0
  36. package/dist/baseline/check.js +462 -0
  37. package/dist/baseline/check.js.map +1 -0
  38. package/dist/baseline/content-hash.d.ts +83 -0
  39. package/dist/baseline/content-hash.d.ts.map +1 -0
  40. package/dist/baseline/content-hash.js +131 -0
  41. package/dist/baseline/content-hash.js.map +1 -0
  42. package/dist/baseline/create.d.ts +96 -0
  43. package/dist/baseline/create.d.ts.map +1 -0
  44. package/dist/baseline/create.js +339 -0
  45. package/dist/baseline/create.js.map +1 -0
  46. package/dist/baseline/entry-to-located.d.ts +35 -0
  47. package/dist/baseline/entry-to-located.d.ts.map +1 -0
  48. package/dist/baseline/entry-to-located.js +72 -0
  49. package/dist/baseline/entry-to-located.js.map +1 -0
  50. package/dist/baseline/finding-identity.d.ts +47 -0
  51. package/dist/baseline/finding-identity.d.ts.map +1 -0
  52. package/dist/baseline/finding-identity.js +292 -0
  53. package/dist/baseline/finding-identity.js.map +1 -0
  54. package/dist/baseline/git-aware-match.d.ts +146 -0
  55. package/dist/baseline/git-aware-match.d.ts.map +1 -0
  56. package/dist/baseline/git-aware-match.js +439 -0
  57. package/dist/baseline/git-aware-match.js.map +1 -0
  58. package/dist/baseline/policy.d.ts +171 -0
  59. package/dist/baseline/policy.d.ts.map +1 -0
  60. package/dist/baseline/policy.js +206 -0
  61. package/dist/baseline/policy.js.map +1 -0
  62. package/dist/baseline/producers/health.d.ts +30 -0
  63. package/dist/baseline/producers/health.d.ts.map +1 -0
  64. package/dist/baseline/producers/health.js +42 -0
  65. package/dist/baseline/producers/health.js.map +1 -0
  66. package/dist/baseline/producers/index.d.ts +164 -0
  67. package/dist/baseline/producers/index.d.ts.map +1 -0
  68. package/dist/baseline/producers/index.js +200 -0
  69. package/dist/baseline/producers/index.js.map +1 -0
  70. package/dist/baseline/producers/licenses.d.ts +23 -0
  71. package/dist/baseline/producers/licenses.d.ts.map +1 -0
  72. package/dist/baseline/producers/licenses.js +46 -0
  73. package/dist/baseline/producers/licenses.js.map +1 -0
  74. package/dist/baseline/producers/quality.d.ts +39 -0
  75. package/dist/baseline/producers/quality.d.ts.map +1 -0
  76. package/dist/baseline/producers/quality.js +84 -0
  77. package/dist/baseline/producers/quality.js.map +1 -0
  78. package/dist/baseline/producers/secret-hmac.d.ts +45 -0
  79. package/dist/baseline/producers/secret-hmac.d.ts.map +1 -0
  80. package/dist/baseline/producers/secret-hmac.js +70 -0
  81. package/dist/baseline/producers/secret-hmac.js.map +1 -0
  82. package/dist/baseline/producers/security.d.ts +59 -0
  83. package/dist/baseline/producers/security.d.ts.map +1 -0
  84. package/dist/baseline/producers/security.js +135 -0
  85. package/dist/baseline/producers/security.js.map +1 -0
  86. package/dist/baseline/producers/tests.d.ts +36 -0
  87. package/dist/baseline/producers/tests.d.ts.map +1 -0
  88. package/dist/baseline/producers/tests.js +69 -0
  89. package/dist/baseline/producers/tests.js.map +1 -0
  90. package/dist/baseline/salt.d.ts +45 -0
  91. package/dist/baseline/salt.d.ts.map +1 -0
  92. package/dist/baseline/salt.js +113 -0
  93. package/dist/baseline/salt.js.map +1 -0
  94. package/dist/baseline/show.d.ts +79 -0
  95. package/dist/baseline/show.d.ts.map +1 -0
  96. package/dist/baseline/show.js +233 -0
  97. package/dist/baseline/show.js.map +1 -0
  98. package/dist/baseline/types.d.ts +482 -0
  99. package/dist/baseline/types.d.ts.map +1 -0
  100. package/dist/baseline/types.js +53 -0
  101. package/dist/baseline/types.js.map +1 -0
  102. package/dist/cli.d.ts.map +1 -1
  103. package/dist/cli.js +398 -82
  104. package/dist/cli.js.map +1 -1
  105. package/dist/constants.d.ts.map +1 -1
  106. package/dist/constants.js +0 -4
  107. package/dist/constants.js.map +1 -1
  108. package/dist/doctor.d.ts.map +1 -1
  109. package/dist/doctor.js +39 -35
  110. package/dist/doctor.js.map +1 -1
  111. package/dist/fail-on.d.ts +84 -0
  112. package/dist/fail-on.d.ts.map +1 -0
  113. package/dist/fail-on.js +128 -0
  114. package/dist/fail-on.js.map +1 -0
  115. package/dist/generator.d.ts +1 -1
  116. package/dist/generator.d.ts.map +1 -1
  117. package/dist/generator.js +81 -274
  118. package/dist/generator.js.map +1 -1
  119. package/dist/hooks-cli.d.ts +20 -0
  120. package/dist/hooks-cli.d.ts.map +1 -0
  121. package/dist/hooks-cli.js +145 -0
  122. package/dist/hooks-cli.js.map +1 -0
  123. package/dist/languages/csharp.d.ts.map +1 -1
  124. package/dist/languages/csharp.js +4 -9
  125. package/dist/languages/csharp.js.map +1 -1
  126. package/dist/languages/go.d.ts.map +1 -1
  127. package/dist/languages/go.js +3 -14
  128. package/dist/languages/go.js.map +1 -1
  129. package/dist/languages/index.d.ts +19 -1
  130. package/dist/languages/index.d.ts.map +1 -1
  131. package/dist/languages/index.js +32 -0
  132. package/dist/languages/index.js.map +1 -1
  133. package/dist/languages/java.d.ts.map +1 -1
  134. package/dist/languages/java.js +4 -6
  135. package/dist/languages/java.js.map +1 -1
  136. package/dist/languages/kotlin.d.ts.map +1 -1
  137. package/dist/languages/kotlin.js +9 -11
  138. package/dist/languages/kotlin.js.map +1 -1
  139. package/dist/languages/python.d.ts.map +1 -1
  140. package/dist/languages/python.js +4 -15
  141. package/dist/languages/python.js.map +1 -1
  142. package/dist/languages/ruby.d.ts.map +1 -1
  143. package/dist/languages/ruby.js +4 -6
  144. package/dist/languages/ruby.js.map +1 -1
  145. package/dist/languages/rust.d.ts.map +1 -1
  146. package/dist/languages/rust.js +4 -4
  147. package/dist/languages/rust.js.map +1 -1
  148. package/dist/languages/types.d.ts +29 -28
  149. package/dist/languages/types.d.ts.map +1 -1
  150. package/dist/languages/typescript.d.ts.map +1 -1
  151. package/dist/languages/typescript.js +31 -4
  152. package/dist/languages/typescript.js.map +1 -1
  153. package/dist/lib.d.ts +2 -3
  154. package/dist/lib.d.ts.map +1 -1
  155. package/dist/lib.js +3 -6
  156. package/dist/lib.js.map +1 -1
  157. package/dist/prompts.d.ts.map +1 -1
  158. package/dist/prompts.js +0 -10
  159. package/dist/prompts.js.map +1 -1
  160. package/dist/report-schema.d.ts +42 -0
  161. package/dist/report-schema.d.ts.map +1 -0
  162. package/dist/report-schema.js +54 -0
  163. package/dist/report-schema.js.map +1 -0
  164. package/dist/ship-installers.d.ts +112 -0
  165. package/dist/ship-installers.d.ts.map +1 -0
  166. package/dist/ship-installers.js +530 -0
  167. package/dist/ship-installers.js.map +1 -0
  168. package/dist/tools-cli.d.ts.map +1 -1
  169. package/dist/tools-cli.js +45 -9
  170. package/dist/tools-cli.js.map +1 -1
  171. package/dist/types.d.ts +0 -4
  172. package/dist/types.d.ts.map +1 -1
  173. package/dist/update.d.ts.map +1 -1
  174. package/dist/update.js +0 -4
  175. package/dist/update.js.map +1 -1
  176. package/package.json +17 -11
  177. package/templates/.claude/skills/dxkit-action/SKILL.md +150 -0
  178. package/templates/.claude/skills/dxkit-config/SKILL.md +124 -0
  179. package/templates/.claude/skills/dxkit-hooks/SKILL.md +109 -0
  180. package/templates/.claude/skills/dxkit-init/SKILL.md +93 -0
  181. package/templates/.claude/skills/dxkit-learn/SKILL.md +84 -0
  182. package/templates/.claude/skills/dxkit-reports/SKILL.md +111 -0
  183. package/templates/.devcontainer/devcontainer.json +55 -0
  184. package/templates/.devcontainer/install-agent-clis.sh +42 -0
  185. package/templates/.devcontainer/post-create.sh +81 -0
  186. package/templates/.githooks/pre-commit +55 -0
  187. package/templates/.githooks/pre-push +63 -0
  188. package/templates/.github/workflows/dxkit-baseline-refresh.yml +78 -0
  189. package/templates/.github/workflows/dxkit-guardrails.yml +98 -0
  190. package/templates/AGENTS.md.template +137 -0
  191. package/templates/CLAUDE.md.template +16 -245
  192. package/dist/codebase-scanner.d.ts +0 -36
  193. package/dist/codebase-scanner.d.ts.map +0 -1
  194. package/dist/codebase-scanner.js +0 -688
  195. package/dist/codebase-scanner.js.map +0 -1
  196. package/dist/project-yaml.d.ts +0 -13
  197. package/dist/project-yaml.d.ts.map +0 -1
  198. package/dist/project-yaml.js +0 -188
  199. package/dist/project-yaml.js.map +0 -1
  200. package/templates/.ai/README.md +0 -117
  201. package/templates/.ai/prompts/execution-prompt.md +0 -9
  202. package/templates/.ai/prompts/planning-prompt.md +0 -18
  203. package/templates/.ai/prompts/session-end-template.md +0 -182
  204. package/templates/.ai/prompts/session-end.md +0 -132
  205. package/templates/.ai/prompts/session-start.md +0 -109
  206. package/templates/.ai/prompts/step-by-step.md +0 -113
  207. package/templates/.ai/sessions/.gitkeep +0 -0
  208. package/templates/.claude/agents/doc-writer.md +0 -107
  209. package/templates/.claude/agents/knowledge-bot.md +0 -64
  210. package/templates/.claude/agents/onboarding.md +0 -61
  211. package/templates/.claude/agents/quality-reviewer.md +0 -85
  212. package/templates/.claude/agents-available/code-reviewer.md +0 -29
  213. package/templates/.claude/agents-available/codebase-explorer.md +0 -100
  214. package/templates/.claude/agents-available/dashboard-builder.md +0 -433
  215. package/templates/.claude/agents-available/debugger.md +0 -29
  216. package/templates/.claude/agents-available/dependency-mapper.md +0 -80
  217. package/templates/.claude/agents-available/dev-report.md +0 -108
  218. package/templates/.claude/agents-available/doc-writer.md +0 -107
  219. package/templates/.claude/agents-available/feature-builder.md +0 -163
  220. package/templates/.claude/agents-available/feature-planner.md +0 -185
  221. package/templates/.claude/agents-available/health-auditor.md +0 -95
  222. package/templates/.claude/agents-available/hooks-configurator.md +0 -211
  223. package/templates/.claude/agents-available/knowledge-bot.md +0 -62
  224. package/templates/.claude/agents-available/plan-executor.md +0 -133
  225. package/templates/.claude/agents-available/strategic-planner.md +0 -141
  226. package/templates/.claude/agents-available/test-gap-finder.md +0 -67
  227. package/templates/.claude/agents-available/test-writer.md +0 -34
  228. package/templates/.claude/agents-available/vulnerability-scanner.md +0 -173
  229. package/templates/.claude/commands/ask.md +0 -7
  230. package/templates/.claude/commands/build-feature.md +0 -26
  231. package/templates/.claude/commands/build.md.template +0 -30
  232. package/templates/.claude/commands/check.md.template +0 -43
  233. package/templates/.claude/commands/dashboard.md +0 -28
  234. package/templates/.claude/commands/deps.md +0 -15
  235. package/templates/.claude/commands/dev-report.md +0 -50
  236. package/templates/.claude/commands/docs.md +0 -21
  237. package/templates/.claude/commands/doctor.md +0 -21
  238. package/templates/.claude/commands/enable-agent.md +0 -12
  239. package/templates/.claude/commands/execute-plan.md +0 -25
  240. package/templates/.claude/commands/explore-codebase.md +0 -12
  241. package/templates/.claude/commands/export-pdf.md +0 -30
  242. package/templates/.claude/commands/feature.md +0 -25
  243. package/templates/.claude/commands/fix-issue.md +0 -12
  244. package/templates/.claude/commands/fix.md.template +0 -32
  245. package/templates/.claude/commands/health.md +0 -58
  246. package/templates/.claude/commands/help.md +0 -36
  247. package/templates/.claude/commands/learn.md +0 -48
  248. package/templates/.claude/commands/onboarding.md +0 -21
  249. package/templates/.claude/commands/plan.md +0 -20
  250. package/templates/.claude/commands/quality.md.template +0 -65
  251. package/templates/.claude/commands/session-end.md +0 -40
  252. package/templates/.claude/commands/session-start.md +0 -30
  253. package/templates/.claude/commands/setup-hooks.md +0 -18
  254. package/templates/.claude/commands/setup-pr-review.md +0 -72
  255. package/templates/.claude/commands/stealth-mode.md +0 -17
  256. package/templates/.claude/commands/test-gaps.md +0 -49
  257. package/templates/.claude/commands/test.md.template +0 -40
  258. package/templates/.claude/commands/vulnerabilities.md +0 -49
  259. package/templates/.claude/skills/build/SKILL.md.template +0 -98
  260. package/templates/.claude/skills/deploy/SKILL.md.template +0 -131
  261. package/templates/.claude/skills/deploy/references/gotchas.md +0 -5
  262. package/templates/.claude/skills/doctor/SKILL.md +0 -54
  263. package/templates/.claude/skills/gcloud/SKILL.md +0 -66
  264. package/templates/.claude/skills/gcloud/references/gotchas.md +0 -5
  265. package/templates/.claude/skills/learned/SKILL.md +0 -55
  266. package/templates/.claude/skills/learned/references/conventions.md +0 -11
  267. package/templates/.claude/skills/learned/references/deny-recommendations.md +0 -18
  268. package/templates/.claude/skills/learned/references/gotchas.md +0 -11
  269. package/templates/.claude/skills/pulumi/SKILL.md +0 -73
  270. package/templates/.claude/skills/quality/SKILL.md.template +0 -108
  271. package/templates/.claude/skills/quality/references/gotchas.md +0 -5
  272. package/templates/.claude/skills/review/SKILL.md.template +0 -73
  273. package/templates/.claude/skills/scaffold/SKILL.md.template +0 -123
  274. package/templates/.claude/skills/secrets/SKILL.md +0 -52
  275. package/templates/.claude/skills/session/SKILL.md +0 -43
  276. package/templates/.claude/skills/test/SKILL.md.template +0 -122
  277. package/templates/.claude/skills/test/references/gotchas.md +0 -5
  278. package/templates/.devcontainer/Dockerfile.dev.template +0 -89
  279. package/templates/.devcontainer/devcontainer.json.template +0 -184
  280. package/templates/.devcontainer/docker-compose.yml.template +0 -105
  281. package/templates/.devcontainer/init-scripts/01-init.sql.template +0 -12
  282. package/templates/.devcontainer/post-create.sh.template +0 -298
  283. package/templates/.github/workflows/ci.yml.template +0 -399
  284. package/templates/.github/workflows/quality.yml.template +0 -376
  285. package/templates/.pre-commit-config.yaml.template +0 -106
  286. package/templates/.project/config/edit_config.py +0 -275
  287. package/templates/.project/config/project_config.py +0 -894
  288. package/templates/.project/scripts/codegen/generate-all.sh +0 -20
  289. package/templates/.project/scripts/codegen/validate-all.sh +0 -17
  290. package/templates/.project/scripts/docs/generate-all.sh +0 -30
  291. package/templates/.project/scripts/docs/serve.sh +0 -20
  292. package/templates/.project/scripts/quality/fix-all.sh +0 -138
  293. package/templates/.project/scripts/quality/lint-go.sh +0 -34
  294. package/templates/.project/scripts/quality/lint-python.sh +0 -54
  295. package/templates/.project/scripts/quality/run-all.sh +0 -497
  296. package/templates/.project/scripts/session/commit.sh +0 -70
  297. package/templates/.project/scripts/session/create-pr.sh +0 -165
  298. package/templates/.project/scripts/session/end.sh +0 -207
  299. package/templates/.project/scripts/session/start.sh +0 -233
  300. package/templates/.project/scripts/setup/doctor.sh +0 -404
  301. package/templates/.project/scripts/setup/interactive-setup.sh +0 -585
  302. package/templates/.project/scripts/sync/sync-template.sh +0 -328
  303. package/templates/.project/scripts/test/run-all.sh +0 -179
  304. package/templates/.project/scripts/test/run-quick.sh +0 -25
  305. package/templates/Makefile +0 -514
  306. package/templates/config/versions.yaml +0 -57
  307. package/templates/configs/go/.golangci.yml.template +0 -172
  308. package/templates/configs/go/go.mod.template +0 -15
  309. package/templates/configs/java/README.md +0 -6
  310. package/templates/configs/kotlin/README.md +0 -6
  311. package/templates/configs/node/package.json.template +0 -67
  312. package/templates/configs/node/tsconfig.json.template +0 -53
  313. package/templates/configs/python/pyproject.toml.template +0 -92
  314. package/templates/configs/python/pytest.ini.template +0 -64
  315. package/templates/configs/python/ruff.toml.template +0 -79
  316. package/templates/configs/ruby/README.md +0 -6
  317. package/templates/configs/rust/Cargo.toml.template +0 -51
  318. package/templates/configs/shared/.editorconfig +0 -67
  319. package/templates/scripts/validate-templates.sh +0 -449
@@ -1,123 +0,0 @@
1
- ---
2
- name: scaffold
3
- description: Scaffold new code — services, packages, modules, components. Use when asked to create new files, modules, project structure, or boilerplate.
4
- ---
5
-
6
- # Code Scaffolding
7
-
8
- ## Project Structure
9
- - `.project.yaml` - Central config (edit via `make config`, view via `make info`)
10
- - `.project/` - Framework tooling and scripts
11
- - `.ai/` - AI session management and checkpoints
12
-
13
- ## Language Management
14
- - `make lang-list` - Show enabled languages
15
- - `make lang-add LANG=<name>` - Enable a language
16
- - `make lang-remove LANG=<name>` - Disable a language
17
- - `make sync` - Sync `.project.yaml` to language config files
18
- - `make sync-preview` - Preview sync changes (dry run)
19
-
20
- {{#IF_PYTHON}}
21
- ## Python Structure
22
- ```
23
- services/python/<service-name>/
24
- ├── pyproject.toml
25
- ├── src/
26
- │ ├── __init__.py
27
- │ ├── app.py # Entry point / app factory
28
- │ ├── models.py # Data models (Pydantic)
29
- │ └── routes.py # API endpoints (if web)
30
- └── tests/
31
- ├── __init__.py
32
- └── test_app.py
33
- ```
34
-
35
- **Patterns:**
36
- - FastAPI for web APIs (app factory pattern)
37
- - Pydantic for data validation
38
- - pytest for testing
39
- - See `.template/examples/python-api/` and `.template/examples/python-cli/` for reference
40
- {{/IF_PYTHON}}
41
-
42
- {{#IF_GO}}
43
- ## Go Structure
44
- ```
45
- services/go/<service-name>/
46
- ├── go.mod
47
- ├── main.go # Entry point
48
- ├── handlers.go # HTTP handlers
49
- ├── handlers_test.go # Handler tests
50
- └── internal/ # Private packages
51
- ```
52
-
53
- **Patterns:**
54
- - Standard library `net/http` for HTTP
55
- - `httptest` for handler testing
56
- - See `.template/examples/go-service/` for reference
57
- {{/IF_GO}}
58
-
59
- {{#IF_NEXTJS}}
60
- ## Next.js Structure
61
- ```
62
- frontend/
63
- ├── src/
64
- │ ├── app/ # App Router pages
65
- │ ├── components/ # React components
66
- │ └── lib/ # Utilities
67
- ├── public/ # Static assets
68
- ├── package.json
69
- └── tsconfig.json
70
- ```
71
- {{/IF_NEXTJS}}
72
-
73
- {{#IF_NODE}}
74
- ## Node.js Structure
75
- ```
76
- services/node/<service-name>/
77
- ├── package.json
78
- ├── tsconfig.json
79
- ├── src/
80
- │ └── index.ts
81
- └── tests/
82
- └── index.test.ts
83
- ```
84
- {{/IF_NODE}}
85
-
86
- {{#IF_RUST}}
87
- ## Rust Structure
88
- ```
89
- services/rust/<service-name>/
90
- ├── Cargo.toml
91
- ├── src/
92
- │ ├── main.rs # Binary entry
93
- │ └── lib.rs # Library code
94
- └── tests/
95
- └── integration.rs
96
- ```
97
- {{/IF_RUST}}
98
-
99
- {{#IF_CSHARP}}
100
- ## C# Structure
101
- ```
102
- src/<ProjectName>/
103
- ├── <ProjectName>.csproj
104
- ├── Program.cs
105
- ├── Controllers/ # API controllers
106
- ├── Models/ # Data models
107
- ├── Services/ # Business logic
108
- └── appsettings.json # Configuration
109
- tests/<ProjectName>.Tests/
110
- ├── <ProjectName>.Tests.csproj
111
- └── UnitTests/
112
- ```
113
-
114
- **Patterns:**
115
- - ASP.NET Core for web APIs (minimal APIs or controllers)
116
- - Entity Framework Core for data access
117
- - xUnit + Moq for testing
118
- {{/IF_CSHARP}}
119
-
120
- ## After Scaffolding
121
- 1. Run `make sync` to update config files
122
- 2. Run `make doctor` to verify setup
123
- 3. Run `make test` to confirm everything works
@@ -1,52 +0,0 @@
1
- ---
2
- name: secrets
3
- description: Manage secrets via Infisical. Use when asked about secrets, environment variables, API keys, .env configuration, or credential management.
4
- paths:
5
- - '.env'
6
- - '.env.*'
7
- - '**/.env'
8
- - '**/.env.*'
9
- - '.infisical.json'
10
- - '**/.infisical.json'
11
- ---
12
-
13
- # Secrets Management (Infisical)
14
-
15
- ## Commands
16
- - `make secrets-pull` - Pull secrets from Infisical to `.env`
17
- - `make secrets-show` - Show Infisical configuration (**no secrets displayed**)
18
- - `make setup` - Configure Infisical during initial setup
19
-
20
- ## How It Works
21
- 1. Infisical stores secrets centrally (encrypted, access-controlled)
22
- 2. `make secrets-pull` fetches secrets and merges into `.env`
23
- 3. `.env` is gitignored — **never commit secrets**
24
-
25
- ## Configuration
26
- Required in `.env` (set during `make setup`):
27
- - `INFISICAL_TOKEN` - Authentication token
28
- - `INFISICAL_PROJECT_ID` - Project identifier
29
- - `INFISICAL_ENV` - Environment (default: `dev`)
30
-
31
- ## Checking Configuration
32
- Always use `make secrets-show` — it displays config keys without values:
33
- ```
34
- INFISICAL_PROJECT_ID=abc123
35
- INFISICAL_ENV=dev
36
- INFISICAL_TOKEN=***configured***
37
- ```
38
-
39
- ## Security — CRITICAL
40
-
41
- 1. **NEVER read `.env` directly** — it contains plain-text secrets
42
- 2. **NEVER output secret values** in responses, logs, or commit messages
43
- 3. **NEVER include secrets** in session checkpoints or skill files
44
- 4. **NEVER pass secrets as CLI arguments** — they appear in process lists
45
- 5. **NEVER commit** `.env`, `.env.*`, or `.env.secrets`
46
- 6. Use `make secrets-show` to verify configuration without exposing values
47
- 7. If a secret is accidentally exposed, rotate it immediately
48
-
49
- ## Troubleshooting
50
- - Token expired → re-authenticate via `make setup`
51
- - Pull fails → check `make secrets-show` for config, verify token permissions
52
- - Missing env var → check if it exists in Infisical project, correct environment
@@ -1,43 +0,0 @@
1
- ---
2
- name: session
3
- description: Manage AI development sessions — start, checkpoint, commit, push, create PRs. Use when asked about session workflow, checkpoints, or development workflow.
4
- ---
5
-
6
- # Session Management
7
-
8
- ## Workflow
9
- 1. `make session-start` - Start session (finds last checkpoint, generates prompts)
10
- 2. Work on your task using step-by-step development
11
- 3. `make session-end` - Create checkpoint document
12
- 4. `make session-commit` - Commit with quality checks
13
- 5. `make session-push` - Push to remote
14
- 6. `make session-pr` - Create PR with auto-generated content
15
-
16
- ## Key Files
17
- - `.ai/prompts/session-start.md` - Planning prompt template
18
- - `.ai/prompts/session-end.md` - Checkpoint creation guide
19
- - `.ai/prompts/step-by-step.md` - Step-by-step development guide
20
- - `.ai/templates/session-checkpoint-template.md` - Checkpoint structure
21
-
22
- ## Checkpoints
23
- - Stored in: `.ai/sessions/<developer>/<date>/session-<N>.md`
24
- - Auto-numbered per day
25
- - Include: accomplishments, files, decisions, next steps, AI context
26
-
27
- ## Checkpoint Quality
28
- A good checkpoint is specific, not vague:
29
- - **Bad:** "worked on the client"
30
- - **Good:** "Implemented PolygonClient with 3 endpoints, added 15 unit tests, all passing"
31
-
32
- ## Skill Evolution (during session-end)
33
- After creating the checkpoint, review the session for learnings:
34
- - Append gotchas to `.claude/skills/learned/references/gotchas.md`
35
- - Append conventions to `.claude/skills/learned/references/conventions.md`
36
- - Update area-specific gotchas in `.claude/skills/<area>/references/gotchas.md`
37
- - **Create new skills** if a distinct domain/workflow emerged (new `.claude/skills/<name>/SKILL.md`)
38
-
39
- **NEVER include secret values in checkpoints or skill files.**
40
-
41
- ## Tips
42
- - `SKIP_VERIFY=1` on session-commit/push to bypass quality checks for WIP
43
- - `BASE=main` on session-pr to override base branch
@@ -1,122 +0,0 @@
1
- ---
2
- name: test
3
- description: Run tests, check coverage, debug test failures. Use when asked to run tests, write tests, investigate test failures, or check coverage.
4
- paths:
5
- - '**/*.test.ts'
6
- - '**/*.test.tsx'
7
- - '**/*.test.js'
8
- - '**/*.test.jsx'
9
- - '**/*.spec.ts'
10
- - '**/*.spec.tsx'
11
- - '**/*.spec.js'
12
- - '**/*_test.go'
13
- - '**/test_*.py'
14
- - '**/*_test.py'
15
- - '**/tests/**'
16
- - '**/__tests__/**'
17
- ---
18
-
19
- # Testing
20
-
21
- ## Commands
22
- - `make test` - Run all tests (report: `tmp/reports/test-report.md`)
23
- - `make test-unit` - Fast unit tests only (no coverage)
24
- - `make test-quick` - Alias for test-unit
25
- - `make test-integration` - Integration tests only
26
- - `make test-coverage` - Detailed coverage report
27
- - Coverage threshold: **{{COVERAGE_THRESHOLD}}%**
28
-
29
- {{#IF_PYTHON}}
30
- ## Python
31
-
32
- **Framework:** pytest (config: `pytest.ini`, `pyproject.toml`)
33
- **Coverage:** pytest-cov
34
- **Pattern:** `tests/` directories alongside source
35
-
36
- ```bash
37
- pytest tests/ -v # run all
38
- pytest tests/test_foo.py -v # run specific
39
- pytest tests/ -k "test_name" -v # run by name
40
- pytest tests/ --cov=src --cov-report=term-missing # with coverage
41
- ```
42
-
43
- Writing tests:
44
- - Use fixtures for setup/teardown
45
- - Use `@pytest.mark.parametrize` for data-driven tests
46
- - Mock external dependencies with `unittest.mock` or `pytest-mock`
47
- - Use dependency injection for testability
48
- {{/IF_PYTHON}}
49
-
50
- {{#IF_GO}}
51
- ## Go
52
-
53
- **Framework:** `go test`
54
- **Coverage:** `go test -coverprofile`
55
- **Pattern:** `_test.go` files alongside source
56
-
57
- ```bash
58
- go test ./... -v # run all
59
- go test ./pkg/mypackage/ -v # run specific
60
- go test ./... -run TestName -v # run by name
61
- go test ./... -coverprofile=coverage.out # with coverage
62
- go tool cover -html=coverage.out # view coverage
63
- ```
64
-
65
- Writing tests:
66
- - Use table-driven tests for multiple cases
67
- - Use `httptest` for HTTP handler tests
68
- - Use `testify/assert` if available, otherwise standard `testing`
69
- {{/IF_GO}}
70
-
71
- {{#IF_NEXTJS}}
72
- ## Next.js
73
-
74
- **Framework:** Jest (if configured)
75
- **Directory:** `frontend/`
76
-
77
- ```bash
78
- cd frontend && npm test
79
- cd frontend && npm test -- --coverage
80
- ```
81
- {{/IF_NEXTJS}}
82
-
83
- {{#IF_RUST}}
84
- ## Rust
85
-
86
- ```bash
87
- cargo test # run all
88
- cargo test test_name # run specific
89
- cargo test -- --nocapture # show output
90
- ```
91
- {{/IF_RUST}}
92
-
93
- {{#IF_CSHARP}}
94
- ## C#
95
-
96
- **Framework:** xUnit (preferred), NUnit, MSTest
97
- **Coverage:** coverlet
98
- **Pattern:** `*.Tests` projects alongside source
99
-
100
- ```bash
101
- dotnet test # run all
102
- dotnet test --filter "FullyQualifiedName~TestName" # run specific
103
- dotnet test --collect:"XPlat Code Coverage" # with coverage
104
- ```
105
-
106
- Writing tests:
107
- - Use `[Fact]` for single assertions, `[Theory]` with `[InlineData]` for data-driven
108
- - Use dependency injection + mocking (Moq, NSubstitute)
109
- - Follow Arrange-Act-Assert pattern
110
- {{/IF_CSHARP}}
111
-
112
- ## Writing Tests
113
-
114
- - Every new feature should include tests
115
- - Aim for coverage threshold ({{COVERAGE_THRESHOLD}}%)
116
- - Use dependency injection for mockability
117
- - Test edge cases and error paths, not just happy paths
118
- - Integration tests go in separate directories/files from unit tests
119
-
120
- ## Gotchas
121
-
122
- See [references/gotchas.md](references/gotchas.md) for known test issues.
@@ -1,5 +0,0 @@
1
- # Test Gotchas
2
-
3
- <!-- This file grows over time. Each entry is added during session-end. -->
4
- <!-- Format: date, category, description, resolution -->
5
- <!-- NEVER include secret values, tokens, or credentials here -->
@@ -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
- }