contextdevkit 1.8.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 (345) hide show
  1. package/CHANGELOG.md +592 -0
  2. package/LICENSE +21 -0
  3. package/README.md +401 -0
  4. package/docs/AGENT-PACKAGE-FORMAT.md +140 -0
  5. package/docs/ARCHITECTURE.md +258 -0
  6. package/docs/CHANGELOG.md +559 -0
  7. package/docs/CUSTOMIZING.md +211 -0
  8. package/docs/LEVELS.md +151 -0
  9. package/docs/ROADMAP.md +385 -0
  10. package/docs/SQUAD-PIPELINE-FORMAT.md +258 -0
  11. package/docs/SQUADS/agent-forge.md +65 -0
  12. package/docs/SQUADS/design-team.md +161 -0
  13. package/docs/token-economy-plan.md +135 -0
  14. package/install.mjs +273 -0
  15. package/instrucoes.md +274 -0
  16. package/package.json +46 -0
  17. package/templates/CLAUDE.md.tpl +133 -0
  18. package/templates/claude/agents/_TEMPLATE.md +52 -0
  19. package/templates/claude/agents/accessibility.md +36 -0
  20. package/templates/claude/agents/agent-architect.md +37 -0
  21. package/templates/claude/agents/architect.md +39 -0
  22. package/templates/claude/agents/code-reviewer.md +43 -0
  23. package/templates/claude/agents/code-security.md +59 -0
  24. package/templates/claude/agents/context-keeper.md +40 -0
  25. package/templates/claude/agents/devops.md +40 -0
  26. package/templates/claude/agents/eval-designer.md +40 -0
  27. package/templates/claude/agents/forge-orchestrator.md +42 -0
  28. package/templates/claude/agents/governance-officer.md +45 -0
  29. package/templates/claude/agents/growth.md +92 -0
  30. package/templates/claude/agents/infra-security.md +53 -0
  31. package/templates/claude/agents/landing-architect.md +154 -0
  32. package/templates/claude/agents/model-router.md +34 -0
  33. package/templates/claude/agents/packager.md +38 -0
  34. package/templates/claude/agents/privacy-lgpd.md +64 -0
  35. package/templates/claude/agents/product-owner.md +51 -0
  36. package/templates/claude/agents/prompt-engineer.md +33 -0
  37. package/templates/claude/agents/qa-e2e.md +52 -0
  38. package/templates/claude/agents/qa-fuzzer.md +24 -0
  39. package/templates/claude/agents/qa-integration.md +21 -0
  40. package/templates/claude/agents/qa-orchestrator.md +40 -0
  41. package/templates/claude/agents/qa-perf.md +40 -0
  42. package/templates/claude/agents/qa-unit.md +39 -0
  43. package/templates/claude/agents/rag-designer.md +54 -0
  44. package/templates/claude/agents/retention.md +85 -0
  45. package/templates/claude/agents/security.md +48 -0
  46. package/templates/claude/agents/seo-specialist.md +106 -0
  47. package/templates/claude/agents/test-engineer.md +48 -0
  48. package/templates/claude/agents/tool-designer.md +32 -0
  49. package/templates/claude/agents/ui-designer.md +37 -0
  50. package/templates/claude/agents/ux-designer.md +38 -0
  51. package/templates/claude/commands/README.md +95 -0
  52. package/templates/claude/commands/advise.md +80 -0
  53. package/templates/claude/commands/audit/analyze-code-ia-practices.md +75 -0
  54. package/templates/claude/commands/audit/audit.md +35 -0
  55. package/templates/claude/commands/audit/contract-check.md +21 -0
  56. package/templates/claude/commands/audit/deep-analysis.md +48 -0
  57. package/templates/claude/commands/audit/deps-audit.md +49 -0
  58. package/templates/claude/commands/audit/security-setup.md +35 -0
  59. package/templates/claude/commands/audit/seo-audit.md +63 -0
  60. package/templates/claude/commands/audit/tech-debt-sweep.md +35 -0
  61. package/templates/claude/commands/bug-hunt.md +42 -0
  62. package/templates/claude/commands/claude-md.md +36 -0
  63. package/templates/claude/commands/close-version.md +25 -0
  64. package/templates/claude/commands/context-refresh.md +19 -0
  65. package/templates/claude/commands/context-stats.md +15 -0
  66. package/templates/claude/commands/dashboard.md +66 -0
  67. package/templates/claude/commands/distill-apply.md +19 -0
  68. package/templates/claude/commands/distill-sessions.md +26 -0
  69. package/templates/claude/commands/fleet.md +47 -0
  70. package/templates/claude/commands/forge/forge-audit.md +16 -0
  71. package/templates/claude/commands/forge/forge-budget.md +16 -0
  72. package/templates/claude/commands/forge/forge-deprecate.md +16 -0
  73. package/templates/claude/commands/forge/forge-doctor.md +17 -0
  74. package/templates/claude/commands/forge/forge-eval.md +16 -0
  75. package/templates/claude/commands/forge/forge-fallback-test.md +17 -0
  76. package/templates/claude/commands/forge/forge-killswitch.md +17 -0
  77. package/templates/claude/commands/forge/forge-list.md +17 -0
  78. package/templates/claude/commands/forge/forge-new.md +41 -0
  79. package/templates/claude/commands/forge/forge-policy.md +16 -0
  80. package/templates/claude/commands/forge/forge-redteam.md +17 -0
  81. package/templates/claude/commands/forge/forge-refresh-matrix.md +20 -0
  82. package/templates/claude/commands/forge/forge-route.md +17 -0
  83. package/templates/claude/commands/forge/forge-show.md +16 -0
  84. package/templates/claude/commands/landing-page.md +71 -0
  85. package/templates/claude/commands/log-session.md +59 -0
  86. package/templates/claude/commands/media-gen.md +93 -0
  87. package/templates/claude/commands/new-adr.md +30 -0
  88. package/templates/claude/commands/pipeline/dev-start.md +64 -0
  89. package/templates/claude/commands/pipeline/pipeline.md +36 -0
  90. package/templates/claude/commands/pipeline/resume.md +70 -0
  91. package/templates/claude/commands/pipeline/retro.md +34 -0
  92. package/templates/claude/commands/pipeline/runs.md +63 -0
  93. package/templates/claude/commands/pipeline/ship.md +54 -0
  94. package/templates/claude/commands/pipeline/workflow.md +85 -0
  95. package/templates/claude/commands/playbook.md +27 -0
  96. package/templates/claude/commands/predictions-review.md +28 -0
  97. package/templates/claude/commands/qa/qa-signoff.md +24 -0
  98. package/templates/claude/commands/qa/scaffold-tests.md +27 -0
  99. package/templates/claude/commands/qa/test-plan.md +26 -0
  100. package/templates/claude/commands/qa/visual-test.md +42 -0
  101. package/templates/claude/commands/roadmap.md +48 -0
  102. package/templates/claude/commands/setup/aidevtool-from0.md +104 -0
  103. package/templates/claude/commands/setup/context-config.md +25 -0
  104. package/templates/claude/commands/setup/context-doctor.md +21 -0
  105. package/templates/claude/commands/setup/context-level.md +17 -0
  106. package/templates/claude/commands/setup/setupcontextdevkit.md +121 -0
  107. package/templates/claude/commands/simulate-impact.md +32 -0
  108. package/templates/claude/commands/squad.md +44 -0
  109. package/templates/claude/commands/state.md +21 -0
  110. package/templates/claude/commands/token-report.md +29 -0
  111. package/templates/claude/commands/tune-agents.md +35 -0
  112. package/templates/claude/commands/vcs/claim.md +18 -0
  113. package/templates/claude/commands/vcs/git.md +83 -0
  114. package/templates/claude/commands/vcs/release.md +15 -0
  115. package/templates/claude/commands/vcs/worktree-new.md +18 -0
  116. package/templates/claude/commands/watch.md +47 -0
  117. package/templates/contextkit/.env.example +36 -0
  118. package/templates/contextkit/CLAUDE.child.md.tpl +38 -0
  119. package/templates/contextkit/README.md +74 -0
  120. package/templates/contextkit/behaviors-examples.md +183 -0
  121. package/templates/contextkit/behaviors.md +116 -0
  122. package/templates/contextkit/best-practices.md +323 -0
  123. package/templates/contextkit/config.json +66 -0
  124. package/templates/contextkit/detectors/README.md +45 -0
  125. package/templates/contextkit/detectors/example-detector.mjs.example +25 -0
  126. package/templates/contextkit/instrucoes.md +114 -0
  127. package/templates/contextkit/memory/GLOSSARY.md +13 -0
  128. package/templates/contextkit/memory/SESSIONS.md +9 -0
  129. package/templates/contextkit/memory/WORKSPACE.md +7 -0
  130. package/templates/contextkit/memory/business-rules/_TEMPLATE.md +33 -0
  131. package/templates/contextkit/memory/decisions/0000-record-architecture-decisions.md +34 -0
  132. package/templates/contextkit/memory/decisions/_TEMPLATE.md +25 -0
  133. package/templates/contextkit/memory/predictions/.gitkeep +0 -0
  134. package/templates/contextkit/memory/roadmap.md +28 -0
  135. package/templates/contextkit/memory/sessions/.gitkeep +0 -0
  136. package/templates/contextkit/memory/workflows/.gitkeep +0 -0
  137. package/templates/contextkit/pipeline/backlog/.gitkeep +0 -0
  138. package/templates/contextkit/pipeline/conclusion/.gitkeep +0 -0
  139. package/templates/contextkit/pipeline/devpipeline.md +9 -0
  140. package/templates/contextkit/pipeline/testing/.gitkeep +0 -0
  141. package/templates/contextkit/pipeline/working/.gitkeep +0 -0
  142. package/templates/contextkit/review-protocol.md +214 -0
  143. package/templates/contextkit/runtime/config/defaults.mjs +215 -0
  144. package/templates/contextkit/runtime/config/levels.mjs +42 -0
  145. package/templates/contextkit/runtime/config/load.mjs +105 -0
  146. package/templates/contextkit/runtime/config/paths.mjs +92 -0
  147. package/templates/contextkit/runtime/config/presets.mjs +47 -0
  148. package/templates/contextkit/runtime/config/schema.mjs +88 -0
  149. package/templates/contextkit/runtime/config/settings-compose.mjs +55 -0
  150. package/templates/contextkit/runtime/git-hooks/commit-msg.mjs +55 -0
  151. package/templates/contextkit/runtime/git-hooks/pre-commit.mjs +47 -0
  152. package/templates/contextkit/runtime/git-hooks/pre-push.mjs +102 -0
  153. package/templates/contextkit/runtime/hooks/boot-context-readers.mjs +111 -0
  154. package/templates/contextkit/runtime/hooks/boot-signals.mjs +135 -0
  155. package/templates/contextkit/runtime/hooks/check-registration.mjs +228 -0
  156. package/templates/contextkit/runtime/hooks/concurrency-guard.mjs +110 -0
  157. package/templates/contextkit/runtime/hooks/ledger.mjs +231 -0
  158. package/templates/contextkit/runtime/hooks/md-extract.mjs +65 -0
  159. package/templates/contextkit/runtime/hooks/path-classification.mjs +62 -0
  160. package/templates/contextkit/runtime/hooks/safe-io.mjs +84 -0
  161. package/templates/contextkit/runtime/hooks/session-digest-core.mjs +85 -0
  162. package/templates/contextkit/runtime/hooks/session-start.mjs +248 -0
  163. package/templates/contextkit/runtime/hooks/simulate-gate.mjs +108 -0
  164. package/templates/contextkit/runtime/hooks/track-edits.mjs +154 -0
  165. package/templates/contextkit/runtime/providers/media/_adapter.mjs +120 -0
  166. package/templates/contextkit/runtime/providers/media/nano-banana.mjs +110 -0
  167. package/templates/contextkit/runtime/providers/media/veo.mjs +162 -0
  168. package/templates/contextkit/runtime/providers/review/_adapter.mjs +71 -0
  169. package/templates/contextkit/runtime/providers/review/detect.mjs +115 -0
  170. package/templates/contextkit/runtime/providers/review/gh.mjs +103 -0
  171. package/templates/contextkit/runtime/state/state-io.mjs +172 -0
  172. package/templates/contextkit/runtime/statusline.mjs +51 -0
  173. package/templates/contextkit/squads/README.md +115 -0
  174. package/templates/contextkit/squads/_BRIEFING.md.tpl +27 -0
  175. package/templates/contextkit/squads/agent-forge/README.md +69 -0
  176. package/templates/contextkit/squads/agent-forge/ROADMAP.md +108 -0
  177. package/templates/contextkit/squads/agent-forge/best-practices.md +89 -0
  178. package/templates/contextkit/squads/agent-forge/cli/forge-admin.mjs +132 -0
  179. package/templates/contextkit/squads/agent-forge/cli/forge-eval-cli.mjs +163 -0
  180. package/templates/contextkit/squads/agent-forge/cli/forge-new.mjs +97 -0
  181. package/templates/contextkit/squads/agent-forge/cli/forge-ops.mjs +177 -0
  182. package/templates/contextkit/squads/agent-forge/lib/architect.mjs +112 -0
  183. package/templates/contextkit/squads/agent-forge/lib/eval-designer.mjs +133 -0
  184. package/templates/contextkit/squads/agent-forge/lib/eval-runner.mjs +167 -0
  185. package/templates/contextkit/squads/agent-forge/lib/governance-officer.mjs +178 -0
  186. package/templates/contextkit/squads/agent-forge/lib/package-ops.mjs +101 -0
  187. package/templates/contextkit/squads/agent-forge/lib/packager.mjs +219 -0
  188. package/templates/contextkit/squads/agent-forge/lib/prompt-gen.mjs +122 -0
  189. package/templates/contextkit/squads/agent-forge/lib/rag-designer.mjs +102 -0
  190. package/templates/contextkit/squads/agent-forge/lib/router.mjs +165 -0
  191. package/templates/contextkit/squads/agent-forge/lib/tool-gen.mjs +113 -0
  192. package/templates/contextkit/squads/agent-forge/lib/yaml.mjs +47 -0
  193. package/templates/contextkit/squads/agent-forge/pipeline.yaml +65 -0
  194. package/templates/contextkit/squads/agent-forge/router/capability-matrix.json +112 -0
  195. package/templates/contextkit/squads/agent-forge/router/decision-rules.json +120 -0
  196. package/templates/contextkit/squads/agent-forge/templates/agent-package/.agentforgerc +12 -0
  197. package/templates/contextkit/squads/agent-forge/templates/agent-package/CHANGELOG.md +13 -0
  198. package/templates/contextkit/squads/agent-forge/templates/agent-package/LICENSE +5 -0
  199. package/templates/contextkit/squads/agent-forge/templates/agent-package/README.md +39 -0
  200. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/go/README.md +10 -0
  201. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/go/agent.go +14 -0
  202. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/go/go.mod +3 -0
  203. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/node/README.md +11 -0
  204. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/node/index.js +53 -0
  205. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/node/package.json +9 -0
  206. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/python/README.md +10 -0
  207. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/python/agent.py +16 -0
  208. package/templates/contextkit/squads/agent-forge/templates/agent-package/adapters/python/pyproject.toml +10 -0
  209. package/templates/contextkit/squads/agent-forge/templates/agent-package/evals/golden.jsonl +1 -0
  210. package/templates/contextkit/squads/agent-forge/templates/agent-package/evals/red-team.jsonl +3 -0
  211. package/templates/contextkit/squads/agent-forge/templates/agent-package/evals/rubric.yaml +14 -0
  212. package/templates/contextkit/squads/agent-forge/templates/agent-package/evals/run-eval.md +17 -0
  213. package/templates/contextkit/squads/agent-forge/templates/agent-package/evals/thresholds.yaml +18 -0
  214. package/templates/contextkit/squads/agent-forge/templates/agent-package/examples/basic.node.md +17 -0
  215. package/templates/contextkit/squads/agent-forge/templates/agent-package/examples/with-fallback.node.md +24 -0
  216. package/templates/contextkit/squads/agent-forge/templates/agent-package/examples/with-rag.python.md +20 -0
  217. package/templates/contextkit/squads/agent-forge/templates/agent-package/governance/audit.schema.json +23 -0
  218. package/templates/contextkit/squads/agent-forge/templates/agent-package/governance/compliance.policy.yaml +43 -0
  219. package/templates/contextkit/squads/agent-forge/templates/agent-package/governance/cost.policy.yaml +36 -0
  220. package/templates/contextkit/squads/agent-forge/templates/agent-package/governance/fallback-chain.yaml +16 -0
  221. package/templates/contextkit/squads/agent-forge/templates/agent-package/governance/quality.policy.yaml +43 -0
  222. package/templates/contextkit/squads/agent-forge/templates/agent-package/manifest.yaml +91 -0
  223. package/templates/contextkit/squads/agent-forge/templates/agent-package/prompts/system.anthropic.md +19 -0
  224. package/templates/contextkit/squads/agent-forge/templates/agent-package/prompts/system.canonical.md +25 -0
  225. package/templates/contextkit/squads/agent-forge/templates/agent-package/prompts/system.deepseek.md +21 -0
  226. package/templates/contextkit/squads/agent-forge/templates/agent-package/prompts/system.google.md +19 -0
  227. package/templates/contextkit/squads/agent-forge/templates/agent-package/prompts/system.ollama.md +21 -0
  228. package/templates/contextkit/squads/agent-forge/templates/agent-package/prompts/system.openai.md +20 -0
  229. package/templates/contextkit/squads/agent-forge/templates/agent-package/rag/config.yaml +17 -0
  230. package/templates/contextkit/squads/agent-forge/templates/agent-package/rag/index/.gitkeep +3 -0
  231. package/templates/contextkit/squads/agent-forge/templates/agent-package/rag/ingestion/chunker.config.yaml +6 -0
  232. package/templates/contextkit/squads/agent-forge/templates/agent-package/rag/ingestion/sources.yaml +8 -0
  233. package/templates/contextkit/squads/agent-forge/templates/agent-package/rag/retrieval/query-template.md +16 -0
  234. package/templates/contextkit/squads/agent-forge/templates/agent-package/rag/retrieval/rerank.config.yaml +6 -0
  235. package/templates/contextkit/squads/agent-forge/templates/agent-package/tools/adapters/anthropic.tools.json +11 -0
  236. package/templates/contextkit/squads/agent-forge/templates/agent-package/tools/adapters/deepseek.tools.json +14 -0
  237. package/templates/contextkit/squads/agent-forge/templates/agent-package/tools/adapters/google.tools.json +11 -0
  238. package/templates/contextkit/squads/agent-forge/templates/agent-package/tools/adapters/ollama.tools.json +14 -0
  239. package/templates/contextkit/squads/agent-forge/templates/agent-package/tools/adapters/openai.tools.json +14 -0
  240. package/templates/contextkit/squads/agent-forge/templates/agent-package/tools/schemas.canonical.json +25 -0
  241. package/templates/contextkit/starters/tanstack/README.md +86 -0
  242. package/templates/contextkit/starters/tanstack/index.html +12 -0
  243. package/templates/contextkit/starters/tanstack/package.json +25 -0
  244. package/templates/contextkit/starters/tanstack/src/main.tsx +40 -0
  245. package/templates/contextkit/starters/tanstack/src/router.tsx +12 -0
  246. package/templates/contextkit/starters/tanstack/src/routes/__root.tsx +10 -0
  247. package/templates/contextkit/starters/tanstack/src/routes/index.tsx +17 -0
  248. package/templates/contextkit/starters/tanstack/tsconfig.json +19 -0
  249. package/templates/contextkit/starters/tanstack/vite.config.ts +10 -0
  250. package/templates/contextkit/tools/scripts/adr-digest-core.mjs +42 -0
  251. package/templates/contextkit/tools/scripts/adr-digest.mjs +78 -0
  252. package/templates/contextkit/tools/scripts/agent-tuning.mjs +74 -0
  253. package/templates/contextkit/tools/scripts/aiso-audit.mjs +174 -0
  254. package/templates/contextkit/tools/scripts/audit-shared.mjs +129 -0
  255. package/templates/contextkit/tools/scripts/claim.mjs +133 -0
  256. package/templates/contextkit/tools/scripts/claude-md.mjs +123 -0
  257. package/templates/contextkit/tools/scripts/clean-drive.mjs +78 -0
  258. package/templates/contextkit/tools/scripts/context-config.mjs +111 -0
  259. package/templates/contextkit/tools/scripts/context-level.mjs +98 -0
  260. package/templates/contextkit/tools/scripts/context-pack.mjs +120 -0
  261. package/templates/contextkit/tools/scripts/contract-scan.mjs +186 -0
  262. package/templates/contextkit/tools/scripts/dashboard-data.mjs +198 -0
  263. package/templates/contextkit/tools/scripts/dashboard-html.mjs +215 -0
  264. package/templates/contextkit/tools/scripts/dashboard-server.mjs +129 -0
  265. package/templates/contextkit/tools/scripts/dashboard.mjs +107 -0
  266. package/templates/contextkit/tools/scripts/deep-analysis.mjs +62 -0
  267. package/templates/contextkit/tools/scripts/deps-audit.mjs +201 -0
  268. package/templates/contextkit/tools/scripts/detect-stack.mjs +164 -0
  269. package/templates/contextkit/tools/scripts/distill-detect.mjs +90 -0
  270. package/templates/contextkit/tools/scripts/doctor.mjs +165 -0
  271. package/templates/contextkit/tools/scripts/fleet.mjs +170 -0
  272. package/templates/contextkit/tools/scripts/generate-context.mjs +142 -0
  273. package/templates/contextkit/tools/scripts/gh-alerts.mjs +117 -0
  274. package/templates/contextkit/tools/scripts/git.mjs +97 -0
  275. package/templates/contextkit/tools/scripts/home.mjs +106 -0
  276. package/templates/contextkit/tools/scripts/mark-simulation.mjs +78 -0
  277. package/templates/contextkit/tools/scripts/media-gen.mjs +154 -0
  278. package/templates/contextkit/tools/scripts/pipeline-board.mjs +74 -0
  279. package/templates/contextkit/tools/scripts/pipeline-prioritize.mjs +68 -0
  280. package/templates/contextkit/tools/scripts/pipeline-session.mjs +99 -0
  281. package/templates/contextkit/tools/scripts/pipeline-validate.mjs +136 -0
  282. package/templates/contextkit/tools/scripts/pipeline.mjs +302 -0
  283. package/templates/contextkit/tools/scripts/playbook.mjs +123 -0
  284. package/templates/contextkit/tools/scripts/predictions-review.mjs +113 -0
  285. package/templates/contextkit/tools/scripts/release.mjs +60 -0
  286. package/templates/contextkit/tools/scripts/resume.mjs +114 -0
  287. package/templates/contextkit/tools/scripts/roadmap.mjs +86 -0
  288. package/templates/contextkit/tools/scripts/runs.mjs +116 -0
  289. package/templates/contextkit/tools/scripts/seo-audit.mjs +150 -0
  290. package/templates/contextkit/tools/scripts/session-digest.mjs +89 -0
  291. package/templates/contextkit/tools/scripts/session-reindex.mjs +91 -0
  292. package/templates/contextkit/tools/scripts/setup-complete.mjs +69 -0
  293. package/templates/contextkit/tools/scripts/squad-meta.mjs +23 -0
  294. package/templates/contextkit/tools/scripts/squad-pipeline-condition.mjs +192 -0
  295. package/templates/contextkit/tools/scripts/squad-pipeline.mjs +301 -0
  296. package/templates/contextkit/tools/scripts/squad.mjs +80 -0
  297. package/templates/contextkit/tools/scripts/stats.mjs +138 -0
  298. package/templates/contextkit/tools/scripts/sync-check.mjs +235 -0
  299. package/templates/contextkit/tools/scripts/tech-debt-detectors.mjs +76 -0
  300. package/templates/contextkit/tools/scripts/tech-debt-scan.mjs +164 -0
  301. package/templates/contextkit/tools/scripts/token-report.mjs +153 -0
  302. package/templates/contextkit/tools/scripts/visual-test.mjs +132 -0
  303. package/templates/contextkit/tools/scripts/watch.mjs +106 -0
  304. package/templates/contextkit/tools/scripts/workflow.mjs +136 -0
  305. package/templates/contextkit/tools/scripts/workspace-sync.mjs +220 -0
  306. package/templates/contextkit/tools/scripts/worktree-new.mjs +50 -0
  307. package/templates/contextkit/workflows/L1-static-loading.md +59 -0
  308. package/templates/contextkit/workflows/L2-session-ledger.md +86 -0
  309. package/templates/contextkit/workflows/L3-multi-session.md +80 -0
  310. package/templates/contextkit/workflows/L4-squads.md +68 -0
  311. package/templates/contextkit/workflows/L5-proactive.md +88 -0
  312. package/templates/contextkit/workflows/README.md +47 -0
  313. package/templates/contextkit/workflows/playbooks/distillation-cycle.md +74 -0
  314. package/templates/contextkit/workflows/playbooks/landing-page.md +197 -0
  315. package/templates/contextkit/workflows/playbooks/security-batch.md +68 -0
  316. package/templates/contextkit/workflows/playbooks/seo-aiso.md +288 -0
  317. package/templates/contextkit/workflows/playbooks/simulate-impact.md +83 -0
  318. package/templates/contextkit/workflows/playbooks/tanstack.md +164 -0
  319. package/templates/contextkit/workflows/playbooks/tech-debt-sweep.md +77 -0
  320. package/templates/docs/CHANGELOG.md.tpl +11 -0
  321. package/templates/gitattributes +3 -0
  322. package/templates/github/ISSUE_TEMPLATE/bug_report.md +30 -0
  323. package/templates/github/ISSUE_TEMPLATE/feature_request.md +22 -0
  324. package/templates/github/PULL_REQUEST_TEMPLATE.md +27 -0
  325. package/templates/github/dependabot.yml +27 -0
  326. package/templates/github/workflows/quality.yml +36 -0
  327. package/templates/github/workflows/security.yml +54 -0
  328. package/tools/install/cli.mjs +62 -0
  329. package/tools/install/fs.mjs +56 -0
  330. package/tools/install/git.mjs +114 -0
  331. package/tools/install/project.mjs +51 -0
  332. package/tools/install/uninstall.mjs +54 -0
  333. package/tools/integration-test-compozy.mjs +88 -0
  334. package/tools/integration-test-guards.mjs +269 -0
  335. package/tools/integration-test-tooling-agent-forge.mjs +189 -0
  336. package/tools/integration-test-tooling-pipeline.mjs +164 -0
  337. package/tools/integration-test-tooling.mjs +172 -0
  338. package/tools/integration-test.mjs +228 -0
  339. package/tools/it-helpers.mjs +60 -0
  340. package/tools/selfcheck-agent-forge-ops.mjs +107 -0
  341. package/tools/selfcheck-agent-forge.mjs +304 -0
  342. package/tools/selfcheck-config.mjs +80 -0
  343. package/tools/selfcheck-runtime.mjs +135 -0
  344. package/tools/selfcheck-source.mjs +326 -0
  345. package/tools/selfcheck.mjs +268 -0
