@aiwg/cli 0.0.0-bootstrap.0 → 2026.7.18

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 (467) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +22 -1
  3. package/bin/aiwg.mjs +349 -0
  4. package/dist/src/a2a/agent-card.js +145 -0
  5. package/dist/src/a2a/client.js +411 -0
  6. package/dist/src/a2a/hitl-cli.js +171 -0
  7. package/dist/src/a2a/hitl-driver.js +370 -0
  8. package/dist/src/a2a/hitl.js +181 -0
  9. package/dist/src/a2a/http.js +193 -0
  10. package/dist/src/a2a/jcs.js +128 -0
  11. package/dist/src/a2a/jws.js +187 -0
  12. package/dist/src/a2a/types.js +24 -0
  13. package/dist/src/a2a/webhook.js +240 -0
  14. package/dist/src/activity-log/cli.js +348 -0
  15. package/dist/src/activity-log/parser.js +81 -0
  16. package/dist/src/activity-log/types.js +50 -0
  17. package/dist/src/agents/agent-deployer.js +367 -0
  18. package/dist/src/agents/agent-packager.js +271 -0
  19. package/dist/src/agents/agent-validator.js +271 -0
  20. package/dist/src/agents/grounding/knowledge-base.js +161 -0
  21. package/dist/src/agents/grounding/types.js +12 -0
  22. package/dist/src/agents/index.js +10 -0
  23. package/dist/src/agents/packaged-agent-inventory.js +75 -0
  24. package/dist/src/agents/types.js +7 -0
  25. package/dist/src/api/index.d.ts +10 -0
  26. package/dist/src/api/index.js +10 -0
  27. package/dist/src/artifacts/address-parser.js +73 -0
  28. package/dist/src/artifacts/audit/cli.js +183 -0
  29. package/dist/src/artifacts/audit/drift.js +122 -0
  30. package/dist/src/artifacts/audit/types.js +12 -0
  31. package/dist/src/artifacts/backends/graphology-backend.js +160 -0
  32. package/dist/src/artifacts/backends/json-backend.js +129 -0
  33. package/dist/src/artifacts/backends/sqlite-backend.js +199 -0
  34. package/dist/src/artifacts/browser-export.js +622 -0
  35. package/dist/src/artifacts/capability-resolver.js +94 -0
  36. package/dist/src/artifacts/checksum-manifest.js +91 -0
  37. package/dist/src/artifacts/citation-parser.js +162 -0
  38. package/dist/src/artifacts/cli.js +1486 -0
  39. package/dist/src/artifacts/corpus-tools/citation-densify.js +311 -0
  40. package/dist/src/artifacts/corpus-tools/cli.js +393 -0
  41. package/dist/src/artifacts/corpus-tools/corpus-graph.js +225 -0
  42. package/dist/src/artifacts/corpus-tools/curator.js +186 -0
  43. package/dist/src/artifacts/corpus-tools/discovery-log.js +70 -0
  44. package/dist/src/artifacts/corpus-tools/funder-network.js +141 -0
  45. package/dist/src/artifacts/corpus-tools/induction-audit.js +233 -0
  46. package/dist/src/artifacts/corpus-tools/integrity-scan.js +202 -0
  47. package/dist/src/artifacts/corpus-tools/profile-communities.js +166 -0
  48. package/dist/src/artifacts/corpus-tools/profile-edges.js +72 -0
  49. package/dist/src/artifacts/corpus-tools/profile-embed.js +113 -0
  50. package/dist/src/artifacts/corpus-tools/profile-generate-fm.js +167 -0
  51. package/dist/src/artifacts/corpus-tools/profile-generate.js +181 -0
  52. package/dist/src/artifacts/corpus-tools/profile-metrics.js +98 -0
  53. package/dist/src/artifacts/corpus-tools/profile-status.js +86 -0
  54. package/dist/src/artifacts/corpus-tools/profile-temporal.js +139 -0
  55. package/dist/src/artifacts/corpus-tools/radar-init.js +93 -0
  56. package/dist/src/artifacts/corpus-tools/radar-report.js +118 -0
  57. package/dist/src/artifacts/corpus-tools/radar-shared.js +189 -0
  58. package/dist/src/artifacts/corpus-tools/radar-status.js +68 -0
  59. package/dist/src/artifacts/corpus-tools/sidecar-lint.js +233 -0
  60. package/dist/src/artifacts/corpus-tools/sidecar-repair.js +277 -0
  61. package/dist/src/artifacts/corpus-tools/snapshot.js +591 -0
  62. package/dist/src/artifacts/corpus-tools/source-types.js +164 -0
  63. package/dist/src/artifacts/corpus-tools/vision-extract.js +243 -0
  64. package/dist/src/artifacts/corpus-views/build.js +126 -0
  65. package/dist/src/artifacts/corpus-views/corpus-config.js +124 -0
  66. package/dist/src/artifacts/corpus-views/ref-parser.js +437 -0
  67. package/dist/src/artifacts/corpus-views/renderers.js +353 -0
  68. package/dist/src/artifacts/corpus-views/taxonomies.js +131 -0
  69. package/dist/src/artifacts/dep-graph.js +173 -0
  70. package/dist/src/artifacts/discover-facets.js +375 -0
  71. package/dist/src/artifacts/embedding-index.js +354 -0
  72. package/dist/src/artifacts/enrichment/cli.js +240 -0
  73. package/dist/src/artifacts/enrichment/prompt.js +47 -0
  74. package/dist/src/artifacts/enrichment/store.js +90 -0
  75. package/dist/src/artifacts/enrichment/types.js +12 -0
  76. package/dist/src/artifacts/fortemi-core-query-adapter.js +475 -0
  77. package/dist/src/artifacts/fortemi-core-sync.js +251 -0
  78. package/dist/src/artifacts/fortemi-shard-export.js +44 -0
  79. package/dist/src/artifacts/fulltext.js +108 -0
  80. package/dist/src/artifacts/graph-backend.js +51 -0
  81. package/dist/src/artifacts/graph-query.js +247 -0
  82. package/dist/src/artifacts/hybrid-query.js +225 -0
  83. package/dist/src/artifacts/index-builder.js +1089 -0
  84. package/dist/src/artifacts/index-reader.js +112 -0
  85. package/dist/src/artifacts/index-status.js +193 -0
  86. package/dist/src/artifacts/legacy-index-migration.js +169 -0
  87. package/dist/src/artifacts/move.js +154 -0
  88. package/dist/src/artifacts/operational-state.js +239 -0
  89. package/dist/src/artifacts/prebuilt-build-lock.js +49 -0
  90. package/dist/src/artifacts/query-engine.js +1955 -0
  91. package/dist/src/artifacts/source-graph.js +529 -0
  92. package/dist/src/artifacts/stats.js +169 -0
  93. package/dist/src/artifacts/types.js +606 -0
  94. package/dist/src/artifacts/views/cli.js +293 -0
  95. package/dist/src/artifacts/views/definition.js +170 -0
  96. package/dist/src/artifacts/views/store.js +149 -0
  97. package/dist/src/artifacts/views/types.js +8 -0
  98. package/dist/src/artifacts/watcher.js +255 -0
  99. package/dist/src/catalog/builtin-models.json +636 -0
  100. package/dist/src/catalog/cli.js +228 -0
  101. package/dist/src/catalog/cli.mjs +289 -0
  102. package/dist/src/catalog/index.js +15 -0
  103. package/dist/src/catalog/loader.js +217 -0
  104. package/dist/src/catalog/loader.mjs +251 -0
  105. package/dist/src/catalog/sources.json +41 -0
  106. package/dist/src/catalog/types.js +8 -0
  107. package/dist/src/channel/manager.mjs +504 -0
  108. package/dist/src/cli/agent-spawn.js +178 -0
  109. package/dist/src/cli/cli-extension-loader.js +245 -0
  110. package/dist/src/cli/command-log.js +275 -0
  111. package/dist/src/cli/config-loader.js +232 -0
  112. package/dist/src/cli/env.js +82 -0
  113. package/dist/src/cli/errors.js +150 -0
  114. package/dist/src/cli/find-package-root.js +40 -0
  115. package/dist/src/cli/git-hooks.js +250 -0
  116. package/dist/src/cli/handlers/agentcard.js +206 -0
  117. package/dist/src/cli/handlers/artifacts.js +76 -0
  118. package/dist/src/cli/handlers/best-practices-audit.js +280 -0
  119. package/dist/src/cli/handlers/cockpit.js +137 -0
  120. package/dist/src/cli/handlers/command-log.js +37 -0
  121. package/dist/src/cli/handlers/daemon.js +59 -0
  122. package/dist/src/cli/handlers/diagnose.js +300 -0
  123. package/dist/src/cli/handlers/execution-mode.js +105 -0
  124. package/dist/src/cli/handlers/feedback.js +341 -0
  125. package/dist/src/cli/handlers/help.js +147 -0
  126. package/dist/src/cli/handlers/index.js +302 -0
  127. package/dist/src/cli/handlers/init.js +179 -0
  128. package/dist/src/cli/handlers/install.js +129 -0
  129. package/dist/src/cli/handlers/issues.js +46 -0
  130. package/dist/src/cli/handlers/lint.js +42 -0
  131. package/dist/src/cli/handlers/local-executor.js +315 -0
  132. package/dist/src/cli/handlers/marketplace.js +168 -0
  133. package/dist/src/cli/handlers/mc.js +1010 -0
  134. package/dist/src/cli/handlers/models.js +352 -0
  135. package/dist/src/cli/handlers/packages.js +155 -0
  136. package/dist/src/cli/handlers/ralph-launcher.js +717 -0
  137. package/dist/src/cli/handlers/ralph.js +575 -0
  138. package/dist/src/cli/handlers/refresh.js +432 -0
  139. package/dist/src/cli/handlers/regenerate.js +336 -0
  140. package/dist/src/cli/handlers/repo-access.js +109 -0
  141. package/dist/src/cli/handlers/run.js +165 -0
  142. package/dist/src/cli/handlers/runtime-info.js +301 -0
  143. package/dist/src/cli/handlers/sandbox.js +197 -0
  144. package/dist/src/cli/handlers/scaffolding.js +149 -0
  145. package/dist/src/cli/handlers/script-runner.js +121 -0
  146. package/dist/src/cli/handlers/sdlc-accelerate.js +148 -0
  147. package/dist/src/cli/handlers/serve.js +1835 -0
  148. package/dist/src/cli/handlers/session.js +348 -0
  149. package/dist/src/cli/handlers/setup.js +440 -0
  150. package/dist/src/cli/handlers/skill-lint.js +367 -0
  151. package/dist/src/cli/handlers/skill-usage.js +74 -0
  152. package/dist/src/cli/handlers/steward.js +567 -0
  153. package/dist/src/cli/handlers/subcommands.js +1702 -0
  154. package/dist/src/cli/handlers/team.js +337 -0
  155. package/dist/src/cli/handlers/types.js +11 -0
  156. package/dist/src/cli/handlers/use.js +2772 -0
  157. package/dist/src/cli/handlers/utilities.js +703 -0
  158. package/dist/src/cli/handlers/version.js +134 -0
  159. package/dist/src/cli/handlers/workspace-context.js +93 -0
  160. package/dist/src/cli/handlers/workspace.js +126 -0
  161. package/dist/src/cli/help-generator.js +178 -0
  162. package/dist/src/cli/hooks/builtin/activity-log-hook.js +126 -0
  163. package/dist/src/cli/hooks/executor.js +96 -0
  164. package/dist/src/cli/hooks/index.js +15 -0
  165. package/dist/src/cli/hooks/registry.js +143 -0
  166. package/dist/src/cli/hooks/types.js +13 -0
  167. package/dist/src/cli/log.js +492 -0
  168. package/dist/src/cli/project-isolation/detect.js +70 -0
  169. package/dist/src/cli/project-isolation/index.js +7 -0
  170. package/dist/src/cli/project-isolation/signals.js +17 -0
  171. package/dist/src/cli/project-isolation/warning.js +102 -0
  172. package/dist/src/cli/prompt-utils.js +155 -0
  173. package/dist/src/cli/provider-deployment-plan.js +126 -0
  174. package/dist/src/cli/provider-resolution.js +119 -0
  175. package/dist/src/cli/router.js +305 -0
  176. package/dist/src/cli/scope-resolver.js +392 -0
  177. package/dist/src/cli/skill-usage.js +616 -0
  178. package/dist/src/cli/ui.js +224 -0
  179. package/dist/src/cli/watch-service.js +203 -0
  180. package/dist/src/cli/workflow-orchestrator.js +478 -0
  181. package/dist/src/cli/workspace-signals.js +321 -0
  182. package/dist/src/community/footer.js +14 -0
  183. package/dist/src/community/links.js +123 -0
  184. package/dist/src/community/milestones.js +46 -0
  185. package/dist/src/community/nudge-policy.js +93 -0
  186. package/dist/src/config/aiwg-config.js +883 -0
  187. package/dist/src/config/cli.js +703 -0
  188. package/dist/src/config/gitignore.js +156 -0
  189. package/dist/src/config/project-artifacts.js +76 -0
  190. package/dist/src/config/user-config.js +428 -0
  191. package/dist/src/config/user-registry.js +127 -0
  192. package/dist/src/config/workspace.js +276 -0
  193. package/dist/src/contributors/detect.js +39 -0
  194. package/dist/src/contributors/discover.js +172 -0
  195. package/dist/src/contributors/heuristic.js +186 -0
  196. package/dist/src/contributors/index.js +11 -0
  197. package/dist/src/contributors/types.js +13 -0
  198. package/dist/src/contributors/validation.js +116 -0
  199. package/dist/src/data/community.schema.json +43 -0
  200. package/dist/src/data/community.yaml +16 -0
  201. package/dist/src/extensions/capability-index.js +270 -0
  202. package/dist/src/extensions/claude-hooks-installer.js +268 -0
  203. package/dist/src/extensions/commands/definitions.js +3485 -0
  204. package/dist/src/extensions/deployment-registration.js +463 -0
  205. package/dist/src/extensions/index.js +22 -0
  206. package/dist/src/extensions/loader.js +132 -0
  207. package/dist/src/extensions/managed-marker.js +100 -0
  208. package/dist/src/extensions/manifest.js +196 -0
  209. package/dist/src/extensions/project-local-activity.js +114 -0
  210. package/dist/src/extensions/project-local-discovery.js +261 -0
  211. package/dist/src/extensions/project-local-doctor.js +281 -0
  212. package/dist/src/extensions/project-local-gitignore.js +176 -0
  213. package/dist/src/extensions/project-local-paths.js +121 -0
  214. package/dist/src/extensions/project-local-promote.js +218 -0
  215. package/dist/src/extensions/project-local-remove.js +373 -0
  216. package/dist/src/extensions/project-local-scaffold.js +252 -0
  217. package/dist/src/extensions/project-quickref.js +291 -0
  218. package/dist/src/extensions/registry.js +368 -0
  219. package/dist/src/extensions/shadow-resolver.js +271 -0
  220. package/dist/src/extensions/types.js +86 -0
  221. package/dist/src/extensions/upstream-registry.js +195 -0
  222. package/dist/src/extensions/validation.js +631 -0
  223. package/dist/src/features/catalog.js +88 -0
  224. package/dist/src/features/cli.js +197 -0
  225. package/dist/src/features/installer.js +57 -0
  226. package/dist/src/features/paths.js +14 -0
  227. package/dist/src/features/runtime.js +21 -0
  228. package/dist/src/features/status.js +134 -0
  229. package/dist/src/hooks/laziness-detection.js +532 -0
  230. package/dist/src/intake/git-history-analyzer.js +486 -0
  231. package/dist/src/intake/index.js +9 -0
  232. package/dist/src/issues/cli.js +327 -0
  233. package/dist/src/issues/index.js +5 -0
  234. package/dist/src/issues/live.js +154 -0
  235. package/dist/src/issues/local.js +666 -0
  236. package/dist/src/issues/sync.js +143 -0
  237. package/dist/src/issues/types.js +2 -0
  238. package/dist/src/issues/workflows.js +164 -0
  239. package/dist/src/kb/cli.js +173 -0
  240. package/dist/src/lint/cli.js +171 -0
  241. package/dist/src/lint/loader.js +225 -0
  242. package/dist/src/lint/reporters.js +141 -0
  243. package/dist/src/lint/runner.js +364 -0
  244. package/dist/src/lint/types.js +10 -0
  245. package/dist/src/marketplace/cache.js +110 -0
  246. package/dist/src/marketplace/identifier.js +63 -0
  247. package/dist/src/marketplace/registry.js +36 -0
  248. package/dist/src/marketplace/sources/clawhub.js +53 -0
  249. package/dist/src/marketplace/sources/git.js +45 -0
  250. package/dist/src/marketplace/types.js +9 -0
  251. package/dist/src/mcp/adapters/codex-runtime.js +224 -0
  252. package/dist/src/mcp/cli.mjs +1197 -0
  253. package/dist/src/mcp/elicitation.mjs +149 -0
  254. package/dist/src/mcp/helpers.mjs +287 -0
  255. package/dist/src/mcp/index.mjs +11 -0
  256. package/dist/src/mcp/profiles.js +263 -0
  257. package/dist/src/mcp/profiles.mjs +360 -0
  258. package/dist/src/mcp/registry.js +376 -0
  259. package/dist/src/mcp/registry.mjs +387 -0
  260. package/dist/src/mcp/server.mjs +633 -0
  261. package/dist/src/mcp/test-simple.mjs +271 -0
  262. package/dist/src/mcp/tools/command-run.mjs +101 -0
  263. package/dist/src/mcp/tools/discovery.mjs +291 -0
  264. package/dist/src/mcp/tools/interaction.mjs +87 -0
  265. package/dist/src/mcp/tools/orchestration.mjs +320 -0
  266. package/dist/src/mcp/tools/subsystems.mjs +640 -0
  267. package/dist/src/memory/cli.js +166 -0
  268. package/dist/src/memory/project-registry.js +282 -0
  269. package/dist/src/metrics/artifact-metrics.js +184 -0
  270. package/dist/src/metrics/context-budget.js +174 -0
  271. package/dist/src/metrics/token-counter.js +133 -0
  272. package/dist/src/models/config-loader.js +228 -0
  273. package/dist/src/models/index.js +22 -0
  274. package/dist/src/models/model-capabilities.v1.json +120 -0
  275. package/dist/src/models/model-catalog.v1.json +96 -0
  276. package/dist/src/models/model-discovery.js +521 -0
  277. package/dist/src/models/provider-models.js +73 -0
  278. package/dist/src/models/provider-policy.js +273 -0
  279. package/dist/src/models/resolver.js +245 -0
  280. package/dist/src/models/router.js +70 -0
  281. package/dist/src/models/types.js +8 -0
  282. package/dist/src/models/wrapper-deployment.js +178 -0
  283. package/dist/src/models/wrapper-route.js +54 -0
  284. package/dist/src/ops/cli.js +268 -0
  285. package/dist/src/ops/registry.js +623 -0
  286. package/dist/src/packages/adapters/clawhub.js +113 -0
  287. package/dist/src/packages/adapters/git.js +153 -0
  288. package/dist/src/packages/adapters/gitea.js +93 -0
  289. package/dist/src/packages/adapters/github.js +69 -0
  290. package/dist/src/packages/adapters/local-cache.js +89 -0
  291. package/dist/src/packages/package-registry.js +143 -0
  292. package/dist/src/packages/registry.js +238 -0
  293. package/dist/src/packages/types.js +11 -0
  294. package/dist/src/plugin/cross-framework-ops.js +475 -0
  295. package/dist/src/plugin/framework-config-loader.js +235 -0
  296. package/dist/src/plugin/framework-detector.js +186 -0
  297. package/dist/src/plugin/framework-isolator.js +341 -0
  298. package/dist/src/plugin/framework-migration.js +371 -0
  299. package/dist/src/plugin/metadata-validator.js +906 -0
  300. package/dist/src/plugin/plugin-installer.js +436 -0
  301. package/dist/src/plugin/plugin-status.js +369 -0
  302. package/dist/src/plugin/plugin-uninstaller.js +473 -0
  303. package/dist/src/plugin/registry-validator.js +344 -0
  304. package/dist/src/plugin/skill-command-translator.js +415 -0
  305. package/dist/src/plugin/workspace-creator.js +189 -0
  306. package/dist/src/plugin/workspace-migrator.js +821 -0
  307. package/dist/src/policy/authorization.js +390 -0
  308. package/dist/src/policy/repo-access.js +215 -0
  309. package/dist/src/provenance/cli.js +16 -0
  310. package/dist/src/providers/capability-matrix.js +300 -0
  311. package/dist/src/providers/capability-matrix.yaml +514 -0
  312. package/dist/src/providers/provider-definitions.js +977 -0
  313. package/dist/src/providers/provider-definitions.mjs +159 -0
  314. package/dist/src/providers/provider-inventory.js +169 -0
  315. package/dist/src/quality/feedback-ab.js +174 -0
  316. package/dist/src/quality/feedback-collector.js +176 -0
  317. package/dist/src/quality/feedback-tracker.js +123 -0
  318. package/dist/src/quality/patterns/adr.json +24 -0
  319. package/dist/src/quality/patterns/sad.json +24 -0
  320. package/dist/src/quality/patterns/test-plan.json +24 -0
  321. package/dist/src/quality/patterns/use-case.json +24 -0
  322. package/dist/src/quality/scoring.js +157 -0
  323. package/dist/src/reflections/cli.js +15 -0
  324. package/dist/src/release/plan.js +139 -0
  325. package/dist/src/research/cache/manager.js +227 -0
  326. package/dist/src/research/clients/arxiv.js +156 -0
  327. package/dist/src/research/clients/base.js +197 -0
  328. package/dist/src/research/clients/crossref.js +112 -0
  329. package/dist/src/research/clients/semantic-scholar.js +126 -0
  330. package/dist/src/research/clients/unpaywall.js +87 -0
  331. package/dist/src/research/index.js +14 -0
  332. package/dist/src/research/query-cli.js +336 -0
  333. package/dist/src/research/services/acquisition.js +313 -0
  334. package/dist/src/research/services/archival.js +225 -0
  335. package/dist/src/research/services/citation.js +279 -0
  336. package/dist/src/research/services/discovery.js +243 -0
  337. package/dist/src/research/services/documentation.js +269 -0
  338. package/dist/src/research/services/index.js +14 -0
  339. package/dist/src/research/services/provenance.js +279 -0
  340. package/dist/src/research/services/quality.js +370 -0
  341. package/dist/src/research/services/types.js +7 -0
  342. package/dist/src/research/storage-cli.js +20 -0
  343. package/dist/src/research/types.js +47 -0
  344. package/dist/src/resources/index.d.ts +2 -0
  345. package/dist/src/resources/index.js +2 -0
  346. package/dist/src/resources/web-release.d.ts +89 -0
  347. package/dist/src/resources/web-release.js +886 -0
  348. package/dist/src/rlm/cache/cli.js +162 -0
  349. package/dist/src/rlm/cache/hash.js +35 -0
  350. package/dist/src/rlm/cache/store.js +170 -0
  351. package/dist/src/rlm/cache/types.js +8 -0
  352. package/dist/src/rlm/cli.js +650 -0
  353. package/dist/src/serve/a2a-terminal-observer.js +120 -0
  354. package/dist/src/serve/agent-router.js +205 -0
  355. package/dist/src/serve/dispatch-router.js +171 -0
  356. package/dist/src/serve/executor-registry.js +715 -0
  357. package/dist/src/serve/mission-conductor.js +177 -0
  358. package/dist/src/serve/orchestrator-adapter.js +113 -0
  359. package/dist/src/serve/orchestrator-override.js +94 -0
  360. package/dist/src/serve/orchestrator-pty.js +133 -0
  361. package/dist/src/serve/pty-bridge.js +799 -0
  362. package/dist/src/serve/sandbox-registry.js +832 -0
  363. package/dist/src/serve/screen-reader.js +228 -0
  364. package/dist/src/serve/stack-adapters.js +68 -0
  365. package/dist/src/serve/telemetry.js +143 -0
  366. package/dist/src/skills/adapters/clawhub.js +250 -0
  367. package/dist/src/skills/adapters/local.js +335 -0
  368. package/dist/src/skills/adapters/openclaw.js +316 -0
  369. package/dist/src/skills/cli.js +334 -0
  370. package/dist/src/skills/registry.js +117 -0
  371. package/dist/src/skills/run.js +259 -0
  372. package/dist/src/skills/runtime.js +94 -0
  373. package/dist/src/skills/types.js +10 -0
  374. package/dist/src/smiths/agentsmith/demo.js +116 -0
  375. package/dist/src/smiths/agentsmith/examples.js +300 -0
  376. package/dist/src/smiths/agentsmith/generator.js +503 -0
  377. package/dist/src/smiths/agentsmith/index.js +11 -0
  378. package/dist/src/smiths/agentsmith/types.js +8 -0
  379. package/dist/src/smiths/commandsmith/example.js +220 -0
  380. package/dist/src/smiths/commandsmith/generator.js +288 -0
  381. package/dist/src/smiths/commandsmith/index.js +41 -0
  382. package/dist/src/smiths/commandsmith/templates.js +296 -0
  383. package/dist/src/smiths/commandsmith/types.js +7 -0
  384. package/dist/src/smiths/context-pipeline/aiwg-md.js +104 -0
  385. package/dist/src/smiths/context-pipeline/allowlist.js +195 -0
  386. package/dist/src/smiths/context-pipeline/claude-hook.js +127 -0
  387. package/dist/src/smiths/context-pipeline/discovery.js +187 -0
  388. package/dist/src/smiths/context-pipeline/external-links-section.js +49 -0
  389. package/dist/src/smiths/context-pipeline/finalization.js +147 -0
  390. package/dist/src/smiths/context-pipeline/generator.js +477 -0
  391. package/dist/src/smiths/context-pipeline/index.js +30 -0
  392. package/dist/src/smiths/context-pipeline/legacy-inject.js +103 -0
  393. package/dist/src/smiths/context-pipeline/managed-hook.js +95 -0
  394. package/dist/src/smiths/context-pipeline/overflow.js +212 -0
  395. package/dist/src/smiths/context-pipeline/parallelism-section.js +94 -0
  396. package/dist/src/smiths/context-pipeline/provider-policy.js +64 -0
  397. package/dist/src/smiths/context-pipeline/sanitizer.js +93 -0
  398. package/dist/src/smiths/context-pipeline/types.js +23 -0
  399. package/dist/src/smiths/context-pipeline/workspace-context.js +988 -0
  400. package/dist/src/smiths/hook-bridge/codex-translator.js +129 -0
  401. package/dist/src/smiths/hook-bridge/copilot-translator.js +64 -0
  402. package/dist/src/smiths/hook-bridge/factory-translator.js +43 -0
  403. package/dist/src/smiths/hook-bridge/hermes-translator.js +88 -0
  404. package/dist/src/smiths/hook-bridge/index.js +79 -0
  405. package/dist/src/smiths/hook-bridge/loader.js +116 -0
  406. package/dist/src/smiths/hook-bridge/shim.js +89 -0
  407. package/dist/src/smiths/hook-bridge/types.js +31 -0
  408. package/dist/src/smiths/index.js +39 -0
  409. package/dist/src/smiths/mcpsmith/analyzers/cli-analyzer.js +390 -0
  410. package/dist/src/smiths/mcpsmith/example.js +119 -0
  411. package/dist/src/smiths/mcpsmith/generator.js +236 -0
  412. package/dist/src/smiths/mcpsmith/index.js +17 -0
  413. package/dist/src/smiths/mcpsmith/types.js +10 -0
  414. package/dist/src/smiths/platform-paths.js +101 -0
  415. package/dist/src/smiths/skillsmith/codex-sidecar.js +85 -0
  416. package/dist/src/smiths/skillsmith/collision-detector.js +249 -0
  417. package/dist/src/smiths/skillsmith/demo.js +83 -0
  418. package/dist/src/smiths/skillsmith/examples.js +161 -0
  419. package/dist/src/smiths/skillsmith/generator.js +316 -0
  420. package/dist/src/smiths/skillsmith/index.js +12 -0
  421. package/dist/src/smiths/skillsmith/namespace-adapter.js +180 -0
  422. package/dist/src/smiths/skillsmith/platform-resolver.js +157 -0
  423. package/dist/src/smiths/skillsmith/types.js +9 -0
  424. package/dist/src/smiths/toolsmith/index.js +10 -0
  425. package/dist/src/smiths/toolsmith/runtime-discovery.mjs +710 -0
  426. package/dist/src/smiths/toolsmith/types.js +8 -0
  427. package/dist/src/storage/backends/fortemi.js +227 -0
  428. package/dist/src/storage/backends/fs.js +134 -0
  429. package/dist/src/storage/backends/logseq.js +309 -0
  430. package/dist/src/storage/backends/obsidian.js +233 -0
  431. package/dist/src/storage/cli.js +468 -0
  432. package/dist/src/storage/config.js +272 -0
  433. package/dist/src/storage/index.js +108 -0
  434. package/dist/src/storage/subsystem-cli.js +201 -0
  435. package/dist/src/storage/types.js +33 -0
  436. package/dist/src/testing/corpus/corpus-builder.js +383 -0
  437. package/dist/src/testing/corpus/ground-truth-manager.js +460 -0
  438. package/dist/src/testing/corpus/index.js +10 -0
  439. package/dist/src/testing/fixtures/index.js +9 -0
  440. package/dist/src/testing/fixtures/test-data-factory.js +472 -0
  441. package/dist/src/testing/generators/index.js +11 -0
  442. package/dist/src/testing/generators/test-case-generator.js +393 -0
  443. package/dist/src/testing/generators/test-code-generator.js +384 -0
  444. package/dist/src/testing/generators/use-case-parser.js +325 -0
  445. package/dist/src/testing/index.js +11 -0
  446. package/dist/src/tracker/capability-protocol.js +118 -0
  447. package/dist/src/update/checker.mjs +396 -0
  448. package/dist/src/update/notifier.mjs +235 -0
  449. package/dist/src/writing/content-diversifier.js +804 -0
  450. package/dist/src/writing/example-generator.js +959 -0
  451. package/dist/src/writing/example-templates.js +99 -0
  452. package/dist/src/writing/pattern-library.js +486 -0
  453. package/dist/src/writing/patterns/banned-phrases.json +4413 -0
  454. package/dist/src/writing/patterns/formulaic-structures.json +1300 -0
  455. package/dist/src/writing/patterns/generic-adjectives.json +1510 -0
  456. package/dist/src/writing/patterns/hedging-language.json +2096 -0
  457. package/dist/src/writing/patterns/transition-words.json +1285 -0
  458. package/dist/src/writing/patterns/weak-verbs.json +1112 -0
  459. package/dist/src/writing/prompt-optimizer.js +660 -0
  460. package/dist/src/writing/prompt-templates.js +583 -0
  461. package/dist/src/writing/scoring-config-loader.js +168 -0
  462. package/dist/src/writing/validation-engine.js +595 -0
  463. package/dist/src/writing/validation-rules.js +380 -0
  464. package/dist/src/writing/voice-analyzer.js +439 -0
  465. package/dist/src/writing/voice-calibration.js +661 -0
  466. package/dist/src/writing/voice-profiles.json +588 -0
  467. package/package.json +65 -9
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Skill Deployment Collision Detector
3
+ *
4
+ * Scans target platform directories before `aiwg use` to identify name conflicts
5
+ * between skills being deployed and existing skills already present.
6
+ *
7
+ * Severity levels:
8
+ * - none — target path does not exist, deploy silently
9
+ * - info — target exists and is owned by the same namespace, overwrite silently
10
+ * - warn — target exists and is owned by a different namespace or user, prompt user
11
+ * - error — name matches a known platform built-in or AIWG CLI command, block deployment
12
+ *
13
+ * @see adr-skill-namespace-strategy.md
14
+ * @implements #698
15
+ * @implements #804
16
+ */
17
+ import { promises as fs } from 'fs';
18
+ import { createHash } from 'crypto';
19
+ import * as path from 'path';
20
+ // ============================================
21
+ // Platform Built-in Blocklists
22
+ // ============================================
23
+ /**
24
+ * Platform built-in commands that must never be overwritten.
25
+ * Attempting to deploy a skill with one of these names is an ERROR.
26
+ */
27
+ const PLATFORM_BUILTINS = {
28
+ 'claude': [
29
+ 'help', 'clear', 'compact', 'review', 'init', 'doctor',
30
+ 'memory', 'settings', 'logout', 'login', 'mcp', 'migrate',
31
+ ],
32
+ 'cursor': ['settings', 'chat', 'edit'],
33
+ 'codex': ['help', 'run', 'exec'],
34
+ 'copilot': ['help', 'explain', 'fix', 'tests', 'review'],
35
+ 'windsurf': ['help', 'settings'],
36
+ 'opencode': ['help', 'run'],
37
+ 'warp': ['help', 'settings'],
38
+ 'hermes': [],
39
+ 'openclaw': [],
40
+ 'openhuman': [],
41
+ 'factory': [],
42
+ 'generic': [],
43
+ };
44
+ // Note: previously this module also blocked `aiwg-{cliCommand}` slugs (e.g.
45
+ // `aiwg-doctor`) as "shadowing" the AIWG CLI. That check was removed because
46
+ // it directly contradicted the namespace migration strategy: `/aiwg-doctor`
47
+ // IS the canonical slug for the doctor skill (the bare `doctor` collides with
48
+ // Claude's built-in). Slash commands and shell CLI commands live on different
49
+ // surfaces and do not actually conflict at runtime.
50
+ // See: docs/migration/skill-namespace-migration.md, .aiwg/architecture/adr-skill-namespace-strategy.md
51
+ // ============================================
52
+ // Ownership Attribution
53
+ // ============================================
54
+ /**
55
+ * Determine if an existing skill directory is owned by the given namespace.
56
+ *
57
+ * A skill is owned by `namespace` when ANY of:
58
+ * 1. Its SKILL.md frontmatter contains `namespace: {namespace}`
59
+ * 2. Its parent directory is named after the namespace (e.g. `.claude/skills/aiwg/`)
60
+ *
61
+ * This generalises the original AIWG-only check to support any package namespace,
62
+ * enabling correct cross-namespace collision severity for third-party packages (#804).
63
+ *
64
+ * @param skillPath - Absolute path to the skill directory
65
+ * @param namespace - Namespace to test ownership against (default: 'aiwg')
66
+ */
67
+ export async function isOwnedByNamespace(skillPath, namespace = 'aiwg') {
68
+ // Check 1: namespace in SKILL.md frontmatter
69
+ const skillFile = path.join(skillPath, 'SKILL.md');
70
+ try {
71
+ const content = await fs.readFile(skillFile, 'utf-8');
72
+ // Match `namespace: <value>` line where value equals the queried namespace
73
+ const nsMatch = content.match(/^namespace:\s*(.+?)\s*$/m);
74
+ if (nsMatch && nsMatch[1] === namespace) {
75
+ return true;
76
+ }
77
+ }
78
+ catch {
79
+ // file doesn't exist or unreadable — not owned
80
+ }
81
+ // Check 2: deployed under a namespace subdirectory
82
+ const parentDir = path.basename(path.dirname(skillPath));
83
+ if (parentDir === namespace) {
84
+ return true;
85
+ }
86
+ return false;
87
+ }
88
+ // ============================================
89
+ // Content Hash Comparison
90
+ // ============================================
91
+ /**
92
+ * Compute MD5 hash of a file's content. Returns null if unreadable.
93
+ */
94
+ async function fileHash(filePath) {
95
+ try {
96
+ const content = await fs.readFile(filePath);
97
+ return createHash('md5').update(content).digest('hex');
98
+ }
99
+ catch {
100
+ return null;
101
+ }
102
+ }
103
+ /**
104
+ * Check if the source skill SKILL.md matches the deployed SKILL.md by content hash.
105
+ * Returns true when both exist and have identical content (no update needed).
106
+ */
107
+ async function skillContentUnchanged(sourceDir, deployedDir) {
108
+ const srcFile = path.join(sourceDir, 'SKILL.md');
109
+ const dstFile = path.join(deployedDir, 'SKILL.md');
110
+ const [srcHash, dstHash] = await Promise.all([fileHash(srcFile), fileHash(dstFile)]);
111
+ if (!srcHash || !dstHash)
112
+ return false;
113
+ return srcHash === dstHash;
114
+ }
115
+ // ============================================
116
+ // Collision Check
117
+ // ============================================
118
+ /**
119
+ * Check for deployment collisions before writing skills to a platform directory.
120
+ *
121
+ * Ownership comparison uses the deploying package's namespace:
122
+ * - Same namespace overwrites → `info` severity (silent upgrade)
123
+ * - Cross-namespace or user-owned overwrites → `warn` severity (user confirmation)
124
+ *
125
+ * @param options - Collision check parameters
126
+ * @returns Array of collision results, one per skill name. Only non-`none` results
127
+ * are returned (clean deployments are omitted).
128
+ */
129
+ export async function checkCollisions(options) {
130
+ const { platform, projectPath, skillNames, skillsBaseDir, sourceSkillsDir, namespace = 'aiwg' } = options;
131
+ const platformBuiltins = new Set(PLATFORM_BUILTINS[platform] ?? []);
132
+ const results = [];
133
+ for (const skillName of skillNames) {
134
+ const targetPath = skillsBaseDir
135
+ ? path.join(skillsBaseDir, skillName)
136
+ : path.join(projectPath, `.${platform}/skills`, skillName);
137
+ // Check 1: Platform built-in collision (literal slug only).
138
+ //
139
+ // The namespaced canonical slug (e.g. `aiwg-doctor`) is the actual command
140
+ // registered with the platform — it does NOT collide with the platform's bare
141
+ // built-in (`doctor`). The whole point of the `aiwg-` prefix per
142
+ // `docs/migration/skill-namespace-migration.md` is to side-step platform built-ins.
143
+ //
144
+ // Only check the literal skillName here. Bare names like `doctor` (no prefix)
145
+ // are still caught and blocked.
146
+ if (platformBuiltins.has(skillName)) {
147
+ results.push({
148
+ skillName,
149
+ targetPath,
150
+ severity: 'error',
151
+ reason: `'${skillName}' matches a ${platform} platform built-in command`,
152
+ blocksDeployment: true,
153
+ });
154
+ continue;
155
+ }
156
+ // Check 2: Target path existence
157
+ let exists = false;
158
+ try {
159
+ await fs.access(targetPath);
160
+ exists = true;
161
+ }
162
+ catch {
163
+ // doesn't exist — no collision
164
+ }
165
+ if (!exists) {
166
+ // No collision, don't add to results
167
+ continue;
168
+ }
169
+ // Check 3: Ownership of existing skill
170
+ // Same-namespace overwrites are silent upgrades (info).
171
+ // Cross-namespace or unowned overwrites require user confirmation (warn).
172
+ const ownedBySameNamespace = await isOwnedByNamespace(targetPath, namespace);
173
+ if (ownedBySameNamespace) {
174
+ // Check if content is actually unchanged — skip silently if identical
175
+ if (sourceSkillsDir) {
176
+ const sourceDir = path.join(sourceSkillsDir, skillName);
177
+ const unchanged = await skillContentUnchanged(sourceDir, targetPath);
178
+ if (unchanged) {
179
+ // Identical content — no collision, no output needed
180
+ continue;
181
+ }
182
+ }
183
+ results.push({
184
+ skillName,
185
+ targetPath,
186
+ severity: 'info',
187
+ reason: `'${skillName}' updating`,
188
+ blocksDeployment: false,
189
+ });
190
+ }
191
+ else {
192
+ results.push({
193
+ skillName,
194
+ targetPath,
195
+ severity: 'warn',
196
+ reason: `'${skillName}' already exists at ${targetPath} and is not owned by namespace '${namespace}' — will overwrite existing skill`,
197
+ blocksDeployment: false,
198
+ });
199
+ }
200
+ }
201
+ return results;
202
+ }
203
+ /**
204
+ * Format collision results as a human-readable warning block.
205
+ *
206
+ * @param results - Collision results from `checkCollisions()`
207
+ * @param options - Formatting options
208
+ * @param options.verbose - When false, suppress info-level messages (same-namespace updates)
209
+ * @returns Formatted string for CLI output, or empty string if no results
210
+ */
211
+ export function formatCollisionReport(results, options = {}) {
212
+ if (results.length === 0)
213
+ return '';
214
+ const { verbose = false } = options;
215
+ const errors = results.filter((r) => r.severity === 'error');
216
+ const warnings = results.filter((r) => r.severity === 'warn');
217
+ const infos = results.filter((r) => r.severity === 'info');
218
+ const lines = [];
219
+ if (errors.length > 0) {
220
+ lines.push('');
221
+ lines.push('ERROR: Deployment blocked for the following skills:');
222
+ for (const r of errors) {
223
+ lines.push(` ✗ ${r.skillName}: ${r.reason}`);
224
+ }
225
+ }
226
+ if (warnings.length > 0) {
227
+ lines.push('');
228
+ lines.push('WARNING: The following skills will overwrite content from a different namespace:');
229
+ for (const r of warnings) {
230
+ lines.push(` ⚠ ${r.skillName}: ${r.reason}`);
231
+ }
232
+ lines.push('');
233
+ lines.push(' Use --force to overwrite, or --skip-conflicts to skip these skills.');
234
+ }
235
+ // Info-level (same-namespace updates) only shown in verbose mode
236
+ if (verbose && infos.length > 0 && errors.length === 0 && warnings.length === 0) {
237
+ for (const r of infos) {
238
+ lines.push(` ℹ ${r.skillName}: ${r.reason}`);
239
+ }
240
+ }
241
+ return lines.join('\n');
242
+ }
243
+ /**
244
+ * Check if any collision results block deployment.
245
+ */
246
+ export function hasBlockingCollisions(results) {
247
+ return results.some((r) => r.blocksDeployment);
248
+ }
249
+ //# sourceMappingURL=collision-detector.js.map
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * SkillSmith Demo
4
+ *
5
+ * Demonstrates SkillSmith functionality.
6
+ * Run: node --loader ts-node/esm src/smiths/skillsmith/demo.ts
7
+ *
8
+ * @module smiths/skillsmith/demo
9
+ */
10
+ import { generateSkill, deploySkill } from './generator.js';
11
+ import { PlatformSkillResolver } from './platform-resolver.js';
12
+ // SkillOptions type used inline in generateSkill calls
13
+ async function demo() {
14
+ console.log('=== SkillSmith Demo ===\n');
15
+ // Example 1: Generate a basic skill
16
+ console.log('1. Generating basic skill...');
17
+ const basicSkill = await generateSkill({
18
+ name: 'hello-world',
19
+ description: 'A simple hello world skill',
20
+ platform: 'claude',
21
+ projectPath: '/tmp/demo',
22
+ triggerPhrases: ['hello', 'say hello', 'greet'],
23
+ });
24
+ console.log(` Generated: ${basicSkill.name}`);
25
+ console.log(` Platform: ${basicSkill.platform}`);
26
+ console.log(` Deploy path: ${basicSkill.path}\n`);
27
+ // Example 2: Generate skill with tools
28
+ console.log('2. Generating skill with tools...');
29
+ const toolSkill = await generateSkill({
30
+ name: 'file-analyzer',
31
+ description: 'Analyzes file structure and content',
32
+ platform: 'claude',
33
+ projectPath: '/tmp/demo',
34
+ tools: ['Read', 'Glob', 'Grep'],
35
+ triggerPhrases: ['analyze files', 'check structure', 'review files'],
36
+ createReferences: true,
37
+ });
38
+ console.log(` Generated: ${toolSkill.name}`);
39
+ console.log(` Tools: ${toolSkill.content.match(/tools: (.+)/)?.[1] || 'none'}`);
40
+ console.log(` References: ${toolSkill.references?.length || 0} files\n`);
41
+ // Example 3: Platform-specific paths
42
+ console.log('3. Platform-specific deployment paths:');
43
+ const platforms = ['claude', 'factory', 'cursor'];
44
+ platforms.forEach((platform) => {
45
+ const basePath = PlatformSkillResolver.getBaseDir(platform, '/project');
46
+ const supports = PlatformSkillResolver.supportsSkills(platform);
47
+ const alternative = PlatformSkillResolver.getAlternativeStrategy(platform);
48
+ console.log(` ${platform}:`);
49
+ console.log(` Base: ${basePath}`);
50
+ console.log(` Native support: ${supports}`);
51
+ if (!supports && alternative) {
52
+ console.log(` Alternative: ${alternative}`);
53
+ }
54
+ });
55
+ console.log();
56
+ // Example 4: Skill name validation
57
+ console.log('4. Skill name validation:');
58
+ const names = ['valid-skill', 'Invalid_Name', 'also-valid', '-invalid'];
59
+ names.forEach((name) => {
60
+ const result = PlatformSkillResolver.validateSkillName(name);
61
+ console.log(` "${name}": ${result.valid ? '✓ valid' : '✗ ' + result.error}`);
62
+ });
63
+ console.log();
64
+ // Example 5: Dry run deployment
65
+ console.log('5. Dry run deployment...');
66
+ const result = await deploySkill(basicSkill, '/tmp/demo', true);
67
+ console.log(` Success: ${result.success}`);
68
+ console.log(` Deploy path: ${result.deployPath}`);
69
+ console.log(` Files created: ${result.filesCreated.length}\n`);
70
+ // Example 6: Show generated content
71
+ console.log('6. Sample generated content:');
72
+ console.log(' ---');
73
+ const lines = basicSkill.content.split('\n').slice(0, 20);
74
+ lines.forEach((line) => console.log(` ${line}`));
75
+ console.log(' ...\n');
76
+ console.log('=== Demo Complete ===');
77
+ }
78
+ // Run demo if executed directly
79
+ if (import.meta.url === `file://${process.argv[1]}`) {
80
+ demo().catch(console.error);
81
+ }
82
+ export { demo };
83
+ //# sourceMappingURL=demo.js.map
@@ -0,0 +1,161 @@
1
+ /**
2
+ * SkillSmith Usage Examples
3
+ *
4
+ * Demonstrates how to use SkillSmith to generate skills.
5
+ *
6
+ * @module smiths/skillsmith/examples
7
+ */
8
+ import { generateSkill, deploySkill } from './generator.js';
9
+ /**
10
+ * Example 1: Generate a basic voice application skill
11
+ */
12
+ export async function generateVoiceApplySkill(projectPath) {
13
+ const options = {
14
+ name: 'voice-apply',
15
+ description: 'Applies voice profiles to transform content',
16
+ platform: 'claude',
17
+ projectPath,
18
+ triggerPhrases: [
19
+ 'apply voice',
20
+ 'use voice',
21
+ 'write in voice',
22
+ 'transform to voice',
23
+ ],
24
+ tools: ['Read', 'Write'],
25
+ createReferences: true,
26
+ version: '1.0.0',
27
+ };
28
+ const skill = await generateSkill(options);
29
+ const result = await deploySkill(skill, projectPath);
30
+ console.log(`Deployed voice-apply skill to: ${result.deployPath}`);
31
+ console.log(`Files created: ${result.filesCreated.length}`);
32
+ return result;
33
+ }
34
+ /**
35
+ * Example 2: Generate a code analysis skill
36
+ */
37
+ export async function generateCodeAnalyzerSkill(projectPath) {
38
+ const options = {
39
+ name: 'code-analyzer',
40
+ description: 'Analyzes code quality, patterns, and potential issues',
41
+ platform: 'claude',
42
+ projectPath,
43
+ triggerPhrases: [
44
+ 'analyze code',
45
+ 'check code quality',
46
+ 'review code',
47
+ 'find code issues',
48
+ ],
49
+ tools: ['Read', 'Glob', 'Grep', 'Bash'],
50
+ createReferences: true,
51
+ };
52
+ const skill = await generateSkill(options);
53
+ const result = await deploySkill(skill, projectPath);
54
+ return result;
55
+ }
56
+ /**
57
+ * Example 3: Generate a test generation skill
58
+ */
59
+ export async function generateTestGeneratorSkill(projectPath) {
60
+ const options = {
61
+ name: 'test-generator',
62
+ description: 'Generates comprehensive test suites from code',
63
+ platform: 'claude',
64
+ projectPath,
65
+ triggerPhrases: ['generate tests', 'create test suite', 'write tests for'],
66
+ tools: ['Read', 'Write', 'Glob', 'Grep'],
67
+ guidance: 'Focus on edge cases and integration scenarios',
68
+ };
69
+ const skill = await generateSkill(options);
70
+ return deploySkill(skill, projectPath);
71
+ }
72
+ /**
73
+ * Example 4: Generate skill with dry-run
74
+ */
75
+ export async function previewSkillGeneration(projectPath) {
76
+ const skill = await generateSkill({
77
+ name: 'example-skill',
78
+ description: 'An example skill',
79
+ platform: 'claude',
80
+ projectPath,
81
+ triggerPhrases: ['example', 'demo skill'],
82
+ });
83
+ // Preview without writing files
84
+ const result = await deploySkill(skill, projectPath, true);
85
+ console.log('Dry run result:', result);
86
+ return result;
87
+ }
88
+ /**
89
+ * Example 5: Generate skill for multiple platforms
90
+ */
91
+ export async function generateMultiPlatformSkill(projectPath) {
92
+ const platforms = ['claude', 'factory', 'cursor'];
93
+ const results = [];
94
+ for (const platform of platforms) {
95
+ const skill = await generateSkill({
96
+ name: 'multi-platform-skill',
97
+ description: 'A skill that works across platforms',
98
+ platform,
99
+ projectPath,
100
+ triggerPhrases: ['multi platform', 'cross platform'],
101
+ });
102
+ const result = await deploySkill(skill, projectPath);
103
+ results.push(result);
104
+ console.log(`Deployed to ${platform}: ${result.deployPath}`);
105
+ }
106
+ return results;
107
+ }
108
+ /**
109
+ * Example 6: Generate skill with custom version
110
+ */
111
+ export async function generateVersionedSkill(projectPath) {
112
+ const skill = await generateSkill({
113
+ name: 'versioned-skill',
114
+ description: 'A skill with version control',
115
+ platform: 'claude',
116
+ projectPath,
117
+ version: '2.1.0',
118
+ triggerPhrases: ['versioned example'],
119
+ });
120
+ return deploySkill(skill, projectPath);
121
+ }
122
+ /**
123
+ * Example 7: Batch generate skills from configuration
124
+ */
125
+ export async function batchGenerateSkills(projectPath, skillConfigs) {
126
+ const results = [];
127
+ for (const config of skillConfigs) {
128
+ const skill = await generateSkill({
129
+ ...config,
130
+ projectPath,
131
+ });
132
+ const result = await deploySkill(skill, projectPath);
133
+ results.push(result);
134
+ }
135
+ console.log(`Generated ${results.length} skills`);
136
+ return results;
137
+ }
138
+ /**
139
+ * Example usage in a CLI or script
140
+ */
141
+ export async function exampleCliUsage() {
142
+ const projectPath = process.cwd();
143
+ // Generate a single skill
144
+ await generateVoiceApplySkill(projectPath);
145
+ // Generate multiple skills
146
+ await batchGenerateSkills(projectPath, [
147
+ {
148
+ name: 'skill-one',
149
+ description: 'First skill',
150
+ platform: 'claude',
151
+ triggerPhrases: ['skill one'],
152
+ },
153
+ {
154
+ name: 'skill-two',
155
+ description: 'Second skill',
156
+ platform: 'claude',
157
+ triggerPhrases: ['skill two'],
158
+ },
159
+ ]);
160
+ }
161
+ //# sourceMappingURL=examples.js.map