claude-code-superkit 0.0.0-stage → 1.5.3

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 (353) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +374 -2
  3. package/bin/cli.js +153 -0
  4. package/bin/inject-tokens.js +224 -0
  5. package/bin/measure-tokens.js +17 -0
  6. package/bin/superkit-counts-verify.sh +30 -0
  7. package/lib/codex.js +246 -0
  8. package/lib/docs-scaffold.js +147 -0
  9. package/lib/installer.js +499 -0
  10. package/lib/prompts.js +51 -0
  11. package/lib/settings-builder.js +51 -0
  12. package/lib/superpowers.js +99 -0
  13. package/lib/utils.js +117 -0
  14. package/lib/validator.js +84 -0
  15. package/package.json +49 -4
  16. package/packages/codex/AGENTS.md +396 -0
  17. package/packages/codex/INSTALL.md +342 -0
  18. package/packages/codex/config.toml +22 -0
  19. package/packages/codex/hooks/superkit.mjs +203 -0
  20. package/packages/codex/hooks.json +30 -0
  21. package/packages/codex/legacy-baseline.json +88 -0
  22. package/packages/codex/native-skills.txt +65 -0
  23. package/packages/codex/rules/default.rules +565 -0
  24. package/packages/codex/skills/ai-slop-cleaner/SKILL.md +44 -0
  25. package/packages/codex/skills/api-contract-sync/SKILL.md +96 -0
  26. package/packages/codex/skills/architect/SKILL.md +49 -0
  27. package/packages/codex/skills/audit-backend/SKILL.md +80 -0
  28. package/packages/codex/skills/audit-frontend/SKILL.md +82 -0
  29. package/packages/codex/skills/audit-infra/SKILL.md +87 -0
  30. package/packages/codex/skills/audit-orchestrator/SKILL.md +114 -0
  31. package/packages/codex/skills/behavioral-nudge-engine/SKILL.md +110 -0
  32. package/packages/codex/skills/benchmark/SKILL.md +49 -0
  33. package/packages/codex/skills/bot-reviewer/SKILL.md +94 -0
  34. package/packages/codex/skills/code-reviewer/SKILL.md +67 -0
  35. package/packages/codex/skills/codebase-onboarding-engineer/SKILL.md +46 -0
  36. package/packages/codex/skills/comment-rot-analyzer/SKILL.md +75 -0
  37. package/packages/codex/skills/commit-helper/SKILL.md +101 -0
  38. package/packages/codex/skills/critic/SKILL.md +56 -0
  39. package/packages/codex/skills/database-reviewer/SKILL.md +79 -0
  40. package/packages/codex/skills/debug-observer/SKILL.md +107 -0
  41. package/packages/codex/skills/dependency-checker/SKILL.md +69 -0
  42. package/packages/codex/skills/design-system-reviewer/SKILL.md +121 -0
  43. package/packages/codex/skills/dev-orchestrator/SKILL.md +304 -0
  44. package/packages/codex/skills/docs-reviewer/SKILL.md +86 -0
  45. package/packages/codex/skills/drizzle-orm-expert/SKILL.md +246 -0
  46. package/packages/codex/skills/e2e-test-generator/SKILL.md +95 -0
  47. package/packages/codex/skills/evaluator/SKILL.md +63 -0
  48. package/packages/codex/skills/frontend-perf-reviewer/SKILL.md +95 -0
  49. package/packages/codex/skills/frontend-ui-color-reviewer/SKILL.md +68 -0
  50. package/packages/codex/skills/frontend-ui-design-critic/SKILL.md +99 -0
  51. package/packages/codex/skills/frontend-ui-interaction-reviewer/SKILL.md +102 -0
  52. package/packages/codex/skills/frontend-ui-motion-reviewer/SKILL.md +85 -0
  53. package/packages/codex/skills/frontend-ui-reviewer/SKILL.md +81 -0
  54. package/packages/codex/skills/frontend-ui-typography-reviewer/SKILL.md +62 -0
  55. package/packages/codex/skills/gltf-debugging/SKILL.md +128 -0
  56. package/packages/codex/skills/go-benchmark/SKILL.md +217 -0
  57. package/packages/codex/skills/go-concurrency-reviewer/SKILL.md +113 -0
  58. package/packages/codex/skills/go-error-reviewer/SKILL.md +107 -0
  59. package/packages/codex/skills/go-grpc-patterns/SKILL.md +285 -0
  60. package/packages/codex/skills/go-modernizer/SKILL.md +111 -0
  61. package/packages/codex/skills/go-observability-reviewer/SKILL.md +121 -0
  62. package/packages/codex/skills/go-performance-reviewer/SKILL.md +112 -0
  63. package/packages/codex/skills/go-reviewer/SKILL.md +109 -0
  64. package/packages/codex/skills/go-samber-do/SKILL.md +158 -0
  65. package/packages/codex/skills/go-samber-lo/SKILL.md +178 -0
  66. package/packages/codex/skills/go-samber-oops/SKILL.md +174 -0
  67. package/packages/codex/skills/goal-verifier/SKILL.md +53 -0
  68. package/packages/codex/skills/health-checker/SKILL.md +109 -0
  69. package/packages/codex/skills/html-to-3d-texture/SKILL.md +153 -0
  70. package/packages/codex/skills/impeccable-craft/SKILL.md +101 -0
  71. package/packages/codex/skills/lint-runner/SKILL.md +85 -0
  72. package/packages/codex/skills/migrate/SKILL.md +60 -0
  73. package/packages/codex/skills/migration-reviewer/SKILL.md +88 -0
  74. package/packages/codex/skills/minimal-change-engineer/SKILL.md +44 -0
  75. package/packages/codex/skills/new-migration/SKILL.md +59 -0
  76. package/packages/codex/skills/nextjs-supabase-auth/SKILL.md +227 -0
  77. package/packages/codex/skills/output-enforcement/SKILL.md +71 -0
  78. package/packages/codex/skills/plan-checker/SKILL.md +53 -0
  79. package/packages/codex/skills/postgresql-optimization/SKILL.md +159 -0
  80. package/packages/codex/skills/pre-deploy-validator/SKILL.md +111 -0
  81. package/packages/codex/skills/presentation-reviewer/SKILL.md +88 -0
  82. package/packages/codex/skills/product-3d-lighting/SKILL.md +137 -0
  83. package/packages/codex/skills/project-architecture/SKILL.md +52 -0
  84. package/packages/codex/skills/py-reviewer/SKILL.md +100 -0
  85. package/packages/codex/skills/r3f-scene-reviewer/SKILL.md +88 -0
  86. package/packages/codex/skills/r3f-scroll-driven-3d/SKILL.md +162 -0
  87. package/packages/codex/skills/reality-checker/SKILL.md +61 -0
  88. package/packages/codex/skills/redis-patterns/SKILL.md +260 -0
  89. package/packages/codex/skills/review-orchestrator/SKILL.md +151 -0
  90. package/packages/codex/skills/rs-reviewer/SKILL.md +98 -0
  91. package/packages/codex/skills/ru-text/SKILL.md +132 -0
  92. package/packages/codex/skills/scaffold-endpoint/SKILL.md +44 -0
  93. package/packages/codex/skills/security-scanner/SKILL.md +94 -0
  94. package/packages/codex/skills/silent-failure-hunter/SKILL.md +176 -0
  95. package/packages/codex/skills/telegram-bot-builder/SKILL.md +120 -0
  96. package/packages/codex/skills/test-generator/SKILL.md +79 -0
  97. package/packages/codex/skills/test-runner/SKILL.md +101 -0
  98. package/packages/codex/skills/threejs-color-management/SKILL.md +97 -0
  99. package/packages/codex/skills/tree-generator/SKILL.md +63 -0
  100. package/packages/codex/skills/ts-reviewer/SKILL.md +90 -0
  101. package/packages/codex/skills/ui-design-reviewer/SKILL.md +89 -0
  102. package/packages/codex/skills/ui-reviewer/SKILL.md +103 -0
  103. package/packages/codex/skills/visual-reviewer/SKILL.md +85 -0
  104. package/packages/codex/skills/writing-agents/SKILL.md +165 -0
  105. package/packages/codex/skills/writing-commands/SKILL.md +173 -0
  106. package/packages/core/CLAUDE.md +118 -0
  107. package/packages/core/INTERNAL-FILES +16 -0
  108. package/packages/core/agents/ai-slop-cleaner.md +187 -0
  109. package/packages/core/agents/api-contract-sync.md +127 -0
  110. package/packages/core/agents/architect.md +205 -0
  111. package/packages/core/agents/audit-backend.md +137 -0
  112. package/packages/core/agents/audit-frontend.md +129 -0
  113. package/packages/core/agents/audit-infra.md +182 -0
  114. package/packages/core/agents/behavioral-nudge-engine.md +170 -0
  115. package/packages/core/agents/code-reviewer.md +195 -0
  116. package/packages/core/agents/codebase-onboarding-engineer.md +172 -0
  117. package/packages/core/agents/comment-rot-analyzer.md +115 -0
  118. package/packages/core/agents/critic.md +172 -0
  119. package/packages/core/agents/database-reviewer.md +201 -0
  120. package/packages/core/agents/debug-observer.md +261 -0
  121. package/packages/core/agents/dependency-checker.md +199 -0
  122. package/packages/core/agents/docs-reviewer.md +206 -0
  123. package/packages/core/agents/e2e-test-generator.md +261 -0
  124. package/packages/core/agents/evaluator.md +141 -0
  125. package/packages/core/agents/goal-verifier.md +130 -0
  126. package/packages/core/agents/health-checker.md +194 -0
  127. package/packages/core/agents/migration-reviewer.md +161 -0
  128. package/packages/core/agents/minimal-change-engineer.md +219 -0
  129. package/packages/core/agents/plan-checker.md +139 -0
  130. package/packages/core/agents/pre-deploy-validator.md +189 -0
  131. package/packages/core/agents/reality-checker.md +175 -0
  132. package/packages/core/agents/scaffold-endpoint.md +162 -0
  133. package/packages/core/agents/security-scanner.md +236 -0
  134. package/packages/core/agents/silent-failure-hunter.md +276 -0
  135. package/packages/core/agents/test-generator.md +146 -0
  136. package/packages/core/agents/tree-generator.md +141 -0
  137. package/packages/core/agents/ui-reviewer.md +172 -0
  138. package/packages/core/agents/visual-reviewer.md +211 -0
  139. package/packages/core/commands/audit.md +166 -0
  140. package/packages/core/commands/benchmark.md +130 -0
  141. package/packages/core/commands/commit.md +148 -0
  142. package/packages/core/commands/dev.md +302 -0
  143. package/packages/core/commands/docs-init.md +75 -0
  144. package/packages/core/commands/lint.md +137 -0
  145. package/packages/core/commands/migrate.md +146 -0
  146. package/packages/core/commands/new-migration.md +182 -0
  147. package/packages/core/commands/pair.md +209 -0
  148. package/packages/core/commands/review.md +195 -0
  149. package/packages/core/commands/security-scan.md +142 -0
  150. package/packages/core/commands/superkit-evolve.md +231 -0
  151. package/packages/core/commands/superkit-init.md +274 -0
  152. package/packages/core/commands/test.md +108 -0
  153. package/packages/core/commands/workflow.md +150 -0
  154. package/packages/core/docs/guide/01-getting-started.md +41 -0
  155. package/packages/core/docs-templates/README.md +33 -0
  156. package/packages/core/docs-templates/adr-template.md +62 -0
  157. package/packages/core/docs-templates/architecture/api-contracts.md +26 -0
  158. package/packages/core/docs-templates/architecture/api-reference.md +48 -0
  159. package/packages/core/docs-templates/architecture/auth-and-sessions.md +38 -0
  160. package/packages/core/docs-templates/architecture/backend-layers.md +42 -0
  161. package/packages/core/docs-templates/architecture/data-flow.md +26 -0
  162. package/packages/core/docs-templates/architecture/database-schema.md +51 -0
  163. package/packages/core/docs-templates/architecture/deployment.md +41 -0
  164. package/packages/core/docs-templates/architecture/frontend-state.md +46 -0
  165. package/packages/core/helpers/statusline.cjs +370 -0
  166. package/packages/core/hooks/CHAIN-SEMANTICS.md +84 -0
  167. package/packages/core/hooks/audit-settings-source.sh +98 -0
  168. package/packages/core/hooks/audit-trail.sh +120 -0
  169. package/packages/core/hooks/block-dangerous-git.sh +189 -0
  170. package/packages/core/hooks/bundle-import-check.sh +64 -0
  171. package/packages/core/hooks/compact-state-inject.sh +84 -0
  172. package/packages/core/hooks/config-protection.sh +68 -0
  173. package/packages/core/hooks/console-log-warning.sh +28 -0
  174. package/packages/core/hooks/context-monitor.sh +35 -0
  175. package/packages/core/hooks/dev-edit-counter.sh +59 -0
  176. package/packages/core/hooks/dev-marker-set.sh +55 -0
  177. package/packages/core/hooks/dev-required-on-commit.sh +426 -0
  178. package/packages/core/hooks/doc-check-on-commit.sh +396 -0
  179. package/packages/core/hooks/edit-streak-check.sh +63 -0
  180. package/packages/core/hooks/evolve-check.sh +78 -0
  181. package/packages/core/hooks/gateguard-pre-edit.sh +154 -0
  182. package/packages/core/hooks/gateguard-record-facts.sh +37 -0
  183. package/packages/core/hooks/intake-classifier.py +449 -0
  184. package/packages/core/hooks/lib/profile.sh +141 -0
  185. package/packages/core/hooks/loop-guard.sh +75 -0
  186. package/packages/core/hooks/migration-safety.sh +56 -0
  187. package/packages/core/hooks/plan-completion-gate.sh +61 -0
  188. package/packages/core/hooks/pre-compact-save.sh +89 -0
  189. package/packages/core/hooks/security-patterns.sh +119 -0
  190. package/packages/core/hooks/session-context-restore.sh +76 -0
  191. package/packages/core/hooks/subagent-stop-validate.sh +73 -0
  192. package/packages/core/hooks/superkit-counts-verify.sh +346 -0
  193. package/packages/core/hooks/superkit-update.sh +367 -0
  194. package/packages/core/hooks/tests/README.md +42 -0
  195. package/packages/core/hooks/tests/audit-trail-chain_test.sh +62 -0
  196. package/packages/core/hooks/tests/block-dangerous-git_test.sh +144 -0
  197. package/packages/core/hooks/tests/chain-semantics/h1.sh +11 -0
  198. package/packages/core/hooks/tests/chain-semantics/h2.sh +9 -0
  199. package/packages/core/hooks/tests/chain-semantics/h3.sh +11 -0
  200. package/packages/core/hooks/tests/chain-semantics/run-experiment.sh +65 -0
  201. package/packages/core/hooks/tests/chain-semantics/settings-experiment.json +15 -0
  202. package/packages/core/hooks/tests/counts-verify_test.sh +118 -0
  203. package/packages/core/hooks/tests/dev-required-on-commit_test.sh +207 -0
  204. package/packages/core/hooks/tests/dev-required-wip-on-main_test.sh +20 -0
  205. package/packages/core/hooks/tests/doc-check-on-commit_test.sh +122 -0
  206. package/packages/core/hooks/tests/edit-streak-check_test.sh +106 -0
  207. package/packages/core/hooks/tests/internal-manifest_test.sh +130 -0
  208. package/packages/core/hooks/tests/json-path_test.sh +108 -0
  209. package/packages/core/hooks/tests/mirror-invariants_test.sh +139 -0
  210. package/packages/core/hooks/tests/nudge-throttle_test.sh +95 -0
  211. package/packages/core/hooks/tests/profile-helper_test.sh +21 -0
  212. package/packages/core/hooks/tests/run-all.sh +47 -0
  213. package/packages/core/hooks/tests/session-key-helper_test.sh +17 -0
  214. package/packages/core/hooks/tests/superkit-update_test.sh +311 -0
  215. package/packages/core/hooks/tests/warn-visibility_test.sh +59 -0
  216. package/packages/core/hooks/user-intent-detect.sh +44 -0
  217. package/packages/core/hooks/verify-hooks.sh +69 -0
  218. package/packages/core/rules/auto-commands.md +124 -0
  219. package/packages/core/rules/coding-style.md +68 -0
  220. package/packages/core/rules/dev-workflow.md +77 -0
  221. package/packages/core/rules/documentation.md +106 -0
  222. package/packages/core/rules/frontend-aesthetics.md +53 -0
  223. package/packages/core/rules/git-workflow.md +14 -0
  224. package/packages/core/rules/security.md +29 -0
  225. package/packages/core/rules/superkit-integrity.md +114 -0
  226. package/packages/core/settings.json +229 -0
  227. package/packages/core/skills/drizzle-orm-expert/SKILL.md +260 -0
  228. package/packages/core/skills/nextjs-supabase-auth/SKILL.md +259 -0
  229. package/packages/core/skills/postgresql-optimization/SKILL.md +150 -0
  230. package/packages/core/skills/project-architecture/SKILL.md +31 -0
  231. package/packages/core/skills/project-scanner/SKILL.md +132 -0
  232. package/packages/core/skills/redis-patterns/SKILL.md +261 -0
  233. package/packages/core/skills/ru-text/SKILL.md +156 -0
  234. package/packages/core/skills/telegram-bot-builder/SKILL.md +145 -0
  235. package/packages/core/skills/writing-agents/SKILL.md +220 -0
  236. package/packages/core/skills/writing-commands/SKILL.md +176 -0
  237. package/packages/core/skills/writing-hooks/SKILL.md +335 -0
  238. package/packages/extras/bot-reviewer.md +279 -0
  239. package/packages/extras/design-system-reviewer.md +234 -0
  240. package/packages/extras/red-blue-auditor/README.md +117 -0
  241. package/packages/extras/red-blue-auditor/agent.md +128 -0
  242. package/packages/extras/red-blue-auditor/patterns/agent-config.txt +4 -0
  243. package/packages/extras/red-blue-auditor/patterns/hook-injection.txt +8 -0
  244. package/packages/extras/red-blue-auditor/patterns/mcp-risk.txt +5 -0
  245. package/packages/extras/red-blue-auditor/patterns/permission-abuse.txt +6 -0
  246. package/packages/extras/red-blue-auditor/patterns/secrets.txt +17 -0
  247. package/packages/extras/red-blue-auditor/scan.sh +88 -0
  248. package/packages/extras/skillsmp-search/SKILL.md +134 -0
  249. package/packages/frontend-3d/README.md +62 -0
  250. package/packages/frontend-3d/agents/frontend-perf-reviewer.md +164 -0
  251. package/packages/frontend-3d/agents/presentation-reviewer.md +146 -0
  252. package/packages/frontend-3d/agents/r3f-scene-reviewer.md +128 -0
  253. package/packages/frontend-3d/agents/ui-design-reviewer.md +169 -0
  254. package/packages/frontend-3d/commands/capture-screen.md +166 -0
  255. package/packages/frontend-3d/hooks/bundle-size-warn.sh +93 -0
  256. package/packages/frontend-3d/hooks/gsap-pattern-check.sh +74 -0
  257. package/packages/frontend-3d/hooks/r3f-color-check.sh +76 -0
  258. package/packages/frontend-3d/hooks/tailwind-version-guard.sh +98 -0
  259. package/packages/frontend-3d/rules/frontend-aesthetics-3d.md +81 -0
  260. package/packages/frontend-3d/rules/gsap-conventions.md +129 -0
  261. package/packages/frontend-3d/rules/threejs-conventions.md +116 -0
  262. package/packages/frontend-3d/skills/gltf-debugging/SKILL.md +145 -0
  263. package/packages/frontend-3d/skills/html-to-3d-texture/SKILL.md +183 -0
  264. package/packages/frontend-3d/skills/output-enforcement/SKILL.md +79 -0
  265. package/packages/frontend-3d/skills/product-3d-lighting/SKILL.md +166 -0
  266. package/packages/frontend-3d/skills/r3f-scroll-driven-3d/SKILL.md +209 -0
  267. package/packages/frontend-3d/skills/threejs-color-management/SKILL.md +111 -0
  268. package/packages/frontend-ui/NOTICE.md +99 -0
  269. package/packages/frontend-ui/README.md +59 -0
  270. package/packages/frontend-ui/agents/ui-color-reviewer.md +174 -0
  271. package/packages/frontend-ui/agents/ui-design-critic.md +198 -0
  272. package/packages/frontend-ui/agents/ui-interaction-reviewer.md +259 -0
  273. package/packages/frontend-ui/agents/ui-motion-reviewer.md +266 -0
  274. package/packages/frontend-ui/agents/ui-reviewer.md +251 -0
  275. package/packages/frontend-ui/agents/ui-typography-reviewer.md +222 -0
  276. package/packages/frontend-ui/hooks/tests/ui-animation-easing-check_test.sh +78 -0
  277. package/packages/frontend-ui/hooks/tests/ui-banned-fonts-check_test.sh +77 -0
  278. package/packages/frontend-ui/hooks/tests/ui-color-check_test.sh +75 -0
  279. package/packages/frontend-ui/hooks/ui-animation-easing-check.sh +86 -0
  280. package/packages/frontend-ui/hooks/ui-banned-fonts-check.sh +90 -0
  281. package/packages/frontend-ui/hooks/ui-color-check.sh +102 -0
  282. package/packages/frontend-ui/rules/color-and-contrast.md +230 -0
  283. package/packages/frontend-ui/rules/frontend-design-aesthetics.md +124 -0
  284. package/packages/frontend-ui/rules/interaction-polish.md +335 -0
  285. package/packages/frontend-ui/rules/motion-and-animation.md +283 -0
  286. package/packages/frontend-ui/rules/spatial-and-layout.md +212 -0
  287. package/packages/frontend-ui/rules/typography-guidelines.md +185 -0
  288. package/packages/frontend-ui/rules/ui-anti-patterns.md +309 -0
  289. package/packages/frontend-ui/settings.json +24 -0
  290. package/packages/frontend-ui/skills/impeccable-craft/SKILL.md +187 -0
  291. package/packages/gan/README.md +232 -0
  292. package/packages/gan/agents/gan-evaluator.md +214 -0
  293. package/packages/gan/agents/gan-generator.md +171 -0
  294. package/packages/gan/agents/gan-planner.md +206 -0
  295. package/packages/gan/rubrics/functionality.md +66 -0
  296. package/packages/gan/rubrics/ui-quality.md +77 -0
  297. package/packages/gan/skills/gan-evaluator/SKILL.md +91 -0
  298. package/packages/gan/skills/gan-generator/SKILL.md +72 -0
  299. package/packages/gan/skills/gan-planner/SKILL.md +93 -0
  300. package/packages/stack-agents/go/go-concurrency-reviewer.md +210 -0
  301. package/packages/stack-agents/go/go-error-reviewer.md +187 -0
  302. package/packages/stack-agents/go/go-modernizer.md +160 -0
  303. package/packages/stack-agents/go/go-observability-reviewer.md +185 -0
  304. package/packages/stack-agents/go/go-performance-reviewer.md +160 -0
  305. package/packages/stack-agents/go/go-reviewer.md +277 -0
  306. package/packages/stack-agents/go/references/benchmark-methodology.md +280 -0
  307. package/packages/stack-agents/go/references/channel-patterns.md +384 -0
  308. package/packages/stack-agents/go/references/cli-cobra-viper.md +190 -0
  309. package/packages/stack-agents/go/references/code-style.md +262 -0
  310. package/packages/stack-agents/go/references/context-propagation.md +317 -0
  311. package/packages/stack-agents/go/references/data-structures.md +315 -0
  312. package/packages/stack-agents/go/references/database-patterns.md +334 -0
  313. package/packages/stack-agents/go/references/design-patterns.md +411 -0
  314. package/packages/stack-agents/go/references/di-frameworks.md +146 -0
  315. package/packages/stack-agents/go/references/error-creation.md +251 -0
  316. package/packages/stack-agents/go/references/error-inspection.md +348 -0
  317. package/packages/stack-agents/go/references/error-wrapping.md +230 -0
  318. package/packages/stack-agents/go/references/gopls-driving.md +62 -0
  319. package/packages/stack-agents/go/references/goroutine-lifecycle.md +351 -0
  320. package/packages/stack-agents/go/references/graphql-patterns.md +221 -0
  321. package/packages/stack-agents/go/references/grpc-patterns.md +373 -0
  322. package/packages/stack-agents/go/references/modernize-guide.md +522 -0
  323. package/packages/stack-agents/go/references/module-management.md +191 -0
  324. package/packages/stack-agents/go/references/naming-conventions.md +176 -0
  325. package/packages/stack-agents/go/references/observability-pipeline.md +352 -0
  326. package/packages/stack-agents/go/references/performance-profiling.md +250 -0
  327. package/packages/stack-agents/go/references/refactoring-mechanics.md +127 -0
  328. package/packages/stack-agents/go/references/rest-openapi-patterns.md +160 -0
  329. package/packages/stack-agents/go/references/samber-do.md +201 -0
  330. package/packages/stack-agents/go/references/samber-libraries.md +363 -0
  331. package/packages/stack-agents/go/references/samber-lo.md +260 -0
  332. package/packages/stack-agents/go/references/samber-oops.md +200 -0
  333. package/packages/stack-agents/go/references/security-checklist.md +441 -0
  334. package/packages/stack-agents/go/references/standard-stdlib-now.md +181 -0
  335. package/packages/stack-agents/go/references/stay-updated.md +147 -0
  336. package/packages/stack-agents/go/references/structs-interfaces.md +312 -0
  337. package/packages/stack-agents/go/references/sync-primitives.md +395 -0
  338. package/packages/stack-agents/go/references/testing-patterns.md +483 -0
  339. package/packages/stack-agents/go/references/troubleshooting.md +98 -0
  340. package/packages/stack-agents/python/py-reviewer.md +194 -0
  341. package/packages/stack-agents/rust/rs-reviewer.md +188 -0
  342. package/packages/stack-agents/typescript/ts-reviewer.md +135 -0
  343. package/packages/stack-hooks/go/go-context-check-on-edit.sh +56 -0
  344. package/packages/stack-hooks/go/go-error-check-on-edit.sh +54 -0
  345. package/packages/stack-hooks/go/go-format-on-edit.sh +32 -0
  346. package/packages/stack-hooks/go/go-safety-check-on-edit.sh +54 -0
  347. package/packages/stack-hooks/go/go-vet-on-edit.sh +61 -0
  348. package/packages/stack-hooks/go/golangci-lint-on-edit.sh +54 -0
  349. package/packages/stack-hooks/python/ruff-on-edit.sh +67 -0
  350. package/packages/stack-hooks/rust/cargo-check-on-edit.sh +64 -0
  351. package/packages/stack-hooks/typescript/typecheck-on-edit.sh +76 -0
  352. package/packages/stack-rules/go/go-conventions.md +44 -0
  353. package/packages/stack-rules/go/go-safety.md +35 -0
