@workerstack/repo 0.0.0-stage → 0.1.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 (438) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/LICENSE +21 -0
  3. package/README.md +0 -3
  4. package/agents/global-settings/antigravity.json +3 -0
  5. package/agents/global-settings/claude.json +6 -0
  6. package/agents/global-settings/codex.toml +2 -0
  7. package/agents/global-settings/cursor.json +3 -0
  8. package/agents/global-settings/grok.toml +36 -0
  9. package/agents/global-settings/manifest.json +36 -0
  10. package/agents/grok/hooks/orchestrate-parent.json +60 -0
  11. package/agents/grok/hooks/rtk.json +16 -0
  12. package/agents/grok/hooks/rulesync.json +3 -0
  13. package/agents/grok/roles/scout.toml +5 -0
  14. package/agents/hooks.jsonc +67 -0
  15. package/agents/mcp-policy.jsonc +16 -0
  16. package/agents/rules/overview.md +21 -0
  17. package/agents/settings/claude.json +5 -0
  18. package/agents/skills/ask/SKILL.md +13 -0
  19. package/agents/skills/auto/SKILL.md +13 -0
  20. package/agents/skills/away/SKILL.md +19 -0
  21. package/agents/skills/blast-radius/SKILL.md +54 -0
  22. package/agents/skills/bro/SKILL.md +9 -0
  23. package/agents/skills/browser/SKILL.md +16 -0
  24. package/agents/skills/clasp/SKILL.md +11 -0
  25. package/agents/skills/commit/SKILL.md +35 -0
  26. package/agents/skills/commit-and-push/SKILL.md +9 -0
  27. package/agents/skills/commit-push/SKILL.md +59 -0
  28. package/agents/skills/commit-push-deploy/SKILL.md +74 -0
  29. package/agents/skills/commit-push-release/SKILL.md +75 -0
  30. package/agents/skills/correct/SKILL.md +39 -0
  31. package/agents/skills/do/SKILL.md +21 -0
  32. package/agents/skills/explain/SKILL.md +13 -0
  33. package/agents/skills/google-workspace/SKILL.md +12 -0
  34. package/agents/skills/handoff/SKILL.md +81 -0
  35. package/agents/skills/implement-plan/SKILL.md +29 -0
  36. package/agents/skills/implement-roadmap/SKILL.md +27 -0
  37. package/agents/skills/jev/SKILL.md +17 -0
  38. package/agents/skills/listen/SKILL.md +15 -0
  39. package/agents/skills/pickup/SKILL.md +58 -0
  40. package/agents/skills/principle-attack-the-premise/SKILL.md +24 -0
  41. package/agents/skills/principle-boundary-discipline/SKILL.md +38 -0
  42. package/agents/skills/principle-build-the-lever/SKILL.md +28 -0
  43. package/agents/skills/principle-encode-lessons-in-structure/SKILL.md +15 -0
  44. package/agents/skills/principle-exhaust-the-design-space/SKILL.md +12 -0
  45. package/agents/skills/principle-experience-first/SKILL.md +22 -0
  46. package/agents/skills/principle-explain-the-number/SKILL.md +21 -0
  47. package/agents/skills/principle-fix-root-causes/SKILL.md +24 -0
  48. package/agents/skills/principle-foundational-thinking/SKILL.md +25 -0
  49. package/agents/skills/principle-guard-the-context-window/SKILL.md +16 -0
  50. package/agents/skills/principle-laziness-protocol/SKILL.md +13 -0
  51. package/agents/skills/principle-make-operations-idempotent/SKILL.md +25 -0
  52. package/agents/skills/principle-migrate-callers-then-delete-legacy-apis/SKILL.md +18 -0
  53. package/agents/skills/principle-minimize-reader-load/SKILL.md +22 -0
  54. package/agents/skills/principle-model-the-domain/SKILL.md +26 -0
  55. package/agents/skills/principle-never-block-on-the-human/SKILL.md +17 -0
  56. package/agents/skills/principle-outcome-oriented-execution/SKILL.md +25 -0
  57. package/agents/skills/principle-prove-it-works/SKILL.md +25 -0
  58. package/agents/skills/principle-redesign-from-first-principles/SKILL.md +18 -0
  59. package/agents/skills/principle-separate-before-serializing-shared-state/SKILL.md +20 -0
  60. package/agents/skills/principle-sequence-verifiable-units/SKILL.md +22 -0
  61. package/agents/skills/principle-subtract-before-you-add/SKILL.md +21 -0
  62. package/agents/skills/principle-test-behavior-not-implementation/SKILL.md +24 -0
  63. package/agents/skills/principle-type-system-discipline/SKILL.md +17 -0
  64. package/agents/skills/review-plan/SKILL.md +28 -0
  65. package/agents/skills/review-roadmap/SKILL.md +28 -0
  66. package/agents/skills/show-me/SKILL.md +21 -0
  67. package/agents/skills/speak/SKILL.md +15 -0
  68. package/agents/skills/su/SKILL.md +11 -0
  69. package/agents/skills/teach/SKILL.md +25 -0
  70. package/agents/skills/tmp/SKILL.md +54 -0
  71. package/agents/skills/typescript-best-practices/SKILL.md +32 -0
  72. package/agents/skills/typescript-best-practices/references/patterns.md +328 -0
  73. package/agents/skills/unslop/SKILL.md +62 -0
  74. package/agents/skills/write-plan/SKILL.md +33 -0
  75. package/agents/skills/write-roadmap/SKILL.md +66 -0
  76. package/agents/subagents/implementer-deep.md +57 -0
  77. package/agents/subagents/implementer-fast.md +57 -0
  78. package/agents/subagents/orchestrator.md +43 -0
  79. package/agents/subagents/researcher.md +47 -0
  80. package/agents/subagents/scout.md +44 -0
  81. package/bin/repo.ts +4 -0
  82. package/cli/actionlint-default.test.ts +38 -0
  83. package/cli/actionlint-download.test.ts +162 -0
  84. package/cli/actionlint-real.test.ts +33 -0
  85. package/cli/actionlint.constants.ts +43 -0
  86. package/cli/actionlint.test.ts +108 -0
  87. package/cli/actionlint.ts +178 -0
  88. package/cli/bin.test.ts +54 -0
  89. package/cli/bin.ts +40 -0
  90. package/cli/check-changelog.test.ts +40 -0
  91. package/cli/check-changelog.ts +12 -0
  92. package/cli/check-comments.test.ts +157 -0
  93. package/cli/check-comments.ts +123 -0
  94. package/cli/check-env-modules.test.ts +85 -0
  95. package/cli/check-env-modules.ts +56 -0
  96. package/cli/check-magic.test.ts +139 -0
  97. package/cli/check-magic.ts +120 -0
  98. package/cli/check-manifests.constants.ts +4 -0
  99. package/cli/check-manifests.test.ts +210 -0
  100. package/cli/check-manifests.ts +71 -0
  101. package/cli/check-nightly.test.ts +103 -0
  102. package/cli/check-nightly.ts +37 -0
  103. package/cli/check-ratchets-missing.test.ts +46 -0
  104. package/cli/check-ratchets-mutation.test.ts +49 -0
  105. package/cli/check-ratchets.constants.ts +20 -0
  106. package/cli/check-ratchets.test.ts +190 -0
  107. package/cli/check-ratchets.ts +193 -0
  108. package/cli/check-rejections.test.ts +220 -0
  109. package/cli/check-rejections.ts +153 -0
  110. package/cli/check-reports.ts +37 -0
  111. package/cli/check-tsconfig.test.ts +507 -0
  112. package/cli/check-tsconfig.ts +205 -0
  113. package/cli/commands.test.ts +114 -0
  114. package/cli/commands.ts +218 -0
  115. package/cli/commit-changelog.ts +27 -0
  116. package/cli/commit-msg-changelog.test.ts +93 -0
  117. package/cli/commit-msg-range.test.ts +126 -0
  118. package/cli/commit-msg-red-proof.test.ts +147 -0
  119. package/cli/commit-msg-repo.test.ts +153 -0
  120. package/cli/commit-msg.test.ts +101 -0
  121. package/cli/commit-msg.ts +194 -0
  122. package/cli/commit-range.constants.ts +17 -0
  123. package/cli/commit-range.ts +57 -0
  124. package/cli/config-knip.test.ts +70 -0
  125. package/cli/config-nightly.test.ts +84 -0
  126. package/cli/config-tdd.test.ts +46 -0
  127. package/cli/config.test.ts +576 -0
  128. package/cli/config.ts +261 -0
  129. package/cli/conventional.ts +9 -0
  130. package/cli/coverage-config.ts +62 -0
  131. package/cli/coverage.constants.ts +6 -0
  132. package/cli/coverage.test.ts +199 -0
  133. package/cli/coverage.ts +127 -0
  134. package/cli/env.constants.ts +10 -0
  135. package/cli/env.test.ts +56 -0
  136. package/cli/env.ts +72 -0
  137. package/cli/fixtures/base-config.ts +13 -0
  138. package/cli/fixtures/gate-world.ts +48 -0
  139. package/cli/fixtures/knip-run.ts +38 -0
  140. package/cli/fixtures/mutate-fakes.ts +137 -0
  141. package/cli/fixtures/planted-repo.ts +50 -0
  142. package/cli/fixtures/publish-world.ts +71 -0
  143. package/cli/fixtures/red-proof-repo.ts +72 -0
  144. package/cli/fixtures/release-context.ts +15 -0
  145. package/cli/fixtures/release-world.ts +111 -0
  146. package/cli/fixtures/stub-bin.ts +40 -0
  147. package/cli/guard-diagnostics.test.ts +157 -0
  148. package/cli/guard-diagnostics.ts +195 -0
  149. package/cli/init.test.ts +487 -0
  150. package/cli/init.ts +275 -0
  151. package/cli/knip-check-ignores.test.ts +106 -0
  152. package/cli/knip-check-real.test.ts +65 -0
  153. package/cli/knip-check.constants.ts +46 -0
  154. package/cli/knip-check.test.ts +114 -0
  155. package/cli/knip-check.ts +169 -0
  156. package/cli/knip-schema.ts +67 -0
  157. package/cli/known-failures.constants.ts +22 -0
  158. package/cli/known-failures.test.ts +138 -0
  159. package/cli/known-failures.ts +131 -0
  160. package/cli/lint/as-needs-reason.ts +41 -0
  161. package/cli/lint/boundaries.ts +73 -0
  162. package/cli/lint/class-file.ts +39 -0
  163. package/cli/lint/config-file.ts +32 -0
  164. package/cli/lint/entry-file.ts +54 -0
  165. package/cli/lint/env-in-config.ts +66 -0
  166. package/cli/lint/filename-matches-export.ts +63 -0
  167. package/cli/lint/index-file.ts +22 -0
  168. package/cli/lint/index.ts +47 -0
  169. package/cli/lint/is-reason.ts +6 -0
  170. package/cli/lint/manifest.ts +46 -0
  171. package/cli/lint/names.ts +59 -0
  172. package/cli/lint/no-commented-out-code.ts +105 -0
  173. package/cli/lint/no-mock-of-subject.ts +64 -0
  174. package/cli/lint/no-module-side-effects.ts +94 -0
  175. package/cli/lint/no-module-state.ts +58 -0
  176. package/cli/lint/no-side-effect-import.ts +17 -0
  177. package/cli/lint/no-v8-ignore.ts +18 -0
  178. package/cli/lint/script-rules.ts +9 -0
  179. package/cli/lint/skip-on-platform.constants.ts +8 -0
  180. package/cli/lint/skip-on-platform.ts +118 -0
  181. package/cli/lint/todo-needs-id.ts +63 -0
  182. package/cli/lint/types-file.ts +28 -0
  183. package/cli/lint-schema.ts +32 -0
  184. package/cli/magic/fixtures/magic-repo.ts +64 -0
  185. package/cli/magic/magic-hit.ts +2 -0
  186. package/cli/magic/magic-nodes.ts +44 -0
  187. package/cli/magic/magic-numbers.test.ts +99 -0
  188. package/cli/magic/magic-numbers.ts +117 -0
  189. package/cli/magic/magic-strings.test.ts +38 -0
  190. package/cli/magic/magic-strings.ts +81 -0
  191. package/cli/main.test.ts +853 -0
  192. package/cli/main.ts +292 -0
  193. package/cli/mutate-args.ts +79 -0
  194. package/cli/mutate-check.test.ts +147 -0
  195. package/cli/mutate-deps.ts +42 -0
  196. package/cli/mutate-edges.test.ts +150 -0
  197. package/cli/mutate-files.test.ts +100 -0
  198. package/cli/mutate-files.ts +31 -0
  199. package/cli/mutate-floors.test.ts +91 -0
  200. package/cli/mutate-floors.ts +104 -0
  201. package/cli/mutate-real-deps.ts +57 -0
  202. package/cli/mutate-real.test.ts +96 -0
  203. package/cli/mutate-report.ts +96 -0
  204. package/cli/mutate-run.ts +128 -0
  205. package/cli/mutate-shards.ts +64 -0
  206. package/cli/mutate.constants.ts +67 -0
  207. package/cli/mutate.test.ts +182 -0
  208. package/cli/mutate.ts +64 -0
  209. package/cli/nested-vitest-flags.ts +8 -0
  210. package/cli/nightly-config.constants.ts +14 -0
  211. package/cli/nightly-config.ts +62 -0
  212. package/cli/prompt.test.ts +202 -0
  213. package/cli/prompt.ts +1 -0
  214. package/cli/red-proof-edges.test.ts +78 -0
  215. package/cli/red-proof-failures.test.ts +82 -0
  216. package/cli/red-proof-tree.test.ts +157 -0
  217. package/cli/red-proof-verdict.test.ts +44 -0
  218. package/cli/red-proof.constants.ts +14 -0
  219. package/cli/red-proof.ts +202 -0
  220. package/cli/release/changelog-parse.ts +83 -0
  221. package/cli/release/changelog.test.ts +141 -0
  222. package/cli/release/changelog.ts +106 -0
  223. package/cli/release/gate-refusals.test.ts +85 -0
  224. package/cli/release/gate.test.ts +63 -0
  225. package/cli/release/gate.ts +70 -0
  226. package/cli/release/git.ts +66 -0
  227. package/cli/release/github.test.ts +128 -0
  228. package/cli/release/github.ts +46 -0
  229. package/cli/release/list-dir.test.ts +11 -0
  230. package/cli/release/list-dir.ts +6 -0
  231. package/cli/release/main.test.ts +48 -0
  232. package/cli/release/main.ts +51 -0
  233. package/cli/release/manifest.test.ts +24 -0
  234. package/cli/release/manifest.ts +34 -0
  235. package/cli/release/pack.test.ts +107 -0
  236. package/cli/release/pack.ts +76 -0
  237. package/cli/release/plan.ts +127 -0
  238. package/cli/release/publish-run.test.ts +98 -0
  239. package/cli/release/publish.test.ts +127 -0
  240. package/cli/release/publish.ts +125 -0
  241. package/cli/release/refuse.ts +5 -0
  242. package/cli/release/release-messages.constants.ts +96 -0
  243. package/cli/release/release-refusals.test.ts +149 -0
  244. package/cli/release/release.constants.ts +128 -0
  245. package/cli/release/release.test.ts +199 -0
  246. package/cli/release/release.ts +145 -0
  247. package/cli/release/version.test.ts +118 -0
  248. package/cli/release/version.ts +69 -0
  249. package/cli/release/wait.test.ts +101 -0
  250. package/cli/release/wait.ts +95 -0
  251. package/cli/script-diagnostics.test.ts +76 -0
  252. package/cli/script-diagnostics.ts +62 -0
  253. package/cli/scripts/board.ts +519 -0
  254. package/cli/scripts/browser.ts +994 -0
  255. package/cli/scripts/change-set.ts +105 -0
  256. package/cli/scripts/check-globals.ts +199 -0
  257. package/cli/scripts/ci-skips.constants.ts +17 -0
  258. package/cli/scripts/ci-skips.ts +118 -0
  259. package/cli/scripts/ci-wait-run.ts +28 -0
  260. package/cli/scripts/ci-wait.constants.ts +44 -0
  261. package/cli/scripts/ci-wait.ts +175 -0
  262. package/cli/scripts/ci.constants.ts +15 -0
  263. package/cli/scripts/ci.ts +208 -0
  264. package/cli/scripts/clean.ts +363 -0
  265. package/cli/scripts/comments-step.ts +15 -0
  266. package/cli/scripts/doctor.ts +828 -0
  267. package/cli/scripts/emit-agent-shell-tools.ts +91 -0
  268. package/cli/scripts/emit-mcp-policy.ts +402 -0
  269. package/cli/scripts/folder-map.ts +353 -0
  270. package/cli/scripts/gate-fat-tools.ts +1095 -0
  271. package/cli/scripts/gitignore-guard.ts +338 -0
  272. package/cli/scripts/google-workspace.ts +779 -0
  273. package/cli/scripts/hook-command.ts +72 -0
  274. package/cli/scripts/hook-input.ts +178 -0
  275. package/cli/scripts/hook-io.constants.ts +5 -0
  276. package/cli/scripts/hook-io.ts +46 -0
  277. package/cli/scripts/hooks-union.ts +469 -0
  278. package/cli/scripts/interactive.ts +30 -0
  279. package/cli/scripts/jev.ts +420 -0
  280. package/cli/scripts/job.ts +934 -0
  281. package/cli/scripts/jsonc.ts +9 -0
  282. package/cli/scripts/lessons.ts +564 -0
  283. package/cli/scripts/lint-baseline.ts +233 -0
  284. package/cli/scripts/lint-main.ts +24 -0
  285. package/cli/scripts/lint-skips.ts +139 -0
  286. package/cli/scripts/lint.constants.ts +6 -0
  287. package/cli/scripts/lint.ts +142 -0
  288. package/cli/scripts/listen.ts +962 -0
  289. package/cli/scripts/managed-text.ts +47 -0
  290. package/cli/scripts/orchestrate-parent.ts +1155 -0
  291. package/cli/scripts/parse-need.ts +81 -0
  292. package/cli/scripts/persist-handoff.ts +228 -0
  293. package/cli/scripts/persist-implementation.ts +276 -0
  294. package/cli/scripts/persist-plan.ts +888 -0
  295. package/cli/scripts/persist-roadmap.ts +478 -0
  296. package/cli/scripts/persist-tmp.ts +177 -0
  297. package/cli/scripts/persist.ts +54 -0
  298. package/cli/scripts/phase-files.ts +121 -0
  299. package/cli/scripts/prompt.ts +38 -0
  300. package/cli/scripts/purge-global-mcps.ts +313 -0
  301. package/cli/scripts/rejections-step.ts +37 -0
  302. package/cli/scripts/rtk-grok.ts +102 -0
  303. package/cli/scripts/scrub-spawn-prompt.ts +103 -0
  304. package/cli/scripts/scrub-text-lib.ts +58 -0
  305. package/cli/scripts/session-map.ts +69 -0
  306. package/cli/scripts/setup.ts +862 -0
  307. package/cli/scripts/skill-conflicts.ts +82 -0
  308. package/cli/scripts/speak.ts +370 -0
  309. package/cli/scripts/strategy.ts +168 -0
  310. package/cli/scripts/sync-global-settings.ts +316 -0
  311. package/cli/scripts/turn-steps.ts +249 -0
  312. package/cli/scripts/turn.ts +157 -0
  313. package/cli/scripts/typecheck-step.ts +43 -0
  314. package/cli/scripts/vscode-tasks.ts +175 -0
  315. package/cli/scripts/workspace-root.ts +160 -0
  316. package/cli/scripts/worktree.ts +806 -0
  317. package/cli/spawn.test.ts +34 -0
  318. package/cli/spawn.ts +27 -0
  319. package/cli/staged-change.constants.ts +11 -0
  320. package/cli/staged-change.ts +79 -0
  321. package/cli/stryker-preload.test.ts +50 -0
  322. package/cli/stryker-preload.ts +9 -0
  323. package/cli/sync/agents/frontmatter.test.ts +197 -0
  324. package/cli/sync/agents/frontmatter.ts +140 -0
  325. package/cli/sync/agents/hooks.test.ts +517 -0
  326. package/cli/sync/agents/hooks.ts +401 -0
  327. package/cli/sync/agents/rules.test.ts +229 -0
  328. package/cli/sync/agents/rules.ts +84 -0
  329. package/cli/sync/agents/sources.test.ts +375 -0
  330. package/cli/sync/agents/sources.ts +244 -0
  331. package/cli/sync/agents/subagents.test.ts +149 -0
  332. package/cli/sync/agents/subagents.ts +158 -0
  333. package/cli/sync/agents-text.test.ts +31 -0
  334. package/cli/sync/agents-text.ts +36 -0
  335. package/cli/sync/fixtures/copied.README.md +35 -0
  336. package/cli/sync/fixtures/copied.tgz +0 -0
  337. package/cli/sync/fixtures/maps/golden/INDEX.md +22 -0
  338. package/cli/sync/fixtures/maps-ws.tgz +0 -0
  339. package/cli/sync/git-files.test.ts +340 -0
  340. package/cli/sync/git-files.ts +197 -0
  341. package/cli/sync/git-hooks.test.ts +94 -0
  342. package/cli/sync/golden.test.ts +15 -0
  343. package/cli/sync/hooks-mode.test.ts +99 -0
  344. package/cli/sync/hosts.ts +28 -0
  345. package/cli/sync/knip-config.constants.ts +4 -0
  346. package/cli/sync/knip-config.test.ts +147 -0
  347. package/cli/sync/knip-config.ts +108 -0
  348. package/cli/sync/manifest.test.ts +78 -0
  349. package/cli/sync/manifest.ts +60 -0
  350. package/cli/sync/maps.test.ts +304 -0
  351. package/cli/sync/maps.ts +297 -0
  352. package/cli/sync/migrate.test.ts +2000 -0
  353. package/cli/sync/migrate.ts +1104 -0
  354. package/cli/sync/nightly-jobs.test.ts +63 -0
  355. package/cli/sync/nightly.constants.ts +48 -0
  356. package/cli/sync/nightly.test.ts +100 -0
  357. package/cli/sync/nightly.ts +75 -0
  358. package/cli/sync/outputs.test.ts +351 -0
  359. package/cli/sync/outputs.ts +168 -0
  360. package/cli/sync/oxlint-config.test.ts +178 -0
  361. package/cli/sync/oxlint-config.ts +168 -0
  362. package/cli/sync/release-jobs.test.ts +29 -0
  363. package/cli/sync/release-reports.test.ts +31 -0
  364. package/cli/sync/release-workflow.constants.ts +61 -0
  365. package/cli/sync/release-workflow.test.ts +192 -0
  366. package/cli/sync/release-workflow.ts +86 -0
  367. package/cli/sync/release.constants.ts +93 -0
  368. package/cli/sync/release.test.ts +187 -0
  369. package/cli/sync/release.ts +112 -0
  370. package/cli/sync/repo-dir.test.ts +371 -0
  371. package/cli/sync/repo-dir.ts +205 -0
  372. package/cli/sync/standards.constants.ts +8 -0
  373. package/cli/sync/standards.test.ts +206 -0
  374. package/cli/sync/standards.ts +179 -0
  375. package/cli/sync/stock-history.json +2796 -0
  376. package/cli/sync/stock-history.test.ts +66 -0
  377. package/cli/sync/stock-history.ts +84 -0
  378. package/cli/sync/stock.test.ts +47 -0
  379. package/cli/sync/stock.ts +24 -0
  380. package/cli/sync/trees.test.ts +621 -0
  381. package/cli/sync/trees.ts +280 -0
  382. package/cli/sync/validate.test.ts +299 -0
  383. package/cli/sync/validate.ts +402 -0
  384. package/cli/sync/workspace.test.ts +180 -0
  385. package/cli/sync/workspace.ts +138 -0
  386. package/cli/sync/write.test.ts +341 -0
  387. package/cli/sync/write.ts +231 -0
  388. package/cli/sync.test.ts +1495 -0
  389. package/cli/sync.ts +360 -0
  390. package/cli/tdd-scope.test.ts +36 -0
  391. package/cli/tdd-scope.ts +41 -0
  392. package/cli/test-files.ts +16 -0
  393. package/cli/ts-program.ts +69 -0
  394. package/cli/tsconfig.constants.ts +8 -0
  395. package/cli/workerstack-config.types.ts +21 -0
  396. package/dist/cli/env.d.ts +10 -0
  397. package/dist/cli/env.js +64 -0
  398. package/dist/presets/temp-root-env.d.ts +10 -0
  399. package/dist/presets/temp-root-env.js +20 -0
  400. package/dist/presets/temp-root.constants.d.ts +6 -0
  401. package/dist/presets/temp-root.constants.js +6 -0
  402. package/dist/presets/temp-root.d.ts +2 -0
  403. package/dist/presets/temp-root.js +60 -0
  404. package/dist/presets/vitest.constants.d.ts +16 -0
  405. package/dist/presets/vitest.constants.js +16 -0
  406. package/dist/presets/vitest.d.ts +11 -0
  407. package/dist/presets/vitest.js +67 -0
  408. package/dist/presets/workers-plugin.d.ts +10 -0
  409. package/dist/presets/workers-plugin.js +54 -0
  410. package/package.json +141 -4
  411. package/references/INDEX.md +100 -0
  412. package/references/browser.md +66 -0
  413. package/references/cascade.md +15 -0
  414. package/references/clasp.md +21 -0
  415. package/references/cloudflare.md +36 -0
  416. package/references/google-workspace.md +79 -0
  417. package/references/hooks.md +103 -0
  418. package/references/implementation-format.md +119 -0
  419. package/references/jev.md +56 -0
  420. package/references/lessons.md +73 -0
  421. package/references/listen.md +80 -0
  422. package/references/map.md +107 -0
  423. package/references/output.md +47 -0
  424. package/references/plan-format.md +264 -0
  425. package/references/review-loop.md +48 -0
  426. package/references/roadmap-format.md +104 -0
  427. package/references/rtk.md +27 -0
  428. package/references/scope.md +76 -0
  429. package/references/setup.md +42 -0
  430. package/references/speak.md +59 -0
  431. package/tsconfig/base.json +28 -0
  432. package/tsconfig/bun.d.ts +1 -0
  433. package/tsconfig/bun.json +8 -0
  434. package/tsconfig/reset.d.ts +1 -0
  435. package/tsconfig/strict.json +12 -0
  436. package/tsconfig/web.json +7 -0
  437. package/tsconfig/worker.d.ts +1 -0
  438. package/tsconfig/worker.json +8 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,45 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project are documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ## [0.1.0] - 2026-11-10
