@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
@@ -2,254 +2,120 @@
2
2
 
3
3
  {{PROJECT_DESCRIPTION}}
4
4
 
5
- ## Architecture
6
-
7
- - Monorepo with make-based task runner
8
- - Configuration driven by `.project.yaml` (single source of truth)
9
- - Quality checks, testing, and formatting enforced via `make check`
10
-
11
- ## Quick Reference
12
-
13
- ### Setup & Diagnostics
14
- - `make setup` - Interactive setup for new developers
15
- - `make doctor` - Diagnose common setup issues
16
- - `make info` - Show project configuration dashboard
17
- - `make config` - Interactive configuration editor
18
-
19
- ### Code Quality
20
- - `make quality` - Run all quality checks (report: tmp/reports/quality-report.md)
21
- - `make quality-fix` - Auto-fix issues
22
- - `make lint` - Lint all code
23
- - `make format` - Format all code
24
- - `make fix` - Fix all auto-fixable issues (quality-fix + format)
25
- - `make check` - Full pre-commit check (validate + quality + test)
26
-
27
- ### Testing
28
- - `make test` - Run all tests (report: tmp/reports/test-report.md)
29
- - `make test-unit` - Fast unit tests only
30
- - `make test-coverage` - Detailed coverage report
31
- - Coverage threshold: {{COVERAGE_THRESHOLD}}%
32
-
33
- ### Build & Development
34
- - `make build` - Build all services
35
- - `make clean` - Remove build artifacts
36
- - `make dev` - Start all services (docker-compose up)
37
- - `make stop` - Stop all services
38
-
39
- ### Session Workflow
40
- - `make session-start` - Start AI-assisted development session
41
- - `make session-end` - End session and create checkpoint
42
- - `make session-commit` - Commit with quality checks
43
- - `make session-push` - Push to remote
44
- - `make session-pr` - Create PR with auto-generated content
5
+ ## How to use this file
45
6
 
