@baselane/packs 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 (450) hide show
  1. package/LICENSE +191 -0
  2. package/NOTICE +6 -0
  3. package/README.md +15 -0
  4. package/dist/ai-merge.d.ts +26 -0
  5. package/dist/ai-merge.js +165 -0
  6. package/dist/aliases.d.ts +7 -0
  7. package/dist/aliases.js +9 -0
  8. package/dist/compose-draft.d.ts +19 -0
  9. package/dist/compose-draft.js +170 -0
  10. package/dist/drift-detect.d.ts +8 -0
  11. package/dist/drift-detect.js +21 -0
  12. package/dist/index.d.ts +40 -0
  13. package/dist/index.js +21 -0
  14. package/dist/ingest.d.ts +25 -0
  15. package/dist/ingest.js +262 -0
  16. package/dist/load.d.ts +7 -0
  17. package/dist/load.js +29 -0
  18. package/dist/manifest.d.ts +71 -0
  19. package/dist/manifest.js +208 -0
  20. package/dist/materialize-harness.d.ts +15 -0
  21. package/dist/materialize-harness.js +48 -0
  22. package/dist/merge-region.d.ts +60 -0
  23. package/dist/merge-region.js +166 -0
  24. package/dist/overlap.d.ts +32 -0
  25. package/dist/overlap.js +49 -0
  26. package/dist/pack-from-fileset.d.ts +13 -0
  27. package/dist/pack-from-fileset.js +133 -0
  28. package/dist/render/adapters.d.ts +6 -0
  29. package/dist/render/adapters.js +43 -0
  30. package/dist/render/agents-md.d.ts +3 -0
  31. package/dist/render/agents-md.js +49 -0
  32. package/dist/render/bundle-union.d.ts +10 -0
  33. package/dist/render/bundle-union.js +87 -0
  34. package/dist/render/bundle.d.ts +3 -0
  35. package/dist/render/bundle.js +51 -0
  36. package/dist/render/capabilities.d.ts +19 -0
  37. package/dist/render/capabilities.js +86 -0
  38. package/dist/render/claude.d.ts +3 -0
  39. package/dist/render/claude.js +92 -0
  40. package/dist/render/design.d.ts +27 -0
  41. package/dist/render/design.js +443 -0
  42. package/dist/render/graph.d.ts +11 -0
  43. package/dist/render/graph.js +245 -0
  44. package/dist/render/memory.d.ts +35 -0
  45. package/dist/render/memory.js +353 -0
  46. package/dist/render/render-pack.d.ts +3 -0
  47. package/dist/render/render-pack.js +43 -0
  48. package/dist/render/repo-union.d.ts +14 -0
  49. package/dist/render/repo-union.js +94 -0
  50. package/dist/render/rollout-files.d.ts +18 -0
  51. package/dist/render/rollout-files.js +39 -0
  52. package/dist/render/system-map.d.ts +8 -0
  53. package/dist/render/system-map.js +73 -0
  54. package/dist/render/tasks.d.ts +32 -0
  55. package/dist/render/tasks.js +327 -0
  56. package/dist/render/wiki.d.ts +30 -0
  57. package/dist/render/wiki.js +288 -0
  58. package/dist/seed/graph-seed.d.ts +17 -0
  59. package/dist/seed/graph-seed.js +18 -0
  60. package/dist/seed/wiki-seed.d.ts +23 -0
  61. package/dist/seed/wiki-seed.js +133 -0
  62. package/dist/seed-skills.d.ts +18 -0
  63. package/dist/seed-skills.js +134 -0
  64. package/dist/types.d.ts +122 -0
  65. package/dist/types.js +1 -0
  66. package/dist/validate.d.ts +30 -0
  67. package/dist/validate.js +397 -0
  68. package/package.json +38 -0
  69. package/packs/database-review/pack.json +44 -0
  70. package/packs/database-review/rendered/.baselane/capabilities.json +10 -0
  71. package/packs/database-review/rendered/.baselane/system-map/README.md +18 -0
  72. package/packs/database-review/rendered/.claude/agents/database-reviewer.md +8 -0
  73. package/packs/database-review/rendered/.claude/commands/db-review.md +6 -0
  74. package/packs/database-review/rendered/.claude/commands/map.md +6 -0
  75. package/packs/database-review/rendered/.claude/settings.json +26 -0
  76. package/packs/database-review/rendered/.github/copilot-instructions.md +48 -0
  77. package/packs/database-review/rendered/AGENTS.md +66 -0
  78. package/packs/database-review/rendered/CLAUDE.md +9 -0
  79. package/packs/database-review/rendered/GEMINI.md +3 -0
  80. package/packs/disciplined-workflow/pack.json +63 -0
  81. package/packs/disciplined-workflow/rendered/.baselane/capabilities.json +10 -0
  82. package/packs/disciplined-workflow/rendered/.baselane/tasks/README.md +36 -0
  83. package/packs/disciplined-workflow/rendered/.claude/agents/plan-reviewer.md +8 -0
  84. package/packs/disciplined-workflow/rendered/.claude/agents/task-reviewer.md +8 -0
  85. package/packs/disciplined-workflow/rendered/.claude/commands/brainstorm.md +6 -0
  86. package/packs/disciplined-workflow/rendered/.claude/commands/execute-plan.md +6 -0
  87. package/packs/disciplined-workflow/rendered/.claude/commands/plan-work.md +6 -0
  88. package/packs/disciplined-workflow/rendered/.claude/commands/write-plan.md +6 -0
  89. package/packs/disciplined-workflow/rendered/.claude/settings.json +24 -0
  90. package/packs/disciplined-workflow/rendered/.github/copilot-instructions.md +24 -0
  91. package/packs/disciplined-workflow/rendered/AGENTS.md +43 -0
  92. package/packs/disciplined-workflow/rendered/CLAUDE.md +12 -0
  93. package/packs/disciplined-workflow/rendered/GEMINI.md +3 -0
  94. package/packs/frontend-design/pack.json +129 -0
  95. package/packs/frontend-design/rendered/.claude/skills/clone/SKILL.md +39 -0
  96. package/packs/frontend-design/rendered/.claude/skills/functional-ui/SKILL.md +78 -0
  97. package/packs/frontend-design/rendered/.claude/skills/gsap/SKILL.md +36 -0
  98. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-core.md +254 -0
  99. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-frameworks.md +266 -0
  100. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-performance.md +79 -0
  101. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-plugins.md +433 -0
  102. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-react.md +136 -0
  103. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-scrolltrigger.md +296 -0
  104. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-timeline.md +107 -0
  105. package/packs/frontend-design/rendered/.claude/skills/gsap/gsap-utils.md +284 -0
  106. package/packs/frontend-design/rendered/.claude/skills/marketing-ui/SKILL.md +36 -0
  107. package/packs/frontend-design/rendered/.claude/skills/shadcn/SKILL.md +267 -0
  108. package/packs/frontend-design/rendered/.claude/skills/shadcn/base-vs-radix.md +306 -0
  109. package/packs/frontend-design/rendered/.claude/skills/shadcn/cli.md +290 -0
  110. package/packs/frontend-design/rendered/.claude/skills/shadcn/composition.md +195 -0
  111. package/packs/frontend-design/rendered/.claude/skills/shadcn/customization.md +209 -0
  112. package/packs/frontend-design/rendered/.claude/skills/shadcn/forms.md +192 -0
  113. package/packs/frontend-design/rendered/.claude/skills/shadcn/icons.md +101 -0
  114. package/packs/frontend-design/rendered/.claude/skills/shadcn/mcp.md +105 -0
  115. package/packs/frontend-design/rendered/.claude/skills/shadcn/registry.md +277 -0
  116. package/packs/frontend-design/rendered/.claude/skills/shadcn/styling.md +162 -0
  117. package/packs/frontend-design/rendered/.github/copilot-instructions.md +474 -0
  118. package/packs/frontend-design/rendered/AGENTS.md +33 -0
  119. package/packs/frontend-design/rendered/CLAUDE.md +10 -0
  120. package/packs/frontend-design/rendered/GEMINI.md +456 -0
  121. package/packs/frontend-taste/pack.json +43 -0
  122. package/packs/frontend-taste/rendered/.baselane/capabilities.json +16 -0
  123. package/packs/frontend-taste/rendered/.claude/agents/taste-reviewer.md +8 -0
  124. package/packs/frontend-taste/rendered/.claude/commands/design-review.md +6 -0
  125. package/packs/frontend-taste/rendered/.claude/settings.json +15 -0
  126. package/packs/frontend-taste/rendered/.github/copilot-instructions.md +51 -0
  127. package/packs/frontend-taste/rendered/AGENTS.md +68 -0
  128. package/packs/frontend-taste/rendered/CLAUDE.md +8 -0
  129. package/packs/frontend-taste/rendered/DESIGN.md +72 -0
  130. package/packs/frontend-taste/rendered/GEMINI.md +3 -0
  131. package/packs/go-rules/pack.json +38 -0
  132. package/packs/go-rules/rendered/.claude/agents/go-reviewer.md +8 -0
  133. package/packs/go-rules/rendered/.claude/commands/go-review.md +6 -0
  134. package/packs/go-rules/rendered/.claude/settings.json +15 -0
  135. package/packs/go-rules/rendered/.github/copilot-instructions.md +44 -0
  136. package/packs/go-rules/rendered/AGENTS.md +54 -0
  137. package/packs/go-rules/rendered/CLAUDE.md +8 -0
  138. package/packs/go-rules/rendered/GEMINI.md +3 -0
  139. package/packs/python-rules/pack.json +38 -0
  140. package/packs/python-rules/rendered/.claude/agents/python-reviewer.md +8 -0
  141. package/packs/python-rules/rendered/.claude/commands/python-review.md +6 -0
  142. package/packs/python-rules/rendered/.claude/settings.json +15 -0
  143. package/packs/python-rules/rendered/.github/copilot-instructions.md +43 -0
  144. package/packs/python-rules/rendered/AGENTS.md +53 -0
  145. package/packs/python-rules/rendered/CLAUDE.md +8 -0
  146. package/packs/python-rules/rendered/GEMINI.md +3 -0
  147. package/packs/second-brain/pack.json +36 -0
  148. package/packs/second-brain/rendered/.baselane/capabilities.json +25 -0
  149. package/packs/second-brain/rendered/.baselane/memory/README.md +34 -0
  150. package/packs/second-brain/rendered/.baselane/wiki/README.md +62 -0
  151. package/packs/second-brain/rendered/.claude/agents/librarian.md +14 -0
  152. package/packs/second-brain/rendered/.claude/commands/remember.md +6 -0
  153. package/packs/second-brain/rendered/.claude/commands/wiki.md +6 -0
  154. package/packs/second-brain/rendered/.claude/settings.json +35 -0
  155. package/packs/second-brain/rendered/.github/copilot-instructions.md +24 -0
  156. package/packs/second-brain/rendered/AGENTS.md +41 -0
  157. package/packs/second-brain/rendered/CLAUDE.md +9 -0
  158. package/packs/second-brain/rendered/GEMINI.md +3 -0
  159. package/packs/security-review/pack.json +72 -0
  160. package/packs/security-review/rendered/.claude/agents/security-reviewer.md +8 -0
  161. package/packs/security-review/rendered/.claude/commands/security-audit.md +6 -0
  162. package/packs/security-review/rendered/.claude/commands/security-scan.md +6 -0
  163. package/packs/security-review/rendered/.claude/settings.json +35 -0
  164. package/packs/security-review/rendered/.claude/skills/security-audit/SKILL.md +44 -0
  165. package/packs/security-review/rendered/.claude/skills/validate-at-boundaries/SKILL.md +41 -0
  166. package/packs/security-review/rendered/.github/copilot-instructions.md +137 -0
  167. package/packs/security-review/rendered/AGENTS.md +66 -0
  168. package/packs/security-review/rendered/CLAUDE.md +11 -0
  169. package/packs/security-review/rendered/GEMINI.md +90 -0
  170. package/packs/software-engineer-harness/pack.json +98 -0
  171. package/packs/software-engineer-harness/rendered/.baselane/capabilities.json +15 -0
  172. package/packs/software-engineer-harness/rendered/.baselane/system-map/README.md +18 -0
  173. package/packs/software-engineer-harness/rendered/.baselane/tasks/README.md +36 -0
  174. package/packs/software-engineer-harness/rendered/.claude/agents/architect.md +8 -0
  175. package/packs/software-engineer-harness/rendered/.claude/agents/checker.md +8 -0
  176. package/packs/software-engineer-harness/rendered/.claude/agents/code-reviewer.md +8 -0
  177. package/packs/software-engineer-harness/rendered/.claude/agents/code-simplifier.md +8 -0
  178. package/packs/software-engineer-harness/rendered/.claude/agents/planner.md +8 -0
  179. package/packs/software-engineer-harness/rendered/.claude/agents/reviewer.md +8 -0
  180. package/packs/software-engineer-harness/rendered/.claude/commands/build-and-check.md +6 -0
  181. package/packs/software-engineer-harness/rendered/.claude/commands/map.md +6 -0
  182. package/packs/software-engineer-harness/rendered/.claude/commands/plan-change.md +6 -0
  183. package/packs/software-engineer-harness/rendered/.claude/commands/plan-work.md +6 -0
  184. package/packs/software-engineer-harness/rendered/.claude/commands/review-change.md +6 -0
  185. package/packs/software-engineer-harness/rendered/.claude/commands/tdd-task.md +6 -0
  186. package/packs/software-engineer-harness/rendered/.claude/settings.json +35 -0
  187. package/packs/software-engineer-harness/rendered/.github/copilot-instructions.md +37 -0
  188. package/packs/software-engineer-harness/rendered/AGENTS.md +58 -0
  189. package/packs/software-engineer-harness/rendered/CLAUDE.md +18 -0
  190. package/packs/software-engineer-harness/rendered/GEMINI.md +3 -0
  191. package/packs/systematic-debugging/pack.json +44 -0
  192. package/packs/systematic-debugging/rendered/.claude/agents/debugger.md +8 -0
  193. package/packs/systematic-debugging/rendered/.claude/commands/debug.md +6 -0
  194. package/packs/systematic-debugging/rendered/.claude/commands/root-cause.md +6 -0
  195. package/packs/systematic-debugging/rendered/.claude/settings.json +15 -0
  196. package/packs/systematic-debugging/rendered/.github/copilot-instructions.md +20 -0
  197. package/packs/systematic-debugging/rendered/AGENTS.md +31 -0
  198. package/packs/systematic-debugging/rendered/CLAUDE.md +9 -0
  199. package/packs/systematic-debugging/rendered/GEMINI.md +3 -0
  200. package/packs/token-efficiency-harness/pack.json +49 -0
  201. package/packs/token-efficiency-harness/rendered/.baselane/capabilities.json +10 -0
  202. package/packs/token-efficiency-harness/rendered/.baselane/memory/README.md +34 -0
  203. package/packs/token-efficiency-harness/rendered/.claude/agents/scout.md +8 -0
  204. package/packs/token-efficiency-harness/rendered/.claude/commands/handoff.md +6 -0
  205. package/packs/token-efficiency-harness/rendered/.claude/commands/remember.md +6 -0
  206. package/packs/token-efficiency-harness/rendered/.claude/commands/usage-audit.md +6 -0
  207. package/packs/token-efficiency-harness/rendered/.claude/settings.json +26 -0
  208. package/packs/token-efficiency-harness/rendered/.github/copilot-instructions.md +26 -0
  209. package/packs/token-efficiency-harness/rendered/AGENTS.md +44 -0
  210. package/packs/token-efficiency-harness/rendered/CLAUDE.md +10 -0
  211. package/packs/token-efficiency-harness/rendered/GEMINI.md +3 -0
  212. package/packs/typescript-rules/pack.json +46 -0
  213. package/packs/typescript-rules/rendered/.claude/agents/typescript-reviewer.md +8 -0
  214. package/packs/typescript-rules/rendered/.claude/commands/typescript-review.md +6 -0
  215. package/packs/typescript-rules/rendered/.claude/settings.json +15 -0
  216. package/packs/typescript-rules/rendered/.claude/skills/immutable-updates/SKILL.md +46 -0
  217. package/packs/typescript-rules/rendered/.github/copilot-instructions.md +89 -0
  218. package/packs/typescript-rules/rendered/AGENTS.md +55 -0
  219. package/packs/typescript-rules/rendered/CLAUDE.md +9 -0
  220. package/packs/typescript-rules/rendered/GEMINI.md +51 -0
  221. package/skills/algorithmic-art/LICENSE +202 -0
  222. package/skills/algorithmic-art/LICENSE.txt +202 -0
  223. package/skills/algorithmic-art/SKILL.md +405 -0
  224. package/skills/algorithmic-art/templates/generator_template.js +223 -0
  225. package/skills/algorithmic-art/templates/viewer.html +599 -0
  226. package/skills/brainstorming/LICENSE +21 -0
  227. package/skills/brainstorming/SKILL.md +159 -0
  228. package/skills/brainstorming/scripts/frame-template.html +213 -0
  229. package/skills/brainstorming/scripts/helper.js +167 -0
  230. package/skills/brainstorming/scripts/server.cjs +723 -0
  231. package/skills/brainstorming/scripts/start-server.sh +209 -0
  232. package/skills/brainstorming/scripts/stop-server.sh +120 -0
  233. package/skills/brainstorming/spec-document-reviewer-prompt.md +49 -0
  234. package/skills/brainstorming/visual-companion.md +291 -0
  235. package/skills/brand-guidelines/LICENSE +202 -0
  236. package/skills/brand-guidelines/LICENSE.txt +202 -0
  237. package/skills/brand-guidelines/SKILL.md +73 -0
  238. package/skills/canvas-design/LICENSE +202 -0
  239. package/skills/canvas-design/LICENSE.txt +202 -0
  240. package/skills/canvas-design/SKILL.md +130 -0
  241. package/skills/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
  242. package/skills/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  243. package/skills/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  244. package/skills/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
  245. package/skills/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  246. package/skills/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
  247. package/skills/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  248. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  249. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
  250. package/skills/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  251. package/skills/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  252. package/skills/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  253. package/skills/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
  254. package/skills/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  255. package/skills/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
  256. package/skills/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  257. package/skills/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
  258. package/skills/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  259. package/skills/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  260. package/skills/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
  261. package/skills/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  262. package/skills/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
  263. package/skills/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  264. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  265. package/skills/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
  266. package/skills/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  267. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  268. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  269. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  270. package/skills/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  271. package/skills/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  272. package/skills/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  273. package/skills/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  274. package/skills/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
  275. package/skills/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  276. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  277. package/skills/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  278. package/skills/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
  279. package/skills/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  280. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  281. package/skills/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
  282. package/skills/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  283. package/skills/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  284. package/skills/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  285. package/skills/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
  286. package/skills/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
  287. package/skills/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  288. package/skills/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  289. package/skills/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  290. package/skills/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  291. package/skills/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
  292. package/skills/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  293. package/skills/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  294. package/skills/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
  295. package/skills/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  296. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
  297. package/skills/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  298. package/skills/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  299. package/skills/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
  300. package/skills/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  301. package/skills/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  302. package/skills/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
  303. package/skills/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
  304. package/skills/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  305. package/skills/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  306. package/skills/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
  307. package/skills/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  308. package/skills/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
  309. package/skills/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  310. package/skills/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  311. package/skills/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
  312. package/skills/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  313. package/skills/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
  314. package/skills/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  315. package/skills/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  316. package/skills/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  317. package/skills/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  318. package/skills/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
  319. package/skills/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  320. package/skills/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
  321. package/skills/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  322. package/skills/dispatching-parallel-agents/LICENSE +21 -0
  323. package/skills/dispatching-parallel-agents/SKILL.md +185 -0
  324. package/skills/executing-plans/LICENSE +21 -0
  325. package/skills/executing-plans/SKILL.md +70 -0
  326. package/skills/finishing-a-development-branch/LICENSE +21 -0
  327. package/skills/finishing-a-development-branch/SKILL.md +241 -0
  328. package/skills/first-party/README.md +32 -0
  329. package/skills/first-party/append-only-jsonl-stores/SKILL.md +50 -0
  330. package/skills/first-party/golden-snapshot-discipline/SKILL.md +45 -0
  331. package/skills/first-party/immutable-updates/SKILL.md +46 -0
  332. package/skills/first-party/manifest.json +10 -0
  333. package/skills/first-party/ts-extension-imports/SKILL.md +49 -0
  334. package/skills/first-party/validate-at-boundaries/SKILL.md +41 -0
  335. package/skills/first-party/zero-dependency-discipline/SKILL.md +41 -0
  336. package/skills/frontend-design/LICENSE +177 -0
  337. package/skills/frontend-design/LICENSE.txt +177 -0
  338. package/skills/frontend-design/SKILL.md +55 -0
  339. package/skills/internal-comms/LICENSE +202 -0
  340. package/skills/internal-comms/LICENSE.txt +202 -0
  341. package/skills/internal-comms/SKILL.md +32 -0
  342. package/skills/internal-comms/examples/3p-updates.md +47 -0
  343. package/skills/internal-comms/examples/company-newsletter.md +65 -0
  344. package/skills/internal-comms/examples/faq-answers.md +30 -0
  345. package/skills/internal-comms/examples/general-comms.md +16 -0
  346. package/skills/mcp-builder/LICENSE +202 -0
  347. package/skills/mcp-builder/LICENSE.txt +202 -0
  348. package/skills/mcp-builder/SKILL.md +236 -0
  349. package/skills/mcp-builder/reference/evaluation.md +602 -0
  350. package/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
  351. package/skills/mcp-builder/reference/node_mcp_server.md +970 -0
  352. package/skills/mcp-builder/reference/python_mcp_server.md +719 -0
  353. package/skills/mcp-builder/scripts/connections.py +151 -0
  354. package/skills/mcp-builder/scripts/evaluation.py +373 -0
  355. package/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
  356. package/skills/mcp-builder/scripts/requirements.txt +2 -0
  357. package/skills/receiving-code-review/LICENSE +21 -0
  358. package/skills/receiving-code-review/SKILL.md +213 -0
  359. package/skills/requesting-code-review/LICENSE +21 -0
  360. package/skills/requesting-code-review/SKILL.md +103 -0
  361. package/skills/requesting-code-review/code-reviewer.md +172 -0
  362. package/skills/seed-manifest.json +185 -0
  363. package/skills/skill-creator/LICENSE +202 -0
  364. package/skills/skill-creator/LICENSE.txt +202 -0
  365. package/skills/skill-creator/SKILL.md +485 -0
  366. package/skills/skill-creator/agents/analyzer.md +274 -0
  367. package/skills/skill-creator/agents/comparator.md +202 -0
  368. package/skills/skill-creator/agents/grader.md +223 -0
  369. package/skills/skill-creator/assets/eval_review.html +146 -0
  370. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  371. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  372. package/skills/skill-creator/references/schemas.md +430 -0
  373. package/skills/skill-creator/scripts/__init__.py +0 -0
  374. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  375. package/skills/skill-creator/scripts/generate_report.py +326 -0
  376. package/skills/skill-creator/scripts/improve_description.py +247 -0
  377. package/skills/skill-creator/scripts/package_skill.py +136 -0
  378. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  379. package/skills/skill-creator/scripts/run_eval.py +310 -0
  380. package/skills/skill-creator/scripts/run_loop.py +328 -0
  381. package/skills/skill-creator/scripts/utils.py +47 -0
  382. package/skills/slack-gif-creator/LICENSE +202 -0
  383. package/skills/slack-gif-creator/LICENSE.txt +202 -0
  384. package/skills/slack-gif-creator/SKILL.md +254 -0
  385. package/skills/slack-gif-creator/core/easing.py +234 -0
  386. package/skills/slack-gif-creator/core/frame_composer.py +176 -0
  387. package/skills/slack-gif-creator/core/gif_builder.py +269 -0
  388. package/skills/slack-gif-creator/core/validators.py +136 -0
  389. package/skills/slack-gif-creator/requirements.txt +4 -0
  390. package/skills/subagent-driven-development/LICENSE +21 -0
  391. package/skills/subagent-driven-development/SKILL.md +418 -0
  392. package/skills/subagent-driven-development/implementer-prompt.md +139 -0
  393. package/skills/subagent-driven-development/scripts/review-package +44 -0
  394. package/skills/subagent-driven-development/scripts/sdd-workspace +22 -0
  395. package/skills/subagent-driven-development/scripts/task-brief +40 -0
  396. package/skills/subagent-driven-development/task-reviewer-prompt.md +188 -0
  397. package/skills/systematic-debugging/CREATION-LOG.md +119 -0
  398. package/skills/systematic-debugging/LICENSE +21 -0
  399. package/skills/systematic-debugging/SKILL.md +296 -0
  400. package/skills/systematic-debugging/condition-based-waiting-example.ts +158 -0
  401. package/skills/systematic-debugging/condition-based-waiting.md +115 -0
  402. package/skills/systematic-debugging/defense-in-depth.md +122 -0
  403. package/skills/systematic-debugging/find-polluter.sh +63 -0
  404. package/skills/systematic-debugging/root-cause-tracing.md +169 -0
  405. package/skills/systematic-debugging/test-academic.md +14 -0
  406. package/skills/systematic-debugging/test-pressure-1.md +58 -0
  407. package/skills/systematic-debugging/test-pressure-2.md +68 -0
  408. package/skills/systematic-debugging/test-pressure-3.md +69 -0
  409. package/skills/test-driven-development/LICENSE +21 -0
  410. package/skills/test-driven-development/SKILL.md +371 -0
  411. package/skills/test-driven-development/testing-anti-patterns.md +299 -0
  412. package/skills/theme-factory/LICENSE +202 -0
  413. package/skills/theme-factory/LICENSE.txt +202 -0
  414. package/skills/theme-factory/SKILL.md +59 -0
  415. package/skills/theme-factory/theme-showcase.pdf +0 -0
  416. package/skills/theme-factory/themes/arctic-frost.md +19 -0
  417. package/skills/theme-factory/themes/botanical-garden.md +19 -0
  418. package/skills/theme-factory/themes/desert-rose.md +19 -0
  419. package/skills/theme-factory/themes/forest-canopy.md +19 -0
  420. package/skills/theme-factory/themes/golden-hour.md +19 -0
  421. package/skills/theme-factory/themes/midnight-galaxy.md +19 -0
  422. package/skills/theme-factory/themes/modern-minimalist.md +19 -0
  423. package/skills/theme-factory/themes/ocean-depths.md +19 -0
  424. package/skills/theme-factory/themes/sunset-boulevard.md +19 -0
  425. package/skills/theme-factory/themes/tech-innovation.md +19 -0
  426. package/skills/using-git-worktrees/LICENSE +21 -0
  427. package/skills/using-git-worktrees/SKILL.md +202 -0
  428. package/skills/using-superpowers/LICENSE +21 -0
  429. package/skills/using-superpowers/SKILL.md +62 -0
  430. package/skills/using-superpowers/references/antigravity-tools.md +23 -0
  431. package/skills/using-superpowers/references/codex-tools.md +39 -0
  432. package/skills/using-superpowers/references/pi-tools.md +16 -0
  433. package/skills/verification-before-completion/LICENSE +21 -0
  434. package/skills/verification-before-completion/SKILL.md +139 -0
  435. package/skills/web-artifacts-builder/LICENSE +202 -0
  436. package/skills/web-artifacts-builder/LICENSE.txt +202 -0
  437. package/skills/web-artifacts-builder/SKILL.md +74 -0
  438. package/skills/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  439. package/skills/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  440. package/skills/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  441. package/skills/webapp-testing/LICENSE +202 -0
  442. package/skills/webapp-testing/LICENSE.txt +202 -0
  443. package/skills/webapp-testing/SKILL.md +96 -0
  444. package/skills/webapp-testing/examples/console_logging.py +35 -0
  445. package/skills/webapp-testing/examples/element_discovery.py +40 -0
  446. package/skills/webapp-testing/examples/static_html_automation.py +33 -0
  447. package/skills/webapp-testing/scripts/with_server.py +106 -0
  448. package/skills/writing-plans/LICENSE +21 -0
  449. package/skills/writing-plans/SKILL.md +174 -0
  450. package/skills/writing-plans/plan-document-reviewer-prompt.md +49 -0
