@skaile/workspaces 0.25.0 → 0.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (562) hide show
  1. package/CHANGELOG.md +271 -0
  2. package/README.md +2 -2
  3. package/dist/{asset-feeds-77KLWCBP.js → asset-feeds-DGZO27M7.js} +20 -12
  4. package/dist/asset-feeds-DGZO27M7.js.map +1 -0
  5. package/dist/asset-manager/index.js +12 -11
  6. package/dist/asset-manager/installer.js +11 -10
  7. package/dist/asset-manager/renderers.js +2 -2
  8. package/dist/asset-manager/src/index.d.ts +6 -7
  9. package/dist/asset-manager/src/index.d.ts.map +1 -1
  10. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  11. package/dist/bridge/drivers/claude-sdk.js +14 -7
  12. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  13. package/dist/bridge/drivers/codex.js +8 -34
  14. package/dist/bridge/drivers/codex.js.map +1 -1
  15. package/dist/bridge/drivers/continue.d.ts +2 -0
  16. package/dist/bridge/drivers/continue.js +103 -0
  17. package/dist/bridge/drivers/continue.js.map +1 -0
  18. package/dist/bridge/drivers/echo.js +1 -1
  19. package/dist/bridge/drivers/gemini.d.ts +2 -0
  20. package/dist/bridge/drivers/gemini.js +10 -0
  21. package/dist/bridge/drivers/gemini.js.map +1 -0
  22. package/dist/bridge/drivers/goose.d.ts +2 -0
  23. package/dist/bridge/drivers/goose.js +88 -0
  24. package/dist/bridge/drivers/goose.js.map +1 -0
  25. package/dist/bridge/drivers/omp.js +64 -50
  26. package/dist/bridge/drivers/omp.js.map +1 -1
  27. package/dist/bridge/drivers/opencode.d.ts +2 -0
  28. package/dist/bridge/drivers/opencode.js +99 -0
  29. package/dist/bridge/drivers/opencode.js.map +1 -0
  30. package/dist/bridge/drivers/qwen.d.ts +2 -0
  31. package/dist/bridge/drivers/qwen.js +57 -0
  32. package/dist/bridge/drivers/qwen.js.map +1 -0
  33. package/dist/bridge/index.js +4 -4
  34. package/dist/bridge/src/drivers/_subprocess-cli.d.ts +136 -0
  35. package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +1 -0
  36. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  37. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  38. package/dist/bridge/src/drivers/continue.d.ts +43 -0
  39. package/dist/bridge/src/drivers/continue.d.ts.map +1 -0
  40. package/dist/bridge/src/drivers/gemini.d.ts +55 -0
  41. package/dist/bridge/src/drivers/gemini.d.ts.map +1 -0
  42. package/dist/bridge/src/drivers/goose.d.ts +42 -0
  43. package/dist/bridge/src/drivers/goose.d.ts.map +1 -0
  44. package/dist/bridge/src/drivers/omp.d.ts +20 -4
  45. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  46. package/dist/bridge/src/drivers/opencode.d.ts +43 -0
  47. package/dist/bridge/src/drivers/opencode.d.ts.map +1 -0
  48. package/dist/bridge/src/drivers/qwen.d.ts +39 -0
  49. package/dist/bridge/src/drivers/qwen.d.ts.map +1 -0
  50. package/dist/bridge/src/error-classifier.d.ts +17 -0
  51. package/dist/bridge/src/error-classifier.d.ts.map +1 -1
  52. package/dist/bridge/src/models.d.ts +1 -1
  53. package/dist/bridge/src/models.d.ts.map +1 -1
  54. package/dist/bridge/src/provider-endpoints.d.ts +16 -0
  55. package/dist/bridge/src/provider-endpoints.d.ts.map +1 -0
  56. package/dist/bridge/src/registry.d.ts.map +1 -1
  57. package/dist/bridge/src/validation.d.ts +1 -1
  58. package/dist/bridge/src/validation.d.ts.map +1 -1
  59. package/dist/{chunk-GL45UNVS.js → chunk-2FS4FPZ7.js} +3 -3
  60. package/dist/{chunk-GL45UNVS.js.map → chunk-2FS4FPZ7.js.map} +1 -1
  61. package/dist/{chunk-4FJE6BI6.js → chunk-2NOE4AGD.js} +3 -3
  62. package/dist/{chunk-4FJE6BI6.js.map → chunk-2NOE4AGD.js.map} +1 -1
  63. package/dist/{chunk-3QTZWPGH.js → chunk-3QQSSRYN.js} +168 -90
  64. package/dist/chunk-3QQSSRYN.js.map +1 -0
  65. package/dist/{chunk-4FADEVBN.js → chunk-3ZER5DST.js} +6 -6
  66. package/dist/chunk-3ZER5DST.js.map +1 -0
  67. package/dist/chunk-5RBPPBEK.js +110 -0
  68. package/dist/chunk-5RBPPBEK.js.map +1 -0
  69. package/dist/chunk-5V5KZQIC.js +445 -0
  70. package/dist/chunk-5V5KZQIC.js.map +1 -0
  71. package/dist/{chunk-LSGAYQ2E.js → chunk-5YO3H5Q4.js} +3 -3
  72. package/dist/{chunk-LSGAYQ2E.js.map → chunk-5YO3H5Q4.js.map} +1 -1
  73. package/dist/{chunk-JDX54X4Y.js → chunk-7GWYRVAX.js} +12 -9
  74. package/dist/chunk-7GWYRVAX.js.map +1 -0
  75. package/dist/{chunk-B4ZXBH57.js → chunk-A4ASAIKK.js} +59 -13
  76. package/dist/chunk-A4ASAIKK.js.map +1 -0
  77. package/dist/{chunk-M5TE6YI5.js → chunk-AKSR434V.js} +10 -52
  78. package/dist/chunk-AKSR434V.js.map +1 -0
  79. package/dist/{chunk-KOVLSBXK.js → chunk-BMQKMOQY.js} +81 -79
  80. package/dist/chunk-BMQKMOQY.js.map +1 -0
  81. package/dist/{chunk-FJFHJBGS.js → chunk-BUL5H6J7.js} +9 -9
  82. package/dist/chunk-BUL5H6J7.js.map +1 -0
  83. package/dist/{chunk-GZWJGNNN.js → chunk-DEYYRFQU.js} +3 -3
  84. package/dist/chunk-DEYYRFQU.js.map +1 -0
  85. package/dist/{chunk-SETTLPBD.js → chunk-DGM74UP4.js} +3 -3
  86. package/dist/{chunk-SETTLPBD.js.map → chunk-DGM74UP4.js.map} +1 -1
  87. package/dist/{chunk-UD4ZLXGS.js → chunk-FWHOU3CX.js} +67 -35
  88. package/dist/chunk-FWHOU3CX.js.map +1 -0
  89. package/dist/{chunk-WSZAFRQL.js → chunk-GYPA2Q7F.js} +6 -5
  90. package/dist/chunk-GYPA2Q7F.js.map +1 -0
  91. package/dist/{chunk-WIAHJOMG.js → chunk-IEJ5IOC3.js} +10 -2
  92. package/dist/chunk-IEJ5IOC3.js.map +1 -0
  93. package/dist/chunk-IERB3UXJ.js +215 -0
  94. package/dist/chunk-IERB3UXJ.js.map +1 -0
  95. package/dist/{chunk-FVTV7M76.js → chunk-IFGTRL2I.js} +3 -3
  96. package/dist/chunk-IFGTRL2I.js.map +1 -0
  97. package/dist/{chunk-KT3CK26V.js → chunk-JIQLLZ65.js} +203 -39
  98. package/dist/chunk-JIQLLZ65.js.map +1 -0
  99. package/dist/{chunk-XVL22AWE.js → chunk-M4KLIEIJ.js} +114 -63
  100. package/dist/chunk-M4KLIEIJ.js.map +1 -0
  101. package/dist/{chunk-6FNCZYJY.js → chunk-MBOR7D65.js} +3 -3
  102. package/dist/{chunk-6FNCZYJY.js.map → chunk-MBOR7D65.js.map} +1 -1
  103. package/dist/{chunk-BJWUSHC4.js → chunk-MZDXEFXF.js} +30 -20
  104. package/dist/chunk-MZDXEFXF.js.map +1 -0
  105. package/dist/{chunk-QAVZOJCV.js → chunk-OVRSNIKJ.js} +2 -2
  106. package/dist/chunk-OVRSNIKJ.js.map +1 -0
  107. package/dist/{chunk-DQWREFRQ.js → chunk-PAYAFNXG.js} +22 -3
  108. package/dist/chunk-PAYAFNXG.js.map +1 -0
  109. package/dist/{chunk-D3VO6WNC.js → chunk-PRLD7EXG.js} +3 -3
  110. package/dist/chunk-PRLD7EXG.js.map +1 -0
  111. package/dist/{chunk-NELZIQ2E.js → chunk-QDJKE557.js} +20 -3
  112. package/dist/chunk-QDJKE557.js.map +1 -0
  113. package/dist/{chunk-QXC62DOF.js → chunk-SF4GWVR5.js} +21 -9
  114. package/dist/chunk-SF4GWVR5.js.map +1 -0
  115. package/dist/{chunk-IPUYL6TD.js → chunk-TV72ZJYN.js} +8 -5
  116. package/dist/{chunk-IPUYL6TD.js.map → chunk-TV72ZJYN.js.map} +1 -1
  117. package/dist/{chunk-4QVFQEY2.js → chunk-UAW7VRAL.js} +2 -2
  118. package/dist/{chunk-4QVFQEY2.js.map → chunk-UAW7VRAL.js.map} +1 -1
  119. package/dist/chunk-UBCZVONU.js +28 -0
  120. package/dist/chunk-UBCZVONU.js.map +1 -0
  121. package/dist/{chunk-2XY6732A.js → chunk-UIZKIUC6.js} +6 -6
  122. package/dist/chunk-UIZKIUC6.js.map +1 -0
  123. package/dist/{chunk-ICS76R4T.js → chunk-W7W66MDZ.js} +10 -8
  124. package/dist/chunk-W7W66MDZ.js.map +1 -0
  125. package/dist/{chunk-DCAWIRD6.js → chunk-WRRYESHC.js} +152 -187
  126. package/dist/chunk-WRRYESHC.js.map +1 -0
  127. package/dist/{chunk-XMP6XTMF.js → chunk-XHBPQ7QP.js} +450 -207
  128. package/dist/chunk-XHBPQ7QP.js.map +1 -0
  129. package/dist/chunk-Z3XXKR5E.js +88 -0
  130. package/dist/chunk-Z3XXKR5E.js.map +1 -0
  131. package/dist/{chunk-KLNL7QHN.js → chunk-ZAP2BDHG.js} +30 -5
  132. package/dist/chunk-ZAP2BDHG.js.map +1 -0
  133. package/dist/{chunk-6VTG73UY.js → chunk-ZEKWHJBB.js} +52 -2
  134. package/dist/chunk-ZEKWHJBB.js.map +1 -0
  135. package/dist/{chunk-GCJXPUHG.js → chunk-ZONCCO5N.js} +9 -4
  136. package/dist/chunk-ZONCCO5N.js.map +1 -0
  137. package/dist/cli/index.js +618 -482
  138. package/dist/cli/index.js.map +1 -1
  139. package/dist/cli/src/asset-feeds.d.ts +14 -1
  140. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  141. package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
  142. package/dist/cli/src/commands/config.d.ts.map +1 -1
  143. package/dist/cli/src/commands/connector.d.ts +7 -0
  144. package/dist/cli/src/commands/connector.d.ts.map +1 -1
  145. package/dist/cli/src/commands/flow.d.ts +3 -2
  146. package/dist/cli/src/commands/flow.d.ts.map +1 -1
  147. package/dist/cli/src/commands/manage.d.ts +46 -23
  148. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  149. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  150. package/dist/cli/src/commands/run.d.ts.map +1 -1
  151. package/dist/cli/src/flow-discovery.d.ts +24 -0
  152. package/dist/cli/src/flow-discovery.d.ts.map +1 -0
  153. package/dist/cli/src/helpers.d.ts +10 -1
  154. package/dist/cli/src/helpers.d.ts.map +1 -1
  155. package/dist/cli/src/open-registry.d.ts +2 -2
  156. package/dist/cli/src/paths.d.ts +26 -9
  157. package/dist/cli/src/paths.d.ts.map +1 -1
  158. package/dist/cli/src/skill-walker.d.ts +9 -5
  159. package/dist/cli/src/skill-walker.d.ts.map +1 -1
  160. package/dist/connectors/config.js +9 -8
  161. package/dist/connectors/index.js +14 -13
  162. package/dist/connectors/rclone-config.js +1 -1
  163. package/dist/connectors/src/connector-manager.d.ts +24 -2
  164. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  165. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  166. package/dist/connectors/src/connector-registry.d.ts +3 -3
  167. package/dist/connectors/src/credential-helper-script.d.ts.map +1 -1
  168. package/dist/connectors/src/index.d.ts +4 -2
  169. package/dist/connectors/src/index.d.ts.map +1 -1
  170. package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
  171. package/dist/connectors/src/mount-placeholder.d.ts +68 -0
  172. package/dist/connectors/src/mount-placeholder.d.ts.map +1 -0
  173. package/dist/connectors/src/rclone-config/googledrive.d.ts +1 -1
  174. package/dist/core/discovery.js +1 -1
  175. package/dist/core/index.js +8 -7
  176. package/dist/core/manifest.js +2 -2
  177. package/dist/core/models.js +1 -1
  178. package/dist/core/publish-manifest.d.ts +2 -0
  179. package/dist/core/publish-manifest.js +5 -0
  180. package/dist/core/publish-manifest.js.map +1 -0
  181. package/dist/core/runtime-assets.js +5 -4
  182. package/dist/core/src/discovery.d.ts +27 -0
  183. package/dist/core/src/discovery.d.ts.map +1 -1
  184. package/dist/core/src/index.d.ts +8 -5
  185. package/dist/core/src/index.d.ts.map +1 -1
  186. package/dist/core/src/lock.d.ts.map +1 -1
  187. package/dist/core/src/manifest-yaml-editor.d.ts +62 -0
  188. package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -0
  189. package/dist/core/src/models.d.ts +6 -0
  190. package/dist/core/src/models.d.ts.map +1 -1
  191. package/dist/core/src/publish-manifest.d.ts +160 -0
  192. package/dist/core/src/publish-manifest.d.ts.map +1 -0
  193. package/dist/core/src/repo-manager.d.ts +9 -1
  194. package/dist/core/src/repo-manager.d.ts.map +1 -1
  195. package/dist/core/src/runtime-assets.d.ts +80 -29
  196. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  197. package/dist/core/src/walker.d.ts +19 -6
  198. package/dist/core/src/walker.d.ts.map +1 -1
  199. package/dist/core/src/workspace-config.d.ts +19 -37
  200. package/dist/core/src/workspace-config.d.ts.map +1 -1
  201. package/dist/core/src/workspace-yaml-editor.d.ts +1 -15
  202. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  203. package/dist/core/workspace-config.js +4 -3
  204. package/dist/deploy/index.js +51 -80
  205. package/dist/deploy/index.js.map +1 -1
  206. package/dist/deploy/src/targets/container-runtime.d.ts +1 -1
  207. package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
  208. package/dist/deploy/src/targets/local.d.ts.map +1 -1
  209. package/dist/deploy/src/targets/nix.d.ts.map +1 -1
  210. package/dist/deploy/src/targets/process-handle.d.ts +7 -5
  211. package/dist/deploy/src/targets/process-handle.d.ts.map +1 -1
  212. package/dist/discovery/index.js +5 -4
  213. package/dist/discovery/src/discover-manifest.d.ts +3 -2
  214. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  215. package/dist/discovery/src/discover.d.ts +2 -2
  216. package/dist/discovery/src/discover.d.ts.map +1 -1
  217. package/dist/discovery/src/index.d.ts +1 -1
  218. package/dist/discovery/src/index.d.ts.map +1 -1
  219. package/dist/discovery/src/source-config.d.ts +53 -12
  220. package/dist/discovery/src/source-config.d.ts.map +1 -1
  221. package/dist/discovery/src/tree-entries.d.ts +2 -2
  222. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  223. package/dist/{ensure-sources-7MOOKY3K.js → ensure-sources-KQQEUDKM.js} +15 -13
  224. package/dist/ensure-sources-KQQEUDKM.js.map +1 -0
  225. package/dist/factory-assets/.skaile-source.yaml +6 -0
  226. package/dist/factory-assets/README.md +36 -0
  227. package/dist/factory-assets/bundles/workspaces-authoring/workspaces-authoring.bundle.yaml +9 -0
  228. package/dist/factory-assets/connectors/deploy/CONNECTOR.md +41 -0
  229. package/dist/{base-assets → factory-assets}/connectors/deploy/adapter.d.ts +2 -2
  230. package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -0
  231. package/dist/factory-assets/connectors/deploy.js +22 -0
  232. package/dist/factory-assets/connectors/devserver/CONNECTOR.md +44 -0
  233. package/dist/{base-assets → factory-assets}/connectors/devserver/adapter.d.ts +2 -2
  234. package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -0
  235. package/dist/factory-assets/connectors/devserver.js +22 -0
  236. package/dist/factory-assets/connectors/flow/CONNECTOR.md +47 -0
  237. package/dist/{base-assets → factory-assets}/connectors/flow/adapter.d.ts +2 -2
  238. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -0
  239. package/dist/factory-assets/connectors/flow/adapter.js +22 -0
  240. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -0
  241. package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-kind-provider.d.ts +1 -1
  242. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -0
  243. package/dist/factory-assets/connectors/flow/engine/flow-manifest.d.ts.map +1 -0
  244. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -0
  245. package/dist/factory-assets/connectors/flow/engine/loader.d.ts.map +1 -0
  246. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -0
  247. package/dist/factory-assets/connectors/flow/engine.js +15 -0
  248. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -0
  249. package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.d.ts +5 -5
  250. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -0
  251. package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js +1 -1
  252. package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.d.ts +8 -8
  253. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -0
  254. package/dist/factory-assets/connectors/flow/run-flow.js +25 -0
  255. package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.d.ts +2 -2
  256. package/dist/factory-assets/connectors/flow/stimulus-driver.d.ts.map +1 -0
  257. package/dist/factory-assets/connectors/flow/stimulus-driver.js +4 -0
  258. package/dist/factory-assets/connectors/flow.js +22 -0
  259. package/dist/factory-assets/connectors/git/CONNECTOR.md +145 -0
  260. package/dist/{base-assets → factory-assets}/connectors/git/driver.d.ts +2 -2
  261. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -0
  262. package/dist/factory-assets/connectors/git.js +22 -0
  263. package/dist/factory-assets/connectors/gmail/CONNECTOR.md +50 -0
  264. package/dist/{base-assets → factory-assets}/connectors/gmail/adapter.d.ts +2 -2
  265. package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -0
  266. package/dist/factory-assets/connectors/gmail.js +22 -0
  267. package/dist/factory-assets/connectors/googledrive/CONNECTOR.md +150 -0
  268. package/dist/{base-assets → factory-assets}/connectors/googledrive/driver.d.ts +2 -2
  269. package/dist/factory-assets/connectors/googledrive/driver.d.ts.map +1 -0
  270. package/dist/factory-assets/connectors/googledrive.js +22 -0
  271. package/dist/factory-assets/connectors/local/CONNECTOR.md +40 -0
  272. package/dist/{base-assets → factory-assets}/connectors/local/driver.d.ts +2 -2
  273. package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -0
  274. package/dist/factory-assets/connectors/local.js +22 -0
  275. package/dist/factory-assets/connectors/mattermost/CONNECTOR.md +65 -0
  276. package/dist/{base-assets → factory-assets}/connectors/mattermost/adapter.d.ts +2 -2
  277. package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -0
  278. package/dist/factory-assets/connectors/mattermost.js +22 -0
  279. package/dist/factory-assets/connectors/memory/CONNECTOR.md +40 -0
  280. package/dist/{base-assets → factory-assets}/connectors/memory/adapter.d.ts +2 -2
  281. package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -0
  282. package/dist/factory-assets/connectors/memory.js +22 -0
  283. package/dist/factory-assets/connectors/minio/CONNECTOR.md +68 -0
  284. package/dist/{base-assets → factory-assets}/connectors/minio/adapter.d.ts +2 -2
  285. package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -0
  286. package/dist/factory-assets/connectors/minio.js +22 -0
  287. package/dist/factory-assets/connectors/postgres/CONNECTOR.md +46 -0
  288. package/dist/{base-assets → factory-assets}/connectors/postgres/adapter.d.ts +2 -2
  289. package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -0
  290. package/dist/factory-assets/connectors/postgres.js +22 -0
  291. package/dist/factory-assets/connectors/s3/CONNECTOR.md +76 -0
  292. package/dist/{base-assets → factory-assets}/connectors/s3/driver.d.ts +2 -2
  293. package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -0
  294. package/dist/factory-assets/connectors/s3.js +22 -0
  295. package/dist/factory-assets/connectors/sharepoint/CONNECTOR.md +181 -0
  296. package/dist/{base-assets → factory-assets}/connectors/sharepoint/driver.d.ts +2 -2
  297. package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -0
  298. package/dist/factory-assets/connectors/sharepoint.js +22 -0
  299. package/dist/factory-assets/connectors/sqlite/CONNECTOR.md +44 -0
  300. package/dist/{base-assets → factory-assets}/connectors/sqlite/adapter.d.ts +2 -2
  301. package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -0
  302. package/dist/factory-assets/connectors/sqlite.js +22 -0
  303. package/dist/factory-assets/connectors/static-server/CONNECTOR.md +41 -0
  304. package/dist/{base-assets → factory-assets}/connectors/static-server/adapter.d.ts +2 -2
  305. package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -0
  306. package/dist/factory-assets/connectors/static-server.js +22 -0
  307. package/dist/factory-assets/connectors/tunnel/CONNECTOR.md +40 -0
  308. package/dist/{base-assets → factory-assets}/connectors/tunnel/adapter.d.ts +2 -2
  309. package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -0
  310. package/dist/factory-assets/connectors/tunnel.js +22 -0
  311. package/dist/factory-assets/connectors/webdav/CONNECTOR.md +139 -0
  312. package/dist/{base-assets → factory-assets}/connectors/webdav/driver.d.ts +2 -2
  313. package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -0
  314. package/dist/factory-assets/connectors/webdav.js +22 -0
  315. package/dist/factory-assets/connectors/xstate/CONNECTOR.md +57 -0
  316. package/dist/{base-assets → factory-assets}/connectors/xstate/adapter.d.ts +2 -2
  317. package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -0
  318. package/dist/factory-assets/connectors/xstate-store/CONNECTOR.md +48 -0
  319. package/dist/{base-assets → factory-assets}/connectors/xstate-store/adapter.d.ts +2 -2
  320. package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -0
  321. package/dist/factory-assets/connectors/xstate-store.js +22 -0
  322. package/dist/factory-assets/connectors/xstate.js +22 -0
  323. package/dist/{base-assets → factory-assets}/index.d.ts +1 -1
  324. package/dist/factory-assets/index.d.ts.map +1 -0
  325. package/dist/{base-assets → factory-assets}/index.js +1 -1
  326. package/dist/factory-assets/index.js.map +1 -0
  327. package/dist/factory-assets/skaile.manifest.yaml +25 -0
  328. package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +176 -0
  329. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +243 -0
  330. package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +197 -0
  331. package/dist/factory-assets/skills/manifest-compliance/SKILL.md +140 -0
  332. package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +239 -0
  333. package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +168 -0
  334. package/dist/{flows-DYFTPCPM.js → flows-L3GHQD7F.js} +4 -4
  335. package/dist/{flows-DYFTPCPM.js.map → flows-L3GHQD7F.js.map} +1 -1
  336. package/dist/helpers-F4NZ66VD.js +4 -0
  337. package/dist/{helpers-LTN3HMD3.js.map → helpers-F4NZ66VD.js.map} +1 -1
  338. package/dist/library/index.js +12 -10
  339. package/dist/library/install.d.ts +2 -0
  340. package/dist/library/install.js +16 -0
  341. package/dist/library/install.js.map +1 -0
  342. package/dist/library/src/install/index.d.ts +3 -0
  343. package/dist/library/src/install/index.d.ts.map +1 -0
  344. package/dist/library/src/library.d.ts +2 -0
  345. package/dist/library/src/library.d.ts.map +1 -1
  346. package/dist/library/src/local/library.d.ts +2 -0
  347. package/dist/library/src/local/library.d.ts.map +1 -1
  348. package/dist/library/src/local/local-catalog-source.d.ts +2 -1
  349. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  350. package/dist/library/src/local/sidecar-paths.d.ts +4 -4
  351. package/dist/library/src/local/sidecar-paths.d.ts.map +1 -1
  352. package/dist/library/src/local/store-paths.d.ts +4 -3
  353. package/dist/library/src/local/store-paths.d.ts.map +1 -1
  354. package/dist/library/src/pin-resolver.d.ts.map +1 -1
  355. package/dist/library/src/preset/apply.d.ts.map +1 -1
  356. package/dist/library/src/preset/placeholders.d.ts.map +1 -1
  357. package/dist/library/src/remote/remote-catalog-source.d.ts +7 -0
  358. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  359. package/dist/library/src/remote/rest-catalog-source.d.ts +7 -0
  360. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  361. package/dist/library/src/sync/manifest-writeback.d.ts +1 -1
  362. package/dist/library/src/sync/manifest-writeback.d.ts.map +1 -1
  363. package/dist/open-library-I7YTADMD.js +23 -0
  364. package/dist/{open-library-GW7DWWNZ.js.map → open-library-I7YTADMD.js.map} +1 -1
  365. package/dist/paths-CE66L3AL.js +15 -0
  366. package/dist/{paths-FKKGS6BA.js.map → paths-CE66L3AL.js.map} +1 -1
  367. package/dist/{plugin-store-R32NH7JE.js → plugin-store-GL5VKYUA.js} +10 -9
  368. package/dist/plugin-store-GL5VKYUA.js.map +1 -0
  369. package/dist/plugins/src/asset-kind-provider.d.ts +1 -1
  370. package/dist/plugins/src/catalog-source.d.ts +13 -0
  371. package/dist/plugins/src/catalog-source.d.ts.map +1 -1
  372. package/dist/resolver/index.js +1 -1
  373. package/dist/resolver/src/parser.d.ts.map +1 -1
  374. package/dist/runner/index.js +20 -19
  375. package/dist/runner/src/capability-registry.d.ts +1 -1
  376. package/dist/runner/src/capability-registry.d.ts.map +1 -1
  377. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  378. package/dist/runner/src/resources.d.ts +1 -1
  379. package/dist/runner/src/serve.d.ts.map +1 -1
  380. package/dist/runner/src/workspace-migration.d.ts.map +1 -1
  381. package/dist/sdk/asset-manager.js +12 -11
  382. package/dist/sdk/bridge.js +4 -4
  383. package/dist/sdk/core.js +8 -7
  384. package/dist/sdk/flow.js +12 -1
  385. package/dist/sdk/index.js +23 -22
  386. package/dist/sdk/index.js.map +1 -1
  387. package/dist/sdk/resolver.js +1 -1
  388. package/dist/sdk/runner.js +20 -19
  389. package/dist/sdk/session.js +1 -1
  390. package/dist/sdk/src/flow/index.d.ts +1 -1
  391. package/dist/sdk/src/flow/index.d.ts.map +1 -1
  392. package/dist/sdk/src/workspace.d.ts +3 -2
  393. package/dist/sdk/src/workspace.d.ts.map +1 -1
  394. package/dist/sdk/telemetry.js +1 -1
  395. package/dist/secrets/index.js +1 -1
  396. package/dist/secrets/src/providers/env.d.ts.map +1 -1
  397. package/dist/secrets/src/providers/local.d.ts.map +1 -1
  398. package/dist/session/index.js +1 -1
  399. package/dist/session/src/mentions.d.ts.map +1 -1
  400. package/dist/{setup-SRPBQOHY.js → setup-4YMN2BDU.js} +14 -13
  401. package/dist/setup-4YMN2BDU.js.map +1 -0
  402. package/dist/skills-6HJ3WINN.js +7 -0
  403. package/dist/{skills-CRL3VJNN.js.map → skills-6HJ3WINN.js.map} +1 -1
  404. package/dist/store-client-BCP5LCAZ.js +15 -0
  405. package/dist/{store-client-INZD2RYD.js.map → store-client-BCP5LCAZ.js.map} +1 -1
  406. package/dist/telemetry/index.js +1 -1
  407. package/dist/telemetry/src/config.d.ts +0 -16
  408. package/dist/telemetry/src/config.d.ts.map +1 -1
  409. package/dist/tui/index.js +20 -19
  410. package/dist/tui/index.js.map +1 -1
  411. package/dist/types/manifests.js +1 -1
  412. package/dist/types/src/flow.d.ts +2 -2
  413. package/dist/types/src/manifests/index.d.ts +1 -1
  414. package/dist/types/src/manifests/skill.d.ts +21 -0
  415. package/dist/types/src/manifests/skill.d.ts.map +1 -1
  416. package/dist/workspace-plugin/adapters/mcp.js +4 -4
  417. package/dist/workspace-plugin/adapters/omp.js +7 -7
  418. package/dist/workspace-plugin/index.js +1 -1
  419. package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
  420. package/package.json +194 -151
  421. package/dist/asset-feeds-77KLWCBP.js.map +0 -1
  422. package/dist/base-assets/connectors/deploy/adapter.d.ts.map +0 -1
  423. package/dist/base-assets/connectors/deploy.js +0 -21
  424. package/dist/base-assets/connectors/devserver/adapter.d.ts.map +0 -1
  425. package/dist/base-assets/connectors/devserver.js +0 -21
  426. package/dist/base-assets/connectors/flow/adapter.d.ts.map +0 -1
  427. package/dist/base-assets/connectors/flow/adapter.js +0 -21
  428. package/dist/base-assets/connectors/flow/engine/engine.d.ts.map +0 -1
  429. package/dist/base-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +0 -1
  430. package/dist/base-assets/connectors/flow/engine/flow-manifest.d.ts.map +0 -1
  431. package/dist/base-assets/connectors/flow/engine/index.d.ts.map +0 -1
  432. package/dist/base-assets/connectors/flow/engine/loader.d.ts.map +0 -1
  433. package/dist/base-assets/connectors/flow/engine/types.d.ts.map +0 -1
  434. package/dist/base-assets/connectors/flow/engine.js +0 -4
  435. package/dist/base-assets/connectors/flow/index.d.ts.map +0 -1
  436. package/dist/base-assets/connectors/flow/prompt-fragments.d.ts.map +0 -1
  437. package/dist/base-assets/connectors/flow/run-flow.d.ts.map +0 -1
  438. package/dist/base-assets/connectors/flow/run-flow.js +0 -24
  439. package/dist/base-assets/connectors/flow/stimulus-driver.d.ts.map +0 -1
  440. package/dist/base-assets/connectors/flow/stimulus-driver.js +0 -4
  441. package/dist/base-assets/connectors/flow.js +0 -21
  442. package/dist/base-assets/connectors/git/driver.d.ts.map +0 -1
  443. package/dist/base-assets/connectors/git.js +0 -21
  444. package/dist/base-assets/connectors/gmail/adapter.d.ts.map +0 -1
  445. package/dist/base-assets/connectors/gmail.js +0 -21
  446. package/dist/base-assets/connectors/googledrive/driver.d.ts.map +0 -1
  447. package/dist/base-assets/connectors/googledrive.js +0 -21
  448. package/dist/base-assets/connectors/local/driver.d.ts.map +0 -1
  449. package/dist/base-assets/connectors/local.js +0 -21
  450. package/dist/base-assets/connectors/mattermost/adapter.d.ts.map +0 -1
  451. package/dist/base-assets/connectors/mattermost.js +0 -21
  452. package/dist/base-assets/connectors/memory/adapter.d.ts.map +0 -1
  453. package/dist/base-assets/connectors/memory.js +0 -21
  454. package/dist/base-assets/connectors/minio/adapter.d.ts.map +0 -1
  455. package/dist/base-assets/connectors/minio.js +0 -21
  456. package/dist/base-assets/connectors/postgres/adapter.d.ts.map +0 -1
  457. package/dist/base-assets/connectors/postgres.js +0 -21
  458. package/dist/base-assets/connectors/s3/driver.d.ts.map +0 -1
  459. package/dist/base-assets/connectors/s3.js +0 -21
  460. package/dist/base-assets/connectors/sharepoint/driver.d.ts.map +0 -1
  461. package/dist/base-assets/connectors/sharepoint.js +0 -21
  462. package/dist/base-assets/connectors/sqlite/adapter.d.ts.map +0 -1
  463. package/dist/base-assets/connectors/sqlite.js +0 -21
  464. package/dist/base-assets/connectors/static-server/adapter.d.ts.map +0 -1
  465. package/dist/base-assets/connectors/static-server.js +0 -21
  466. package/dist/base-assets/connectors/tunnel/adapter.d.ts.map +0 -1
  467. package/dist/base-assets/connectors/tunnel.js +0 -21
  468. package/dist/base-assets/connectors/webdav/driver.d.ts.map +0 -1
  469. package/dist/base-assets/connectors/webdav.js +0 -21
  470. package/dist/base-assets/connectors/xstate/adapter.d.ts.map +0 -1
  471. package/dist/base-assets/connectors/xstate-store/adapter.d.ts.map +0 -1
  472. package/dist/base-assets/connectors/xstate-store.js +0 -21
  473. package/dist/base-assets/connectors/xstate.js +0 -21
  474. package/dist/base-assets/index.d.ts.map +0 -1
  475. package/dist/base-assets/index.js.map +0 -1
  476. package/dist/chunk-2M3XTMOL.js +0 -23
  477. package/dist/chunk-2M3XTMOL.js.map +0 -1
  478. package/dist/chunk-2XY6732A.js.map +0 -1
  479. package/dist/chunk-3QTZWPGH.js.map +0 -1
  480. package/dist/chunk-4FADEVBN.js.map +0 -1
  481. package/dist/chunk-6VTG73UY.js.map +0 -1
  482. package/dist/chunk-B4ZXBH57.js.map +0 -1
  483. package/dist/chunk-BJWUSHC4.js.map +0 -1
  484. package/dist/chunk-D3VO6WNC.js.map +0 -1
  485. package/dist/chunk-DCAWIRD6.js.map +0 -1
  486. package/dist/chunk-DQWREFRQ.js.map +0 -1
  487. package/dist/chunk-FJFHJBGS.js.map +0 -1
  488. package/dist/chunk-FVTV7M76.js.map +0 -1
  489. package/dist/chunk-GCJXPUHG.js.map +0 -1
  490. package/dist/chunk-GZWJGNNN.js.map +0 -1
  491. package/dist/chunk-ICS76R4T.js.map +0 -1
  492. package/dist/chunk-JDX54X4Y.js.map +0 -1
  493. package/dist/chunk-KLNL7QHN.js.map +0 -1
  494. package/dist/chunk-KOVLSBXK.js.map +0 -1
  495. package/dist/chunk-KT3CK26V.js.map +0 -1
  496. package/dist/chunk-M5TE6YI5.js.map +0 -1
  497. package/dist/chunk-NELZIQ2E.js.map +0 -1
  498. package/dist/chunk-QAVZOJCV.js.map +0 -1
  499. package/dist/chunk-QXC62DOF.js.map +0 -1
  500. package/dist/chunk-UD4ZLXGS.js.map +0 -1
  501. package/dist/chunk-WIAHJOMG.js.map +0 -1
  502. package/dist/chunk-WSZAFRQL.js.map +0 -1
  503. package/dist/chunk-XMP6XTMF.js.map +0 -1
  504. package/dist/chunk-XVL22AWE.js.map +0 -1
  505. package/dist/ensure-sources-7MOOKY3K.js.map +0 -1
  506. package/dist/helpers-LTN3HMD3.js +0 -4
  507. package/dist/open-library-GW7DWWNZ.js +0 -21
  508. package/dist/paths-FKKGS6BA.js +0 -4
  509. package/dist/plugin-store-R32NH7JE.js.map +0 -1
  510. package/dist/setup-SRPBQOHY.js.map +0 -1
  511. package/dist/skills-CRL3VJNN.js +0 -7
  512. package/dist/store-client-INZD2RYD.js +0 -14
  513. /package/dist/{base-assets → factory-assets}/connectors/deploy.d.ts +0 -0
  514. /package/dist/{base-assets → factory-assets}/connectors/deploy.js.map +0 -0
  515. /package/dist/{base-assets → factory-assets}/connectors/devserver.d.ts +0 -0
  516. /package/dist/{base-assets → factory-assets}/connectors/devserver.js.map +0 -0
  517. /package/dist/{base-assets → factory-assets}/connectors/flow/adapter.js.map +0 -0
  518. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/engine.d.ts +0 -0
  519. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-manifest.d.ts +0 -0
  520. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/index.d.ts +0 -0
  521. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/loader.d.ts +0 -0
  522. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/types.d.ts +0 -0
  523. /package/dist/{base-assets → factory-assets}/connectors/flow/engine.d.ts +0 -0
  524. /package/dist/{base-assets → factory-assets}/connectors/flow/engine.js.map +0 -0
  525. /package/dist/{base-assets → factory-assets}/connectors/flow/index.d.ts +0 -0
  526. /package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js.map +0 -0
  527. /package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.js.map +0 -0
  528. /package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.js.map +0 -0
  529. /package/dist/{base-assets → factory-assets}/connectors/flow.d.ts +0 -0
  530. /package/dist/{base-assets → factory-assets}/connectors/flow.js.map +0 -0
  531. /package/dist/{base-assets → factory-assets}/connectors/git.d.ts +0 -0
  532. /package/dist/{base-assets → factory-assets}/connectors/git.js.map +0 -0
  533. /package/dist/{base-assets → factory-assets}/connectors/gmail.d.ts +0 -0
  534. /package/dist/{base-assets → factory-assets}/connectors/gmail.js.map +0 -0
  535. /package/dist/{base-assets → factory-assets}/connectors/googledrive.d.ts +0 -0
  536. /package/dist/{base-assets → factory-assets}/connectors/googledrive.js.map +0 -0
  537. /package/dist/{base-assets → factory-assets}/connectors/local.d.ts +0 -0
  538. /package/dist/{base-assets → factory-assets}/connectors/local.js.map +0 -0
  539. /package/dist/{base-assets → factory-assets}/connectors/mattermost.d.ts +0 -0
  540. /package/dist/{base-assets → factory-assets}/connectors/mattermost.js.map +0 -0
  541. /package/dist/{base-assets → factory-assets}/connectors/memory.d.ts +0 -0
  542. /package/dist/{base-assets → factory-assets}/connectors/memory.js.map +0 -0
  543. /package/dist/{base-assets → factory-assets}/connectors/minio.d.ts +0 -0
  544. /package/dist/{base-assets → factory-assets}/connectors/minio.js.map +0 -0
  545. /package/dist/{base-assets → factory-assets}/connectors/postgres.d.ts +0 -0
  546. /package/dist/{base-assets → factory-assets}/connectors/postgres.js.map +0 -0
  547. /package/dist/{base-assets → factory-assets}/connectors/s3.d.ts +0 -0
  548. /package/dist/{base-assets → factory-assets}/connectors/s3.js.map +0 -0
  549. /package/dist/{base-assets → factory-assets}/connectors/sharepoint.d.ts +0 -0
  550. /package/dist/{base-assets → factory-assets}/connectors/sharepoint.js.map +0 -0
  551. /package/dist/{base-assets → factory-assets}/connectors/sqlite.d.ts +0 -0
  552. /package/dist/{base-assets → factory-assets}/connectors/sqlite.js.map +0 -0
  553. /package/dist/{base-assets → factory-assets}/connectors/static-server.d.ts +0 -0
  554. /package/dist/{base-assets → factory-assets}/connectors/static-server.js.map +0 -0
  555. /package/dist/{base-assets → factory-assets}/connectors/tunnel.d.ts +0 -0
  556. /package/dist/{base-assets → factory-assets}/connectors/tunnel.js.map +0 -0
  557. /package/dist/{base-assets → factory-assets}/connectors/webdav.d.ts +0 -0
  558. /package/dist/{base-assets → factory-assets}/connectors/webdav.js.map +0 -0
  559. /package/dist/{base-assets → factory-assets}/connectors/xstate-store.d.ts +0 -0
  560. /package/dist/{base-assets → factory-assets}/connectors/xstate-store.js.map +0 -0
  561. /package/dist/{base-assets → factory-assets}/connectors/xstate.d.ts +0 -0
  562. /package/dist/{base-assets → factory-assets}/connectors/xstate.js.map +0 -0