46
- {{#IF_INFISICAL}}
47
- ### Secrets Management
48
- - `make secrets-pull` - Pull secrets from Infisical to .env
49
- - `make secrets-show` - Show Infisical configuration (no secrets displayed)
50
- {{/IF_INFISICAL}}
7
+ This file is loaded by Claude Code at the start of every session in this repo. It tells the agent what this project is, how to run common commands, and what safety rules to follow.
51
8
 
52
- ### Configuration
53
- - `make lang-list` - Show enabled languages
54
- - `make lang-add LANG=<name>` - Enable a language
55
- - `make lang-remove LANG=<name>` - Disable a language
56
- - `make sync` - Sync .project.yaml to language config files
9
+ The rest of `.claude/` extends this:
10
+ - **Skills** (`.claude/skills/`) domain context loaded on demand
11
+ - **Commands** (`.claude/commands/`) slash commands for common workflows
12
+ - **Agents** (`.claude/agents/`) specialists Claude delegates to automatically
13
+ - **Rules** (`.claude/rules/`) language-specific conventions
57
14
 
58
- ### Code Generation
59
- - `make generate` - Generate all code
60
- - `make validate` - Validate generated code is up-to-date
15
+ Run `/help` for the full list.
61
16
 
62
17
  {{#IF_PYTHON}}
63
18
  ## Python {{PYTHON_VERSION}}
64
19
 
65
- - **Source:** `src/` or `services/python/`
66
- - **Linter/Formatter:** ruff (config: `ruff.toml`, `pyproject.toml`)
67
- - **Type checker:** mypy
68
- - **Tests:** pytest (config: `pytest.ini`)
69
- - **Package config:** `pyproject.toml`
70
- - Run quality: `.project/scripts/quality/lint-python.sh`
20
+ - **Tests**: `pytest`
21
+ - **Lint/format**: `ruff check .` / `ruff format .`
22
+ - **Type check**: `mypy src/`
23
+ - **Package config**: `pyproject.toml`
71
24
  {{/IF_PYTHON}}
72
25
 
73
26
  {{#IF_GO}}
74
27
  ## Go {{GO_VERSION}}
75
28
 
76
- - **Source:** `services/go/`
77
- - **Linter:** golangci-lint (config: `.golangci.yml`)
78
- - **Formatter:** gofmt + goimports
79
- - **Tests:** `go test ./...`
80
- - **Module:** `go.mod`
81
- - Run quality: `.project/scripts/quality/lint-go.sh`
29
+ - **Tests**: `go test ./...`
30
+ - **Lint**: `golangci-lint run`
31
+ - **Format**: `gofmt -w .` / `goimports -w .`
32
+ - **Module**: `go.mod`
82
33
  {{/IF_GO}}
83
34
 
84
35
  {{#IF_NODE}}
85
36
  ## Node.js {{NODE_VERSION}}
86
37
 
87
- - **Package:** `package.json`, `tsconfig.json`
88
- - **Linter:** ESLint
89
- - **Formatter:** Prettier
90
- - **Tests:** npm test
38
+ - **Tests**: `npm test`
39
+ - **Build**: `npm run build`
40
+ - **Lint/format**: `npx eslint .` / `npx prettier --write .`
41
+ - **Package config**: `package.json`, `tsconfig.json`
91
42
  {{/IF_NODE}}
92
43
 
93
44
  {{#IF_NEXTJS}}
94
45
  ## Next.js
95
46
 
96
- - **Directory:** `frontend/`
97
- - **Stack:** App Router + TypeScript + Tailwind CSS
98
- - **Build:** `cd frontend && npm run build`
99
- - **Lint:** `cd frontend && npm run lint`
47
+ - **Directory**: `frontend/`
48
+ - **Dev server**: `cd frontend && npm run dev`
49
+ - **Build**: `cd frontend && npm run build`
50
+ - **Lint**: `cd frontend && npm run lint`
100
51
  {{/IF_NEXTJS}}
101
52
 
102
53
  {{#IF_RUST}}
103
54
  ## Rust {{RUST_VERSION}}
104
55
 
105
- - **Package:** `Cargo.toml`
106
- - **Linter:** clippy
107
- - **Formatter:** rustfmt
108
- - **Tests:** `cargo test`
56
+ - **Tests**: `cargo test`
57
+ - **Build**: `cargo build` / `cargo build --release`
58
+ - **Lint**: `cargo clippy`
59
+ - **Format**: `cargo fmt`
60
+ - **Package**: `Cargo.toml`
109
61
  {{/IF_RUST}}
110
62
 
111
63
  {{#IF_CSHARP}}
112
64
  ## C# {{CSHARP_VERSION}}
113
65
 
114
- - **Source:** `src/` or `services/csharp/`
115
- - **Solution:** `*.sln`
116
- - **Project:** `*.csproj`
117
- - **Linter/Analyzer:** Roslyn Analyzers, StyleCop Analyzers
118
- - **Formatter:** `dotnet format`
119
- - **Tests:** `dotnet test` (xUnit)
66
+ - **Tests**: `dotnet test`
67
+ - **Build**: `dotnet build` / `dotnet publish -c Release`
68
+ - **Format**: `dotnet format`
69
+ - **Solution**: `*.sln`, projects under `*.csproj`
120
70
  {{/IF_CSHARP}}
121
71
 
122
72
  {{#IF_GCLOUD}}
123
73
  ## Google Cloud
124
74
 
125
- - **Auth:** `gcloud auth login` (interactive setup via `make setup`)
126
- - **Project:** Set in `.env` as `GOOGLE_CLOUD_PROJECT`
127
- - **SDK:** Installed via devcontainer post-create script
75
+ - **Auth**: `gcloud auth login`
76
+ - **Project**: set via `gcloud config set project <id>` or `GOOGLE_CLOUD_PROJECT` env var
128
77
  {{/IF_GCLOUD}}
129
78
 
130
79
  {{#IF_PULUMI}}
131
80
  ## Pulumi
132
81
 
133
- - **Auth:** `pulumi login`
134
- - **Workflow:** Always `pulumi preview` before `pulumi up`
135
- - **Secrets:** Use `pulumi config set --secret` for sensitive values
82
+ - **Auth**: `pulumi login`
83
+ - **Workflow**: always `pulumi preview` before `pulumi up`
84
+ - **Secrets**: `pulumi config set --secret` for sensitive values
136
85
  {{/IF_PULUMI}}
137
86
 
138
- ## Claude Code Integration
139
-
140
- ### Skills (`.claude/skills/`)
141
- Domain-specific context loaded on demand. Check skill descriptions before starting work.
142
- - `.claude/skills/learned/references/gotchas.md` - Known project gotchas
143
- - `.claude/skills/learned/references/conventions.md` - Team conventions
144
-
145
- ### Commands (`.claude/commands/`)
146
- Slash commands for common workflows. Run `/help` to list all with descriptions.
147
- - `/session-start` - Start dev session
148
- - `/session-end` - End session with checkpoint
149
- - `/ask <question>` - Ask about the codebase
150
- - `/explore-codebase` - Deep architecture exploration
151
- - `/onboarding` - Generate first-day developer guide
152
- - `/enable-agent <name>` - Activate a dormant agent
153
- - `/help` - List all commands and agents
154
- - `/quality` - Run quality checks (language-aware)
155
- - `/setup-hooks` - Install git pre-commit/pre-push hooks
156
- - `/learn` - Capture a gotcha, convention, or thing to avoid
157
- - `/test` - Run tests
158
- - `/setup-pr-review` - Set up automated PR review with Claude Code
159
- - `/test-gaps` - Find critical untested code paths
160
- - `/deps` - Map dependencies ("what breaks if I change X?")
161
- - `/health` - Comprehensive codebase health audit
162
- - `/vulnerabilities` - Scan dependencies and code for security issues
163
- - `/dev-report` - Developer activity and code quality report
164
- - `/docs` - Audit, write, or improve documentation
165
- - `/plan` - Generate improvement plans with KPIs from reports (fix loop)
166
- - `/execute-plan` - Execute a plan task by task with session management
167
- - `/feature` - Design and plan a new feature
168
- - `/build-feature` - Build a feature from a plan with tests
169
- - `/dashboard` - Generate HTML dashboard from all reports
170
- - `/stealth-mode` - Gitignore DXKit files + install smart scoped git hooks
171
- - `/export-pdf` - Convert markdown reports to PDF
172
- - `/fix-issue <number>` - Investigate and fix a GitHub issue
173
-
174
- ### Rules (`.claude/rules/`)
175
- Language-specific conventions that activate automatically when editing matching files.
176
-
177
- ### Agents
178
- **Active** (`.claude/agents/`) — auto-triggered when your question matches:
179
- - `knowledge-bot` — Answers codebase questions with file:line references (sonnet, read-only)
180
- - `onboarding` — Interactive onboarding buddy for new developers (sonnet, read-only)
181
- - `quality-reviewer` — Reviews changed code for issues before committing (sonnet)
182
- - `doc-writer` — Audits docs, identifies gaps, writes/improves documentation (sonnet)
183
-
184
- **Dormant** (`.claude/agents-available/`) — activate with `/enable-agent <name>`:
185
- - `codebase-explorer` — Deep architecture analysis, generates codebase skill (sonnet, read-only)
186
- - `code-reviewer` — Read-only PR review and security audit (sonnet, no write access)
187
- - `test-writer` — Writes tests for existing code (sonnet)
188
- - `test-gap-finder` — Identifies critical untested code paths (sonnet, read-only)
189
- - `dependency-mapper` — Maps import chains and blast radius (sonnet, read-only)
190
- - `health-auditor` — Comprehensive codebase health audit (sonnet, read-only)
191
- - `vulnerability-scanner` — Dependency and code vulnerability analysis (sonnet)
192
- - `dev-report` — Developer activity, quality patterns, security attribution (sonnet)
193
- - `dashboard-builder` — Generates HTML dashboard from all reports (sonnet)
194
- - `strategic-planner` — Analyzes reports, proposes KPIs, generates improvement plans (sonnet)
195
- - `plan-executor` — Executes plans task by task with session checkpoints (sonnet)
196
- - `feature-planner` — Designs new features, generates implementation plans (sonnet)
197
- - `feature-builder` — Implements features from plans with tests and conventions (sonnet)
198
- - `hooks-configurator` — Configures scoped git hooks from DXKit commands (sonnet)
199
- - `doc-writer` — Audits docs, identifies gaps, writes/improves documentation (sonnet)
200
- - `debugger` — Traces root causes systematically (sonnet, no file edits)
201
-
202
- ## AI-Assisted Development Workflow
203
-
204
- ```
205
- # 1. Start a session
206
- /session-start
207
-
208
- # 2. Create a feature branch
209
- git checkout -b feature/your-feature
210
-
211
- # 3. Ask questions as you go
212
- /ask How does the auth middleware work?
213
-
214
- # 4. Develop — Claude has full project context via skills
215
-
216
- # 5. Run checks before committing
217
- /quality
218
- /test
219
-
220
- # 6. Commit and push
221
- git add -A && git commit -m "feat: your feature"
222
- git push -u origin feature/your-feature
223
-
224
- # 7. End session (creates checkpoint + evolves skills)
225
- /session-end
226
- ```
227
-
228
- ## Security
229
-
230
- **Critical rules — never violate these:**
87
+ ## Common slash commands
88
+
89
+ - `/health` — full codebase health audit (6 dimensions)
90
+ - `/vulnerabilities` scan dependencies + code for security issues
91
+ - `/test-gaps` find critical untested code paths
92
+ - `/quality` code quality + slop analysis
93
+ - `/dev-report` — team activity from git history
94
+ - `/ask <question>` — natural-language Q&A against the codebase
95
+ - `/explore-codebase` deep architecture exploration (run once on a new repo)
96
+ - `/setup-hooks` install git pre-commit/pre-push hooks
97
+ - `/learn` capture a gotcha or convention from the current conversation
98
+
99
+ Run `/help` for the full list of commands and agents.
100
+
101
+ ## Security rules never violate
231
102
 
232
103
  1. **Never output, log, or commit secrets** — no API keys, tokens, passwords, or credentials in code, commits, checkpoints, or skill files
233
- 2. **Never read `.env` directly** — use `make secrets-show` (which masks values) to check configuration
104
+ 2. **Never read `.env` directly** — if you need to confirm a value exists, grep for the variable name only
234
105
  3. **Never pass secrets as CLI arguments** — they appear in process lists and shell history
235
106
  4. **Never include secrets in build args or Dockerfiles**
236
- 5. **Sensitive files are gitignored:** `.env`, `.env.*`, `.env.secrets`, `.claude/settings.local.json`
237
- 6. **Before committing:** verify no secrets in staged files (`git diff --cached`)
107
+ 5. **Sensitive files are gitignored**: `.env`, `.env.*`, `.env.secrets`, `.claude/settings.local.json`
108
+ 6. **Before committing**: verify no secrets in staged files (`git diff --cached`)
238
109
  {{#IF_INFISICAL}}
239
- 7. **Infisical tokens:** never output `INFISICAL_TOKEN` values; use `make secrets-show` to verify config
110
+ 7. **Infisical tokens**: never output `INFISICAL_TOKEN` values
240
111
  {{/IF_INFISICAL}}
241
112
  {{#IF_GCLOUD}}
242
- 8. **GCP credentials:** never output `gcloud auth print-access-token` or service account JSON keys
113
+ 8. **GCP credentials**: never output `gcloud auth print-access-token` or service account JSON keys
243
114
  {{/IF_GCLOUD}}
244
115
 
245
116
  ## Conventions
246
117
 
247
- - Run quality checks before committing (`/quality` or `make quality`)
248
- - Use `/session-start` to begin work, `/session-end` to checkpoint
249
- - All code changes should pass quality + test checks
250
- {{#IF_PRECOMMIT}}
251
- - Pre-commit hooks run automatically on `git commit`
252
- {{/IF_PRECOMMIT}}
253
- - Keep session checkpoints in `.ai/sessions/<developer>/<date>/`
254
- - Skills evolve over time — gotchas and conventions are captured during `/session-end`
255
- - Check `/help` for all available commands and agents
118
+ - Run `/quality` and `/test` before committing
119
+ - For changes to risky areas (auth, payments, data mutations), write tests first
120
+ - Capture surprising behaviors via `/learn` so the next session inherits them
121
+ - Check `/help` for available commands and agents
@@ -1,13 +0,0 @@
1
- import { ResolvedConfig } from './types';
2
- /** Check if .project.yaml exists in the given directory. */
3
- export declare function hasProjectYaml(cwd: string): boolean;
4
- /**
5
- * Read .project.yaml and build a ResolvedConfig from it.
6
- * This is the primary config source when create-devstack has already
7
- * written the file — dxkit skips detect() and prompts in this case.
8
- *
9
- * Returns null if the file is malformed or missing required fields
10
- * (project.name). The caller should fall back to detect() + prompts.
11
- */
12
- export declare function readProjectYaml(cwd: string): ResolvedConfig | null;
13
- //# sourceMappingURL=project-yaml.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-yaml.d.ts","sourceRoot":"","sources":["../src/project-yaml.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAiB,MAAM,SAAS,CAAC;AA4CxD,4DAA4D;AAC5D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAqFlE"}
@@ -1,188 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.hasProjectYaml = hasProjectYaml;
37
- exports.readProjectYaml = readProjectYaml;
38
- const fs = __importStar(require("fs"));
39
- const path = __importStar(require("path"));
40
- const constants_1 = require("./constants");
41
- const languages_1 = require("./languages");
42
- /** Check if .project.yaml exists in the given directory. */
43
- function hasProjectYaml(cwd) {
44
- return fs.existsSync(path.join(cwd, '.project.yaml'));
45
- }
46
- /**
47
- * Read .project.yaml and build a ResolvedConfig from it.
48
- * This is the primary config source when create-devstack has already
49
- * written the file — dxkit skips detect() and prompts in this case.
50
- *
51
- * Returns null if the file is malformed or missing required fields
52
- * (project.name). The caller should fall back to detect() + prompts.
53
- */
54
- function readProjectYaml(cwd) {
55
- const filePath = path.join(cwd, '.project.yaml');
56
- let raw;
57
- try {
58
- raw = fs.readFileSync(filePath, 'utf-8');
59
- }
60
- catch {
61
- return null;
62
- }
63
- let yaml;
64
- try {
65
- yaml = parseSimpleYaml(raw);
66
- }
67
- catch {
68
- return null;
69
- }
70
- // project.name is required
71
- if (!yaml.project?.name) {
72
- return null;
73
- }
74
- const langs = yaml.languages ?? {};
75
- const infra = yaml.infrastructure ?? {};
76
- const tools = yaml.tools ?? {};
77
- const langEnabled = (name) => langs[name]?.enabled ?? false;
78
- const infraEnabled = (name) => infra[name]?.enabled ?? false;
79
- // Find coverage from first enabled language with quality settings
80
- let coverage = constants_1.DEFAULT_COVERAGE;
81
- for (const lang of Object.values(langs)) {
82
- if (lang?.enabled && lang.quality?.coverage) {
83
- coverage = String(lang.quality.coverage);
84
- break;
85
- }
86
- }
87
- // YAML uses legacy keys `node` / `nextjs` for backwards compat with
88
- // existing `.project.yaml` files. After 10f.4, `DetectedStack.languages`
89
- // is keyed on `LanguageId`. Iterate the registry so adding a new pack
90
- // auto-extends YAML reading — by default each pack maps to its
91
- // matching `langEnabled(<id>)`. The typescript pack is the only
92
- // special case: yaml's `node` OR `nextjs` activates it.
93
- const VERSION_KEYS = ['python', 'go', 'node', 'rust', 'csharp'];
94
- const yamlNextjs = langEnabled('nextjs');
95
- const detected = {
96
- languages: Object.fromEntries(languages_1.LANGUAGES.map((lang) => {
97
- if (lang.id === 'typescript')
98
- return [lang.id, langEnabled('node') || yamlNextjs];
99
- return [lang.id, langEnabled(lang.id)];
100
- })),
101
- infrastructure: {
102
- docker: tools.docker ?? true,
103
- postgres: infraEnabled('postgres'),
104
- redis: infraEnabled('redis'),
105
- },
106
- tools: {
107
- gcloud: tools.gcloud ?? false,
108
- pulumi: tools.pulumi ?? false,
109
- infisical: tools.infisical ?? false,
110
- ghCli: tools.github_cli ?? true,
111
- },
112
- projectName: yaml.project.name,
113
- projectDescription: yaml.project.description ?? '',
114
- versions: Object.fromEntries(VERSION_KEYS.map((k) => [k, langs[k]?.version ?? constants_1.DEFAULT_VERSIONS[k]])),
115
- // 10f.4: nextjs moved out of `languages` and is now exclusively the
116
- // framework signal. Preserved here so downstream consumers (generator,
117
- // buildConditions) continue to see `framework === 'nextjs'`.
118
- framework: yamlNextjs ? 'nextjs' : undefined,
119
- requiredTools: [],
120
- };
121
- return {
122
- ...detected,
123
- coverageThreshold: coverage,
124
- precommit: tools.precommit ?? true,
125
- qualityChecks: true,
126
- aiSessions: true,
127
- aiPrompts: true,
128
- claudeCode: tools.claude_code ?? true,
129
- };
130
- }
131
- /**
132
- * Minimal YAML parser for .project.yaml.
133
- * Handles the specific structure we expect — nested objects with scalar values.
134
- * Avoids adding a `yaml` npm dependency to dxkit (which has zero runtime deps).
135
- */
136
- function parseSimpleYaml(raw) {
137
- const lines = raw.split('\n');
138
- const result = {};
139
- const stack = [
140
- { indent: -1, obj: result },
141
- ];
142
- for (const line of lines) {
143
- // Skip empty lines and comments
144
- if (!line.trim() || line.trim().startsWith('#'))
145
- continue;
146
- const indent = line.search(/\S/);
147
- const trimmed = line.trim();
148
- // Pop stack to find parent
149
- while (stack.length > 1 && stack[stack.length - 1].indent >= indent) {
150
- stack.pop();
151
- }
152
- const parent = stack[stack.length - 1].obj;
153
- const colonIdx = trimmed.indexOf(':');
154
- if (colonIdx === -1)
155
- continue;
156
- const key = trimmed.slice(0, colonIdx).trim();
157
- const valueStr = trimmed.slice(colonIdx + 1).trim();
158
- if (valueStr === '' || valueStr === '{}') {
159
- // Nested object (or empty object)
160
- const child = {};
161
- parent[key] = child;
162
- if (valueStr !== '{}') {
163
- stack.push({ indent, obj: child });
164
- }
165
- }
166
- else {
167
- // Scalar value
168
- parent[key] = parseScalar(valueStr);
169
- }
170
- }
171
- return result;
172
- }
173
- function parseScalar(value) {
174
- // Remove surrounding quotes
175
- if ((value.startsWith("'") && value.endsWith("'")) ||
176
- (value.startsWith('"') && value.endsWith('"'))) {
177
- return value.slice(1, -1);
178
- }
179
- if (value === 'true')
180
- return true;
181
- if (value === 'false')
182
- return false;
183
- const num = Number(value);
184
- if (!isNaN(num) && value !== '')
185
- return num;
186
- return value;
187
- }
188
- //# sourceMappingURL=project-yaml.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project-yaml.js","sourceRoot":"","sources":["../src/project-yaml.ts"],"names":[],"mappings":"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"}
@@ -1,117 +0,0 @@
1
- # AI-Assisted Development Sessions
2
-
3
- This directory contains session checkpoints, templates, and prompts for AI-assisted development.
4
-
5
- ## Directory Structure
6
-
7
- ```
8
- .ai/
9
- ├── README.md # This file
10
- ├── sessions/ # Session checkpoints by developer
11
- │ ├── john-doe/
12
- │ │ ├── 2025-10-05/
13
- │ │ │ ├── session-1.md
14
- │ │ │ └── session-2.md
15
- │ │ └── 2025-10-06/
16
- │ │ └── session-1.md
17
- │ └── jane-smith/
18
- │ └── 2025-10-05/
19
- │ └── session-1.md
20
- ├── templates/
21
- │ └── session-checkpoint-template.md # Checkpoint template
22
- └── prompts/
23
- ├── session-start.md # Starting session prompt
24
- ├── step-by-step.md # Development flow prompt
25
- └── session-end.md # Ending session prompt
26
- ```
27
-
28
- ## Quick Start
29
-
30
- ### Starting a New Session
31
-
32
- ```bash
33
- make ai-start
34
- ```
35
-
36
- This will:
37
- - Show your last checkpoint (if exists)
38
- - Display the session start prompt
39
- - Help you plan the session with AI
40
-
41
- ### During Development
42
-
43
- ```bash
44
- make ai-step
45
- ```
46
-
47
- Shows the step-by-step development guide for AI-assisted coding.
48
-
49
- ### Ending a Session
50
-
51
- ```bash
52
- make ai-checkpoint
53
- ```
54
-
55
- This will:
56
- - Show the session end prompt
57
- - Tell AI where to create the checkpoint file
58
- - Provide the template location
59
-
60
- ### View Session History
61
-
62
- ```bash
63
- make ai-history
64
- ```
65
-
66
- Shows recent sessions for you and other developers.
67
-
68
- ## Session Workflow
69
-
70
- 1. **Start:** `make ai-start` → Plan with AI
71
- 2. **Develop:** Code step-by-step, use `make ai-step` as reference
72
- 3. **End:** `make ai-checkpoint` → AI creates checkpoint
73
- 4. **Commit:** Include checkpoint in commit message
74
-
75
- ## Session Naming Convention
76
-
77
- ```
78
- .ai/sessions/{developer-name}/{YYYY-MM-DD}/session-{N}.md
79
- ```
80
-
81
- - `developer-name`: From `git config user.name` (lowercase, hyphens)
82
- - `YYYY-MM-DD`: Dated folder for that day's sessions
83
- - `N`: Session number for that day
84
-
85
- ## What Goes in a Checkpoint?
86
-
87
- A good checkpoint includes:
88
-
89
- - **Session goal** - What we set out to accomplish
90
- - **Accomplishments** - Specific items completed
91
- - **Files changed** - All created/modified files
92
- - **Key decisions** - Why we chose this approach
93
- - **Implementation details** - How it works
94
- - **Testing status** - What's tested and passing
95
- - **Next steps** - Clear actions for next session
96
- - **AI context** - Detailed context for continuing
97
-
98
- See [session-checkpoint-template.md](templates/session-checkpoint-template.md) for full structure.
99
-
100
- ## Best Practices
101
-
102
- ✅ **Do:**
103
- - Create checkpoints at end of every session
104
- - Be specific and detailed
105
- - Document key decisions and reasoning
106
- - Provide clear next steps
107
- - Include enough context for AI to continue
108
-
109
- ❌ **Don't:**
110
- - Skip checkpoint creation
111
- - Be vague ("worked on stuff")
112
- - Forget to list all file changes
113
- - Leave out decision rationale
114
-
115
- ---
116
-
117
- **Remember:** Good checkpoints enable seamless collaboration between developers and AI agents.
@@ -1,9 +0,0 @@
1
- Great plan! Let's proceed step by step.
2
-
3
- Before implementing each component:
4
- 1. Tell me what you're about to do
5
- 2. Explain WHY we're doing it this way
6
- 3. Explain HOW it will work
7
- 4. Then implement it
8
-
9
- Let's start with {FIRST_COMPONENT_FROM_PLAN}.