11
+
12
+ ### Added
13
+
14
+ - `workerstack.config.ts` with `defineConfig` from `@workerstack/repo` declares a repo's packs, and an unknown key or pack fails with a message that names it. `repo sync` writes `bunfig.toml` (hoisted linker, and no auto-install, so a missing import fails instead of fetching from the registry), the `# >>> @workerstack/repo` block in `.gitignore`, and the `repo:packages` and `repo:stack` sections of `references/INDEX.md`. It checks everything before writing anything and refuses to overwrite a hand-written `bunfig.toml`. `repo sync --check` fails on drift, and `repo sync --postinstall` prints errors without failing the install. `repo init` writes `workerstack.config.ts` when it is missing and adds `repo sync --postinstall` to the `postinstall` script.
15
+ - Strict tsconfig bases with ts-reset built in: extend `@workerstack/repo/tsconfig/base`, `bun`, `worker` or `web` and list your sources under `include`. `JSON.parse`, `.json()` and similar calls then return `unknown` instead of `any`. The `bun` base brings Bun's types with it. The `worker` base needs `@cloudflare/workers-types` installed in your repo.
16
+ - A shared vitest preset: `defineProject` for a package's `vitest.config.ts` and `defineConfig` for a root config, both from `@workerstack/repo/vitest`. They set 5s test and hook timeouts (60s on Windows) and the forks pool, and `defineConfig` adds istanbul coverage. Both set `deps.interopDefault: false`, which bun needs to import packages like zod. Your own settings win. Install `vitest` and, for coverage, `@vitest/coverage-istanbul` (both ^5.1.0), and run the tests with `bun --bun vitest`.
17
+ - `repo check` now also fails when a tsconfig drops ts-reset: one that sets `files`, which replaces the base's, or one that extends no base. It prints one line per file and exits 1. A solution-style root with `"files": []` and `references` passes. The `repo` command now runs on bun, so bun must be on your PATH.
18
+ - `repo release [--stable | --pre <id>]` releases the root package of a public repo with the `release` pack. It bumps the version from the Conventional Commits since the last tag (from 1.0 a breaking commit is a major, a feat a minor, a fix, perf or revert a patch; below 1.0 a breaking commit is a minor and the rest are patches), moves `## [Unreleased]` in CHANGELOG.md under the new version, commits `chore: release <name>@<version>`, pushes, waits on CI for that commit and only then tags `<name>@<version>` and pushes the tag. Run it again after a red or missing CI result: it finishes the same version, folding new Unreleased entries into it, instead of bumping twice. It refuses with one line, before writing anything, on a dirty tree, another branch, a main that differs from origin, a missing gh login, nothing to release, an empty Unreleased, a private package, a 1.x `--stable` and a tag that exists.
19
+ - `repo release wait <name>@<version>` polls npm every 10 seconds for up to 15 minutes and prints `published <version> under <tag>`, or `published <version>` when no dist-tag points at it.
20
+ - `repo check` holds a public root's CHANGELOG.md to Keep a Changelog: a dated `## [x.y.z] - YYYY-MM-DD` heading, the six section names, versions newest first and an `## [Unreleased]` section.
21
+ - The commit-msg hook refuses a feat, fix, perf or breaking commit that stages a file of a public package without staging that package's CHANGELOG.md.
22
+ - `repo sync` checks every output against its format, and the `.repo/` directory against its closed layout, schemas, links and size budget, before it writes anything, and then writes all of it or none. It also writes `.gitattributes` (generated files marked `linguist-generated`) and the editor settings that make them read-only, and refuses a nested ignore file. A rule can be scoped to `paths`, and an override has to replace a stock rule, subagent or skill. Each workspace package gets its own agents file, scoped rules, nested skills and a dependency index.
23
+ - `repo sync` writes `.oxlintrc.json` and `.oxfmtrc.jsonc`, and `repo lint` and `repo fmt` run them. The lint plugin refuses module side effects, boundary breaks, magic numbers and untyped compared strings, an `as` cast without a reason, a file whose name does not match its export, an unticketed todo, commented-out code, a mock of the module under test and a v8 ignore. `lint.skip` in `workerstack.config.ts` records a reasoned exception and fails when it goes stale. The counts the lint finds are held in `.repo/lint-baseline.json`, which can only shrink. `repo check` refuses rule-disable and ts-ignore comments, a manifest with a wrong `private`, `sideEffects` or unpinned bun version, environment reads outside `cli/env.ts`, and a tsconfig that no gate runs. A strict `src` tsconfig is typechecked, `reject.ts` type tests run, and each exported type guard needs a test that rejects.
24
+ - `repo turn` runs the gates for one change, and the generated `.githooks/pre-commit` and `.githooks/commit-msg` run it and check commit scopes and size against the `commit` limits in `workerstack.config.ts`. A feat or fix commit is refused unless a changed test fails without its source change. Test-run floors, known failures and the lint baseline are ratcheted against main, and a floor is raised and never lowered. A test run fails when it leaves a temp dir behind or skips a test for a reason that is not the platform.
25
+ - `repo ci` runs every gate in one call, and `repo check` refuses a root script that chains them. `repo check` also runs knip from a generated config, where each `knip.ignore` entry carries a reason and fails when stale, and runs actionlint. Under the release pack `repo sync` writes `.github/workflows/ci.yml` with pinned actions: it tests on three operating systems, checks every pushed commit and compares each OS's skips, and `repo ci wait` waits for the run of HEAD. `repo mutate` runs Stryker under bun in a throwaway clone with score floors, and `repo sync` writes `.github/workflows/nightly.yml` with sharded mutation floors and your live tests. `repo persist` saves temp files into the repo.
26
+ - With the `release` pack and `"private": false`, `repo sync` writes `.github/workflows/release.yml`. A `<name>@*` tag push, or `gh workflow run release.yml -f tag=<name>@<version>`, runs three jobs on that tag. `gate` checks that the tag equals the version in package.json at the tagged commit, that CHANGELOG.md has that version's section, that the commit is on the default branch and that its CI passed. `publish` packs with `bun pm pack`, refuses a packed `catalog:` or `workspace:` version, skips a version npm already serves and publishes through npm trusted publishing with no npm token, under `next` for a prerelease. `github` creates the GitHub release from the changelog section. A hand-written `release.yml` is refused. The jobs are also commands: `repo release gate | pack | publish | github <name>@<version>`, and `repo release help` lists them. A package that is not on npm yet cannot publish from CI; `publish` prints the steps: `npm login`, `bun repo release publish <name>@<version>` at the tag on your machine, then add the trusted publisher.
27
+
28
+ ### Changed
29
+
30
+ - `repo doctor` no longer has a `node` row or node install hints, and `@workerstack/repo` no longer lists node in `engines`: nothing in it needs node. Bun is the only runtime it checks.
31
+ - Agents can remove any managed worktree and delete any `wt/*` branch; the gate guards only the default branch and force pushes.
32
+ - **Breaking:** the agent trees are generated and ignored. `repo sync` builds `AGENTS.md`, `.mcp.json`, `.claude/`, `.codex/`, `.agents/`, `.grok/` and `.cursor/` from `node_modules/@workerstack/repo` plus your `.repo/` into a staging dir, writes them, records them in `.repo/tmp/sync.json` and removes what drops out; in a consumer they are gitignored and every `bun install` recreates them (this repo still commits its own). `.repo/` holds the repo's own content: `rules/`, `subagents/`, `skills/`, `lessons/` (moved from `.rulesync/lessons/`), `settings/claude.json`, `hooks.jsonc`, `mcp-policy.jsonc` and `permissions.json`. `agents.hosts` in `workerstack.config.ts` picks the hosts to generate for (default: all five), and `agents.skills` enables the optional skills `google-workspace`, `listen`, `speak` and `clasp`, replacing `.rulesync/repo.features.jsonc`. `repo init` copies nothing: it writes `workerstack.config.ts` and `package.json`, then installs. The first `repo sync` in a repo an older init copied moves your own rules, subagents, skills, settings keys, `AGENTS.md` text, lessons, references, hooks, MCP policy and packs into `.repo/`, `references/` and `agents.skills`, untracks the generated paths and removes the copied `.rulesync/`; a destination that already exists with other text stops it with one line naming both paths, and `repo sync --check` reports the pending steps. `rulesync` is now a dependency of `@workerstack/repo`, since the install-time sync runs it. `repo generate`, `repo upgrade`, the `repo:rulesync:*` package scripts and the feature-packs file are gone: upgrade by bumping the dependency and running `bun install`, and regenerate with `bun repo sync`.
33
+ - **Breaking:** every script, hook and the CLI is TypeScript run by bun. `.rulesync/scripts/*.mjs` became `.rulesync/scripts/*.ts`, the grok hooks became `.grok/hooks/*.ts`, and the bin is `bin/repo.ts`. Generated hook commands read `bun "$d/…ts"`, and `.githooks/commit-msg` runs under `bun`. The old `.mjs` paths are gone; run commands as `bun repo <cmd>`. A consumer's own hook script keeps whatever extension bun runs. `repo doctor` gains a `bun` version row and finds node only on your PATH.
34
+ - The stock references moved from `.rulesync/reference/` to `references/` and ship in the package. Agents read them from `node_modules/@workerstack/repo/references/`, so `AGENTS.md` and the skills point there, and `repo init` no longer copies them. `law.md`, `skills-map.md` and `refs-map.md` are gone: `references/INDEX.md` holds the catalogs in its `repo:skills`, `repo:refs`, `repo:packages` and `repo:stack` sections. The first `repo sync` in a repo an older init copied removes the unchanged stock copies in `.rulesync/reference/` and moves each file or section of yours to `references/`.
35
+ - The `repo` bin runs on bun.
36
+ - Scripts and hooks run through the `repo` bin. Agents and people run `bun repo <cmd>` (`job`, `worktree`, `lessons`, `browser`, `google-workspace`, `jev`, `listen`, `speak`, `setup`, `doctor`, `clean`, `sync-globals`, `purge-mcps`, `tasks`, `map`), and every generated hook runs `"$d/node_modules/.bin/repo" hook <name>`, which prints `run bun install` and exits 1 in a checkout with no install. The gate rewrites fat calls to `<root>/node_modules/.bin/repo job …`, and `repo sync --check` fails a repo hook still in the script form. A consumer has no `.rulesync/scripts/` copy, so a direct `bun .rulesync/scripts/<name>.ts` call fails there; use `bun repo <cmd>`. Never type `bunx repo`, which fetches an unrelated npm package.
37
+ - The gate now covers Antigravity 1.5.3's `write_file` and `edit_file` and reads its `lastUserInput` for a named git subcommand (a subagent gets no grant); generated agents name models their CLIs accept (`gpt-6-luna`, `grok-4.7`, the Antigravity tiers `flash_lite`, `flash` and `pro`; Cursor agents inherit the parent session's model) with Antigravity's real tool names, and `repo doctor` gains an `agent models` row that flags a model a CLI no longer offers.
38
+ - Agents never change product files in the main checkout: the gate denies a write, a commit, destructive git and a lesson save there, and a force push, a delete of the default branch or another session's `wt/*`, unless the user's message names the git command. Work starts with `worktree.mjs add <name>`, and the new `worktree.mjs finish [<name>]` rebases the branch onto the default branch, fast-forwards it and removes the worktree, without pushing. `repo doctor` lists a `stale worktree` unmerged for 7 days
39
+
40
+ ### Fixed
41
+
42
+ - `repo turn` and the pre-commit hook no longer fail lint when every staged file is one oxlint ignores; oxlint's note before its report was read as a failure.
43
+ - The generated CI passes on Linux, macOS and Windows. On Windows, `repo sync` marks `.githooks/*` executable in the git index, the red-proof and release `tar` calls no longer pass a `C:` path that GNU tar reads as a remote host, `repo browser` kills the whole engine process tree and reports an engine that cannot start instead of crashing, and `rtk` is started through a cross-platform spawn. `repo ci --no-coverage` runs the gates without coverage floors, and the generated `ci.yml` uses it on macOS and Windows, so the floors are enforced on Linux only.
44
+ - Hooks run from the main checkout's install when a worktree has none, for every host.
45
+ - Antigravity loads the generated agents again (agy rejected their `gemini-3.8-flash-*` models and dropped every agent), and the Antigravity orchestrator can run commands, edit files and invoke subagents.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Lovro Žagar
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +0,0 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
@@ -0,0 +1,3 @@
1
+ {
2
+ "toolPermission": "always-proceed"
3
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "permissions": {
3
+ "defaultMode": "bypassPermissions"
4
+ },
5
+ "skipDangerousModePermissionPrompt": true
6
+ }
@@ -0,0 +1,2 @@
1
+ approval_policy = "never"
2
+ sandbox_mode = "danger-full-access"
@@ -0,0 +1,3 @@
1
+ {
2
+ "approvalMode": "unrestricted"
3
+ }
@@ -0,0 +1,36 @@
1
+ # NOT auto-loaded by Grok. Merged into ~/.grok/config.toml by:
2
+ # bun repo yolo --dry-run # preview
3
+ # bun repo yolo # write machine-wide (~/.grok; all Grok sessions on this host)
4
+ # Project .grok/config.toml only loads MCP, plugins, and permission rules.
5
+ #
6
+ # [features] two_pass_compaction is not live until copied to ~/.grok/config.toml.
7
+ # Project .grok/config.toml cannot set [features]. Do not add a SessionStart hook.
8
+ # grok models (2026-11-07): grok-4.7 only.
9
+ # Orchestrator effort: agent frontmatter has no reasoning_effort key (unknown fields ignored).
10
+ # Use `/effort low` or set reasoning_effort in ~/.grok/config.toml. Do not put effort strings in tools:.
11
+
12
+ [ui]
13
+ permission_mode = "always-approve"
14
+
15
+ [agent]
16
+ name = "orchestrator"
17
+ # SSOT: .grok/agents/orchestrator.md (discovered).
18
+
19
+ [subagents.toggle]
20
+ explore = true
21
+ plan = true
22
+ general-purpose = true
23
+
24
+ [subagents.models]
25
+ explore = "grok-4.7"
26
+ scout = "grok-4.7"
27
+
28
+ [compat.claude]
29
+ agents = false
30
+
31
+ [memory]
32
+ enabled = false
33
+
34
+ # Must be copied to ~/.grok/config.toml. Project .grok/config.toml cannot set [features].
35
+ [features]
36
+ two_pass_compaction = true
@@ -0,0 +1,36 @@
1
+ {
2
+ "version": 1,
3
+ "skipKeyPattern": "^(secrets?|api[_-]?key|access[_-]?token|tokens?|passwords?|authorization|mcp(servers)?|hooks)$",
4
+ "hosts": [
5
+ {
6
+ "id": "grok",
7
+ "format": "toml",
8
+ "payload": "agents/global-settings/grok.toml",
9
+ "dest": ".grok/config.toml"
10
+ },
11
+ {
12
+ "id": "claude",
13
+ "format": "json",
14
+ "payload": "agents/global-settings/claude.json",
15
+ "dest": ".claude/settings.json"
16
+ },
17
+ {
18
+ "id": "codex",
19
+ "format": "toml",
20
+ "payload": "agents/global-settings/codex.toml",
21
+ "dest": ".codex/config.toml"
22
+ },
23
+ {
24
+ "id": "antigravity",
25
+ "format": "json",
26
+ "payload": "agents/global-settings/antigravity.json",
27
+ "dest": ".gemini/antigravity-cli/settings.json"
28
+ },
29
+ {
30
+ "id": "cursor",
31
+ "format": "json",
32
+ "payload": "agents/global-settings/cursor.json",
33
+ "dest": ".cursor/cli-config.json"
34
+ }
35
+ ]
36
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "hooks": {
3
+ "PreToolUse": [
4
+ {
5
+ "hooks": [
6
+ {
7
+ "type": "command",
8
+ "command": "repo hook orchestrate-parent",
9
+ "timeout": 5
10
+ }
11
+ ]
12
+ }
13
+ ],
14
+ "PostToolUse": [
15
+ {
16
+ "matcher": "spawn_subagent|Task",
17
+ "hooks": [
18
+ {
19
+ "type": "command",
20
+ "command": "repo hook orchestrate-parent",
21
+ "timeout": 5
22
+ }
23
+ ]
24
+ }
25
+ ],
26
+ "UserPromptSubmit": [
27
+ {
28
+ "hooks": [
29
+ {
30
+ "type": "command",
31
+ "command": "repo hook orchestrate-parent",
32
+ "timeout": 5
33
+ }
34
+ ]
35
+ }
36
+ ],
37
+ "Stop": [
38
+ {
39
+ "hooks": [
40
+ {
41
+ "type": "command",
42
+ "command": "repo hook orchestrate-parent",
43
+ "timeout": 30
44
+ }
45
+ ]
46
+ }
47
+ ],
48
+ "SubagentStop": [
49
+ {
50
+ "hooks": [
51
+ {
52
+ "type": "command",
53
+ "command": "repo hook orchestrate-parent",
54
+ "timeout": 30
55
+ }
56
+ ]
57
+ }
58
+ ]
59
+ }
60
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "hooks": {
3
+ "PreToolUse": [
4
+ {
5
+ "matcher": "Bash",
6
+ "hooks": [
7
+ {
8
+ "type": "command",
9
+ "command": "repo hook rtk-grok",
10
+ "timeout": 5
11
+ }
12
+ ]
13
+ }
14
+ ]
15
+ }
16
+ }
@@ -0,0 +1,3 @@
1
+ {
2
+ "hooks": {}
3
+ }
@@ -0,0 +1,5 @@
1
+ description = "Low reasoning role"
2
+ default_capability_mode = "all"
3
+ reasoning_effort = "low"
4
+ model = "grok-4.7"
5
+ default_fork_context = false
@@ -0,0 +1,67 @@
1
+ {
2
+ "version": 1,
3
+ "hooks": {
4
+ // Claude / Codex / Antigravity / Cursor only (generate -t omits grokcli for hooks).
5
+ // Cursor takes these matchers untranslated, so they name its tools too (Shell, Read, Write, Grep).
6
+ // Grok spawn/fat SSOT is hand-placed cli/scripts/orchestrate-parent.ts + orchestrate-parent.json.
7
+ // A repo hook command is written `repo hook <name>`; sync expands it through hookCommand(). `repo sync --check` fails any other form.
8
+ "preToolUse": [
9
+ {
10
+ "matcher": "spawn_subagent|Task|Agent|spawn_agent",
11
+ "type": "command",
12
+ "command": "repo hook scrub-spawn-prompt",
13
+ "timeout": 5
14
+ },
15
+ {
16
+ // Fat Read/Grep/Glob/Bash + Write/Edit scratch rewrite. Writes are denied only to an implementer-* child (plan, journal) and to the parent while a review-* plan runs (outside .tmp/).
17
+ "matcher": "Read|read_file|Grep|grep|Glob|list_dir|Bash|Shell|run_terminal_command|Write|Edit|write|search_replace|apply_patch|write_file|edit_file|run_command",
18
+ "type": "command",
19
+ "command": "repo hook gate-fat-tools",
20
+ "timeout": 5
21
+ },
22
+ {
23
+ // Persist rewrite + fat-gate for session writes/reads. Grok json stays no-matcher (Read included).
24
+ "matcher": "Write|Edit|write|search_replace|Bash|Shell|run_terminal_command|Skill|skill|run_command|Read|read_file|Grep|grep|Glob|list_dir",
25
+ "type": "command",
26
+ "command": "repo hook orchestrate-parent",
27
+ "timeout": 5
28
+ }
29
+ ],
30
+ "sessionStart": [
31
+ {
32
+ // Code-only folder map as additionalContext (hooks-union keeps it first).
33
+ "type": "command",
34
+ "command": "repo hook session-map",
35
+ "timeout": 5
36
+ }
37
+ ],
38
+ "beforeSubmitPrompt": [
39
+ {
40
+ "type": "command",
41
+ "command": "repo hook orchestrate-parent",
42
+ "timeout": 5
43
+ }
44
+ ],
45
+ "stop": [
46
+ {
47
+ "type": "command",
48
+ "command": "repo hook orchestrate-parent",
49
+ "timeout": 30
50
+ }
51
+ ],
52
+ "subagentStop": [
53
+ {
54
+ "type": "command",
55
+ "command": "repo hook orchestrate-parent",
56
+ "timeout": 30
57
+ }
58
+ ]
59
+ },
60
+ "claudecode": {
61
+ // Claude Code only: claude -w, EnterWorktree and worktree subagents land in .worktrees/<name> on wt/<name>.
62
+ "hooks": {
63
+ "worktreeCreate": [{ "type": "command", "command": "repo hook worktree", "timeout": 60 }],
64
+ "worktreeRemove": [{ "type": "command", "command": "repo hook worktree", "timeout": 60 }]
65
+ }
66
+ }
67
+ }
@@ -0,0 +1,16 @@
1
+ // MCP deny-default SSOT. Named allow is empty this pass; do not add cloudflare/docker.
2
+ {
3
+ "default": "deny",
4
+ "allow": [],
5
+ "plugins": {
6
+ "denyDefault": true
7
+ },
8
+ "servers": {},
9
+ "agents": {
10
+ "orchestrator": { "inherit": false },
11
+ "scout": { "inherit": false },
12
+ "researcher": { "inherit": false },
13
+ "implementer-fast": { "inherit": false },
14
+ "implementer-deep": { "inherit": false }
15
+ }
16
+ }
@@ -0,0 +1,21 @@
1
+ ---
2
+ description: Reply style, working rules and where plans live
3
+ ---
4
+ en-US default. Talk like a partner on the user's side who needs this to ship as much as they do: their goal is yours, and a miss is yours too. Plain, whole sentences, only what the person needs to act. Length follows the stakes. When something is broken or urgent, give the problem and the next step in one or two sentences, then stop. One sentence is enough when that is the whole answer. No background they did not ask for, no explaining what they already know, no cold Wikipedia-style fact dump, no arrows, `key=value` tokens, verbless fragments, or internal names they did not use. A question or a work result is glanceable. Open with where we stand against their goal: what landed, what is stuck, risky, or unverified, with paths, counts, and pass or fail. When they must act, say what you need from them, grouped by where they do it, each step exact enough to do without asking back, then what you will do once they have. "We" for the goal, "you" for their steps, "I" for yours. The middle is only new why or risk. The last line is the one action or decision, and it must add information. Do not restate the open. Care shows as precision and follow-through: bad news first and plain, with what you are doing about it. No praise, reassurance or hedging, and a mixed result stays mixed. Output another agent reads (subagent returns, job stdout, spawn prompts) and files you write (plans, handoffs, roadmaps, commits, PRs, docs, code comments) keep their own format, as does a slash skill that defines its reply or a raw artifact to copy.
5
+
6
+ Examples are a class. `...`, `etc` / etcetera, and a `;` between specimens are that same class. An example, an open list, or a negative example means infer the class and do what reasonably fits this case, including what they did not name. Do not copy the example's words, stop at the named items, or add work outside the class. In a plan or a spawn prompt, pass the class. A `;` in code or an ordinary clause is not that cue. Closed instructions stay literal.
7
+
8
+ Ship optimal solutions only; rewrite if not. Flag blockers. Do not monkey-patch. When advising, recommend the optimal choice based on research, data, and reasoning, not the user's preference. Be thorough in your analysis and bold in your recommendations. Change it only for new evidence or a flaw found in it. Pushback or a leading question is not a reason to switch; keep the recommendation and explain why. Do and verify the work yourself with every tool and credential you have. Don't guess, say "likely" or similar, trust older memory, stop short, leave placeholders, or hand the user anything you could do. Stopping for approval of a written plan is not stopping short. Ask only when you truly lack the means (the user's intent and preferences count), and say what you tried. Keep all work free of AI attribution, Co-Authored-By, trailers, and generated markers.
9
+
10
+ Plan first. A straight shot is one file, one obvious edit, and nothing to decide: run it with `/do`. Anything else: the plan caps the result, so research until every leaf is defensible, ask what only the user can answer, and research again on each answer. A clear task gets one plan; an unclear one gets rounds. Then `/write-plan`, stop with `Reply "y" to run plan {n} (strategy: {s}), or …`, revise on feedback, and `/implement-plan` on `y`. `/show-me` restates the proposal as before and after. Two or more ordered slices are `/write-roadmap`. Detail: `node_modules/@workerstack/repo/references/scope.md`.
11
+ By default (`/auto`) you keep going and ask only on blockers. Under `/ask` you finish one step, then ask. Under `/away` you decide instead of asking and log each choice in the plan.
12
+ Inside your own worktree any git is fine: stash, reset, checkout, rebase, amend. In the main checkout and from anywhere on the default branch, run no destructive git (stash, reset, checkout, switch, restore, clean, rebase, branch -D of the default branch, force push) unless the user's message asks for it; the gate denies it otherwise. The stash is repo-wide: never drop or clear stashes you did not make.
13
+ Never change product files in the main checkout; the gate denies writes and commits there. Every change, a straight shot or a lesson too, starts with `bun repo worktree add <name>` (it prints `.worktrees/<name>`, on `wt/<name>`); edit, test and commit there, then run `bun repo worktree finish <name>` from the root, which rebases onto the default branch, fast-forwards it and removes the worktree. Scratch, plans and journals stay in the root `.tmp/repo/`.
14
+
15
+ Read `node_modules/@workerstack/repo/references/INDEX.md` once. When a row matches the work, read that reference in full.
16
+ To learn the repo layout, use the folder map if it is in your context. If it is missing, or you need more depth, run `bun repo map [dir]` instead of exploring with `ls` or `find`.
17
+
18
+ Large dumps are compressed (search, test logs, snaps). Scratch and dumps live in `.tmp/repo/` (gitignored). After a write, recap the absolute path; edit with an offset slice when you need lines.
19
+ For a fat dump, run `bun repo job --job search|exec|slice|fetch|test` first. Spawn scout when the dump needs judgment (browse snap, messy test log) and the return is a short isolation fact; spawn researcher for heavy web or browser research that returns facts with sources. Use a host agent or a fan-out when that split is cheaper for the task, or when the user asks for it.
20
+
21
+ Browse with `bun repo browser`. Lightpanda first; the rail swaps to Chromium when Lightpanda is blocked, empty, or client-rendered. Do not stop and say you cannot. App e2e is `playwright test`.
@@ -0,0 +1,5 @@
1
+ {
2
+ "permissions": {
3
+ "deny": ["Agent(Explore)", "Agent(Plan)", "Agent(general-purpose)"]
4
+ }
5
+ }
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: ask
3
+ description: 'Session flag. Finish one step, recap, then ask before the next.'
4
+ ---
5
+ # ask
6
+
7
+ Session flag. Slash `/ask` stamps this session.
8
+
9
+ Finish one coherent step. Recap what landed. Ask whether to continue. Wait. Do not start the next step in this turn.
10
+
11
+ `/auto` is the default: keep going; ask only on blockers. Slash `/auto` unlinks the stamp and returns this session to auto.
12
+
13
+ `/away` is the third flag: decide instead of asking, and log each choice.
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: auto
3
+ description: >-
4
+ Session flag. Default. Work the task through. Ask on blockers instead of
5
+ monkey-patching.
6
+ ---
7
+ # auto
8
+
9
+ Session flag. Default. Slash `/auto` unlinks any `/ask` or `/away` stamp on this session.
10
+
11
+ Work the task through. Do not stop after each step. When a blocker, missing fact, or real choice appears, stop and ask. Do not monkey-patch around a failure.
12
+
13
+ `/ask` is a second flag: one step, then ask. `/away` is the third: decide instead of asking, and log each choice.
@@ -0,0 +1,19 @@
1
+ ---
2
+ name: away
3
+ description: 'Session flag. Nobody is watching: decide instead of asking, log each choice, keep going.'
4
+ ---
5
+ # away
6
+
7
+ Session flag. Slash `/away` stamps this session away.
8
+
9
+ Never ask. When a question comes up, decide it, log it, and continue. Log each choice in the plan's (or roadmap's) `## Previous mistakes` as `- decision: {question} → {choice}, because {why}`. Entries are append-only and sit outside the cap.
10
+
11
+ Replies are agent-terse: what landed, paths, pass or fail. Nobody reads them live.
12
+
13
+ Still stop on a true blocker: a missing credential, a destructive action. The Stop hook blocks a reply that ends in a question with `away: do not ask; decide, log "- decision: {question} → {choice}, because {why}" in the plan, and continue`. After 3 blocks it lets the question through.
14
+
15
+ Frontmatter `mode:` on this session's in-progress plan or roadmap wins over the flag.
16
+
17
+ Approval still happens before an away run. Write and review the plan, end with the closing line, and wait for `y` or `h`.
18
+
19
+ `/auto` returns this session to the default. `/ask` is the other flag: one step, then ask.
@@ -0,0 +1,54 @@
1
+ ---
2
+ name: blast-radius
3
+ description: >-
4
+ Find what a change could break somewhere else before it ships, beyond the
5
+ diff, and prove the one fact it's safe because of by running real code instead
6
+ of writing it up. Use for /blast-radius, 'blast radius of X', 'what could this
7
+ break', or reviewing a small diff you don't trust.
8
+ ---
9
+ # Blast radius
10
+
11
+ Find what a change breaks somewhere else, before it ships. Use for "blast radius of X", "what could this break", or reviewing a small diff you don't trust yet.
12
+
13
+ Slash `/blast-radius` only. Not a session flag.
14
+
15
+ This is not a walkthrough of what the code does, and not a history of why it was built. Blast radius is what the change breaks somewhere else.
16
+
17
+ Listing the callers is not the job. The agent can grep those in a second. The job is the breakage grep won't show you.
18
+
19
+ ## Don't trust your own writeup
20
+
21
+ A blast-radius writeup that sounds right is worthless. It reads as convincing whether or not it's true. So don't hand back the writeup. Find the one or two facts the whole thing depends on and prove them by running code.
22
+
23
+ ### How sure are you
24
+
25
+ For each fact the change's safety depends on, get it as far down this list as is cheap, and say where it stopped.
26
+
27
+ 1. You said so. Worthless on its own.
28
+ 2. You pointed at the line. A real `file:line`, or the library's own source.
29
+ 3. You showed the bad case can't happen. You walked the failure step by step and it doesn't reach.
30
+ 4. You ran it. A script or test that calls the real code and fails loud if you're wrong.
31
+ 5. You reproduced it in the running app.
32
+
33
+ Step 4 is usually one small script that imports the same library the app ships and calls the exact function you're worried about.
34
+
35
+ ## Steps
36
+
37
+ 1. Read the change. The diff, the symbols it adds, changes, and deletes, and what it now does differently, including the part the diff doesn't spell out. Pull the PR and commits: `git log` / `git blame` on the changed files, `gh pr view` when a PR number is in the history.
38
+ 2. Find the one fact it's safe because of. Most changes that look risky are safe because of a single fact, like "this call only drops already-dead cache entries and does nothing else". Find that fact. If it holds, most risky cases are cleared at once. Spend your time here, not on a long list of maybes.
39
+ 3. Look where grep stops. Read the source of the library you call, and check its pinned version and any local patch. Work out when things run: microtasks, unmount and teardown, Solid versus React. Follow what a symbol search misses: the JSON an API returns, a DB column, a wire format, another language reading the same bytes, a feature flag, code three hops downstream.
40
+ 4. Be honest about each risk. Give it a real chance of happening and a real cost if it does. Keep the risks you confirmed. List the ones you checked and cleared separately. Cite a real `file:line`. A search that finds nothing is still an answer. Never make up a caller or an API.
41
+ 5. Prove the one fact. Write a script or test that runs the real code, run it, and paste what happened.
42
+ 6. For a big or wide change, run a second independent pass (another model or a fresh read of the same question) and merge the answers. Different models catch different real bugs.
43
+
44
+ ## What to hand back
45
+
46
+ - **What it does.** What changed, including the part that isn't obvious.
47
+ - **The one fact it's safe because of.** State it, say which step you got it to, and show the proof. If you couldn't prove it, write unproven.
48
+ - **Risks.** Each names how it breaks, the `file:line`, how likely and how bad, and how to check. Paste the proof for the ones that matter.
49
+ - **Cleared.** What you checked and why it's fine.
50
+ - **Before you merge.** The cheapest test or repro that catches the real bug, including the script you wrote.
51
+
52
+ Write it through `/unslop`, cite real code, and strip anything private before it goes anywhere public.
53
+
54
+ **Reply:** the writeup above, with the one safety fact either proven or marked unproven.
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: bro
3
+ description: 'Restate the last message in plain human language, with no jargon.'
4
+ ---
5
+ This reply only: restate the last message in plain human language. Not a mode switch or session flag. After this reply, revert to output.md.
6
+
7
+ Restate your last message. Stop using jargon and speak coherently. State it more simply and concisely, like one human talking to another.
8
+
9
+ Slash `/bro` only.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: browser
3
+ description: >-
4
+ Browse via bun repo browser (Lightpanda). App e2e uses
5
+ Playwright.
6
+ ---
7
+ Zero-config. `bun repo browser <verb>`.
8
+
9
+ Verbs: `nav <url>` · `snap` · `click <ref>` · `fill <ref> <text>` · `scroll [ref|down|up|N]` · `wait [ms]` · `hover <ref>` · `select <ref> <value>` · `shot` · `pdf` · `stop` · `doctor` · `ensure`.
10
+
11
+ - **snap** = default read (markdown + numbered refs). `click`/`fill` need a prior snap.
12
+ - Lightpanda default. The rail swaps to Chromium when `shot`/`pdf`/`trace`, win32, missing Lightpanda, probe-fail once, Chromium-first hosts (figma docs/sheets/slides mail.google earth amazon), or a blocked/empty/client-rendered snap. One swap. Do not stop and say you cannot.
13
+ - Session/profile: `.tmp/repo/browser/`. `stop` reaps; second `stop` ok.
14
+ - Windows: Chromium even if Lightpanda exists.
15
+ - `doctor`/`ensure` → `bun repo doctor`. Engine hints: `bun repo setup browser`. Do not read a README unless doctor/setup is missing; then https://github.com/workerstack/repo#prerequisites (not the consumer README).
16
+ - No env. No MCP. No raw Playwright. Spec: `node_modules/@workerstack/repo/references/browser.md`.
@@ -0,0 +1,11 @@
1
+ ---
2
+ name: clasp
3
+ description: >-
4
+ Low-level Apps Script CLI. Prefer /google-workspace for sheet, doc, meeting,
5
+ mail.
6
+ ---
7
+ # clasp
8
+
9
+ Custom Apps Script in-repo only. Spec: `node_modules/@workerstack/repo/references/clasp.md`.
10
+
11
+ Sheets, Docs, Slides, Calendar, Gmail: `bun repo google-workspace` and `node_modules/@workerstack/repo/references/google-workspace.md`.
@@ -0,0 +1,35 @@
1
+ ---
2
+ name: commit
3
+ description: >
4
+ Inspect the diff and commit with a Conventional Commits subject line. Use for
5
+ /commit, "commit this", "commit these changes". Never git push.
6
+ ---
7
+ Inspect `git status` + `git diff` (staged and unstaged) before the message.
8
+
9
+ Diff pass on the hunks you will stage: delete narrating comments, unused defensive guards or try/catch on trusted paths, `any` casts that only silence types, dead compatibility, and unrelated hunks. Keep a comment only when it states a constraint the code cannot encode. Keep behavior otherwise. Do not spawn a reviewer.
10
+
11
+ Stage only user intent. Never blind `git add -A` / `git add .`. Split unrelated concerns into multiple commits.
12
+
13
+ If a unique in-progress file exists under `.tmp/repo/implementations/`, its `## Files` is the default stage set. Still inspect `git status`.
14
+
15
+ Message = Conventional Commits **subject only**: `type(scope): subject` (scope optional).
16
+
17
+ Types: feat fix docs style refactor perf test build ci chore revert.
18
+
19
+ Subject: imperative lowercase no trailing period.
20
+
21
+ NO body. NO footer. NO `Co-Authored-By`. NO `Generated with`. NO 🤖. NO trailers. No AI attribution. Work belongs to the human.
22
+
23
+ One exception: when the commit-msg hook refuses the commit for its size, add one body line saying why it is that big (`git commit -m "<subject>" -m "<why>"`), or split the commit.
24
+
25
+ ## Where
26
+
27
+ Run `git rev-parse --show-toplevel` and `git branch --show-current` first.
28
+
29
+ - Managed worktree (`<root>/.worktrees/<name>` on `wt/<name>`): commit there, then run `cd <root> && bun repo worktree finish <name>` (from the root, not inside the worktree: its shell reports exit 1 after a successful finish, so do not rerun it). It rebases onto the default branch, fast-forwards it and removes the worktree. A conflict aborts the rebase and the message names the files: resolve them in the worktree, rerun the checks, run `finish` again.
30
+ - Main checkout: the gate denies a commit there unless the user's message names commit, and `/commit` does. Commit only changes the user made there. Your own changes belong in a worktree: run `bun repo worktree add <name>`, redo the work under `.worktrees/<name>`, and commit there. `bun repo init` and `bun repo sync` also run inside a worktree, so their output is never left in the main checkout.
31
+ - Any other linked worktree (T3 Code, Claude Desktop): commit only. `finish` cannot land it.
32
+
33
+ Never git push. Never `git push`. This skill never pushes.
34
+
35
+ Protocol: `node_modules/@workerstack/repo/references/cascade.md`. Do not paste.
@@ -0,0 +1,9 @@
1
+ ---
2
+ name: commit-and-push
3
+ description: >
4
+ Alias of commit-push (1-release stub). Use for /commit-and-push, "commit and
5
+ push", "commit this and push". Must push. Prefer /commit-push.
6
+ ---
7
+ Thin alias → the `commit-push` skill (`commit-push/SKILL.md` beside this one). Must push. Do not load /commit.
8
+
9
+ Protocol: `node_modules/@workerstack/repo/references/cascade.md`. Do not paste cascade.