@agents-inc/cli 0.46.0 → 0.47.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 (157) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/{chunk-G2WNOT3R.js → chunk-2RQYJFKA.js} +2 -2
  3. package/dist/{chunk-CD64ZNYI.js → chunk-3APMMQUA.js} +11 -3
  4. package/dist/chunk-3APMMQUA.js.map +1 -0
  5. package/dist/{chunk-DO5OZHSS.js → chunk-B4QYXVPZ.js} +2 -2
  6. package/dist/{chunk-5QRJUBK7.js → chunk-C4QI54PN.js} +20 -11
  7. package/dist/chunk-C4QI54PN.js.map +1 -0
  8. package/dist/{chunk-QBUOZVNZ.js → chunk-CJFWO46A.js} +2 -2
  9. package/dist/{chunk-VH3PI43B.js → chunk-DC333ZDC.js} +4 -4
  10. package/dist/{chunk-GVLYNP2I.js → chunk-DVW6ASTO.js} +4 -4
  11. package/dist/{chunk-NMXNHRAK.js → chunk-EZ46ZTAQ.js} +3 -3
  12. package/dist/{chunk-FUEZQ2H6.js → chunk-FMQ3A7W4.js} +4 -4
  13. package/dist/{chunk-74HSA7C4.js → chunk-FTD5Z6QD.js} +3 -1
  14. package/dist/{chunk-74HSA7C4.js.map → chunk-FTD5Z6QD.js.map} +1 -1
  15. package/dist/{chunk-KWQ2BQXF.js → chunk-FXQYEXLS.js} +3 -3
  16. package/dist/{chunk-RT6IBH37.js → chunk-GFDGYQ6M.js} +55 -21
  17. package/dist/chunk-GFDGYQ6M.js.map +1 -0
  18. package/dist/{chunk-CDGHSTB6.js → chunk-HLTJK3XB.js} +7 -5
  19. package/dist/chunk-HLTJK3XB.js.map +1 -0
  20. package/dist/{chunk-72GS6PIH.js → chunk-HPJP3HFD.js} +7 -7
  21. package/dist/{chunk-J64CA4V6.js → chunk-INKJBMPJ.js} +2 -2
  22. package/dist/{chunk-YVMYQSED.js → chunk-IRJADQM7.js} +2 -2
  23. package/dist/{chunk-PZLUO4OY.js → chunk-JTTTXGHX.js} +4 -4
  24. package/dist/{chunk-4C7PDDLY.js → chunk-JZHIF3K7.js} +5 -5
  25. package/dist/{chunk-D7JTL3DJ.js → chunk-KQ27IDYL.js} +2 -2
  26. package/dist/{chunk-SGXUMZWL.js → chunk-LJ5E4GXC.js} +2 -2
  27. package/dist/{chunk-LFZXMQOH.js → chunk-LNA6M2IE.js} +2 -2
  28. package/dist/{chunk-ODQ2BKWU.js → chunk-M4P5YJ45.js} +3 -3
  29. package/dist/{chunk-TOWP4T5L.js → chunk-MVEYK55V.js} +2 -2
  30. package/dist/{chunk-5M6JI76P.js → chunk-N5OCAAXY.js} +2 -2
  31. package/dist/{chunk-RWR56UVK.js → chunk-NRCKIHND.js} +11 -2
  32. package/dist/chunk-NRCKIHND.js.map +1 -0
  33. package/dist/{chunk-FKBCYT7B.js → chunk-OEJDFGAF.js} +5 -5
  34. package/dist/{chunk-I26YP2Q3.js → chunk-QR2TM4OY.js} +5 -5
  35. package/dist/{chunk-UK3AMBR7.js → chunk-SPSGZWTZ.js} +13 -6
  36. package/dist/{chunk-UK3AMBR7.js.map → chunk-SPSGZWTZ.js.map} +1 -1
  37. package/dist/{chunk-XE6RTHUD.js → chunk-TBB3THSL.js} +38 -3
  38. package/dist/chunk-TBB3THSL.js.map +1 -0
  39. package/dist/{chunk-7LDSHHKN.js → chunk-TWDVLTU6.js} +3 -3
  40. package/dist/{chunk-YT7UHV67.js → chunk-VAQJLHUW.js} +11 -9
  41. package/dist/chunk-VAQJLHUW.js.map +1 -0
  42. package/dist/{chunk-C7BO2ASM.js → chunk-VSZ5GDET.js} +2 -2
  43. package/dist/{chunk-CTQHZELA.js → chunk-XTRPYUWK.js} +14 -14
  44. package/dist/{chunk-HM3DHMW7.js → chunk-YTRFL3MR.js} +8 -8
  45. package/dist/chunk-YTRFL3MR.js.map +1 -0
  46. package/dist/{chunk-3WKFSTG6.js → chunk-ZWAL2ZY7.js} +2 -2
  47. package/dist/commands/build/marketplace.js +4 -4
  48. package/dist/commands/build/plugins.js +5 -5
  49. package/dist/commands/build/stack.js +5 -5
  50. package/dist/commands/compile.js +6 -6
  51. package/dist/commands/config/get.js +4 -4
  52. package/dist/commands/config/index.js +5 -5
  53. package/dist/commands/config/path.js +4 -4
  54. package/dist/commands/config/set-project.js +4 -4
  55. package/dist/commands/config/show.js +5 -5
  56. package/dist/commands/config/unset-project.js +4 -4
  57. package/dist/commands/diff.js +4 -4
  58. package/dist/commands/doctor.js +4 -4
  59. package/dist/commands/edit.js +29 -29
  60. package/dist/commands/eject.js +4 -4
  61. package/dist/commands/import/skill.js +5 -5
  62. package/dist/commands/info.js +5 -5
  63. package/dist/commands/init.js +28 -28
  64. package/dist/commands/list.js +4 -4
  65. package/dist/commands/new/agent.js +6 -6
  66. package/dist/commands/new/marketplace.js +5 -5
  67. package/dist/commands/new/skill.js +9 -6
  68. package/dist/commands/new/skill.js.map +1 -1
  69. package/dist/commands/outdated.js +4 -4
  70. package/dist/commands/search.js +7 -7
  71. package/dist/commands/uninstall.js +6 -6
  72. package/dist/commands/update.js +6 -6
  73. package/dist/commands/validate.js +229 -19
  74. package/dist/commands/validate.js.map +1 -1
  75. package/dist/components/skill-search/skill-search.js +3 -3
  76. package/dist/components/wizard/category-grid.js +2 -2
  77. package/dist/components/wizard/category-grid.test.js +122 -2
  78. package/dist/components/wizard/category-grid.test.js.map +1 -1
  79. package/dist/components/wizard/checkbox-grid.js +3 -3
  80. package/dist/components/wizard/checkbox-grid.test.js +3 -3
  81. package/dist/components/wizard/domain-selection.js +9 -9
  82. package/dist/components/wizard/help-modal.js +2 -2
  83. package/dist/components/wizard/menu-item.js +1 -1
  84. package/dist/components/wizard/search-modal.js +2 -2
  85. package/dist/components/wizard/search-modal.test.js +2 -2
  86. package/dist/components/wizard/section-progress.js +2 -2
  87. package/dist/components/wizard/section-progress.test.js +2 -2
  88. package/dist/components/wizard/selection-card.js +2 -2
  89. package/dist/components/wizard/source-grid.js +3 -3
  90. package/dist/components/wizard/source-grid.test.js +3 -3
  91. package/dist/components/wizard/stack-selection.js +8 -8
  92. package/dist/components/wizard/step-agents.js +8 -8
  93. package/dist/components/wizard/step-agents.test.js +9 -9
  94. package/dist/components/wizard/step-build.js +8 -8
  95. package/dist/components/wizard/step-build.test.js +78 -46
  96. package/dist/components/wizard/step-build.test.js.map +1 -1
  97. package/dist/components/wizard/step-confirm.js +4 -4
  98. package/dist/components/wizard/step-confirm.test.js +8 -8
  99. package/dist/components/wizard/step-refine.js +2 -2
  100. package/dist/components/wizard/step-refine.test.js +2 -2
  101. package/dist/components/wizard/step-settings.js +5 -5
  102. package/dist/components/wizard/step-settings.test.js +8 -8
  103. package/dist/components/wizard/step-sources.js +10 -10
  104. package/dist/components/wizard/step-sources.test.js +11 -11
  105. package/dist/components/wizard/step-stack.js +12 -12
  106. package/dist/components/wizard/step-stack.test.js +13 -13
  107. package/dist/components/wizard/view-title.js +2 -2
  108. package/dist/components/wizard/wizard-layout.js +8 -8
  109. package/dist/components/wizard/wizard-tabs.js +2 -2
  110. package/dist/components/wizard/wizard-tabs.test.js +2 -2
  111. package/dist/components/wizard/wizard.js +25 -25
  112. package/dist/hooks/init.js +3 -3
  113. package/dist/{source-manager-6QZ2GDUA.js → source-manager-Q34LTUVM.js} +4 -4
  114. package/dist/src/agents/meta/documentor/examples.md +35 -36
  115. package/dist/src/agents/meta/documentor/workflow.md +91 -105
  116. package/dist/stores/wizard-store.js +5 -5
  117. package/dist/stores/wizard-store.test.js +48 -6
  118. package/dist/stores/wizard-store.test.js.map +1 -1
  119. package/package.json +1 -1
  120. package/src/agents/meta/documentor/examples.md +35 -36
  121. package/src/agents/meta/documentor/workflow.md +91 -105
  122. package/src/schemas/agent.schema.json +3 -0
  123. package/src/schemas/metadata.schema.json +3 -0
  124. package/dist/chunk-5QRJUBK7.js.map +0 -1
  125. package/dist/chunk-CD64ZNYI.js.map +0 -1
  126. package/dist/chunk-CDGHSTB6.js.map +0 -1
  127. package/dist/chunk-HM3DHMW7.js.map +0 -1
  128. package/dist/chunk-RT6IBH37.js.map +0 -1
  129. package/dist/chunk-RWR56UVK.js.map +0 -1
  130. package/dist/chunk-XE6RTHUD.js.map +0 -1
  131. package/dist/chunk-YT7UHV67.js.map +0 -1
  132. /package/dist/{chunk-G2WNOT3R.js.map → chunk-2RQYJFKA.js.map} +0 -0
  133. /package/dist/{chunk-DO5OZHSS.js.map → chunk-B4QYXVPZ.js.map} +0 -0
  134. /package/dist/{chunk-QBUOZVNZ.js.map → chunk-CJFWO46A.js.map} +0 -0
  135. /package/dist/{chunk-VH3PI43B.js.map → chunk-DC333ZDC.js.map} +0 -0
  136. /package/dist/{chunk-GVLYNP2I.js.map → chunk-DVW6ASTO.js.map} +0 -0
  137. /package/dist/{chunk-NMXNHRAK.js.map → chunk-EZ46ZTAQ.js.map} +0 -0
  138. /package/dist/{chunk-FUEZQ2H6.js.map → chunk-FMQ3A7W4.js.map} +0 -0
  139. /package/dist/{chunk-KWQ2BQXF.js.map → chunk-FXQYEXLS.js.map} +0 -0
  140. /package/dist/{chunk-72GS6PIH.js.map → chunk-HPJP3HFD.js.map} +0 -0
  141. /package/dist/{chunk-J64CA4V6.js.map → chunk-INKJBMPJ.js.map} +0 -0
  142. /package/dist/{chunk-YVMYQSED.js.map → chunk-IRJADQM7.js.map} +0 -0
  143. /package/dist/{chunk-PZLUO4OY.js.map → chunk-JTTTXGHX.js.map} +0 -0
  144. /package/dist/{chunk-4C7PDDLY.js.map → chunk-JZHIF3K7.js.map} +0 -0
  145. /package/dist/{chunk-D7JTL3DJ.js.map → chunk-KQ27IDYL.js.map} +0 -0
  146. /package/dist/{chunk-SGXUMZWL.js.map → chunk-LJ5E4GXC.js.map} +0 -0
  147. /package/dist/{chunk-LFZXMQOH.js.map → chunk-LNA6M2IE.js.map} +0 -0
  148. /package/dist/{chunk-ODQ2BKWU.js.map → chunk-M4P5YJ45.js.map} +0 -0
  149. /package/dist/{chunk-TOWP4T5L.js.map → chunk-MVEYK55V.js.map} +0 -0
  150. /package/dist/{chunk-5M6JI76P.js.map → chunk-N5OCAAXY.js.map} +0 -0
  151. /package/dist/{chunk-FKBCYT7B.js.map → chunk-OEJDFGAF.js.map} +0 -0
  152. /package/dist/{chunk-I26YP2Q3.js.map → chunk-QR2TM4OY.js.map} +0 -0
  153. /package/dist/{chunk-7LDSHHKN.js.map → chunk-TWDVLTU6.js.map} +0 -0
  154. /package/dist/{chunk-C7BO2ASM.js.map → chunk-VSZ5GDET.js.map} +0 -0
  155. /package/dist/{chunk-CTQHZELA.js.map → chunk-XTRPYUWK.js.map} +0 -0
  156. /package/dist/{chunk-3WKFSTG6.js.map → chunk-ZWAL2ZY7.js.map} +0 -0
  157. /package/dist/{source-manager-6QZ2GDUA.js.map → source-manager-Q34LTUVM.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  BaseCommand
4
- } from "../../chunk-LFZXMQOH.js";
4
+ } from "../../chunk-LNA6M2IE.js";
5
5
  import {
6
6
  getProjectConfigPath
7
- } from "../../chunk-RT6IBH37.js";
7
+ } from "../../chunk-GFDGYQ6M.js";
8
8
  import "../../chunk-T4EXUIBY.js";
