godpowers 0.15.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 (444) hide show
  1. package/AGENTS.md +37 -0
  2. package/CHANGELOG.md +639 -0
  3. package/INSPIRATION.md +52 -0
  4. package/LICENSE +21 -0
  5. package/README.md +232 -0
  6. package/SKILL.md +500 -0
  7. package/agents/god-archaeologist.md +139 -0
  8. package/agents/god-architect.md +92 -0
  9. package/agents/god-auditor.md +150 -0
  10. package/agents/god-browser-tester.md +144 -0
  11. package/agents/god-context-writer.md +137 -0
  12. package/agents/god-coordinator.md +138 -0
  13. package/agents/god-debt-assessor.md +132 -0
  14. package/agents/god-debugger.md +77 -0
  15. package/agents/god-deploy-engineer.md +87 -0
  16. package/agents/god-deps-auditor.md +111 -0
  17. package/agents/god-design-reviewer.md +137 -0
  18. package/agents/god-designer.md +171 -0
  19. package/agents/god-docs-writer.md +102 -0
  20. package/agents/god-executor.md +76 -0
  21. package/agents/god-explorer.md +110 -0
  22. package/agents/god-harden-auditor.md +163 -0
  23. package/agents/god-incident-investigator.md +144 -0
  24. package/agents/god-launch-strategist.md +103 -0
  25. package/agents/god-migration-strategist.md +126 -0
  26. package/agents/god-observability-engineer.md +76 -0
  27. package/agents/god-orchestrator.md +728 -0
  28. package/agents/god-org-context-loader.md +124 -0
  29. package/agents/god-planner.md +73 -0
  30. package/agents/god-pm.md +105 -0
  31. package/agents/god-quality-reviewer.md +74 -0
  32. package/agents/god-reconciler.md +230 -0
  33. package/agents/god-reconstructor.md +124 -0
  34. package/agents/god-repo-scaffolder.md +60 -0
  35. package/agents/god-retrospective.md +109 -0
  36. package/agents/god-roadmap-reconciler.md +123 -0
  37. package/agents/god-roadmap-updater.md +89 -0
  38. package/agents/god-roadmapper.md +82 -0
  39. package/agents/god-spec-reviewer.md +70 -0
  40. package/agents/god-spike-runner.md +119 -0
  41. package/agents/god-stack-selector.md +93 -0
  42. package/agents/god-standards-check.md +132 -0
  43. package/agents/god-storyteller.md +116 -0
  44. package/agents/god-updater.md +174 -0
  45. package/bin/install.js +514 -0
  46. package/extensions/data-pack/README.md +33 -0
  47. package/extensions/data-pack/agents/god-dashboard-builder.md +66 -0
  48. package/extensions/data-pack/agents/god-etl-engineer.md +64 -0
  49. package/extensions/data-pack/agents/god-ml-feature-engineer.md +66 -0
  50. package/extensions/data-pack/manifest.yaml +39 -0
  51. package/extensions/data-pack/package.json +42 -0
  52. package/extensions/data-pack/skills/god-dashboard.md +28 -0
  53. package/extensions/data-pack/skills/god-etl.md +28 -0
  54. package/extensions/data-pack/skills/god-ml-feature.md +28 -0
  55. package/extensions/data-pack/workflows/dashboard-arc.yaml +13 -0
  56. package/extensions/data-pack/workflows/etl-arc.yaml +13 -0
  57. package/extensions/data-pack/workflows/ml-feature-arc.yaml +13 -0
  58. package/extensions/launch-pack/README.md +36 -0
  59. package/extensions/launch-pack/agents/god-indie-hackers-strategist.md +128 -0
  60. package/extensions/launch-pack/agents/god-oss-release-strategist.md +125 -0
  61. package/extensions/launch-pack/agents/god-product-hunt-strategist.md +118 -0
  62. package/extensions/launch-pack/agents/god-show-hn-strategist.md +113 -0
  63. package/extensions/launch-pack/manifest.yaml +45 -0
  64. package/extensions/launch-pack/package.json +41 -0
  65. package/extensions/launch-pack/skills/god-indie-hackers.md +39 -0
  66. package/extensions/launch-pack/skills/god-oss-release.md +43 -0
  67. package/extensions/launch-pack/skills/god-product-hunt.md +41 -0
  68. package/extensions/launch-pack/skills/god-show-hn.md +40 -0
  69. package/extensions/launch-pack/workflows/indie-hackers.yaml +13 -0
  70. package/extensions/launch-pack/workflows/oss-release.yaml +13 -0
  71. package/extensions/launch-pack/workflows/product-hunt.yaml +13 -0
  72. package/extensions/launch-pack/workflows/show-hn.yaml +13 -0
  73. package/extensions/security-pack/README.md +48 -0
  74. package/extensions/security-pack/agents/god-hipaa-auditor.md +117 -0
  75. package/extensions/security-pack/agents/god-pci-auditor.md +100 -0
  76. package/extensions/security-pack/agents/god-soc2-auditor.md +107 -0
  77. package/extensions/security-pack/manifest.yaml +39 -0
  78. package/extensions/security-pack/package.json +42 -0
  79. package/extensions/security-pack/skills/god-hipaa-audit.md +41 -0
  80. package/extensions/security-pack/skills/god-pci-audit.md +40 -0
  81. package/extensions/security-pack/skills/god-soc2-audit.md +42 -0
  82. package/extensions/security-pack/workflows/hipaa-arc.yaml +15 -0
  83. package/extensions/security-pack/workflows/pci-arc.yaml +15 -0
  84. package/extensions/security-pack/workflows/soc2-arc.yaml +15 -0
  85. package/hooks/pre-tool-use.sh +40 -0
  86. package/hooks/session-start.sh +74 -0
  87. package/lib/README.md +28 -0
  88. package/lib/agent-browser-driver.js +215 -0
  89. package/lib/agent-cache.js +194 -0
  90. package/lib/agent-validator.js +275 -0
  91. package/lib/artifact-diff.js +168 -0
  92. package/lib/artifact-linter.js +142 -0
  93. package/lib/awesome-design.js +312 -0
  94. package/lib/browser-bridge.js +209 -0
  95. package/lib/budget.js +215 -0
  96. package/lib/checkpoint.js +390 -0
  97. package/lib/code-scanner.js +262 -0
  98. package/lib/context-budget.js +170 -0
  99. package/lib/context-writer.js +348 -0
  100. package/lib/cost-tracker.js +325 -0
  101. package/lib/cross-artifact-impact.js +162 -0
  102. package/lib/cross-repo-linkage.js +150 -0
  103. package/lib/design-detector.js +167 -0
  104. package/lib/design-spec.js +348 -0
  105. package/lib/drift-detector.js +212 -0
  106. package/lib/event-reader.js +174 -0
  107. package/lib/events.js +183 -0
  108. package/lib/extensions.js +257 -0
  109. package/lib/have-nots-validator.js +647 -0
  110. package/lib/impact.js +314 -0
  111. package/lib/impeccable-bridge.js +139 -0
  112. package/lib/intent.js +177 -0
  113. package/lib/linkage.js +232 -0
  114. package/lib/meta-linter.js +263 -0
  115. package/lib/multi-repo-detector.js +182 -0
  116. package/lib/otel-exporter.js +308 -0
  117. package/lib/recipes.js +186 -0
  118. package/lib/reverse-sync.js +332 -0
  119. package/lib/review-required.js +224 -0
  120. package/lib/router.js +278 -0
  121. package/lib/runtime-audit.js +455 -0
  122. package/lib/runtime-test.js +309 -0
  123. package/lib/skillui-bridge.js +216 -0
  124. package/lib/state-lock.js +201 -0
  125. package/lib/state.js +142 -0
  126. package/lib/story-validator.js +301 -0
  127. package/lib/suite-state.js +220 -0
  128. package/lib/workflow-parser.js +109 -0
  129. package/lib/workflow-runner.js +221 -0
  130. package/package.json +63 -0
  131. package/references/HAVE-NOTS.md +573 -0
  132. package/references/building/BUILD-ANTIPATTERNS.md +102 -0
  133. package/references/building/BUILD-VERTICAL-SLICES.md +75 -0
  134. package/references/building/BUILD-WAVES.md +61 -0
  135. package/references/building/README.md +17 -0
  136. package/references/design/COLOR.md +122 -0
  137. package/references/design/DESIGN-ANATOMY.md +121 -0
  138. package/references/design/DESIGN-ANTIPATTERNS.md +108 -0
  139. package/references/design/INTERACTION.md +148 -0
  140. package/references/design/MOTION.md +120 -0
  141. package/references/design/RESPONSIVE.md +157 -0
  142. package/references/design/SPATIAL.md +109 -0
  143. package/references/design/TYPOGRAPHY.md +121 -0
  144. package/references/design/UX-WRITING.md +135 -0
  145. package/references/orchestration/MODE-DETECTION.md +74 -0
  146. package/references/orchestration/README.md +18 -0
  147. package/references/orchestration/SCALE-DETECTION.md +81 -0
  148. package/references/planning/ARCH-ANATOMY.md +143 -0
  149. package/references/planning/ARCH-ANTIPATTERNS.md +52 -0
  150. package/references/planning/PRD-ANATOMY.md +117 -0
  151. package/references/planning/PRD-ANTIPATTERNS.md +138 -0
  152. package/references/planning/README.md +16 -0
  153. package/references/planning/ROADMAP-ANATOMY.md +43 -0
  154. package/references/planning/ROADMAP-ANTIPATTERNS.md +94 -0
  155. package/references/planning/STACK-ANATOMY.md +60 -0
  156. package/references/planning/STACK-ANTIPATTERNS.md +95 -0
  157. package/references/shared/GLOSSARY.md +80 -0
  158. package/references/shared/ORCHESTRATORS.md +76 -0
  159. package/references/shared/README.md +14 -0
  160. package/references/shipping/DEPLOY-ANTIPATTERNS.md +64 -0
  161. package/references/shipping/DEPLOY-PATTERNS.md +110 -0
  162. package/references/shipping/HARDEN-ANTIPATTERNS.md +66 -0
  163. package/references/shipping/HARDEN-OWASP-WORKSHEETS.md +89 -0
  164. package/references/shipping/LAUNCH-ANTIPATTERNS.md +68 -0
  165. package/references/shipping/OBSERVE-ANTIPATTERNS.md +62 -0
  166. package/references/shipping/OBSERVE-SLO-EXAMPLES.md +107 -0
  167. package/references/shipping/README.md +18 -0
  168. package/routing/god-add-backlog.yaml +24 -0
  169. package/routing/god-add-tests.yaml +27 -0
  170. package/routing/god-add-todo.yaml +24 -0
  171. package/routing/god-agent-audit.yaml +24 -0
  172. package/routing/god-arch.yaml +46 -0
  173. package/routing/god-archaeology.yaml +28 -0
  174. package/routing/god-audit.yaml +32 -0
  175. package/routing/god-budget.yaml +24 -0
  176. package/routing/god-build-agent.yaml +24 -0
  177. package/routing/god-build.yaml +46 -0
  178. package/routing/god-cache-clear.yaml +24 -0
  179. package/routing/god-check-todos.yaml +24 -0
  180. package/routing/god-context-scan.yaml +24 -0
  181. package/routing/god-context.yaml +44 -0
  182. package/routing/god-cost.yaml +24 -0
  183. package/routing/god-debug.yaml +28 -0
  184. package/routing/god-deploy.yaml +34 -0
  185. package/routing/god-design-impact.yaml +25 -0
  186. package/routing/god-design.yaml +67 -0
  187. package/routing/god-discuss.yaml +27 -0
  188. package/routing/god-docs.yaml +33 -0
  189. package/routing/god-doctor.yaml +27 -0
  190. package/routing/god-explore.yaml +27 -0
  191. package/routing/god-extension-add.yaml +24 -0
  192. package/routing/god-extension-info.yaml +24 -0
  193. package/routing/god-extension-list.yaml +24 -0
  194. package/routing/god-extension-remove.yaml +24 -0
  195. package/routing/god-extract-learnings.yaml +24 -0
  196. package/routing/god-fast.yaml +27 -0
  197. package/routing/god-feature.yaml +34 -0
  198. package/routing/god-graph.yaml +24 -0
  199. package/routing/god-harden.yaml +41 -0
  200. package/routing/god-help.yaml +27 -0
  201. package/routing/god-hotfix.yaml +34 -0
  202. package/routing/god-hygiene.yaml +28 -0
  203. package/routing/god-init.yaml +37 -0
  204. package/routing/god-intel.yaml +24 -0
  205. package/routing/god-launch.yaml +41 -0
  206. package/routing/god-lifecycle.yaml +27 -0
  207. package/routing/god-link.yaml +24 -0
  208. package/routing/god-lint.yaml +24 -0
  209. package/routing/god-list-assumptions.yaml +27 -0
  210. package/routing/god-locate.yaml +24 -0
  211. package/routing/god-logs.yaml +24 -0
  212. package/routing/god-map-codebase.yaml +24 -0
  213. package/routing/god-metrics.yaml +24 -0
  214. package/routing/god-mode.yaml +31 -0
  215. package/routing/god-next.yaml +27 -0
  216. package/routing/god-note.yaml +24 -0
  217. package/routing/god-observe.yaml +34 -0
  218. package/routing/god-org-context.yaml +28 -0
  219. package/routing/god-party.yaml +24 -0
  220. package/routing/god-pause-work.yaml +27 -0
  221. package/routing/god-plant-seed.yaml +24 -0
  222. package/routing/god-postmortem.yaml +34 -0
  223. package/routing/god-pr-branch.yaml +25 -0
  224. package/routing/god-prd.yaml +49 -0
  225. package/routing/god-quick.yaml +28 -0
  226. package/routing/god-reconcile.yaml +48 -0
  227. package/routing/god-reconstruct.yaml +36 -0
  228. package/routing/god-redo.yaml +27 -0
  229. package/routing/god-refactor.yaml +36 -0
  230. package/routing/god-repair.yaml +27 -0
  231. package/routing/god-repo.yaml +35 -0
  232. package/routing/god-restore.yaml +27 -0
  233. package/routing/god-resume-work.yaml +27 -0
  234. package/routing/god-review-changes.yaml +25 -0
  235. package/routing/god-review.yaml +28 -0
  236. package/routing/god-roadmap-check.yaml +39 -0
  237. package/routing/god-roadmap-update.yaml +37 -0
  238. package/routing/god-roadmap.yaml +42 -0
  239. package/routing/god-rollback.yaml +27 -0
  240. package/routing/god-scan.yaml +24 -0
  241. package/routing/god-set-profile.yaml +24 -0
  242. package/routing/god-settings.yaml +24 -0
  243. package/routing/god-skip.yaml +27 -0
  244. package/routing/god-smite.yaml +29 -0
  245. package/routing/god-spike.yaml +35 -0
  246. package/routing/god-sprint.yaml +25 -0
  247. package/routing/god-stack.yaml +41 -0
  248. package/routing/god-standards.yaml +24 -0
  249. package/routing/god-status.yaml +27 -0
  250. package/routing/god-stories.yaml +24 -0
  251. package/routing/god-story-build.yaml +25 -0
  252. package/routing/god-story-close.yaml +25 -0
  253. package/routing/god-story-verify.yaml +25 -0
  254. package/routing/god-story.yaml +24 -0
  255. package/routing/god-suite-init.yaml +24 -0
  256. package/routing/god-suite-patch.yaml +25 -0
  257. package/routing/god-suite-release.yaml +25 -0
  258. package/routing/god-suite-status.yaml +25 -0
  259. package/routing/god-suite-sync.yaml +25 -0
  260. package/routing/god-sync.yaml +33 -0
  261. package/routing/god-tech-debt.yaml +32 -0
  262. package/routing/god-test-extension.yaml +24 -0
  263. package/routing/god-test-runtime.yaml +25 -0
  264. package/routing/god-thread.yaml +24 -0
  265. package/routing/god-trace.yaml +24 -0
  266. package/routing/god-undo.yaml +27 -0
  267. package/routing/god-update-deps.yaml +39 -0
  268. package/routing/god-upgrade.yaml +33 -0
  269. package/routing/god-version.yaml +24 -0
  270. package/routing/god-workstream.yaml +24 -0
  271. package/routing/god.yaml +24 -0
  272. package/routing/recipes/add-feature-defer-current-milestone.yaml +21 -0
  273. package/routing/recipes/add-feature-future-conditional.yaml +21 -0
  274. package/routing/recipes/add-feature-mid-arc-pause.yaml +33 -0
  275. package/routing/recipes/add-feature-next-milestone.yaml +23 -0
  276. package/routing/recipes/add-feature-parallel.yaml +29 -0
  277. package/routing/recipes/add-feature-prd-update.yaml +21 -0
  278. package/routing/recipes/add-feature-small.yaml +24 -0
  279. package/routing/recipes/add-feature-tiny.yaml +24 -0
  280. package/routing/recipes/bluefield-org-aware.yaml +27 -0
  281. package/routing/recipes/broken-install.yaml +22 -0
  282. package/routing/recipes/brownfield-onboarding.yaml +32 -0
  283. package/routing/recipes/bug-no-urgency.yaml +21 -0
  284. package/routing/recipes/capture-idea.yaml +22 -0
  285. package/routing/recipes/capture-todo.yaml +21 -0
  286. package/routing/recipes/clean-pr.yaml +21 -0
  287. package/routing/recipes/code-cleanup.yaml +23 -0
  288. package/routing/recipes/docs-drift.yaml +21 -0
  289. package/routing/recipes/existing-codebase-onboarding.yaml +32 -0
  290. package/routing/recipes/extract-learnings.yaml +22 -0
  291. package/routing/recipes/greenfield-fast.yaml +25 -0
  292. package/routing/recipes/greenfield-manual.yaml +32 -0
  293. package/routing/recipes/greenfield-with-ideation.yaml +29 -0
  294. package/routing/recipes/incident-postmortem.yaml +24 -0
  295. package/routing/recipes/major-framework-upgrade.yaml +23 -0
  296. package/routing/recipes/monthly-deps.yaml +22 -0
  297. package/routing/recipes/multi-repo-suite.yaml +56 -0
  298. package/routing/recipes/parallel-engineers.yaml +26 -0
  299. package/routing/recipes/pause-handoff.yaml +21 -0
  300. package/routing/recipes/production-broken.yaml +26 -0
  301. package/routing/recipes/rerun-tier.yaml +21 -0
  302. package/routing/recipes/returning-after-break.yaml +31 -0
  303. package/routing/recipes/state-drift.yaml +21 -0
  304. package/routing/recipes/undo-last.yaml +21 -0
  305. package/routing/recipes/weekly-health-check.yaml +24 -0
  306. package/routing/recipes/whats-next.yaml +22 -0
  307. package/routing/recipes/where-am-i.yaml +21 -0
  308. package/schema/events.v1.json +63 -0
  309. package/schema/extension-manifest.v1.json +84 -0
  310. package/schema/intent.v1.yaml.json +116 -0
  311. package/schema/recipe.v1.json +120 -0
  312. package/schema/routing.v1.json +163 -0
  313. package/schema/state.v1.json +146 -0
  314. package/schema/workflow.v1.json +96 -0
  315. package/skills/god-add-backlog.md +40 -0
  316. package/skills/god-add-tests.md +53 -0
  317. package/skills/god-add-todo.md +32 -0
  318. package/skills/god-agent-audit.md +87 -0
  319. package/skills/god-arch.md +81 -0
  320. package/skills/god-archaeology.md +48 -0
  321. package/skills/god-audit.md +65 -0
  322. package/skills/god-budget.md +103 -0
  323. package/skills/god-build-agent.md +91 -0
  324. package/skills/god-build.md +90 -0
  325. package/skills/god-cache-clear.md +75 -0
  326. package/skills/god-check-todos.md +42 -0
  327. package/skills/god-context-scan.md +125 -0
  328. package/skills/god-context.md +147 -0
  329. package/skills/god-cost.md +118 -0
  330. package/skills/god-debug.md +30 -0
  331. package/skills/god-deploy.md +76 -0
  332. package/skills/god-design-impact.md +86 -0
  333. package/skills/god-design.md +275 -0
  334. package/skills/god-discuss.md +46 -0
  335. package/skills/god-docs.md +81 -0
  336. package/skills/god-doctor.md +94 -0
  337. package/skills/god-explore.md +50 -0
  338. package/skills/god-export-otel.md +87 -0
  339. package/skills/god-extension-add.md +79 -0
  340. package/skills/god-extension-info.md +75 -0
  341. package/skills/god-extension-list.md +55 -0
  342. package/skills/god-extension-remove.md +66 -0
  343. package/skills/god-extract-learnings.md +60 -0
  344. package/skills/god-fast.md +47 -0
  345. package/skills/god-feature.md +114 -0
  346. package/skills/god-graph.md +56 -0
  347. package/skills/god-harden.md +106 -0
  348. package/skills/god-help.md +66 -0
  349. package/skills/god-hotfix.md +139 -0
  350. package/skills/god-hygiene.md +104 -0
  351. package/skills/god-init.md +161 -0
  352. package/skills/god-intel.md +36 -0
  353. package/skills/god-launch.md +86 -0
  354. package/skills/god-lifecycle.md +119 -0
  355. package/skills/god-link.md +90 -0
  356. package/skills/god-lint.md +128 -0
  357. package/skills/god-list-assumptions.md +56 -0
  358. package/skills/god-locate.md +97 -0
  359. package/skills/god-logs.md +57 -0
  360. package/skills/god-map-codebase.md +45 -0
  361. package/skills/god-metrics.md +51 -0
  362. package/skills/god-mode.md +159 -0
  363. package/skills/god-next.md +257 -0
  364. package/skills/god-note.md +39 -0
  365. package/skills/god-observe.md +76 -0
  366. package/skills/god-org-context.md +81 -0
  367. package/skills/god-party.md +87 -0
  368. package/skills/god-pause-work.md +64 -0
  369. package/skills/god-plant-seed.md +59 -0
  370. package/skills/god-postmortem.md +103 -0
  371. package/skills/god-pr-branch.md +50 -0
  372. package/skills/god-prd.md +90 -0
  373. package/skills/god-quick.md +50 -0
  374. package/skills/god-reconcile.md +90 -0
  375. package/skills/god-reconstruct.md +72 -0
  376. package/skills/god-redo.md +73 -0
  377. package/skills/god-refactor.md +137 -0
  378. package/skills/god-repair.md +82 -0
  379. package/skills/god-repo.md +49 -0
  380. package/skills/god-restore.md +91 -0
  381. package/skills/god-resume-work.md +42 -0
  382. package/skills/god-review-changes.md +93 -0
  383. package/skills/god-review.md +52 -0
  384. package/skills/god-roadmap-check.md +66 -0
  385. package/skills/god-roadmap-update.md +64 -0
  386. package/skills/god-roadmap.md +77 -0
  387. package/skills/god-rollback.md +88 -0
  388. package/skills/god-scan.md +106 -0
  389. package/skills/god-set-profile.md +58 -0
  390. package/skills/god-settings.md +44 -0
  391. package/skills/god-skip.md +78 -0
  392. package/skills/god-smite.md +86 -0
  393. package/skills/god-spike.md +120 -0
  394. package/skills/god-sprint.md +77 -0
  395. package/skills/god-stack.md +74 -0
  396. package/skills/god-standards.md +62 -0
  397. package/skills/god-status.md +99 -0
  398. package/skills/god-stories.md +60 -0
  399. package/skills/god-story-build.md +76 -0
  400. package/skills/god-story-close.md +82 -0
  401. package/skills/god-story-verify.md +71 -0
  402. package/skills/god-story.md +55 -0
  403. package/skills/god-suite-init.md +75 -0
  404. package/skills/god-suite-patch.md +64 -0
  405. package/skills/god-suite-release.md +58 -0
  406. package/skills/god-suite-status.md +63 -0
  407. package/skills/god-suite-sync.md +49 -0
  408. package/skills/god-sync.md +102 -0
  409. package/skills/god-tech-debt.md +56 -0
  410. package/skills/god-test-extension.md +87 -0
  411. package/skills/god-test-runtime.md +144 -0
  412. package/skills/god-thread.md +39 -0
  413. package/skills/god-trace.md +50 -0
  414. package/skills/god-undo.md +68 -0
  415. package/skills/god-update-deps.md +134 -0
  416. package/skills/god-upgrade.md +139 -0
  417. package/skills/god-version.md +37 -0
  418. package/skills/god-workstream.md +61 -0
  419. package/skills/god.md +207 -0
  420. package/templates/ARCH.md +99 -0
  421. package/templates/DEPS-AUDIT.md +66 -0
  422. package/templates/DESIGN.md +71 -0
  423. package/templates/DOCS-UPDATE-LOG.md +64 -0
  424. package/templates/HARDEN-FINDINGS.md +69 -0
  425. package/templates/MIGRATION.md +86 -0
  426. package/templates/POSTMORTEM.md +88 -0
  427. package/templates/PRD.md +80 -0
  428. package/templates/PROGRESS.md +49 -0
  429. package/templates/ROADMAP.md +47 -0
  430. package/templates/SPIKE.md +72 -0
  431. package/templates/STACK-DECISION.md +61 -0
  432. package/workflows/audit-only.yaml +22 -0
  433. package/workflows/bluefield-arc.yaml +87 -0
  434. package/workflows/brownfield-arc.yaml +44 -0
  435. package/workflows/deps-audit.yaml +56 -0
  436. package/workflows/docs-arc.yaml +22 -0
  437. package/workflows/feature-arc.yaml +59 -0
  438. package/workflows/full-arc.yaml +84 -0
  439. package/workflows/hotfix-arc.yaml +59 -0
  440. package/workflows/hygiene.yaml +43 -0
  441. package/workflows/migration-arc.yaml +73 -0
  442. package/workflows/postmortem.yaml +31 -0
  443. package/workflows/refactor-arc.yaml +59 -0
  444. package/workflows/spike.yaml +23 -0