@@ -0,0 +1,190 @@
1
+ # Go CLI Patterns (Cobra + Viper)
2
+
3
+ > Reference document for go-reviewer. Loaded on demand via Read tool.
4
+ > Upstream: https://cobra.dev · https://github.com/spf13/viper
5
+
6
+ The kubectl/docker/gh/hugo shape — a command tree with layered config — is one of the most common Go artifacts. This is review-hygiene guidance for that shape, not a tutorial.
7
+
8
+ ## Choosing the Layer
9
+
10
+ Pick the smallest tool that fits; don't reach for Cobra reflexively.
11
+
12
+ - **stdlib `flag`** — a trivial single-purpose tool with no subcommands. One binary, a handful of flags, no config file. Adding Cobra here is ceremony.
13
+ - **Cobra alone** — you need a command tree (`app sync`, `app status`, nested groups) but config is flags-and-env only, no file layering.
14
+ - **Cobra + Viper** — the production default: a command tree *plus* precedence across flags, env, and a config file. This is where the silent-failure bugs below live.
15
+
16
+ `urfave/cli` (v3) is the other mainstream framework and a fine choice; this document is cobra-first to match the kit's opinionated stack, so review Cobra unless the project already standardized on urfave.
17
+
18
+ ## Project Layout
19
+
20
+ ```
21
+ cmd/myapp/
22
+ main.go // only calls cmd.Execute(); nothing else
23
+ root.go // rootCmd + viper init + persistent flags
24
+ sync.go // one subcommand per file
25
+ status.go
26
+ internal/... // real logic lives here, not in cmd/
27
+ ```
28
+
29
+ `main.go` stays a three-line shim so the command tree is importable and testable. `root.go` owns Viper initialization; each subcommand gets its own file and registers itself onto `rootCmd` in an `init()` or an explicit builder. Business logic belongs in `internal/`, called *from* the `RunE`, never inlined into it.
30
+
31
+ ## Root Command Hygiene
32
+
33
+ **Silence the double-print.** Set both on the root command:
34
+
35
+ ```go
36
+ rootCmd := &cobra.Command{
37
+ Use: "myapp",
38
+ SilenceUsage: true, // don't dump usage on every RunE error
39
+ SilenceErrors: true, // you print the error yourself in main
40
+ }
41
+ ```
42
+
43
+ Without `SilenceUsage`, any error returned from `RunE` makes Cobra print the full usage text after your error message — noise on a real failure. With both silenced, `main` owns the final print and exit code:
44
+
45
+ ```go
46
+ func main() {
47
+ if err := cmd.Execute(); err != nil {
48
+ fmt.Fprintln(os.Stderr, "myapp:", err)
49
+ os.Exit(1)
50
+ }
51
+ }
52
+ ```
53
+
54
+ **Exit codes** are an API. Honor the conventions:
55
+
56
+ | Code | Meaning |
57
+ |------|---------|
58
+ | 0 | Success |
59
+ | 1 | Generic runtime error |
60
+ | 2 | Misuse — bad flags or arguments |
61
+ | 64–78 | `sysexits.h` (64 `EX_USAGE`, 78 `EX_CONFIG`, …) for tools that integrate with mail/init systems |
62
+ | 126 | Command found but not executable |
63
+ | 127 | Command not found |
64
+ | 128+N | Terminated by signal N (130 = SIGINT / Ctrl-C, 143 = SIGTERM) |
65
+
66
+ **stdout vs stderr.** stdout is the program's *pipeable output* (the data a caller greps or pipes into `jq`); stderr is logs, progress, and diagnostics. Never `fmt.Println` directly — write through `cmd.OutOrStdout()` and `cmd.ErrOrStderr()` so tests can capture streams and callers can redirect them independently.
67
+
68
+ **Machine vs human output.** Offer `--output json|table|plain` and default by detecting a pipe:
69
+
70
+ ```go
71
+ stat, _ := os.Stdout.Stat()
72
+ piped := (stat.Mode() & os.ModeCharDevice) == 0 // not a TTY → default to json/plain
73
+ ```
74
+
75
+ **Graceful shutdown.** Derive the root context from `signal.NotifyContext` so Ctrl-C cancels in-flight work instead of hard-killing it:
76
+
77
+ ```go
78
+ ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
79
+ defer stop()
80
+ ```
81
+
82
+ **Version embedding** via ldflags, not a hardcoded constant:
83
+
84
+ ```
85
+ go build -ldflags "-X main.version=$(git describe --tags) -X main.commit=$(git rev-parse --short HEAD)"
86
+ ```
87
+
88
+ **Testing discipline.** Drive the command through its own I/O and args, and assert on the captured buffer:
89
+
90
+ ```go
91
+ buf := new(bytes.Buffer)
92
+ cmd.SetOut(buf)
93
+ cmd.SetErr(buf)
94
+ cmd.SetArgs([]string{"sync", "--dry-run"})
95
+ err := cmd.Execute()
96
+ ```
97
+
98
+ Any code that prints via `cmd.OutOrStdout()` is now assertable; code that called `fmt.Println` is not.
99
+
100
+ ## Cobra Gotchas
101
+
102
+ **The five hooks run in this exact order:**
103
+
104
+ `PersistentPreRunE` → `PreRunE` → `RunE` → `PostRunE` → `PersistentPostRunE`
105
+
106
+ **A child's `PersistentPreRunE` REPLACES the parent's — it does not chain.** If the root sets up logging/config in `PersistentPreRunE` and a subcommand defines its own, the parent's never runs and config is silently uninitialized. Call the parent explicitly:
107
+
108
+ ```go
109
+ PersistentPreRunE: func(cmd *cobra.Command, args []string) error {
110
+ if p := cmd.Parent(); p != nil && p.PersistentPreRunE != nil {
111
+ if err := p.PersistentPreRunE(cmd, args); err != nil {
112
+ return err
113
+ }
114
+ }
115
+ return openDBConn()
116
+ },
117
+ ```
118
+
119
+ Alternatively set the package-global `cobra.EnableTraverseRunHooks = true` (Cobra 1.8+) once in `main` to chain every parent's hooks automatically — but then verify no subcommand still calls its parent manually (it would run twice).
120
+
121
+ **Always `RunE`, never `Run`.** `Run` has no error return, so its only escape is `os.Exit`/`panic` — both bypass deferred cleanup (open files, DB handles, `stop()`). `RunE` returns the error up to `Execute`, defers fire, and `main` sets the exit code.
122
+
123
+ **Validate arity with `Args`, never `len(args)` inside `RunE`.** Use `cobra.NoArgs`, `cobra.ExactArgs(n)`, `cobra.MinimumNArgs(n)`, `cobra.RangeArgs(min, max)`, or compose with `cobra.MatchAll(...)`. Cobra rejects bad input *before* `RunE` with proper usage text; a hand-rolled `len(args)` check duplicates that badly and skips the usage output.
124
+
125
+ **Build a FRESH command tree per test.** Cobra accumulates flag state across executions — a persistent flag set in one test leaks into the next. Have a `newRootCmd()` constructor and call it at the top of every test rather than reusing a package-level `rootCmd`.
126
+
127
+ ## Viper Gotchas
128
+
129
+ **Precedence, highest to lowest:** explicit `Set` > flag > env > config file > key/value store > default. Reviewers should know this order cold, because most "my config is ignored" bugs are a value winning at a higher tier than expected.
130
+
131
+ **THE ENV TRIO — the premium silent failure.** For env vars to resolve, `SetEnvPrefix` + `SetEnvKeyReplacer` + `AutomaticEnv` must *all* be wired. Miss the replacer and nested keys silently never resolve, because Viper looks up the dotted name verbatim:
132
+
133
+ ```go
134
+ // WRONG — MYAPP_DATABASE_HOST is set, but this returns ""
135
+ v.SetEnvPrefix("MYAPP")
136
+ v.AutomaticEnv()
137
+ v.GetString("database.host") // Viper searches env "MYAPP_DATABASE.HOST" (dot preserved) → miss
138
+ ```
139
+
140
+ ```go
141
+ // CORRECT — the replacer maps the dot to an underscore
142
+ v.SetEnvPrefix("MYAPP")
143
+ v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
144
+ v.AutomaticEnv()
145
+ v.GetString("database.host") // reads MYAPP_DATABASE_HOST
146
+ ```
147
+
148
+ No error, no warning — the value is just always the default. Flag every `AutomaticEnv()` that lacks a paired `SetEnvKeyReplacer`.
149
+
150
+ **`BindPFlag` timing.** Bind in `init()` or `PersistentPreRunE`, never in `RunE` — by `RunE` the earlier hooks that read config have already run, so the binding is too late to matter.
151
+
152
+ **Handle the missing-file case explicitly.** A flag/env-only run has no config file and must not crash:
153
+
154
+ ```go
155
+ if err := v.ReadInConfig(); err != nil {
156
+ var nf viper.ConfigFileNotFoundError
157
+ if !errors.As(err, &nf) {
158
+ return fmt.Errorf("read config: %w", err) // real error (bad YAML, perms)
159
+ }
160
+ // no file — fine, fall back to flags/env/defaults
161
+ }
162
+ ```
163
+
164
+ **`UnmarshalKey` over `Sub`.** Decode into a struct with `mapstructure` tags via `v.UnmarshalKey("database", &cfg)`. `v.Sub("database")` returns `nil` for a missing key, so the next method call is a nil-pointer panic.
165
+
166
+ **Isolate tests with `viper.New()`.** The package-level singleton leaks state between tests; construct a fresh `viper.New()` instance per test.
167
+
168
+ Watch-and-reload (`WatchConfig`) and remote KV backends (etcd/Consul) are out of scope; see cobra.dev.
169
+
170
+ ## Common Mistakes
171
+
172
+ | Mistake | Severity | Symptom / Fix |
173
+ |---------|----------|---------------|
174
+ | `AutomaticEnv` without `SetEnvKeyReplacer` | **CRITICAL** | Nested env keys silently never resolve — always the default. Wire the full trio. |
175
+ | `Run` instead of `RunE` | **CRITICAL** | `os.Exit`/`panic` bypass defers; leaks resources and mangles exit codes. Use `RunE`. |
176
+ | Child `PersistentPreRunE` shadows parent | **CRITICAL** | Parent setup (config, logging) never runs. Call `cmd.Parent().PersistentPreRunE` explicitly. |
177
+ | `v.Sub(key)` on a possibly-missing key | **CRITICAL** | Returns `nil` → nil-pointer panic. Use `UnmarshalKey` into a struct. |
178
+ | `ReadInConfig` error unhandled | **WARNING** | Flag/env-only runs crash on a missing file. Ignore only `ConfigFileNotFoundError` via `errors.As`. |
179
+ | Missing `SilenceUsage`/`SilenceErrors` | **WARNING** | Full usage dump on every runtime error. Silence both; print in `main`. |
180
+ | `len(args)` checks inside `RunE` | **WARNING** | Duplicates validation, skips usage text. Use `cobra.ExactArgs`/`MatchAll`. |
181
+ | `BindPFlag` called in `RunE` | **WARNING** | Too late for hooks that already read config. Bind in `init`/`PersistentPreRunE`. |
182
+ | `fmt.Println` instead of `cmd.OutOrStdout()` | **WARNING** | Unassertable in tests; breaks stream redirection. Write through the command's writers. |
183
+ | Reusing a package-level `rootCmd` across tests | **WARNING** | Cobra accumulates flag state; tests bleed. Build a fresh tree per test. |
184
+ | Diagnostics on stdout | **SUGGESTION** | Pollutes piped output. Logs → stderr, data → stdout. |
185
+
186
+ ## Further Reading
187
+
188
+ - Cobra: https://cobra.dev
189
+ - Viper: https://github.com/spf13/viper
190
+ - `sysexits.h` codes: https://man.freebsd.org/cgi/man.cgi?sysexits
@@ -0,0 +1,262 @@
1
+ # Code Style
2
+
3
+ > Reference document for go-reviewer. Loaded on demand via Read tool.
4
+
5
+ ## Formatting
6
+
7
+ `gofmt` is the canonical formatter. All Go code must be gofmt-compliant. There is no debate about brace placement, indentation, or spacing.
8
+
9
+ **Soft line length limit: ~100 characters.** Not enforced by gofmt, but improves readability. Break long lines at logical points (function arguments, method chains).
10
+
11
+ ```go
12
+ // Long function signature — break after opening paren
13
+ func (s *UserService) CreateWithNotification(
14
+ ctx context.Context,
15
+ user *User,
16
+ notifyChannels []NotifyChannel,
17
+ ) (*User, error) {
18
+
19
+ // Long function call — break at arguments
20
+ result, err := s.repo.FindByFilters(
21
+ ctx,
22
+ WithStatus(StatusActive),
23
+ WithRole(RoleAdmin),
24
+ WithPagination(offset, limit),
25
+ )
26
+ ```
27
+
28
+ ## Variable Declarations
29
+
30
+ | Context | Use | Example |
31
+ |---------|-----|---------|
32
+ | Inside function, with value | Short form `:=` | `name := "alice"` |
33
+ | Inside function, zero value needed | `var` | `var count int` |
34
+ | Package-level | `var` (never `:=`) | `var defaultTimeout = 30 * time.Second` |
35
+ | Constants | `const` | `const maxRetries = 3` |
36
+ | Multiple related | Grouped `var()` or `const()` | See below |
37
+
38
+ ```go
39
+ // Grouped declarations
40
+ var (
41
+ ErrNotFound = errors.New("not found")
42
+ ErrForbidden = errors.New("forbidden")
43
+ )
44
+
45
+ const (
46
+ maxRetries = 3
47
+ retryBackoff = 100 * time.Millisecond
48
+ )
49
+
50
+ // Inside functions — prefer short form
51
+ func process(data []byte) error {
52
+ result := parse(data) // short form with value
53
+ var accumulated []string // zero value, will append
54
+ count := 0 // short form even for zero — when immediately used
55
+ }
56
+ ```
57
+
58
+ ## Control Flow
59
+
60
+ ### Early Returns (Guard Clauses)
61
+
62
+ Always return early on error or invalid state. Never nest the happy path inside an `else`.
63
+
64
+ ```go
65
+ // CORRECT — early return, flat happy path
66
+ func (s *Service) Process(ctx context.Context, id int64) (*Result, error) {
67
+ if id <= 0 {
68
+ return nil, ErrInvalidInput
69
+ }
70
+
71
+ user, err := s.repo.FindByID(ctx, id)
72
+ if err != nil {
73
+ return nil, fmt.Errorf("Service.Process: %w", err)
74
+ }
75
+
76
+ if !user.IsActive() {
77
+ return nil, ErrInactiveUser
78
+ }
79
+
80
+ return s.transform(user), nil
81
+ }
82
+
83
+ // WRONG — unnecessary nesting
84
+ func (s *Service) Process(ctx context.Context, id int64) (*Result, error) {
85
+ if id > 0 {
86
+ user, err := s.repo.FindByID(ctx, id)
87
+ if err == nil {
88
+ if user.IsActive() {
89
+ return s.transform(user), nil
90
+ } else {
91
+ return nil, ErrInactiveUser
92
+ }
93
+ } else {
94
+ return nil, fmt.Errorf("Service.Process: %w", err)
95
+ }
96
+ } else {
97
+ return nil, ErrInvalidInput
98
+ }
99
+ }
100
+ ```
101
+
102
+ ### No Else After Return
103
+
104
+ ```go
105
+ // CORRECT
106
+ if err != nil {
107
+ return err
108
+ }
109
+ // continue with happy path
110
+
111
+ // WRONG
112
+ if err != nil {
113
+ return err
114
+ } else {
115
+ // happy path inside else
116
+ }
117
+ ```
118
+
119
+ ### Switch Over If-Else Chains
120
+
121
+ ```go
122
+ // CORRECT — switch for multiple conditions
123
+ switch {
124
+ case n < 0:
125
+ return "negative"
126
+ case n == 0:
127
+ return "zero"
128
+ case n < 100:
129
+ return "small"
130
+ default:
131
+ return "large"
132
+ }
133
+
134
+ // WRONG — long if-else chain
135
+ if n < 0 {
136
+ return "negative"
137
+ } else if n == 0 {
138
+ return "zero"
139
+ } else if n < 100 {
140
+ return "small"
141
+ } else {
142
+ return "large"
143
+ }
144
+ ```
145
+
146
+ ## Function Design
147
+
148
+ | Rule | Guideline |
149
+ |------|-----------|
150
+ | Length | < 50 lines (strongly prefer < 30) |
151
+ | Responsibility | Single — does one thing well |
152
+ | Parameters | < 5 (use options struct or functional options for more) |
153
+ | Return values | max 3 (typically value + error) |
154
+ | Named returns | Only for documentation or naked returns in short functions |
155
+ | `context.Context` | Always first parameter |
156
+ | `error` | Always last return value |
157
+
158
+ ```go
159
+ // CORRECT — focused, short, clear
160
+ func (s *Service) Activate(ctx context.Context, userID int64) error {
161
+ user, err := s.repo.FindByID(ctx, userID)
162
+ if err != nil {
163
+ return fmt.Errorf("Service.Activate: %w", err)
164
+ }
165
+
166
+ if user.Status == StatusActive {
167
+ return nil // already active, idempotent
168
+ }
169
+
170
+ user.Status = StatusActive
171
+ user.ActivatedAt = time.Now()
172
+
173
+ if err := s.repo.Update(ctx, user); err != nil {
174
+ return fmt.Errorf("Service.Activate: %w", err)
175
+ }
176
+
177
+ s.events.Publish(ctx, UserActivated{UserID: userID})
178
+ return nil
179
+ }
180
+ ```
181
+
182
+ ## Import Grouping
183
+
184
+ Three groups, separated by blank lines, in this order:
185
+
186
+ ```go
187
+ import (
188
+ // 1. Standard library
189
+ "context"
190
+ "fmt"
191
+ "net/http"
192
+
193
+ // 2. External packages
194
+ "github.com/jackc/pgx/v5"
195
+ "go.uber.org/zap"
196
+
197
+ // 3. Internal packages
198
+ "myapp/internal/domain"
199
+ "myapp/internal/repository"
200
+ )
201
+ ```
202
+
203
+ ### Import Rules
204
+
205
+ | Rule | Detail |
206
+ |------|--------|
207
+ | Blank imports | Only in `main` or `_test.go` files: `_ "net/http/pprof"` |
208
+ | Dot imports | Never: `. "testing"` — makes code unreadable |
209
+ | Alias imports | Only for conflicts: `pgxpool "github.com/jackc/pgx/v5/pgxpool"` |
210
+ | Import ordering | Alphabetical within each group (goimports handles this) |
211
+
212
+ ```go
213
+ // CORRECT — blank import in main for side effects
214
+ package main
215
+
216
+ import (
217
+ "net/http"
218
+ _ "net/http/pprof" // register pprof handlers
219
+ )
220
+
221
+ // WRONG — blank import in library code
222
+ package user
223
+
224
+ import (
225
+ _ "github.com/lib/pq" // should be in main or init package
226
+ )
227
+ ```
228
+
229
+ ## Misc Style Rules
230
+
231
+ - **No naked returns** in functions longer than ~10 lines
232
+ - **Avoid `init()`** — makes testing and reasoning harder; prefer explicit initialization
233
+ - **Comments** — exported symbols must have doc comments starting with the name: `// Service handles user operations.`
234
+ - **TODO format** — `// TODO(username): description` with context on when/why
235
+ - **Magic numbers** — extract to named constants: `const maxPageSize = 100`
236
+
237
+ ## Doc-Comment Quality
238
+
239
+ The godoc name-prefix rule above governs FORM; this governs SUBSTANCE — a doc comment can be present yet hollow, and that is still a defect. Flag these anti-patterns:
240
+
241
+ | Anti-pattern | Why it fails | Fix direction |
242
+ |--------------|--------------|---------------|
243
+ | Pure paraphrase | Restates the code in prose; adds nothing beyond what the signature already shows. | State WHY the symbol exists or the non-obvious contract it upholds. |
244
+ | Signature restatement | `// GetUser gets a user by ID` — echoes the name and parameters. | Document what the signature cannot show: errors returned, side effects, invariants. |
245
+ | Marketing vocabulary | "seamlessly", "powerful", "robust", "enterprise-grade" — subjective, unverifiable adjectives. | Delete the adjective; state the concrete behavior or guarantee. |
246
+ | Invented rationale | A "because…" the author guessed, not grounded in the code or a decision record. | Cite only rationale you can source; otherwise describe behavior, not motive. |
247
+ | Groundless future claims | "will support X", "designed to scale to…" — promises not backed by code. | Document what the code does today; drop speculative roadmap. |
248
+ | Hollow filler | "This is a helper", "Handles the logic" — words with no content. | Replace with the specific responsibility, or delete if the name already says it. |
249
+
250
+ **Writing principles:**
251
+ 1. **Why-not-What** — the code already shows what; the comment explains why, or the non-obvious contract.
252
+ 2. **Remove marketing — state facts** — no subjective adjectives; only verifiable behavior and guarantees.
253
+ 3. **Never invent rationale** — cite only rationale grounded in the code or a decision record.
254
+ 4. **Mandatory name + verb-phrase prefix** — exported symbols start with the name plus a verb phrase (`// Service handles user operations.`), per the godoc rule above.
255
+
256
+ ## When to Use
257
+
258
+ Apply these rules during any Go code review for style compliance. Flag violations as:
259
+ - **CRITICAL**: Missing error returns, deeply nested control flow (>3 levels)
260
+ - **WARNING**: Functions over 50 lines, missing doc comments on exports, else-after-return
261
+ - **SUGGESTION**: Line length over 100, unnamed constants, unnecessary named returns
262
+ - **Doc-comment quality**: hollow / paraphrase / marketing doc comments → WARNING (SUGGESTION when purely stylistic)