9
- import "../../chunk-5QRJUBK7.js";
10
- import "../../chunk-74HSA7C4.js";
9
+ import "../../chunk-C4QI54PN.js";
10
+ import "../../chunk-FTD5Z6QD.js";
11
11
  import {
12
12
  init_esm_shims
13
13
  } from "../../chunk-DHET7RCE.js";
@@ -2,15 +2,15 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-LFZXMQOH.js";
5
+ } from "../../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  getProjectConfigPath,
8
8
  loadProjectSourceConfig,
9
9
  saveProjectConfig
10
- } from "../../chunk-RT6IBH37.js";
10
+ } from "../../chunk-GFDGYQ6M.js";
11
11
  import "../../chunk-T4EXUIBY.js";
12
- import "../../chunk-5QRJUBK7.js";
13
- import "../../chunk-74HSA7C4.js";
12
+ import "../../chunk-C4QI54PN.js";
13
+ import "../../chunk-FTD5Z6QD.js";
14
14
  import {
15
15
  init_esm_shims
16
16
  } from "../../chunk-DHET7RCE.js";
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  ConfigShow
4
- } from "../../chunk-VH3PI43B.js";
5
- import "../../chunk-LFZXMQOH.js";
6
- import "../../chunk-RT6IBH37.js";
4
+ } from "../../chunk-DC333ZDC.js";
5
+ import "../../chunk-LNA6M2IE.js";
6
+ import "../../chunk-GFDGYQ6M.js";
7
7
  import "../../chunk-T4EXUIBY.js";
