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,209 @@
1
+ /**
2
+ * Browser Bridge
3
+ *
4
+ * Headless-only browser automation for runtime verification.
5
+ *
6
+ * Two backends:
7
+ * 1. agent-browser (vercel-labs CLI) - preferred. Native Rust binary,
8
+ * accessibility-tree-first, semantic locators, best AI-agent fit.
9
+ * 2. Playwright (local) - JS API fallback when agent-browser absent.
10
+ *
11
+ * Headless is non-negotiable. No interactive windows. Never. Period.
12
+ *
13
+ * Public API:
14
+ * isAgentBrowserInstalled() -> bool
15
+ * isPlaywrightInstalled() -> bool
16
+ * getActiveBackend(projectRoot) -> 'agent-browser' | 'playwright' | null
17
+ * launch(opts) -> Promise<{ browser, backend, error? }>
18
+ * newPage(browser) -> Promise<page>
19
+ * close(browser) -> Promise<void>
20
+ */
21
+
22
+ const fs = require('fs');
23
+ const path = require('path');
24
+ const { execSync } = require('child_process');
25
+
26
+ /**
27
+ * Quick presence check for vercel-labs/agent-browser CLI.
28
+ * Native Rust binary; no Node.js dep. Preferred backend when present.
29
+ *
30
+ * Detects via:
31
+ * - `agent-browser --version` on PATH
32
+ * - npm global install
33
+ * - homebrew install
34
+ */
35
+ function isAgentBrowserInstalled() {
36
+ try {
37
+ execSync('agent-browser --version', {
38
+ stdio: ['ignore', 'pipe', 'pipe'],
39
+ timeout: 5000
40
+ });
41
+ return true;
42
+ } catch (e1) {
43
+ try {
44
+ execSync('npx --no-install agent-browser --version', {
45
+ stdio: ['ignore', 'pipe', 'pipe'],
46
+ timeout: 5000
47
+ });
48
+ return true;
49
+ } catch (e2) {
50
+ return false;
51
+ }
52
+ }
53
+ }
54
+
55
+ /**
56
+ * Quick presence check for Playwright via require.resolve.
57
+ * Returns true if either `playwright` or `@playwright/test` is resolvable.
58
+ */
59
+ function isPlaywrightInstalled() {
60
+ try {
61
+ require.resolve('playwright');
62
+ return true;
63
+ } catch (e1) {
64
+ try {
65
+ require.resolve('@playwright/test');
66
+ return true;
67
+ } catch (e2) {
68
+ // Fall back: check global install
69
+ try {
70
+ execSync('npm ls -g playwright --depth=0', {
71
+ stdio: ['ignore', 'pipe', 'pipe'],
72
+ timeout: 5000
73
+ });
74
+ return true;
75
+ } catch (e3) {
76
+ return false;
77
+ }
78
+ }
79
+ }
80
+ }
81
+
82
+ /**
83
+ * Determine which backend is active.
84
+ * Cascade:
85
+ * 1. agent-browser (vercel-labs CLI) - preferred when installed.
86
+ * Native Rust binary, accessibility-tree-first, semantic locators,
87
+ * best AI-agent fit per design.
88
+ * 2. Playwright (local) - JS API fallback when agent-browser absent.
89
+ * The user can override via --backend flag at the skill layer.
90
+ */
91
+ function getActiveBackend(projectRoot) {
92
+ if (isAgentBrowserInstalled()) return 'agent-browser';
93
+ if (isPlaywrightInstalled()) return 'playwright';
94
+ return null;
95
+ }
96
+
97
+ /**
98
+ * Launch a headless browser. Returns { browser, backend, error }.
99
+ *
100
+ * In real use, this calls Playwright's `chromium.launch({ headless: true })`
101
+ * or the Vercel Browser API. In tests, opts.mock can stub the launch.
102
+ */
103
+ async function launch(opts = {}) {
104
+ const projectRoot = opts.projectRoot || process.cwd();
105
+ const requested = opts.backend || getActiveBackend(projectRoot);
106
+
107
+ if (!requested) {
108
+ return {
109
+ browser: null,
110
+ backend: null,
111
+ error: 'no-backend-available',
112
+ installInstructions: 'Recommended: npm install -g agent-browser && agent-browser install'
113
+ };
114
+ }
115
+
116
+ if (requested === 'agent-browser') {
117
+ if (!isAgentBrowserInstalled()) {
118
+ return {
119
+ browser: null,
120
+ backend: 'agent-browser',
121
+ error: 'agent-browser-not-installed',
122
+ installInstructions: 'npm install -g agent-browser && agent-browser install'
123
+ };
124
+ }
125
+ // agent-browser is CLI-driven; "browser" handle is the driver itself
126
+ const driver = require('./agent-browser-driver');
127
+ try {
128
+ await driver.openSession({ projectRoot });
129
+ return {
130
+ browser: driver, // Driver acts as the browser handle
131
+ backend: 'agent-browser',
132
+ error: null
133
+ };
134
+ } catch (e) {
135
+ return { browser: null, backend: 'agent-browser', error: 'launch-failed', message: e.message };
136
+ }
137
+ }
138
+
139
+ if (requested === 'playwright') {
140
+ if (!isPlaywrightInstalled()) {
141
+ return {
142
+ browser: null,
143
+ backend: 'playwright',
144
+ error: 'playwright-not-installed',
145
+ installInstructions: 'npm install playwright + npx playwright install chromium'
146
+ };
147
+ }
148
+ try {
149
+ // Lazy require so the module loads only when needed
150
+ const playwright = require('playwright');
151
+ const browser = await playwright.chromium.launch({
152
+ headless: true, // NEVER false. Non-negotiable.
153
+ args: opts.args || [],
154
+ timeout: opts.timeout || 30000
155
+ });
156
+ return { browser, backend: 'playwright', error: null };
157
+ } catch (e) {
158
+ return { browser: null, backend: 'playwright', error: 'launch-failed', message: e.message };
159
+ }
160
+ }
161
+
162
+ return { browser: null, backend: requested, error: 'unknown-backend' };
163
+ }
164
+
165
+ /**
166
+ * Open a new page in the launched browser.
167
+ */
168
+ async function newPage(browser) {
169
+ if (!browser) throw new Error('browser is null');
170
+ if (typeof browser.newPage !== 'function') {
171
+ throw new Error('browser does not implement newPage');
172
+ }
173
+ return browser.newPage();
174
+ }
175
+
176
+ /**
177
+ * Close a launched browser.
178
+ */
179
+ async function close(browser) {
180
+ if (!browser) return;
181
+ if (typeof browser.close === 'function') {
182
+ await browser.close();
183
+ }
184
+ }
185
+
186
+ /**
187
+ * Output dir for runtime artifacts.
188
+ */
189
+ function runtimeDir(projectRoot, runId) {
190
+ return path.join(projectRoot, '.godpowers', 'runtime', runId);
191
+ }
192
+
193
+ /**
194
+ * Generate a run id (timestamp-based).
195
+ */
196
+ function newRunId() {
197
+ return new Date().toISOString().replace(/[:.]/g, '-');
198
+ }
199
+
200
+ module.exports = {
201
+ isAgentBrowserInstalled,
202
+ isPlaywrightInstalled,
203
+ getActiveBackend,
204
+ launch,
205
+ newPage,
206
+ close,
207
+ runtimeDir,
208
+ newRunId
209
+ };
package/lib/budget.js ADDED
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Budget Helper - apply/disable/read the intent.yaml budgets block.
3
+ *
4
+ * Used by /god-budget (and any tool that wants programmatic access).
5
+ *
6
+ * The budgets block lives at `.godpowers/intent.yaml > budgets`. This
7
+ * module reads + mutates that block via a minimal YAML round-trip
8
+ * implemented on top of lib/intent.js for reads. Writes use a
9
+ * simple block-style serializer; comments outside the budgets block
10
+ * are preserved.
11
+ *
12
+ * Public API:
13
+ * defaults() -> recommended values
14
+ * read(projectRoot) -> budgets object | null
15
+ * applyOn(projectRoot) -> { applied, budgets }
16
+ * applyOff(projectRoot) -> { applied: bool, hadBudgets: bool }
17
+ * set(projectRoot, partial) -> merged budgets
18
+ * summary(budgets) -> string for display
19
+ */
20
+
21
+ const fs = require('fs');
22
+ const path = require('path');
23
+
24
+ const intent = require('./intent');
25
+
26
+ const DEFAULTS = {
27
+ 'default-max-tokens': 80000,
28
+ 'model-profile': 'standard',
29
+ cache: true,
30
+ 'cache-ttl-hours': 24
31
+ };
32
+
33
+ function defaults() {
34
+ return JSON.parse(JSON.stringify(DEFAULTS));
35
+ }
36
+
37
+ function intentPath(projectRoot) {
38
+ return path.join(projectRoot, '.godpowers', 'intent.yaml');
39
+ }
40
+
41
+ /**
42
+ * Read the budgets block. Returns null when intent.yaml is missing,
43
+ * empty object when present but no budgets block.
44
+ */
45
+ function read(projectRoot) {
46
+ const i = intent.read(projectRoot);
47
+ if (!i) return null;
48
+ return i.budgets || {};
49
+ }
50
+
51
+ /**
52
+ * Write a full budgets block, replacing any existing one. Preserves
53
+ * all other intent.yaml content via text-level surgery (not a full
54
+ * YAML round-trip).
55
+ */
56
+ function writeBlock(projectRoot, newBudgets) {
57
+ const file = intentPath(projectRoot);
58
+ fs.mkdirSync(path.dirname(file), { recursive: true });
59
+
60
+ let raw = fs.existsSync(file) ? fs.readFileSync(file, 'utf8') : '';
61
+ if (!raw.trim()) {
62
+ // Bootstrap a minimal intent.yaml
63
+ raw = 'apiVersion: godpowers/v1\nkind: Project\nmetadata:\n name: unnamed\nmode: A\nscale: small\n';
64
+ }
65
+
66
+ const yaml = newBudgets ? renderBudgets(newBudgets) : '';
67
+ const stripped = stripBudgets(raw);
68
+ const out = stripped.endsWith('\n') ? stripped + yaml : stripped + '\n' + yaml;
69
+ fs.writeFileSync(file, out);
70
+ return out;
71
+ }
72
+
73
+ /**
74
+ * Strip an existing budgets block from raw intent.yaml text.
75
+ */
76
+ function stripBudgets(raw) {
77
+ const lines = raw.split('\n');
78
+ const out = [];
79
+ let inBudgets = false;
80
+ for (const line of lines) {
81
+ if (/^budgets\s*:/.test(line)) { inBudgets = true; continue; }
82
+ if (inBudgets) {
83
+ // End of block when we hit a non-indented non-empty line
84
+ if (/^\S/.test(line)) { inBudgets = false; out.push(line); continue; }
85
+ // Skip block lines
86
+ continue;
87
+ }
88
+ out.push(line);
89
+ }
90
+ return out.join('\n').replace(/\n{3,}/g, '\n\n');
91
+ }
92
+
93
+ /**
94
+ * Render a budgets block as YAML text. Handles the canonical shape:
95
+ *
96
+ * budgets:
97
+ * default-max-tokens: 80000
98
+ * model-profile: standard
99
+ * cache: true
100
+ * cache-ttl-hours: 24
101
+ * agents:
102
+ * god-architect:
103
+ * max-tokens: 120000
104
+ */
105
+ function renderBudgets(b) {
106
+ const lines = ['budgets:'];
107
+ for (const k of ['default-max-tokens', 'model-profile', 'cache', 'cache-ttl-hours']) {
108
+ if (b[k] !== undefined) lines.push(` ${k}: ${formatValue(b[k])}`);
109
+ }
110
+ if (b.agents && Object.keys(b.agents).length > 0) {
111
+ lines.push(' agents:');
112
+ for (const [name, override] of Object.entries(b.agents)) {
113
+ lines.push(` ${name}:`);
114
+ for (const [k, v] of Object.entries(override)) {
115
+ lines.push(` ${k}: ${formatValue(v)}`);
116
+ }
117
+ }
118
+ }
119
+ return lines.join('\n') + '\n';
120
+ }
121
+
122
+ function formatValue(v) {
123
+ if (typeof v === 'boolean') return v ? 'true' : 'false';
124
+ if (typeof v === 'number') return String(v);
125
+ // String: quote only if it contains special chars
126
+ const s = String(v);
127
+ if (/[:#\s]/.test(s)) return JSON.stringify(s);
128
+ return s;
129
+ }
130
+
131
+ /**
132
+ * Apply the recommended defaults (the "--on" path). Idempotent.
133
+ *
134
+ * If a budgets block already exists with all keys set, no-op.
135
+ * Otherwise merge defaults onto the existing block.
136
+ */
137
+ function applyOn(projectRoot) {
138
+ const current = read(projectRoot) || {};
139
+ const merged = { ...defaults(), ...current };
140
+ // Always force cache: true on --on
141
+ merged.cache = true;
142
+ writeBlock(projectRoot, merged);
143
+ return { applied: true, budgets: merged };
144
+ }
145
+
146
+ /**
147
+ * Remove the entire budgets block (the "--off" path).
148
+ *
149
+ * Cache files on disk are not removed (use /god-cache-clear to free
150
+ * space). Subsequent runs use built-in defaults: no cap, no cache.
151
+ */
152
+ function applyOff(projectRoot) {
153
+ const had = read(projectRoot);
154
+ const hadAny = had && Object.keys(had).length > 0;
155
+ writeBlock(projectRoot, null);
156
+ return { applied: true, hadBudgets: !!hadAny };
157
+ }
158
+
159
+ /**
160
+ * Update a subset of fields. Examples:
161
+ * set(root, { 'default-max-tokens': 60000 })
162
+ * set(root, { agents: { 'god-pm': { 'max-tokens': 100000 } } })
163
+ */
164
+ function set(projectRoot, partial) {
165
+ const current = read(projectRoot) || {};
166
+ const merged = { ...current };
167
+ for (const [k, v] of Object.entries(partial)) {
168
+ if (k === 'agents') {
169
+ merged.agents = { ...(current.agents || {}), ...v };
170
+ } else {
171
+ merged[k] = v;
172
+ }
173
+ }
174
+ writeBlock(projectRoot, merged);
175
+ return merged;
176
+ }
177
+
178
+ /**
179
+ * Plain-English summary for the /god-budget no-arg view.
180
+ */
181
+ function summary(budgets) {
182
+ if (!budgets || Object.keys(budgets).length === 0) {
183
+ return 'Budgets: not configured. Built-in defaults apply (no cap, no cache).\n' +
184
+ 'Enable with /god-budget --on';
185
+ }
186
+ const lines = ['GODPOWERS BUDGETS', ''];
187
+ lines.push(` Max input tokens per agent: ${budgets['default-max-tokens'] || '(none)'}`);
188
+ lines.push(` Model profile: ${budgets['model-profile'] || 'standard'}`);
189
+ lines.push(` Cache: ${budgets.cache ? 'on' : 'off'}`);
190
+ if (budgets['cache-ttl-hours']) {
191
+ lines.push(` Cache TTL: ${budgets['cache-ttl-hours']} hours`);
192
+ }
193
+ if (budgets.agents && Object.keys(budgets.agents).length > 0) {
194
+ lines.push('');
195
+ lines.push(' Per-agent overrides:');
196
+ for (const [name, ov] of Object.entries(budgets.agents)) {
197
+ const bits = Object.entries(ov).map(([k, v]) => `${k}=${v}`).join(', ');
198
+ lines.push(` ${name}: ${bits}`);
199
+ }
200
+ }
201
+ return lines.join('\n');
202
+ }
203
+
204
+ module.exports = {
205
+ defaults,
206
+ read,
207
+ applyOn,
208
+ applyOff,
209
+ set,
210
+ summary,
211
+ writeBlock,
212
+ stripBudgets,
213
+ renderBudgets,
214
+ DEFAULTS
215
+ };