@bastani/atomic 0.6.8 → 0.7.0-2

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 (765) hide show
  1. package/bin/atomic +65 -0
  2. package/package.json +17 -82
  3. package/postinstall.mjs +47 -0
  4. package/.agents/skills/ado-commit/SKILL.md +0 -94
  5. package/.agents/skills/ado-create-pr/SKILL.md +0 -211
  6. package/.agents/skills/advanced-evaluation/SKILL.md +0 -404
  7. package/.agents/skills/advanced-evaluation/references/bias-mitigation.md +0 -288
  8. package/.agents/skills/advanced-evaluation/references/evaluation-pipeline.md +0 -43
  9. package/.agents/skills/advanced-evaluation/references/implementation-patterns.md +0 -315
  10. package/.agents/skills/advanced-evaluation/references/metrics-guide.md +0 -331
  11. package/.agents/skills/advanced-evaluation/scripts/evaluation_example.py +0 -392
  12. package/.agents/skills/ast-grep/SKILL.md +0 -325
  13. package/.agents/skills/ast-grep/references/rule_reference.md +0 -297
  14. package/.agents/skills/bdi-mental-states/SKILL.md +0 -313
  15. package/.agents/skills/bdi-mental-states/references/bdi-ontology-core.md +0 -207
  16. package/.agents/skills/bdi-mental-states/references/framework-integration.md +0 -582
  17. package/.agents/skills/bdi-mental-states/references/rdf-examples.md +0 -315
  18. package/.agents/skills/bdi-mental-states/references/sparql-competency.md +0 -420
  19. package/.agents/skills/bun/SKILL.md +0 -233
  20. package/.agents/skills/context-compression/SKILL.md +0 -274
  21. package/.agents/skills/context-compression/references/evaluation-framework.md +0 -213
  22. package/.agents/skills/context-compression/scripts/compression_evaluator.py +0 -862
  23. package/.agents/skills/context-compression/tests/test_compression_evaluator.py +0 -56
  24. package/.agents/skills/context-degradation/SKILL.md +0 -208
  25. package/.agents/skills/context-degradation/references/patterns.md +0 -314
  26. package/.agents/skills/context-degradation/scripts/degradation_detector.py +0 -614
  27. package/.agents/skills/context-fundamentals/SKILL.md +0 -203
  28. package/.agents/skills/context-fundamentals/references/context-components.md +0 -283
  29. package/.agents/skills/context-fundamentals/scripts/context_manager.py +0 -533
  30. package/.agents/skills/context-optimization/SKILL.md +0 -197
  31. package/.agents/skills/context-optimization/references/optimization_techniques.md +0 -272
  32. package/.agents/skills/context-optimization/scripts/compaction.py +0 -562
  33. package/.agents/skills/create-spec/SKILL.md +0 -249
  34. package/.agents/skills/docx/LICENSE.txt +0 -30
  35. package/.agents/skills/docx/SKILL.md +0 -592
  36. package/.agents/skills/docx/scripts/__init__.py +0 -1
  37. package/.agents/skills/docx/scripts/accept_changes.py +0 -135
  38. package/.agents/skills/docx/scripts/comment.py +0 -318
  39. package/.agents/skills/docx/scripts/office/helpers/__init__.py +0 -0
  40. package/.agents/skills/docx/scripts/office/helpers/merge_runs.py +0 -199
  41. package/.agents/skills/docx/scripts/office/helpers/simplify_redlines.py +0 -197
  42. package/.agents/skills/docx/scripts/office/pack.py +0 -159
  43. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  44. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  45. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  46. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  47. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  48. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  49. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  50. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  51. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  52. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  53. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  54. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  55. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  56. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  57. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  58. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  59. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  60. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  61. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  62. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  63. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  64. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  65. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  66. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  67. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  68. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  69. package/.agents/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  70. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  71. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  72. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  73. package/.agents/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  74. package/.agents/skills/docx/scripts/office/schemas/mce/mc.xsd +0 -75
  75. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  76. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  77. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  78. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  79. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  80. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  81. package/.agents/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  82. package/.agents/skills/docx/scripts/office/soffice.py +0 -183
  83. package/.agents/skills/docx/scripts/office/unpack.py +0 -132
  84. package/.agents/skills/docx/scripts/office/validate.py +0 -111
  85. package/.agents/skills/docx/scripts/office/validators/__init__.py +0 -15
  86. package/.agents/skills/docx/scripts/office/validators/base.py +0 -847
  87. package/.agents/skills/docx/scripts/office/validators/docx.py +0 -446
  88. package/.agents/skills/docx/scripts/office/validators/pptx.py +0 -275
  89. package/.agents/skills/docx/scripts/office/validators/redlining.py +0 -247
  90. package/.agents/skills/docx/scripts/templates/comments.xml +0 -3
  91. package/.agents/skills/docx/scripts/templates/commentsExtended.xml +0 -3
  92. package/.agents/skills/docx/scripts/templates/commentsExtensible.xml +0 -3
  93. package/.agents/skills/docx/scripts/templates/commentsIds.xml +0 -3
  94. package/.agents/skills/docx/scripts/templates/people.xml +0 -3
  95. package/.agents/skills/evaluation/SKILL.md +0 -253
  96. package/.agents/skills/evaluation/references/metrics.md +0 -339
  97. package/.agents/skills/evaluation/scripts/evaluator.py +0 -627
  98. package/.agents/skills/explain-code/SKILL.md +0 -232
  99. package/.agents/skills/filesystem-context/SKILL.md +0 -289
  100. package/.agents/skills/filesystem-context/references/implementation-patterns.md +0 -549
  101. package/.agents/skills/filesystem-context/scripts/filesystem_context.py +0 -425
  102. package/.agents/skills/find-skills/SKILL.md +0 -144
  103. package/.agents/skills/gh-commit/SKILL.md +0 -245
  104. package/.agents/skills/gh-create-pr/SKILL.md +0 -95
  105. package/.agents/skills/hosted-agents/SKILL.md +0 -262
  106. package/.agents/skills/hosted-agents/references/infrastructure-patterns.md +0 -700
  107. package/.agents/skills/hosted-agents/scripts/sandbox_manager.py +0 -590
  108. package/.agents/skills/impeccable/SKILL.md +0 -178
  109. package/.agents/skills/impeccable/agents/openai.yaml +0 -4
  110. package/.agents/skills/impeccable/reference/adapt.md +0 -190
  111. package/.agents/skills/impeccable/reference/animate.md +0 -175
  112. package/.agents/skills/impeccable/reference/audit.md +0 -134
  113. package/.agents/skills/impeccable/reference/bolder.md +0 -113
  114. package/.agents/skills/impeccable/reference/brand.md +0 -114
  115. package/.agents/skills/impeccable/reference/clarify.md +0 -174
  116. package/.agents/skills/impeccable/reference/cognitive-load.md +0 -106
  117. package/.agents/skills/impeccable/reference/color-and-contrast.md +0 -105
  118. package/.agents/skills/impeccable/reference/colorize.md +0 -154
  119. package/.agents/skills/impeccable/reference/craft.md +0 -193
  120. package/.agents/skills/impeccable/reference/critique.md +0 -213
  121. package/.agents/skills/impeccable/reference/delight.md +0 -302
  122. package/.agents/skills/impeccable/reference/distill.md +0 -111
  123. package/.agents/skills/impeccable/reference/document.md +0 -427
  124. package/.agents/skills/impeccable/reference/extract.md +0 -70
  125. package/.agents/skills/impeccable/reference/harden.md +0 -347
  126. package/.agents/skills/impeccable/reference/heuristics-scoring.md +0 -234
  127. package/.agents/skills/impeccable/reference/interaction-design.md +0 -195
  128. package/.agents/skills/impeccable/reference/layout.md +0 -141
  129. package/.agents/skills/impeccable/reference/live.md +0 -594
  130. package/.agents/skills/impeccable/reference/motion-design.md +0 -109
  131. package/.agents/skills/impeccable/reference/onboard.md +0 -234
  132. package/.agents/skills/impeccable/reference/optimize.md +0 -258
  133. package/.agents/skills/impeccable/reference/overdrive.md +0 -130
  134. package/.agents/skills/impeccable/reference/personas.md +0 -178
  135. package/.agents/skills/impeccable/reference/polish.md +0 -232
  136. package/.agents/skills/impeccable/reference/product.md +0 -62
  137. package/.agents/skills/impeccable/reference/quieter.md +0 -99
  138. package/.agents/skills/impeccable/reference/responsive-design.md +0 -114
  139. package/.agents/skills/impeccable/reference/shape.md +0 -151
  140. package/.agents/skills/impeccable/reference/spatial-design.md +0 -100
  141. package/.agents/skills/impeccable/reference/teach.md +0 -156
  142. package/.agents/skills/impeccable/reference/typeset.md +0 -124
  143. package/.agents/skills/impeccable/reference/typography.md +0 -159
  144. package/.agents/skills/impeccable/reference/ux-writing.md +0 -107
  145. package/.agents/skills/impeccable/scripts/cleanup-deprecated.mjs +0 -284
  146. package/.agents/skills/impeccable/scripts/command-metadata.json +0 -94
  147. package/.agents/skills/impeccable/scripts/design-parser.mjs +0 -820
  148. package/.agents/skills/impeccable/scripts/detect-csp.mjs +0 -198
  149. package/.agents/skills/impeccable/scripts/is-generated.mjs +0 -69
  150. package/.agents/skills/impeccable/scripts/live-accept.mjs +0 -595
  151. package/.agents/skills/impeccable/scripts/live-browser.js +0 -4781
  152. package/.agents/skills/impeccable/scripts/live-inject.mjs +0 -445
  153. package/.agents/skills/impeccable/scripts/live-poll.mjs +0 -186
  154. package/.agents/skills/impeccable/scripts/live-server.mjs +0 -694
  155. package/.agents/skills/impeccable/scripts/live-wrap.mjs +0 -571
  156. package/.agents/skills/impeccable/scripts/live.mjs +0 -247
  157. package/.agents/skills/impeccable/scripts/load-context.mjs +0 -141
  158. package/.agents/skills/impeccable/scripts/modern-screenshot.umd.js +0 -14
  159. package/.agents/skills/impeccable/scripts/pin.mjs +0 -214
  160. package/.agents/skills/init/SKILL.md +0 -140
  161. package/.agents/skills/liteparse/SKILL.md +0 -223
  162. package/.agents/skills/memory-systems/SKILL.md +0 -221
  163. package/.agents/skills/memory-systems/references/implementation.md +0 -551
  164. package/.agents/skills/memory-systems/scripts/memory_store.py +0 -616
  165. package/.agents/skills/multi-agent-patterns/SKILL.md +0 -259
  166. package/.agents/skills/multi-agent-patterns/references/frameworks.md +0 -433
  167. package/.agents/skills/multi-agent-patterns/scripts/coordination.py +0 -613
  168. package/.agents/skills/opentui/SKILL.md +0 -202
  169. package/.agents/skills/opentui/references/animation/REFERENCE.md +0 -431
  170. package/.agents/skills/opentui/references/components/REFERENCE.md +0 -144
  171. package/.agents/skills/opentui/references/components/code-diff.md +0 -672
  172. package/.agents/skills/opentui/references/components/containers.md +0 -417
  173. package/.agents/skills/opentui/references/components/inputs.md +0 -531
  174. package/.agents/skills/opentui/references/components/text-display.md +0 -386
  175. package/.agents/skills/opentui/references/core/REFERENCE.md +0 -145
  176. package/.agents/skills/opentui/references/core/api.md +0 -543
  177. package/.agents/skills/opentui/references/core/configuration.md +0 -168
  178. package/.agents/skills/opentui/references/core/gotchas.md +0 -393
  179. package/.agents/skills/opentui/references/core/patterns.md +0 -449
  180. package/.agents/skills/opentui/references/keyboard/REFERENCE.md +0 -617
  181. package/.agents/skills/opentui/references/layout/REFERENCE.md +0 -337
  182. package/.agents/skills/opentui/references/layout/patterns.md +0 -444
  183. package/.agents/skills/opentui/references/react/REFERENCE.md +0 -174
  184. package/.agents/skills/opentui/references/react/api.md +0 -436
  185. package/.agents/skills/opentui/references/react/configuration.md +0 -302
  186. package/.agents/skills/opentui/references/react/gotchas.md +0 -443
  187. package/.agents/skills/opentui/references/react/patterns.md +0 -501
  188. package/.agents/skills/opentui/references/solid/REFERENCE.md +0 -201
  189. package/.agents/skills/opentui/references/solid/api.md +0 -564
  190. package/.agents/skills/opentui/references/solid/configuration.md +0 -316
  191. package/.agents/skills/opentui/references/solid/gotchas.md +0 -427
  192. package/.agents/skills/opentui/references/solid/patterns.md +0 -560
  193. package/.agents/skills/opentui/references/testing/REFERENCE.md +0 -614
  194. package/.agents/skills/pdf/LICENSE.txt +0 -30
  195. package/.agents/skills/pdf/SKILL.md +0 -316
  196. package/.agents/skills/pdf/forms.md +0 -294
  197. package/.agents/skills/pdf/reference.md +0 -612
  198. package/.agents/skills/pdf/scripts/check_bounding_boxes.py +0 -65
  199. package/.agents/skills/pdf/scripts/check_fillable_fields.py +0 -11
  200. package/.agents/skills/pdf/scripts/convert_pdf_to_images.py +0 -33
  201. package/.agents/skills/pdf/scripts/create_validation_image.py +0 -37
  202. package/.agents/skills/pdf/scripts/extract_form_field_info.py +0 -122
  203. package/.agents/skills/pdf/scripts/extract_form_structure.py +0 -115
  204. package/.agents/skills/pdf/scripts/fill_fillable_fields.py +0 -98
  205. package/.agents/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
  206. package/.agents/skills/playwright-cli/SKILL.md +0 -390
  207. package/.agents/skills/playwright-cli/references/element-attributes.md +0 -23
  208. package/.agents/skills/playwright-cli/references/playwright-tests.md +0 -39
  209. package/.agents/skills/playwright-cli/references/request-mocking.md +0 -87
  210. package/.agents/skills/playwright-cli/references/running-code.md +0 -241
  211. package/.agents/skills/playwright-cli/references/session-management.md +0 -225
  212. package/.agents/skills/playwright-cli/references/spec-driven-testing.md +0 -305
  213. package/.agents/skills/playwright-cli/references/storage-state.md +0 -275
  214. package/.agents/skills/playwright-cli/references/test-generation.md +0 -134
  215. package/.agents/skills/playwright-cli/references/tracing.md +0 -139
  216. package/.agents/skills/playwright-cli/references/video-recording.md +0 -143
  217. package/.agents/skills/pptx/LICENSE.txt +0 -30
  218. package/.agents/skills/pptx/SKILL.md +0 -234
  219. package/.agents/skills/pptx/editing.md +0 -205
  220. package/.agents/skills/pptx/pptxgenjs.md +0 -420
  221. package/.agents/skills/pptx/scripts/__init__.py +0 -0
  222. package/.agents/skills/pptx/scripts/add_slide.py +0 -195
  223. package/.agents/skills/pptx/scripts/clean.py +0 -286
  224. package/.agents/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  225. package/.agents/skills/pptx/scripts/office/helpers/merge_runs.py +0 -199
  226. package/.agents/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
  227. package/.agents/skills/pptx/scripts/office/pack.py +0 -159
  228. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  229. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  230. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  231. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  232. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  233. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  234. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  235. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  236. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  237. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  238. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  239. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  240. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  241. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  242. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  243. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  244. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  245. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  246. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  247. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  248. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  249. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  250. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  251. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  252. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  253. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  254. package/.agents/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  255. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  256. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  257. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  258. package/.agents/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  259. package/.agents/skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
  260. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  261. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  262. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  263. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  264. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  265. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  266. package/.agents/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  267. package/.agents/skills/pptx/scripts/office/soffice.py +0 -183
  268. package/.agents/skills/pptx/scripts/office/unpack.py +0 -132
  269. package/.agents/skills/pptx/scripts/office/validate.py +0 -111
  270. package/.agents/skills/pptx/scripts/office/validators/__init__.py +0 -15
  271. package/.agents/skills/pptx/scripts/office/validators/base.py +0 -847
  272. package/.agents/skills/pptx/scripts/office/validators/docx.py +0 -446
  273. package/.agents/skills/pptx/scripts/office/validators/pptx.py +0 -275
  274. package/.agents/skills/pptx/scripts/office/validators/redlining.py +0 -247
  275. package/.agents/skills/pptx/scripts/thumbnail.py +0 -289
  276. package/.agents/skills/project-development/SKILL.md +0 -293
  277. package/.agents/skills/project-development/references/case-studies.md +0 -388
  278. package/.agents/skills/project-development/references/pipeline-patterns.md +0 -610
  279. package/.agents/skills/project-development/scripts/pipeline_template.py +0 -796
  280. package/.agents/skills/prompt-engineer/SKILL.md +0 -265
  281. package/.agents/skills/prompt-engineer/references/advanced_patterns.md +0 -271
  282. package/.agents/skills/prompt-engineer/references/core_prompting.md +0 -137
  283. package/.agents/skills/prompt-engineer/references/quality_improvement.md +0 -193
  284. package/.agents/skills/research-codebase/SKILL.md +0 -229
  285. package/.agents/skills/ripgrep/SKILL.md +0 -384
  286. package/.agents/skills/skill-creator/LICENSE.txt +0 -202
  287. package/.agents/skills/skill-creator/SKILL.md +0 -487
  288. package/.agents/skills/skill-creator/agents/analyzer.md +0 -274
  289. package/.agents/skills/skill-creator/agents/comparator.md +0 -202
  290. package/.agents/skills/skill-creator/agents/grader.md +0 -223
  291. package/.agents/skills/skill-creator/assets/eval_review.html +0 -146
  292. package/.agents/skills/skill-creator/eval-viewer/generate_review.py +0 -471
  293. package/.agents/skills/skill-creator/eval-viewer/viewer.html +0 -1325
  294. package/.agents/skills/skill-creator/references/schemas.md +0 -430
  295. package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
  296. package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +0 -401
  297. package/.agents/skills/skill-creator/scripts/generate_report.py +0 -326
  298. package/.agents/skills/skill-creator/scripts/improve_description.py +0 -247
  299. package/.agents/skills/skill-creator/scripts/package_skill.py +0 -136
  300. package/.agents/skills/skill-creator/scripts/quick_validate.py +0 -103
  301. package/.agents/skills/skill-creator/scripts/run_eval.py +0 -310
  302. package/.agents/skills/skill-creator/scripts/run_loop.py +0 -328
  303. package/.agents/skills/skill-creator/scripts/utils.py +0 -47
  304. package/.agents/skills/sl-commit/SKILL.md +0 -53
  305. package/.agents/skills/sl-submit-diff/SKILL.md +0 -57
  306. package/.agents/skills/tdd/SKILL.md +0 -111
  307. package/.agents/skills/tdd/deep-modules.md +0 -33
  308. package/.agents/skills/tdd/interface-design.md +0 -31
  309. package/.agents/skills/tdd/mocking.md +0 -59
  310. package/.agents/skills/tdd/refactoring.md +0 -10
  311. package/.agents/skills/tdd/tests.md +0 -61
  312. package/.agents/skills/tool-design/SKILL.md +0 -273
  313. package/.agents/skills/tool-design/references/architectural_reduction.md +0 -210
  314. package/.agents/skills/tool-design/references/best_practices.md +0 -176
  315. package/.agents/skills/tool-design/scripts/description_generator.py +0 -528
  316. package/.agents/skills/typescript-advanced-types/SKILL.md +0 -720
  317. package/.agents/skills/typescript-expert/SKILL.md +0 -434
  318. package/.agents/skills/typescript-expert/references/tsconfig-strict.json +0 -92
  319. package/.agents/skills/typescript-expert/references/typescript-cheatsheet.md +0 -383
  320. package/.agents/skills/typescript-expert/references/utility-types.ts +0 -335
  321. package/.agents/skills/typescript-expert/scripts/ts_diagnostic.py +0 -203
  322. package/.agents/skills/typescript-react-reviewer/SKILL.md +0 -201
  323. package/.agents/skills/typescript-react-reviewer/references/antipatterns.md +0 -510
  324. package/.agents/skills/typescript-react-reviewer/references/checklist.md +0 -267
  325. package/.agents/skills/typescript-react-reviewer/references/react19-patterns.md +0 -305
  326. package/.agents/skills/workflow-creator/SKILL.md +0 -553
  327. package/.agents/skills/workflow-creator/references/agent-sessions.md +0 -891
  328. package/.agents/skills/workflow-creator/references/agent-setup-recipe.md +0 -266
  329. package/.agents/skills/workflow-creator/references/computation-and-validation.md +0 -201
  330. package/.agents/skills/workflow-creator/references/control-flow.md +0 -470
  331. package/.agents/skills/workflow-creator/references/failure-modes.md +0 -1014
  332. package/.agents/skills/workflow-creator/references/getting-started.md +0 -392
  333. package/.agents/skills/workflow-creator/references/registry-and-validation.md +0 -141
  334. package/.agents/skills/workflow-creator/references/running-workflows.md +0 -418
  335. package/.agents/skills/workflow-creator/references/session-config.md +0 -431
  336. package/.agents/skills/workflow-creator/references/state-and-data-flow.md +0 -356
  337. package/.agents/skills/workflow-creator/references/user-input.md +0 -234
  338. package/.agents/skills/workflow-creator/references/workflow-inputs.md +0 -392
  339. package/.agents/skills/xlsx/LICENSE.txt +0 -30
  340. package/.agents/skills/xlsx/SKILL.md +0 -294
  341. package/.agents/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  342. package/.agents/skills/xlsx/scripts/office/helpers/merge_runs.py +0 -199
  343. package/.agents/skills/xlsx/scripts/office/helpers/simplify_redlines.py +0 -197
  344. package/.agents/skills/xlsx/scripts/office/pack.py +0 -159
  345. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  346. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  347. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  348. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  349. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  350. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  351. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  352. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  353. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  354. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  355. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  356. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  357. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  358. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  359. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  360. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  361. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  362. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  363. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  364. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  365. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  366. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  367. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  368. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  369. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  370. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  371. package/.agents/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  372. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  373. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  374. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  375. package/.agents/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  376. package/.agents/skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -75
  377. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  378. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  379. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  380. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  381. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  382. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  383. package/.agents/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  384. package/.agents/skills/xlsx/scripts/office/soffice.py +0 -183
  385. package/.agents/skills/xlsx/scripts/office/unpack.py +0 -132
  386. package/.agents/skills/xlsx/scripts/office/validate.py +0 -111
  387. package/.agents/skills/xlsx/scripts/office/validators/__init__.py +0 -15
  388. package/.agents/skills/xlsx/scripts/office/validators/base.py +0 -847
  389. package/.agents/skills/xlsx/scripts/office/validators/docx.py +0 -446
  390. package/.agents/skills/xlsx/scripts/office/validators/pptx.py +0 -275
  391. package/.agents/skills/xlsx/scripts/office/validators/redlining.py +0 -247
  392. package/.agents/skills/xlsx/scripts/recalc.py +0 -184
  393. package/.claude/agents/code-simplifier.md +0 -52
  394. package/.claude/agents/codebase-analyzer.md +0 -166
  395. package/.claude/agents/codebase-locator.md +0 -122
  396. package/.claude/agents/codebase-online-researcher.md +0 -148
  397. package/.claude/agents/codebase-pattern-finder.md +0 -247
  398. package/.claude/agents/codebase-research-analyzer.md +0 -179
  399. package/.claude/agents/codebase-research-locator.md +0 -145
  400. package/.claude/agents/debugger.md +0 -91
  401. package/.claude/agents/orchestrator.md +0 -19
  402. package/.claude/agents/planner.md +0 -295
  403. package/.claude/agents/reviewer.md +0 -98
  404. package/.claude/agents/worker.md +0 -165
  405. package/.claude/settings.json +0 -27
  406. package/.github/agents/code-simplifier.md +0 -52
  407. package/.github/agents/codebase-analyzer.md +0 -166
  408. package/.github/agents/codebase-locator.md +0 -122
  409. package/.github/agents/codebase-online-researcher.md +0 -146
  410. package/.github/agents/codebase-pattern-finder.md +0 -247
  411. package/.github/agents/codebase-research-analyzer.md +0 -179
  412. package/.github/agents/codebase-research-locator.md +0 -145
  413. package/.github/agents/debugger.md +0 -98
  414. package/.github/agents/orchestrator.md +0 -27
  415. package/.github/agents/planner.md +0 -305
  416. package/.github/agents/reviewer.md +0 -95
  417. package/.github/agents/worker.md +0 -237
  418. package/.github/lsp.json +0 -93
  419. package/.mcp.json +0 -20
  420. package/.opencode/agents/code-simplifier.md +0 -62
  421. package/.opencode/agents/codebase-analyzer.md +0 -171
  422. package/.opencode/agents/codebase-locator.md +0 -127
  423. package/.opencode/agents/codebase-online-researcher.md +0 -152
  424. package/.opencode/agents/codebase-pattern-finder.md +0 -252
  425. package/.opencode/agents/codebase-research-analyzer.md +0 -183
  426. package/.opencode/agents/codebase-research-locator.md +0 -149
  427. package/.opencode/agents/debugger.md +0 -99
  428. package/.opencode/agents/orchestrator.md +0 -27
  429. package/.opencode/agents/planner.md +0 -309
  430. package/.opencode/agents/reviewer.md +0 -103
  431. package/.opencode/agents/worker.md +0 -165
  432. package/.opencode/opencode.json +0 -25
  433. package/README.md +0 -1624
  434. package/assets/settings.schema.json +0 -51
  435. package/dist/commands/cli/claude-inflight-hook.d.ts +0 -100
  436. package/dist/commands/cli/claude-inflight-hook.d.ts.map +0 -1
  437. package/dist/commands/cli/claude-stop-hook.d.ts +0 -80
  438. package/dist/commands/cli/claude-stop-hook.d.ts.map +0 -1
  439. package/dist/lib/atomic-temp.d.ts +0 -8
  440. package/dist/lib/atomic-temp.d.ts.map +0 -1
  441. package/dist/lib/path-root-guard.d.ts +0 -4
  442. package/dist/lib/path-root-guard.d.ts.map +0 -1
  443. package/dist/lib/spawn.d.ts +0 -102
  444. package/dist/lib/spawn.d.ts.map +0 -1
  445. package/dist/lib/terminal-env.d.ts +0 -9
  446. package/dist/lib/terminal-env.d.ts.map +0 -1
  447. package/dist/sdk/components/attached-statusline.d.ts +0 -26
  448. package/dist/sdk/components/attached-statusline.d.ts.map +0 -1
  449. package/dist/sdk/components/color-utils.d.ts +0 -4
  450. package/dist/sdk/components/color-utils.d.ts.map +0 -1
  451. package/dist/sdk/components/compact-switcher.d.ts +0 -10
  452. package/dist/sdk/components/compact-switcher.d.ts.map +0 -1
  453. package/dist/sdk/components/connectors.d.ts +0 -16
  454. package/dist/sdk/components/connectors.d.ts.map +0 -1
  455. package/dist/sdk/components/edge.d.ts +0 -4
  456. package/dist/sdk/components/edge.d.ts.map +0 -1
  457. package/dist/sdk/components/error-boundary.d.ts +0 -23
  458. package/dist/sdk/components/error-boundary.d.ts.map +0 -1
  459. package/dist/sdk/components/graph-theme.d.ts +0 -18
  460. package/dist/sdk/components/graph-theme.d.ts.map +0 -1
  461. package/dist/sdk/components/header.d.ts +0 -3
  462. package/dist/sdk/components/header.d.ts.map +0 -1
  463. package/dist/sdk/components/hooks.d.ts +0 -15
  464. package/dist/sdk/components/hooks.d.ts.map +0 -1
  465. package/dist/sdk/components/layout.d.ts +0 -27
  466. package/dist/sdk/components/layout.d.ts.map +0 -1
  467. package/dist/sdk/components/node-card.d.ts +0 -10
  468. package/dist/sdk/components/node-card.d.ts.map +0 -1
  469. package/dist/sdk/components/orchestrator-panel-contexts.d.ts +0 -16
  470. package/dist/sdk/components/orchestrator-panel-contexts.d.ts.map +0 -1
  471. package/dist/sdk/components/orchestrator-panel-store.d.ts +0 -52
  472. package/dist/sdk/components/orchestrator-panel-store.d.ts.map +0 -1
  473. package/dist/sdk/components/orchestrator-panel-types.d.ts +0 -18
  474. package/dist/sdk/components/orchestrator-panel-types.d.ts.map +0 -1
  475. package/dist/sdk/components/orchestrator-panel.d.ts +0 -86
  476. package/dist/sdk/components/orchestrator-panel.d.ts.map +0 -1
  477. package/dist/sdk/components/renderer-background.d.ts +0 -9
  478. package/dist/sdk/components/renderer-background.d.ts.map +0 -1
  479. package/dist/sdk/components/session-graph-panel.d.ts +0 -7
  480. package/dist/sdk/components/session-graph-panel.d.ts.map +0 -1
  481. package/dist/sdk/components/status-helpers.d.ts +0 -6
  482. package/dist/sdk/components/status-helpers.d.ts.map +0 -1
  483. package/dist/sdk/components/statusline.d.ts +0 -5
  484. package/dist/sdk/components/statusline.d.ts.map +0 -1
  485. package/dist/sdk/components/tui-diagnostics.d.ts +0 -56
  486. package/dist/sdk/components/tui-diagnostics.d.ts.map +0 -1
  487. package/dist/sdk/components/workflow-picker-panel.d.ts +0 -126
  488. package/dist/sdk/components/workflow-picker-panel.d.ts.map +0 -1
  489. package/dist/sdk/define-workflow.d.ts +0 -107
  490. package/dist/sdk/define-workflow.d.ts.map +0 -1
  491. package/dist/sdk/errors.d.ts +0 -46
  492. package/dist/sdk/errors.d.ts.map +0 -1
  493. package/dist/sdk/index.d.ts +0 -26
  494. package/dist/sdk/index.d.ts.map +0 -1
  495. package/dist/sdk/primitives/inputs.d.ts +0 -36
  496. package/dist/sdk/primitives/inputs.d.ts.map +0 -1
  497. package/dist/sdk/primitives/metadata.d.ts +0 -40
  498. package/dist/sdk/primitives/metadata.d.ts.map +0 -1
  499. package/dist/sdk/primitives/run.d.ts +0 -57
  500. package/dist/sdk/primitives/run.d.ts.map +0 -1
  501. package/dist/sdk/primitives/sessions.d.ts +0 -128
  502. package/dist/sdk/primitives/sessions.d.ts.map +0 -1
  503. package/dist/sdk/providers/claude.d.ts +0 -392
  504. package/dist/sdk/providers/claude.d.ts.map +0 -1
  505. package/dist/sdk/providers/copilot.d.ts +0 -55
  506. package/dist/sdk/providers/copilot.d.ts.map +0 -1
  507. package/dist/sdk/providers/opencode.d.ts +0 -27
  508. package/dist/sdk/providers/opencode.d.ts.map +0 -1
  509. package/dist/sdk/registry.d.ts +0 -27
  510. package/dist/sdk/registry.d.ts.map +0 -1
  511. package/dist/sdk/runtime/attached-footer.d.ts +0 -31
  512. package/dist/sdk/runtime/attached-footer.d.ts.map +0 -1
  513. package/dist/sdk/runtime/cc-debounce.d.ts +0 -29
  514. package/dist/sdk/runtime/cc-debounce.d.ts.map +0 -1
  515. package/dist/sdk/runtime/executor-env.d.ts +0 -20
  516. package/dist/sdk/runtime/executor-env.d.ts.map +0 -1
  517. package/dist/sdk/runtime/executor.d.ts +0 -265
  518. package/dist/sdk/runtime/executor.d.ts.map +0 -1
  519. package/dist/sdk/runtime/graph-inference.d.ts +0 -35
  520. package/dist/sdk/runtime/graph-inference.d.ts.map +0 -1
  521. package/dist/sdk/runtime/orchestrator-entry.d.ts +0 -26
  522. package/dist/sdk/runtime/orchestrator-entry.d.ts.map +0 -1
  523. package/dist/sdk/runtime/panel.d.ts +0 -9
  524. package/dist/sdk/runtime/panel.d.ts.map +0 -1
  525. package/dist/sdk/runtime/port-discovery.d.ts +0 -71
  526. package/dist/sdk/runtime/port-discovery.d.ts.map +0 -1
  527. package/dist/sdk/runtime/status-writer.d.ts +0 -101
  528. package/dist/sdk/runtime/status-writer.d.ts.map +0 -1
  529. package/dist/sdk/runtime/theme.d.ts +0 -33
  530. package/dist/sdk/runtime/theme.d.ts.map +0 -1
  531. package/dist/sdk/runtime/tmux.d.ts +0 -307
  532. package/dist/sdk/runtime/tmux.d.ts.map +0 -1
  533. package/dist/sdk/runtime/version-compat.d.ts +0 -28
  534. package/dist/sdk/runtime/version-compat.d.ts.map +0 -1
  535. package/dist/sdk/types.d.ts +0 -435
  536. package/dist/sdk/types.d.ts.map +0 -1
  537. package/dist/sdk/worker-shared.d.ts +0 -42
  538. package/dist/sdk/worker-shared.d.ts.map +0 -1
  539. package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts +0 -81
  540. package/dist/sdk/workflows/builtin/deep-research-codebase/claude/index.d.ts.map +0 -1
  541. package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts +0 -37
  542. package/dist/sdk/workflows/builtin/deep-research-codebase/copilot/index.d.ts.map +0 -1
  543. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/batching.d.ts +0 -43
  544. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/batching.d.ts.map +0 -1
  545. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts +0 -14
  546. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.d.ts.map +0 -1
  547. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts +0 -136
  548. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.d.ts.map +0 -1
  549. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts +0 -58
  550. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scout.d.ts.map +0 -1
  551. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scratch.d.ts +0 -43
  552. package/dist/sdk/workflows/builtin/deep-research-codebase/helpers/scratch.d.ts.map +0 -1
  553. package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts +0 -37
  554. package/dist/sdk/workflows/builtin/deep-research-codebase/opencode/index.d.ts.map +0 -1
  555. package/dist/sdk/workflows/builtin/open-claude-design/claude/index.d.ts +0 -68
  556. package/dist/sdk/workflows/builtin/open-claude-design/claude/index.d.ts.map +0 -1
  557. package/dist/sdk/workflows/builtin/open-claude-design/copilot/index.d.ts +0 -56
  558. package/dist/sdk/workflows/builtin/open-claude-design/copilot/index.d.ts.map +0 -1
  559. package/dist/sdk/workflows/builtin/open-claude-design/helpers/constants.d.ts +0 -72
  560. package/dist/sdk/workflows/builtin/open-claude-design/helpers/constants.d.ts.map +0 -1
  561. package/dist/sdk/workflows/builtin/open-claude-design/helpers/design-system.d.ts +0 -46
  562. package/dist/sdk/workflows/builtin/open-claude-design/helpers/design-system.d.ts.map +0 -1
  563. package/dist/sdk/workflows/builtin/open-claude-design/helpers/export.d.ts +0 -32
  564. package/dist/sdk/workflows/builtin/open-claude-design/helpers/export.d.ts.map +0 -1
  565. package/dist/sdk/workflows/builtin/open-claude-design/helpers/import.d.ts +0 -33
  566. package/dist/sdk/workflows/builtin/open-claude-design/helpers/import.d.ts.map +0 -1
  567. package/dist/sdk/workflows/builtin/open-claude-design/helpers/prompts.d.ts +0 -106
  568. package/dist/sdk/workflows/builtin/open-claude-design/helpers/prompts.d.ts.map +0 -1
  569. package/dist/sdk/workflows/builtin/open-claude-design/helpers/scan.d.ts +0 -50
  570. package/dist/sdk/workflows/builtin/open-claude-design/helpers/scan.d.ts.map +0 -1
  571. package/dist/sdk/workflows/builtin/open-claude-design/helpers/validation.d.ts +0 -12
  572. package/dist/sdk/workflows/builtin/open-claude-design/helpers/validation.d.ts.map +0 -1
  573. package/dist/sdk/workflows/builtin/open-claude-design/opencode/index.d.ts +0 -58
  574. package/dist/sdk/workflows/builtin/open-claude-design/opencode/index.d.ts.map +0 -1
  575. package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts +0 -37
  576. package/dist/sdk/workflows/builtin/ralph/claude/index.d.ts.map +0 -1
  577. package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts +0 -34
  578. package/dist/sdk/workflows/builtin/ralph/copilot/index.d.ts.map +0 -1
  579. package/dist/sdk/workflows/builtin/ralph/helpers/copilot-reviewer.d.ts +0 -25
  580. package/dist/sdk/workflows/builtin/ralph/helpers/copilot-reviewer.d.ts.map +0 -1
  581. package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts +0 -69
  582. package/dist/sdk/workflows/builtin/ralph/helpers/git.d.ts.map +0 -1
  583. package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts +0 -266
  584. package/dist/sdk/workflows/builtin/ralph/helpers/prompts.d.ts.map +0 -1
  585. package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts +0 -24
  586. package/dist/sdk/workflows/builtin/ralph/helpers/review.d.ts.map +0 -1
  587. package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts +0 -33
  588. package/dist/sdk/workflows/builtin/ralph/opencode/index.d.ts.map +0 -1
  589. package/dist/sdk/workflows/index.d.ts +0 -32
  590. package/dist/sdk/workflows/index.d.ts.map +0 -1
  591. package/dist/services/config/additional-instructions.d.ts +0 -67
  592. package/dist/services/config/additional-instructions.d.ts.map +0 -1
  593. package/dist/services/config/atomic-config.d.ts +0 -42
  594. package/dist/services/config/atomic-config.d.ts.map +0 -1
  595. package/dist/services/config/definitions.d.ts +0 -52
  596. package/dist/services/config/definitions.d.ts.map +0 -1
  597. package/dist/services/config/index.d.ts +0 -7
  598. package/dist/services/config/index.d.ts.map +0 -1
  599. package/dist/services/config/scm-sync.d.ts +0 -37
  600. package/dist/services/config/scm-sync.d.ts.map +0 -1
  601. package/dist/services/config/settings-schema.d.ts +0 -2
  602. package/dist/services/config/settings-schema.d.ts.map +0 -1
  603. package/dist/services/system/copy.d.ts +0 -84
  604. package/dist/services/system/copy.d.ts.map +0 -1
  605. package/dist/services/system/detect.d.ts +0 -75
  606. package/dist/services/system/detect.d.ts.map +0 -1
  607. package/dist/theme/colors.d.ts +0 -35
  608. package/dist/theme/colors.d.ts.map +0 -1
  609. package/src/cli.ts +0 -397
  610. package/src/commands/builtin-registry.ts +0 -37
  611. package/src/commands/cli/chat/index.test.ts +0 -252
  612. package/src/commands/cli/chat/index.ts +0 -430
  613. package/src/commands/cli/chat.ts +0 -8
  614. package/src/commands/cli/claude-ask-hook.test.ts +0 -128
  615. package/src/commands/cli/claude-ask-hook.ts +0 -84
  616. package/src/commands/cli/claude-inflight-hook.test.ts +0 -598
  617. package/src/commands/cli/claude-inflight-hook.ts +0 -359
  618. package/src/commands/cli/claude-session-start-hook.ts +0 -61
  619. package/src/commands/cli/claude-stop-hook.test.ts +0 -317
  620. package/src/commands/cli/claude-stop-hook.ts +0 -441
  621. package/src/commands/cli/completions.ts +0 -24
  622. package/src/commands/cli/config.ts +0 -80
  623. package/src/commands/cli/footer.tsx +0 -248
  624. package/src/commands/cli/init/index.ts +0 -41
  625. package/src/commands/cli/init/onboarding.ts +0 -61
  626. package/src/commands/cli/init.ts +0 -8
  627. package/src/commands/cli/management-commands.ts +0 -112
  628. package/src/commands/cli/session.test.ts +0 -830
  629. package/src/commands/cli/session.ts +0 -447
  630. package/src/commands/cli/workflow-command.test.ts +0 -618
  631. package/src/commands/cli/workflow-inputs.test.ts +0 -353
  632. package/src/commands/cli/workflow-inputs.ts +0 -266
  633. package/src/commands/cli/workflow-list.test.ts +0 -235
  634. package/src/commands/cli/workflow-list.ts +0 -0
  635. package/src/commands/cli/workflow-status.test.ts +0 -451
  636. package/src/commands/cli/workflow-status.ts +0 -330
  637. package/src/commands/cli/workflow.ts +0 -196
  638. package/src/completions/bash.ts +0 -102
  639. package/src/completions/fish.ts +0 -136
  640. package/src/completions/index.ts +0 -7
  641. package/src/completions/powershell.ts +0 -195
  642. package/src/completions/zsh.ts +0 -150
  643. package/src/lib/atomic-temp.test.ts +0 -86
  644. package/src/lib/atomic-temp.ts +0 -62
  645. package/src/lib/common-ignore.ts +0 -46
  646. package/src/lib/merge.ts +0 -103
  647. package/src/lib/path-root-guard.ts +0 -38
  648. package/src/lib/spawn.test.ts +0 -109
  649. package/src/lib/spawn.ts +0 -678
  650. package/src/lib/terminal-env.test.ts +0 -343
  651. package/src/lib/terminal-env.ts +0 -100
  652. package/src/scripts/bump-version.ts +0 -94
  653. package/src/scripts/bundle-configs.ts +0 -116
  654. package/src/scripts/clean-dist.test.ts +0 -53
  655. package/src/scripts/clean-dist.ts +0 -37
  656. package/src/scripts/constants-base.ts +0 -14
  657. package/src/scripts/constants.ts +0 -35
  658. package/src/sdk/components/attached-statusline.tsx +0 -86
  659. package/src/sdk/components/color-utils.ts +0 -20
  660. package/src/sdk/components/compact-switcher.tsx +0 -78
  661. package/src/sdk/components/connectors.test.ts +0 -707
  662. package/src/sdk/components/connectors.ts +0 -160
  663. package/src/sdk/components/edge.tsx +0 -13
  664. package/src/sdk/components/error-boundary.tsx +0 -38
  665. package/src/sdk/components/graph-theme.ts +0 -37
  666. package/src/sdk/components/header.tsx +0 -85
  667. package/src/sdk/components/hooks.ts +0 -21
  668. package/src/sdk/components/layout.test.ts +0 -1245
  669. package/src/sdk/components/layout.ts +0 -223
  670. package/src/sdk/components/node-card.tsx +0 -91
  671. package/src/sdk/components/orchestrator-panel-contexts.ts +0 -35
  672. package/src/sdk/components/orchestrator-panel-store.test.ts +0 -847
  673. package/src/sdk/components/orchestrator-panel-store.ts +0 -187
  674. package/src/sdk/components/orchestrator-panel-types.ts +0 -23
  675. package/src/sdk/components/orchestrator-panel.tsx +0 -262
  676. package/src/sdk/components/renderer-background.ts +0 -49
  677. package/src/sdk/components/session-graph-panel.tsx +0 -471
  678. package/src/sdk/components/status-helpers.ts +0 -33
  679. package/src/sdk/components/statusline.tsx +0 -68
  680. package/src/sdk/components/tui-diagnostics.ts +0 -273
  681. package/src/sdk/components/workflow-picker-panel.tsx +0 -1613
  682. package/src/sdk/define-workflow.test.ts +0 -354
  683. package/src/sdk/define-workflow.ts +0 -275
  684. package/src/sdk/errors.test.ts +0 -83
  685. package/src/sdk/errors.ts +0 -77
  686. package/src/sdk/index.test.ts +0 -92
  687. package/src/sdk/index.ts +0 -101
  688. package/src/sdk/primitives/inputs.ts +0 -48
  689. package/src/sdk/primitives/metadata.ts +0 -63
  690. package/src/sdk/primitives/run.ts +0 -81
  691. package/src/sdk/primitives/sessions.test.ts +0 -594
  692. package/src/sdk/primitives/sessions.ts +0 -328
  693. package/src/sdk/providers/claude.ts +0 -1450
  694. package/src/sdk/providers/copilot.test.ts +0 -365
  695. package/src/sdk/providers/copilot.ts +0 -185
  696. package/src/sdk/providers/headless-hil-policy.test.ts +0 -211
  697. package/src/sdk/providers/opencode.ts +0 -88
  698. package/src/sdk/registry.ts +0 -132
  699. package/src/sdk/runtime/attached-footer.ts +0 -155
  700. package/src/sdk/runtime/cc-debounce.ts +0 -104
  701. package/src/sdk/runtime/executor-env.ts +0 -45
  702. package/src/sdk/runtime/executor.test.ts +0 -1321
  703. package/src/sdk/runtime/executor.ts +0 -2136
  704. package/src/sdk/runtime/graph-inference.ts +0 -50
  705. package/src/sdk/runtime/orchestrator-entry.ts +0 -110
  706. package/src/sdk/runtime/panel.tsx +0 -9
  707. package/src/sdk/runtime/port-discovery.test.ts +0 -573
  708. package/src/sdk/runtime/port-discovery.ts +0 -496
  709. package/src/sdk/runtime/status-writer.test.ts +0 -245
  710. package/src/sdk/runtime/status-writer.ts +0 -201
  711. package/src/sdk/runtime/theme.ts +0 -71
  712. package/src/sdk/runtime/tmux.conf +0 -112
  713. package/src/sdk/runtime/tmux.ts +0 -785
  714. package/src/sdk/runtime/version-compat.ts +0 -68
  715. package/src/sdk/types.ts +0 -548
  716. package/src/sdk/worker-shared.test.ts +0 -163
  717. package/src/sdk/worker-shared.ts +0 -155
  718. package/src/sdk/workflows/builtin/deep-research-codebase/claude/index.ts +0 -569
  719. package/src/sdk/workflows/builtin/deep-research-codebase/copilot/index.ts +0 -481
  720. package/src/sdk/workflows/builtin/deep-research-codebase/helpers/batching.ts +0 -65
  721. package/src/sdk/workflows/builtin/deep-research-codebase/helpers/heuristic.ts +0 -24
  722. package/src/sdk/workflows/builtin/deep-research-codebase/helpers/ignore-by-default.d.ts +0 -8
  723. package/src/sdk/workflows/builtin/deep-research-codebase/helpers/prompts.ts +0 -958
  724. package/src/sdk/workflows/builtin/deep-research-codebase/helpers/scout.ts +0 -505
  725. package/src/sdk/workflows/builtin/deep-research-codebase/helpers/scratch.ts +0 -115
  726. package/src/sdk/workflows/builtin/deep-research-codebase/opencode/index.ts +0 -530
  727. package/src/sdk/workflows/builtin/open-claude-design/claude/index.ts +0 -500
  728. package/src/sdk/workflows/builtin/open-claude-design/copilot/index.ts +0 -508
  729. package/src/sdk/workflows/builtin/open-claude-design/helpers/constants.ts +0 -159
  730. package/src/sdk/workflows/builtin/open-claude-design/helpers/design-system.ts +0 -88
  731. package/src/sdk/workflows/builtin/open-claude-design/helpers/export.ts +0 -193
  732. package/src/sdk/workflows/builtin/open-claude-design/helpers/import.ts +0 -52
  733. package/src/sdk/workflows/builtin/open-claude-design/helpers/prompts.ts +0 -1110
  734. package/src/sdk/workflows/builtin/open-claude-design/helpers/scan.ts +0 -117
  735. package/src/sdk/workflows/builtin/open-claude-design/helpers/validation.ts +0 -38
  736. package/src/sdk/workflows/builtin/open-claude-design/opencode/index.ts +0 -610
  737. package/src/sdk/workflows/builtin/ralph/claude/index.ts +0 -272
  738. package/src/sdk/workflows/builtin/ralph/copilot/index.ts +0 -298
  739. package/src/sdk/workflows/builtin/ralph/helpers/copilot-reviewer.ts +0 -105
  740. package/src/sdk/workflows/builtin/ralph/helpers/git.ts +0 -201
  741. package/src/sdk/workflows/builtin/ralph/helpers/prompts.ts +0 -1108
  742. package/src/sdk/workflows/builtin/ralph/helpers/review.ts +0 -33
  743. package/src/sdk/workflows/builtin/ralph/opencode/index.ts +0 -290
  744. package/src/sdk/workflows/index.ts +0 -116
  745. package/src/services/config/additional-instructions.ts +0 -273
  746. package/src/services/config/atomic-config.ts +0 -210
  747. package/src/services/config/atomic-global-config.ts +0 -348
  748. package/src/services/config/config-path.ts +0 -19
  749. package/src/services/config/definitions.ts +0 -125
  750. package/src/services/config/index.ts +0 -7
  751. package/src/services/config/scm-sync.ts +0 -185
  752. package/src/services/config/settings-schema.ts +0 -2
  753. package/src/services/config/settings.ts +0 -144
  754. package/src/services/system/agents.ts +0 -95
  755. package/src/services/system/auth.test.ts +0 -343
  756. package/src/services/system/auth.ts +0 -140
  757. package/src/services/system/auto-sync.ts +0 -128
  758. package/src/services/system/copy.ts +0 -392
  759. package/src/services/system/detect.ts +0 -161
  760. package/src/services/system/file-lock.ts +0 -289
  761. package/src/services/system/install-ui.ts +0 -296
  762. package/src/services/system/skills.ts +0 -58
  763. package/src/theme/colors.ts +0 -96
  764. package/src/theme/logo.ts +0 -123
  765. package/src/version.ts +0 -7