8
- import "../../chunk-5QRJUBK7.js";
9
- import "../../chunk-74HSA7C4.js";
8
+ import "../../chunk-C4QI54PN.js";
9
+ import "../../chunk-FTD5Z6QD.js";
10
10
  import "../../chunk-DHET7RCE.js";
11
11
  export {
12
12
  ConfigShow as default
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-LFZXMQOH.js";
5
+ } from "../../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  loadProjectSourceConfig,
8
8
  saveProjectConfig
9
- } from "../../chunk-RT6IBH37.js";
9
+ } from "../../chunk-GFDGYQ6M.js";
10
10
  import "../../chunk-T4EXUIBY.js";
11
- import "../../chunk-5QRJUBK7.js";
12
- import "../../chunk-74HSA7C4.js";
11
+ import "../../chunk-C4QI54PN.js";
12
+ import "../../chunk-FTD5Z6QD.js";
13
13
  import {
14
14
  init_esm_shims
15
15
  } from "../../chunk-DHET7RCE.js";
@@ -2,23 +2,23 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-LFZXMQOH.js";
5
+ } from "../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  loadSkillsMatrixFromSource,
8
8
  readForkedFromMetadata
9
- } from "../chunk-RT6IBH37.js";
9
+ } from "../chunk-GFDGYQ6M.js";
10
10
  import "../chunk-T4EXUIBY.js";
11
11
  import {
12
12
  fileExists,
13
13
  getErrorMessage,
14
14
  listDirectories,
15
15
  readFile
16
- } from "../chunk-5QRJUBK7.js";
16
+ } from "../chunk-C4QI54PN.js";
17
17
  import {
18
18
  CLI_BIN_NAME,
19
19
  LOCAL_SKILLS_PATH,
20
20
  STANDARD_FILES
21
- } from "../chunk-74HSA7C4.js";
21
+ } from "../chunk-FTD5Z6QD.js";
22
22
  import {
23
23
  init_esm_shims
24
24
  } from "../chunk-DHET7RCE.js";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-LFZXMQOH.js";
5
+ } from "../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  discoverLocalSkills,
8
8
  getStackSkillIds,
9
9
  loadProjectConfig,
10
10
  loadSkillsMatrixFromSource,
11
11
  validateProjectConfig
12
- } from "../chunk-RT6IBH37.js";
12
+ } from "../chunk-GFDGYQ6M.js";
13
13
  import "../chunk-T4EXUIBY.js";
14
14
  import {
15
15
  directoryExists,
@@ -17,12 +17,12 @@ import {
17
17
  getErrorMessage,
18
18
  glob,
19
19
  setVerbose
20
- } from "../chunk-5QRJUBK7.js";
20
+ } from "../chunk-C4QI54PN.js";
21
21
  import {
22
22
  CLAUDE_DIR,
23
23
  CLI_BIN_NAME,
24
24
  DEFAULT_BRANDING
25
- } from "../chunk-74HSA7C4.js";
25
+ } from "../chunk-FTD5Z6QD.js";
26
26
  import {
27
27
  init_esm_shims
28
28
  } from "../chunk-DHET7RCE.js";
@@ -2,49 +2,49 @@
2
2
  import {
3
3
  getAgentDefinitions,
4
4
  recompileAgents
5
- } from "../chunk-PZLUO4OY.js";
5
+ } from "../chunk-JTTTXGHX.js";
6
6
  import {
7
7
  Wizard
8
- } from "../chunk-CTQHZELA.js";
9
- import "../chunk-FKBCYT7B.js";
10
- import "../chunk-TOWP4T5L.js";
11
- import "../chunk-4C7PDDLY.js";
12
- import "../chunk-72GS6PIH.js";
13
- import "../chunk-FUEZQ2H6.js";
14
- import "../chunk-I26YP2Q3.js";
15
- import "../chunk-HM3DHMW7.js";
16
- import "../chunk-YT7UHV67.js";
8
+ } from "../chunk-XTRPYUWK.js";
9
+ import "../chunk-OEJDFGAF.js";
10
+ import "../chunk-MVEYK55V.js";
11
+ import "../chunk-JZHIF3K7.js";
12
+ import "../chunk-HPJP3HFD.js";
13
+ import "../chunk-FMQ3A7W4.js";
14
+ import "../chunk-QR2TM4OY.js";
15
+ import "../chunk-YTRFL3MR.js";
16
+ import "../chunk-VAQJLHUW.js";
17
17
  import "../chunk-K77I4XGL.js";