@@ -0,0 +1,94 @@
1
+ # ROADMAP Antipatterns
2
+
3
+ > Common ways roadmaps fail. Each has a sample, why it fails, and the fix.
4
+
5
+ ## 1. The Date-Hopeful Roadmap
6
+
7
+ **Sample**: "M-1: Auth — early Q3"
8
+
9
+ **Why it fails**: "Early Q3" is not a gate, not a date, not a measurable
10
+ state. The team treats it as soft, slippage compounds, and by mid-Q3 the
11
+ milestone is "in progress" with no ship date.
12
+
13
+ **Fix**: Replace dates with gates. "M-1 ships when integration tests pass
14
+ on the staging environment with two beta accounts active for 7 consecutive
15
+ days." The gate is the milestone, not the date.
16
+
17
+ ## 2. The Featurelist Roadmap
18
+
19
+ **Sample**:
20
+ - M-1: Auth, profile pages, settings, password reset
21
+ - M-2: Dashboard, charts, exports, sharing
22
+
23
+ **Why it fails**: Each milestone bundles unrelated features. There is no
24
+ shippable subset; users get nothing until the whole bag arrives. Slippage
25
+ on one item delays everything.
26
+
27
+ **Fix**: Each milestone must produce a thin vertical slice that delivers
28
+ real user value. M-1 = "user can sign up and see one chart." M-2 = "user
29
+ can share that chart." Each milestone ships independently.
30
+
31
+ ## 3. The Phantom Gate
32
+
33
+ **Sample**: "M-2 gate: integration tests pass."
34
+
35
+ **Why it fails**: "Integration tests pass" is mechanical but vague. Which
36
+ tests? Against what data? In what environment? Writing the gate this way
37
+ makes it un-falsifiable.
38
+
39
+ **Fix**: Specify the gate concretely. "M-2 gate: the regression suite of
40
+ 50 real CI logs identifies the right line in 95% of cases, run against
41
+ the M-2 build on the production CI runner."
42
+
43
+ ## 4. The Reordering Trap
44
+
45
+ **Sample**: M-1 marked "done" but the gate criterion was relaxed mid-sprint.
46
+
47
+ **Why it fails**: A milestone that closed without meeting its original
48
+ gate is technical debt disguised as progress. The team moves on; the
49
+ unmet gate becomes invisible.
50
+
51
+ **Fix**: Treat gate changes as milestone changes. If the gate must move,
52
+ the milestone gets a new ID (M-1.1) and the old one is documented as
53
+ "closed with relaxed gate, see ADR-XXX." The original gate is preserved
54
+ for honesty.
55
+
56
+ ## 5. The Phase-as-Milestone
57
+
58
+ **Sample**:
59
+ - M-1: Planning (4 weeks)
60
+ - M-2: Building (8 weeks)
61
+ - M-3: Shipping (2 weeks)
62
+
63
+ **Why it fails**: This is a Gantt chart, not a roadmap. Phases group
64
+ activities, not outcomes. Tracking against phases tells you how much
65
+ time elapsed, not what shipped.
66
+
67
+ **Fix**: Milestones are user-facing outcomes. "M-1: First account synced
68
+ end-to-end." "M-2: Dashboard reads cache, p99 under 800ms." Time
69
+ spent is incidental.
70
+
71
+ ## 6. The Roadmap Without Reverse Direction
72
+
73
+ **Sample**: Each milestone lists what to build but never what to remove,
74
+ deprecate, or migrate.
75
+
76
+ **Why it fails**: Software accretes; only deletes shrink it. A roadmap
77
+ that only adds eventually becomes the source of complexity.
78
+
79
+ **Fix**: At least one milestone per quarter has a "remove" item. M-N:
80
+ "Remove the legacy v1 export path; users on v1 emails since Jan are
81
+ migrated to v2." Roadmap = what we ship + what we sunset.
82
+
83
+ ## 7. The Empty Changelog
84
+
85
+ **Sample**: ROADMAP.md exists; the Changelog table at the bottom is
86
+ empty or has a single entry from project start.
87
+
88
+ **Why it fails**: Roadmaps drift. Milestones get added, removed, reordered.
89
+ No log = no honesty about why. New team members read the current roadmap
90
+ as if it were the original plan.
91
+
92
+ **Fix**: Every roadmap edit appends a changelog row with date, change,
93
+ reason. `2026-06-15 | Moved M-3 ahead of M-2 | Beta users blocked on
94
+ digest delivery, dashboard can wait`.
@@ -0,0 +1,60 @@
1
+ # Stack Decision Anatomy
2
+
3
+ ## Per-category structure
4
+
5
+ For each technology category:
6
+
7
+ ```
8
+ ### [Category]: [Chosen Technology]
9
+
10
+ **Candidates**: A, B, C
11
+ **Scores**: A 9.2 / B 7.8 / C 6.5
12
+ **Why this one**: [specific to ARCH NFRs]
13
+ **Flip point**: [condition under which we reverse]
14
+ **Lock-in cost**: Low / Medium / High
15
+ **What switching requires**: [concrete description]
16
+ ```
17
+
18
+ ## Worked example
19
+
20
+ ### Language: TypeScript
21
+
22
+ **Candidates**: TypeScript, Python, Go
23
+ **Scores**: TS 9.2 / Python 7.8 / Go 7.1
24
+
25
+ **Why TypeScript**:
26
+ - Frontend is React (TS already in stack)
27
+ - Team has TS experience
28
+ - Type safety reduces post-deploy bug rate per PRD NFR (95% reduction in
29
+ runtime type errors vs JavaScript baseline; team's last project)
30
+
31
+ **Flip point**: If we add a service that needs sub-millisecond p99 latency
32
+ or hot-path performance (e.g., a real-time analytics engine), evaluate Go
33
+ or Rust for that service specifically. Don't migrate the whole stack.
34
+
35
+ **Lock-in cost**: Medium
36
+ - Switching the API to Python would require rewriting the data access layer
37
+ and validation library. Estimated 4-6 weeks for a single engineer.
38
+ - Lower if we keep an abstraction layer between web framework and business logic.
39
+
40
+ ## Pairing checks
41
+
42
+ Verify chosen technologies work together:
43
+
44
+ - TypeScript + Express + Prisma: yes (Prisma has first-class TS support)
45
+ - Postgres + Prisma: yes (Prisma supports Postgres natively)
46
+ - BullMQ + Redis: yes (BullMQ requires Redis; we have it)
47
+
48
+ Flag mismatches:
49
+ - ChosenORM doesn't support ChosenDB: blocker
50
+ - Library X requires Node 16, but we chose Node 20: minor (verify upgrade path)
51
+
52
+ ## High lock-in watch list
53
+
54
+ Choices marked "High" lock-in with flip points <6 months away:
55
+
56
+ | Choice | Lock-in | Likely flip | Mitigation |
57
+ |--------|---------|-------------|------------|
58
+ | Vercel for hosting | High | If we hit Vercel's scale tier limits | Maintain Dockerfile so we can leave |
59
+
60
+ If a high-lock-in choice has no mitigation, that's a have-not (S-04).
@@ -0,0 +1,95 @@
1
+ # STACK Antipatterns
2
+
3
+ > Common ways stack decisions fail. Each has a sample, why it fails, and the fix.
4
+
5
+ ## 1. The Resume-Driven Choice
6
+
7
+ **Sample**: "Selected Rust because it's a great learning opportunity."
8
+
9
+ **Why it fails**: The PRD does not require Rust's strengths (extreme
10
+ performance, no GC). The team takes 3x longer building features than they
11
+ would in TypeScript. The choice serves the resume, not the user.
12
+
13
+ **Fix**: Map each choice to a PRD requirement. "Rust because PRD NFR
14
+ requires processing 10MB logs in under 500ms with zero allocations in
15
+ hot path; benchmarks show TypeScript is 4x slower at this." If the PRD
16
+ doesn't pull, the stack doesn't push.
17
+
18
+ ## 2. The Lock-In Without Acknowledgment
19
+
20
+ **Sample**: "Selected Vercel for hosting" with no flip point and no
21
+ estimated migration cost.
22
+
23
+ **Why it fails**: Single-vendor lock-in is sometimes the right choice,
24
+ but it must be acknowledged. Without a documented flip point, the team
25
+ can't tell when the choice has become a liability.
26
+
27
+ **Fix**: Every high-lock-in choice has a flip point and a migration cost
28
+ estimate. "Vercel; flip point when sync-worker exceeds 300s function
29
+ timeout; migration to Fly.io estimated at 2 weeks (cron + KV
30
+ re-platforming)."
31
+
32
+ ## 3. The Pairing Mismatch
33
+
34
+ **Sample**: "Selected Next.js + AWS Lambda + DynamoDB."
35
+
36
+ **Why it fails**: Next.js is built around Vercel's runtime. Lambda has
37
+ cold-start issues for Next.js's SSR model. DynamoDB requires a different
38
+ data access pattern than the Next.js server-component idiom assumes. The
39
+ pairing fights itself.
40
+
41
+ **Fix**: Verify pairing compatibility pairwise. Document any
42
+ incompatibilities found. If a pair fights, either change the pair or
43
+ explicitly accept the friction with a Mitigations section.
44
+
45
+ ## 4. The Buzzword Stack
46
+
47
+ **Sample**: A small SaaS app stack listing Kubernetes, Kafka, Cassandra,
48
+ Redis, Elasticsearch, and Spark.
49
+
50
+ **Why it fails**: Each tool is a category leader for its problem, but
51
+ the project doesn't have those problems yet. Operating six distributed
52
+ systems for 200 users is a full-time job; the actual product never ships.
53
+
54
+ **Fix**: Match operational complexity to current scale. A SaaS at $5k
55
+ MRR runs on Postgres + a single Node process. Add Kafka the day you
56
+ need event streaming you can't get from Postgres LISTEN/NOTIFY.
57
+
58
+ ## 5. The Untyped Selection
59
+
60
+ **Sample**: "TBD on database; will decide during build."
61
+
62
+ **Why it fails**: Stack decisions made under build-time pressure are
63
+ worse than stack decisions made up front. The team picks whatever is
64
+ fastest in the moment; that choice locks in operational debt.
65
+
66
+ **Fix**: STACK.md has zero "TBD" entries before /god-build starts. If
67
+ genuinely unresolved, the entry says "/god-spike scheduled to evaluate
68
+ options X, Y, Z by date" and is gated as Tier 1 incomplete until the
69
+ spike resolves.
70
+
71
+ ## 6. The "We'll Just Use" Trap
72
+
73
+ **Sample**: Casual sentence in PRD: "We'll just use Postgres."
74
+
75
+ **Why it fails**: That casual line skipped STACK entirely. No flip point,
76
+ no rationale, no pairing check. The choice is now load-bearing for
77
+ several other decisions and nobody owns it.
78
+
79
+ **Fix**: Promote every stack decision to STACK.md. If a PRD or ARCH
80
+ sentence implies a stack choice, that choice gets its own row in
81
+ STACK.md with rationale and flip point, even if the decision feels
82
+ obvious.
83
+
84
+ ## 7. The Migration That Wasn't
85
+
86
+ **Sample**: STACK.md says "we use library X 2.x" but package.json shows 1.4.
87
+
88
+ **Why it fails**: Stack drift between the document and the code is
89
+ invisible until something breaks. The doc has aspirational truth; the
90
+ code has actual truth. Reverse-sync (Phase 6) catches this.
91
+
92
+ **Fix**: STACK.md entries get reverse-sync'd from `package.json` /
93
+ `go.mod` / `Cargo.toml` etc. The sync runs on /god-sync and updates
94
+ "Used in: X files; current version: 1.4" footers. Drift between stated
95
+ and actual is flagged in REVIEW-REQUIRED.md.
@@ -0,0 +1,80 @@
1
+ # Godpowers Glossary
2
+
3
+ > Canonical vocabulary. Every doc, agent prompt, error message, and command
4
+ > must use these consistently.
5
+
6
+ ## Core abstractions
7
+
8
+ **Tier**: a phase of the dev arc (0: Orchestration, 1: Planning, 2: Building, 3: Shipping).
9
+
10
+ **Sub-step**: a bounded unit within a tier (PRD, ARCH, Roadmap, Stack, Repo, Build, Deploy, Observe, Launch, Harden).
11
+
12
+ **Artifact**: a file on disk produced by a sub-step. Has a contract.
13
+
14
+ **Skill**: a slash command. Thin handle that spawns agents.
15
+
16
+ **Agent**: a specialist that turns sub-step inputs into the artifact. Fresh context per spawn.
17
+
18
+ **Gate**: a passing upstream artifact required for a downstream sub-step.
19
+
20
+ **Have-not**: a named, grep-testable failure mode. 200 in the catalog.
21
+
22
+ **Mode**: a run flavor (greenfield A, gap-fill B, audit C, multi-repo D-future).
23
+
24
+ **Scale**: project size (trivial, small, medium, large, enterprise). Drives which tiers and personas activate.
25
+
26
+ ## Quality concepts
27
+
28
+ **Substitution test**: replace product name with competitor's; if sentence still reads true, it decides nothing. Rewrite.
29
+
30
+ **Three-label test**: every sentence is exactly DECISION, HYPOTHESIS, or OPEN QUESTION. Anything unlabeled is theater.
31
+
32
+ **Theater**: sentences that read fine but say nothing measurable, decidable, or testable.
33
+
34
+ **AI-slop**: output that passes substitution test. Reads generic.
35
+
36
+ **Paper artifact**: document exists but mechanism does not (e.g., "runbook" never executed, "SLO" with no error budget policy).
37
+
38
+ **Phantom resume**: agent claims tier is done but artifact is missing from disk.
39
+
40
+ **Ghost handoff**: tier invoked before its upstream artifact exists.
41
+
42
+ **Drift**: gap between what state.json claims and what disk actually contains.
43
+
44
+ ## Workflow concepts
45
+
46
+ **Pause**: a genuine human-in-the-loop checkpoint. Five legitimate categories (ambiguous intent, human-only flip-point, statistical tie, Critical security finding, brand voice).
47
+
48
+ **YOLO**: auto-resolve all pauses except security Criticals. Logs to YOLO-DECISIONS.md.
49
+
50
+ **Workstream**: an isolated parallel branch with its own state.
51
+
52
+ **Vertical slice**: one user-visible behavior end-to-end. Not "set up the database".
53
+
54
+ **Wave**: a set of slices that can run in parallel within a build phase.
55
+
56
+ **Reflog**: append-only log of state-changing operations. Enables /god-undo.
57
+
58
+ **Trash**: recoverable deletion to `.godpowers/.trash/`.
59
+
60
+ ## Agent concepts
61
+
62
+ **Fresh context**: each spawned agent gets a new context window. Defeats context rot.
63
+
64
+ **TDD enforcement**: tests written before implementation. Code-before-test triggers rewrite.
65
+
66
+ **Two-stage review**: god-spec-reviewer (compliance) then god-quality-reviewer (craft). Both must pass for commit.
67
+
68
+ **Atomic commit**: one slice = one commit. Never multiple slices in one commit.
69
+
70
+ **Critical-finding gate**: launch is blocked if god-harden-auditor finds Critical. Even --yolo.
71
+
72
+ ## Extension concepts
73
+
74
+ **Extension**: a skill pack from npm. Adds new agents, skills, workflows, have-nots.
75
+
76
+ **Lazy activation**: extension files don't load until a slash command from that extension is invoked.
77
+
78
+ **Capability handshake**: extension declares `engines.godpowers: "^X.Y.0"` and install fails on mismatch.
79
+
80
+ **Skill pack**: another name for an extension. Same thing.
@@ -0,0 +1,76 @@
1
+ # Composing with Other AI Coding Workflow Systems
2
+
3
+ > Godpowers is one of several skill-based AI dev tools. Here's how it
4
+ > composes with others, what's safe to combine, and how to resolve
5
+ > conflicts.
6
+
7
+ Godpowers does not assume it's the only AI workflow system installed.
8
+ Many users layer multiple tools (planning frameworks, discipline harnesses,
9
+ codebase mappers, story trackers). The rules below let them coexist.
10
+
11
+ ## Coexistence principles
12
+
13
+ 1. **One state directory per project.** Godpowers owns `.godpowers/`.
14
+ Other systems own their own directories (e.g. `.planning/`,
15
+ `.<vendor>/`). Don't point two systems at the same directory.
16
+
17
+ 2. **Skills can coexist in `~/.claude/skills/`** (or the equivalent for
18
+ other AI tools). The AI tool routes by description match. Multiple
19
+ `/god-*` skills and any other namespace coexist fine.
20
+
21
+ 3. **Don't mix recovery commands across systems.** `/god-undo` reverts
22
+ Godpowers state only. If another tool also writes to `.godpowers/`,
23
+ recovery drifts. Keep recovery scopes disjoint.
24
+
25
+ 4. **Hooks are per-tool but share the directory.** SessionStart hooks
26
+ from multiple systems live in `~/.claude/hooks/` and run sequentially.
27
+ Order is not guaranteed; do not rely on cross-tool hook ordering.
28
+
29
+ 5. **Resolve conflicts by state-directory ownership.** If Godpowers
30
+ says X and another tool says Y about the same artifact, follow
31
+ whichever system owns the directory the artifact lives in.
32
+
33
+ ## When two systems overlap
34
+
35
+ | Overlap kind | Strategy |
36
+ |---|---|
37
+ | Both write to the same artifact | Pick one as authoritative. Disable the other's writer for that artifact. |
38
+ | Both define a planning workflow | Pick one for planning. Mixing creates duplicate state and divergent truth. |
39
+ | One reasons (TDD, review), the other plans (PRD/ARCH) | Stack them. They're orthogonal. |
40
+ | Both ship slash commands with similar names | Disambiguate by prefix. `/god-*` is reserved for Godpowers. |
41
+
42
+ ## Migration into Godpowers
43
+
44
+ If you arrive at Godpowers carrying artifacts from another system,
45
+ `/god-init` Mode B (gap-fill) reads what exists and maps it forward:
46
+
47
+ - Existing PRD-like documents -> `.godpowers/prd/PRD.md` (after
48
+ substitution-test rewrite if needed)
49
+ - Existing ADRs -> `.godpowers/arch/adr/`
50
+ - Existing roadmap / milestones -> `.godpowers/roadmap/ROADMAP.md`
51
+ - Existing story / ticket files -> `.godpowers/stories/STORY-*.md`
52
+ (via `/god-story`)
53
+
54
+ Mode B does not delete the source files. It produces Godpowers
55
+ artifacts alongside them. Once parity is reached, you can retire the
56
+ older system at your own pace.
57
+
58
+ ## Migration out of Godpowers
59
+
60
+ Every Godpowers artifact is a plain Markdown file with optional
61
+ frontmatter. There's no proprietary binary state. To leave:
62
+
63
+ 1. Copy `.godpowers/prd/`, `arch/`, `roadmap/`, `stack/` somewhere.
64
+ 2. Strip the fenced "Implementation Linkage" footers if the target
65
+ system doesn't understand them (they're recoverable from code
66
+ annotations).
67
+ 3. Delete `.godpowers/`.
68
+
69
+ ## What Godpowers does not try to be
70
+
71
+ Godpowers is opinionated about: artifact discipline, bidirectional
72
+ linkage, the four-tier arc, the single-orchestrator rule, headless
73
+ runtime verification, and the substitution / three-label / have-nots
74
+ gates. It is intentionally not opinionated about: team ceremonies,
75
+ sprint cadence, ticket trackers, knowledge graphs, prompt engineering
76
+ methodology. If you need those, run them alongside.
@@ -0,0 +1,14 @@
1
+ # Shared References
2
+
3
+ Cross-tier reference content used by multiple agents.
4
+
5
+ ## Files
6
+
7
+ - [HAVE-NOTS.md](../HAVE-NOTS.md) (canonical failure-mode catalog, 115 entries)
8
+
9
+ ## Planned content
10
+
11
+ - ORCHESTRATORS.md: composition patterns with other AI coding workflow systems
12
+ - RESEARCH.md: dated research notes informing agent design decisions
13
+ - GLOSSARY.md: standardized vocabulary across tiers (substitution test,
14
+ three-label test, flip point, have-not, paper artifact, theater, AI-slop)
@@ -0,0 +1,64 @@
1
+ # DEPLOY Antipatterns
2
+
3
+ ## 1. The Manual Deploy
4
+
5
+ **Sample**: "Deploy steps: 1. SSH to server. 2. Git pull. 3. npm restart."
6
+
7
+ **Why it fails**: Manual steps run by a human are unreproducible, undocumented in
8
+ runtime state, and accumulate divergence from what's checked in.
9
+
10
+ **Fix**: Every deploy is a CI workflow triggered by a tag or merge to main.
11
+ The workflow is the deploy spec; the runbook describes the workflow, not
12
+ the steps to run by hand.
13
+
14
+ ## 2. The Untested Rollback
15
+
16
+ **Sample**: Deploy doc lists "rollback: redeploy previous tag." Nobody has
17
+ ever tested rollback in production.
18
+
19
+ **Why it fails**: When you need rollback, it's because something is broken.
20
+ That's not the moment to discover the rollback path also broken.
21
+
22
+ **Fix**: Rollback is exercised at least quarterly (game-day), and the
23
+ exercise generates an entry in DEPLOY/STATE.md with the date and outcome.
24
+
25
+ ## 3. The Secret in the Repo
26
+
27
+ **Sample**: `.env.production` checked in with API keys.
28
+
29
+ **Why it fails**: Once committed, it lives in git history forever. Rotation
30
+ is required; reputation damage is not undone.
31
+
32
+ **Fix**: Secrets in the platform's secret manager (Vercel env, AWS Secrets
33
+ Manager, etc.). `.gitignore` enforces; pre-commit hook scans. Detected
34
+ violations BLOCK commit.
35
+
36
+ ## 4. The Big-Bang Deploy
37
+
38
+ **Sample**: 2-week change merged and deployed all at once.
39
+
40
+ **Why it fails**: Bisecting a regression across 100 commits is hours of
41
+ work. Blast radius is the entire change.
42
+
43
+ **Fix**: Continuous deploy on merge. Each commit deploys. Feature flags
44
+ gate user exposure. Rollback rolls back one commit.
45
+
46
+ ## 5. The Silent Deploy
47
+
48
+ **Sample**: No notification, no log, no audit when production deploys.
49
+
50
+ **Why it fails**: When something breaks at 3 AM, you don't know if the
51
+ 2:55 AM deploy caused it because there's no record.
52
+
53
+ **Fix**: Every deploy emits an event (Slack, audit log, observability
54
+ trace). DEPLOY/STATE.md records the deploy SHA, time, and operator
55
+ (human or CI).
56
+
57
+ ## 6. The Environment Drift
58
+
59
+ **Sample**: Staging works, production fails. Investigation reveals
60
+ staging has Node 20 and production runs Node 18.
61
+
62
+ **Fix**: Identical infrastructure-as-code for staging and production.
63
+ Differ only in scale, not in versions. Drift between environments is a
64
+ SEV-2 incident in itself.
@@ -0,0 +1,110 @@
1
+ # Deploy Patterns
2
+
3
+ ## Same-Artifact Promotion
4
+
5
+ Build the artifact ONCE. Promote the SAME artifact through environments.
6
+
7
+ ```
8
+ build (CI) -> dev artifact -> dev env
9
+ -> staging env (same artifact)
10
+ -> prod env (same artifact)
11
+ ```
12
+
13
+ **Why**: prevents "works in staging, broken in prod" caused by build drift.
14
+
15
+ **How**:
16
+ - Tag the artifact (Docker image, binary, bundle) with a version
17
+ - Use the tag throughout promotion
18
+ - NEVER rebuild per environment
19
+ - Configuration is the only thing that differs across environments
20
+
21
+ ## Environment Parity
22
+
23
+ Configuration shape is the same across environments. Values differ.
24
+
25
+ ```
26
+ # All environments use:
27
+ DATABASE_URL=...
28
+ STRIPE_API_KEY=...
29
+ LOG_LEVEL=...
30
+
31
+ # Values differ:
32
+ DATABASE_URL=postgres://dev-host vs postgres://prod-host
33
+ LOG_LEVEL=debug vs info
34
+ ```
35
+
36
+ **Anti-pattern**: dev has feature flags that prod doesn't have. Or prod has
37
+ secrets that dev mocks. Drift accumulates and bites you.
38
+
39
+ ## Expand-Contract for Schema Changes
40
+
41
+ Multi-step deploy for breaking schema changes:
42
+
43
+ 1. **Expand**: deploy code that supports BOTH old and new schema. Old schema
44
+ still active.
45
+ 2. **Migrate data**: backfill new schema from old. Both still work.
46
+ 3. **Switch**: deploy code that reads/writes new schema only.
47
+ 4. **Contract**: drop old schema in a separate deploy.
48
+
49
+ Each step is independently deployable and rollback-able.
50
+
51
+ ## Real Health Checks
52
+
53
+ Application-level. NOT just TCP port.
54
+
55
+ ```js
56
+ // Good
57
+ GET /health -> {
58
+ status: "ok" | "degraded" | "down",
59
+ database: "connected",
60
+ stripe_api: "reachable",
61
+ worker_lag_seconds: 12,
62
+ version: "1.2.3"
63
+ }
64
+
65
+ // Bad
66
+ GET /health -> 200 OK (just because the process is running)
67
+ ```
68
+
69
+ ## Tested Rollback
70
+
71
+ Document the rollback. THEN run it in staging. Then commit the runbook.
72
+
73
+ A rollback that's never been executed is a paper rollback.
74
+
75
+ ```
76
+ Rollback procedure for v1.2.3:
77
+ 1. Tag v1.2.2 in deploy system: kubectl rollout undo deployment/api
78
+ 2. Verify health endpoint returns version: 1.2.2
79
+ 3. Verify no DB schema rollback needed (this release was code-only)
80
+ 4. Estimated time: 90 seconds
81
+ 5. Last tested: 2026-04-15 (in staging)
82
+ ```
83
+
84
+ ## Smoke Test Post-Deploy
85
+
86
+ Automated. Runs against the live environment. Fails the deploy if it fails.
87
+
88
+ ```bash
89
+ # After deploy:
90
+ curl -sf https://api.example.com/health || rollback
91
+ curl -sf https://api.example.com/api/v1/version | grep "1.2.3" || rollback
92
+ # Critical user path:
93
+ curl -sf https://api.example.com/api/v1/auth/test || rollback
94
+ ```
95
+
96
+ ## Anti-patterns
97
+
98
+ ### Manual deploy steps
99
+ Production deploy requires a human running commands. Each step is a
100
+ chance to mess up.
101
+
102
+ **Fix**: automate end-to-end. Even the "click approve" step should be a
103
+ script that opens the right URL.
104
+
105
+ ### Paper canary
106
+ Canary deploy "label" exists, but no traffic split. Just calling something
107
+ canary doesn't make it one.
108
+
109
+ **Fix**: actually split traffic at the load balancer. 1% -> 10% -> 50% ->
110
+ 100%. Verify metrics at each step.
@@ -0,0 +1,66 @@
1
+ # HARDEN Antipatterns
2
+
3
+ ## 1. The Compliance-Only Audit
4
+
5
+ **Sample**: Auditor runs OWASP top-10 checklist; checks all boxes; ships.
6
+
7
+ **Why it fails**: OWASP top-10 is a floor, not a ceiling. A compliant
8
+ system can still leak through application-specific vulnerabilities the
9
+ checklist doesn't cover.
10
+
11
+ **Fix**: Adversarial review with named threat models. Auditor asks
12
+ "what would an attacker who has X try?" and traces the attack path
13
+ through actual code, not through a checklist.
14
+
15
+ ## 2. The Findings Without Owner
16
+
17
+ **Sample**: HARDEN/FINDINGS.md lists 12 findings. None have owners or
18
+ deadlines.
19
+
20
+ **Why it fails**: Findings without owners are graveyards. Three months
21
+ later they're still open and no one remembers why.
22
+
23
+ **Fix**: Every finding gets an owner, severity, and a deadline. CRITICAL
24
+ findings block launch. HIGH findings have a deadline within the next
25
+ sprint. Open findings auto-surface in /god-status until closed.
26
+
27
+ ## 3. The Untested Remediation
28
+
29
+ **Sample**: Finding closed because "we added validation." No test
30
+ demonstrates the validation works against the original attack.
31
+
32
+ **Why it fails**: Remediation that wasn't tested may not actually fix
33
+ the issue. Regression is invisible.
34
+
35
+ **Fix**: Each remediation lands with a regression test that fails
36
+ without the fix and passes with it. Closed findings link to the test.
37
+
38
+ ## 4. The Auth Boundary Confusion
39
+
40
+ **Sample**: The system has authentication (who you are) but the team
41
+ treats it as authorization (what you can do).
42
+
43
+ **Why it fails**: Logged-in users can take actions they should not be
44
+ allowed to. Authorization is a separate layer.
45
+
46
+ **Fix**: Document auth boundaries explicitly: identity (who), session
47
+ (active), permissions (what). Each layer has its own tests.
48
+
49
+ ## 5. The Trusted Input
50
+
51
+ **Sample**: Backend trusts data from frontend because "we control both."
52
+
53
+ **Why it fails**: Anyone can call the backend directly. Frontend
54
+ validation prevents accidents, not attacks.
55
+
56
+ **Fix**: Every input is untrusted. Validation runs on the boundary
57
+ between layers, not just at the UI.
58
+
59
+ ## 6. The Outdated Threat Model
60
+
61
+ **Sample**: Threat model written at /god-init has not been updated even
62
+ though the system added a payment integration and a public API.
63
+
64
+ **Fix**: Threat model is a living document. /god-feature, /god-deploy,
65
+ and any change touching trust boundaries triggers a HARDEN review of
66
+ the affected boundary.