skill-universe 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (334) hide show
  1. package/README.md +24 -0
  2. package/bin/skillc.mjs +3 -0
  3. package/build/dev/javascript/argv/_gleam_artefacts/argv.cache +0 -0
  4. package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_inline +0 -0
  5. package/build/dev/javascript/argv/_gleam_artefacts/argv.cache_meta +0 -0
  6. package/build/dev/javascript/argv/argv.erl +12 -0
  7. package/build/dev/javascript/argv/argv.mjs +31 -0
  8. package/build/dev/javascript/argv/argv_ffi.erl +27 -0
  9. package/build/dev/javascript/argv/argv_ffi.mjs +20 -0
  10. package/build/dev/javascript/argv/gleam.mjs +1 -0
  11. package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache +0 -0
  12. package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_inline +0 -0
  13. package/build/dev/javascript/filepath/_gleam_artefacts/filepath.cache_meta +0 -0
  14. package/build/dev/javascript/filepath/filepath.erl +425 -0
  15. package/build/dev/javascript/filepath/filepath.mjs +529 -0
  16. package/build/dev/javascript/filepath/filepath_ffi.erl +9 -0
  17. package/build/dev/javascript/filepath/filepath_ffi.mjs +6 -0
  18. package/build/dev/javascript/filepath/gleam.mjs +1 -0
  19. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache +0 -0
  20. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_inline +0 -0
  21. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bit_array.cache_meta +0 -0
  22. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache +0 -0
  23. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_inline +0 -0
  24. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bool.cache_meta +0 -0
  25. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache +0 -0
  26. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_inline +0 -0
  27. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@bytes_tree.cache_meta +0 -0
  28. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache +0 -0
  29. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_inline +0 -0
  30. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dict.cache_meta +0 -0
  31. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache +0 -0
  32. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_inline +0 -0
  33. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic.cache_meta +0 -0
  34. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache +0 -0
  35. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_inline +0 -0
  36. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@dynamic@decode.cache_meta +0 -0
  37. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache +0 -0
  38. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_inline +0 -0
  39. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@float.cache_meta +0 -0
  40. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache +0 -0
  41. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_inline +0 -0
  42. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@function.cache_meta +0 -0
  43. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache +0 -0
  44. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_inline +0 -0
  45. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@int.cache_meta +0 -0
  46. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache +0 -0
  47. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_inline +0 -0
  48. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@io.cache_meta +0 -0
  49. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache +0 -0
  50. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_inline +0 -0
  51. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@list.cache_meta +0 -0
  52. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache +0 -0
  53. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_inline +0 -0
  54. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@option.cache_meta +0 -0
  55. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache +0 -0
  56. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_inline +0 -0
  57. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@order.cache_meta +0 -0
  58. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache +0 -0
  59. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_inline +0 -0
  60. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@pair.cache_meta +0 -0
  61. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache +0 -0
  62. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_inline +0 -0
  63. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@result.cache_meta +0 -0
  64. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache +0 -0
  65. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_inline +0 -0
  66. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@set.cache_meta +0 -0
  67. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache +0 -0
  68. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_inline +0 -0
  69. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string.cache_meta +0 -0
  70. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache +0 -0
  71. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_inline +0 -0
  72. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@string_tree.cache_meta +0 -0
  73. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache +0 -0
  74. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_inline +0 -0
  75. package/build/dev/javascript/gleam_stdlib/_gleam_artefacts/gleam@uri.cache_meta +0 -0
  76. package/build/dev/javascript/gleam_stdlib/dict.mjs +710 -0
  77. package/build/dev/javascript/gleam_stdlib/gleam/bit_array.mjs +285 -0
  78. package/build/dev/javascript/gleam_stdlib/gleam/bool.mjs +313 -0
  79. package/build/dev/javascript/gleam_stdlib/gleam/bytes_tree.mjs +225 -0
  80. package/build/dev/javascript/gleam_stdlib/gleam/dict.mjs +456 -0
  81. package/build/dev/javascript/gleam_stdlib/gleam/dynamic/decode.mjs +985 -0
  82. package/build/dev/javascript/gleam_stdlib/gleam/dynamic.mjs +35 -0
  83. package/build/dev/javascript/gleam_stdlib/gleam/float.mjs +572 -0
  84. package/build/dev/javascript/gleam_stdlib/gleam/function.mjs +6 -0
  85. package/build/dev/javascript/gleam_stdlib/gleam/int.mjs +832 -0
  86. package/build/dev/javascript/gleam_stdlib/gleam/io.mjs +8 -0
  87. package/build/dev/javascript/gleam_stdlib/gleam/list.mjs +3160 -0
  88. package/build/dev/javascript/gleam_stdlib/gleam/option.mjs +418 -0
  89. package/build/dev/javascript/gleam_stdlib/gleam/order.mjs +178 -0
  90. package/build/dev/javascript/gleam_stdlib/gleam/pair.mjs +102 -0
  91. package/build/dev/javascript/gleam_stdlib/gleam/result.mjs +480 -0
  92. package/build/dev/javascript/gleam_stdlib/gleam/set.mjs +416 -0
  93. package/build/dev/javascript/gleam_stdlib/gleam/string.mjs +723 -0
  94. package/build/dev/javascript/gleam_stdlib/gleam/string_tree.mjs +133 -0
  95. package/build/dev/javascript/gleam_stdlib/gleam/uri.mjs +1155 -0
  96. package/build/dev/javascript/gleam_stdlib/gleam.mjs +1 -0
  97. package/build/dev/javascript/gleam_stdlib/gleam@bit_array.erl +347 -0
  98. package/build/dev/javascript/gleam_stdlib/gleam@bool.erl +352 -0
  99. package/build/dev/javascript/gleam_stdlib/gleam@bytes_tree.erl +211 -0
  100. package/build/dev/javascript/gleam_stdlib/gleam@dict.erl +521 -0
  101. package/build/dev/javascript/gleam_stdlib/gleam@dynamic.erl +106 -0
  102. package/build/dev/javascript/gleam_stdlib/gleam@dynamic@decode.erl +1112 -0
  103. package/build/dev/javascript/gleam_stdlib/gleam@float.erl +764 -0
  104. package/build/dev/javascript/gleam_stdlib/gleam@function.erl +18 -0
  105. package/build/dev/javascript/gleam_stdlib/gleam@int.erl +1004 -0
  106. package/build/dev/javascript/gleam_stdlib/gleam@io.erl +80 -0
  107. package/build/dev/javascript/gleam_stdlib/gleam@list.erl +2832 -0
  108. package/build/dev/javascript/gleam_stdlib/gleam@option.erl +413 -0
  109. package/build/dev/javascript/gleam_stdlib/gleam@order.erl +200 -0
  110. package/build/dev/javascript/gleam_stdlib/gleam@pair.erl +110 -0
  111. package/build/dev/javascript/gleam_stdlib/gleam@result.erl +532 -0
  112. package/build/dev/javascript/gleam_stdlib/gleam@set.erl +433 -0
  113. package/build/dev/javascript/gleam_stdlib/gleam@string.erl +1012 -0
  114. package/build/dev/javascript/gleam_stdlib/gleam@string_tree.erl +207 -0
  115. package/build/dev/javascript/gleam_stdlib/gleam@uri.erl +1049 -0
  116. package/build/dev/javascript/gleam_stdlib/gleam_stdlib.erl +529 -0
  117. package/build/dev/javascript/gleam_stdlib/gleam_stdlib.mjs +1050 -0
  118. package/build/dev/javascript/gleam_version +1 -0
  119. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache +0 -0
  120. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_inline +0 -0
  121. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit.cache_meta +0 -0
  122. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache +0 -0
  123. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_inline +0 -0
  124. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@gleam_panic.cache_meta +0 -0
  125. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache +0 -0
  126. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_inline +0 -0
  127. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@internal@reporting.cache_meta +0 -0
  128. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache +0 -0
  129. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_inline +0 -0
  130. package/build/dev/javascript/gleeunit/_gleam_artefacts/gleeunit@should.cache_meta +0 -0
  131. package/build/dev/javascript/gleeunit/gleam.mjs +1 -0
  132. package/build/dev/javascript/gleeunit/gleeunit/internal/gleam_panic.mjs +180 -0
  133. package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.erl +49 -0
  134. package/build/dev/javascript/gleeunit/gleeunit/internal/gleeunit_gleam_panic_ffi.mjs +91 -0
  135. package/build/dev/javascript/gleeunit/gleeunit/internal/reporting.mjs +256 -0
  136. package/build/dev/javascript/gleeunit/gleeunit/should.mjs +135 -0
  137. package/build/dev/javascript/gleeunit/gleeunit.erl +89 -0
  138. package/build/dev/javascript/gleeunit/gleeunit.mjs +62 -0
  139. package/build/dev/javascript/gleeunit/gleeunit@internal@gleam_panic.erl +56 -0
  140. package/build/dev/javascript/gleeunit/gleeunit@internal@reporting.erl +343 -0
  141. package/build/dev/javascript/gleeunit/gleeunit@should.erl +153 -0
  142. package/build/dev/javascript/gleeunit/gleeunit_ffi.erl +21 -0
  143. package/build/dev/javascript/gleeunit/gleeunit_ffi.mjs +100 -0
  144. package/build/dev/javascript/gleeunit/gleeunit_progress.erl +72 -0
  145. package/build/dev/javascript/prelude.mjs +1575 -0
  146. package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache +0 -0
  147. package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_inline +0 -0
  148. package/build/dev/javascript/simplifile/_gleam_artefacts/simplifile.cache_meta +0 -0
  149. package/build/dev/javascript/simplifile/gleam.mjs +1 -0
  150. package/build/dev/javascript/simplifile/simplifile.erl +893 -0
  151. package/build/dev/javascript/simplifile/simplifile.mjs +893 -0
  152. package/build/dev/javascript/simplifile/simplifile_erl.erl +244 -0
  153. package/build/dev/javascript/simplifile/simplifile_js.mjs +400 -0
  154. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache +0 -0
  155. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_inline +0 -0
  156. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_meta +0 -0
  157. package/build/dev/javascript/skillc/_gleam_artefacts/cli_test.cache_warnings +0 -0
  158. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache +0 -0
  159. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_inline +0 -0
  160. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_meta +0 -0
  161. package/build/dev/javascript/skillc/_gleam_artefacts/compiler_test.cache_warnings +0 -0
  162. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache +0 -0
  163. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_inline +0 -0
  164. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_meta +0 -0
  165. package/build/dev/javascript/skillc/_gleam_artefacts/config_test.cache_warnings +0 -0
  166. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache +0 -0
  167. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_inline +0 -0
  168. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_meta +0 -0
  169. package/build/dev/javascript/skillc/_gleam_artefacts/importer_test.cache_warnings +0 -0
  170. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache +0 -0
  171. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_inline +0 -0
  172. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_meta +0 -0
  173. package/build/dev/javascript/skillc/_gleam_artefacts/parser_test.cache_warnings +0 -0
  174. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache +0 -0
  175. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_inline +0 -0
  176. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_meta +0 -0
  177. package/build/dev/javascript/skillc/_gleam_artefacts/path_test.cache_warnings +0 -0
  178. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache +0 -0
  179. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_inline +0 -0
  180. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_meta +0 -0
  181. package/build/dev/javascript/skillc/_gleam_artefacts/provider_test.cache_warnings +0 -0
  182. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache +0 -0
  183. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_inline +0 -0
  184. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_meta +0 -0
  185. package/build/dev/javascript/skillc/_gleam_artefacts/registry_test.cache_warnings +0 -0
  186. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache +0 -0
  187. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_inline +0 -0
  188. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_meta +0 -0
  189. package/build/dev/javascript/skillc/_gleam_artefacts/scaffold_test.cache_warnings +0 -0
  190. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache +0 -0
  191. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_inline +0 -0
  192. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_meta +0 -0
  193. package/build/dev/javascript/skillc/_gleam_artefacts/skillc.cache_warnings +0 -0
  194. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache +0 -0
  195. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_inline +0 -0
  196. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_meta +0 -0
  197. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@compiler.cache_warnings +0 -0
  198. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache +0 -0
  199. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_inline +0 -0
  200. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_meta +0 -0
  201. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@config.cache_warnings +0 -0
  202. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache +0 -0
  203. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_inline +0 -0
  204. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_meta +0 -0
  205. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@error.cache_warnings +0 -0
  206. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache +0 -0
  207. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_inline +0 -0
  208. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_meta +0 -0
  209. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@fs.cache_warnings +0 -0
  210. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache +0 -0
  211. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_inline +0 -0
  212. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_meta +0 -0
  213. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@importer.cache_warnings +0 -0
  214. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache +0 -0
  215. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_inline +0 -0
  216. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_meta +0 -0
  217. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@parser.cache_warnings +0 -0
  218. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache +0 -0
  219. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_inline +0 -0
  220. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_meta +0 -0
  221. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@path.cache_warnings +0 -0
  222. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache +0 -0
  223. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_inline +0 -0
  224. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_meta +0 -0
  225. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@platform.cache_warnings +0 -0
  226. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache +0 -0
  227. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_inline +0 -0
  228. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_meta +0 -0
  229. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@provider.cache_warnings +0 -0
  230. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache +0 -0
  231. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_inline +0 -0
  232. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_meta +0 -0
  233. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@registry.cache_warnings +0 -0
  234. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache +0 -0
  235. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_inline +0 -0
  236. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_meta +0 -0
  237. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@scaffold.cache_warnings +0 -0
  238. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache +0 -0
  239. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_inline +0 -0
  240. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_meta +0 -0
  241. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@semver.cache_warnings +0 -0
  242. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache +0 -0
  243. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_inline +0 -0
  244. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_meta +0 -0
  245. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@shell.cache_warnings +0 -0
  246. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache +0 -0
  247. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_inline +0 -0
  248. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_meta +0 -0
  249. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@template.cache_warnings +0 -0
  250. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache +0 -0
  251. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_inline +0 -0
  252. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_meta +0 -0
  253. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@types.cache_warnings +0 -0
  254. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache +0 -0
  255. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_inline +0 -0
  256. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_meta +0 -0
  257. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@version_constraint.cache_warnings +0 -0
  258. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache +0 -0
  259. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_inline +0 -0
  260. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_meta +0 -0
  261. package/build/dev/javascript/skillc/_gleam_artefacts/skillc@yaml.cache_warnings +0 -0
  262. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache +0 -0
  263. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_inline +0 -0
  264. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_meta +0 -0
  265. package/build/dev/javascript/skillc/_gleam_artefacts/skillc_test.cache_warnings +0 -0
  266. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache +0 -0
  267. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_inline +0 -0
  268. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_meta +0 -0
  269. package/build/dev/javascript/skillc/_gleam_artefacts/template_test.cache_warnings +0 -0
  270. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache +0 -0
  271. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_inline +0 -0
  272. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_meta +0 -0
  273. package/build/dev/javascript/skillc/_gleam_artefacts/version_constraint_test.cache_warnings +0 -0
  274. package/build/dev/javascript/skillc/cli_test.mjs +461 -0
  275. package/build/dev/javascript/skillc/compiler_test.mjs +3089 -0
  276. package/build/dev/javascript/skillc/config_test.mjs +308 -0
  277. package/build/dev/javascript/skillc/gleam.main.mjs +2 -0
  278. package/build/dev/javascript/skillc/gleam.mjs +1 -0
  279. package/build/dev/javascript/skillc/importer_test.mjs +1643 -0
  280. package/build/dev/javascript/skillc/parser_test.mjs +1601 -0
  281. package/build/dev/javascript/skillc/path_test.mjs +26 -0
  282. package/build/dev/javascript/skillc/provider_test.mjs +221 -0
  283. package/build/dev/javascript/skillc/registry_test.mjs +359 -0
  284. package/build/dev/javascript/skillc/scaffold_test.mjs +405 -0
  285. package/build/dev/javascript/skillc/skillc/compiler.mjs +724 -0
  286. package/build/dev/javascript/skillc/skillc/config.mjs +172 -0
  287. package/build/dev/javascript/skillc/skillc/error.mjs +145 -0
  288. package/build/dev/javascript/skillc/skillc/fs.mjs +40 -0
  289. package/build/dev/javascript/skillc/skillc/importer.mjs +975 -0
  290. package/build/dev/javascript/skillc/skillc/parser.mjs +427 -0
  291. package/build/dev/javascript/skillc/skillc/path.mjs +52 -0
  292. package/build/dev/javascript/skillc/skillc/platform.mjs +44 -0
  293. package/build/dev/javascript/skillc/skillc/provider.mjs +86 -0
  294. package/build/dev/javascript/skillc/skillc/registry.mjs +701 -0
  295. package/build/dev/javascript/skillc/skillc/scaffold.mjs +117 -0
  296. package/build/dev/javascript/skillc/skillc/semver.mjs +293 -0
  297. package/build/dev/javascript/skillc/skillc/shell.mjs +14 -0
  298. package/build/dev/javascript/skillc/skillc/template.mjs +1177 -0
  299. package/build/dev/javascript/skillc/skillc/types.mjs +249 -0
  300. package/build/dev/javascript/skillc/skillc/version_constraint.mjs +290 -0
  301. package/build/dev/javascript/skillc/skillc/yaml.mjs +51 -0
  302. package/build/dev/javascript/skillc/skillc.mjs +873 -0
  303. package/build/dev/javascript/skillc/skillc_ffi.mjs +30 -0
  304. package/build/dev/javascript/skillc/skillc_test.mjs +5 -0
  305. package/build/dev/javascript/skillc/template_test.mjs +1638 -0
  306. package/build/dev/javascript/skillc/version_constraint_test.mjs +1325 -0
  307. package/build/dev/javascript/yay/_gleam_artefacts/yay.cache +0 -0
  308. package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_inline +0 -0
  309. package/build/dev/javascript/yay/_gleam_artefacts/yay.cache_meta +0 -0
  310. package/build/dev/javascript/yay/gleam.mjs +1 -0
  311. package/build/dev/javascript/yay/yaml_ffi.erl +106 -0
  312. package/build/dev/javascript/yay/yaml_ffi.mjs +373 -0
  313. package/build/dev/javascript/yay/yay.erl +1218 -0
  314. package/build/dev/javascript/yay/yay.mjs +1403 -0
  315. package/package.json +28 -0
  316. package/src/skillc/compiler.gleam +561 -0
  317. package/src/skillc/config.gleam +91 -0
  318. package/src/skillc/error.gleam +37 -0
  319. package/src/skillc/fs.gleam +31 -0
  320. package/src/skillc/importer.gleam +709 -0
  321. package/src/skillc/parser.gleam +279 -0
  322. package/src/skillc/path.gleam +30 -0
  323. package/src/skillc/platform.gleam +25 -0
  324. package/src/skillc/provider.gleam +58 -0
  325. package/src/skillc/registry.gleam +472 -0
  326. package/src/skillc/scaffold.gleam +112 -0
  327. package/src/skillc/semver.gleam +165 -0
  328. package/src/skillc/shell.gleam +12 -0
  329. package/src/skillc/template.gleam +885 -0
  330. package/src/skillc/types.gleam +93 -0
  331. package/src/skillc/version_constraint.gleam +163 -0
  332. package/src/skillc/yaml.gleam +27 -0
  333. package/src/skillc.gleam +466 -0
  334. package/src/skillc_ffi.mjs +30 -0