18
- import "../chunk-GVLYNP2I.js";
19
- import "../chunk-D7JTL3DJ.js";
20
- import "../chunk-3WKFSTG6.js";
21
- import "../chunk-KWQ2BQXF.js";
18
+ import "../chunk-DVW6ASTO.js";
19
+ import "../chunk-KQ27IDYL.js";
20
+ import "../chunk-ZWAL2ZY7.js";
21
+ import "../chunk-FXQYEXLS.js";
22
22
  import "../chunk-7SOPVGDV.js";
23
- import "../chunk-C7BO2ASM.js";
23
+ import "../chunk-VSZ5GDET.js";
24
24
  import "../chunk-KUV24B5M.js";
25
- import "../chunk-CD64ZNYI.js";
25
+ import "../chunk-3APMMQUA.js";
26
26
  import "../chunk-GG4BSB6S.js";
27
- import "../chunk-CDGHSTB6.js";
28
- import "../chunk-RWR56UVK.js";
29
- import "../chunk-ODQ2BKWU.js";
30
- import "../chunk-DO5OZHSS.js";
31
- import "../chunk-5M6JI76P.js";
27
+ import "../chunk-HLTJK3XB.js";
28
+ import "../chunk-NRCKIHND.js";
29
+ import "../chunk-M4P5YJ45.js";
30
+ import "../chunk-B4QYXVPZ.js";
31
+ import "../chunk-N5OCAAXY.js";
32
32
  import "../chunk-U3IGFMCY.js";
33
33
  import {
34
34
  claudePluginInstall,
35
35
  claudePluginUninstall
36
- } from "../chunk-QBUOZVNZ.js";
37
- import "../chunk-UK3AMBR7.js";
38
- import "../chunk-J64CA4V6.js";
36
+ } from "../chunk-CJFWO46A.js";
37
+ import "../chunk-SPSGZWTZ.js";
38
+ import "../chunk-INKJBMPJ.js";
39
39
  import {
40
40
  ERROR_MESSAGES,
41
41
  INFO_MESSAGES,
42
42
  STATUS_MESSAGES
43
- } from "../chunk-G2WNOT3R.js";
43
+ } from "../chunk-2RQYJFKA.js";
44
44
  import {
45
45
  BaseCommand,
46
46
  EXIT_CODES
47
- } from "../chunk-LFZXMQOH.js";
47
+ } from "../chunk-LNA6M2IE.js";
48
48
  import {
49
49
  archiveLocalSkill,
50
50
  detectInstallation,
@@ -53,17 +53,17 @@ import {
53
53
  loadProjectConfig,
54
54
  loadSkillsMatrixFromSource,
55
55
  restoreArchivedSkill
56
- } from "../chunk-RT6IBH37.js";
56
+ } from "../chunk-GFDGYQ6M.js";
57
57
  import {
58
58
  typedEntries
59
59
  } from "../chunk-T4EXUIBY.js";
60
60
  import {
61
61
  getErrorMessage
62
- } from "../chunk-5QRJUBK7.js";
62
+ } from "../chunk-C4QI54PN.js";
63
63
  import {
64
64
  ASCII_LOGO,
65
65
  CLI_BIN_NAME
66
- } from "../chunk-74HSA7C4.js";
66
+ } from "../chunk-FTD5Z6QD.js";
67
67
  import {
68
68
  init_esm_shims
69
69
  } from "../chunk-DHET7RCE.js";
@@ -2,14 +2,14 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../chunk-LFZXMQOH.js";
5
+ } from "../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  copySkillsToLocalFlattened,
8
8
  loadProjectSourceConfig,
9
9
  loadSkillsMatrixFromSource,
10
10
  resolveSource,
11
11
  saveSourceToProjectConfig
12
- } from "../chunk-RT6IBH37.js";
12
+ } from "../chunk-GFDGYQ6M.js";
13
13
  import {
14
14
  typedKeys
15
15
  } from "../chunk-T4EXUIBY.js";
@@ -20,7 +20,7 @@ import {
20
20
  fileExists,
21
21
  listDirectories,
22
22
  writeFile
23
- } from "../chunk-5QRJUBK7.js";
23
+ } from "../chunk-C4QI54PN.js";
24
24
  import {
25
25
  CLAUDE_SRC_DIR,
26
26
  DEFAULT_BRANDING,
@@ -29,7 +29,7 @@ import {
29
29
  PROJECT_ROOT,
30
30
  STANDARD_FILES,
31
31
  YAML_FORMATTING
32
- } from "../chunk-74HSA7C4.js";
32
+ } from "../chunk-FTD5Z6QD.js";
33
33
  import {
34
34
  init_esm_shims
35
35
  } from "../chunk-DHET7RCE.js";
@@ -2,17 +2,17 @@
2
2
  import {
3
3
  INFO_MESSAGES,
4
4
  STATUS_MESSAGES
5
- } from "../../chunk-G2WNOT3R.js";
5
+ } from "../../chunk-2RQYJFKA.js";
6
6
  import {
7
7
  BaseCommand,
8
8
  EXIT_CODES
9
- } from "../../chunk-LFZXMQOH.js";
9
+ } from "../../chunk-LNA6M2IE.js";
10
10
  import {
11
11
  IMPORT_DEFAULTS,
12
12
  computeFileHash,
13
13
  fetchFromSource,
14
14
  getCurrentDate
15
- } from "../../chunk-RT6IBH37.js";
15
+ } from "../../chunk-GFDGYQ6M.js";
16
16
  import "../../chunk-T4EXUIBY.js";