@@ -0,0 +1,68 @@
1
+ # L4 — Squads of specialized agents
2
+
3
+ > Level 4. Solves: **"How do we stop every change from falling on a single
4
+ > generalist Claude whose monolithic context dilutes each domain's posture?"**
5
+
6
+ ## The problem
7
+
8
+ L1–L3 give one agent context and coordination. But a monolithic posture:
9
+ - accumulates rules from very different domains in one `CLAUDE.md`;
10
+ - applies the same mindset to "implement a feature" and "audit a PR against the
11
+ constitution" — different work;
12
+ - inflates the context loaded for any task.
13
+
14
+ ## The solution: squads of specialized agents
15
+
16
+ Agents are grouped into **squads** under `contextkit/squads/`, declared by a manifest
17
+ ([`contextkit/squads/README.md`](../squads/README.md)). The base squad is `devteam`
18
+ (architect, code-reviewer, context-keeper, test-engineer, …); higher levels add
19
+ `qa-team`, `security-team`, `design-team`, and more. Each agent is a stack-agnostic
20
+ **archetype** you specialize to your project.
21
+
22
+ ## Two tiers — lean executable + rich briefing
23
+
24
+ | Tier | Path | Consumed by |
25
+ | --- | --- | --- |
26
+ | Executable frontmatter (auto-load) | `.claude/agents/<name>.md` | Claude Code (the orchestrator) |
27
+ | Rich briefing (reference) | `contextkit/squads/<team>/<name>.md` | a human reading; the agent when consulted |
28
+
29
+ Keeping the briefing out of the agent file keeps the frontmatter compact — fast to
30
+ load, cheap to carry — while the depth stays one hop away. Scaffold a briefing with
31
+ `/squad brief <agent>`; see coverage with `/squad list`.
32
+
33
+ ## How squads are invoked
34
+
35
+ **Auto-dispatched** — when a task clearly falls in an agent's domain, the main Claude
36
+ delegates via `Agent(subagent_type="<name>")`. The `description` in the agent's
37
+ frontmatter drives selection. *Example: "add input validation to this route" → the
38
+ backend/service agent.*
39
+
40
+ **Manual** — in orchestration, or when a session needs a specific posture:
41
+ `Agent(subagent_type="code-reviewer", prompt="review this branch against the constitution")`.
42
+
43
+ **Delegation between agents** — each briefing has a "delegate to" section. An
44
+ implementer hands off to the data/schema specialist for a migration; `code-reviewer`
45
+ dispatches the right specialist to fix what its report found.
46
+
47
+ ## What each agent carries
48
+
49
+ 1. The slice of the **constitution** that applies to its domain.
50
+ 2. The **stack points** (libs/configs) it touches — filled per project.
51
+ 3. Domain-specific **anti-patterns** (bad vs good examples) in the briefing.
52
+ 4. **Delegation triggers** — when to hand off.
53
+
54
+ ## When to update agents
55
+
56
+ - Constitution changes → revisit `code-reviewer`'s checklist and the "forbidden"
57
+ sections of the others.
58
+ - New library adopted → add it to the relevant agent's "stack you touch".
59
+ - Anti-pattern discovered → add it to the rich briefing with an example.
60
+ - Squad reorg (merge/split agents, new squad) → an ADR + update the manifest and the
61
+ delegation tables. Use `/squad` to show, route, or grow the roster.
62
+
63
+ ## Quality criterion
64
+
65
+ After ~20 sessions using the squad, review: were delegations correct? did an agent
66
+ need to read another's briefing to continue? was any agent never invoked (a fuzzy or
67
+ redundant domain)? did any domain end up ownerless (a gap)? Feed the answers back via
68
+ `/retro` (L6).
@@ -0,0 +1,88 @@
1
+ # L5 — Proactive engineering layer
2
+
3
+ > Level 5. Solves: **"How do we turn 'architecture before syntax' from a posture
4
+ > into executable mechanism — anticipating blast radius and instrumenting code
5
+ > health as versioned artifacts?"**
6
+
7
+ ## The problem
8
+
9
+ L1–L4 give context, drift detection, multi-session coordination, and a squad. But
10
+ three frictions remain:
11
+ 1. **High-blast-radius changes land silently** — no pre-flight analysis.
12
+ 2. **The constitution is audited manually and the result vanishes in the chat** — no
13
+ persistent artifact, so debt grows unseen.
14
+ 3. **The system generates memory faster than it distills it** — ledgers and session
15
+ files accumulate; the boot payload inflates.
16
+
17
+ ## Components
18
+
19
+ ### 1. `/simulate-impact <objective>` — parallel fan-out to the squad
20
+
21
+ An architectural pre-flight before cross-domain features. It fans `Agent()` out to
22
+ the squad in parallel and aggregates a **Blast Radius Report** shown before any edit.
23
+ It persists a file in `contextkit/memory/predictions/` and marks the ledger via
24
+ `mark-simulation.mjs`. Playbook: [`playbooks/simulate-impact.md`](playbooks/simulate-impact.md).
25
+
26
+ ### 2. `/tech-debt-sweep [profile]` — audit as a versioned artifact
27
+
28
+ Runs deterministic detectors against the constitution (file-size budget, "And/Or"
29
+ naming, orphan JSDoc, framework state loops) and writes a board under
30
+ `contextkit/memory/`. Profiles are config-driven. CLI: `node
31
+ contextkit/tools/scripts/tech-debt-scan.mjs`. Playbook:
32
+ [`playbooks/tech-debt-sweep.md`](playbooks/tech-debt-sweep.md).
33
+
34
+ ### 3. Contract-drift gate — shift-left on breaking changes
35
+
36
+ `/contract-check` (`contract-scan.mjs`) compares the public surface declared by
37
+ `contractGlobs` (config) between HEAD and the baseline, flagging removed/renamed
38
+ exports without a `BREAKING CHANGE:` footer. Wire it as a CI job to fail the build.
39
+
40
+ ### 4. PreToolUse gate + staged auto-distill
41
+
42
+ - **PreToolUse gate** (`contextkit/runtime/hooks/simulate-gate.mjs`) blocks
43
+ `Edit|Write|MultiEdit` on `highRiskPaths` (config) when this session has no
44
+ `/simulate-impact` recorded in the ledger. Auditable bypass: a simulation marked
45
+ `"BYPASS: <reason>"`.
46
+ - **Staged distill** — Stage 0: `check-registration.mjs` archives old registered
47
+ ledgers (zero risk). Stage 1: `session-start.mjs` observes patterns over the last
48
+ N sessions and injects an "observed patterns" boot section **without writing to
49
+ CLAUDE.md**. Stage 2: `/distill-sessions` proposes a CLAUDE.md diff
50
+ (`.distillation-proposal.md`); `/distill-apply` applies it and records an ADR.
51
+ Playbook: [`playbooks/distillation-cycle.md`](playbooks/distillation-cycle.md).
52
+
53
+ ### 5. `contextkit/config.json` + `/context-config` — cross-cutting configuration
54
+
55
+ Replaces hardcoded allowlists, cadences, and L5 parameters. Validated by an optional
56
+ zod schema (dynamic import only — the loader stays zero-dep). Inspect/edit with
57
+ `/context-config show|set`.
58
+
59
+ ## The golden rule
60
+
61
+ > For any change touching a path in `highRiskPaths`, editing without a
62
+ > `/simulate-impact` recorded in this session's ledger is **forbidden** — not by
63
+ > convention, but by the PreToolUse gate that enforces it. Bypass requires a
64
+ > documented, deliberate act.
65
+
66
+ ## When L5 does NOT apply
67
+
68
+ - **Bug fixes** — use `/bug-hunt`; there are no feature semantics to simulate.
69
+ - **Refactor with scope locked by `/dev-start`** — the scope is the predictor.
70
+ - **String/i18n/comment/internal rename** — the sweep and contract gate cover what
71
+ matters; `/simulate-impact` explicitly declines.
72
+
73
+ ## How L5 interacts with L1–L4
74
+
75
+ | Level | Interaction |
76
+ | --- | --- |
77
+ | L1 | Root `CLAUDE.md` lists the L5 commands. |
78
+ | L2 | L5 extends the ledger schema with `simulations[]`; the PreToolUse gate reads what L2 writes. |
79
+ | L3 | Predictions and the debt board are versioned, so they survive worktrees and parallel sessions. |
80
+ | L4 | `/simulate-impact` consumes the squad **in parallel** — the first feature to fan out, multiplying the ROI of specialization. |
81
+
82
+ ## Calibration over time
83
+
84
+ `/simulate-impact` predictions get a "predicted vs actual" appendix from
85
+ `/predictions-review` (also run automatically by `/log-session`), which fills each
86
+ prediction's *Actual* section from the ledger; recurring misses refine the command's
87
+ prompts (or become an ADR). Sequential diffs of the debt board show the trend. After
88
+ enough cycles, feed the patterns into `/retro` (L6).
@@ -0,0 +1,47 @@
1
+ # contextkit/workflows — the levels (L1–L6) + playbooks
2
+
3
+ ContextDevKit's context system operates in **levels**. Each one solves a distinct
4
+ problem of humans + Claude sharing one codebase across many sessions. These docs
5
+ are the *narrative* layer — the **why** and **how it fits together** — behind the
6
+ executable hooks (`contextkit/runtime/hooks/`), slash commands (`.claude/commands/`),
7
+ and config (`contextkit/config.json`).
8
+
9
+ > These are reference docs; they never run. Behaviour lives in the hooks and
10
+ > scripts — this folder explains the design so a human (or Claude) can reason about
11
+ > it. Keep a doc in sync **in the same change** that alters its mechanism.
12
+
13
+ ## The levels
14
+
15
+ | Level | Problem it solves | Doc |
16
+ | --- | --- | --- |
17
+ | **L1** | Loading the essentials at boot without the user re-explaining. | [`L1-static-loading.md`](L1-static-loading.md) |
18
+ | **L2** | Detecting that a session touched important files but was never logged. | [`L2-session-ledger.md`](L2-session-ledger.md) |
19
+ | **L3** | Parallel sessions (one dev in many chats, or many devs) without state corruption. | [`L3-multi-session.md`](L3-multi-session.md) |
20
+ | **L4** | Domain delegation via a squad of specialized sub-agents. | [`L4-squads.md`](L4-squads.md) |
21
+ | **L5** | Turning "architecture before syntax" into executable gates (impact, debt, contracts). | [`L5-proactive.md`](L5-proactive.md) |
22
+ | **L6** | Insight, autonomy, and a learning loop on top of the L5 gates. | *capability tier — see below* |
23
+
24
+ **L6 adds no new hook** — same wiring as L5. It's a capability tier: insight
25
+ (`/context-stats`), autonomy (`/ship`), and a learning loop (`/retro` +
26
+ `/distill-sessions`). See [`docs/ROADMAP.md`](../../docs/ROADMAP.md) for the rationale.
27
+
28
+ ## Playbooks
29
+
30
+ Files in [`playbooks/`](playbooks/) describe **reusable working procedures** Claude
31
+ follows during a session. Each is the detailed *why / how to read / anti-patterns*
32
+ behind a slash command — the file in `.claude/commands/` is the operational spec;
33
+ the playbook is the judgment around it.
34
+
35
+ | Playbook | Slash command(s) | What it governs |
36
+ | --- | --- | --- |
37
+ | [`tech-debt-sweep.md`](playbooks/tech-debt-sweep.md) | `/tech-debt-sweep` | Reading the deterministic debt scan; resisting "fix it all". |
38
+ | [`simulate-impact.md`](playbooks/simulate-impact.md) | `/simulate-impact` | Pre-flight blast-radius analysis before high-risk edits. |
39
+ | [`distillation-cycle.md`](playbooks/distillation-cycle.md) | `/distill-sessions` + `/distill-apply` | Turning observed patterns into governed CLAUDE.md rules. |
40
+ | [`security-batch.md`](playbooks/security-batch.md) | `/deep-analysis` + `/deps-audit` | The recurring security sweep and how to triage it. |
41
+
42
+ ## Maintenance
43
+
44
+ - Keep each doc **lean** and under the constitution's file-size budget (280 lines).
45
+ - These are stack-agnostic on purpose. Project-specific detail belongs in a scoped
46
+ `CLAUDE.md` or an ADR, not here.
47
+ - A stale workflow doc is worse than none — update it when its mechanism changes.
@@ -0,0 +1,74 @@
1
+ # Playbook — Distillation cycle (L5 Stage 2)
2
+
3
+ > Operational: `.claude/commands/{distill-sessions,distill-apply}.md` + the Stage 2
4
+ > nudge in `check-registration.mjs`. This page is the **end-to-end flow**,
5
+ > **anti-patterns**, and **calibration**.
6
+
7
+ ## The cycle in one sentence
8
+
9
+ > Stage 1 observes silently. Stage 2 proposes (`/distill-sessions`) and applies with
10
+ > human approval (`/distill-apply`). Each applied cycle becomes an ADR.
11
+
12
+ ## Prerequisites before the first Stage 2
13
+
14
+ Do **not** run `/distill-sessions` before:
15
+ - several weeks of Stage 1 active;
16
+ - enough registered sessions to have signal;
17
+ - the boot context consistently showing the "observed patterns" section with real
18
+ data (≥ 2 entries in at least one category).
19
+
20
+ Earlier than that, Stage 2 produces speculative rules — and a bad rule applied via
21
+ ADR is costlier to remove than to avoid.
22
+
23
+ ## End-to-end flow
24
+
25
+ ```
26
+ [soak] → Stop hook counts registered sessions ≥ proposeAfterSessions → nudge suggests /distill-sessions
27
+ USER runs /distill-sessions
28
+ → observe patterns · read 5–10 session excerpts · delegate the proposal to context-keeper
29
+ → write .distillation-proposal.md (gitignored) · show the user
30
+ USER reviews (edits / removes rules)
31
+ USER runs /distill-apply (or deletes the proposal)
32
+ → create ADR "Distillation cycle X" · update the ADR index · apply the CLAUDE.md diff
33
+ → clean up the proposal · show git diff --stat
34
+ USER commits
35
+ [next cycle gated by another soak]
36
+ ```
37
+
38
+ ## What makes a good distilled rule
39
+
40
+ - **Frequency** — ≥ 3 sessions mention the same pattern.
41
+ - **Concreteness** — fits in 1–3 lines in CLAUDE.md.
42
+ - **Non-duplication** — not already in CLAUDE.md or an ADR.
43
+ - **Actionability** — the next session behaves differently because of it.
44
+ - **Mentally testable** — you can picture the error it prevents.
45
+
46
+ ## Anti-patterns
47
+
48
+ 1. **Skipping Stage 1.** Stage 1 feeds Stage 2 statistical signal; without it, Stage
49
+ 2 is an agent guessing — the very anti-pattern L5 avoids.
50
+ 2. **Applying without reading the proposal.** The propose/apply split exists to force
51
+ a read in the middle. Skipping it is applying a diff blind.
52
+ 3. **A "rule" that's really an ADR.** If it needs 50 lines to explain, it's an
53
+ architectural decision — `/new-adr`, then reference it in one line.
54
+ 4. **Back-to-back cycles.** The soak window exists so patterns are stable, not
55
+ emergent. Respect `proposeAfterSessions`.
56
+ 5. **Editing the proposal to force a rule the agent rejected.** It was rejected for a
57
+ reason (contradiction, duplication, vagueness). Ask why; if it still holds, make a
58
+ direct ADR — don't bypass the check.
59
+
60
+ ## Calibration over time
61
+
62
+ After ~5 applied cycles: audit reverts (did a rule get contradicted? refine the
63
+ prompts), audit "no-shows" (a Stage 1 pattern that never became a rule — maybe the
64
+ frequency threshold is wrong), and consider a more frequent auto-propose stage only
65
+ after the manual stage has proven itself.
66
+
67
+ ## Relation to `/log-session` and ADRs
68
+
69
+ | Event | Artifact | Lifecycle |
70
+ | --- | --- | --- |
71
+ | `/log-session` | `contextkit/memory/sessions/<file>.md` | Immutable after creation |
72
+ | `/simulate-impact` | `contextkit/memory/predictions/<file>.md` | Updated by `/log-session` |
73
+ | `/distill-sessions` | `.distillation-proposal.md` | Temporary, gitignored |
74
+ | `/distill-apply` | `contextkit/memory/decisions/NNNN-distillation-cycle-X.md` + CLAUDE.md diff | Permanent, versioned, revertible |
@@ -0,0 +1,197 @@
1
+ # Playbook — Landing page & high-conversion sites
2
+
3
+ > Operational entry: `/landing-page` (the slash command) calls the
4
+ > `landing-architect` briefing, which reads this playbook on every
5
+ > invocation. The SEO + AISO gate (ADR-0025) is mandatory — every
6
+ > public surface goes through `seo-specialist` before this playbook's
7
+ > visual recommendations apply.
8
+ >
9
+ > Authority: [ADR-0023](../../memory/decisions/0023-landing-page-and-conversion-posture.md). Freshness: package recommendations dated **2026-06-02** — re-evaluate quarterly.
10
+
11
+ ## Why this playbook exists
12
+
13
+ The current generation of AI-generated landing pages has a uniform
14
+ look: gradient hero, three feature cards, three-tier pricing,
15
+ testimonial slider, FAQ accordion, newsletter signup. A savvy visitor
16
+ recognises the pattern in under three seconds, and recognition reads as
17
+ "AI-built" — which reads as "low effort" — which costs conversion on
18
+ the same page that was supposed to convert. This playbook is the kit's
19
+ explicit refusal of that pattern and its substitute.
20
+
21
+ ## Folds — the strategic minimum
22
+
23
+ | Folds | Use when | Cost of more |
24
+ |---|---|---|
25
+ | **3 (min)** — hero · proof · CTA | utility tool, single-feature, free product with one job-to-be-done | adding more is "while we're here" — every extra fold is friction |
26
+ | **5–7 (ideal, SaaS)** — hero · problem · solution · social proof · pricing/CTA · FAQ · footer-CTA | most SaaS landing pages | beyond 7, recall + scroll-depth fall off; pick the fight you actually need |
27
+ | **9 (max recommended)** — adds: how it works · integrations · founder note | high-ticket B2B where the deal needs more context | beyond 9 you are writing a sales letter; that is a different format |
28
+
29
+ **Per-fold rule, non-negotiable:**
30
+
31
+ - **One message.** One thing the visitor should take away.
32
+ - **One action.** One next step that fold invites.
33
+ - **One proof.** When you make a claim, one concrete artefact that
34
+ makes it credible (a number, a quote, a logo, a screenshot — never
35
+ three "as featured in" rows).
36
+
37
+ A fold that does not pass all three is the section to cut.
38
+
39
+ ## Above the fold (the only fold that exists at first)
40
+
41
+ Hard rules:
42
+
43
+ - **Value prop ≤ 8 words.** If it does not fit, the message is not
44
+ sharp yet. "X for Y" / "The Z that does W" / "Verb + outcome" are
45
+ the shapes that work. Refuse: "Solutions for the modern enterprise",
46
+ "AI-powered platform for the future of work", "Empower your team to
47
+ do more with less" — all dead.
48
+ - **One concrete next action.** Not "Learn more" + "See pricing" +
49
+ "Watch demo" all weighted equally — that is paralysis. Pick the
50
+ *next* action the visitor's funnel state implies, give it visual
51
+ weight, demote the rest to text links.
52
+ - **No second-guessing in the headline.** "We help teams" / "We
53
+ believe" / "We're on a mission" — refuse. The reader does not care
54
+ about you yet; they care about themselves.
55
+
56
+ ## Anti-Lovable refusals (cookie-cutter patterns the playbook rejects)
57
+
58
+ Each row: the smell, why it is wrong, the substitute.
59
+
60
+ | Cookie-cutter | Why it dies | Substitute |
61
+ |---|---|---|
62
+ | Gradient purple-pink hero with centred title + "Get Started" button | recognised in 3 s as AI-generated; signals low effort | editorial layout: a strong point of view in the headline, asymmetric grid, real imagery — Veo/Nano Banana hero (ADR-0024) of the *actual* product or domain |
63
+ | Three feature cards in a row with icon + 2-line description | tells nothing; the icons are decorative; the descriptions are generic | one feature shown in context (screenshot + 1-sentence outcome), repeated 2–3 times, each tied to a real user moment |
64
+ | Three-tier pricing table (Basic / Pro / Enterprise) as default | most products do not have three tiers; the table is performative | start with one price + a "is this for me?" decision tree; if multi-tier, lay out as recommendation engine ("for teams of X → plan Y"), not table |
65
+ | Testimonial slider at the bottom | sliders hide content; visitors do not interact with them | in-context quotes *next to the feature they validate* + a single hero testimonial above the fold with a real photo |
66
+ | FAQ accordion at the bottom | hidden by default; never read; useless for AISO | FAQ as scannable Q&A headings near the relevant section + `FAQPage` JSON-LD schema for AISO (ADR-0025) |
67
+ | Full-width newsletter signup in the footer | nobody signs up for a newsletter from a landing page in 2026 | offer one specific resource (a guide, a calculator, a template) gated by an email — earned, not begged |
68
+ | Generic stock photos of people at laptops | reads as fake; everyone uses the same Unsplash bucket | real product screenshots, custom illustrations, or Veo/Nano Banana renders of the *domain* (ADR-0024) |
69
+ | `Inter` font, `Heroicons` icons, `tailwindui.com` patterns | the "AI tells" of 2026 — recognised instantly | pair a display face (e.g. Fraunces / Schibsted Grotesk / Migra) with a clean body (e.g. Geist / SF Pro Web fallback). Lucide or hand-rolled SVG for icons. |
70
+
71
+ ## Package recommendations — by concern (dated 2026-06-02)
72
+
73
+ Refresh quarterly. A recommendation that no longer holds gets replaced
74
+ via an ADR-0023 amendment.
75
+
76
+ ### Framework (rendering — load-bearing for SEO/AISO)
77
+
78
+ | Pick | When |
79
+ |---|---|
80
+ | **Astro** (recommended default) | content-driven landing page, marketing site, blog. SSG by default, islands for interactivity, zero JS shipped for static parts. Indexable by default. |
81
+ | **Next.js App Router** (RSC) | landing page is part of a larger Next app; team already runs Next. Heavier than Astro for pure marketing pages but ergonomically familiar. |
82
+ | **Nuxt** | same shape as Next for Vue teams. |
83
+ | **SvelteKit** | same shape as Next for Svelte teams. |
84
+ | **Plain Vite + React** | **refused** for a landing page. The empty `<div id="root">` SSR payload fails the indexability gate (ADR-0025). Use Astro instead. |
85
+
86
+ ### Styling
87
+
88
+ | Pick | Notes |
89
+ |---|---|
90
+ | **Tailwind CSS** + **CSS custom properties for tokens** | the unopinionated default. Tokens via `:root { --color-primary: ... }` and Tailwind's `theme.extend` — never raw hex literals in components. |
91
+ | **Material UI, Chakra, NextUI** | **refused as defaults** — too generic; turn every product into the same product. Pick if the design team explicitly wants the trade-off. |
92
+ | **CSS-in-JS (Emotion, styled-components)** | fine technically; pays a runtime cost on every render. Prefer Tailwind for landing pages. |
93
+
94
+ ### Animation
95
+
96
+ | Pick | When |
97
+ |---|---|
98
+ | **Motion** (formerly Framer Motion) | React/Vue interactions. The default. |
99
+ | **Lenis** | smooth scroll. Adds polish at zero cost for users who prefer reduced motion (respects `prefers-reduced-motion`). |
100
+ | **GSAP** | complex sequenced animations (scroll-driven, sequenced timelines). Pay the licence if commercial. |
101
+ | **View Transitions API** | route transitions, expanding cards. Astro + Next + Nuxt all wire it up. |
102
+
103
+ ### Typography
104
+
105
+ | Pick | Notes |
106
+ |---|---|
107
+ | **Fontsource** | self-host any Google Font. No `<link>` to fonts.googleapis.com (GDPR + performance). |
108
+ | **`@next/font` / Astro Fonts** | same, framework-native. |
109
+ | **`Inter` as the only face** | **refused as default** — became the Helvetica of 2025; signals "AI-built". Pair a display face with a clean body. |
110
+
111
+ ### Icons
112
+
113
+ | Pick | Notes |
114
+ |---|---|
115
+ | **Lucide** | clean, consistent, tree-shakeable. The default. |
116
+ | **Hand-rolled SVG** | when the brand justifies it. |
117
+ | **Heroicons** | **refused as default** — too tied to Tailwind UI templates. |
118
+
119
+ ### Forms
120
+
121
+ | Pick | Notes |
122
+ |---|---|
123
+ | **react-hook-form + zod** | unopinionated, type-safe, zero re-render cost. |
124
+ | **Form backend**: **Formspree**, **Convex**, or a server route. Pick by what the rest of the project uses. |
125
+
126
+ ### Analytics
127
+
128
+ | Pick | Notes |
129
+ |---|---|
130
+ | **Plausible** | privacy-first, GDPR-OK, lightweight (1 KB script). RUM-friendly for Core Web Vitals. The default. |
131
+ | **Vercel Analytics** | if already on Vercel. Web Vitals included. |
132
+ | **GA4** | **refused as default** — heavy, ugly DX, GDPR-fragile. Pick when the stakeholder requires it. |
133
+
134
+ ### Experimentation
135
+
136
+ | Pick | Notes |
137
+ |---|---|
138
+ | **GrowthBook** | self-hostable, OSS, feature flags + A/B. The kit's recommended option (user preference recorded in memory). |
139
+ | **PostHog** | if already running PostHog for product analytics. |
140
+
141
+ ### Imagery & video
142
+
143
+ | Pick | Notes |
144
+ |---|---|
145
+ | **`/media-gen`** (the kit) | Veo for video, Nano Banana for image — ADR-0024. Domain-specific renders instead of stock. |
146
+ | **Unsplash API** | placeholders while iterating. Replace before launch. |
147
+
148
+ ## Performance budget (Core Web Vitals are a ranking signal)
149
+
150
+ Targets:
151
+
152
+ - **LCP < 2.5 s** (Largest Contentful Paint)
153
+ - **INP < 200 ms** (Interaction to Next Paint — replaced FID)
154
+ - **CLS < 0.1** (Cumulative Layout Shift)
155
+ - **First-fold JS < 100 kB compressed**
156
+
157
+ Measure with:
158
+
159
+ - **PageSpeed Insights** during development
160
+ - **Lighthouse CI** on every PR
161
+ - **Plausible** or **Vercel Analytics** for real-user metrics post-launch
162
+
163
+ A landing page that fails any of these in lab measurement is a refusal
164
+ on this playbook + a finding in `seo-audit.mjs`.
165
+
166
+ ## Indexability gate (cross-link)
167
+
168
+ Every public route the user wants indexed goes through
169
+ [`seo-aiso.md`](seo-aiso.md) before this playbook's visual
170
+ recommendations apply. The gate refuses:
171
+
172
+ - Plain client-rendered SPAs (no SSR/SSG).
173
+ - Pages with `<title>` set in JS.
174
+ - Routes missing `<link rel="canonical">`.
175
+ - Sites without `sitemap.xml`, `robots.txt`, or `llms.txt` at the root.
176
+
177
+ The override path is a project-local ADR explicitly carving out the
178
+ surface (e.g. "internal admin tool — no SEO needed").
179
+
180
+ ## Freshness protocol
181
+
182
+ Package recommendations decay. This playbook's rec table carries a
183
+ date (top of the file). When that date is more than 90 days old,
184
+ `seo-specialist` and `landing-architect` are licensed to override the
185
+ rec inline with a one-line note, and an amendment ADR is filed if the
186
+ override would be permanent.
187
+
188
+ ## When this playbook does NOT apply
189
+
190
+ - **Internal tools / admin dashboards** — no indexability gate, no
191
+ conversion focus. Use `ui-designer` + `ux-designer` directly.
192
+ - **Documentation sites** — different posture; SSG-by-default is the
193
+ same but the playbook's hero / fold rules do not apply. Use a docs-
194
+ specific frame (Astro Starlight, Nextra, Docusaurus).
195
+ - **Web apps with a marketing wrapper** — the marketing page follows
196
+ this playbook; the app inside does not. Keep them on separate
197
+ routes / subdomains so the SEO posture is unambiguous.
@@ -0,0 +1,68 @@
1
+ # Playbook — Security batch (recurring security sweep)
2
+
3
+ > Operational specs: [`.claude/commands/deep-analysis.md`](../../../.claude/commands/deep-analysis.md)
4
+ > and [`.claude/commands/deps-audit.md`](../../../.claude/commands/deps-audit.md).
5
+ > This page is the **why**, the **recurring rhythm**, and how to **triage** the output.
6
+
7
+ ## Why it exists
8
+
9
+ Security review tends to happen reactively — after an incident, or never. A *batch*
10
+ turns it into a scheduled, artifact-producing sweep, so risk is found before it ships
11
+ and the findings live in the backlog, not in a lost chat.
12
+
13
+ The kit makes security **active, not reactive**: a SessionStart trigger reminds you
14
+ to run `/deep-analysis` every N sessions (`securityMode.everyNSessions`, on by
15
+ default). This playbook is what you do when that reminder fires — or before a release
16
+ that touches a sensitive surface.
17
+
18
+ ## The batch, in order
19
+
20
+ 1. **Dependency & supply chain** — `/deps-audit`: lockfile present and respected,
21
+ versions pinned, known CVEs, license posture. Owned by the **security-team**
22
+ (`security` for AppSec, `infra-security` for IaC/cloud, `devops` for delivery).
23
+ 2. **Global sweep** — `/deep-analysis`: aggregates every deterministic scanner
24
+ (tech-debt, deps, contract) into one report, then adds judgment — a security pass,
25
+ an architecture pass, a bug pass.
26
+ 3. **Triage into the backlog** — every finding becomes a DevPipeline task
27
+ (`/pipeline`) with a severity (S1–S4) and an SLA, so nothing is "noted and
28
+ forgotten".
29
+ 4. **Promote the systemic ones to ADRs** — a recurring class of finding (not a
30
+ one-off) is a decision, not a ticket: `/new-adr`.
31
+
32
+ ## How to triage
33
+
34
+ - **Severity over volume.** One S1 (auth bypass, secret exposure, RCE) outranks
35
+ twenty nits. Sort by blast radius, not by count.
36
+ - **Trust boundaries first.** Findings at input boundaries (auth, deserialization,
37
+ external webhooks, file upload) outrank internal hygiene.
38
+ - **A scanner finding is a lead, not a verdict.** Deterministic scanners produce
39
+ false positives; confirm before filing an S1.
40
+ - **Pin the fix to an owner.** Each accepted finding → a backlog task with an owner
41
+ and an SLA, or an explicit, recorded "won't fix (why)".
42
+
43
+ ## Anti-patterns
44
+
45
+ 1. **Running the batch and never triaging.** A report nobody turns into tasks is
46
+ theatre. The deliverable is backlog items, not a markdown file.
47
+ 2. **Fixing low-severity nits while an S1 waits.** Severity ordering is the whole
48
+ point.
49
+ 3. **Suppressing a CVE by ignoring the advisory.** Upgrade, replace, or record an
50
+ accepted-risk decision with an expiry — never silently mute.
51
+ 4. **Treating every finding as an ADR.** One-offs are tickets; only the recurring,
52
+ systemic class earns an ADR.
53
+ 5. **Disabling security mode "because it's noisy".** Tune `everyNSessions` instead;
54
+ turning it off removes the signal exactly when it matters.
55
+
56
+ ## Cadence & configuration
57
+
58
+ `securityMode` lives in `contextkit/config.json` (`active`, `everyNSessions`). Tune via
59
+ `/context-config set`. Pair the batch with a release: run it before closing a version
60
+ (`/close-version`) that touched auth, crypto, dependencies, or infra.
61
+
62
+ ## Relation to other components
63
+
64
+ - **`/tech-debt-sweep`** — health vs security: the sweep's `security` profile is a
65
+ fast pre-filter; the batch is the deep pass.
66
+ - **`/simulate-impact`** — fire it before implementing a fix on a high-risk path.
67
+ - **Contract-drift gate** — a security fix that changes a public signature still
68
+ needs a `BREAKING CHANGE:` footer.