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
package/bin/install.js ADDED
@@ -0,0 +1,514 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Godpowers Installer
5
+ *
6
+ * Installs Godpowers globally for supported AI coding tools.
7
+ * Usage: npx godpowers [options]
8
+ */
9
+
10
+ const fs = require('fs');
11
+ const path = require('path');
12
+ const os = require('os');
13
+
14
+ const VERSION = require('../package.json').version;
15
+
16
+ const BANNER = `
17
+ ██████╗ ██████╗ ██████╗
18
+ ██╔════╝ ██╔═══██╗██╔══██╗
19
+ ██║ ███╗██║ ██║██║ ██║
20
+ ██║ ██║██║ ██║██║ ██║
21
+ ╚██████╔╝╚██████╔╝██████╔╝
22
+ ╚═════╝ ╚═════╝ ╚═════╝
23
+ GODPOWERS v${VERSION}
24
+ Ship fast. Ship right. Ship everything.
25
+ `;
26
+
27
+ const RUNTIMES = {
28
+ claude: {
29
+ name: 'Claude Code',
30
+ configDir: path.join(os.homedir(), '.claude'),
31
+ skillsDir: 'skills',
32
+ configFile: null,
33
+ },
34
+ codex: {
35
+ name: 'Codex',
36
+ configDir: path.join(os.homedir(), '.codex'),
37
+ skillsDir: 'skills',
38
+ configFile: 'config.toml',
39
+ },
40
+ cursor: {
41
+ name: 'Cursor',
42
+ configDir: path.join(os.homedir(), '.cursor'),
43
+ skillsDir: 'rules',
44
+ configFile: null,
45
+ },
46
+ windsurf: {
47
+ name: 'Windsurf',
48
+ configDir: path.join(os.homedir(), '.windsurf'),
49
+ skillsDir: 'rules',
50
+ configFile: null,
51
+ },
52
+ opencode: {
53
+ name: 'OpenCode',
54
+ configDir: path.join(os.homedir(), '.opencode'),
55
+ skillsDir: 'skills',
56
+ configFile: null,
57
+ },
58
+ gemini: {
59
+ name: 'Gemini CLI',
60
+ configDir: path.join(os.homedir(), '.gemini'),
61
+ skillsDir: 'skills',
62
+ configFile: null,
63
+ },
64
+ copilot: {
65
+ name: 'GitHub Copilot',
66
+ configDir: path.join(os.homedir(), '.copilot'),
67
+ skillsDir: 'skills',
68
+ configFile: null,
69
+ },
70
+ augment: {
71
+ name: 'Augment',
72
+ configDir: path.join(os.homedir(), '.augment'),
73
+ skillsDir: 'skills',
74
+ configFile: null,
75
+ },
76
+ trae: {
77
+ name: 'Trae',
78
+ configDir: path.join(os.homedir(), '.trae'),
79
+ skillsDir: 'skills',
80
+ configFile: null,
81
+ },
82
+ cline: {
83
+ name: 'Cline',
84
+ configDir: path.join(os.homedir(), '.cline'),
85
+ skillsDir: 'skills',
86
+ configFile: null,
87
+ },
88
+ kilo: {
89
+ name: 'Kilo',
90
+ configDir: path.join(os.homedir(), '.kilo'),
91
+ skillsDir: 'skills',
92
+ configFile: null,
93
+ },
94
+ antigravity: {
95
+ name: 'Antigravity',
96
+ configDir: path.join(os.homedir(), '.antigravity'),
97
+ skillsDir: 'skills',
98
+ configFile: null,
99
+ },
100
+ qwen: {
101
+ name: 'Qwen Code',
102
+ configDir: path.join(os.homedir(), '.qwen'),
103
+ skillsDir: 'skills',
104
+ configFile: null,
105
+ },
106
+ codebuddy: {
107
+ name: 'CodeBuddy',
108
+ configDir: path.join(os.homedir(), '.codebuddy'),
109
+ skillsDir: 'skills',
110
+ configFile: null,
111
+ },
112
+ pi: {
113
+ name: 'Pi',
114
+ configDir: path.join(os.homedir(), '.pi'),
115
+ skillsDir: 'skills',
116
+ configFile: null,
117
+ },
118
+ };
119
+
120
+ // ---------------------------------------------------------------------------
121
+ // Helpers
122
+ // ---------------------------------------------------------------------------
123
+
124
+ function log(msg) {
125
+ console.log(` ${msg}`);
126
+ }
127
+
128
+ function success(msg) {
129
+ console.log(` \x1b[32m+\x1b[0m ${msg}`);
130
+ }
131
+
132
+ function warn(msg) {
133
+ console.log(` \x1b[33m!\x1b[0m ${msg}`);
134
+ }
135
+
136
+ function error(msg) {
137
+ console.error(` \x1b[31mx\x1b[0m ${msg}`);
138
+ }
139
+
140
+ function ensureDir(dir) {
141
+ if (!fs.existsSync(dir)) {
142
+ fs.mkdirSync(dir, { recursive: true });
143
+ }
144
+ }
145
+
146
+ function copyRecursive(src, dest) {
147
+ ensureDir(dest);
148
+ const entries = fs.readdirSync(src, { withFileTypes: true });
149
+ for (const entry of entries) {
150
+ const srcPath = path.join(src, entry.name);
151
+ const destPath = path.join(dest, entry.name);
152
+ if (entry.isDirectory()) {
153
+ copyRecursive(srcPath, destPath);
154
+ } else {
155
+ fs.copyFileSync(srcPath, destPath);
156
+ }
157
+ }
158
+ }
159
+
160
+ // ---------------------------------------------------------------------------
161
+ // Parse args
162
+ // ---------------------------------------------------------------------------
163
+
164
+ function parseArgs(argv) {
165
+ const args = argv.slice(2);
166
+ const opts = {
167
+ runtimes: [],
168
+ global: false,
169
+ local: false,
170
+ all: false,
171
+ help: false,
172
+ uninstall: false,
173
+ };
174
+
175
+ for (const arg of args) {
176
+ switch (arg) {
177
+ case '-g':
178
+ case '--global':
179
+ opts.global = true;
180
+ break;
181
+ case '-l':
182
+ case '--local':
183
+ opts.local = true;
184
+ break;
185
+ case '--all':
186
+ opts.all = true;
187
+ break;
188
+ case '-h':
189
+ case '--help':
190
+ opts.help = true;
191
+ break;
192
+ case '-u':
193
+ case '--uninstall':
194
+ opts.uninstall = true;
195
+ break;
196
+ default:
197
+ if (arg.startsWith('--') && RUNTIMES[arg.slice(2)]) {
198
+ opts.runtimes.push(arg.slice(2));
199
+ }
200
+ break;
201
+ }
202
+ }
203
+
204
+ return opts;
205
+ }
206
+
207
+ // ---------------------------------------------------------------------------
208
+ // Install
209
+ // ---------------------------------------------------------------------------
210
+
211
+ function installForRuntime(runtimeKey, srcDir) {
212
+ const runtime = RUNTIMES[runtimeKey];
213
+ if (!runtime) {
214
+ error(`Unknown runtime: ${runtimeKey}`);
215
+ return false;
216
+ }
217
+
218
+ log(`\n Installing for \x1b[36m${runtime.name}\x1b[0m to \x1b[36m${runtime.configDir}\x1b[0m\n`);
219
+
220
+ ensureDir(runtime.configDir);
221
+
222
+ // 1. Install slash command skills to skills/
223
+ // Each skill in skills/ becomes a slash command (e.g. /god-mode)
224
+ const skillsSrc = path.join(srcDir, 'skills');
225
+ const skillsDest = path.join(runtime.configDir, runtime.skillsDir);
226
+ if (fs.existsSync(skillsSrc)) {
227
+ ensureDir(skillsDest);
228
+ let count = 0;
229
+ for (const file of fs.readdirSync(skillsSrc)) {
230
+ if (file.endsWith('.md')) {
231
+ fs.copyFileSync(path.join(skillsSrc, file), path.join(skillsDest, file));
232
+ count++;
233
+ }
234
+ }
235
+ success(`Installed ${count} slash commands to skills/`);
236
+ }
237
+
238
+ // 2. Install specialist agents to agents/
239
+ // Each agent is spawnable from a skill (e.g., god-pm, god-architect, god-executor)
240
+ const agentsSrc = path.join(srcDir, 'agents');
241
+ const agentsDest = path.join(runtime.configDir, 'agents');
242
+ if (fs.existsSync(agentsSrc)) {
243
+ ensureDir(agentsDest);
244
+ let count = 0;
245
+ for (const file of fs.readdirSync(agentsSrc)) {
246
+ if (file.endsWith('.md')) {
247
+ fs.copyFileSync(path.join(agentsSrc, file), path.join(agentsDest, file));
248
+ count++;
249
+ }
250
+ }
251
+ success(`Installed ${count} specialist agents to agents/`);
252
+ }
253
+
254
+ // 3. Install the master SKILL.md (always-on context)
255
+ const masterSkill = path.join(srcDir, 'SKILL.md');
256
+ if (fs.existsSync(masterSkill)) {
257
+ const masterDest = path.join(skillsDest, 'godpowers.md');
258
+ fs.copyFileSync(masterSkill, masterDest);
259
+ success('Installed master SKILL.md as godpowers.md');
260
+ }
261
+
262
+ // 4. Install templates
263
+ const templatesSrc = path.join(srcDir, 'templates');
264
+ if (fs.existsSync(templatesSrc)) {
265
+ const templatesDest = path.join(runtime.configDir, 'godpowers-templates');
266
+ copyRecursive(templatesSrc, templatesDest);
267
+ success('Installed templates/');
268
+ }
269
+
270
+ // 4b. Install references (HAVE-NOTS catalog and per-tier antipatterns)
271
+ const referencesSrc = path.join(srcDir, 'references');
272
+ if (fs.existsSync(referencesSrc)) {
273
+ const referencesDest = path.join(runtime.configDir, 'godpowers-references');
274
+ copyRecursive(referencesSrc, referencesDest);
275
+ success('Installed references/');
276
+ }
277
+
278
+ // 4c. Install workflows (declarative YAML for /god-mode and friends)
279
+ const workflowsSrc = path.join(srcDir, 'workflows');
280
+ if (fs.existsSync(workflowsSrc)) {
281
+ const workflowsDest = path.join(runtime.configDir, 'godpowers-workflows');
282
+ copyRecursive(workflowsSrc, workflowsDest);
283
+ success('Installed workflows/');
284
+ }
285
+
286
+ // 4d. Install schemas (for validation)
287
+ const schemaSrc = path.join(srcDir, 'schema');
288
+ if (fs.existsSync(schemaSrc)) {
289
+ const schemaDest = path.join(runtime.configDir, 'godpowers-schema');
290
+ copyRecursive(schemaSrc, schemaDest);
291
+ success('Installed schema/');
292
+ }
293
+
294
+ // 4e. Install routing definitions (per-command prerequisites + next-suggestions)
295
+ const routingSrc = path.join(srcDir, 'routing');
296
+ if (fs.existsSync(routingSrc)) {
297
+ const routingDest = path.join(runtime.configDir, 'godpowers-routing');
298
+ copyRecursive(routingSrc, routingDest);
299
+ success('Installed routing/');
300
+ }
301
+
302
+ // 5. Install hooks (Claude Code only for now)
303
+ if (runtimeKey === 'claude') {
304
+ const hooksSrc = path.join(srcDir, 'hooks');
305
+ const hooksDest = path.join(runtime.configDir, 'hooks');
306
+ if (fs.existsSync(hooksSrc)) {
307
+ ensureDir(hooksDest);
308
+ for (const file of fs.readdirSync(hooksSrc)) {
309
+ const src = path.join(hooksSrc, file);
310
+ const dest = path.join(hooksDest, file);
311
+ fs.copyFileSync(src, dest);
312
+ try { fs.chmodSync(dest, 0o755); } catch (e) {}
313
+ }
314
+ success('Installed hooks/');
315
+ }
316
+ }
317
+
318
+ // 6. Write VERSION
319
+ fs.writeFileSync(path.join(runtime.configDir, 'GODPOWERS_VERSION'), VERSION);
320
+ success(`Wrote GODPOWERS_VERSION (${VERSION})`);
321
+
322
+ return true;
323
+ }
324
+
325
+ // ---------------------------------------------------------------------------
326
+ // Uninstall
327
+ // ---------------------------------------------------------------------------
328
+
329
+ function uninstallForRuntime(runtimeKey) {
330
+ const runtime = RUNTIMES[runtimeKey];
331
+ if (!runtime) {
332
+ error(`Unknown runtime: ${runtimeKey}`);
333
+ return false;
334
+ }
335
+
336
+ log(`\n Uninstalling from \x1b[36m${runtime.name}\x1b[0m at \x1b[36m${runtime.configDir}\x1b[0m\n`);
337
+
338
+ const skillsDir = path.join(runtime.configDir, runtime.skillsDir);
339
+ const agentsDir = path.join(runtime.configDir, 'agents');
340
+ const templatesDir = path.join(runtime.configDir, 'godpowers-templates');
341
+ const referencesDir = path.join(runtime.configDir, 'godpowers-references');
342
+ const versionFile = path.join(runtime.configDir, 'GODPOWERS_VERSION');
343
+
344
+ let removed = 0;
345
+
346
+ // Remove all god-* skills
347
+ if (fs.existsSync(skillsDir)) {
348
+ for (const file of fs.readdirSync(skillsDir)) {
349
+ if (file.startsWith('god-') || file === 'godpowers.md') {
350
+ fs.unlinkSync(path.join(skillsDir, file));
351
+ removed++;
352
+ }
353
+ }
354
+ success(`Removed ${removed} god-* skill(s)`);
355
+ }
356
+
357
+ // Remove all god-* agents
358
+ let agentsRemoved = 0;
359
+ if (fs.existsSync(agentsDir)) {
360
+ for (const file of fs.readdirSync(agentsDir)) {
361
+ if (file.startsWith('god-')) {
362
+ fs.unlinkSync(path.join(agentsDir, file));
363
+ agentsRemoved++;
364
+ }
365
+ }
366
+ success(`Removed ${agentsRemoved} god-* agent(s)`);
367
+ }
368
+
369
+ // Remove templates and references directories
370
+ if (fs.existsSync(templatesDir)) {
371
+ fs.rmSync(templatesDir, { recursive: true, force: true });
372
+ success('Removed godpowers-templates/');
373
+ }
374
+ if (fs.existsSync(referencesDir)) {
375
+ fs.rmSync(referencesDir, { recursive: true, force: true });
376
+ success('Removed godpowers-references/');
377
+ }
378
+
379
+ // Remove hooks (Claude Code only)
380
+ if (runtimeKey === 'claude') {
381
+ const hooksDir = path.join(runtime.configDir, 'hooks');
382
+ for (const hook of ['session-start.sh', 'pre-tool-use.sh']) {
383
+ const hookPath = path.join(hooksDir, hook);
384
+ if (fs.existsSync(hookPath)) {
385
+ fs.unlinkSync(hookPath);
386
+ success(`Removed hooks/${hook}`);
387
+ }
388
+ }
389
+ }
390
+
391
+ if (fs.existsSync(versionFile)) {
392
+ fs.unlinkSync(versionFile);
393
+ }
394
+
395
+ return true;
396
+ }
397
+
398
+ function showHelp() {
399
+ console.log(BANNER);
400
+ log('Usage: npx godpowers [options]\n');
401
+ log('Options:');
402
+ log(' -g, --global Install globally (to config directory)');
403
+ log(' -l, --local Install locally (to current directory)');
404
+ log(' --claude Install for Claude Code');
405
+ log(' --codex Install for Codex');
406
+ log(' --cursor Install for Cursor');
407
+ log(' --windsurf Install for Windsurf');
408
+ log(' --opencode Install for OpenCode');
409
+ log(' --gemini Install for Gemini CLI');
410
+ log(' --copilot Install for GitHub Copilot');
411
+ log(' --augment Install for Augment');
412
+ log(' --trae Install for Trae');
413
+ log(' --cline Install for Cline');
414
+ log(' --kilo Install for Kilo');
415
+ log(' --antigravity Install for Antigravity');
416
+ log(' --qwen Install for Qwen Code');
417
+ log(' --codebuddy Install for CodeBuddy');
418
+ log(' --pi Install for Pi');
419
+ log(' --all Install for all 15 runtimes');
420
+ log(' -u, --uninstall Uninstall Godpowers');
421
+ log(' -h, --help Show this help message');
422
+ log('');
423
+ log('Examples:');
424
+ log(' npx godpowers --claude --global');
425
+ log(' npx godpowers --all');
426
+ log(' npx godpowers --codex --cursor');
427
+ }
428
+
429
+ // ---------------------------------------------------------------------------
430
+ // Main
431
+ // ---------------------------------------------------------------------------
432
+
433
+ function main() {
434
+ const opts = parseArgs(process.argv);
435
+
436
+ if (opts.help) {
437
+ showHelp();
438
+ process.exit(0);
439
+ }
440
+
441
+ console.log(BANNER);
442
+
443
+ const srcDir = path.resolve(__dirname, '..');
444
+
445
+ // Detect non-interactive and default to claude global
446
+ if (opts.runtimes.length === 0 && !opts.all) {
447
+ if (!process.stdin.isTTY) {
448
+ warn('Non-interactive terminal detected, defaulting to Claude Code global install');
449
+ opts.runtimes = ['claude'];
450
+ opts.global = true;
451
+ } else {
452
+ // Interactive mode: default to claude
453
+ opts.runtimes = ['claude'];
454
+ opts.global = true;
455
+ }
456
+ }
457
+
458
+ if (opts.all) {
459
+ opts.runtimes = Object.keys(RUNTIMES);
460
+ }
461
+
462
+ // Handle uninstall
463
+ if (opts.uninstall) {
464
+ let removed = 0;
465
+ for (const runtime of opts.runtimes) {
466
+ if (uninstallForRuntime(runtime)) {
467
+ removed++;
468
+ }
469
+ }
470
+ log('');
471
+ if (removed > 0) {
472
+ log(`\x1b[32mUninstalled\x1b[0m from ${removed} runtime(s).`);
473
+ } else {
474
+ warn('No runtimes uninstalled.');
475
+ }
476
+ log('');
477
+ return;
478
+ }
479
+
480
+ let installed = 0;
481
+ for (const runtime of opts.runtimes) {
482
+ if (installForRuntime(runtime, srcDir)) {
483
+ installed++;
484
+ }
485
+ }
486
+
487
+ if (installed > 0) {
488
+ // Count slash commands for verification message
489
+ const skillsCount = fs.readdirSync(path.join(srcDir, 'skills')).filter(f => f.endsWith('.md')).length;
490
+ const agentsCount = fs.readdirSync(path.join(srcDir, 'agents')).filter(f => f.endsWith('.md')).length;
491
+
492
+ log('');
493
+ log(`\x1b[32mDone!\x1b[0m Installed Godpowers v${VERSION} for ${installed} runtime(s).`);
494
+ log('');
495
+ log(`\x1b[36mInstalled:\x1b[0m`);
496
+ log(` ${skillsCount} slash commands (try: /god-mode, /god-next, /god-status)`);
497
+ log(` ${agentsCount} specialist agents`);
498
+ log(` Templates and references for artifact discipline`);
499
+ log('');
500
+ log(`\x1b[36mNext steps:\x1b[0m`);
501
+ log(` 1. Open your AI coding tool in any project directory`);
502
+ log(` 2. Type: \x1b[36m/god-mode\x1b[0m for full autonomous arc`);
503
+ log(` Or: \x1b[36m/god-next\x1b[0m to see what to run next`);
504
+ log(` Or: \x1b[36m/god-init\x1b[0m to start a new project`);
505
+ log('');
506
+ log(`\x1b[36mDocs:\x1b[0m https://github.com/godpowers/godpowers`);
507
+ log('');
508
+ } else {
509
+ error('No runtimes installed. Run with --help for usage.');
510
+ process.exit(1);
511
+ }
512
+ }
513
+
514
+ main();
@@ -0,0 +1,33 @@
1
+ # @godpowers/data-pack
2
+
3
+ Data engineering specialists for Godpowers.
4
+
5
+ ## What it adds
6
+
7
+ | Slash command | Agent | What it knows |
8
+ |---|---|---|
9
+ | `/god-etl` | god-etl-engineer | Idempotent transforms, dead-letter, backfill, lag SLOs |
10
+ | `/god-ml-feature` | god-ml-feature-engineer | Training-serving consistency, freshness, drift |
11
+ | `/god-dashboard` | god-dashboard-builder | Question-per-chart, action-per-question, deploy annotations |
12
+
13
+ Plus 3 workflows and 18 data-specific have-nots.
14
+
15
+ ## When to use
16
+
17
+ - Building data infrastructure (warehouses, lakes, feature stores)
18
+ - Adding ML to a product (use /god-ml-feature before /god-build for the model)
19
+ - Standing up internal dashboards (refuses vanity-metric dashboards)
20
+
21
+ ## Install (v0.8+)
22
+
23
+ ```
24
+ /god-extension-add @godpowers/data-pack
25
+ ```
26
+
27
+ ## Status
28
+
29
+ Scaffold ready in v0.4. Full implementation in v0.8.
30
+
31
+ ## License
32
+
33
+ MIT
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: god-dashboard-builder
3
+ version: 1.0.0
4
+ description: |
5
+ Dashboard builder. Every chart tied to a question. Every question tied to
6
+ an action. Refuses vanity metrics and dashboards that just exist.
7
+
8
+ Spawned by: /god-dashboard
9
+ Extension: @godpowers/data-pack
10
+ tools: Read, Write, Edit, Bash, Grep, Glob
11
+ ---
12
+
13
+ # God Dashboard Builder
14
+
15
+ Build dashboards people actually use.
16
+
17
+ ## Process
18
+
19
+ ### 1. Audience
20
+ - Who looks at this dashboard?
21
+ - How often?
22
+ - What action will they take based on what they see?
23
+
24
+ If the answer is "no specific action", the dashboard is vanity. Don't build it.
25
+
26
+ ### 2. Question per chart
27
+ Every chart answers ONE question:
28
+ - "Are we hitting the SLO?" -> error rate over time
29
+ - "Where are users dropping off?" -> funnel chart
30
+ - "Is revenue growing?" -> MRR over time
31
+
32
+ If a chart doesn't answer a question, delete it.
33
+
34
+ ### 3. Annotation
35
+ - Every chart has a title that states the question
36
+ - Every chart has a target line or threshold (where applicable)
37
+ - Deploys annotated on the chart (so you can see deploy-related changes)
38
+
39
+ ### 4. Refresh and freshness
40
+ - Documented update frequency
41
+ - Stale data indicator (if data is older than expected, show it)
42
+
43
+ ## Output
44
+
45
+ Write `.godpowers/data/dashboards/<dashboard-name>/SPEC.md`.
46
+
47
+ ## Have-Nots
48
+
49
+ #### DASH-01 Vanity metric
50
+ Chart shows a metric with no associated action. Fail.
51
+
52
+ #### DASH-02 No question per chart
53
+ Chart title is just a metric name, not a question. Fail.
54
+
55
+ #### DASH-03 No threshold
56
+ Chart shows a metric with a target but no visible threshold line. Fail.
57
+
58
+ #### DASH-04 No deploy annotations
59
+ Production dashboards without deploy markers. Hard to correlate changes
60
+ with code. Fail.
61
+
62
+ #### DASH-05 No staleness indicator
63
+ Stale data displayed as fresh. Misleading. Fail.
64
+
65
+ #### DASH-06 Dashboard sprawl
66
+ More than 7 charts on one dashboard. Cognitive overload. Fail.
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: god-etl-engineer
3
+ version: 1.0.0
4
+ description: |
5
+ ETL pipeline engineer. Designs idempotent, observable, recoverable
6
+ data pipelines. Refuses non-idempotent transforms and silent failures.
7
+
8
+ Spawned by: /god-etl
9
+ Extension: @godpowers/data-pack
10
+ tools: Read, Write, Edit, Bash, Grep, Glob
11
+ ---
12
+
13
+ # God ETL Engineer
14
+
15
+ Build ETL pipelines that don't lie about success.
16
+
17
+ ## Process
18
+
19
+ ### 1. Source contract
20
+ - What system are we extracting from?
21
+ - What's the rate of change? Append-only or mutable?
22
+ - What's the SLA on the source (uptime, latency)?
23
+
24
+ ### 2. Transform contract
25
+ - Idempotent (same input -> same output, every time)
26
+ - Deterministic (no wall-clock dependencies in business logic)
27
+ - Versioned (schema changes are explicit)
28
+ - Observable (every transform emits metrics: rows in, rows out, rows dropped)
29
+
30
+ ### 3. Load contract
31
+ - Atomic (all-or-nothing per batch)
32
+ - Resumable (re-running a failed job doesn't double-write)
33
+ - Reversible (can roll back a bad batch)
34
+
35
+ ### 4. Operational
36
+ - Retry with exponential backoff
37
+ - Dead-letter queue for poison records
38
+ - Backfill capability (re-run for historical date ranges)
39
+ - Lag SLO and alerting
40
+
41
+ ## Output
42
+
43
+ Write `.godpowers/data/etl/<pipeline-name>/PIPELINE.md` with the contract
44
+ and operational runbook.
45
+
46
+ ## Have-Nots
47
+
48
+ #### ETL-01 Non-idempotent transform
49
+ Re-running produces different output. Fail.
50
+
51
+ #### ETL-02 No dead-letter
52
+ Bad records crash the pipeline instead of being quarantined. Fail.
53
+
54
+ #### ETL-03 No backfill capability
55
+ Cannot re-run for a historical date range. Fail.
56
+
57
+ #### ETL-04 Wall-clock dependency
58
+ Transform uses `now()` mid-pipeline, making backfills wrong. Fail.
59
+
60
+ #### ETL-05 No lag SLO
61
+ Pipeline running but no SLO on freshness. Stale data shipped silently. Fail.
62
+
63
+ #### ETL-06 No row-count metrics
64
+ Pipeline emits no metrics on rows processed/dropped. Silent failure mode. Fail.