17
17
  import {
18
18
  copy,
@@ -24,14 +24,14 @@ import {
24
24
  listDirectories,
25
25
  readFile,
26
26
  writeFile
27
- } from "../../chunk-5QRJUBK7.js";
27
+ } from "../../chunk-C4QI54PN.js";
28
28
  import {
29
29
  DEFAULT_SKILLS_SUBDIR,
30
30
  GITHUB_SOURCE,
31
31
  LOCAL_SKILLS_PATH,
32
32
  STANDARD_FILES,
33
33
  YAML_FORMATTING
34
- } from "../../chunk-74HSA7C4.js";
34
+ } from "../../chunk-FTD5Z6QD.js";
35
35
  import {
36
36
  init_esm_shims
37
37
  } from "../../chunk-DHET7RCE.js";
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  STATUS_MESSAGES
4
- } from "../chunk-G2WNOT3R.js";
4
+ } from "../chunk-2RQYJFKA.js";
5
5
  import {
6
6
  BaseCommand,
7
7
  EXIT_CODES
8
- } from "../chunk-LFZXMQOH.js";
8
+ } from "../chunk-LNA6M2IE.js";
9
9
  import {
10
10
  discoverLocalSkills,
11
11
  loadSkillsMatrixFromSource
12
- } from "../chunk-RT6IBH37.js";
12
+ } from "../chunk-GFDGYQ6M.js";
13
13
  import "../chunk-T4EXUIBY.js";
14
14
  import {
15
15
  fileExists,
16
16
  readFile
17
- } from "../chunk-5QRJUBK7.js";
17
+ } from "../chunk-C4QI54PN.js";
18
18
  import {
19
19
  CLI_BIN_NAME,
20
20
  STANDARD_FILES
21
- } from "../chunk-74HSA7C4.js";
21
+ } from "../chunk-FTD5Z6QD.js";
22
22
  import {
23
23
  init_esm_shims
24
24
  } from "../chunk-DHET7RCE.js";
@@ -1,48 +1,48 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  Wizard
4
- } from "../chunk-CTQHZELA.js";
5
- import "../chunk-FKBCYT7B.js";
6
- import "../chunk-TOWP4T5L.js";
7
- import "../chunk-4C7PDDLY.js";
8
- import "../chunk-72GS6PIH.js";
9
- import "../chunk-FUEZQ2H6.js";
10
- import "../chunk-I26YP2Q3.js";
11
- import "../chunk-HM3DHMW7.js";
12
- import "../chunk-YT7UHV67.js";
4
+ } from "../chunk-XTRPYUWK.js";
5
+ import "../chunk-OEJDFGAF.js";
6
+ import "../chunk-MVEYK55V.js";
7
+ import "../chunk-JZHIF3K7.js";
8
+ import "../chunk-HPJP3HFD.js";
9
+ import "../chunk-FMQ3A7W4.js";
10
+ import "../chunk-QR2TM4OY.js";
11
+ import "../chunk-YTRFL3MR.js";
12
+ import "../chunk-VAQJLHUW.js";
13
13
  import "../chunk-K77I4XGL.js";
14
- import "../chunk-GVLYNP2I.js";
15
- import "../chunk-D7JTL3DJ.js";
16
- import "../chunk-3WKFSTG6.js";
17
- import "../chunk-KWQ2BQXF.js";
14
+ import "../chunk-DVW6ASTO.js";
15
+ import "../chunk-KQ27IDYL.js";
16
+ import "../chunk-ZWAL2ZY7.js";
17
+ import "../chunk-FXQYEXLS.js";
18
18
  import "../chunk-7SOPVGDV.js";
19
- import "../chunk-C7BO2ASM.js";
19
+ import "../chunk-VSZ5GDET.js";
20
20
  import "../chunk-KUV24B5M.js";
21
- import "../chunk-CD64ZNYI.js";
21
+ import "../chunk-3APMMQUA.js";
22
22
  import "../chunk-GG4BSB6S.js";
23
- import "../chunk-CDGHSTB6.js";
24
- import "../chunk-RWR56UVK.js";
25
- import "../chunk-ODQ2BKWU.js";
26
- import "../chunk-DO5OZHSS.js";
27
- import "../chunk-5M6JI76P.js";
23
+ import "../chunk-HLTJK3XB.js";
24
+ import "../chunk-NRCKIHND.js";
25
+ import "../chunk-M4P5YJ45.js";
26
+ import "../chunk-B4QYXVPZ.js";
27
+ import "../chunk-N5OCAAXY.js";
28
28
  import "../chunk-U3IGFMCY.js";
29
29
  import {
30
30
  claudePluginInstall,
31
31
  claudePluginMarketplaceAdd,
32
32
  claudePluginMarketplaceExists
33
- } from "../chunk-QBUOZVNZ.js";
34
- import "../chunk-UK3AMBR7.js";
35
- import "../chunk-J64CA4V6.js";
33
+ } from "../chunk-CJFWO46A.js";
34
+ import "../chunk-SPSGZWTZ.js";
35
+ import "../chunk-INKJBMPJ.js";
36
36
  import {
37
37
  DRY_RUN_MESSAGES,
38
38
  INFO_MESSAGES,
39
39
  STATUS_MESSAGES,
40
40
  SUCCESS_MESSAGES
41
- } from "../chunk-G2WNOT3R.js";
41
+ } from "../chunk-2RQYJFKA.js";
42
42
  import {
43
43
  BaseCommand,
44
44
  EXIT_CODES
45
- } from "../chunk-LFZXMQOH.js";
45
+ } from "../chunk-LNA6M2IE.js";
46
46
  import {
47
47
  detectInstallation,
48
48
  getMarketplaceLabel,
@@ -50,7 +50,7 @@ import {
50
50
  installLocal,
51
51
  installPluginConfig,
52
52
  loadSkillsMatrixFromSource
53
- } from "../chunk-RT6IBH37.js";
53
+ } from "../chunk-GFDGYQ6M.js";
54
54
  import "../chunk-T4EXUIBY.js";
55
55
  import {
56
56
  fileExists,
@@ -59,7 +59,7 @@ import {
59
59
  settingsFileSchema,
60
60
  warn,
61
61
  warnUnknownFields
62
- } from "../chunk-5QRJUBK7.js";
62
+ } from "../chunk-C4QI54PN.js";
63
63
  import {
64
64
  ASCII_LOGO,
65
65
  CLAUDE_DIR,
@@ -68,7 +68,7 @@ import {
68
68
  DEFAULT_BRANDING,
69
69
  LOCAL_SKILLS_PATH,
70
70
  MAX_CONFIG_FILE_SIZE
71
- } from "../chunk-74HSA7C4.js";
71
+ } from "../chunk-FTD5Z6QD.js";
72
72
  import {
73
73
  init_esm_shims
74
74
  } from "../chunk-DHET7RCE.js";