package/README.md DELETED
@@ -1,1624 +0,0 @@
1
- # Atomic
2
-
3
- <p align="center">
4
- <img src="assets/atomic.png" alt="Atomic" width="800">
5
- </p>
6
-
7
- [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/flora131/atomic)
8
- [![TypeScript](https://img.shields.io/badge/TypeScript-6.x-3178C6?logo=typescript&logoColor=white)](./package.json)
9
- [![Bun](https://img.shields.io/badge/Bun-Runtime-f9f1e1?logo=bun&logoColor=black)](./package.json)
10
- [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](./LICENSE)
11
-
12
- **Turn coding agents into reliable engineering workflows.** Atomic is an open-source CLI and TypeScript SDK for Claude Code, OpenCode, and GitHub Copilot CLI. Define the steps, guardrails, review gates, and execution environment your agent should follow, then run the workflow as TypeScript your whole team can review and reuse.
13
-
14
- > Build the workflow once. Run it across agents, repos, and teams — with GitHub, Azure DevOps (ADO), or Sapling.
15
-
16
- ---
17
-
18
- ## Why Atomic
19
-
20
- Coding agents are great inside a single session. They can inspect code, use tools, make edits, and explain their work. The trouble starts when the task is ambiguous/complex, tied to specific outcomes/exit criteria, long-running, or tied to a large codebase: you end up reminding the agent of the process, moving output between sessions, checking whether it followed the right steps, and deciding when a human needs to review the work. Atomic turns that process into code. A workflow can branch, retry, run stages in parallel, isolate sessions, pass only the right transcript forward, pause for human approval, and run inside a devcontainer so the agent is not loose on your host machine.
21
-
22
- - **Start with your own process.** Automate the repetitive parts of research, product feedback, debugging, review, migrations, or PR prep. One TypeScript file, versioned with the repo.
23
- - **Scale to your team.** Encode review gates, quality checks, and approvals so every teammate runs the same workflow instead of manually steering an agent.
24
- - **Keep the coding agent.** Atomic adds structure around Claude Code, OpenCode, and Copilot CLI without rebuilding their file editing, tool use, MCP setup, hooks, or context handling from scratch.
25
- - **Use natural language to get started.** Ask the `workflow-creator` skill to turn a workflow description into `defineWorkflow()` code, or let an agent use the skill when a complex task needs a repeatable workflow.
26
- - **Control the outer loop.** Instead of trusting a black-box harness to improvise process, Atomic makes the orchestration inspectable: the agent stil uses it's harness with its native tools and context management, but the workflow, gates, handoffs, and execution graph are TypeScript you can read, edit, and version. This allows you to enhance your existing coding agent's capabilities.
27
-
28
- ---
29
-
30
- ## Quick Start
31
-
32
- Install, generate context, try Ralph, then write your own workflow — four steps, a few minutes. Steps 1–3 are the **CLI** path (pre-built autonomous behaviour). Step 4 is the **SDK** path (your own workflows). Skip straight to step 4 if you only want the library.
33
-
34
- ### Prerequisites
35
-
36
- Atomic doesn't replace your coding agent or terminal — it gives them a workflow to follow. Three things have to exist on the host before a workflow can run:
37
-
38
- - **[Bun](https://bun.sh/)** as the JavaScript runtime — Atomic and the SDK ship source that relies on `Bun.spawn`, native pty handling, and Bun-specific module resolution. **They do not run on Node.js.** The bootstrap installer below installs Bun for you; if you install `@bastani/atomic` manually, install Bun first.
39
- - **A terminal multiplexer** — every stage runs inside a detachable session on a dedicated `atomic` socket (your personal tmux is untouched). That's how workflows survive terminal disconnects, how `-d/--detach` puts a run in the background, and how `atomic session connect` reattaches later from any shell.
40
- - **macOS / Linux:** [tmux](https://github.com/tmux/tmux) — `brew install tmux` or your distro's package manager
41
- - **Windows:** [psmux](https://github.com/psmux/psmux) — a PowerShell-native tmux-compatible shim, detected as `psmux` / `pmux` / `tmux` on `PATH`
42
- - **At least one coding agent** installed and logged in — Atomic spawns the agent's own CLI at each stage and talks to it via its SDK, so the CLI has to be present and authenticated:
43
- - [Claude Code](https://code.claude.com/docs/en/quickstart) — run `claude` and authenticate
44
- - [OpenCode](https://opencode.ai) — run `opencode` and authenticate
45
- - [GitHub Copilot CLI](https://github.com/features/copilot/cli) — run `copilot` and authenticate
46
- - **Windows only:** PowerShell 7+ ([install guide](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-windows))
47
-
48
- > The bootstrap installer below installs Bun and Atomic but **does not** install tmux/psmux or the coding agents. Install those separately before running any workflow — `bun run src/claude-worker.ts` will fail loudly at stage spawn if either is missing. Using a [devcontainer](#alternative-devcontainer-recommended-for-autonomous-workflows) short-circuits all of this: the atomic feature bundles Bun + tmux + the agent CLI into the container image.
49
-
50
- ### 1. Install — CLI + SDK share the same package
51
-
52
- `@bastani/atomic` ships both surfaces. A **global** install gives you the `atomic` CLI; a **project-local** install gives you the SDK import. Most users do both, but either stands alone.
53
-
54
- **CLI path** — bootstrap script installs [Bun](https://bun.sh/), the `atomic` binary, and shell completions in one step:
55
-
56
- ```bash
57
- # macOS / Linux
58
- curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash
59
-
60
- # Windows (PowerShell 7+)
61
- irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1 | iex
62
- ```
63
-
64
- Upgrade later with `bun update -g @bastani/atomic`.
65
-
66
- **SDK-only path** — if you only want to `defineWorkflow(...)` in your own TypeScript project and never need the `atomic` binary, skip the bootstrap and just add the library:
67
-
68
- ```bash
69
- bun init -y # new project
70
- bun add @bastani/atomic # the SDK
71
- bun add @anthropic-ai/claude-agent-sdk # the provider SDK you target
72
- ```
73
-
74
- Skip steps 2–3 below (those use the CLI) and jump straight to [step 4](#4-build-your-own-workflow--sdk). You'll still need tmux/psmux + an authenticated agent CLI at runtime — see [Prerequisites](#prerequisites).
75
-
76
- <details>
77
- <summary><b>Alternative: Already have Bun? Install the CLI directly from npm</b></summary>
78
-
79
- ```bash
80
- bun install -g @bastani/atomic
81
- ```
82
-
83
- This skips the Bun install step but doesn't set up shell completions — run `atomic completions <shell>` separately if you want them (see [Commands Reference](#atomic-completions--shell-completions)).
84
- If your shell cannot find `atomic` after the install, add the directory from `bun pm bin -g` to your PATH or use the bootstrap installer above to do it automatically.
85
-
86
- **Prerelease builds:** `bun install -g @bastani/atomic@next` (may contain breaking changes).
87
-
88
- </details>
89
-
90
- <details>
91
- <summary><b>Authenticated downloads (CI / enterprise)</b></summary>
92
-
93
- Set `GITHUB_TOKEN` to avoid GitHub API rate limits when running the bootstrap script in CI:
94
-
95
- ```bash
96
- # macOS / Linux
97
- GITHUB_TOKEN=ghp_... curl -fsSL https://raw.githubusercontent.com/flora131/atomic/main/install.sh | bash
98
-
99
- # Windows PowerShell
100
- $env:GITHUB_TOKEN='ghp_...'; irm https://raw.githubusercontent.com/flora131/atomic/main/install.ps1 | iex
101
- ```
102
-
103
- </details>
104
-
105
- <details>
106
- <summary><b>Alternative: Devcontainer (recommended for autonomous workflows)</b></summary>
107
-
108
- > Devcontainers isolate the agent from your host, limiting the blast radius of destructive actions. This is the safest way to run workflows.
109
-
110
- Add one feature to `.devcontainer/devcontainer.json`:
111
-
112
- | Feature | Agent |
113
- | ------------------------------------ | -------------------- |
114
- | `ghcr.io/flora131/atomic/claude:1` | Atomic + Claude Code |
115
- | `ghcr.io/flora131/atomic/opencode:1` | Atomic + OpenCode |
116
- | `ghcr.io/flora131/atomic/copilot:1` | Atomic + Copilot CLI |
117
-
118
- Full `.devcontainer.json` templates per agent live in [`.devcontainer/`](./.devcontainer/). Each feature installs Atomic, bun, playwright-cli, agent configs, and the agent CLI itself. First run takes ~1 minute to warm up.
119
-
120
- Minimal example (Claude + Rust):
121
-
122
- ```jsonc
123
- {
124
- "image": "mcr.microsoft.com/devcontainers/rust:latest",
125
- "features": {
126
- "ghcr.io/devcontainers/features/common-utils": {},
127
- "ghcr.io/flora131/atomic/claude:1": {},
128
- "ghcr.io/devcontainers/features/github-cli:1": {}
129
- },
130
- "remoteEnv": {
131
- "GH_TOKEN": "${localEnv:GH_TOKEN}",
132
- "ANTHROPIC_API_KEY": "${localEnv:ANTHROPIC_API_KEY}"
133
- }
134
- }
135
- ```
136
-
137
- Use the [Dev Containers VS Code extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) or the [Dev Container CLI](https://github.com/devcontainers/cli#dev-container-cli) to start the container.
138
-
139
- </details>
140
-
141
- <details>
142
- <summary><b>Migrating from the old standalone binary?</b></summary>
143
-
144
- Atomic used to ship as a standalone binary. It's now an npm package. One-time migration:
145
-
146
- ```bash
147
- atomic uninstall
148
- bun uninstall -g @bastani/atomic-workflows
149
- rm -rf ~/.atomic ~/.copilot/skills ~/.opencode/skills
150
- bun install -g @bastani/atomic
151
- ```
152
-
153
- </details>
154
-
155
- ### 2. Generate context files — CLI
156
-
157
- ```bash
158
- atomic chat -a <claude|opencode|copilot>
159
- ```
160
-
161
- Then type `/init`. Atomic explores your codebase with sub-agents and writes `CLAUDE.md` / `AGENTS.md` so every future session starts with the right context.
162
-
163
- ### 3. Try Ralph — CLI (autonomous coding)
164
-
165
- Ralph plans, implements, reviews, and debugs a task on its own — up to 10 iterations, exiting after 2 consecutive clean reviews.
166
-
167
- ```bash
168
- atomic workflow -n ralph -a claude "Build a REST API for user management"
169
- ```
170
-
171
- > ⚠️ Workflows run with agent permission checks **disabled** so pipelines don't block on prompts. Run them in a [devcontainer](#containerized-execution) or [git worktree](https://git-scm.com/docs/git-worktree), not on your host. See [Security](#security-workflow-permissions-model).
172
-
173
- ### 4. Build your own workflow — SDK
174
-
175
- Every team has a process — code review, CI checks, PR creation, approval, merge. Encode it as TypeScript once; everyone runs the same pipeline.
176
-
177
- ```bash
178
- bun init && bun add @bastani/atomic
179
- ```
180
-
181
- Author the workflow in `src/workflows/review-to-merge/claude.ts`:
182
-
183
- ```ts
184
- import { defineWorkflow } from "@bastani/atomic/workflows";
185
-
186
- export default defineWorkflow({
187
- name: "review-to-merge",
188
- description: "Review → CI → PR → Notify → Approve → Merge",
189
- }).for("claude")
190
- .run(async (ctx) => {
191
- // 1. Review
192
- const review = await ctx.stage({ name: "review" }, {}, {}, async (s) => {
193
- await s.session.query("Review uncommitted changes for correctness, security, style.");
194
- s.save(s.sessionId);
195
- });
196
-
197
- // 2. Run security + CI in parallel
198
- await Promise.all([
199
- ctx.stage({ name: "security-scan" }, {}, {}, async (s) => {
200
- await s.session.query("Run `bun audit` and scan for leaked secrets.");
201
- s.save(s.sessionId);
202
- }),
203
- ctx.stage({ name: "ci-checks" }, {}, {}, async (s) => {
204
- await s.session.query("Run `bun lint` and `bun test`. Report failures.");
205
- s.save(s.sessionId);
206
- }),
207
- ]);
208
-
209
- // 3. Open PR, then notify Slack + wait for human approval
210
- await ctx.stage({ name: "notify-and-merge" }, {}, {}, async (s) => {
211
- const t = await s.transcript(review);
212
- await s.session.query(`Read ${t.path}. Open a PR summarizing the changes.`);
213
-
214
- await fetch("https://slack.com/api/chat.postMessage", {
215
- method: "POST",
216
- headers: { Authorization: `Bearer ${process.env.SLACK_TOKEN}` },
217
- body: JSON.stringify({ channel: "#code-review", text: "PR ready — please approve." }),
218
- });
219
-
220
- // Human-in-the-loop: pauses until the user responds
221
- await s.session.query(
222
- "Ask the user to confirm approval, then merge with `gh pr merge --squash`.",
223
- { allowedTools: ["Bash", "Read", "AskUserQuestion"] },
224
- );
225
- s.save(s.sessionId);
226
- });
227
- })
228
- .compile();
229
- ```
230
-
231
- Wire it to a CLI in `src/claude-worker.ts`. The SDK ships pure
232
- primitives — no wrapper to opt into. Compose with your CLI library of
233
- choice (Commander, citty, yargs, …) and call `runWorkflow`. Catch the
234
- SDK's typed errors (`MissingDependencyError`, `SessionNotFoundError`,
235
- …) for friendly CLI output:
236
-
237
- ```ts
238
- import { Command } from "@commander-js/extra-typings";
239
- import {
240
- getInputSchema,
241
- runWorkflow,
242
- MissingDependencyError,
243
- } from "@bastani/atomic/workflows";
244
- import workflow from "./workflows/review-to-merge/claude.ts";
245
-
246
- const program = new Command();
247
- for (const input of getInputSchema(workflow)) {
248
- program.option(`--${input.name} <value>`, input.description ?? "");
249
- }
250
- program.action(async (rawOpts) => {
251
- try {
252
- await runWorkflow({ workflow, inputs: rawOpts as Record<string, string> });
253
- } catch (err) {
254
- if (err instanceof MissingDependencyError) {
255
- console.error(`Missing dependency: ${err.dependency}. Install it and retry.`);
256
- process.exit(1);
257
- }
258
- throw err;
259
- }
260
- });
261
- await program.parseAsync();
262
- ```
263
-
264
- Run it:
265
-
266
- ```bash
267
- bun run src/claude-worker.ts --target_branch=main
268
- ```
269
-
270
- That's the full shape — one workflow file, one composition root. The
271
- SDK exposes primitives (`runWorkflow`, `getInputSchema`, `listWorkflows`,
272
- `getName`, `getAgent`, `validateInputs`, `listSessions`, …) and the
273
- developer composes them into whatever CLI shape they prefer. See
274
- [Workflow SDK](#workflow-sdk--build-reliable-engineering-workflows) for
275
- parallel stages, input schemas, headless stages, and the full API
276
- reference.
277
-
278
- ### Managing sessions
279
-
280
- Every chat and workflow runs inside an isolated [tmux](https://github.com/tmux/tmux) session on a dedicated socket (your personal tmux is untouched). If your terminal disconnects, your session keeps running — reconnect anytime.
281
-
282
- ```bash
283
- atomic session list # all sessions
284
- atomic session connect # interactive fuzzy picker
285
- atomic session connect <name> # by name
286
- atomic session kill # interactive multi-select
287
- atomic session kill <name> # kill one session by name
288
- atomic session kill --all # select all matching sessions, then confirm
289
- atomic session kill --all --yes # kill all matching sessions without prompts
290
- ```
291
-
292
- Session names follow `atomic-chat-<id>` or `atomic-wf-<workflow>-<id>`. Scope with `atomic chat session …` or `atomic workflow session …`.
293
-
294
- Need a workflow to run in the background while you do something else? Pass `-d` / `--detach`:
295
-
296
- ```bash
297
- atomic workflow -n ralph -a claude -d "build the auth module" # returns immediately
298
- atomic workflow session connect atomic-wf-claude-ralph-<id> # attach later
299
- ```
300
-
301
- Detached mode is what you want for scripted / CI automation and long-running tasks — the workflow keeps running on the atomic tmux socket regardless of your terminal.
302
-
303
- ---
304
-
305
- ## Two surfaces: CLI and SDK
306
-
307
- Atomic ships **two** things that share one workflow runtime. You can use either on its own or both together:
308
-
309
- | | Atomic CLI | Atomic SDK |
310
- | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
311
- | **What it is** | Global `atomic` binary | `@bastani/atomic/workflows` TypeScript library |
312
- | **Install** | `bun install -g @bastani/atomic` (or `install.sh` / `install.ps1`) | `bun add @bastani/atomic` inside your project |
313
- | **Entrypoint** | `atomic <command>` | `bun run src/<agent>-worker.ts` |
314
- | **Code required?** | No — everything is pre-built. You can also ask the agent inside `atomic chat` to use the `workflow-creator` skill, decide when a complex task needs its own workflow, and build/run that workflow on the fly. | No to start — describe the workflow in natural language and use the `workflow-creator` skill to generate it. Then refine it in natural language or edit the TypeScript workflow and composition root directly, with full visibility into exactly what will run. |
315
- | **What you get** | `atomic chat` (agent REPL), three autonomous built-in workflows (`ralph`, `deep-research-codebase`, `open-claude-design`), session management, the live workflow panel, Atomic skills (`/init`, `/research-codebase`, `/create-spec`, …) | `defineWorkflow`, `createRegistry`, `runWorkflow`, metadata accessors (`getName`, `getInputSchema`, …), session primitives (`listSessions`, `getSessionStatus`, `attachSession` / `detachSession`, `nextWindow` / `previousWindow` / `gotoOrchestrator`), typed errors (`MissingDependencyError`, `SessionNotFoundError`, …), `ctx.stage`, `s.save` / `s.transcript`, headless stages |
316
- | **When to reach for** | You want autonomous execution of a standard pattern out of the box, interactive chat with your agent's full toolset, or a CLI agent that can create a purpose-built workflow before doing complex work. | You want to control the outer loop yourself — review flows, deployment gates, custom research pipelines — with full visibility into the TypeScript your team will run identically. |
317
- | **Read next** | [Quick Start](#quick-start) (steps 1–3) | [Quick Start step 4](#4-build-your-own-workflow--sdk) and [Building your own atomic-powered app](#building-your-own-atomic-powered-app) |
318
-
319
- Both surfaces call the same runtime underneath (tmux/psmux session graph, provider SDKs, detach/reattach) — they're two entry points, not two products. Neither depends on the other: you can `bun add @bastani/atomic` in a project without ever installing the global binary, and you can use `atomic chat` and the built-in workflows without writing any TypeScript.
320
-
321
- ## Example use cases
322
-
323
- These are workflows you'd author with `defineWorkflow` and run from your own `src/<agent>-worker.ts` — see [step 4 of Quick Start](#4-build-your-own-workflow--sdk) for the three-line entrypoint. Atomic ships three built-in workflows (`ralph`, `deep-research-codebase`, `open-claude-design`); everything else is yours to define.
324
-
325
- - **Review-to-merge pipeline.** Review code, run CI in parallel, open a PR, notify Slack, wait for approval, merge.
326
- - **Support ticket to draft PR.** Reproduce the issue, find the root cause, try a fix in a sandbox, run tests, pause for review.
327
- - **Production alert investigation.** Pull the failing trace, inspect recent commits, rank likely causes, then draft a fix or page the on-call with evidence.
328
- - **Parallel UX testing.** Run many persona-specific agents against the same feature, aggregate structured feedback, and turn selected issues into tasks.
329
- - **Large migration or refactor.** Research the codebase, split the work into safe batches, run implementation and review passes, and keep artifacts for later runs.
330
-
331
- ---
332
-
333
- ## Table of Contents
334
-
335
- - [Atomic](#atomic)
336
- - [Why Atomic](#why-atomic)
337
- - [Quick Start](#quick-start)
338
- - [Prerequisites](#prerequisites)
339
- - [1. Install — CLI + SDK share the same package](#1-install--cli--sdk-share-the-same-package)
340
- - [2. Generate context files — CLI](#2-generate-context-files--cli)
341
- - [3. Try Ralph — CLI (autonomous coding)](#3-try-ralph--cli-autonomous-coding)
342
- - [4. Build your own workflow — SDK](#4-build-your-own-workflow--sdk)
343
- - [Managing sessions](#managing-sessions)
344
- - [Two surfaces: CLI and SDK](#two-surfaces-cli-and-sdk)
345
- - [Example use cases](#example-use-cases)
346
- - [Table of Contents](#table-of-contents)
347
- - [Security: Workflow Permissions Model](#security-workflow-permissions-model)
348
- - [Core Features](#core-features)
349
- - [Multi-Agent Support](#multi-agent-support)
350
- - [Workflow SDK — Build Reliable Engineering Workflows](#workflow-sdk--build-reliable-engineering-workflows)
351
- - [Runnable examples shipped with the repo](#runnable-examples-shipped-with-the-repo)
352
- - [Builder API](#builder-api)
353
- - [WorkflowContext (`ctx`) — top-level workflow context](#workflowcontext-ctx--top-level-workflow-context)
354
- - [SessionContext (`s`) — inside each session callback](#sessioncontext-s--inside-each-session-callback)
355
- - [Session Options (`SessionRunOptions`)](#session-options-sessionrunoptions)
356
- - [Saving Transcripts](#saving-transcripts)
357
- - [Per-Agent Session APIs](#per-agent-session-apis)
358
- - [Key Rules](#key-rules)
359
- - [Research Codebase](#research-codebase)
360
- - [Autonomous Execution (Ralph)](#autonomous-execution-ralph)
361
- - [Deep Research Codebase](#deep-research-codebase)
362
- - [Containerized Execution](#containerized-execution)
363
- - [Specialized Sub-Agents](#specialized-sub-agents)
364
- - [Built-in Skills](#built-in-skills)
365
- - [Workflow Panel](#workflow-panel)
366
- - [Commands Reference](#commands-reference)
367
- - [CLI Commands](#cli-commands)
368
- - [Global Flags](#global-flags)
369
- - [`atomic session` Subcommands](#atomic-session-subcommands)
370
- - [`atomic chat` Flags](#atomic-chat-flags)
371
- - [`atomic workflow` Flags](#atomic-workflow-flags)
372
- - [`atomic completions` — Shell Completions](#atomic-completions--shell-completions)
373
- - [Atomic-Provided Skills (invokable from any agent chat)](#atomic-provided-skills-invokable-from-any-agent-chat)
374
- - [Building your own atomic-powered app](#building-your-own-atomic-powered-app)
375
- - [Primitives, not a wrapper](#primitives-not-a-wrapper)
376
- - [Programmatic invocation](#programmatic-invocation)
377
- - [Embedding under a parent CLI — `runWorkflow` inside any Commander tree](#embedding-under-a-parent-cli--runworkflow-inside-any-commander-tree)
378
- - [`WorkflowPicker` component](#workflowpicker-component)
379
- - [Registry rules](#registry-rules)
380
- - [Input precedence](#input-precedence)
381
- - [Builtin workflows via the `atomic` CLI](#builtin-workflows-via-the-atomic-cli)
382
- - [Migration from 0.x (directory-scanning) and the `createWorkflowCli` wrapper](#migration-from-0x-directory-scanning-and-the-createworkflowcli-wrapper)
383
- - [Configuration](#configuration)
384
- - [`.atomic/settings.json`](#atomicsettingsjson)
385
- - [Agent-Specific Files](#agent-specific-files)
386
- - [Updating \& Uninstalling](#updating--uninstalling)
387
- - [Update](#update)
388
- - [Uninstall](#uninstall)
389
- - [Troubleshooting](#troubleshooting)
390
- - [FAQ](#faq)
391
- - [Contributing](#contributing)
392
- - [License](#license)
393
- - [Credits](#credits)
394
-
395
- ---
396
-
397
- ## Security: Workflow Permissions Model
398
-
399
- > [!CAUTION]
400
- > **Atomic workflows run coding agents with all permission checks disabled.** The agent can read, write, and delete files, execute arbitrary shell commands, and make network requests without prompting. This is required for unattended pipelines. **Run workflows in a [devcontainer](#containerized-execution), not on your host machine.**
401
-
402
- | Agent | How permissions are bypassed | Key flags / settings |
403
- | ---------------------- | -------------------------------------------------------------------- | --------------------------------------------------------------------- |
404
- | **Claude Code** | CLI flag disables the interactive permission prompt entirely | `--dangerously-skip-permissions` |
405
- | **GitHub Copilot CLI** | CLI flag enables auto-execution; SDK auto-approves all tool requests | `--yolo`, `COPILOT_ALLOW_ALL=true`, `onPermissionRequest: approveAll` |
406
- | **OpenCode** | Permissions handled programmatically through the event stream | Permission requests auto-replied via SSE events |
407
-
408
- Defaults live in `src/services/config/definitions.ts` and `src/sdk/runtime/executor.ts`. Override per-project via `ProviderOverrides` in `.atomic/settings.json` — `chatFlags` replaces defaults entirely; `envVars` are merged.
409
-
410
- ---
411
-
412
- ## Core Features
413
-
414
- ### Multi-Agent Support
415
-
416
- Atomic works across **three production coding agents** — switch with a flag and your workflows, skills, and sub-agents carry over.
417
-
418
- | Agent | Command |
419
- | ------------------ | ------------------------- |
420
- | Claude Code | `atomic chat -a claude` |
421
- | OpenCode | `atomic chat -a opencode` |
422
- | GitHub Copilot CLI | `atomic chat -a copilot` |
423
-
424
- Each agent gets its own configuration directory (`.claude/`, `.opencode/`, `.github/`), skills, and context files — all managed by Atomic.
425
-
426
- ### Workflow SDK — Build Reliable Engineering Workflows
427
-
428
- The Workflow SDK (`@bastani/atomic/workflows`) lets you encode your team's process as TypeScript — spawn agent sessions dynamically with native control flow (`for`, `if`, `Promise.all()`), pass state explicitly, and watch each stage appear in a live graph as it runs.
429
-
430
- Set up a workflow project (`bun init && bun add @bastani/atomic`), define your workflow with `defineWorkflow`, then call `runWorkflow({ workflow, inputs })` from inside whatever CLI library you prefer (Commander, citty, yargs, an OpenTUI app, …). The SDK ships pure primitives — no opinionated wrapper:
431
-
432
- ```bash
433
- bun run src/claude-worker.ts --prompt="describe this project"
434
- ```
435
-
436
- See [step 4 of Quick Start](#4-build-your-own-workflow--sdk) for a complete review-to-merge example. More examples and the full API reference below.
437
-
438
- #### Runnable examples shipped with the repo
439
-
440
- The [`examples/`](./examples) directory contains small, complete user apps you can run directly. Most subdirectories ship `claude/`, `copilot/`, and `opencode/` variants plus one agent-scoped worker file per agent — `claude-worker.ts`, `copilot-worker.ts`, `opencode-worker.ts` — each a small Commander entrypoint that calls `runWorkflow({ workflow, inputs })`. `multi-workflow/` and `commander-embed/` use a single `cli.ts` instead, to demonstrate multi-workflow dispatch and Commander embedding respectively.
441
-
442
- **Design principle — when does `-a/--agent` belong on your CLI?** Each agent-scoped worker file imports a single workflow pinned to one agent (`import workflow from "./claude/index.ts"`), so there's nothing to disambiguate — no `-a` flag. Only reach for `-a/--agent` when one CLI dispatches across workflows that exist in multiple agent variants — e.g. a `cli.ts` that registers `hello` for claude *and* copilot. The atomic CLI itself uses `-a` for exactly that reason: its builtin registry has cross-agent variants of `ralph`, `deep-research-codebase`, and `open-claude-design`.
443
-
444
- | Example | What it demonstrates |
445
- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
446
- | `hello-world` | Minimal single-session workflow with structured inputs (greeting, style, optional notes) |
447
- | `sequential-describe-summarize` | Two stages passing data via `s.save()` → `s.transcript(handle)` — the canonical handoff pattern |
448
- | `parallel-hello-world` | `Promise.all()` fan-out and transcript merge |
449
- | `headless-test` | Visible seed → 3 parallel headless stages → visible merge → headless verdict |
450
- | `hil-favorite-color` | Human-in-the-loop prompt mid-workflow |
451
- | `hil-favorite-color-headless` | HIL pause inside a headless stage |
452
- | `structured-output-demo` | Per-SDK structured output (JSON-schema validation, Zod) |
453
- | `reviewer-tool-test` | Custom reviewer tool wiring (Copilot — copilot-worker.ts only) |
454
- | `review-fix-loop` | Draft → loop(review → fix) with bounded iterations and early exit on a `CLEAN` verdict — a reliable review gate showing how a stage's return value (`handle.result`) drives TypeScript control flow |
455
- | `multi-workflow` | Two Claude workflows under one `cli.ts` — uses `listWorkflows(registry)` to register one Commander subcommand per workflow with each workflow's declared inputs as `--<flag>` options. |
456
- | `commander-embed` | Mount an atomic workflow under a parent Commander CLI by calling `runWorkflow({ workflow, inputs })` inside a Commander action, alongside a plain Commander sibling command. No re-entry boilerplate — the SDK ships its own orchestrator entry script. |
457
- | `pane-navigation` | Driver CLI for the SDK pane-navigation primitives (`nextWindow`, `previousWindow`, `gotoOrchestrator`, `attachSession`, `detachSession`). Spawns a 3-stage workflow detached and exposes `start / list / status / next / prev / home / attach / stop` subcommands. Catches `SessionNotFoundError` for friendly errors. |
458
-
459
- Run any of them with:
460
-
461
- ```bash
462
- # Single-workflow workers — agent is pinned by which file you run, so no `-a` flag.
463
- # Inputs map to `--<input>=<value>` flags; if the workflow declares no inputs,
464
- # trailing positional tokens become the prompt.
465
- bun run examples/hello-world/claude-worker.ts --greeting="Hello" --style=casual
466
- bun run examples/sequential-describe-summarize/claude-worker.ts --topic="Bun"
467
- bun run examples/review-fix-loop/claude-worker.ts --topic="adopting Bun" --max_iterations=3
468
- bun run examples/headless-test/copilot-worker.ts --prompt="TypeScript"
469
-
470
- # Multi-workflow CLI — one cli.ts, one Commander subcommand per registered workflow.
471
- bun run examples/multi-workflow/cli.ts hello --who=Alex
472
- bun run examples/multi-workflow/cli.ts goodbye --tone=melodramatic
473
-
474
- # Commander embedding — atomic workflow mounted as `greet` alongside plain Commander commands.
475
- bun run examples/commander-embed/cli.ts greet --who=Alex
476
- bun run examples/commander-embed/cli.ts status # sibling Commander command
477
- bun run examples/commander-embed/cli.ts --help # all commands
478
- ```
479
-
480
- Copy an example directory into your project as a starting point — swap the workflow import in each `<agent>-worker.ts` (or in `cli.ts` for the multi-workflow / commander-embed shapes) for your own definition and you're done.
481
-
482
- <details>
483
- <summary><b>Example: Sequential workflow (describe → summarize)</b></summary>
484
-
485
- ```ts
486
- import { defineWorkflow } from "@bastani/atomic/workflows";
487
-
488
- export default defineWorkflow({
489
- name: "my-workflow",
490
- description: "Two-session pipeline: describe -> summarize",
491
- inputs: [{ name: "prompt", type: "text", required: true, description: "task prompt" }],
492
- }).for("claude")
493
- .run(async (ctx) => {
494
- const prompt = ctx.inputs.prompt ?? "";
495
-
496
- const describe = await ctx.stage(
497
- { name: "describe", description: "Ask Claude to describe the project" },
498
- {}, {},
499
- async (s) => {
500
- await s.session.query(prompt);
501
- s.save(s.sessionId);
502
- },
503
- );
504
-
505
- await ctx.stage(
506
- { name: "summarize", description: "Summarize the previous session's output" },
507
- {}, {},
508
- async (s) => {
509
- const research = await s.transcript(describe);
510
- await s.session.query(`Read ${research.path} and summarize in 2-3 bullets.`);
511
- s.save(s.sessionId);
512
- },
513
- );
514
- })
515
- .compile();
516
- ```
517
-
518
- </details>
519
-
520
- <details>
521
- <summary><b>Example: Parallel workflow (describe → [summarize-a, summarize-b] → merge)</b></summary>
522
-
523
- ```ts
524
- import { defineWorkflow } from "@bastani/atomic/workflows";
525
-
526
- export default defineWorkflow({
527
- name: "parallel-demo",
528
- description: "describe -> [summarize-a, summarize-b] -> merge",
529
- inputs: [{ name: "prompt", type: "text", required: true, description: "task prompt" }],
530
- }).for("claude")
531
- .run(async (ctx) => {
532
- const prompt = ctx.inputs.prompt ?? "";
533
-
534
- const describe = await ctx.stage({ name: "describe" }, {}, {}, async (s) => {
535
- await s.session.query(prompt);
536
- s.save(s.sessionId);
537
- });
538
-
539
- const [summarizeA, summarizeB] = await Promise.all([
540
- ctx.stage({ name: "summarize-a" }, {}, {}, async (s) => {
541
- const research = await s.transcript(describe);
542
- await s.session.query(`Read ${research.path} and summarize in 2-3 bullets.`);
543
- s.save(s.sessionId);
544
- }),
545
- ctx.stage({ name: "summarize-b" }, {}, {}, async (s) => {
546
- const research = await s.transcript(describe);
547
- await s.session.query(`Read ${research.path} and summarize in one sentence.`);
548
- s.save(s.sessionId);
549
- }),
550
- ]);
551
-
552
- await ctx.stage({ name: "merge" }, {}, {}, async (s) => {
553
- const bullets = await s.transcript(summarizeA);
554
- const oneliner = await s.transcript(summarizeB);
555
- await s.session.query(
556
- `Combine:\n\n## Bullets\n${bullets.content}\n\n## One-liner\n${oneliner.content}`,
557
- );
558
- s.save(s.sessionId);
559
- });
560
- })
561
- .compile();
562
- ```
563
-
564
- </details>
565
-
566
- <details>
567
- <summary><b>Example: Structured-input workflow (declared schema + CLI flag validation)</b></summary>
568
-
569
- Declare `inputs` on `defineWorkflow` and the CLI materialises one `--<field>=<value>` flag per entry. Required fields, enum membership, and unknown-flag rejection are validated before any tmux session spawns. The interactive picker renders the same schema as a form.
570
-
571
- ```ts
572
- import { defineWorkflow } from "@bastani/atomic/workflows";
573
-
574
- export default defineWorkflow({
575
- name: "gen-spec",
576
- description: "Convert a research doc into an execution spec",
577
- inputs: [
578
- {
579
- name: "research_doc",
580
- type: "string",
581
- required: true,
582
- description: "path to the research doc",
583
- placeholder: "research/docs/2026-04-11-auth.md",
584
- },
585
- {
586
- name: "focus",
587
- type: "enum",
588
- required: true,
589
- description: "how aggressively to scope the spec",
590
- values: ["minimal", "standard", "exhaustive"],
591
- default: "standard",
592
- },
593
- {
594
- name: "notes",
595
- type: "text",
596
- description: "extra guidance for the spec writer (optional)",
597
- },
598
- ],
599
- }).for("claude")
600
- .run(async (ctx) => {
601
- const { research_doc, focus } = ctx.inputs;
602
- const notes = ctx.inputs.notes ?? "";
603
-
604
- await ctx.stage({ name: "write-spec" }, {}, {}, async (s) => {
605
- await s.session.query(
606
- `Read ${research_doc} and produce a ${focus} spec.` +
607
- (notes ? `\n\nExtra guidance:\n${notes}` : ""),
608
- );
609
- s.save(s.sessionId);
610
- });
611
- })
612
- .compile();
613
- ```
614
-
615
- Wire it into `src/claude-worker.ts` (three lines — see [step 4 of Quick Start](#4-build-your-own-workflow--sdk)) and run it:
616
-
617
- ```bash
618
- # Scriptable; CI-friendly
619
- bun run src/claude-worker.ts \
620
- --research_doc=research/docs/2026-04-11-auth.md \
621
- --focus=standard
622
- ```
623
-
624
- </details>
625
-
626
- <details>
627
- <summary><b>Example: Headless (background) stages for parallel data gathering</b></summary>
628
-
629
- Stages can run headlessly (`headless: true`) — they execute the provider SDK in-process instead of spawning a tmux window. Headless stages are invisible in the graph but tracked via a background counter in the statusline.
630
-
631
- ```ts
632
- import { defineWorkflow, extractAssistantText } from "@bastani/atomic/workflows";
633
-
634
- export default defineWorkflow({
635
- name: "headless-demo",
636
- description: "seed -> [3 headless background] -> merge",
637
- inputs: [{ name: "prompt", type: "text", required: true, description: "task prompt" }],
638
- }).for("claude")
639
- .run(async (ctx) => {
640
- const prompt = ctx.inputs.prompt ?? "";
641
-
642
- const seed = await ctx.stage(
643
- { name: "seed", description: "Generate overview" }, {}, {},
644
- async (s) => {
645
- const result = await s.session.query(prompt);
646
- s.save(s.sessionId);
647
- return extractAssistantText(result, 0);
648
- },
649
- );
650
-
651
- const [pros, cons, uses] = await Promise.all([
652
- ctx.stage({ name: "pros", headless: true }, {}, {}, async (s) => {
653
- const r = await s.session.query(`List 3 pros:\n\n${seed.result}`);
654
- s.save(s.sessionId);
655
- return extractAssistantText(r, 0);
656
- }),
657
- ctx.stage({ name: "cons", headless: true }, {}, {}, async (s) => {
658
- const r = await s.session.query(`List 3 cons:\n\n${seed.result}`);
659
- s.save(s.sessionId);
660
- return extractAssistantText(r, 0);
661
- }),
662
- ctx.stage({ name: "uses", headless: true }, {}, {}, async (s) => {
663
- const r = await s.session.query(`List 3 use cases:\n\n${seed.result}`);
664
- s.save(s.sessionId);
665
- return extractAssistantText(r, 0);
666
- }),
667
- ]);
668
-
669
- await ctx.stage(
670
- { name: "merge", description: "Combine results" }, {}, {},
671
- async (s) => {
672
- await s.session.query(
673
- `Combine:\n\n## Pros\n${pros.result}\n\n## Cons\n${cons.result}\n\n## Uses\n${uses.result}`,
674
- );
675
- s.save(s.sessionId);
676
- },
677
- );
678
- })
679
- .compile();
680
- ```
681
-
682
- The graph shows `seed → merge` — headless stages are transparent to the topology. The callback API (`s.client`, `s.session`, `s.save()`, `s.transcript()`, return values) is identical to interactive stages.
683
-
684
- </details>
685
-
686
- **Key capabilities:**
687
-
688
- | Capability | Description |
689
- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
690
- | **Dynamic session spawning** | `ctx.stage()` spawns sessions at runtime — each gets its own tmux window and graph node |
691
- | **Native TypeScript control flow** | Use `for`, `if/else`, `Promise.all()`, `try/catch` — no framework DSL |
692
- | **Review gates and approvals** | Pause for human input, run structured review stages, and decide whether the next stage should continue |
693
- | **Session return values** | Session callbacks can return data: `const h = await ctx.stage(...); h.result` |
694
- | **Transcript passing** | Access prior output via handle (`s.transcript(handle)`) or name (`s.transcript("name")`) |
695
- | **Declared input schemas** | Add an `inputs: [...]` array and the CLI materialises `--<field>=<value>` flags with built-in validation |
696
- | **Interactive picker** | `atomic workflow -a <agent>` is the explicit no-`-n` discovery path; direct runs use `-n <name>` |
697
- | **Nested sub-sessions** | `s.stage()` inside a callback spawns child sessions — visible as nested graph nodes |
698
- | **Auto-inferred graph** | Topology derived from `await` / `Promise.all` patterns — no annotations |
699
- | **Provider-agnostic** | Write raw SDK code for Claude, Copilot, or OpenCode inside each callback |
700
- | **Live graph visualization** | Sessions appear in the TUI graph as they spawn — loops and conditionals visible in real time |
701
- | **Background (headless) stages** | `headless: true` runs in-process without a tmux window — invisible in graph, tracked by statusline counter, identical callback API |
702
- | **Token-aware handoffs** | Save transcripts to disk and pass paths or distilled outputs forward instead of stuffing every stage with the full history |
703
-
704
- **Deterministic execution guarantees:**
705
-
706
- Workflows are deterministic by design — the same definition produces the same execution order with the same data flow, anywhere.
707
-
708
- - **Strict step ordering** — Step 2 never starts until Step 1 finishes. Parallel sessions complete (or fail fast) before the next step begins.
709
- - **Frozen definitions** — `.compile()` freezes the workflow. Once compiled, step order, session names, and the execution graph are immutable.
710
- - **Controlled transcript access** — Sessions only read transcripts from *completed* upstream sessions; parallel siblings can't read each other.
711
- - **Isolated context windows** — Each session runs in its own tmux pane with a fresh context. Data flows only through explicit `ctx.transcript()` / `ctx.getMessages()` calls.
712
- - **Persisted artifacts** — Every session writes messages, transcript, and metadata to disk — a complete, inspectable execution record.
713
-
714
- Variance comes from the LLM's responses, not from a changing workflow.
715
-
716
- > Ask Atomic to build workflows for you: `Use your workflow-creator skill to create a workflow that plans, implements, and reviews a feature.`
717
-
718
- <details>
719
- <summary><b>Full Workflow SDK Reference</b></summary>
720
-
721
- #### Builder API
722
-
723
- | Method | Purpose |
724
- | --------------------------------------- | ----------------------------------------------------------------- |
725
- | `defineWorkflow({ name, description })` | Entry point — returns a `WorkflowBuilder` |
726
- | `.run(async (ctx) => { ... })` | Set the workflow's entry point — `ctx` is a `WorkflowContext` |
727
- | `.compile()` | **Required** — terminal method that seals the workflow definition |
728
-
729
- #### WorkflowContext (`ctx`) — top-level workflow context
730
-
731
- | Property | Type | Description |
732
- | ---------------------------------------------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
733
- | `ctx.inputs` | `{ [K in N]?: string }` | Typed inputs for this run — only declared field names are valid keys. Accessing an undeclared field is a compile-time error. Workflows that need a prompt must declare it in their `inputs` schema |
734
- | `ctx.agent` | `AgentType` | Which agent is running (`"claude"`, `"copilot"`, `"opencode"`) |
735
- | `ctx.stage(opts, clientOpts, sessionOpts, fn)` | `Promise<SessionHandle<T>>` | Spawn a session — returns handle with `name`, `id`, `result` |
736
- | `ctx.transcript(ref)` | `Promise<Transcript>` | Get a completed session's transcript (`{ path, content }`) |
737
- | `ctx.getMessages(ref)` | `Promise<SavedMessage[]>` | Get a completed session's raw native messages |
738
-
739
- #### SessionContext (`s`) — inside each session callback
740
-
741
- | Property | Type | Description |
742
- | -------------------------------------------- | --------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
743
- | `s.client` | `ProviderClient<A>` | Pre-created SDK client (auto-managed by runtime) |
744
- | `s.session` | `ProviderSession<A>` | Pre-created provider session (auto-managed by runtime) |
745
- | `s.inputs` | `{ [K in N]?: string }` | Same typed inputs as `ctx.inputs`, forwarded into every stage so callbacks can read values without closing over the outer `ctx` |
746
- | `s.agent` | `AgentType` | Which agent is running |
747
- | `s.paneId` | `string` | tmux pane ID for this session |
748
- | `s.sessionId` | `string` | Session UUID |
749
- | `s.sessionDir` | `string` | Path to this session's storage directory on disk |
750
- | `s.save(messages)` | `SaveTranscript` | Save this session's output for subsequent sessions |
751
- | `s.transcript(ref)` | `Promise<Transcript>` | Get a completed session's transcript |
752
- | `s.getMessages(ref)` | `Promise<SavedMessage[]>` | Get a completed session's raw native messages |
753
- | `s.stage(opts, clientOpts, sessionOpts, fn)` | `Promise<SessionHandle<T>>` | Spawn a nested sub-session (child in the graph) |
754
-
755
- #### Session Options (`SessionRunOptions`)
756
-
757
- | Property | Type | Description |
758
- | ------------- | ---------- | ----------------------------------------------------------------------------------------------------- |
759
- | `name` | `string` | Unique session name within the workflow run |
760
- | `description` | `string?` | Human-readable description shown in the graph |
761
- | `headless` | `boolean?` | When `true`, run in-process without a tmux window — invisible in graph, tracked by background counter |
762
-
763
- The runtime auto-infers parent-child edges from execution order: sequential `await` creates a chain, `Promise.all` creates parallel fan-out/fan-in — no annotations needed.
764
-
765
- #### Saving Transcripts
766
-
767
- Each provider saves transcripts differently:
768
-
769
- | Provider | How to Save |
770
- | ------------ | ----------------------------------------------------------------- |
771
- | **Claude** | `s.save(s.sessionId)` — auto-reads via `getSessionMessages()` |
772
- | **Copilot** | `s.save(await session.getMessages())` — pass `SessionEvent[]` |
773
- | **OpenCode** | `s.save(result.data!)` — pass the full `{ info, parts }` response |
774
-
775
- #### Per-Agent Session APIs
776
-
777
- The runtime auto-creates `s.client` and `s.session` — use them directly inside the callback:
778
-
779
- | Agent | How to send a prompt |
780
- | ------------ | ----------------------------------------------------------------------------------------------------- |
781
- | **Claude** | `await s.session.query(prompt)` |
782
- | **Copilot** | `await s.session.send({ prompt })` |
783
- | **OpenCode** | `await s.client.session.prompt({ sessionID: s.session.id, parts: [{ type: "text", text: prompt }] })` |
784
-
785
- #### Key Rules
786
-
787
- 1. Every workflow definition must call `.run()` and `.compile()` on the builder
788
- 2. Session names must be unique within a workflow run
789
- 3. `transcript()` / `getMessages()` only access completed sessions (callback returned + saves flushed)
790
- 4. Each session runs in its own tmux window with the chosen agent
791
- 5. Run a workflow by calling `runWorkflow({ workflow, inputs })` from inside any CLI library (Commander, citty, yargs, …). Use `listWorkflows(registry)` to iterate when registering multiple workflows.
792
- 6. Set up your workflow project with `bun init && bun add @bastani/atomic`
793
- 7. Background (headless) stages use the same callback API — `s.client`, `s.session`, `s.save()`, return values all work identically
794
-
795
- For the authoring walkthrough ask Atomic to use the `workflow-creator` skill or read `.agents/skills/workflow-creator/`.
796
-
797
- > [!TIP]
798
- > When the Workflow SDK is updated, ask the `workflow-creator` skill to migrate your workflows to the latest patterns: _"Update this workflow to use the latest SDK patterns."_
799
-
800
- </details>
801
-
802
- ### Research Codebase
803
-
804
- The `/research-codebase` command dispatches **specialized sub-agents in parallel** to analyze your codebase — understand auth flows, trace root causes, query docs, and hit external sources via [DeepWiki MCP](https://deepwiki.com). Get up to speed on a new project in minutes instead of hours.
805
-
806
- | Sub-Agent | Model | Purpose |
807
- | ---------------------------- | ------ | ------------------------------------------------------------------------------------- |
808
- | `codebase-locator` | Haiku | Locate files, directories, and components relevant to the research topic |
809
- | `codebase-analyzer` | Sonnet | Analyze implementation details, trace data flow, explain technical workings |
810
- | `codebase-pattern-finder` | Haiku | Find similar implementations, usage examples, and existing patterns to model after |
811
- | `codebase-online-researcher` | Sonnet | Fetch up-to-date information from the web and repository knowledge from DeepWiki |
812
- | `codebase-research-locator` | Haiku | Discover relevant documents in `research/` and `specs/` directories |
813
- | `codebase-research-analyzer` | Sonnet | Extract high-value insights, decisions, and technical details from research documents |
814
-
815
- **Run parallel research sessions** to compare approaches:
816
-
817
- ```bash
818
- # Terminal 1: LangChain approach
819
- atomic chat -a claude "/research-codebase Research GraphRAG using LangChain's graph retrieval."
820
-
821
- # Terminal 2: Microsoft GraphRAG
822
- atomic chat -a claude "/research-codebase Research GraphRAG using microsoft/graphrag."
823
-
824
- # Terminal 3: LlamaIndex approach
825
- atomic chat -a claude "/research-codebase Research GraphRAG using LlamaIndex's property graph."
826
- ```
827
-
828
- Then run `/create-spec` on each output, spin up git worktrees, and run `atomic workflow -n ralph -a <agent>` in each — wake up to three complete implementations on separate branches. Research persists in `research/` and specs in `specs/`, so every investigation compounds into future context.
829
-
830
- <details>
831
- <summary><i>Why specialized research agents instead of one general-purpose agent?</i></summary>
832
-
833
- A single agent asked to "research the auth system" tries to search, read, analyze, and summarize within one context window. As that window fills with file contents, search results, and intermediate reasoning, synthesis degrades — this is a fundamental constraint of transformer attention, not a prompt-engineering problem.
834
-
835
- Atomic dispatches purpose-built sub-agents: a `codebase-locator` only finds relevant files, a `codebase-analyzer` only reads and analyzes implementations, a `codebase-online-researcher` only queries external docs. Each operates in its own context with only the tools it needs; the parent receives distilled findings. The result: faster research, higher-quality findings, less hallucination.
836
-
837
- </details>
838
-
839
- ### Autonomous Execution (Ralph)
840
-
841
- <p align="center">
842
- <img src="assets/ralph-wiggum.jpg" alt="Ralph Wiggum" width="600">
843
- </p>
844
-
845
- The [Ralph Method](https://ghuntley.com/ralph/) enables **multi-hour autonomous coding sessions**. Approve your spec, let Ralph work in the background, focus on other things.
846
-
847
- **How Ralph works:**
848
-
849
- 1. **Task Decomposition** — A `planner` sub-agent breaks your spec into a task list with dependency tracking, stored in SQLite (WAL mode for parallel access).
850
- 2. **Execution** — An `orchestrator` retrieves the task list, validates the dependency graph, and dispatches `worker` sub-agents for ready tasks.
851
- 3. **Review & Debug** — A `reviewer` audits the implementation with structured JSON output; if P0–P2 findings exist, a `debugger` investigates root causes and feeds back to the planner on the next iteration.
852
-
853
- **Loop config:** Up to **10 iterations**. Exits early after **2 consecutive clean reviews** (zero actionable findings). P3 (minor) findings are non-actionable.
854
-
855
- ```bash
856
- # From a prompt
857
- atomic workflow -n ralph -a <claude|opencode|copilot> "Build a REST API for user management"
858
-
859
- # From a spec file
860
- atomic workflow -n ralph -a claude "specs/YYYY-MM-DD-my-feature.md"
861
- ```
862
-
863
- **Best practice:** run Ralph in a [git worktree](https://git-scm.com/docs/git-worktree) so autonomous changes stay isolated from your working tree:
864
-
865
- ```bash
866
- git worktree add ../my-project-ralph feature-branch
867
- cd ../my-project-ralph
868
- atomic workflow -n ralph -a claude "Build the auth module"
869
- ```
870
-
871
- ### Deep Research Codebase
872
-
873
- Atomic ships a `deep-research-codebase` workflow that performs **multi-agent parallel research** across your codebase — a full pipeline, not a single-shot command.
874
-
875
- 1. **Scout** — One agent scans the codebase structure and writes an architectural orientation.
876
- 2. **History** — A parallel agent surfaces prior research from `research/docs/`.
877
- 3. **Explorers** — Multiple parallel agents (count scaled by LOC) each investigate a partition.
878
- 4. **Aggregator** — A final agent synthesizes all explorer reports + history into a dated research doc at `research/docs/YYYY-MM-DD-<slug>.md`.
879
-
880
- ```bash
881
- atomic workflow -n deep-research-codebase -a claude "How does the authentication system work?"
882
- ```
883
-
884
- The output is a permanent research artifact that future runs, specs, and workflows can reference.
885
-
886
- ### Containerized Execution
887
-
888
- Atomic ships as **devcontainer features** that bundle the CLI, agent, and all dependencies into isolated containers — the recommended way to run autonomous agents safely.
889
-
890
- **Why containerize?**
891
-
892
- - Agents run `rm`, `git reset --hard`, and arbitrary shell commands — containers limit blast radius
893
- - Reproducible environments across team members and CI
894
- - Pre-installed dependencies: bun, playwright-cli, agent CLI, GitHub CLI
895
- - Features versioned in sync with Atomic releases
896
-
897
- | Feature | Installs |
898
- | ------------------------------------ | -------------------- |
899
- | `ghcr.io/flora131/atomic/claude:1` | Atomic + Claude Code |
900
- | `ghcr.io/flora131/atomic/opencode:1` | Atomic + OpenCode |
901
- | `ghcr.io/flora131/atomic/copilot:1` | Atomic + Copilot CLI |
902
-
903
- See [Quick Start → Devcontainer](#1-install) for a working `.devcontainer.json` and the [`.devcontainer/`](./.devcontainer/) directory for per-agent templates.
904
-
905
- ### Specialized Sub-Agents
906
-
907
- Atomic dispatches **purpose-built sub-agents**, each with scoped context, tools, and termination conditions:
908
-
909
- | Sub-Agent | Purpose |
910
- | ---------------------------- | ------------------------------------------------------------------- |
911
- | `planner` | Decompose specs into structured task lists with dependency tracking |
912
- | `worker` | Implement single focused tasks (multiple workers run in parallel) |
913
- | `reviewer` | Audit implementations against specs and best practices |
914
- | `code-simplifier` | Simplify and refine code for clarity, consistency, maintainability |
915
- | `orchestrator` | Coordinate complex multi-step workflows |
916
- | `codebase-analyzer` | Analyze implementation details of specific components |
917
- | `codebase-locator` | Locate files, directories, and components |
918
- | `codebase-pattern-finder` | Find similar implementations and usage examples |
919
- | `codebase-online-researcher` | Research using web sources and DeepWiki |
920
- | `codebase-research-analyzer` | Deep dive on research topics |
921
- | `codebase-research-locator` | Find documents in `research/` directory |
922
- | `debugger` | Debug errors, test failures, and unexpected behavior |
923
-
924
- <details>
925
- <summary><i>Why specialize instead of using one general-purpose agent?</i></summary>
926
-
927
- LLMs have an architectural limitation: the more context they hold, the harder it becomes to attend to the right information. A single agent juggling a spec, dozens of files, tool outputs, and its own reasoning will lose details, repeat work, or hallucinate connections. This isn't solvable via prompt engineering — it's how attention mechanisms work.
928
-
929
- Specialized sub-agents turn the limitation into an advantage:
930
-
931
- - **Context isolation** — Fresh, minimal context scoped to one job. A `codebase-locator` doesn't carry file contents; a `worker` doesn't carry the full spec.
932
- - **Tool scoping** — Agents only see tools relevant to their role. A `reviewer` has read-only tools and can't edit files; a `worker` has edit tools but can't spawn other workers.
933
- - **Parallel execution** — Independent sub-agents run concurrently. One worker writes the migration, another writes the handler, a third generates tests — all at once.
934
- - **Composability** — Sub-agents combine into workflows or dispatch ad-hoc. The same `reviewer` used by Ralph is the one invoked when you ask for a code review in chat.
935
-
936
- A specialized `codebase-analyzer` reading three files produces more accurate output than a generalist that has already consumed 50,000 tokens of search results and prior reasoning.
937
-
938
- </details>
939
-
940
- Use `/agents` in any chat session to see all available sub-agents.
941
-
942
- ### Built-in Skills
943
-
944
- Skills are structured capability modules that give agents best practices and reusable workflows. Atomic ships **57 skills** across eight categories; each lives at `.agents/skills/<name>/SKILL.md` and is auto-invoked when the agent detects a relevant trigger.
945
-
946
- <details>
947
- <summary><b>Development workflows</b></summary>
948
-
949
- | Skill | Description |
950
- | ------------------- | --------------------------------------------------------------------------- |
951
- | `init` | Generate `CLAUDE.md` and `AGENTS.md` by exploring the codebase |
952
- | `research-codebase` | Analyze codebase with parallel sub-agents and document findings |
953
- | `create-spec` | Create detailed execution plans from research documents |
954
- | `workflow-creator` | Create multi-agent workflows using the session-based `defineWorkflow()` API |
955
- | `explain-code` | Explain code functionality in detail using DeepWiki |
956
- | `find-skills` | Discover and install agent skills from the community |
957
- | `tdd` | Write tests first; includes a testing anti-patterns guide |
958
- | `prompt-engineer` | Create, improve, and optimize prompts using best practices |
959
-
960
- </details>
961
-
962
- <details>
963
- <summary><b>Context engineering</b> — working within (and around) LLM context limits</summary>
964
-
965
- | Skill | Description |
966
- | ---------------------- | --------------------------------------------------------------------- |
967
- | `context-fundamentals` | How context windows work; attention mechanics; progressive disclosure |
968
- | `context-degradation` | Diagnose lost-in-middle, poisoning, distraction failures in long runs |
969
- | `context-compression` | Summarize transcripts at session boundaries; preserve actionable info |
970
- | `context-optimization` | KV-cache optimization, observation masking, context budgeting |
971
- | `filesystem-context` | Offload context to files; file-based agent coordination |
972
- | `memory-systems` | Cross-session knowledge retention; Mem0 / Zep / Letta comparisons |
973
- | `multi-agent-patterns` | Supervisor, swarm, handoff patterns for multi-agent systems |
974
- | `tool-design` | Design clear tool contracts; reduce agent-tool friction |
975
- | `hosted-agents` | Background agents in sandboxed VMs; warm pools; Modal sandboxes |
976
- | `project-development` | Validate task-model fit before building; cost estimation |
977
- | `bdi-mental-states` | Belief-desire-intention models for explainable agent reasoning |
978
-
979
- </details>
980
-
981
- <details>
982
- <summary><b>TypeScript & runtime</b></summary>
983
-
984
- | Skill | Description |
985
- | --------------------------- | ----------------------------------------------------------------------- |
986
- | `typescript-expert` | Type-level programming, perf optimization, migrations |
987
- | `typescript-advanced-types` | Generics, conditional types, mapped types, template literals |
988
- | `typescript-react-reviewer` | Expert review for TypeScript + React 19 applications |
989
- | `bun` | Build, test, deploy with Bun (runtime, package manager, bundler, tests) |
990
- | `opentui` | Build terminal UIs with OpenTUI (core, React, Solid reconcilers) |
991
-
992
- </details>
993
-
994
- <details>
995
- <summary><b>Frontend design & UI polish</b> — used by `impeccable` and invoked individually for targeted refinement</summary>
996
-
997
- | Skill | Description |
998
- | ---------------------------------------------- | ------------------------------------------------------------------------------ |
999
- | `impeccable` | Create distinctive, production-grade frontend interfaces |
1000
- | `polish` | Final quality pass on alignment, spacing, consistency |
1001
- | `critique` | UX evaluation with quantitative scoring and persona testing |
1002
- | `audit` | Accessibility, performance, theming, responsive, anti-pattern audit |
1003
- | `layout` / `typeset` / `colorize` | Layout, typography, and color refinement |
1004
- | `adapt` | Responsive design: breakpoints, fluid layouts, touch targets |
1005
- | `animate` / `delight` | Add motion, micro-interactions, and personality |
1006
- | `clarify` | Improve UX copy, error messages, microcopy, labels |
1007
- | `distill` / `quieter` / `bolder` / `overdrive` | Simplify, tone down, amplify, or push designs to their limit |
1008
- | `harden` | Error handling, onboarding, empty states, i18n, overflow, edge-case resilience |
1009
- | `optimize` | Diagnose and fix loading, rendering, animation, bundle-size issues |
1010
-
1011
- </details>
1012
-
1013
- <details>
1014
- <summary><b>Evaluation, documents, git, meta</b></summary>
1015
-
1016
- **Evaluation:**
1017
-
1018
- | Skill | Description |
1019
- | --------------------- | ------------------------------------------------------------------- |
1020
- | `evaluation` | Multi-dimensional evaluation, LLM-as-judge, quality gates |
1021
- | `advanced-evaluation` | Pairwise comparison, position-bias mitigation, evaluation pipelines |
1022
-
1023
- **Documents & parsing:**
1024
-
1025
- | Skill | Description |
1026
- | ----------- | ----------------------------------------------------------------------- |
1027
- | `pdf` | Read, create, edit, split, merge, and OCR PDF files |
1028
- | `xlsx` | Create, read, edit, and fix spreadsheet files (`.xlsx`, `.csv`, `.tsv`) |
1029
- | `docx` | Create, read, edit, and manipulate Word (`.docx`) documents |
1030
- | `pptx` | Create, read, edit, and manipulate PowerPoint (`.pptx`) slide decks |
1031
- | `liteparse` | Parse and convert unstructured files (PDF, DOCX, PPTX, images) locally |
1032
-
1033
- **Git / Azure DevOps / Sapling / automation:**
1034
-
1035
- | Skill | Description |
1036
- | ---------------- | --------------------------------------------------------------------------- |
1037
- | `gh-commit` | Conventional-commit Git commits |
1038
- | `gh-create-pr` | Commit unstaged changes, push, and submit a GitHub PR |
1039
- | `ado-commit` | Conventional-commit Git commits for Azure DevOps (adds `AB#<id>` trailers) |
1040
- | `ado-create-pr` | Commit, push, and open an Azure DevOps PR via the `azure-devops` MCP server |
1041
- | `sl-commit` | Conventional-commit Sapling commits |
1042
- | `sl-submit-diff` | Submit Sapling commits as Phabricator diffs |
1043
- | `playwright-cli` | Automate browser interactions, tests, screenshots |
1044
-
1045
- > **Note on source control providers:** the GitHub and Azure DevOps MCP servers are **disabled by default** to avoid consuming tokens on projects that don't need them. Set `scm` in `.atomic/settings.json` (or run `atomic config set scm <provider>`) to `github`, `azure-devops`, or `sapling` — on every `atomic chat` / `atomic workflow` startup Atomic reconciles `.claude/settings.json` (`disabledMcpjsonServers`), `.opencode/opencode.json` (`mcp.<server>.enabled`), and appends `--disable-mcp-server <name>` to the Copilot CLI invocation (Copilot has no on-disk MCP toggle). `sapling` disables both servers everywhere.
1046
-
1047
- **Meta:**
1048
-
1049
- | Skill | Description |
1050
- | --------------- | ------------------------------------------------------- |
1051
- | `skill-creator` | Create, modify, evaluate, and benchmark your own skills |
1052
-
1053
- </details>
1054
-
1055
- Skills are auto-invoked when relevant. Run `ls .agents/skills/` for the complete, current list on disk.
1056
-
1057
- ### Workflow Panel
1058
-
1059
- During `atomic workflow` execution, Atomic renders a live workflow panel built on [OpenTUI](https://github.com/anomalyco/opentui) over the workflow's tmux session graph. It shows:
1060
-
1061
- - **Session graph** — Nodes per `.stage()` with status (pending / running / completed / failed) and edges for sequential / parallel dependencies
1062
- - **Task list tracking** — Ralph's decomposed task list with dependency arrows, updated in real time
1063
- - **Pane previews** — Thumbnail of each tmux pane so you can see every agent without context-switching
1064
- - **Transcript passing visibility** — Highlights `s.save()` / `s.transcript()` handoffs as they happen
1065
-
1066
- During `atomic chat`, there is no Atomic-owned TUI — `atomic chat -a <agent>` spawns the native agent CLI inside a tmux session, so chat features (streaming, `@` mentions, `/slash-commands`, model selection, theme, keyboard shortcuts) come from the agent CLI itself. Atomic handles config sync, tmux session management, and argument passthrough.
1067
-
1068
- | Context | UI provider |
1069
- | -------------------------------------- | ----------------------------------------------------------- |
1070
- | `atomic workflow -n <name> -a <agent>` | Atomic (workflow panel + tmux session graph) |
1071
- | `atomic chat -a <agent>` | The native agent CLI (Claude Code / OpenCode / Copilot CLI) |
1072
-
1073
- ---
1074
-
1075
- ## Commands Reference
1076
-
1077
- ### CLI Commands
1078
-
1079
- | Command | Description |
1080
- | ------------------------------- | ----------------------------------------------------------------- |
1081
- | `atomic chat` | Spawn the native agent CLI inside a tmux session |
1082
- | `atomic workflow` | Run a named multi-session workflow with the Atomic workflow panel |
1083
- | `atomic workflow list` | List available workflows, grouped by source |
1084
- | `atomic session list` | List all running sessions on the atomic tmux socket |
1085
- | `atomic session connect [name]` | Attach to a session (interactive picker when no name given) |
1086
- | `atomic session kill [name]` | Kill one session, or pick sessions interactively when no name is given |
1087
- | `atomic completions <shell>` | Output shell completion script (bash, zsh, fish, powershell) |
1088
- | `atomic config set <k> <v>` | Set configuration values (supports `telemetry` and `scm`) |
1089
-
1090
- #### Global Flags
1091
-
1092
- | Flag | Description |
1093
- | --------------- | ------------------------------------------ |
1094
- | `-y, --yes` | Auto-confirm all prompts (non-interactive) |
1095
- | `--no-banner` | Skip ASCII banner display |
1096
- | `-v, --version` | Show version number |
1097
-
1098
- #### `atomic session` Subcommands
1099
-
1100
- Available at three levels — scoped or global:
1101
-
1102
- | Command | Description |
1103
- | ---------------------------------------- | ------------------------------------------------------- |
1104
- | `atomic session list` | List all running sessions |
1105
- | `atomic session connect [name]` | Attach to a session (interactive picker when no name) |
1106
- | `atomic session kill [name]` | Kill one session, or interactively pick sessions |
1107
- | `atomic chat session list` | List running chat sessions only |
1108
- | `atomic chat session connect [name]` | Attach to a chat session |
1109
- | `atomic chat session kill [name]` | Kill one chat session, or interactively pick chat sessions |
1110
- | `atomic workflow session list` | List running workflow sessions only |
1111
- | `atomic workflow session connect [name]` | Attach to a workflow session |
1112
- | `atomic workflow session kill [name]` | Kill one workflow session, or interactively pick workflow sessions |
1113
-
1114
- `list`, `connect`, and `kill` accept `-a <agent>` (repeatable) to filter by agent. `kill` confirms before terminating sessions unless `-y` / `--yes` is passed. When no session name is given, `kill` opens a checkbox picker with an "All matching sessions" option; use `--all` to skip the picker and preselect every matching session.
1115
-
1116
- ```bash
1117
- atomic session list # all sessions
1118
- atomic session list -a claude # only Claude sessions
1119
- atomic session connect my-session # attach by name
1120
- atomic session connect # interactive picker
1121
- atomic chat session list -a copilot # chat sessions for Copilot only
1122
- atomic session kill my-session # kill one session by name
1123
- atomic session kill # choose sessions with a multi-select picker
1124
- atomic session kill --all # kill all sessions after confirmation
1125
- atomic session kill --all --yes # kill all sessions without prompts
1126
- atomic workflow session kill -a claude # choose Claude workflow sessions to kill
1127
- atomic workflow session kill -a claude --all --yes
1128
- ```
1129
-
1130
- #### `atomic chat` Flags
1131
-
1132
- | Flag | Description |
1133
- | -------------------- | -------------------------------------- |
1134
- | `-a, --agent <name>` | Agent: `claude`, `opencode`, `copilot` |
1135
-
1136
- All other arguments are forwarded directly to the native agent CLI:
1137
-
1138
- ```bash
1139
- atomic chat -a claude "fix the bug" # initial prompt
1140
- atomic chat -a copilot --model gpt-5.4 # custom model
1141
- atomic chat -a claude --verbose # forward --verbose to claude
1142
- ```
1143
-
1144
- #### `atomic workflow` Flags
1145
-
1146
- | Flag | Description |
1147
- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
1148
- | `-n, --name <name>` | Workflow name (required for direct runs; omit only for the interactive picker) |
1149
- | `-a, --agent <name>` | Agent: `claude`, `opencode`, `copilot` |
1150
- | `-d, --detach` | Start the workflow in the background without attaching — ideal for scripted / CI runs; attach later with `atomic workflow session connect <name>` |
1151
- | `--<field>=<value>` | Structured input for workflows that declare an `inputs` schema (also accepts `--<field> <value>`) |
1152
- | `[prompt...]` | Positional prompt — requires the workflow to declare a `prompt` input |
1153
-
1154
- Five invocation shapes:
1155
-
1156
- ```bash
1157
- # 1. List every workflow available, grouped by source
1158
- atomic workflow list
1159
- atomic workflow list -a claude # filter by agent
1160
-
1161
- # 2. Launch the interactive picker (no -n) — fuzzy-search, fill the form, confirm with y/n
1162
- atomic workflow -a claude
1163
-
1164
- # 3. Run with a positional prompt (workflow must declare a "prompt" input)
1165
- atomic workflow -n ralph -a claude "build a REST API for user management"
1166
-
1167
- # 4. Run a structured-input workflow with one --<field> flag per declared input
1168
- atomic workflow -n open-claude-design -a claude \
1169
- --prompt="a dashboard for monitoring API latency" \
1170
- --output-type=prototype
1171
-
1172
- # 5. Run detached — workflow runs in the background; prints the session name
1173
- # and returns immediately. Attach any time with `atomic workflow session connect`.
1174
- atomic workflow -n ralph -a claude -d "build a REST API for user management"
1175
- ```
1176
-
1177
- Workflows that declare `inputs: WorkflowInput[]` get CLI flag validation for free. **Builtin workflows (e.g. `ralph`) are reserved** — a local/global workflow with the same name will not shadow a builtin.
1178
-
1179
- #### `atomic completions` — Shell Completions
1180
-
1181
- Atomic ships tab-completion for **bash**, **zsh**, **fish**, and **PowerShell**. Cache the script once so new shells don't re-spawn the atomic binary on startup.
1182
-
1183
- <details>
1184
- <summary><b>Bash / Zsh / Fish / PowerShell setup</b></summary>
1185
-
1186
- **Bash**
1187
-
1188
- ```bash
1189
- mkdir -p ~/.atomic/completions
1190
- atomic completions bash > ~/.atomic/completions/atomic.bash
1191
- echo '[ -f "$HOME/.atomic/completions/atomic.bash" ] && source "$HOME/.atomic/completions/atomic.bash"' >> ~/.bashrc
1192
- ```
1193
-
1194
- **Zsh**
1195
-
1196
- ```zsh
1197
- mkdir -p ~/.atomic/completions
1198
- atomic completions zsh > ~/.atomic/completions/atomic.zsh
1199
- echo '[ -f "$HOME/.atomic/completions/atomic.zsh" ] && source "$HOME/.atomic/completions/atomic.zsh"' >> ~/.zshrc
1200
- ```
1201
-
1202
- **Fish**
1203
-
1204
- ```fish
1205
- atomic completions fish > ~/.config/fish/completions/atomic.fish
1206
- ```
1207
-
1208
- **PowerShell**
1209
-
1210
- ```powershell
1211
- $cache = Join-Path $HOME '.atomic\completions\atomic.ps1'
1212
- New-Item -ItemType Directory -Force -Path (Split-Path $cache) | Out-Null
1213
- atomic completions powershell | Out-File -FilePath $cache -Encoding utf8
1214
- Add-Content $PROFILE "`nif (Test-Path `"$cache`") { . `"$cache`" }"
1215
- ```
1216
-
1217
- </details>
1218
-
1219
- > The bootstrap installer (`install.sh` / `install.ps1`) sets this up automatically and migrates older `eval "$(atomic completions …)"` snippets to the cached form.
1220
-
1221
- ### Atomic-Provided Skills (invokable from any agent chat)
1222
-
1223
- Atomic ships skills — not slash commands. Skills are auto-discovered by Claude Code, OpenCode, and Copilot CLI, invoked by typing `/<skill-name>` (Claude Code) or by natural-language reference (OpenCode / Copilot CLI).
1224
-
1225
- | Skill | Typical invocation | Purpose |
1226
- | ------------------- | --------------------------------- | ------------------------------------------------------------------------------- |
1227
- | `init` | `/init` | Generate `CLAUDE.md` and `AGENTS.md` by exploring the codebase |
1228
- | `research-codebase` | `/research-codebase "<question>"` | Dispatch parallel sub-agents to analyze the codebase and write a research doc |
1229
- | `create-spec` | `/create-spec "<research-path>"` | Produce a technical spec grounded in a research document |
1230
- | `explain-code` | `/explain-code "<path>"` | Deep-dive explanation of specific code using DeepWiki |
1231
- | `gh-commit` | `/gh-commit` | Create a conventional-commit Git commit |
1232
- | `gh-create-pr` | `/gh-create-pr` | Commit, push, and open a GitHub pull request |
1233
- | `ado-commit` | `/ado-commit` | Create a conventional-commit Git commit on an Azure DevOps-hosted repo |
1234
- | `ado-create-pr` | `/ado-create-pr` | Commit, push, and open an Azure DevOps PR through the `azure-devops` MCP server |
1235
- | `sl-commit` | `/sl-commit` | Create a Sapling commit |
1236
- | `sl-submit-diff` | `/sl-submit-diff` | Submit a Sapling commit as a Phabricator diff |
1237
- | `workflow-creator` | natural language | Generate a multi-agent workflow definition using `defineWorkflow` + registry |
1238
-
1239
- Native slash commands (`/help`, `/clear`, `/compact`, `/model`, `/theme`, `/agents`, `/mcp`, `/exit`) come from the underlying agent CLI, not Atomic.
1240
-
1241
- ---
1242
-
1243
- ## Building your own atomic-powered app
1244
-
1245
- `@bastani/atomic/workflows` is a library, not just a CLI. Use it directly to build your own TypeScript app that runs your team's workflows.
1246
-
1247
- > **SDK-only users:** you don't need the global `atomic` binary, but you still need the runtime prerequisites — **[Bun](https://bun.sh/) (the SDK does not run on Node.js)**, a terminal multiplexer (tmux on macOS/Linux, psmux on Windows), and at least one authenticated coding agent CLI (`claude`, `opencode`, or `copilot`). See [Prerequisites](#prerequisites) for the "why" and install commands. The SDK spawns the agent CLI at each stage and wraps it in a detachable multiplexer session.
1248
- >
1249
- > **Session management primitives.** The SDK exposes `listSessions`, `getSession`, `stopSession`, `attachSession`, `detachSession`, `getSessionStatus`, `getSessionTranscript`, plus pane-navigation verbs `nextWindow` / `previousWindow` / `gotoOrchestrator` — wire them into your CLI's `session list`, `status`, etc. subcommands as you see fit. Sessions live on the shared `atomic` tmux socket, so a worker CLI built on the primitives, the global `atomic` binary, and `bunx atomic` all see the same runtime state.
1250
- >
1251
- > **Typed errors.** Every error path the SDK throws — missing tmux/psmux/bun, unknown session id, missing `.compile()`, invalid workflow file, `minSDKVersion` mismatch — is a typed class (`MissingDependencyError`, `SessionNotFoundError`, `WorkflowNotCompiledError`, `InvalidWorkflowError`, `IncompatibleSDKError`). Catch them with `instanceof` to render friendly CLI output without parsing message text. See `examples/pane-navigation/cli.ts` for a worked example.
1252
-
1253
- ### Primitives, not a wrapper
1254
-
1255
- The SDK ships pure functions you compose into whatever CLI shape you want:
1256
-
1257
- | Primitive | Purpose |
1258
- | ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1259
- | `defineWorkflow` | Author a workflow with `.for(agent).run(...).compile()`. Pass `source: import.meta.path`. |
1260
- | `createRegistry` | Build an immutable registry of workflows for iteration / lookup. |
1261
- | `listWorkflows(reg)` | Snapshot every workflow in a registry. |
1262
- | `getWorkflow(reg, …)` | Resolve `(agent, name)` → workflow. |
1263
- | `getName / getAgent / getInputSchema / getDescription / getSource / getMinSDKVersion` | Read workflow metadata. |
1264
- | `validateInputs(wf, raw)` | Run the same validation pipeline atomic uses (required, defaults, enum, integer). |
1265
- | `runWorkflow({ workflow, inputs, detach? })` | Spawn the orchestrator tmux session and (optionally) attach. Resolves with `{ id, tmuxSessionName }`. |
1266
- | `listSessions / getSession / stopSession / attachSession / detachSession` | Manage running tmux sessions on the shared atomic socket. |
1267
- | `getSessionStatus / getSessionTranscript` | Read the orchestrator-written status snapshot or per-session messages from disk. |
1268
- | `nextWindow / previousWindow / gotoOrchestrator` | **Pane navigation** — pure tmux verbs that update the session's current-window pointer. Never auto-attach; an attached client sees the change live, otherwise a subsequent `attachSession` lands on the new window. |
1269
- | `MissingDependencyError / SessionNotFoundError / WorkflowNotCompiledError / InvalidWorkflowError / IncompatibleSDKError` | **Typed errors** thrown by the primitives above. Catch with `instanceof` to render friendly CLI messages without parsing message text. |
1270
-
1271
- **Single workflow (most common):**
1272
-
1273
- ```ts
1274
- // src/claude-worker.ts
1275
- import { Command } from "@commander-js/extra-typings";
1276
- import { getInputSchema, runWorkflow } from "@bastani/atomic/workflows";
1277
- import workflow from "./workflows/review-to-merge/claude.ts";
1278
-
1279
- const program = new Command();
1280
- for (const input of getInputSchema(workflow)) {
1281
- program.option(`--${input.name} <value>`, input.description ?? "");
1282
- }
1283
- program.action(async (rawOpts) => {
1284
- const inputs = rawOpts as Record<string, string>;
1285
- await runWorkflow({ workflow, inputs });
1286
- });
1287
- await program.parseAsync();
1288
- ```
1289
-
1290
- Run it:
1291
-
1292
- ```bash
1293
- bun run src/claude-worker.ts --target_branch=release/v2
1294
- ```
1295
-
1296
- **Multiple workflows — iterate a registry:**
1297
-
1298
- ```ts
1299
- // src/cli.ts
1300
- import { Command } from "@commander-js/extra-typings";
1301
- import {
1302
- createRegistry,
1303
- getInputSchema,
1304
- getName,
1305
- listWorkflows,
1306
- runWorkflow,
1307
- } from "@bastani/atomic/workflows";
1308
- import reviewToMerge from "./workflows/review-to-merge/claude.ts";
1309
- import genSpec from "./workflows/gen-spec/claude.ts";
1310
-
1311
- const registry = createRegistry().register(reviewToMerge).register(genSpec);
1312
- const program = new Command("my-app");
1313
-
1314
- for (const wf of listWorkflows(registry)) {
1315
- const sub = program.command(getName(wf)).description(wf.description);
1316
- for (const input of getInputSchema(wf)) {
1317
- sub.option(`--${input.name} <value>`, input.description ?? "");
1318
- }
1319
- sub.action(async (rawOpts) => {
1320
- await runWorkflow({ workflow: wf, inputs: rawOpts as Record<string, string> });
1321
- });
1322
- }
1323
-
1324
- await program.parseAsync();
1325
- ```
1326
-
1327
- See [`examples/multi-workflow/`](./examples/multi-workflow) for a complete runnable version — two Claude workflows (`hello`, `goodbye`) registered under one `cli.ts`.
1328
-
1329
- ### Programmatic invocation
1330
-
1331
- `runWorkflow({ workflow, inputs })` is a plain async function — you don't need a CLI at all:
1332
-
1333
- ```ts
1334
- import { runWorkflow } from "@bastani/atomic/workflows";
1335
- import workflow from "./workflows/review-to-merge/claude.ts";
1336
-
1337
- const { id, tmuxSessionName } = await runWorkflow({
1338
- workflow,
1339
- inputs: { target_branch: "main" },
1340
- detach: true,
1341
- });
1342
- ```
1343
-
1344
- Combine with `getSessionStatus(tmuxSessionName)` and `attachSession(id)` to build your own monitoring UI on top of the SDK.
1345
-
1346
- ### Embedding under a parent CLI — `runWorkflow` inside any Commander tree
1347
-
1348
- The SDK no longer ships a Commander adapter — it doesn't need one. Just call `runWorkflow` from inside any Commander action:
1349
-
1350
- ```ts
1351
- import { Command } from "@commander-js/extra-typings";
1352
- import { getInputSchema, runWorkflow } from "@bastani/atomic/workflows";
1353
- import workflow from "./workflows/deploy/claude.ts";
1354
-
1355
- const program = new Command("my-app");
1356
-
1357
- const deploy = program.command("deploy").description(workflow.description);
1358
- for (const input of getInputSchema(workflow)) {
1359
- deploy.option(`--${input.name} <value>`, input.description ?? "");
1360
- }
1361
- deploy.action(async (rawOpts) => {
1362
- await runWorkflow({ workflow, inputs: rawOpts as Record<string, string> });
1363
- });
1364
-
1365
- program.command("hello").action(() => console.log("hi"));
1366
-
1367
- await program.parseAsync();
1368
- ```
1369
-
1370
- There's no re-entry boilerplate — the SDK ships its own internal orchestrator entry script and re-execs *that* with positional args (`workflowSource`, `agent`, base64-encoded inputs). Your CLI is never re-imported, so there's nothing to guard against orchestrator-mode env vars.
1371
-
1372
- ### `WorkflowPicker` component
1373
-
1374
- The interactive picker (the same one `atomic workflow -a claude` opens) is exposed as a component:
1375
-
1376
- ```ts
1377
- import { WorkflowPicker } from "@bastani/atomic/workflows/components";
1378
- ```
1379
-
1380
- Mount it inside your own OpenTUI app or imperatively via `WorkflowPickerPanel.create({ agent, registry })`.
1381
-
1382
- ### Registry rules
1383
-
1384
- - `createRegistry()` returns an **immutable** registry. Each `.register(wf)` call returns a **new** registry — the original is unchanged. Chain calls to accumulate workflows.
1385
- - Each workflow is keyed by `${agent}/${name}` — the `(agent, name)` pair must be unique. Registering a duplicate throws immediately.
1386
- - Builtin workflows (`ralph`, `deep-research-codebase`, `open-claude-design`) are managed by `atomic`'s internal `createBuiltinRegistry()`. They are reserved — user-registered workflows with the same name will not shadow builtins when running the `atomic` CLI.
1387
-
1388
- ### Input precedence
1389
-
1390
- `runWorkflow({ workflow, inputs })` runs `validateInputs(workflow, inputs)` for you, applying:
1391
-
1392
- 1. `defineWorkflow` default values (on each `WorkflowInput`) when no value is provided
1393
- 2. The first declared enum value when `required: true` and no value is provided
1394
- 3. Whatever you pass in `inputs`
1395
-
1396
- CLI flags compose entirely at the calling-CLI layer — the SDK only sees the final `inputs` map.
1397
-
1398
- ### Builtin workflows via the `atomic` CLI
1399
-
1400
- The `atomic workflow` command runs the built-in registry via the same primitives:
1401
-
1402
- ```bash
1403
- atomic workflow -n ralph -a claude "Build the auth module"
1404
- atomic workflow -n deep-research-codebase -a claude "How does auth work?"
1405
- atomic workflow -n open-claude-design -a claude
1406
- ```
1407
-
1408
- These are not affected by your own `createRegistry()` — they are separate.
1409
-
1410
- ### Migration from 0.x (directory-scanning) and the `createWorkflowCli` wrapper
1411
-
1412
- > Two breaking changes: workflows must declare `source: import.meta.path`, and the `createWorkflowCli` / `toCommand` / `runCli` wrappers were removed in favour of primitives.
1413
-
1414
- 1. **Add `source: import.meta.path`** to every `defineWorkflow({ ... })` call. The SDK uses it to import the workflow module inside the orchestrator child process.
1415
- 2. **Replace `createWorkflowCli(workflow).run()`** with a small Commander (or citty / yargs) entrypoint that calls `runWorkflow({ workflow, inputs })` — see the snippets above. The SDK no longer ships a CLI wrapper.
1416
- 3. **Remove `handleOrchestratorReentry` / `runCli` calls** — the SDK ships its own orchestrator entry script and the dev's CLI is never re-execed.
1417
- 4. **Update invocations**: replace `atomic workflow -n foo -a claude` with `bun run src/claude-worker.ts --<input>=<value>` for your custom workflows. For the Atomic builtin set (`ralph`, `deep-research-codebase`, `open-claude-design`) keep using `atomic workflow -n <name> -a <agent>`.
1418
-
1419
- ---
1420
-
1421
- ## Configuration
1422
-
1423
- ### `.atomic/settings.json`
1424
-
1425
- Resolution order:
1426
-
1427
- 1. Local: `.atomic/settings.json`
1428
- 2. Global: `~/.atomic/settings.json`
1429
-
1430
- ```json
1431
- {
1432
- "$schema": "https://raw.githubusercontent.com/flora131/atomic/main/assets/settings.schema.json",
1433
- "version": 1,
1434
- "scm": "github",
1435
- "providers": {
1436
- "claude": {
1437
- "chatFlags": ["--model", "claude-sonnet-4-6"],
1438
- "envVars": { "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "16384" }
1439
- }
1440
- }
1441
- }
1442
- ```
1443
-
1444
-
1445
- | Field | Type | Description |
1446
- | ----------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------- |
1447
- | `$schema` | string | JSON Schema URL for editor autocomplete |
1448
- | `version` | number | Config schema version (currently `1`) |
1449
- | `scm` | string | Source control provider — `github`, `azure-devops`, or `sapling`. Reconciles the GitHub / Azure DevOps MCP servers in agent configs on startup. |
1450
- | `providers` | object | Per-provider overrides for `claude`, `opencode`, `copilot`. `chatFlags` replaces built-in defaults entirely; `envVars` are merged |
1451
-
1452
- > Model selection and reasoning effort are managed by each underlying agent CLI (e.g. Claude Code's `/model`), not Atomic. Atomic's chat command spawns the agent's native TUI — use the agent's own controls.
1453
-
1454
- ### Agent-Specific Files
1455
-
1456
- | Agent | Folder | Skills | Context File |
1457
- | -------------- | ------------ | ----------------------------------------------- | ------------ |
1458
- | Claude Code | `.claude/` | `.claude/skills/` (symlink → `.agents/skills/`) | `CLAUDE.md` |
1459
- | OpenCode | `.opencode/` | `.agents/skills/` | `AGENTS.md` |
1460
- | GitHub Copilot | `.github/` | `.agents/skills/` | `AGENTS.md` |
1461
-
1462
- All three agents share the same skill set via `.agents/skills/`. Claude Code accesses them through a `.claude/skills/` symlink.
1463
-
1464
- ---
1465
-
1466
- ## Updating & Uninstalling
1467
-
1468
- ### Update
1469
-
1470
- ```bash
1471
- bun update -g @bastani/atomic # latest stable
1472
- bun install -g @bastani/atomic@next # prerelease
1473
- ```
1474
-
1475
- The first `atomic` run after upgrading auto-syncs tooling deps and global skills — no separate command needed.
1476
-
1477
- ### Uninstall
1478
-
1479
- ```bash
1480
- bun remove -g @bastani/atomic
1481
- ```
1482
-
1483
- <details>
1484
- <summary><b>Also remove global config and cached agent configs</b></summary>
1485
-
1486
- ```bash
1487
- # macOS / Linux
1488
- rm -rf ~/.atomic/
1489
-
1490
- # Windows PowerShell
1491
- Remove-Item -Path "$env:USERPROFILE\.atomic" -Recurse -Force
1492
- ```
1493
-
1494
- </details>
1495
-
1496
- ---
1497
-
1498
- ## Troubleshooting
1499
-
1500
- <details>
1501
- <summary><b>Git identity error</b></summary>
1502
-
1503
- ```bash
1504
- git config --global user.name "Your Name"
1505
- git config --global user.email "you@example.com"
1506
- ```
1507
-
1508
- </details>
1509
-
1510
- <details>
1511
- <summary><b>Windows: agents fail to spawn</b></summary>
1512
-
1513
- Ensure the agent CLI is in your PATH. Atomic uses `Bun.which()`, which handles `.cmd`, `.exe`, and `.bat` extensions automatically.
1514
-
1515
- </details>
1516
-
1517
- ---
1518
-
1519
- ## FAQ
1520
-
1521
- <details>
1522
- <summary><b>Why not markdown, a coding agent alone, or a general agent framework?</b></summary>
1523
- Markdown is great for guidance: conventions, commands, repo notes, and checklists. Use Claude Code, OpenCode, or Copilot CLI directly for normal single-session coding. Atomic is for the point where the work needs branching, retries, parallel sessions, state, human approval, sandboxed execution, or reliable handoff between stages. General agent frameworks can do some of this, but you often rebuild coding-agent basics yourself: file editing, terminal interaction, MCP setup, hooks, session handling, and repo-specific context. Atomic starts from production coding agents and adds the workflow layer around them.
1524
- </details>
1525
-
1526
- <details>
1527
- <summary><b>How does Atomic differ from Spec-Kit?</b></summary>
1528
-
1529
- [Spec Kit](https://github.com/github/spec-kit) is GitHub's toolkit for "Spec-Driven Development." Both improve AI-assisted development, but solve different problems:
1530
-
1531
- **In short:** Spec-Kit works well for greenfield projects where you start from a spec and use a single Copilot session to generate code. Atomic is built for the harder case — large existing codebases where you need to research what's already there before changing anything. Atomic gives you multi-session pipelines with isolated context windows, deterministic execution, and support for Claude Code, OpenCode, and Copilot CLI instead of just one agent.
1532
-
1533
- | Aspect | Spec-Kit | Atomic |
1534
- | ------------------------ | -------------------------------------------- | --------------------------------------------------------------------------------------------------- |
1535
- | **Focus** | Greenfield projects with spec-first workflow | Large existing codebases + greenfield — research-first or spec-first |
1536
- | **First Step** | Define project principles and specs | Analyze existing architecture with parallel research sub-agents |
1537
- | **Workflow Definition** | Shell scripts and markdown templates | TypeScript Workflow SDK (`defineWorkflow()` → `.run()` → `.compile()`) with deterministic execution |
1538
- | **Session Management** | Single agent session | Multi-session pipelines — sequential and parallel — each in isolated context windows |
1539
- | **Data Flow** | Manual — copy output between steps | Controlled transcript passing via `ctx.transcript()` and `ctx.getMessages()` |
1540
- | **Agent Support** | GitHub Copilot CLI | Claude Code + OpenCode + Copilot CLI — switch with a flag |
1541
- | **Sub-Agents** | Single general-purpose agent | 12 specialized sub-agents with scoped tools and isolated contexts |
1542
- | **Skills** | Not available | 57 built-in skills (development, design, docs, agent architecture) |
1543
- | **Autonomous Execution** | Not available | Ralph — multi-hour autonomous sessions with plan/implement/review/debug loop |
1544
- | **Execution Guarantees** | Non-deterministic | Deterministic — strict step ordering, frozen definitions, controlled transcript access |
1545
- | **Isolation** | Not addressed | Devcontainer features for containerized execution |
1546
-
1547
- </details>
1548
-
1549
- <details>
1550
- <summary><b>How does Atomic differ from DeerFlow?</b></summary>
1551
-
1552
- [DeerFlow](https://github.com/bytedance/deer-flow) is ByteDance's agent runtime built on LangGraph/LangChain. Both can run multi-agent work, but take different approaches:
1553
-
1554
- **In short:** DeerFlow is a general-purpose agent system with a web UI. Atomic is narrowly focused on coding workflows. The key difference is that Atomic runs on top of production coding agents (Claude Code, OpenCode, Copilot CLI) rather than reimplementing coding tools through a generic API — you get each agent's native file editing, permissions, MCP integrations, and hooks out of the box. Atomic also gives you deterministic execution, which matters when encoding a team's dev process.
1555
-
1556
- | Aspect | DeerFlow | Atomic |
1557
- | ----------------------- | ----------------------------------------------- | --------------------------------------------------------------------------------------------- |
1558
- | **Runtime** | Python (LangGraph) | TypeScript (Bun) |
1559
- | **Agent SDKs** | OpenAI-compatible API | Claude Code + OpenCode + Copilot CLI native SDKs — write raw SDK code in each session |
1560
- | **Focus** | General-purpose agent tasks (research, reports) | Coding-specific: research, spec, implement, review, debug |
1561
- | **Workflow Definition** | LangGraph state machines with graph nodes | TypeScript Workflow SDK — `defineWorkflow()` → `.run()` → `.compile()` |
1562
- | **Execution Model** | DAG-based with conditional edges | Deterministic — strict step ordering, frozen definitions, controlled transcript passing |
1563
- | **Parallelism** | Via LangGraph branch nodes | Native parallel sessions via `Promise.all()` with `ctx.session()` in isolated context windows |
1564
- | **Sub-Agents** | Researcher, coder, reporter nodes | 12 specialized sub-agents with scoped tools (planner, worker, reviewer, debugger, etc.) |
1565
- | **Skills** | Not available | 57 built-in skills auto-invoked by context |
1566
- | **Isolation** | Sandbox containers | Devcontainer features + git worktrees |
1567
- | **Interface** | Web UI (Streamlit) | Terminal chat with tmux-based session management |
1568
- | **Autonomous** | Not available | Ralph — bounded iteration with plan/implement/review/debug loop |
1569
- | **Distribution** | `pip install` + local server | `bun install -g` or devcontainer features |
1570
-
1571
- </details>
1572
-
1573
- <details>
1574
- <summary><b>How does Atomic differ from Hermes Agent?</b></summary>
1575
-
1576
- [Hermes Agent](https://github.com/NousResearch/hermes-agent) is Nous Research's general-purpose AI agent with a self-improving learning loop. Both are open source agent projects, but serve different use cases:
1577
-
1578
- **In short:** Hermes is a broad AI assistant that learns across sessions and connects to messaging platforms. Atomic is coding-specific workflow software for engineering teams. It lets you encode your development process as deterministic TypeScript workflows that run identically across team members, machines, and CI. Atomic inherits production-hardened tools from Claude Code, OpenCode, and Copilot CLI — including their permission systems, MCP integrations, and hooks — giving you two independent security boundaries (devcontainer isolation + agent permissions). Fresh context per session keeps output sharp over multi-hour tasks. Developer-authored skills don't drift the way auto-generated ones can.
1579
-
1580
- | Aspect | Hermes Agent | Atomic |
1581
- | ------------------------- | -------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
1582
- | **Focus** | General-purpose AI assistant (coding, messaging, smart home, research) | Coding-specific: multi-session workflows on coding agents |
1583
- | **Runtime** | Python 3.11+ (uv) | TypeScript (Bun) |
1584
- | **Agent SDKs** | OpenAI-compatible API as universal adapter (200+ models via OpenRouter) | Claude Code + OpenCode + Copilot CLI native SDKs — write raw SDK code in each session |
1585
- | **Workflow Definition** | Cron scheduler + subagent delegation | TypeScript Workflow SDK — `defineWorkflow()` → `.run()` → `.compile()` |
1586
- | **Session Management** | Single conversation loop with context compression | Multi-session pipelines — sequential and parallel — each in isolated context windows |
1587
- | **Data Flow** | In-context within a single conversation | Controlled transcript passing via `ctx.transcript()` and `ctx.getMessages()` |
1588
- | **Self-Improvement** | Closed learning loop — auto-creates skills from experience, persistent user model via Honcho | Skills authored by developers; memory via CLAUDE.md / AGENTS.md context files |
1589
- | **Sub-Agents** | `delegate_task` spawns isolated subagents | 12 specialized sub-agents with scoped tools and model tiers (Opus, Sonnet, Haiku) |
1590
- | **Skills** | 40+ tools + community Skills Hub (agentskills.io) | 57 built-in skills (development, design, docs, agent architecture) |
1591
- | **Interface** | Terminal TUI + multi-platform messaging gateway (Telegram, Discord, Slack, WhatsApp, etc.) | Terminal chat with tmux-based session management |
1592
- | **Isolation** | Six terminal backends (local, Docker, SSH, Daytona, Singularity, Modal) | Devcontainer features + git worktrees |
1593
- | **Autonomous Execution** | Cron scheduler with inactivity-based timeouts | Ralph — bounded iteration with plan/implement/review/debug loop |
1594
- | **Execution Guarantees** | Non-deterministic conversation loop | Deterministic — strict step ordering, frozen definitions, controlled transcript access |
1595
- | **Team Process Encoding** | Personal assistant — no concept of team-shared workflows | Encode your team's dev process as TypeScript — repeatable across members, projects, and CI |
1596
- | **Coding Agent Tooling** | Reimplements file/terminal tools from scratch via `model_tools.py` | Inherits production-hardened tool ecosystems from Claude Code, OpenCode, and Copilot CLI (file editing, permissions, MCP, hooks) |
1597
- | **Reproducibility** | Conversation loop produces different execution paths each run | Frozen workflow definitions run identically across machines, team members, and CI pipelines |
1598
- | **Context Quality** | Lossy compression within a single conversation — degrades on long coding tasks | Fresh context window per session with only distilled transcripts passed forward — stays sharp over multi-hour tasks |
1599
- | **Skill Authoring** | Auto-created skills may drift, accumulate errors, or encode bad patterns over time | Developer-authored, version-controlled skills — intentional and auditable |
1600
- | **Security Model** | Command approval + container backends (single boundary) | Devcontainer isolation + coding agent permission systems (Claude Code permissions, Copilot safeguards) — two independent security boundaries |
1601
- | **Distribution** | `uv` / `pip` | `bun install -g` or devcontainer features |
1602
-
1603
- </details>
1604
-
1605
- ---
1606
-
1607
- ## Contributing
1608
-
1609
- See [DEV_SETUP.md](DEV_SETUP.md) for development setup, testing guidelines, and contribution workflow.
1610
-
1611
- ---
1612
-
1613
- ## License
1614
-
1615
- MIT License — see [LICENSE](LICENSE) for details.
1616
-
1617
- ## Credits
1618
-
1619
- - [Superpowers](https://github.com/obra/superpowers)
1620
- - [Anthropic Skills](https://github.com/anthropics/skills)
1621
- - [Ralph Wiggum Method](https://ghuntley.com/ralph/)
1622
- - [OpenAI Codex Cookbook](https://github.com/openai/openai-cookbook)
1623
- - [HumanLayer](https://github.com/humanlayer/humanlayer)
1624
- - [Impeccable](https://github.com/pbakaus/impeccable)