@@ -0,0 +1,43 @@
1
+ import { renderAgentsMd } from "./agents-md.js";
2
+ import { renderCapabilities } from "./capabilities.js";
3
+ import { renderClaudeFiles } from "./claude.js";
4
+ import { renderCopilot, renderGemini } from "./adapters.js";
5
+ import { hasRepoMemoryFiles, renderRepoMemoryFiles, withMemoryScaffolding } from "./memory.js";
6
+ import { hasRepoDesignAnalyze, renderRepoDesignFiles, withDesignAnalyzeScaffolding } from "./design.js";
7
+ import { hasRepoTasksLedger, renderRepoTasksFiles, withTasksScaffolding } from "./tasks.js";
8
+ import { hasRepoWikiBaselane, renderRepoWikiFiles, withWikiScaffolding } from "./wiki.js";
9
+ import { hasRepoGraphCapability, renderRepoGraphFiles, withGraphScaffolding } from "./graph.js";
10
+ import { hasRepoSystemMapCapability, renderRepoSystemMapFiles, withSystemMapScaffolding } from "./system-map.js";
11
+ /** Full deterministic file map for one pack: canonical AGENTS.md + all tool targets. */
12
+ export function renderPack(pack) {
13
+ const { manifest } = renderCapabilities(pack);
14
+ // A repo-store memory+files (or tasks+ledger, wiki+baselane, or graph) capability adds its
15
+ // command and Stop-hook reminder to the repo's own Claude Code surface; org-store versions
16
+ // live on the laptop instead (see render/bundle.ts), so this pack is left untouched in that case.
17
+ let claudePack = pack;
18
+ if (hasRepoMemoryFiles(pack))
19
+ claudePack = withMemoryScaffolding(claudePack, "repo");
20
+ if (hasRepoTasksLedger(pack))
21
+ claudePack = withTasksScaffolding(claudePack, "repo");
22
+ if (hasRepoWikiBaselane(pack))
23
+ claudePack = withWikiScaffolding(claudePack, "repo");
24
+ if (hasRepoDesignAnalyze(pack))
25
+ claudePack = withDesignAnalyzeScaffolding(claudePack, "repo");
26
+ if (hasRepoGraphCapability(pack))
27
+ claudePack = withGraphScaffolding(claudePack);
28
+ if (hasRepoSystemMapCapability(pack))
29
+ claudePack = withSystemMapScaffolding(claudePack);
30
+ return {
31
+ "AGENTS.md": renderAgentsMd(pack),
32
+ ...renderClaudeFiles(claudePack),
33
+ ".github/copilot-instructions.md": renderCopilot(pack),
34
+ "GEMINI.md": renderGemini(pack),
35
+ ...(manifest ? { ".baselane/capabilities.json": manifest } : {}),
36
+ ...renderRepoMemoryFiles(pack),
37
+ ...renderRepoDesignFiles(pack),
38
+ ...renderRepoTasksFiles(pack),
39
+ ...renderRepoWikiFiles(pack),
40
+ ...renderRepoGraphFiles(pack),
41
+ ...renderRepoSystemMapFiles(pack),
42
+ };
43
+ }
@@ -0,0 +1,14 @@
1
+ import type { FileMap, WorkflowPack } from "../types.ts";
2
+ export interface RepoUnion {
3
+ files: FileMap;
4
+ collisions: string[];
5
+ }
6
+ /**
7
+ * Unions every NON-entry (fully-generated) repo file `renderPack` produces across an ordered
8
+ * (most-specific-first) effective pack set — the repo-committed counterpart of
9
+ * render/bundle-union.ts's laptop-bundle union. `.claude/settings.json` hooks concatenate per
10
+ * event; `.baselane/capabilities.json` capabilities dedup; every other path is first-writer-wins
11
+ * with a collisions note on a differing later write. `renderRepoFileUnion([p]).files` is
12
+ * byte-identical to `renderPack(p)` minus its ENTRY_FILES keys.
13
+ */
14
+ export declare function renderRepoFileUnion(packs: WorkflowPack[]): RepoUnion;
@@ -0,0 +1,94 @@
1
+ import { ENTRY_FILES } from "../merge-region.js";
2
+ import { renderPack } from "./render-pack.js";
3
+ const SETTINGS_PATH = ".claude/settings.json";
4
+ const MANIFEST_PATH = ".baselane/capabilities.json";
5
+ /** Concatenates every rendered pack's hook entries per event, raw. Mirrors
6
+ * render/bundle-union.ts's mergeRenderedSettings but is NOT shared code with it — that module
7
+ * feeds a different consumer (/api/plan's laptop bundle) over bundle-relative paths; this one
8
+ * feeds the repo commit over repo-relative paths. Duplicated on purpose to avoid coupling two
9
+ * independent consumers to one shared internal. */
10
+ function mergeSettingsJson(jsons) {
11
+ const byEvent = {};
12
+ for (const json of jsons) {
13
+ let parsed;
14
+ try {
15
+ parsed = JSON.parse(json);
16
+ }
17
+ catch {
18
+ continue;
19
+ }
20
+ const hooks = parsed.hooks;
21
+ if (!hooks || typeof hooks !== "object")
22
+ continue;
23
+ for (const [event, entries] of Object.entries(hooks)) {
24
+ if (!Array.isArray(entries))
25
+ continue;
26
+ (byEvent[event] ??= []).push(...entries);
27
+ }
28
+ }
29
+ return JSON.stringify({ hooks: byEvent }, null, 2) + "\n";
30
+ }
31
+ /** Unions each manifest's capabilities, dedup by exact JSON identity, first occurrence wins. */
32
+ function mergeCapabilitiesManifest(jsons) {
33
+ const capabilities = [];
34
+ const seen = new Set();
35
+ for (const json of jsons) {
36
+ let parsed;
37
+ try {
38
+ parsed = JSON.parse(json);
39
+ }
40
+ catch {
41
+ continue;
42
+ }
43
+ const list = parsed.capabilities;
44
+ if (!Array.isArray(list))
45
+ continue;
46
+ for (const c of list) {
47
+ const key = JSON.stringify(c);
48
+ if (!seen.has(key)) {
49
+ seen.add(key);
50
+ capabilities.push(c);
51
+ }
52
+ }
53
+ }
54
+ return JSON.stringify({ version: 1, capabilities }, null, 2) + "\n";
55
+ }
56
+ /**
57
+ * Unions every NON-entry (fully-generated) repo file `renderPack` produces across an ordered
58
+ * (most-specific-first) effective pack set — the repo-committed counterpart of
59
+ * render/bundle-union.ts's laptop-bundle union. `.claude/settings.json` hooks concatenate per
60
+ * event; `.baselane/capabilities.json` capabilities dedup; every other path is first-writer-wins
61
+ * with a collisions note on a differing later write. `renderRepoFileUnion([p]).files` is
62
+ * byte-identical to `renderPack(p)` minus its ENTRY_FILES keys.
63
+ */
64
+ export function renderRepoFileUnion(packs) {
65
+ const files = {};
66
+ const collisions = [];
67
+ const settingsJsons = [];
68
+ const manifestJsons = [];
69
+ for (const pack of packs) {
70
+ for (const [path, content] of Object.entries(renderPack(pack))) {
71
+ if (ENTRY_FILES.includes(path))
72
+ continue;
73
+ if (path === SETTINGS_PATH) {
74
+ settingsJsons.push(content);
75
+ continue;
76
+ }
77
+ if (path === MANIFEST_PATH) {
78
+ manifestJsons.push(content);
79
+ continue;
80
+ }
81
+ if (!(path in files)) {
82
+ files[path] = content;
83
+ }
84
+ else if (files[path] !== content && !collisions.includes(path)) {
85
+ collisions.push(path);
86
+ }
87
+ }
88
+ }
89
+ if (settingsJsons.length > 0)
90
+ files[SETTINGS_PATH] = mergeSettingsJson(settingsJsons);
91
+ if (manifestJsons.length > 0)
92
+ files[MANIFEST_PATH] = mergeCapabilitiesManifest(manifestJsons);
93
+ return { files, collisions };
94
+ }
@@ -0,0 +1,18 @@
1
+ import type { FileMap, WorkflowPack } from "../types.ts";
2
+ export interface RolloutFiles {
3
+ files: FileMap;
4
+ collisions: string[];
5
+ }
6
+ /**
7
+ * Renders the full file set for the single combined `baselane/rollout` branch, given the repo's
8
+ * ordered (most-specific-first) effective pack set. `baseEntryFiles` is each ENTRY_FILES path's
9
+ * current content on the repo's default branch (or absent/undefined if the file doesn't exist
10
+ * there) — the caller (distributeRollout) fetches these; this function is otherwise pure.
11
+ *
12
+ * Entry files (AGENTS.md/CLAUDE.md/GEMINI.md/.github/copilot-instructions.md): strip any pack's
13
+ * region that isn't in `packs`, then fold `mergeManagedRegion` over `packs` in order. The result
14
+ * carries exactly `packs`' regions — idempotent on a repeat call with the same set and base.
15
+ * Every other rendered path (settings.json, agents/commands/skills, capability files) comes from
16
+ * `renderRepoFileUnion`.
17
+ */
18
+ export declare function renderRolloutFiles(baseEntryFiles: Record<string, string | null | undefined>, packs: WorkflowPack[]): RolloutFiles;
@@ -0,0 +1,39 @@
1
+ import { ENTRY_FILES, mergeManagedRegion, stripManagedRegion, strippedManagedPackIds } from "../merge-region.js";
2
+ import { renderPack } from "./render-pack.js";
3
+ import { renderRepoFileUnion } from "./repo-union.js";
4
+ /**
5
+ * Renders the full file set for the single combined `baselane/rollout` branch, given the repo's
6
+ * ordered (most-specific-first) effective pack set. `baseEntryFiles` is each ENTRY_FILES path's
7
+ * current content on the repo's default branch (or absent/undefined if the file doesn't exist
8
+ * there) — the caller (distributeRollout) fetches these; this function is otherwise pure.
9
+ *
10
+ * Entry files (AGENTS.md/CLAUDE.md/GEMINI.md/.github/copilot-instructions.md): strip any pack's
11
+ * region that isn't in `packs`, then fold `mergeManagedRegion` over `packs` in order. The result
12
+ * carries exactly `packs`' regions — idempotent on a repeat call with the same set and base.
13
+ * Every other rendered path (settings.json, agents/commands/skills, capability files) comes from
14
+ * `renderRepoFileUnion`.
15
+ */
16
+ export function renderRolloutFiles(baseEntryFiles, packs) {
17
+ const files = {};
18
+ const wantedIds = new Set(packs.map((p) => p.id));
19
+ const rendered = packs.map((pack) => ({ pack, body: renderPack(pack) }));
20
+ for (const path of ENTRY_FILES) {
21
+ let content = baseEntryFiles[path] ?? null;
22
+ if (content !== null) {
23
+ for (const packId of strippedManagedPackIds(content)) {
24
+ if (!wantedIds.has(packId))
25
+ content = stripManagedRegion(content, packId);
26
+ }
27
+ }
28
+ for (const { pack, body } of rendered) {
29
+ const managedBody = body[path];
30
+ if (managedBody === undefined)
31
+ continue;
32
+ content = mergeManagedRegion(content, managedBody, pack.id, pack.version);
33
+ }
34
+ if (content !== null)
35
+ files[path] = content;
36
+ }
37
+ const repoUnion = renderRepoFileUnion(packs);
38
+ return { files: { ...files, ...repoUnion.files }, collisions: repoUnion.collisions };
39
+ }
@@ -0,0 +1,8 @@
1
+ import type { FileMap, WorkflowPack } from "../types.ts";
2
+ export declare const SYSTEM_MAP_AGENTS_NOTE: string;
3
+ export declare function hasRepoSystemMapCapability(pack: WorkflowPack): boolean;
4
+ export declare function hasOrgSystemMapCapability(pack: WorkflowPack): boolean;
5
+ /** Adds the /map command + Stop-hook reminder for repo-store system-map packs. */
6
+ export declare function withSystemMapScaffolding(pack: WorkflowPack): WorkflowPack;
7
+ export declare function renderRepoSystemMapFiles(pack: WorkflowPack): FileMap;
8
+ export declare function renderBundleSystemMapFiles(pack: WorkflowPack): FileMap;
@@ -0,0 +1,73 @@
1
+ const SYSTEM_MAP_README = `# System map
2
+
3
+ \`ARCHITECTURE.md\` at the repo root carries a baselane-managed region generated from static
4
+ analysis: languages, layout, commands, import-graph hotspots, and measured conventions —
5
+ including **hidden rules** (conventions the code follows at >=90% consistency that no lint
6
+ config enforces). Human prose outside the managed region is never touched.
7
+
8
+ ## Regenerating
9
+
10
+ Run \`baselane map .\` from the repo root after structural changes (modules added/moved,
11
+ commands changed, conventions shifted). Add \`--llm\` for an AI-narrated architecture section
12
+ (needs BASELANE_ANTHROPIC_KEY or ANTHROPIC_API_KEY). Commit the refreshed \`ARCHITECTURE.md\`
13
+ and \`.baselane/system-map/report.json\` together.
14
+
15
+ ## Reading it
16
+
17
+ Consult ARCHITECTURE.md's conventions section before writing code — the hidden rules are the
18
+ ones nobody will tell you about in review until you break them.
19
+ `;
20
+ const SYSTEM_MAP_COMMAND = {
21
+ name: "map",
22
+ description: "Consult or regenerate the generated ARCHITECTURE.md system map.",
23
+ argument_hint: '<question about the architecture | "regenerate">',
24
+ prompt: "Follow the protocol in `.baselane/system-map/README.md` for $ARGUMENTS. For a question, " +
25
+ "read `ARCHITECTURE.md` (the baselane-managed region) and answer from it — especially the " +
26
+ 'Conventions & hidden rules section — before grepping. If $ARGUMENTS is "regenerate" (or ' +
27
+ "modules/commands/conventions just changed), run `baselane map .` from the repo root and " +
28
+ "commit the refreshed ARCHITECTURE.md and .baselane/system-map/report.json.",
29
+ };
30
+ const SYSTEM_MAP_STOP_HOOK = {
31
+ event: "Stop",
32
+ matcher: "",
33
+ description: "Reminds the agent to regenerate the system map after structural changes.",
34
+ action: "print-reminder",
35
+ message: "Before finishing, if you added/moved modules, changed commands, or shifted a convention, " +
36
+ "regenerate the system map (`baselane map .`) — see .baselane/system-map/README.md.",
37
+ };
38
+ export const SYSTEM_MAP_AGENTS_NOTE = "### System map\n\n" +
39
+ "`ARCHITECTURE.md` carries a generated, baselane-managed system map — languages, layout, " +
40
+ "commands, import-graph hotspots, and measured conventions including hidden rules (consistent " +
41
+ "but unenforced). Read its conventions section before writing code, and regenerate with " +
42
+ "`baselane map .` (or `/map regenerate`) after structural changes.";
43
+ // Methods that render real scaffolding today — kept in lockstep with capabilities.ts's
44
+ // PROVISIONED_METHODS["system-map"] entry (bug #10: an unrecognized method must stay
45
+ // "coming soon" in BOTH the manifest AND the filesystem, never one without the other).
46
+ const REAL_METHODS = new Set(["analyze", "analyze+llm"]);
47
+ function systemMapCapabilities(pack, store) {
48
+ return (pack.capabilities ?? []).filter((c) => c.type === "system-map" && c.store === store && REAL_METHODS.has(c.method));
49
+ }
50
+ export function hasRepoSystemMapCapability(pack) {
51
+ return systemMapCapabilities(pack, "repo").length > 0;
52
+ }
53
+ export function hasOrgSystemMapCapability(pack) {
54
+ return systemMapCapabilities(pack, "org").length > 0;
55
+ }
56
+ /** Adds the /map command + Stop-hook reminder for repo-store system-map packs. */
57
+ export function withSystemMapScaffolding(pack) {
58
+ return {
59
+ ...pack,
60
+ commands: [...pack.commands, SYSTEM_MAP_COMMAND],
61
+ hooks: [...pack.hooks, SYSTEM_MAP_STOP_HOOK],
62
+ };
63
+ }
64
+ export function renderRepoSystemMapFiles(pack) {
65
+ if (!hasRepoSystemMapCapability(pack))
66
+ return {};
67
+ return { ".baselane/system-map/README.md": SYSTEM_MAP_README };
68
+ }
69
+ export function renderBundleSystemMapFiles(pack) {
70
+ if (!hasOrgSystemMapCapability(pack))
71
+ return {};
72
+ return { "system-map/README.md": SYSTEM_MAP_README };
73
+ }
@@ -0,0 +1,32 @@
1
+ import type { FileMap, WorkflowPack } from "../types.ts";
2
+ /** The AGENTS.md capabilities-section note for a tasks+ledger capability, regardless of store. */
3
+ export declare const TASKS_AGENTS_NOTE: string;
4
+ export declare const TASKS_SPECKIT_AGENTS_NOTE: string;
5
+ export declare const TASKS_TASKMASTER_AGENTS_NOTE: string;
6
+ export declare const TASKS_BEADS_AGENTS_NOTE: string;
7
+ /** Despite the name — kept for compatibility with the existing gate call sites in
8
+ * render-pack.ts/bundle.ts/capabilities.ts — this now guards `withTasksScaffolding` for every
9
+ * wired-up tasks method in the repo store, not `ledger` alone. */
10
+ export declare function hasRepoTasksLedger(pack: WorkflowPack): boolean;
11
+ /** Org-store counterpart of {@link hasRepoTasksLedger}. */
12
+ export declare function hasOrgTasksLedger(pack: WorkflowPack): boolean;
13
+ /** #9: `TASKS_AGENTS_NOTE` describes the `ledger` method (`.baselane/tasks/progress.md`,
14
+ * `/plan-work`). Unlike {@link hasRepoTasksLedger} (which gates scaffolding for ANY tasks method),
15
+ * this gates only that note — so a speckit/taskmaster/beads pack isn't handed a note pointing at a
16
+ * ledger it never created. */
17
+ export declare function hasRepoTasksLedgerMethod(pack: WorkflowPack): boolean;
18
+ /** #9: narrow, note-only gates for the sibling methods — same rationale as
19
+ * {@link hasRepoTasksLedgerMethod} above. */
20
+ export declare function hasRepoTasksSpeckitMethod(pack: WorkflowPack): boolean;
21
+ export declare function hasRepoTasksTaskmasterMethod(pack: WorkflowPack): boolean;
22
+ export declare function hasRepoTasksBeadsMethod(pack: WorkflowPack): boolean;
23
+ /** Adds the present tasks method(s)' command(s) + Stop-hook reminder(s) for one store to a
24
+ * pack, without disturbing what it already declares. `store` defaults to "repo" for
25
+ * compatibility with pre-multi-method call sites; render-pack.ts passes "repo" and bundle.ts
26
+ * passes "org" explicitly so a method declared in one store never leaks scaffolding into the
27
+ * other's file map. */
28
+ export declare function withTasksScaffolding(pack: WorkflowPack, store?: "org" | "repo"): WorkflowPack;
29
+ /** `.baselane/tasks/...`, for whichever repo-store tasks methods the pack declares. */
30
+ export declare function renderRepoTasksFiles(pack: WorkflowPack): FileMap;
31
+ /** `tasks/...` in the laptop bundle, for whichever org-store tasks methods the pack declares. */
32
+ export declare function renderBundleTasksFiles(pack: WorkflowPack): FileMap;
@@ -0,0 +1,327 @@
1
+ /** `.baselane/tasks/README.md` (repo) / `tasks/README.md` (bundle) — same body either way. */
2
+ const TASKS_README = `# Tasks & progress ledger
3
+
4
+ This directory anchors multi-session AI work so it survives context compaction — the
5
+ plan lives in one file, completed work is logged in another, and neither depends on
6
+ what an agent remembers from a prior session.
7
+
8
+ ## Files
9
+
10
+ - \`PLAN.md\` — at the repo root, or \`.baselane/tasks/PLAN.md\` if the root is reserved
11
+ for something else. The plan, as bite-size checkboxed tasks:
12
+
13
+ \`\`\`markdown
14
+ - [ ] Add the tasks-ledger capability
15
+ - [x] Wire render-pack.ts and bundle.ts
16
+ \`\`\`
17
+
18
+ - \`.baselane/tasks/progress.md\` — an append-only ledger, one line per completed step,
19
+ each with a commit reference:
20
+
21
+ \`\`\`markdown
22
+ - 2026-07-09: Wired render-pack.ts and bundle.ts — commit \`a1b2c3d\`
23
+ \`\`\`
24
+
25
+ Never rewrite a line once it's committed to the ledger — only append.
26
+
27
+ ## Rule
28
+
29
+ - **On session start, read the ledger before the plan.** \`progress.md\` says what is
30
+ actually done; \`PLAN.md\` says what was intended. Trust the ledger and \`git log\`
31
+ over either your own memory or a stale-looking checkbox — a checkbox can lag behind
32
+ reality, but a completed-and-committed ledger line cannot.
33
+ - **Append after each completed step**, not in a batch at the end of the session. The
34
+ ledger's value is that it survives a compaction or a dropped session mid-task; a step
35
+ that isn't logged until "later" is a step that can be lost.
36
+ - Use \`/plan-work\` to draft or refresh \`PLAN.md\` as checkboxed tasks from a spec or
37
+ requirement.
38
+ `;
39
+ const PLAN_WORK_COMMAND = {
40
+ name: "plan-work",
41
+ description: "Draft or refresh PLAN.md as bite-size checkboxed tasks.",
42
+ argument_hint: "<goal or spec>",
43
+ prompt: "Draft or refresh `PLAN.md` (repo root, or `.baselane/tasks/PLAN.md` if the root is " +
44
+ "reserved) for $ARGUMENTS: break the goal into bite-size, independently verifiable, " +
45
+ "checkboxed tasks (`- [ ] ...`). If `PLAN.md` already exists, first reconcile it " +
46
+ "against `.baselane/tasks/progress.md` — check off anything the ledger shows as " +
47
+ "done — then add only the tasks still remaining.",
48
+ };
49
+ const TASKS_STOP_HOOK = {
50
+ event: "Stop",
51
+ matcher: "",
52
+ description: "Reminds the agent to append completed steps to the progress ledger before ending.",
53
+ action: "print-reminder",
54
+ message: "Before finishing, append any steps completed this session to " +
55
+ ".baselane/tasks/progress.md with a commit reference, and check off finished tasks in PLAN.md.",
56
+ };
57
+ /** `.baselane/tasks/speckit/README.md` (repo) / `tasks/speckit/README.md` (bundle) — GitHub Spec Kit. */
58
+ const SPECKIT_README = `# Tasks adapter: speckit (GitHub Spec Kit)
59
+
60
+ This project uses GitHub's Spec Kit for spec-driven development: a spec, then a plan, then
61
+ a task list, then implementation — each stage a file under \`.specify/\`, reviewed before the
62
+ next stage starts.
63
+
64
+ ## Setup
65
+
66
+ \`\`\`bash
67
+ uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
68
+ specify init --here
69
+ \`\`\`
70
+
71
+ \`specify init --here\` scaffolds \`.specify/\` into the current repo (use \`specify init
72
+ <project>\` instead to create a new directory).
73
+
74
+ ## Usage
75
+
76
+ Inside Claude Code, drive the flow with Spec Kit's own slash commands, in order:
77
+
78
+ 1. \`/specify <what to build>\` — writes \`.specify/.../spec.md\`, the requirements.
79
+ 2. \`/plan\` — writes \`.specify/.../plan.md\`, the technical approach.
80
+ 3. \`/tasks\` — writes \`.specify/.../tasks.md\`, a checkboxed task breakdown.
81
+ 4. \`/implement\` — executes the tasks, one at a time.
82
+
83
+ Use \`/speckit-flow\` in this pack to keep that flow reconciled with this repo's own ledger
84
+ as you go, rather than running the four steps in isolation.
85
+
86
+ ## How this maps to the baselane protocol
87
+
88
+ \`spec.md\` + \`plan.md\` together are the requirements/design half of what \`PLAN.md\` would
89
+ otherwise hold; \`tasks.md\` is the checkboxed task list itself. Spec Kit does not keep an
90
+ append-only, commit-referenced ledger the way \`.baselane/tasks/progress.md\` does — so as
91
+ each task in \`tasks.md\` is completed, still append a line to
92
+ \`.baselane/tasks/progress.md\` with a commit reference. Trust the ledger and \`git log\` over
93
+ a checkbox in \`tasks.md\`, same as the baselane protocol's own rule.
94
+ `;
95
+ const SPECKIT_FLOW_COMMAND = {
96
+ name: "speckit-flow",
97
+ description: "Drive the Spec Kit spec→plan→tasks→implement flow, reconciled with the progress ledger.",
98
+ argument_hint: "<what to build>",
99
+ prompt: "Drive GitHub Spec Kit's flow for $ARGUMENTS: run `/specify $ARGUMENTS` if `spec.md` " +
100
+ "doesn't exist yet, then `/plan`, then `/tasks` to produce a checkboxed `tasks.md` " +
101
+ "under `.specify/`. Before implementing, reconcile `.specify/.../tasks.md` against " +
102
+ "`.baselane/tasks/progress.md` — trust the ledger over a stale-looking checkbox. Then " +
103
+ "run `/implement` one task at a time, and after each task completes, append a line to " +
104
+ "`.baselane/tasks/progress.md` with a commit reference before moving to the next.",
105
+ };
106
+ const SPECKIT_STOP_HOOK = {
107
+ event: "Stop",
108
+ matcher: "",
109
+ description: "Confirms Spec Kit is installed and reminds the agent to log completed tasks to the ledger.",
110
+ action: "run-command",
111
+ command: 'command -v specify >/dev/null 2>&1 && echo "Before finishing, append any tasks.md items completed this session to .baselane/tasks/progress.md with a commit reference." || echo "specify-cli not installed — see .baselane/tasks/speckit/README.md for setup (uv tool install specify-cli --from git+https://github.com/github/spec-kit.git)"',
112
+ };
113
+ /** `.baselane/tasks/taskmaster/README.md` (repo) / `tasks/taskmaster/README.md` (bundle) — Task Master AI. */
114
+ const TASKMASTER_README = `# Tasks adapter: taskmaster (Task Master AI)
115
+
116
+ This project uses Task Master AI to break a PRD or goal into a dependency-aware task list
117
+ that an agent can work through directly from the CLI.
118
+
119
+ ## Setup
120
+
121
+ \`\`\`bash
122
+ npm install -g task-master-ai
123
+ task-master init
124
+ \`\`\`
125
+
126
+ \`task-master init\` scaffolds a \`.taskmaster/\` directory and prompts for the model provider
127
+ API key it should use to generate and expand tasks.
128
+
129
+ ## Usage
130
+
131
+ - \`task-master parse-prd <file>\` — turns a requirements doc into an initial task list.
132
+ - \`task-master list\` — shows all tasks and their status.
133
+ - \`task-master next\` — picks the next unblocked task to work on.
134
+ - \`task-master set-status --id=<id> --status=done\` — marks a task complete.
135
+
136
+ ## How this maps to the baselane protocol
137
+
138
+ Task Master's task list (\`.taskmaster/tasks/\`) is the equivalent of \`PLAN.md\`'s checkboxed
139
+ tasks, and \`task-master next\` is how you decide what to work on instead of scanning
140
+ \`PLAN.md\` yourself. Task Master does not write a commit-referenced ledger entry when a
141
+ task is marked done, so after every \`task-master set-status ... --status=done\`, still
142
+ append a line to \`.baselane/tasks/progress.md\` with the commit reference — the same
143
+ append-only discipline the baselane protocol requires, just triggered from a different CLI.
144
+ `;
145
+ const TASKMASTER_STOP_HOOK = {
146
+ event: "Stop",
147
+ matcher: "",
148
+ description: "Confirms Task Master is installed and reminds the agent to log completed tasks to the ledger.",
149
+ action: "run-command",
150
+ command: 'command -v task-master >/dev/null 2>&1 && echo "Before finishing, append any task-master tasks marked done this session to .baselane/tasks/progress.md with a commit reference." || echo "task-master-ai not installed — see .baselane/tasks/taskmaster/README.md for setup (npm install -g task-master-ai && task-master init)"',
151
+ };
152
+ /**
153
+ * `.baselane/tasks/beads/README.md` (repo) / `tasks/beads/README.md` (bundle) — beads (task #38).
154
+ *
155
+ * beads (`bd`, github.com/gastownhall/beads — formerly steveyegge/beads) is a real, actively
156
+ * maintained dependency-aware issue tracker built for coding agents: a Dolt-backed (versioned
157
+ * SQL, cell-level merge) local database with hash-based issue IDs specifically to avoid
158
+ * merge collisions when multiple agents work in parallel branches, plus JSON output so an
159
+ * agent can consume `bd` output programmatically. Validated via web search before adoption,
160
+ * per this repo's AGENTS.md rule on new external tools.
161
+ */
162
+ const BEADS_README = `# Tasks adapter: beads
163
+
164
+ This project uses [beads](https://github.com/gastownhall/beads) (the \`bd\` CLI) for a
165
+ dependency-aware task ledger: issues form a DAG (not just a flat list), so \`bd\` can tell you
166
+ exactly which tasks are actually unblocked right now — durable across sessions and safe for
167
+ multiple agents to share, since it's backed by a version-controlled, git-friendly database
168
+ with cell-level merge and hash-based issue IDs (built specifically to avoid ID collisions
169
+ when parallel agents create issues on separate branches).
170
+
171
+ ## Setup
172
+
173
+ Install \`bd\` with whichever fits this machine (see the project's docs for the full matrix):
174
+
175
+ \`\`\`bash
176
+ brew install beads # macOS/Linux, via the gastownhall tap
177
+ # or
178
+ npm install -g @beads/bd # Node.js environments
179
+ # or
180
+ curl -fsSL https://raw.githubusercontent.com/gastownhall/beads/main/scripts/install.sh | bash
181
+ \`\`\`
182
+
183
+ Then scaffold it into this repo:
184
+
185
+ \`\`\`bash
186
+ bd init
187
+ \`\`\`
188
+
189
+ A machine that runs the desktop agent should install \`bd\` once, the same way it installs any
190
+ other harness dependency — the Stop hook below checks for it and prints this same setup block
191
+ if it's missing, so a session never fails silently for want of the tool.
192
+
193
+ ## Usage
194
+
195
+ - \`bd create "<title>"\` — file a new issue (add \`--depends-on <id>\` to record a dependency).
196
+ - \`bd list\` — see everything open.
197
+ - \`bd ready\` — the key agent-facing command: lists only the issues with no *uncompleted*
198
+ dependency, i.e. what can actually be worked on right now — read this before picking a task,
199
+ not \`bd list\`.
200
+ - \`bd close <id>\` — mark an issue done once its work is committed.
201
+ - \`bd quickstart\` — beads' own interactive walkthrough, useful the first time in a repo.
202
+
203
+ ## How this maps to the baselane protocol
204
+
205
+ \`bd\`'s issue DAG plus \`bd ready\` is a more structured version of what \`PLAN.md\` +
206
+ \`.baselane/tasks/progress.md\` do by hand: the plan is the set of open issues, the "what's
207
+ next" question is answered by \`bd ready\` instead of scanning checkboxes, and closing an
208
+ issue with \`bd close <id>\` is the completion event — still append a line to
209
+ \`.baselane/tasks/progress.md\` with the commit reference when you do, so the append-only,
210
+ commit-referenced ledger this repo's other tasks methods rely on stays populated regardless
211
+ of which method a given session is using.
212
+ `;
213
+ const BEADS_STOP_HOOK = {
214
+ event: "Stop",
215
+ matcher: "",
216
+ description: "Confirms beads (bd) is installed and reminds the agent to log completed tasks to the ledger.",
217
+ action: "run-command",
218
+ command: 'command -v bd >/dev/null 2>&1 && echo "Before finishing, bd close any issues completed this session and append a line to .baselane/tasks/progress.md with a commit reference." || echo "beads (bd) not installed — see .baselane/tasks/beads/README.md for setup (brew install beads, or npm install -g @beads/bd, then bd init)"',
219
+ };
220
+ /** The AGENTS.md capabilities-section note for a tasks+ledger capability, regardless of store. */
221
+ export const TASKS_AGENTS_NOTE = "### Tasks\n\n" +
222
+ "On session start, read `.baselane/tasks/progress.md` before `PLAN.md` — trust the " +
223
+ "ledger and `git log` over memory. Use `/plan-work` to draft or refresh `PLAN.md`, " +
224
+ "and append to the ledger after each completed step.";
225
+ // #9: each sibling method gets its own note naming the path/command it actually scaffolds,
226
+ // instead of tasks+ledger's note being handed to every method (see hasRepoTasksLedgerMethod).
227
+ export const TASKS_SPECKIT_AGENTS_NOTE = "### Tasks (speckit)\n\n" +
228
+ "This project drives GitHub Spec Kit's spec→plan→tasks→implement flow (see " +
229
+ "`.baselane/tasks/speckit/README.md`) — use `/speckit-flow`, and still append a line to " +
230
+ "`.baselane/tasks/progress.md` with a commit reference after each completed task.";
231
+ export const TASKS_TASKMASTER_AGENTS_NOTE = "### Tasks (taskmaster)\n\n" +
232
+ "This project uses Task Master AI (see `.baselane/tasks/taskmaster/README.md`) — use " +
233
+ "`task-master next` to pick up work, and append a line to `.baselane/tasks/progress.md` with a " +
234
+ "commit reference after each `task-master set-status ... --status=done`.";
235
+ export const TASKS_BEADS_AGENTS_NOTE = "### Tasks (beads)\n\n" +
236
+ "This project uses beads (see `.baselane/tasks/beads/README.md`) — run `bd ready` before " +
237
+ "picking a task, and append a line to `.baselane/tasks/progress.md` with a commit reference " +
238
+ "when you `bd close` an issue.";
239
+ function tasksCapabilitiesFor(pack, store) {
240
+ return (pack.capabilities ?? []).filter((c) => c.type === "tasks" && c.store === store);
241
+ }
242
+ function hasTasksMethod(pack, store, method) {
243
+ return tasksCapabilitiesFor(pack, store).some((c) => c.method === method);
244
+ }
245
+ /** True if this store has any wired-up tasks method (ledger, speckit, taskmaster, beads) that
246
+ * needs scaffolding spliced into the pack via `withTasksScaffolding`. */
247
+ function hasTasksScaffoldingNeed(pack, store) {
248
+ return (hasTasksMethod(pack, store, "ledger") ||
249
+ hasTasksMethod(pack, store, "speckit") ||
250
+ hasTasksMethod(pack, store, "taskmaster") ||
251
+ hasTasksMethod(pack, store, "beads"));
252
+ }
253
+ /** Despite the name — kept for compatibility with the existing gate call sites in
254
+ * render-pack.ts/bundle.ts/capabilities.ts — this now guards `withTasksScaffolding` for every
255
+ * wired-up tasks method in the repo store, not `ledger` alone. */
256
+ export function hasRepoTasksLedger(pack) {
257
+ return hasTasksScaffoldingNeed(pack, "repo");
258
+ }
259
+ /** Org-store counterpart of {@link hasRepoTasksLedger}. */
260
+ export function hasOrgTasksLedger(pack) {
261
+ return hasTasksScaffoldingNeed(pack, "org");
262
+ }
263
+ /** #9: `TASKS_AGENTS_NOTE` describes the `ledger` method (`.baselane/tasks/progress.md`,
264
+ * `/plan-work`). Unlike {@link hasRepoTasksLedger} (which gates scaffolding for ANY tasks method),
265
+ * this gates only that note — so a speckit/taskmaster/beads pack isn't handed a note pointing at a
266
+ * ledger it never created. */
267
+ export function hasRepoTasksLedgerMethod(pack) {
268
+ return hasTasksMethod(pack, "repo", "ledger");
269
+ }
270
+ /** #9: narrow, note-only gates for the sibling methods — same rationale as
271
+ * {@link hasRepoTasksLedgerMethod} above. */
272
+ export function hasRepoTasksSpeckitMethod(pack) {
273
+ return hasTasksMethod(pack, "repo", "speckit");
274
+ }
275
+ export function hasRepoTasksTaskmasterMethod(pack) {
276
+ return hasTasksMethod(pack, "repo", "taskmaster");
277
+ }
278
+ export function hasRepoTasksBeadsMethod(pack) {
279
+ return hasTasksMethod(pack, "repo", "beads");
280
+ }
281
+ /** Adds the present tasks method(s)' command(s) + Stop-hook reminder(s) for one store to a
282
+ * pack, without disturbing what it already declares. `store` defaults to "repo" for
283
+ * compatibility with pre-multi-method call sites; render-pack.ts passes "repo" and bundle.ts
284
+ * passes "org" explicitly so a method declared in one store never leaks scaffolding into the
285
+ * other's file map. */
286
+ export function withTasksScaffolding(pack, store = "repo") {
287
+ const methods = new Set(tasksCapabilitiesFor(pack, store).map((c) => c.method));
288
+ const commands = [...pack.commands];
289
+ const hooks = [...pack.hooks];
290
+ if (methods.has("ledger")) {
291
+ commands.push(PLAN_WORK_COMMAND);
292
+ hooks.push(TASKS_STOP_HOOK);
293
+ }
294
+ if (methods.has("speckit")) {
295
+ commands.push(SPECKIT_FLOW_COMMAND);
296
+ hooks.push(SPECKIT_STOP_HOOK);
297
+ }
298
+ if (methods.has("taskmaster"))
299
+ hooks.push(TASKMASTER_STOP_HOOK);
300
+ if (methods.has("beads"))
301
+ hooks.push(BEADS_STOP_HOOK);
302
+ return { ...pack, commands, hooks };
303
+ }
304
+ /** File map for one store's tasks capabilities — `ledger`'s README at the top-level slot, every
305
+ * other real method under its own subdirectory so multiple methods can coexist without one
306
+ * silently clobbering another's docs. `pathFor` picks repo vs bundle path shape for a leaf. */
307
+ function tasksFilesFor(pack, store, pathFor) {
308
+ const methods = new Set(tasksCapabilitiesFor(pack, store).map((c) => c.method));
309
+ const files = {};
310
+ if (methods.has("ledger"))
311
+ files[pathFor("tasks/README.md")] = TASKS_README;
312
+ if (methods.has("speckit"))
313
+ files[pathFor("tasks/speckit/README.md")] = SPECKIT_README;
314
+ if (methods.has("taskmaster"))
315
+ files[pathFor("tasks/taskmaster/README.md")] = TASKMASTER_README;
316
+ if (methods.has("beads"))
317
+ files[pathFor("tasks/beads/README.md")] = BEADS_README;
318
+ return files;
319
+ }
320
+ /** `.baselane/tasks/...`, for whichever repo-store tasks methods the pack declares. */
321
+ export function renderRepoTasksFiles(pack) {
322
+ return tasksFilesFor(pack, "repo", (leaf) => `.baselane/${leaf}`);
323
+ }
324
+ /** `tasks/...` in the laptop bundle, for whichever org-store tasks methods the pack declares. */
325
+ export function renderBundleTasksFiles(pack) {
326
+ return tasksFilesFor(pack, "org", (leaf) => leaf);
327
+ }