@@ -1,17 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  BaseCommand
4
- } from "../chunk-LFZXMQOH.js";
4
+ } from "../chunk-LNA6M2IE.js";
5
5
  import {
6
6
  formatInstallationDisplay,
7
7
  getInstallationInfo
8
- } from "../chunk-RT6IBH37.js";
8
+ } from "../chunk-GFDGYQ6M.js";
9
9
  import "../chunk-T4EXUIBY.js";
10
- import "../chunk-5QRJUBK7.js";
10
+ import "../chunk-C4QI54PN.js";
11
11
  import {
12
12
  CLI_BIN_NAME,
13
13
  DEFAULT_BRANDING
14
- } from "../chunk-74HSA7C4.js";
14
+ } from "../chunk-FTD5Z6QD.js";
15
15
  import {
16
16
  init_esm_shims
17
17
  } from "../chunk-DHET7RCE.js";
@@ -1,26 +1,26 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  getAgentDefinitions
4
- } from "../../chunk-PZLUO4OY.js";
4
+ } from "../../chunk-JTTTXGHX.js";
5
5
  import {
6
6
  isClaudeCLIAvailable
7
- } from "../../chunk-QBUOZVNZ.js";
7
+ } from "../../chunk-CJFWO46A.js";
8
8
  import {
9
9
  BaseCommand,
10
10
  EXIT_CODES
11
- } from "../../chunk-LFZXMQOH.js";
11
+ } from "../../chunk-LNA6M2IE.js";
12
12
  import {
13
13
  resolveSource
14
- } from "../../chunk-RT6IBH37.js";
14
+ } from "../../chunk-GFDGYQ6M.js";
15
15
  import "../../chunk-T4EXUIBY.js";
16
16
  import {
17
17
  fileExists,
18
18
  readFile
19
- } from "../../chunk-5QRJUBK7.js";
19
+ } from "../../chunk-C4QI54PN.js";
20
20
  import {
21
21
  CLAUDE_DIR,
22
22
  CLI_COLORS
23
- } from "../../chunk-74HSA7C4.js";
23
+ } from "../../chunk-FTD5Z6QD.js";
24
24
  import {
25
25
  init_esm_shims
26
26
  } from "../../chunk-DHET7RCE.js";
@@ -2,21 +2,21 @@
2
2
  import {
3
3
  generateMarketplace,
4
4
  writeMarketplace
5
- } from "../../chunk-7LDSHHKN.js";
5
+ } from "../../chunk-TWDVLTU6.js";
6
6
  import {
7
7
  BaseCommand,
8
8
  EXIT_CODES
9
- } from "../../chunk-LFZXMQOH.js";
9
+ } from "../../chunk-LNA6M2IE.js";
10
10
  import {
11
11
  compileAllSkillPlugins
12
- } from "../../chunk-RT6IBH37.js";
12
+ } from "../../chunk-GFDGYQ6M.js";
13
13
  import "../../chunk-T4EXUIBY.js";
14
14
  import {
15
15
  directoryExists,
16
16
  ensureDir,
17
17
  getErrorMessage,
18
18
  writeFile
19
- } from "../../chunk-5QRJUBK7.js";
19
+ } from "../../chunk-C4QI54PN.js";
20
20
  import {
21
21
  CLI_BIN_NAME,
22
22
  KEBAB_CASE_PATTERN,
@@ -24,7 +24,7 @@ import {
24
24
  SKILLS_DIR_PATH,
25
25
  STACKS_FILE_PATH,
26
26
  STANDARD_FILES
27
- } from "../../chunk-74HSA7C4.js";
27
+ } from "../../chunk-FTD5Z6QD.js";
28
28
  import {
29
29
  init_esm_shims
30
30
  } from "../../chunk-DHET7RCE.js";
@@ -2,17 +2,18 @@
2
2
  import {
3
3
  BaseCommand,
4
4
  EXIT_CODES
5
- } from "../../chunk-LFZXMQOH.js";
5
+ } from "../../chunk-LNA6M2IE.js";
6
6
  import {
7
7
  LOCAL_DEFAULTS,
8
+ computeSkillFolderHash,
8
9
  resolveAuthor
9
- } from "../../chunk-RT6IBH37.js";
10
+ } from "../../chunk-GFDGYQ6M.js";
10
11
  import "../../chunk-T4EXUIBY.js";
11
12
  import {
12
13
  directoryExists,
13
14
  fileExists,
14
15
  writeFile
15
- } from "../../chunk-5QRJUBK7.js";
16
+ } from "../../chunk-C4QI54PN.js";
16
17
  import {
17
18
  CLI_BIN_NAME,
18
19
  KEBAB_CASE_PATTERN,
@@ -20,7 +21,7 @@ import {
20
21
  PLUGIN_MANIFEST_DIR,
21
22
  SKILLS_DIR_PATH,
22
23
  STANDARD_FILES
23
- } from "../../chunk-74HSA7C4.js";
24
+ } from "../../chunk-FTD5Z6QD.js";
24
25
  import {
25
26
  init_esm_shims
26
27
  } from "../../chunk-DHET7RCE.js";
@@ -95,7 +96,7 @@ Add your patterns here.
95
96
  </critical_reminders>
96
97
  `;
97
98
  }
98
- function generateMetadataYaml(name, author, category) {
99
+ function generateMetadataYaml(name, author, category, contentHash) {
99
100
  const titleName = toTitleCase(name);
100
101
  return `custom: true
101
102
  category: ${category}
@@ -104,6 +105,7 @@ author: "${author}"
104
105
  cliName: ${titleName}
105
106
  cliDescription: Brief description
106
107
  usageGuidance: Use when <guidance>.
108
+ contentHash: ${contentHash}
107
109
  tags:
108
110
  - local
109
111
  - custom
