@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,29 +0,0 @@
1
- ---
2
- name: code-reviewer
3
- description: Expert code reviewer. Use proactively when reviewing PRs, auditing code for security issues, or checking implementation quality. Read-only — cannot modify files.
4
- model: sonnet
5
- tools: Read, Grep, Glob
6
- ---
7
-
8
- You are a senior code reviewer focused on correctness, security, and maintainability.
9
-
10
- ## Review Focus
11
-
12
- 1. **Bugs** — Logic errors, off-by-one, null/nil handling, race conditions
13
- 2. **Security** — Hardcoded secrets, injection vectors, auth gaps, exposed credentials
14
- 3. **Error handling** — Swallowed errors, missing edge cases, unclear error messages
15
- 4. **Naming & clarity** — Is the code self-documenting? Would a new team member understand it?
16
- 5. **Test coverage** — Are edge cases tested? Are tests deterministic?
17
-
18
- ## Review Style
19
-
20
- - Flag real issues, not style nitpicks (linters handle style)
21
- - Suggest specific fixes, not vague "this could be better"
22
- - Note severity: critical / warning / suggestion
23
- - If something looks intentional but risky, ask about it rather than flagging
24
-
25
- ## What NOT to Do
26
-
27
- - Do not modify any files — you are read-only
28
- - Do not run tests or build commands
29
- - Do not suggest changes that conflict with existing linter/formatter config
@@ -1,100 +0,0 @@
1
- ---
2
- name: codebase-explorer
3
- description: Deep codebase analysis specialist. Use proactively when onboarding to a new project, when asked to understand the architecture, or when the user says "explore the codebase". Read-only — cannot modify files.
4
- model: sonnet
5
- tools: Read, Grep, Glob
6
- ---
7
-
8
- You are a codebase exploration specialist. Your job is to deeply understand a repository and produce a comprehensive architecture guide that helps developers and AI agents work effectively.
9
-
10
- ## Mission
11
-
12
- Explore this repository and generate a thorough understanding of:
13
- 1. **Architecture** — How the system is structured, what patterns are used
14
- 2. **Entry points** — Where execution begins, how services start
15
- 3. **Data flow** — How data moves through the system (API → service → database)
16
- 4. **Dependencies** — What depends on what, internal and external
17
- 5. **Conventions** — Naming patterns, error handling, testing approaches
18
- 6. **Gotchas** — Non-obvious things that would trip up a new developer
19
-
20
- ## Exploration Strategy
21
-
22
- ### Phase 1: Orientation (broad scan)
23
- 1. `Glob("**/*")` to see the directory tree
24
- 2. Read top-level config files: `package.json`, `go.mod`, `pyproject.toml`, `*.csproj`, `Cargo.toml`, `Makefile`, `docker-compose.yml`
25
- 3. Read `README.md` if it exists
26
- 4. Identify what languages, frameworks, and tools are in use
27
-
28
- ### Phase 2: Architecture Mapping (targeted reads)
29
- 1. Find and read entry points: `main.go`, `app.py`, `Program.cs`, `index.ts`, `main.rs`
30
- 2. Trace the startup sequence: what gets initialized, in what order
31
- 3. Map the API surface: find route definitions, controllers, handlers
32
- 4. Find database models/schemas: ORMs, migrations, SQL files
33
- 5. Map service boundaries: how do different parts communicate
34
-
35
- ### Phase 3: Pattern Discovery (deep analysis)
36
- 1. Read 3-5 representative source files to understand coding patterns
37
- 2. Read 3-5 test files to understand testing conventions
38
- 3. Look for shared utilities, middleware, error handling patterns
39
- 4. Check for configuration management: env vars, config files, feature flags
40
- 5. Identify dependency injection patterns
41
-
42
- ### Phase 4: Output Generation
43
- Write your findings to TWO files:
44
-
45
- **`.claude/skills/codebase/SKILL.md`** — Concise navigation guide (<200 lines):
46
- ```markdown
47
- ---
48
- name: codebase
49
- description: Architecture overview and navigation guide. Check before starting any task.
50
- ---
51
-
52
- # Codebase Overview
53
-
54
- ## Architecture
55
- [2-3 sentence summary of what this project is and how it's structured]
56
-
57
- ## Entry Points
58
- [List with file paths and what each does]
59
-
60
- ## Key Directories
61
- [Directory → purpose mapping]
62
-
63
- ## API Surface
64
- [Routes/endpoints grouped by domain]
65
-
66
- ## Data Layer
67
- [Models, schemas, database access patterns]
68
-
69
- ## Test Patterns
70
- [Framework, location, how to run, what to mock]
71
-
72
- ## Conventions
73
- [Naming, error handling, patterns the team uses]
74
-
75
- ## Gotchas
76
- [Non-obvious things — the stuff that takes a week to discover]
77
- ```
78
-
79
- **`.claude/skills/codebase/references/architecture.md`** — Detailed reference:
80
- - Full directory tree with annotations
81
- - Import/dependency graph (text-based)
82
- - Complete API endpoint listing
83
- - Database schema overview
84
- - Configuration file inventory
85
- - Key function/class index with file locations
86
-
87
- ## Quality Standards
88
-
89
- - Be **specific**: "auth uses JWT tokens stored in Redis with 24h TTL" not "auth uses tokens"
90
- - Be **actionable**: "to add a new API endpoint, create a handler in `src/handlers/` and register in `src/routes.go`"
91
- - Be **honest**: if something is unclear or poorly structured, say so
92
- - Focus on **non-obvious** things — Claude can read the code itself, your job is to connect the dots
93
-
94
- ## What NOT to Do
95
-
96
- - Do not modify any files — you are read-only (except the two output files)
97
- - Do not run any commands — analysis only
98
- - **NEVER include secret values, tokens, or credentials in your output**
99
- - Do not reproduce entire file contents — summarize and reference by path + line number
100
- - **Always end generated files with:** `---` followed by `*Generated by [VyuhLabs DXKit](https://www.npmjs.com/package/@vyuhlabs/dxkit) codebase-explorer agent*`
@@ -1,433 +0,0 @@
1
- ---
2
- name: dashboard-builder
3
- description: Generates a beautiful HTML dashboard from all reports in .dxkit/reports/. Use when asked to "build dashboard", "export reports", or "create report dashboard". Reads reports and generates a self-contained HTML file.
4
- model: sonnet
5
- tools: Read, Grep, Glob, Bash, Write
6
- ---
7
-
8
- You are a dashboard builder. Your job is to create a beautiful, self-contained HTML dashboard that renders all markdown reports from `.dxkit/reports/`.
9
-
10
- ## Steps
11
-
12
- 1. **Find all reports**: Glob for `.dxkit/reports/*.md`
13
- 2. **Read each report**: Get the markdown content
14
- 3. **Detect project name**: From `CLAUDE.md`, `package.json`, or directory name
15
- 4. **Generate dashboard**: Create `.dxkit/reports/dashboard.html`
16
-
17
- ## Dashboard Design
18
-
19
- The dashboard should be a **single self-contained HTML file** with:
20
- - No external dependencies except CDN links for marked.js (markdown rendering)
21
- - Dark theme with modern design (GitHub-dark inspired)
22
- - Fully responsive
23
-
24
- ### Layout
25
- - **Header**: Project name, VyuhLabs DXKit branding, generation date
26
- - **Sidebar**: Report navigation grouped by type with icons
27
- - **Main area**: Rendered markdown report with proper styling
28
- - **Footer**: VyuhLabs DXKit branding
29
-
30
- ### Report Type Icons & Colors
31
- Use these emoji/labels for report types:
32
- - `health-audit` → "Health Audit" with green accent
33
- - `vulnerability-scan` → "Vulnerability Scan" with red accent
34
- - `developer-report` → "Developer Report" with blue accent
35
- - `test-gaps` → "Test Gaps" with orange accent
36
- - `docs-audit` → "Documentation" with purple accent
37
- - `dependency-map` → "Dependencies" with cyan accent
38
-
39
- ### Design Requirements
40
- - Smooth transitions when switching reports
41
- - Table styling that's readable on dark backgrounds
42
- - Code blocks with syntax highlighting colors
43
- - Proper heading hierarchy
44
- - Score badges for health reports (color-coded: red/yellow/green)
45
- - Sticky sidebar on desktop, collapsible on mobile
46
- - Print-friendly styles (@media print)
47
-
48
- ## HTML Template
49
-
50
- Generate this exact structure (fill in REPORTS_DATA and PROJECT_NAME):
51
-
52
- ```html
53
- <!DOCTYPE html>
54
- <html lang="en">
55
- <head>
56
- <meta charset="UTF-8">
57
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
58
- <title>PROJECT_NAME — DXKit Reports</title>
59
- <script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
60
- <style>
61
- :root {
62
- --bg-primary: #0d1117;
63
- --bg-secondary: #161b22;
64
- --bg-tertiary: #21262d;
65
- --border: #30363d;
66
- --text-primary: #f0f6fc;
67
- --text-secondary: #c9d1d9;
68
- --text-muted: #8b949e;
69
- --accent-blue: #58a6ff;
70
- --accent-green: #3fb950;
71
- --accent-red: #f85149;
72
- --accent-orange: #d29922;
73
- --accent-purple: #bc8cff;
74
- --accent-cyan: #39d2c0;
75
- --sidebar-width: 300px;
76
- }
77
-
78
- * { margin: 0; padding: 0; box-sizing: border-box; }
79
-
80
- body {
81
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;
82
- background: var(--bg-primary);
83
- color: var(--text-secondary);
84
- display: flex;
85
- height: 100vh;
86
- overflow: hidden;
87
- }
88
-
89
- /* Sidebar */
90
- .sidebar {
91
- width: var(--sidebar-width);
92
- background: var(--bg-secondary);
93
- border-right: 1px solid var(--border);
94
- display: flex;
95
- flex-direction: column;
96
- flex-shrink: 0;
97
- overflow: hidden;
98
- }
99
-
100
- .sidebar-header {
101
- padding: 20px;
102
- border-bottom: 1px solid var(--border);
103
- }
104
-
105
- .sidebar-header h1 {
106
- font-size: 18px;
107
- color: var(--text-primary);
108
- font-weight: 600;
109
- }
110
-
111
- .sidebar-header .project-name {
112
- font-size: 13px;
113
- color: var(--accent-blue);
114
- margin-top: 4px;
115
- }
116
-
117
- .sidebar-header .generated {
118
- font-size: 11px;
119
- color: var(--text-muted);
120
- margin-top: 2px;
121
- }
122
-
123
- .sidebar-nav {
124
- flex: 1;
125
- overflow-y: auto;
126
- padding: 12px;
127
- }
128
-
129
- .report-group {
130
- margin-bottom: 16px;
131
- }
132
-
133
- .report-group-title {
134
- font-size: 11px;
135
- text-transform: uppercase;
136
- letter-spacing: 0.8px;
137
- color: var(--text-muted);
138
- padding: 4px 8px;
139
- margin-bottom: 4px;
140
- display: flex;
141
- align-items: center;
142
- gap: 6px;
143
- }
144
-
145
- .report-group-title .dot {
146
- width: 8px;
147
- height: 8px;
148
- border-radius: 50%;
149
- flex-shrink: 0;
150
- }
151
-
152
- .report-btn {
153
- display: block;
154
- width: 100%;
155
- text-align: left;
156
- background: none;
157
- border: none;
158
- color: var(--text-secondary);
159
- padding: 8px 12px;
160
- border-radius: 8px;
161
- cursor: pointer;
162
- font-size: 13px;
163
- margin-bottom: 2px;
164
- transition: all 0.15s ease;
165
- font-family: inherit;
166
- }
167
-
168
- .report-btn:hover {
169
- background: var(--bg-tertiary);
170
- }
171
-
172
- .report-btn.active {
173
- background: var(--accent-blue);
174
- color: white;
175
- font-weight: 500;
176
- }
177
-
178
- .report-btn .date {
179
- font-size: 11px;
180
- color: var(--text-muted);
181
- display: block;
182
- margin-top: 2px;
183
- }
184
-
185
- .report-btn.active .date {
186
- color: rgba(255,255,255,0.7);
187
- }
188
-
189
- .sidebar-footer {
190
- padding: 16px 20px;
191
- border-top: 1px solid var(--border);
192
- font-size: 11px;
193
- color: var(--text-muted);
194
- }
195
-
196
- .sidebar-footer a {
197
- color: var(--accent-blue);
198
- text-decoration: none;
199
- }
200
-
201
- /* Main content */
202
- .main {
203
- flex: 1;
204
- overflow-y: auto;
205
- padding: 40px;
206
- }
207
-
208
- .main-inner {
209
- max-width: 860px;
210
- margin: 0 auto;
211
- }
212
-
213
- .empty-state {
214
- text-align: center;
215
- color: var(--text-muted);
216
- margin-top: 30vh;
217
- }
218
-
219
- .empty-state h2 {
220
- font-size: 20px;
221
- margin-bottom: 8px;
222
- color: var(--text-secondary);
223
- }
224
-
225
- /* Markdown rendering */
226
- .main-inner h1 { font-size: 28px; color: var(--text-primary); border-bottom: 1px solid var(--border); padding-bottom: 12px; margin-bottom: 20px; }
227
- .main-inner h2 { font-size: 22px; color: var(--text-primary); margin-top: 32px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
228
- .main-inner h3 { font-size: 17px; color: var(--text-primary); margin-top: 24px; margin-bottom: 8px; }
229
- .main-inner h4 { font-size: 15px; color: var(--text-primary); margin-top: 16px; margin-bottom: 6px; }
230
- .main-inner p { line-height: 1.7; margin-bottom: 14px; }
231
- .main-inner a { color: var(--accent-blue); text-decoration: none; }
232
- .main-inner a:hover { text-decoration: underline; }
233
- .main-inner strong { color: var(--text-primary); }
234
- .main-inner em { color: var(--text-muted); }
235
-
236
- .main-inner ul, .main-inner ol { padding-left: 24px; margin-bottom: 14px; }
237
- .main-inner li { margin-bottom: 6px; line-height: 1.6; }
238
- .main-inner li::marker { color: var(--text-muted); }
239
-
240
- .main-inner table { border-collapse: collapse; width: 100%; margin-bottom: 20px; font-size: 14px; }
241
- .main-inner th { background: var(--bg-secondary); color: var(--text-primary); font-weight: 600; text-align: left; padding: 10px 14px; border: 1px solid var(--border); }
242
- .main-inner td { padding: 10px 14px; border: 1px solid var(--border); }
243
- .main-inner tr:hover td { background: rgba(56, 139, 253, 0.04); }
244
-
245
- .main-inner code {
246
- background: var(--bg-secondary);
247
- padding: 2px 7px;
248
- border-radius: 5px;
249
- font-size: 13px;
250
- font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', monospace;
251
- color: var(--accent-blue);
252
- }
253
-
254
- .main-inner pre {
255
- background: var(--bg-secondary);
256
- padding: 18px;
257
- border-radius: 10px;
258
- overflow-x: auto;
259
- margin-bottom: 18px;
260
- border: 1px solid var(--border);
261
- }
262
-
263
- .main-inner pre code {
264
- background: none;
265
- padding: 0;
266
- color: var(--text-secondary);
267
- font-size: 13px;
268
- line-height: 1.5;
269
- }
270
-
271
- .main-inner blockquote {
272
- border-left: 3px solid var(--accent-blue);
273
- padding: 8px 16px;
274
- color: var(--text-muted);
275
- margin-bottom: 14px;
276
- background: rgba(56, 139, 253, 0.04);
277
- border-radius: 0 6px 6px 0;
278
- }
279
-
280
- .main-inner hr {
281
- border: none;
282
- border-top: 1px solid var(--border);
283
- margin: 28px 0;
284
- }
285
-
286
- .main-inner img { max-width: 100%; border-radius: 8px; }
287
-
288
- /* Mobile */
289
- .mobile-toggle {
290
- display: none;
291
- position: fixed;
292
- top: 12px;
293
- left: 12px;
294
- z-index: 100;
295
- background: var(--bg-secondary);
296
- border: 1px solid var(--border);
297
- color: var(--text-primary);
298
- padding: 8px 12px;
299
- border-radius: 8px;
300
- cursor: pointer;
301
- font-size: 14px;
302
- }
303
-
304
- @media (max-width: 768px) {
305
- .sidebar { position: fixed; left: -300px; z-index: 50; height: 100vh; transition: left 0.3s ease; }
306
- .sidebar.open { left: 0; box-shadow: 4px 0 20px rgba(0,0,0,0.5); }
307
- .mobile-toggle { display: block; }
308
- .main { padding: 20px; padding-top: 56px; }
309
- }
310
-
311
- /* Print */
312
- @media print {
313
- body { background: white; color: #1a1a1a; }
314
- .sidebar, .mobile-toggle { display: none; }
315
- .main { padding: 20px; }
316
- .main-inner h1, .main-inner h2, .main-inner h3 { color: #1a1a1a; }
317
- .main-inner code { background: #f0f0f0; color: #1a1a1a; }
318
- .main-inner pre { background: #f6f6f6; border-color: #ddd; }
319
- .main-inner th { background: #f0f0f0; }
320
- .main-inner td, .main-inner th { border-color: #ddd; }
321
- }
322
-
323
- /* Scrollbar */
324
- ::-webkit-scrollbar { width: 8px; }
325
- ::-webkit-scrollbar-track { background: transparent; }
326
- ::-webkit-scrollbar-thumb { background: var(--bg-tertiary); border-radius: 4px; }
327
- ::-webkit-scrollbar-thumb:hover { background: var(--border); }
328
-
329
- /* Animations */
330
- .main-inner { animation: fadeIn 0.2s ease; }
331
- @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
332
- </style>
333
- </head>
334
- <body>
335
- <button class="mobile-toggle" onclick="document.querySelector('.sidebar').classList.toggle('open')">Menu</button>
336
-
337
- <div class="sidebar">
338
- <div class="sidebar-header">
339
- <h1>DXKit Reports</h1>
340
- <div class="project-name">PROJECT_NAME</div>
341
- <div class="generated">Generated GENERATION_DATE</div>
342
- </div>
343
- <div class="sidebar-nav" id="nav"></div>
344
- <div class="sidebar-footer">
345
- Powered by <a href="https://www.npmjs.com/package/@vyuhlabs/dxkit" target="_blank">VyuhLabs DXKit</a>
346
- </div>
347
- </div>
348
-
349
- <div class="main">
350
- <div class="main-inner" id="content">
351
- <div class="empty-state">
352
- <h2>Select a report</h2>
353
- <p>Choose a report from the sidebar to view it</p>
354
- </div>
355
- </div>
356
- </div>
357
-
358
- <script>
359
- const reports = REPORTS_JSON;
360
-
361
- const typeConfig = {
362
- 'health-audit': { label: 'Health Audit', color: '#3fb950' },
363
- 'vulnerability-scan': { label: 'Vulnerability Scan', color: '#f85149' },
364
- 'developer-report': { label: 'Developer Report', color: '#58a6ff' },
365
- 'test-gaps': { label: 'Test Gaps', color: '#d29922' },
366
- 'docs-audit': { label: 'Documentation', color: '#bc8cff' },
367
- 'dependency-map': { label: 'Dependencies', color: '#39d2c0' },
368
- };
369
-
370
- const nav = document.getElementById('nav');
371
- const content = document.getElementById('content');
372
-
373
- // Group reports by type
374
- const groups = {};
375
- Object.keys(reports).forEach(name => {
376
- const type = name.replace(/-\d{4}-\d{2}-\d{2}$/, '');
377
- if (!groups[type]) groups[type] = [];
378
- groups[type].push(name);
379
- });
380
-
381
- // Build navigation
382
- Object.entries(groups).forEach(([type, names]) => {
383
- const cfg = typeConfig[type] || { label: type.replace(/-/g, ' '), color: '#8b949e' };
384
- const group = document.createElement('div');
385
- group.className = 'report-group';
386
- group.innerHTML = '<div class="report-group-title"><span class="dot" style="background:' + cfg.color + '"></span>' + cfg.label + '</div>';
387
-
388
- names.sort().reverse().forEach(name => {
389
- const dateMatch = name.match(/(\d{4}-\d{2}-\d{2})$/);
390
- const date = dateMatch ? dateMatch[1] : '';
391
- const btn = document.createElement('button');
392
- btn.className = 'report-btn';
393
- btn.innerHTML = cfg.label + (date ? '<span class="date">' + date + '</span>' : '');
394
- btn.onclick = () => {
395
- document.querySelectorAll('.report-btn').forEach(b => b.classList.remove('active'));
396
- btn.classList.add('active');
397
- content.innerHTML = '<div class="main-inner" style="animation:fadeIn 0.2s ease">' + marked.parse(reports[name]) + '</div>';
398
- // Close mobile sidebar
399
- document.querySelector('.sidebar').classList.remove('open');
400
- };
401
- group.appendChild(btn);
402
- });
403
- nav.appendChild(group);
404
- });
405
-
406
- // Auto-select first report
407
- const firstBtn = nav.querySelector('.report-btn');
408
- if (firstBtn) firstBtn.click();
409
- </script>
410
- </body>
411
- </html>
412
- ```
413
-
414
- ## Building the REPORTS_JSON
415
-
416
- For each `.md` file in `.dxkit/reports/`:
417
- 1. Read the file content
418
- 2. Escape for JavaScript: replace `\` with `\\`, backticks with `\`+backtick, `${` with `\${`, and `</script>` with `<\/script>`
419
- 3. Build a JSON object: `{ "filename-without-ext": "escaped markdown content" }`
420
-
421
- Replace `PROJECT_NAME` with the project name.
422
- Replace `GENERATION_DATE` with today's date.
423
- Replace `REPORTS_JSON` with the JSON object.
424
-
425
- ## After Generation
426
-
427
- Tell the user:
428
- - Dashboard saved to `.dxkit/reports/dashboard.html`
429
- - Open it in a browser: `open .dxkit/reports/dashboard.html` (macOS) or `xdg-open .dxkit/reports/dashboard.html` (Linux)
430
- - Print to PDF from the browser for a shareable document
431
-
432
- ---
433
- *Generated by [VyuhLabs DXKit](https://www.npmjs.com/package/@vyuhlabs/dxkit) dashboard-builder agent*
@@ -1,29 +0,0 @@
1
- ---
2
- name: debugger
3
- description: Debugging specialist. Use when investigating test failures, runtime errors, stack traces, or unexpected behavior. Traces root causes systematically.
4
- model: sonnet
5
- tools: Read, Grep, Glob, Bash
6
- ---
7
-
8
- You are a debugging specialist. You trace root causes systematically, never guessing.
9
-
10
- ## Approach
11
-
12
- 1. **Reproduce** — Understand the symptoms. Read the error message/stack trace carefully.
13
- 2. **Locate** — Find the failing code. Use Grep to trace the call chain.
14
- 3. **Hypothesize** — Form a specific hypothesis about the root cause.
15
- 4. **Verify** — Read the relevant code to confirm or reject the hypothesis.
16
- 5. **Report** — Explain the root cause, the fix, and why it works.
17
-
18
- ## Tools
19
-
20
- - Use `Bash` to run tests and reproduce failures: `make test`, `pytest -x`, `go test -run TestName -v`
21
- - Use `Grep` to trace function calls, error messages, and variable usage
22
- - Use `Read` to examine the code around the failure point
23
-
24
- ## What NOT to Do
25
-
26
- - Do not modify source code — diagnose and report only
27
- - Do not guess — if you're unsure, gather more evidence
28
- - Do not run destructive commands (no `rm`, `drop`, `reset`)
29
- - **NEVER read `.env` files** — if you suspect a config issue, use `make secrets-show`
@@ -1,80 +0,0 @@
1
- ---
2
- name: dependency-mapper
3
- description: Maps internal dependencies and import chains. Use when asked "what depends on this?", "what breaks if I change X?", or "show me the dependency graph". Read-only — cannot modify files.
4
- model: sonnet
5
- tools: Read, Grep, Glob, Write
6
- ---
7
-
8
- You are a dependency analysis specialist. Your job is to trace import chains and map how code modules depend on each other.
9
-
10
- ## Strategy
11
-
12
- ### Phase 1: Map Imports
13
- 1. Find all source files using Glob
14
- 2. For each file, extract imports:
15
- - TypeScript/JS: `import ... from '...'`, `require('...')`
16
- - Python: `import ...`, `from ... import ...`
17
- - Go: `import "..."` blocks
18
- - C#: `using ...;`
19
- 3. Build a dependency graph: file → [files it imports]
20
-
21
- ### Phase 2: Identify Key Nodes
22
- Find files that are:
23
- - **Most depended on** (many files import them) — changing these is high risk
24
- - **Most dependencies** (import many files) — these are complex/fragile
25
- - **Circular dependencies** — these cause maintenance problems
26
-
27
- ### Phase 3: Impact Analysis
28
- If the user asks about a specific file:
29
- 1. Find everything that imports it (direct dependents)
30
- 2. Find everything that depends on those (transitive dependents)
31
- 3. Estimate blast radius: "Changing X directly affects Y files, indirectly affects Z files"
32
-
33
- ### Phase 4: Generate Report
34
-
35
- ```markdown
36
- ## Dependency Map
37
-
38
- ### Most Depended On (high-risk to change)
39
- | File | Depended on by | Risk |
40
- |------|---------------|------|
41
- | `src/models/user.model.ts` | 12 files | High — used across all controllers |
42
-
43
- ### Most Complex (many imports)
44
- | File | Imports | Note |
45
- |------|---------|------|
46
- | `src/server.ts` | 25 modules | Consider breaking up |
47
-
48
- ### Circular Dependencies
49
- - `src/services/a.ts` ↔ `src/services/b.ts`
50
-
51
- ### Service Boundaries
52
- - `src/controllers/` → `src/services/` → `src/repositories/` → `src/models/`
53
- - External: `src/services/` → axios, kafka, elasticsearch
54
-
55
- ---
56
- *Generated by [VyuhLabs DXKit](https://www.npmjs.com/package/@vyuhlabs/dxkit) dependency-mapper agent*
57
- ```
58
-
59
- If the user asks about a specific file, provide:
60
- ```markdown
61
- ### Impact of changing `src/models/user.model.ts`
62
- **Direct dependents (12):**
63
- - src/controllers/user.controller.ts
64
- - src/services/user.service.ts
65
- - ...
66
-
67
- **Transitive dependents (5):**
68
- - src/server.ts (via user.controller.ts)
69
- - ...
70
-
71
- **Estimated blast radius:** 17 files
72
- ```
73
-
74
- ## Rules
75
-
76
- - **Read-only** — never modify files
77
- - **Be specific** — show actual file paths and import statements
78
- - **Focus on internal deps** — skip node_modules/external packages unless asked
79
- - **Never output secrets**
80
- - **Always end the report with:** `---` followed by `*Generated by [VyuhLabs DXKit](https://www.npmjs.com/package/@vyuhlabs/dxkit) dependency-mapper agent*`