@@ -0,0 +1,466 @@
1
+ import argv
2
+ import gleam/io
3
+ import gleam/list
4
+ import gleam/option.{None, Some}
5
+ import gleam/result
6
+ import gleam/string
7
+ import simplifile
8
+ import skillc/compiler
9
+ import skillc/config
10
+ import skillc/error
11
+ import skillc/importer
12
+ import skillc/parser
13
+ import skillc/provider
14
+ import skillc/registry
15
+ import skillc/scaffold
16
+ import skillc/semver
17
+ import skillc/types
18
+ import skillc/version_constraint
19
+
20
+ pub fn version() -> String {
21
+ "1.1.0"
22
+ }
23
+
24
+ pub fn main() {
25
+ case run(argv.load().arguments) {
26
+ Ok(output) -> io.println(output)
27
+ Error(output) -> {
28
+ io.println_error(output)
29
+ halt(1)
30
+ }
31
+ }
32
+ }
33
+
34
+ pub fn run(args: List(String)) -> Result(String, String) {
35
+ case args {
36
+ ["compile", ..rest] -> run_compile(rest)
37
+ ["check", skill_dir] -> do_check(skill_dir)
38
+ ["init", ..rest] -> run_init(rest)
39
+ ["publish", ..rest] -> run_publish(rest)
40
+ ["search", query] -> do_search(query)
41
+ ["install", ..rest] -> run_install(rest)
42
+ ["list", ..rest] -> run_list(rest)
43
+ ["import", ..rest] -> run_import(rest)
44
+ ["config", "init", skill_dir] -> do_config_init(skill_dir)
45
+ ["config", "check", skill_dir] -> do_config_check(skill_dir)
46
+ ["version"] -> Ok("skill-universe " <> version())
47
+ ["help"] -> Ok(usage_text())
48
+ ["--help"] -> Ok(usage_text())
49
+ _ -> Error(usage_text())
50
+ }
51
+ }
52
+
53
+ fn run_compile(args: List(String)) -> Result(String, String) {
54
+ case args {
55
+ [skill_dir, "--target", target] ->
56
+ do_compile(skill_dir, target, skill_dir <> "/dist")
57
+ [skill_dir, "--target", target, "--output", output] ->
58
+ do_compile(skill_dir, target, output)
59
+ [skill_dir, "--providers", providers_str] ->
60
+ do_compile_providers(skill_dir, providers_str, skill_dir <> "/dist")
61
+ [skill_dir, "--providers", providers_str, "--output", output] ->
62
+ do_compile_providers(skill_dir, providers_str, output)
63
+ [skill_dir, "--output", output, "--providers", providers_str] ->
64
+ do_compile_providers(skill_dir, providers_str, output)
65
+ [skill_dir] -> do_compile_all(skill_dir, skill_dir <> "/dist")
66
+ [skill_dir, "--output", output] -> do_compile_all(skill_dir, output)
67
+ _ -> Error(usage_text())
68
+ }
69
+ }
70
+
71
+ fn run_init(args: List(String)) -> Result(String, String) {
72
+ case args {
73
+ [skill_dir, "--name", name] -> do_init(skill_dir, name)
74
+ [skill_dir] -> do_init(skill_dir, name_from_path(skill_dir))
75
+ _ -> Error(usage_text())
76
+ }
77
+ }
78
+
79
+ fn run_publish(args: List(String)) -> Result(String, String) {
80
+ case args {
81
+ [skill_dir, "--repo", repo] -> do_publish(skill_dir, repo)
82
+ [skill_dir] -> do_publish_infer(skill_dir)
83
+ _ -> Error(usage_text())
84
+ }
85
+ }
86
+
87
+ fn run_install(args: List(String)) -> Result(String, String) {
88
+ case args {
89
+ [spec, "--target", target, "--output", dir] ->
90
+ do_install(spec, Some(target), dir)
91
+ [spec, "--output", dir, "--target", target] ->
92
+ do_install(spec, Some(target), dir)
93
+ [spec, "--target", target] -> do_install(spec, Some(target), "./skills")
94
+ [spec, "--output", dir] -> do_install(spec, None, dir)
95
+ [spec] -> do_install(spec, None, "./skills")
96
+ _ -> Error(usage_text())
97
+ }
98
+ }
99
+
100
+ fn run_list(args: List(String)) -> Result(String, String) {
101
+ case args {
102
+ ["--installed", "--output", dir] -> do_list_installed(dir)
103
+ ["--installed"] -> do_list_installed("./skills")
104
+ [spec] -> {
105
+ // Parse spec to extract optional skill name: "owner/repo" or "owner/repo/skill-name"
106
+ let segments = string.split(spec, "/")
107
+ case segments {
108
+ [owner, repo, skill_name] ->
109
+ do_list_versions(owner <> "/" <> repo, Some(skill_name))
110
+ _ -> do_list_versions(spec, None)
111
+ }
112
+ }
113
+ _ -> Error(usage_text())
114
+ }
115
+ }
116
+
117
+ fn run_import(args: List(String)) -> Result(String, String) {
118
+ case args {
119
+ [source] -> do_import(source, None, "./")
120
+ [source, "--provider", p] -> do_import(source, Some(p), "./")
121
+ [source, "--output", dir] -> do_import(source, None, dir)
122
+ [source, "--provider", p, "--output", dir] ->
123
+ do_import(source, Some(p), dir)
124
+ [source, "--output", dir, "--provider", p] ->
125
+ do_import(source, Some(p), dir)
126
+ _ -> Error(usage_text())
127
+ }
128
+ }
129
+
130
+ fn do_compile(
131
+ skill_dir: String,
132
+ target: String,
133
+ output_dir: String,
134
+ ) -> Result(String, String) {
135
+ case compiler.compile(skill_dir, target) {
136
+ Ok(compiled) -> {
137
+ let warning_lines = format_warnings(compiled.warnings)
138
+ case compiler.emit(compiled, output_dir, compiled.name) {
139
+ Ok(_) ->
140
+ Ok(warning_lines <> "Compiled " <> target <> " -> " <> output_dir)
141
+ Error(err) -> Error("Error: " <> error.to_string(err))
142
+ }
143
+ }
144
+ Error(err) -> Error("Error: " <> error.to_string(err))
145
+ }
146
+ }
147
+
148
+ fn do_compile_all(
149
+ skill_dir: String,
150
+ output_dir: String,
151
+ ) -> Result(String, String) {
152
+ case compiler.compile_all(skill_dir) {
153
+ Ok(compiled_list) -> {
154
+ use result <- result.try(emit_compiled_list(compiled_list, output_dir))
155
+ Ok(result <> check_deps_after_compile(skill_dir, output_dir))
156
+ }
157
+ Error(err) -> Error("Error: " <> error.to_string(err))
158
+ }
159
+ }
160
+
161
+ fn do_compile_providers(
162
+ skill_dir: String,
163
+ providers_str: String,
164
+ output_dir: String,
165
+ ) -> Result(String, String) {
166
+ let providers =
167
+ string.split(providers_str, ",")
168
+ |> list.map(string.trim)
169
+ |> list.filter(fn(s) { !string.is_empty(s) })
170
+ case compiler.compile_providers(skill_dir, providers) {
171
+ Ok(compiled_list) -> {
172
+ use result <- result.try(emit_compiled_list(compiled_list, output_dir))
173
+ Ok(result <> check_deps_after_compile(skill_dir, output_dir))
174
+ }
175
+ Error(err) -> Error("Error: " <> error.to_string(err))
176
+ }
177
+ }
178
+
179
+ fn emit_compiled_list(
180
+ compiled_list: List(types.CompiledSkill),
181
+ output_dir: String,
182
+ ) -> Result(String, String) {
183
+ use lines <- result.try(
184
+ list.try_map(compiled_list, fn(compiled) {
185
+ let warning_lines = format_warnings(compiled.warnings)
186
+ case compiler.emit(compiled, output_dir, compiled.name) {
187
+ Ok(_) ->
188
+ Ok(
189
+ warning_lines
190
+ <> "Compiled "
191
+ <> types.provider_to_string(compiled.provider)
192
+ <> " -> "
193
+ <> output_dir,
194
+ )
195
+ Error(err) -> Error("Error: " <> error.to_string(err))
196
+ }
197
+ }),
198
+ )
199
+ Ok(string.join(lines, "\n"))
200
+ }
201
+
202
+ fn check_deps_after_compile(
203
+ skill_dir: String,
204
+ output_dir: String,
205
+ ) -> String {
206
+ case simplifile.read(skill_dir <> "/skill.yaml") {
207
+ Ok(content) ->
208
+ case parser.parse_skill_yaml(content) {
209
+ Ok(skill) -> format_warnings(compiler.check_dependencies(skill, output_dir))
210
+ Error(_) -> ""
211
+ }
212
+ Error(_) -> ""
213
+ }
214
+ }
215
+
216
+ fn do_init(skill_dir: String, name: String) -> Result(String, String) {
217
+ case scaffold.init_skill(skill_dir, name) {
218
+ Ok(_) -> Ok("Created skill '" <> name <> "' in " <> skill_dir)
219
+ Error(err) -> Error("Error: " <> error.to_string(err))
220
+ }
221
+ }
222
+
223
+ fn do_publish(skill_dir: String, repo: String) -> Result(String, String) {
224
+ registry.publish(skill_dir, repo)
225
+ |> result.map_error(fn(err) { "Error: " <> error.to_string(err) })
226
+ }
227
+
228
+ fn do_publish_infer(skill_dir: String) -> Result(String, String) {
229
+ case registry.infer_repo(skill_dir) {
230
+ Ok(repo) -> do_publish(skill_dir, repo)
231
+ Error(err) -> Error("Error: " <> error.to_string(err))
232
+ }
233
+ }
234
+
235
+ fn do_search(query: String) -> Result(String, String) {
236
+ registry.search(query)
237
+ |> result.map_error(fn(err) { "Error: " <> error.to_string(err) })
238
+ }
239
+
240
+ fn do_install(
241
+ spec: String,
242
+ target: option.Option(String),
243
+ output_dir: String,
244
+ ) -> Result(String, String) {
245
+ registry.install(spec, target, output_dir)
246
+ |> result.map_error(fn(err) { "Error: " <> error.to_string(err) })
247
+ }
248
+
249
+ fn do_list_versions(
250
+ repo: String,
251
+ skill_name: option.Option(String),
252
+ ) -> Result(String, String) {
253
+ registry.list_versions(repo, skill_name)
254
+ |> result.map_error(fn(err) { "Error: " <> error.to_string(err) })
255
+ }
256
+
257
+ fn do_list_installed(output_dir: String) -> Result(String, String) {
258
+ registry.list_installed(output_dir)
259
+ |> result.map_error(fn(err) { "Error: " <> error.to_string(err) })
260
+ }
261
+
262
+ fn do_import(
263
+ source: String,
264
+ provider_str: option.Option(String),
265
+ output_dir: String,
266
+ ) -> Result(String, String) {
267
+ use provider_hint <- result.try(case provider_str {
268
+ Some(p) ->
269
+ case types.provider_from_string(p) {
270
+ Ok(provider) -> Ok(Some(provider))
271
+ Error(_) ->
272
+ Error(
273
+ "Error: Unknown provider '"
274
+ <> p
275
+ <> "'. Use "
276
+ <> types.all_provider_names(),
277
+ )
278
+ }
279
+ None -> Ok(None)
280
+ })
281
+ case importer.import_skill(source, provider_hint, output_dir) {
282
+ Ok(result) -> {
283
+ let provider_name = types.provider_to_string(result.provider)
284
+ Ok(
285
+ "Imported "
286
+ <> provider_name
287
+ <> " skill -> "
288
+ <> output_dir
289
+ <> "\nNote: Import is lossy. Templates are already resolved, and dependencies/config/metadata sections from the original skill.yaml cannot be recovered.",
290
+ )
291
+ }
292
+ Error(err) -> Error("Error: " <> error.to_string(err))
293
+ }
294
+ }
295
+
296
+ fn do_config_init(skill_dir: String) -> Result(String, String) {
297
+ case simplifile.read(skill_dir <> "/skill.yaml") {
298
+ Error(_) -> Error("Error: skill.yaml not found in " <> skill_dir)
299
+ Ok(content) ->
300
+ case parser.parse_skill_yaml(content) {
301
+ Error(err) -> Error("Error: " <> error.to_string(err))
302
+ Ok(skill) -> Ok(config.generate_template(skill))
303
+ }
304
+ }
305
+ }
306
+
307
+ fn do_config_check(skill_dir: String) -> Result(String, String) {
308
+ case simplifile.read(skill_dir <> "/skill.yaml") {
309
+ Error(_) -> Error("Error: skill.yaml not found in " <> skill_dir)
310
+ Ok(content) ->
311
+ case parser.parse_skill_yaml(content) {
312
+ Error(err) -> Error("Error: " <> error.to_string(err))
313
+ Ok(skill) -> {
314
+ let statuses = config.check(skill)
315
+ let missing =
316
+ list.filter_map(statuses, fn(s) {
317
+ case s {
318
+ config.MissingRequired(field:) ->
319
+ Ok(" MISSING: " <> field.name <> " - " <> field.description)
320
+ _ -> Error(Nil)
321
+ }
322
+ })
323
+ let satisfied =
324
+ list.filter_map(statuses, fn(s) {
325
+ case s {
326
+ config.Provided(field:, ..) -> Ok(" OK: " <> field.name)
327
+ config.DefaultUsed(field:, default:) ->
328
+ Ok(" OK: " <> field.name <> " (default: " <> default <> ")")
329
+ config.Skipped(field:) ->
330
+ Ok(" OK: " <> field.name <> " (not set)")
331
+ config.MissingRequired(..) -> Error(Nil)
332
+ }
333
+ })
334
+ case missing {
335
+ [] ->
336
+ Ok(
337
+ "All configuration satisfied for "
338
+ <> skill.name
339
+ <> "\n"
340
+ <> string.join(satisfied, "\n"),
341
+ )
342
+ _ ->
343
+ Error(
344
+ "Missing configuration for "
345
+ <> skill.name
346
+ <> ":\n"
347
+ <> string.join(missing, "\n")
348
+ <> case satisfied {
349
+ [] -> ""
350
+ _ -> "\n\nSatisfied:\n" <> string.join(satisfied, "\n")
351
+ },
352
+ )
353
+ }
354
+ }
355
+ }
356
+ }
357
+ }
358
+
359
+ fn do_check(skill_dir: String) -> Result(String, String) {
360
+ case simplifile.read(skill_dir <> "/skill.yaml") {
361
+ Error(_) -> Error("Error: skill.yaml not found in " <> skill_dir)
362
+ Ok(content) -> {
363
+ case parser.parse_skill_yaml(content) {
364
+ Error(err) -> Error("Error: " <> error.to_string(err))
365
+ Ok(skill) -> {
366
+ let header = skill.name <> " v" <> semver.to_string(skill.version)
367
+ let instructions_warning = case
368
+ simplifile.is_file(skill_dir <> "/INSTRUCTIONS.md")
369
+ {
370
+ Ok(True) -> ""
371
+ _ -> "\nWarning: INSTRUCTIONS.md not found"
372
+ }
373
+ let providers_section = case provider.discover_providers(skill_dir) {
374
+ Ok([]) -> "\nNo supported providers found"
375
+ Ok(providers) -> {
376
+ let provider_lines =
377
+ list.map(providers, fn(p) {
378
+ " - " <> types.provider_to_string(p)
379
+ })
380
+ "\nSupported providers:\n" <> string.join(provider_lines, "\n")
381
+ }
382
+ Error(err) -> "\nError: " <> error.to_string(err)
383
+ }
384
+ Ok(header <> instructions_warning <> providers_section)
385
+ }
386
+ }
387
+ }
388
+ }
389
+ }
390
+
391
+ pub fn name_from_path(path: String) -> String {
392
+ let trimmed =
393
+ path
394
+ |> string.trim_end()
395
+ let trimmed = case string.ends_with(trimmed, "/") {
396
+ True -> string.drop_end(trimmed, 1)
397
+ False -> trimmed
398
+ }
399
+ case string.split(trimmed, "/") |> list.last() {
400
+ Ok(name) -> name
401
+ Error(_) -> trimmed
402
+ }
403
+ }
404
+
405
+ fn format_warnings(warnings: List(types.CompileWarning)) -> String {
406
+ case warnings {
407
+ [] -> ""
408
+ _ ->
409
+ list.map(warnings, fn(w) {
410
+ case w {
411
+ types.FrontmatterInInstructions(file) ->
412
+ "Warning: "
413
+ <> file
414
+ <> " contains YAML frontmatter which will be included as-is in the output"
415
+ types.MissingDependency(dep) ->
416
+ "Warning: missing dependency '"
417
+ <> dep.name
418
+ <> "' ("
419
+ <> version_constraint.to_string(dep.version)
420
+ <> ")"
421
+ }
422
+ })
423
+ |> string.join("\n")
424
+ |> fn(s) { s <> "\n" }
425
+ }
426
+ }
427
+
428
+ fn usage_text() -> String {
429
+ "skill-universe " <> version() <> " - Cross-platform skill compiler
430
+
431
+ Usage:
432
+ skill-universe compile <skill-dir> Compile all providers
433
+ skill-universe compile <skill-dir> --target <provider> Compile single provider
434
+ skill-universe compile <skill-dir> --providers <list> Compile selected providers
435
+ skill-universe compile <skill-dir> --output <dir> Compile with custom output
436
+ skill-universe check <skill-dir> Check supported providers
437
+ skill-universe init <skill-dir> Create a new skill
438
+ skill-universe import <source> Import a provider-specific skill
439
+ skill-universe import <source> --provider <provider> Import with explicit provider
440
+ skill-universe import <source> --output <dir> Import to custom output dir
441
+ skill-universe config init <skill-dir> Generate .env template
442
+ skill-universe config check <skill-dir> Check config env vars
443
+ skill-universe publish <skill-dir> Publish to GitHub Releases
444
+ skill-universe publish <skill-dir> --repo <owner/repo> Publish to specific repo
445
+ skill-universe search <query> Search for skills
446
+ skill-universe install <owner/repo> Install a skill
447
+ skill-universe install <owner/repo/skill-name> Install from multi-skill repo
448
+ skill-universe install <spec> --target <provider> Install for specific provider
449
+ skill-universe list <owner/repo> List available versions
450
+ skill-universe list <owner/repo/skill-name> List versions for a skill
451
+ skill-universe list --installed List installed skills
452
+ skill-universe version Show version
453
+ skill-universe help Show this help
454
+
455
+ Install spec formats:
456
+ owner/repo Latest release from repo
457
+ owner/repo@v1.0.0 Specific version from repo
458
+ owner/repo/skill-name Latest release of skill from multi-skill repo
459
+ owner/repo/skill-name@v1.0.0 Specific version of skill from multi-skill repo
460
+
461
+ Providers: openclaw, claude-code, codex"
462
+ }
463
+
464
+ @external(erlang, "erlang", "halt")
465
+ @external(javascript, "./skillc_ffi.mjs", "halt")
466
+ fn halt(code: Int) -> Nil
@@ -0,0 +1,30 @@
1
+ import { Ok, Error } from "../prelude.mjs";
2
+ import { execSync } from "child_process";
3
+ import os from "os";
4
+
5
+ export function halt(code) {
6
+ process.exit(code);
7
+ }
8
+
9
+ export function platform_string() {
10
+ return process.platform;
11
+ }
12
+
13
+ export function tmpdir() {
14
+ return os.tmpdir();
15
+ }
16
+
17
+ export function get_env(name) {
18
+ const value = process.env[name];
19
+ return value === undefined ? new Error(undefined) : new Ok(value);
20
+ }
21
+
22
+ export function exec(cmd) {
23
+ try {
24
+ const stdout = execSync(cmd, { encoding: "utf-8", timeout: 120000 });
25
+ return new Ok(stdout.trim());
26
+ } catch (err) {
27
+ const msg = err.stderr ? err.stderr.trim() : err.message;
28
+ return new Error(msg);
29
+ }
30
+ }