@@ -189,10 +191,11 @@ Use --force to overwrite.`, {
189
191
  this.log("Creating skill files...");
190
192
  try {
191
193
  const skillMdContent = generateSkillMd(args.name);
192
- const metadataContent = generateMetadataYaml(args.name, author, category);
193
194
  const skillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);
194
195
  const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);
195
196
  await writeFile(skillMdPath, skillMdContent);
197
+ const contentHash = await computeSkillFolderHash(skillDir);
198
+ const metadataContent = generateMetadataYaml(args.name, author, category, contentHash);
196
199
  await writeFile(metadataPath, metadataContent);
197
200
  this.log("");
198
201
  this.logSuccess(`Created ${STANDARD_FILES.SKILL_MD} at ${skillMdPath}`);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/new/skill.ts"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport { BaseCommand } from \"../../base-command.js\";\nimport { resolveAuthor } from \"../../lib/configuration/index.js\";\nimport { writeFile, directoryExists, fileExists } from \"../../utils/fs.js\";\nimport {\n CLI_BIN_NAME,\n KEBAB_CASE_PATTERN,\n LOCAL_SKILLS_PATH,\n PLUGIN_MANIFEST_DIR,\n SKILLS_DIR_PATH,\n STANDARD_FILES,\n} from \"../../consts.js\";\nimport { EXIT_CODES } from \"../../lib/exit-codes.js\";\nimport { LOCAL_DEFAULTS } from \"../../lib/metadata-keys.js\";\nimport type { CategoryPath } from \"../../types/index.js\";\n\nexport function validateSkillName(name: string): string | null {\n if (!name || name.trim() === \"\") {\n return \"Skill name is required\";\n }\n\n if (!KEBAB_CASE_PATTERN.test(name)) {\n return \"Skill name must be kebab-case (lowercase letters, numbers, and hyphens, starting with a letter)\";\n }\n\n return null;\n}\n\nexport function toTitleCase(kebabCase: string): string {\n return kebabCase\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function generateSkillMd(name: string): string {\n const titleName = toTitleCase(name);\n\n return `---\nname: ${name}\ndescription: Brief description of this skill\n---\n\n# ${titleName}\n\n> **Quick Guide:** Add a brief summary of what this skill teaches.\n\n---\n\n<critical_requirements>\n\n## CRITICAL: Before Using This Skill\n\n**(Add critical requirements here)**\n\n</critical_requirements>\n\n---\n\n**When to use:**\n\n- Add use cases here\n\n**Key patterns covered:**\n\n- Add patterns here\n\n---\n\n<patterns>\n\n## Core Patterns\n\n### Pattern 1: Example Pattern\n\nAdd your patterns here.\n\n</patterns>\n\n---\n\n<critical_reminders>\n\n## CRITICAL REMINDERS\n\n**(Repeat critical requirements here)**\n\n</critical_reminders>\n`;\n}\n\nexport function generateMetadataYaml(name: string, author: string, category: CategoryPath): string {\n const titleName = toTitleCase(name);\n\n return `custom: true\ncategory: ${category}\ncategoryExclusive: false\nauthor: \"${author}\"\ncliName: ${titleName}\ncliDescription: Brief description\nusageGuidance: Use when <guidance>.\ntags:\n - local\n - custom\n`;\n}\n\nexport default class NewSkill extends BaseCommand {\n static summary = \"Create a new local skill with proper structure\";\n static description = \"Create a new local skill scaffold with SKILL.md and metadata.yaml files\";\n\n static args = {\n name: Args.string({\n description: \"Name of the skill to create (kebab-case)\",\n required: true,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n author: Flags.string({\n char: \"a\",\n description: \"Author identifier (e.g., @myhandle)\",\n required: false,\n }),\n category: Flags.string({\n char: \"c\",\n description: \"Skill category\",\n default: LOCAL_DEFAULTS.CATEGORY,\n }),\n force: Flags.boolean({\n char: \"f\",\n description: \"Overwrite existing skill directory\",\n default: false,\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory for the skill (overrides marketplace detection)\",\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(NewSkill);\n const projectDir = process.cwd();\n\n this.log(\"\");\n this.log(\"Create New Skill\");\n this.log(\"\");\n\n const validationError = validateSkillName(args.name);\n if (validationError) {\n this.error(validationError, { exit: EXIT_CODES.INVALID_ARGS });\n }\n\n // Determine author: flag > project config > default\n let author = flags.author;\n if (!author) {\n author = (await resolveAuthor(projectDir)) || LOCAL_DEFAULTS.AUTHOR;\n }\n\n // CLI flag is an untyped string — cast at data boundary\n const category = flags.category as CategoryPath;\n\n // Determine skill output path: --output flag > marketplace detection > local default\n let skillsBasePath: string;\n if (flags.output) {\n skillsBasePath = path.resolve(flags.output);\n } else {\n const marketplacePath = path.join(projectDir, PLUGIN_MANIFEST_DIR, \"marketplace.json\");\n if (await fileExists(marketplacePath)) {\n this.log(`Detected marketplace context, creating skill in ${SKILLS_DIR_PATH}/`);\n skillsBasePath = path.join(projectDir, SKILLS_DIR_PATH);\n } else {\n skillsBasePath = path.join(projectDir, LOCAL_SKILLS_PATH);\n }\n }\n\n const skillDir = path.join(skillsBasePath, args.name);\n\n if (await directoryExists(skillDir)) {\n if (!flags.force) {\n this.error(`Skill directory already exists: ${skillDir}\\nUse --force to overwrite.`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n this.warn(`Overwriting existing skill at ${skillDir}`);\n }\n\n this.log(`Skill name: ${args.name}`);\n this.log(`Author: ${author}`);\n this.log(`Category: ${category}`);\n this.log(`Directory: ${skillDir}`);\n this.log(\"\");\n\n if (flags[\"dry-run\"]) {\n this.log(\"[DRY RUN] Would create skill files\");\n return;\n }\n\n this.log(\"Creating skill files...\");\n\n try {\n const skillMdContent = generateSkillMd(args.name);\n const metadataContent = generateMetadataYaml(args.name, author, category);\n\n const skillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n\n await writeFile(skillMdPath, skillMdContent);\n await writeFile(metadataPath, metadataContent);\n\n this.log(\"\");\n this.logSuccess(`Created ${STANDARD_FILES.SKILL_MD} at ${skillMdPath}`);\n this.logSuccess(`Created ${STANDARD_FILES.METADATA_YAML} at ${metadataPath}`);\n this.log(\"\");\n this.log(\n `Skill created successfully! Run '${CLI_BIN_NAME} compile' to include it in your agents.`,\n );\n this.log(\"\");\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/cli/commands/new/skill.ts"],"sourcesContent":["import { Args, Flags } from \"@oclif/core\";\nimport path from \"path\";\nimport { BaseCommand } from \"../../base-command.js\";\nimport { resolveAuthor } from \"../../lib/configuration/index.js\";\nimport { writeFile, directoryExists, fileExists } from \"../../utils/fs.js\";\nimport {\n CLI_BIN_NAME,\n KEBAB_CASE_PATTERN,\n LOCAL_SKILLS_PATH,\n PLUGIN_MANIFEST_DIR,\n SKILLS_DIR_PATH,\n STANDARD_FILES,\n} from \"../../consts.js\";\nimport { EXIT_CODES } from \"../../lib/exit-codes.js\";\nimport { LOCAL_DEFAULTS } from \"../../lib/metadata-keys.js\";\nimport { computeSkillFolderHash } from \"../../lib/versioning.js\";\nimport type { CategoryPath } from \"../../types/index.js\";\n\nexport function validateSkillName(name: string): string | null {\n if (!name || name.trim() === \"\") {\n return \"Skill name is required\";\n }\n\n if (!KEBAB_CASE_PATTERN.test(name)) {\n return \"Skill name must be kebab-case (lowercase letters, numbers, and hyphens, starting with a letter)\";\n }\n\n return null;\n}\n\nexport function toTitleCase(kebabCase: string): string {\n return kebabCase\n .split(\"-\")\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(\" \");\n}\n\nexport function generateSkillMd(name: string): string {\n const titleName = toTitleCase(name);\n\n return `---\nname: ${name}\ndescription: Brief description of this skill\n---\n\n# ${titleName}\n\n> **Quick Guide:** Add a brief summary of what this skill teaches.\n\n---\n\n<critical_requirements>\n\n## CRITICAL: Before Using This Skill\n\n**(Add critical requirements here)**\n\n</critical_requirements>\n\n---\n\n**When to use:**\n\n- Add use cases here\n\n**Key patterns covered:**\n\n- Add patterns here\n\n---\n\n<patterns>\n\n## Core Patterns\n\n### Pattern 1: Example Pattern\n\nAdd your patterns here.\n\n</patterns>\n\n---\n\n<critical_reminders>\n\n## CRITICAL REMINDERS\n\n**(Repeat critical requirements here)**\n\n</critical_reminders>\n`;\n}\n\nexport function generateMetadataYaml(\n name: string,\n author: string,\n category: CategoryPath,\n contentHash: string,\n): string {\n const titleName = toTitleCase(name);\n\n return `custom: true\ncategory: ${category}\ncategoryExclusive: false\nauthor: \"${author}\"\ncliName: ${titleName}\ncliDescription: Brief description\nusageGuidance: Use when <guidance>.\ncontentHash: ${contentHash}\ntags:\n - local\n - custom\n`;\n}\n\nexport default class NewSkill extends BaseCommand {\n static summary = \"Create a new local skill with proper structure\";\n static description = \"Create a new local skill scaffold with SKILL.md and metadata.yaml files\";\n\n static args = {\n name: Args.string({\n description: \"Name of the skill to create (kebab-case)\",\n required: true,\n }),\n };\n\n static flags = {\n ...BaseCommand.baseFlags,\n author: Flags.string({\n char: \"a\",\n description: \"Author identifier (e.g., @myhandle)\",\n required: false,\n }),\n category: Flags.string({\n char: \"c\",\n description: \"Skill category\",\n default: LOCAL_DEFAULTS.CATEGORY,\n }),\n force: Flags.boolean({\n char: \"f\",\n description: \"Overwrite existing skill directory\",\n default: false,\n }),\n output: Flags.string({\n char: \"o\",\n description: \"Output directory for the skill (overrides marketplace detection)\",\n }),\n };\n\n async run(): Promise<void> {\n const { args, flags } = await this.parse(NewSkill);\n const projectDir = process.cwd();\n\n this.log(\"\");\n this.log(\"Create New Skill\");\n this.log(\"\");\n\n const validationError = validateSkillName(args.name);\n if (validationError) {\n this.error(validationError, { exit: EXIT_CODES.INVALID_ARGS });\n }\n\n // Determine author: flag > project config > default\n let author = flags.author;\n if (!author) {\n author = (await resolveAuthor(projectDir)) || LOCAL_DEFAULTS.AUTHOR;\n }\n\n // CLI flag is an untyped string — cast at data boundary\n const category = flags.category as CategoryPath;\n\n // Determine skill output path: --output flag > marketplace detection > local default\n let skillsBasePath: string;\n if (flags.output) {\n skillsBasePath = path.resolve(flags.output);\n } else {\n const marketplacePath = path.join(projectDir, PLUGIN_MANIFEST_DIR, \"marketplace.json\");\n if (await fileExists(marketplacePath)) {\n this.log(`Detected marketplace context, creating skill in ${SKILLS_DIR_PATH}/`);\n skillsBasePath = path.join(projectDir, SKILLS_DIR_PATH);\n } else {\n skillsBasePath = path.join(projectDir, LOCAL_SKILLS_PATH);\n }\n }\n\n const skillDir = path.join(skillsBasePath, args.name);\n\n if (await directoryExists(skillDir)) {\n if (!flags.force) {\n this.error(`Skill directory already exists: ${skillDir}\\nUse --force to overwrite.`, {\n exit: EXIT_CODES.ERROR,\n });\n }\n this.warn(`Overwriting existing skill at ${skillDir}`);\n }\n\n this.log(`Skill name: ${args.name}`);\n this.log(`Author: ${author}`);\n this.log(`Category: ${category}`);\n this.log(`Directory: ${skillDir}`);\n this.log(\"\");\n\n if (flags[\"dry-run\"]) {\n this.log(\"[DRY RUN] Would create skill files\");\n return;\n }\n\n this.log(\"Creating skill files...\");\n\n try {\n const skillMdContent = generateSkillMd(args.name);\n\n const skillMdPath = path.join(skillDir, STANDARD_FILES.SKILL_MD);\n const metadataPath = path.join(skillDir, STANDARD_FILES.METADATA_YAML);\n\n await writeFile(skillMdPath, skillMdContent);\n\n const contentHash = await computeSkillFolderHash(skillDir);\n const metadataContent = generateMetadataYaml(args.name, author, category, contentHash);\n await writeFile(metadataPath, metadataContent);\n\n this.log(\"\");\n this.logSuccess(`Created ${STANDARD_FILES.SKILL_MD} at ${skillMdPath}`);\n this.logSuccess(`Created ${STANDARD_FILES.METADATA_YAML} at ${metadataPath}`);\n this.log(\"\");\n this.log(\n `Skill created successfully! Run '${CLI_BIN_NAME} compile' to include it in your agents.`,\n );\n this.log(\"\");\n } catch (error) {\n this.handleError(error);\n }\n }\n}\n"],"mappings":"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","names":[]}