@@ -0,0 +1,243 @@
1
+ ---
2
+ name: authoring-skaile-manifests
3
+ description: "Use when creating or fixing a skaile.yaml manifest for a new or existing skill / asset / MCP-server repo so it works with @skaile/workspaces and stores. Covers the publication half (publisher, version, assets[]), the consumption half (sources, stores, dependencies, overrides), the canonical dependency-ref grammar (kind:@publisher/name#version), the version waterfall, conflict resolution, and the v3 lock file. Also use to generate a manifest from an existing tree or migrate a legacy manifest."
4
+ metadata:
5
+ version: '0.1.0'
6
+ stage: alpha
7
+ tags:
8
+ - skaile
9
+ - workspaces
10
+ - manifest
11
+ - skaile.yaml
12
+ - dependencies
13
+ - mcp
14
+ - migrate
15
+ - lockfile
16
+ ---
17
+
18
+ # Authoring `skaile.yaml` manifests
19
+
20
+ You are creating or repairing a `skaile.yaml` so a repo (skills, assets, or an
21
+ MCP server) resolves through `@skaile/workspaces` and any store. This skill owns
22
+ the manifest and the **latest dependency standard**. For file layout and asset
23
+ content, see **[authoring-skaile-assets]**.
24
+
25
+ Reference (canonical): the in-repo concept doc `docs/concepts/manifest-schema.md`
26
+ and the spec `_devlog/specs/2026-05-31-manifest-canonical-identity.md`.
27
+ The full dependency standard is in
28
+ [`references/dependency-standard.md`](./references/dependency-standard.md).
29
+
30
+ ## One file, two halves
31
+
32
+ `skaile.yaml` lives at the repo root. A repo can be **source-only** (publication
33
+ half), **project-only** (consumption half), or both.
34
+
35
+ ### Publication half — "this repo IS a source"
36
+
37
+ ```yaml
38
+ publisher: skaile-ai # optional; defaults to the source URL's GitHub org/user
39
+ version: 1.4.0 # optional; see Version waterfall
40
+
41
+ assets: # optional; when present it EXHAUSTIVELY lists publishable assets
42
+ - kind: skill
43
+ name: audit
44
+ root: skills/audit # recursive walk: every file under root joins the asset
45
+ - kind: bundle
46
+ name: skaile-development
47
+ root: bundles/skaile-development
48
+ version: 2.0.0 # per-asset override of the source version
49
+ - kind: skill
50
+ name: composite-skill
51
+ files: # explicit listing; supports fast-glob globs
52
+ - SKILL.md
53
+ - scripts/*.py
54
+ - references/audit-rules.md
55
+ - kind: mcp-server
56
+ name: excel
57
+ root: mcp-servers/excel
58
+ publisher: vendor-x # per-asset publisher: curator/mirror preserves original identity
59
+ ```
60
+
61
+ - **`publisher`** — canonical, GitHub-shaped: ≤39 chars, alphanumeric + single
62
+ hyphens, no leading/trailing or double hyphen. Inherited from the source URL's
63
+ GitHub `<org-or-user>` when omitted. **Non-GitHub URLs (GitLab, self-hosted,
64
+ tarball) MUST set `publisher:` explicitly** — auto-derivation fails closed.
65
+ - **`assets[]`** — `{kind, name, root?|files?, version?, publisher?}`. `root:`
66
+ walks a directory recursively; `files:` lists explicit paths/globs.
67
+ - A content `name:` (e.g. `SKILL.md`) **MUST equal** its `assets[].name` — else
68
+ an index-time hard error. `metadata.version` in content is ignored.
69
+
70
+ > ⚠️ **Exhaustive-list footgun.** A **non-empty `assets:` is the complete set of
71
+ > resolvable assets.** Anything on disk but not listed is still browsable in
72
+ > `skaile manage` (the browse scan walks files) yet **fails at install** with
73
+ > `Asset not found`. When you add an agent/flow/skill to the tree, add it here
74
+ > too — or omit `assets:` entirely and let the convention walker find everything.
75
+
76
+ ### Consumption half — "this repo IS a project"
77
+
78
+ ```yaml
79
+ sources: # absent → no direct git resolution
80
+ - url: https://github.com/skaile-ai/ai-assets
81
+ pin: v1.4.0 # optional: branch | tag | 40-char sha; defaults to default-branch HEAD
82
+
83
+ stores: # absent → no catalog fallback
84
+ - url: https://skaile.store
85
+
86
+ dependencies: # canonical refs only (grammar below)
87
+ - bundle:@skaile-ai/skaile-development#^2.0
88
+ - skill:@skaile-ai/use-exa#~1.0
89
+ - mcp:@skaile-ai/excel
90
+
91
+ overrides: # conflict resolution; reason: is REQUIRED
92
+ - ref: skill:@skaile-ai/audit#1.4.0
93
+ source: https://github.com/skaile-ai/ai-assets
94
+ reason: "vendored patch for issue #42; revert when upstream merges"
95
+ ```
96
+
97
+ - `sources[]` is `{url, pin?}` **only** — no `name`, `publisher`, or `branch`;
98
+ the cache slug is derived from the URL.
99
+ - `stores[]` is `{url}` only.
100
+ - `overrides[]` is `{ref, source, reason}`; an empty/missing `reason:` is a parse
101
+ error.
102
+ - Legacy top-level keys `repositories:` and `ai_resources:` are **rejected at
103
+ parse time** — see Migration.
104
+
105
+ ## The latest dependency standard (canonical-identity, 2026-05-31)
106
+
107
+ ```
108
+ kind:@<publisher>/name[#version]
109
+ ```
110
+
111
+ `@` is the **scope sigil**, `#` the **version sigil** — `@publisher/name` reads
112
+ like an npm scoped package. `<publisher>` is canonical, global, GitHub-shaped,
113
+ and **required**; there is no project-local alias. `mcp:` is shorthand for
114
+ `mcp-server:`. The lock key is a fully-pinned ref of exactly this shape
115
+ (`kind:@<publisher>/name#version`).
116
+
117
+ ```
118
+ skill:@skaile-ai/audit # resolver picks highest SemVer candidate
119
+ skill:@skaile-ai/audit#^1.4.0 # caret range
120
+ bundle:@skaile-ai/skaile-development#~2.0
121
+ mcp:@skaile-ai/excel # = mcp-server:@skaile-ai/excel
122
+ agent:@skaile-ai/reviewer#6a5266fdda9d1c697f537968532691f6d70c779a # exact commit SHA
123
+ ```
124
+
125
+ | Pin form | Meaning |
126
+ |---|---|
127
+ | `#1.4.0` | exact SemVer |
128
+ | `#^1.4.0`, `#^1` | caret range |
129
+ | `#~1.4.0`, `#~1.4` | tilde range |
130
+ | `#1.x`, `#1.4.x` | wildcard |
131
+ | `#<40-char-sha>` | exact source-commit pin |
132
+ | absent | highest SemVer-sorted candidate |
133
+ | `#main`, `#latest`, `#HEAD`, any floating ref | **parse-time error** |
134
+
135
+ > 🛑 **The legacy `kind:name@<publisher>` grammar is GONE.** As of the
136
+ > "remove legacy asset-ref aliases" change it is a **hard error**
137
+ > (`publisher required in asset ref "…" — use kind:@<publisher>/name`), not a
138
+ > deprecation warning. The older docs that mention a one-release grace period are
139
+ > stale. Convert every ref and run the `migrate-skaile-manifest` skill on legacy
140
+ > manifests.
141
+
142
+ **`requires:` (content) is different and stays bare** — `kind:name`, no
143
+ publisher, resolved within the same source. Only **bundle `dependencies:`** and
144
+ **project `dependencies:`** use the full canonical grammar above. See
145
+ [references/dependency-standard.md](./references/dependency-standard.md) for the
146
+ complete rules, SHA-synthetic versions, and worked examples.
147
+
148
+ ## Version waterfall
149
+
150
+ The version for an asset is the first of:
151
+
152
+ 1. `assets[].version` (per-asset in the source `skaile.yaml`).
153
+ 2. The source's top-level `version:`.
154
+ 3. A SemVer-shaped git tag (`git describe --tags`), `v` stripped.
155
+ 4. Synthetic `0.0.0-sha.<7char>` from the resolved commit.
156
+
157
+ SHA-synthetic versions resolve only against their **exact literal** pin or the
158
+ commit-SHA pin that minted them — never caret/tilde/wildcard. To get clean
159
+ ranged installs, **tag your releases**.
160
+
161
+ ## Resolution + conflict detection (what authors must anticipate)
162
+
163
+ The resolver gathers candidates per dep across every source clone and every store,
164
+ filters by the pin, and picks the highest matching version. If two candidates for
165
+ the same `(publisher, kind, name, version)` disagree on content `sha256`, it is a
166
+ **hard error** with a dep-chain walk — unless an `overrides[]` entry pins one
167
+ source (with a `reason:`). When a source and a store both produce the chosen
168
+ version, a `catalog.getCanonicalDigest` probe cross-checks their `sha256`.
169
+
170
+ Implication for authors: **never republish the same `(publisher, kind, name,
171
+ version)` with different bytes.** Bump the version instead. Same coordinates must
172
+ mean identical content everywhere, or every downstream consumer breaks.
173
+
174
+ ## Generate a manifest from an existing repo
175
+
176
+ For a new or existing skill/asset/MCP repo with no (or a stale) `skaile.yaml`:
177
+
178
+ 1. **Enumerate assets on disk** — find every manifest file:
179
+ ```bash
180
+ find . \( -name SKILL.md -o -name AGENT.md -o -name agent.yaml \
181
+ -o -name CONTRACT.md -o -name MCP.md -o -name CONNECTOR.md \
182
+ -o -name knowledge.yaml -o -name '*.prompt.md' \
183
+ -o -name '*.flow.yaml' -o -name '*.flow.json' -o -name '*.bundle.yaml' \) \
184
+ -not -path '*/node_modules/*' -not -path '*/.git/*'
185
+ ```
186
+ 2. **Read each `name:`** (frontmatter or `name:`/`id:` field). For a single-file
187
+ asset use `files:`; for a directory-scoped asset (skill/agent/contract/
188
+ mcp-server/connector/knowledge) use `root:` at its directory.
189
+ 3. **Set `publisher:`** = the GitHub org if hosted there, else declare it.
190
+ 4. **Set `version:`** or rely on git tags.
191
+ 5. **Cross-check the count**: the number of `assets:` entries MUST equal the
192
+ number of manifest files found in step 1. A mismatch = the footgun. (This is
193
+ exactly the `assets:`-list-incomplete class of `Asset not found` bug.)
194
+ 6. **For an MCP repo specifically**: each server is an `MCP.md` with frontmatter
195
+ carrying runtime defaults (`transport`, `command`, `args`, `env`, `url`,
196
+ `headers`). Those land on the catalog entry's `metadata` so a consumer can
197
+ `dependencies: [mcp:@<pub>/<name>]` and get a working server with no inline
198
+ config. List each as `kind: mcp-server`.
199
+ 7. **Verify**: register the repo as a source in a scratch project and run
200
+ `skaile manage` + `skaile add` for a sampling of every kind (see
201
+ [authoring-skaile-assets] § Test a source locally).
202
+
203
+ ## v3 lock file (`skaile.lock.yaml`)
204
+
205
+ Generated by `skaile install`; do not hand-edit. Keyed by canonical refs.
206
+
207
+ ```yaml
208
+ locked_at: 2026-05-31T14:30:00Z
209
+ schema_version: 3
210
+ assets:
211
+ skill:@skaile-ai/audit#1.4.0:
212
+ sha256: 1da6294a...
213
+ source: { url: https://github.com/skaile-ai/ai-assets, commit: 6a5266fd... }
214
+ files:
215
+ - { path: skills/audit/SKILL.md, sha256: ... }
216
+ override_applied: false
217
+ sources:
218
+ - { url: https://github.com/skaile-ai/ai-assets, commit: 6a5266fd... }
219
+ ```
220
+
221
+ Old v1 lockfiles (`lockfile_version: 1`, `repositories:`) are rejected on read —
222
+ regenerate with `rm skaile.lock.yaml && skaile install`.
223
+
224
+ ## Migration
225
+
226
+ There is no `skaile manifest migrate` command. The transform
227
+ (`repositories:`/`ai_resources:` → `sources:`/`dependencies:`, bare deps →
228
+ `@<publisher>`, `@skaile` → `@skaile-ai` rebrand, legacy `kind:name@pub` →
229
+ `kind:@pub/name`) is done by the **`migrate-skaile-manifest`** skill. Run it from
230
+ an AI session against each legacy `skaile.yaml`.
231
+
232
+ ## Manifest checklist
233
+
234
+ - [ ] `publisher:` set (or auto-derivable from a GitHub URL).
235
+ - [ ] Every manifest file on disk has a matching `assets:` entry (or `assets:` omitted).
236
+ - [ ] Each content `name:` equals its `assets[].name`.
237
+ - [ ] Every `dependencies:`/bundle ref uses `kind:@publisher/name[#version]` — no legacy `@pub` suffix.
238
+ - [ ] Pins are SemVer/SHA — no `main`/`latest`/`HEAD`.
239
+ - [ ] Released versions are git-tagged so ranges resolve.
240
+ - [ ] `overrides[]` (if any) carry a non-empty `reason:`.
241
+ - [ ] `skaile add` succeeds for a sample of every kind in a scratch project.
242
+
243
+ [authoring-skaile-assets]: ../authoring-skaile-assets/SKILL.md
@@ -0,0 +1,197 @@
1
+ # The skaile dependency standard (canonical-identity)
2
+
3
+ Deep reference for the dependency grammar used by `@skaile/workspaces`. The
4
+ authoritative source is `docs/concepts/manifest-schema.md` and the spec
5
+ `_devlog/specs/2026-05-31-manifest-canonical-identity.md` (scoped-grammar follow-up:
6
+ `_devlog/specs/2026-06-02-scoped-asset-ref-grammar.md`). This file restates it for
7
+ asset authors and flags where the current code is **stricter than the older docs**.
8
+
9
+ ## 1. Identity
10
+
11
+ Every asset has a global identity tuple:
12
+
13
+ ```
14
+ (publisher, kind, name, version)
15
+ ```
16
+
17
+ - **Asset-intrinsic.** Declared in the *source's* `skaile.yaml`, never by the
18
+ consuming project. There is no project-local renaming.
19
+ - **publisher** — canonical, GitHub-shaped: 1–39 chars, alphanumeric + single
20
+ hyphens, no leading/trailing hyphen, no double hyphen. Auto-derived from a
21
+ GitHub source URL's org/user; **must be declared** for any non-GitHub URL.
22
+ - **kind** — one of: `skill`, `agent`, `prompt`, `bundle`, `flow`, `contract`,
23
+ `mcp-server`, `persona`, `ruleset`, `knowledge`, `connector`.
24
+ - **version** — SemVer (see § Version waterfall). Two assets with the same tuple
25
+ MUST be byte-identical.
26
+
27
+ ## 2. The canonical reference grammar
28
+
29
+ ```
30
+ kind:@<publisher>/name[#version]
31
+ ```
32
+
33
+ | Token | Role |
34
+ |---|---|
35
+ | `kind:` | asset kind + colon. `mcp:` is shorthand for `mcp-server:`. |
36
+ | `@` | **scope sigil** — introduces the publisher, npm-style. |
37
+ | `<publisher>/` | publisher namespace + slash. |
38
+ | `name` | asset name. Permissive: anything except `/`, `#`, whitespace. |
39
+ | `#version` | optional **version sigil** + pin. |
40
+
41
+ Reads as an npm scoped package: `@skaile-ai/audit`.
42
+
43
+ ### Examples
44
+
45
+ ```
46
+ skill:@skaile-ai/audit
47
+ skill:@skaile-ai/audit#^1.4.0
48
+ bundle:@skaile-ai/skaile-development#~2.0
49
+ agent:@vercel-labs/reviewer
50
+ mcp:@skaile-ai/excel # == mcp-server:@skaile-ai/excel
51
+ contract:@skaile-ai/implementation-contract#1.0.0
52
+ skill:@skaile-ai/audit#6a5266fdda9d1c697f537968532691f6d70c779a # 40-char SHA pin
53
+ ```
54
+
55
+ ## 3. Pins
56
+
57
+ | Pin form | Meaning |
58
+ |---|---|
59
+ | `#1.4.0` | exact SemVer |
60
+ | `#^1.4.0`, `#^1` | caret range |
61
+ | `#~1.4.0`, `#~1.4` | tilde range |
62
+ | `#1.x`, `#1.4.x` | wildcard |
63
+ | `#<40-char-sha>` | exact source-commit pin |
64
+ | absent | resolver picks the highest SemVer-sorted candidate |
65
+ | `#main`, `#latest`, `#HEAD`, any floating ref | **parse-time error** |
66
+
67
+ Floating refs are rejected by design — resolution must be reproducible.
68
+
69
+ ## 4. SHA-synthetic versions
70
+
71
+ When no version can be derived (no `assets[].version`, no source `version:`, no
72
+ SemVer git tag), the resolver mints `0.0.0-sha.<7char>` from the commit. These:
73
+
74
+ - participate in resolution,
75
+ - satisfy **only** their exact literal pin (`#0.0.0-sha.abc1234`) or the
76
+ commit-SHA pin that produced them,
77
+ - never match caret/tilde/wildcard ranges.
78
+
79
+ Consequence: an untagged source resolves only when pinned exactly. **Tag
80
+ releases** to enable ranged (`^`, `~`, `x`) installs.
81
+
82
+ ## 5. `requires:` vs `dependencies:` — the split that trips authors
83
+
84
+ There are two distinct dependency channels. They use **different grammars**.
85
+
86
+ ### `requires:` — content frontmatter, intra-source, bare `kind:name`
87
+
88
+ In a `SKILL.md` / `agent.yaml` / `MCP.md`, `requires:` lists peer assets the
89
+ asset needs. Form is **`kind:name`** — no `@publisher`, no `#version`. The
90
+ publisher is **inherited from the same source** (same-source assumption).
91
+
92
+ ```yaml
93
+ # SKILL.md frontmatter
94
+ metadata:
95
+ requires:
96
+ - contract:implementation-contract
97
+ - skill:use-exa
98
+ ```
99
+
100
+ Accepted as a comma-separated string or a YAML list. Read from either the
101
+ top level or under `metadata:`.
102
+
103
+ ### `dependencies:` — bundle & project manifests, full canonical refs
104
+
105
+ A **bundle** (`*.bundle.yaml`) and a **project** `skaile.yaml` use
106
+ `dependencies:` with the **full canonical grammar** and can cross publishers and
107
+ pin versions:
108
+
109
+ ```yaml
110
+ # a bundle, or a project skaile.yaml
111
+ dependencies:
112
+ - skill:@skaile-ai/audit#^1.4
113
+ - agent:@skaile-ai/impl-build-implement
114
+ - skill:@vercel-labs/agent-skills
115
+ ```
116
+
117
+ > Putting a full canonical ref in a content `requires:` (or a bare `kind:name`
118
+ > in a project `dependencies:`) is the most common authoring mistake. Keep them
119
+ > in their lanes: **`requires:` = bare same-source; `dependencies:` = canonical
120
+ > cross-source.**
121
+
122
+ ### Transitive expansion
123
+
124
+ Installing a bundle resolves every `dependencies:` ref, recursing into nested
125
+ bundles to arbitrary depth. A shared dep is de-duped; cycles are broken by a
126
+ `seen` set. A bare transitive ref inherits its parent candidate's publisher.
127
+
128
+ ## 6. Resolution algorithm (per dep)
129
+
130
+ 1. Gather **source candidates** from every cloned `sources[]` repo (provenance
131
+ index, keyed `<publisher>/<kind>:<name>`).
132
+ 2. Optionally gather **store candidates** from every `stores[]` catalog.
133
+ 3. Filter by the pin (SemVer range / SHA / exact).
134
+ 4. Pick the **highest** matching version.
135
+ 5. **Conflict check:** if ≥2 finalists at that version have divergent content
136
+ `sha256`, raise `CanonicalRefConflictError` with the dep chain — unless an
137
+ `overrides[]` entry selects one source.
138
+ 6. Cross-check: when a source and a store both produced the chosen version,
139
+ probe `catalog.getCanonicalDigest` and compare `sha256`.
140
+
141
+ ### Conflict error shape
142
+
143
+ ```
144
+ error: divergent sha256 for skill:@skaile-ai/audit#1.4.0
145
+ pulled in via:
146
+ bundle:@skaile-ai/skaile-development#^2.0
147
+ skill:@skaile-ai/audit#~1.4
148
+ candidates:
149
+ https://github.com/skaile-ai/ai-assets @ 6a5266fd sha256: 1da6294a...
150
+ https://github.com/mortegro/ai-assets-fork @ ab12cd34 sha256: 9e3f7c01...
151
+ resolve by:
152
+ 1. removing one source from skaile.yaml,
153
+ 2. configuring a store and using its canonical digest, or
154
+ 3. adding to overrides: (with a non-empty reason:)
155
+ ```
156
+
157
+ ## 7. Overrides
158
+
159
+ ```yaml
160
+ overrides:
161
+ - ref: skill:@skaile-ai/audit#1.4.0 # the canonical, fully-pinned ref
162
+ source: https://github.com/skaile-ai/ai-assets # which candidate wins
163
+ reason: "vendored patch for #42; revert when upstream merges" # REQUIRED, non-empty
164
+ ```
165
+
166
+ `reason:` is mandatory — empty/missing is a parse error. Use overrides only to
167
+ break a genuine sha conflict; the right long-term fix is to stop publishing
168
+ divergent bytes under the same coordinates.
169
+
170
+ ## 8. Version waterfall (recap)
171
+
172
+ 1. `assets[].version` in the source `skaile.yaml`
173
+ 2. source top-level `version:`
174
+ 3. SemVer git tag (`git describe --tags`, `v` stripped)
175
+ 4. synthetic `0.0.0-sha.<7char>`
176
+
177
+ ## 9. What changed from legacy (migration cheatsheet)
178
+
179
+ | Legacy | Canonical (now) |
180
+ |---|---|
181
+ | `skill:audit@skaile-ai` | `skill:@skaile-ai/audit` |
182
+ | `skill:audit@skaile-ai#1.4.0` | `skill:@skaile-ai/audit#1.4.0` |
183
+ | bare `skill:audit` in a project dep | `skill:@<publisher>/audit` (publisher now required) |
184
+ | `@skaile` publisher | `@skaile-ai` (rebrand) |
185
+ | `repositories:` / `ai_resources:` top-level keys | `sources:` / `dependencies:` |
186
+
187
+ **The legacy `kind:name@<publisher>` grammar no longer parses** — it is a hard
188
+ error (`publisher required in asset ref`). The older `manifest-schema.md` line
189
+ about "still parses for one release with a deprecation warning" is stale; the
190
+ aliases were removed. Run the `migrate-skaile-manifest` skill to convert.
191
+
192
+ ## 10. Lock key
193
+
194
+ The lock file (`skaile.lock.yaml`, schema v3) keys each entry by the
195
+ fully-pinned canonical ref `kind:@<publisher>/name#version` and records the
196
+ contributing source URL + commit and per-file `sha256`. Regenerate, never
197
+ hand-edit: `rm skaile.lock.yaml && skaile install`.
@@ -0,0 +1,140 @@
1
+ ---
2
+ name: manifest-compliance
3
+ description: "Use when an AI-asset repo has manifests or skaile.yaml refs that fail canonical-name rules — the symptom is a runtime hard error like `publisher required in asset ref \"flow:@skaile-ai/CLI Concept\"` or `invalid asset name \"…\"` thrown by parseAssetRef at install/apply time. Scans a repo with `skaile validate`, then fixes each non-compliant asset identity (skill/agent `name`, flow `id`) to lowercase kebab-case and rewrites every reference (skaile.yaml dependencies/overrides, flow node skill refs, directory names). Trigger when the user says 'fix asset names', 'my manifest is invalid', 'publisher required error', 'invalid asset name', 'make my assets compliant', or 'migrate legacy manifest names'."
4
+ metadata:
5
+ version: 1.0.0
6
+ source: AUTHORED
7
+ stage: beta
8
+ tags: [asset-store, manifest, compliance, validation, naming, migration, repo-author]
9
+ prerequisites:
10
+ inputs_optional:
11
+ - id: repo_path
12
+ label: "Path to the asset repo / library to check"
13
+ type: text
14
+ default: "."
15
+ hint: "Repo root — the tree containing SKILL.md / *.flow.yaml / skaile.yaml files"
16
+ - id: write
17
+ label: "Apply fixes vs report only"
18
+ type: boolean
19
+ default: false
20
+ hint: "If false, only report violations; if true, rename + rewrite refs"
21
+ reads:
22
+ - path: skills/authoring-skaile-manifests/references/dependency-standard.md
23
+ description: "Canonical dependency grammar + asset-ref shape"
24
+ keywords: [manifest, compliance, asset-name, kebab-case, parseAssetRef, validate]
25
+ ---
26
+
27
+ # Manifest Compliance
28
+
29
+ Detect and fix asset manifests that violate the **canonical asset-name rule**,
30
+ then rewrite every reference so the repo installs and applies without the
31
+ `parseAssetRef` hard error.
32
+
33
+ ## The rule
34
+
35
+ A canonical asset **name** (and a flow's **id**) is **lowercase kebab-case**:
36
+
37
+ - allowed: `a-z`, `0-9`, single hyphens between segments
38
+ - forbidden: uppercase, spaces, underscores, dots, leading/trailing or double hyphens
39
+
40
+ A full reference is `kind:@<publisher>/name[#version]` — e.g.
41
+ `flow:@skaile-ai/cli-concept`. A name like `"CLI Concept"` (space + uppercase)
42
+ breaks the grammar; because the publisher is present, older builds reported the
43
+ *misleading* `publisher required …` error — the real fault is the name.
44
+
45
+ > A flow's `name:` frontmatter is a human-readable **display title** and may
46
+ > contain spaces/uppercase. The asset identity is the flow's `id:` field —
47
+ > that is what must be kebab-case. Fix `id`, leave `name` alone.
48
+
49
+ ## Step 0: Confirm context
50
+
51
+ 1. Resolve `repo_path` (default `.`).
52
+ 2. Confirm it's a repo/library tree (has `SKILL.md`, `*.flow.yaml`, or
53
+ `skaile.yaml` files somewhere under it).
54
+
55
+ ## Step 1: Detect (always run first)
56
+
57
+ Run the repo-wide compliance check:
58
+
59
+ ```bash
60
+ bun run cli validate <repo_path>
61
+ ```
62
+
63
+ `skaile validate [path]` walks the tree and reports, per file:
64
+
65
+ - `invalid asset name "…"` / `invalid asset id "…"` — a manifest identity that
66
+ isn't kebab-case (skill/agent `name`, flow `id`).
67
+ - `[dependencies] / [overrides.ref] — …` — a `skaile.yaml` ref that fails
68
+ `parseAssetRef` (the exact path that hard-errors at runtime).
69
+ - `[assets] — invalid asset name "…"` — a published `assets[]` entry identity.
70
+
71
+ Exit code is `1` when any violation is found. Collect the full list before
72
+ fixing — there are usually several, and references are interlinked.
73
+
74
+ If validate is clean, report "compliant" and stop.
75
+
76
+ ## Step 2: Plan the renames
77
+
78
+ For each violation, derive the compliant name and present the mapping to the
79
+ user **before** writing:
80
+
81
+ | Bad identity | Proposed kebab-case |
82
+ |---|---|
83
+ | `CLI Concept` | `cli-concept` |
84
+ | `Test Echo Flow` | `test-echo-flow` |
85
+ | `my_audit` | `my-audit` |
86
+
87
+ Kebab-case derivation: lowercase, replace runs of non-`[a-z0-9]` with a single
88
+ hyphen, trim leading/trailing hyphens. Flag collisions (two assets mapping to
89
+ the same name) for the user to disambiguate — never auto-merge.
90
+
91
+ ## Step 3: Apply fixes (`write = true`)
92
+
93
+ For each renamed asset, apply **all** of these so no dangling reference remains:
94
+
95
+ 1. **Manifest identity** — edit the `name:` (or, for flows, `id:`) field in the
96
+ asset's own manifest (`SKILL.md` frontmatter, `agent.yaml`, `*.flow.yaml`,
97
+ `MCP.md`, `CONNECTOR.md`, `*.preset.yaml`, etc.).
98
+ 2. **Directory name** — if the asset's folder is named after the old identity,
99
+ rename the directory to match (use `git mv` so history is preserved).
100
+ 3. **Inbound references** — grep the whole tree for the old identity and update
101
+ every occurrence:
102
+ - `skaile.yaml` → `dependencies:`, `overrides[].ref`, `assets[].name`
103
+ - flow nodes → `data.skill` / node refs that name the asset
104
+ - any `kind:@publisher/<old-name>` ref string anywhere
105
+
106
+ ```bash
107
+ grep -rn "<old-name>" <repo_path> --include="*.yaml" --include="*.md" --include="*.json"
108
+ ```
109
+
110
+ Review each hit — only rewrite genuine asset-ref occurrences, not prose.
111
+
112
+ ## Step 4: Verify
113
+
114
+ Re-run the detector and confirm a clean tree:
115
+
116
+ ```bash
117
+ bun run cli validate <repo_path>
118
+ ```
119
+
120
+ Expect `All manifests valid` and exit `0`. If violations remain, return to
121
+ Step 3 (a missed inbound reference, or a second-order collision).
122
+
123
+ ## Step 5: Suggest commit
124
+
125
+ Summarize the renames applied (old → new) and the files touched, and suggest a
126
+ commit message, e.g.:
127
+
128
+ ```
129
+ fix(assets): make asset identities canonical kebab-case
130
+
131
+ - flow "CLI Concept" → cli-concept (+ refs)
132
+ ```
133
+
134
+ ## CHECKLIST
135
+
136
+ - [ ] Ran `skaile validate <repo_path>` and collected every violation
137
+ - [ ] Proposed kebab-case mapping reviewed with the user (collisions flagged)
138
+ - [ ] Fixed flow identity in `id:`, not `name:` (display title left intact)
139
+ - [ ] Updated manifest identity, directory name, AND all inbound references
140
+ - [ ] Re-ran `skaile validate` to a clean (exit 0) tree before committing