@skillsmith/cli 0.6.3 → 0.6.5

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 (182) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts +20 -0
  4. package/dist/src/commands/__meta__/telemetry-coverage.test.d.ts.map +1 -0
  5. package/dist/src/commands/__meta__/telemetry-coverage.test.js +118 -0
  6. package/dist/src/commands/__meta__/telemetry-coverage.test.js.map +1 -0
  7. package/dist/src/commands/ab-test.d.ts +1 -0
  8. package/dist/src/commands/ab-test.d.ts.map +1 -1
  9. package/dist/src/commands/ab-test.js +17 -8
  10. package/dist/src/commands/ab-test.js.map +1 -1
  11. package/dist/src/commands/analyze.d.ts +1 -0
  12. package/dist/src/commands/analyze.d.ts.map +1 -1
  13. package/dist/src/commands/analyze.js +32 -23
  14. package/dist/src/commands/analyze.js.map +1 -1
  15. package/dist/src/commands/audit-collisions.d.ts +1 -4
  16. package/dist/src/commands/audit-collisions.d.ts.map +1 -1
  17. package/dist/src/commands/audit-collisions.js +32 -23
  18. package/dist/src/commands/audit-collisions.js.map +1 -1
  19. package/dist/src/commands/audit-sources.action.d.ts +37 -0
  20. package/dist/src/commands/audit-sources.action.d.ts.map +1 -0
  21. package/dist/src/commands/audit-sources.action.js +321 -0
  22. package/dist/src/commands/audit-sources.action.js.map +1 -0
  23. package/dist/src/commands/audit-sources.d.ts +37 -0
  24. package/dist/src/commands/audit-sources.d.ts.map +1 -0
  25. package/dist/src/commands/audit-sources.js +55 -0
  26. package/dist/src/commands/audit-sources.js.map +1 -0
  27. package/dist/src/commands/audit-sources.test.d.ts +9 -0
  28. package/dist/src/commands/audit-sources.test.d.ts.map +1 -0
  29. package/dist/src/commands/audit-sources.test.js +228 -0
  30. package/dist/src/commands/audit-sources.test.js.map +1 -0
  31. package/dist/src/commands/audit.d.ts +2 -6
  32. package/dist/src/commands/audit.d.ts.map +1 -1
  33. package/dist/src/commands/audit.js +52 -31
  34. package/dist/src/commands/audit.js.map +1 -1
  35. package/dist/src/commands/author/index.d.ts +2 -1
  36. package/dist/src/commands/author/index.d.ts.map +1 -1
  37. package/dist/src/commands/author/index.js +4 -1
  38. package/dist/src/commands/author/index.js.map +1 -1
  39. package/dist/src/commands/author/init.action.d.ts +29 -0
  40. package/dist/src/commands/author/init.action.d.ts.map +1 -0
  41. package/dist/src/commands/author/init.action.js +131 -0
  42. package/dist/src/commands/author/init.action.js.map +1 -0
  43. package/dist/src/commands/author/init.d.ts +0 -14
  44. package/dist/src/commands/author/init.d.ts.map +1 -1
  45. package/dist/src/commands/author/init.js +3 -87
  46. package/dist/src/commands/author/init.js.map +1 -1
  47. package/dist/src/commands/author/mcp-init.d.ts +1 -0
  48. package/dist/src/commands/author/mcp-init.d.ts.map +1 -1
  49. package/dist/src/commands/author/mcp-init.js +21 -13
  50. package/dist/src/commands/author/mcp-init.js.map +1 -1
  51. package/dist/src/commands/author/subagent.d.ts +1 -0
  52. package/dist/src/commands/author/subagent.d.ts.map +1 -1
  53. package/dist/src/commands/author/subagent.js +23 -15
  54. package/dist/src/commands/author/subagent.js.map +1 -1
  55. package/dist/src/commands/author/transform.d.ts +1 -0
  56. package/dist/src/commands/author/transform.d.ts.map +1 -1
  57. package/dist/src/commands/author/transform.js +23 -15
  58. package/dist/src/commands/author/transform.js.map +1 -1
  59. package/dist/src/commands/config.d.ts +2 -0
  60. package/dist/src/commands/config.d.ts.map +1 -1
  61. package/dist/src/commands/config.js +43 -28
  62. package/dist/src/commands/config.js.map +1 -1
  63. package/dist/src/commands/create.d.ts +1 -0
  64. package/dist/src/commands/create.d.ts.map +1 -1
  65. package/dist/src/commands/create.js +28 -19
  66. package/dist/src/commands/create.js.map +1 -1
  67. package/dist/src/commands/diff.d.ts +4 -0
  68. package/dist/src/commands/diff.d.ts.map +1 -1
  69. package/dist/src/commands/diff.js +90 -54
  70. package/dist/src/commands/diff.js.map +1 -1
  71. package/dist/src/commands/diff.test.js +52 -0
  72. package/dist/src/commands/diff.test.js.map +1 -1
  73. package/dist/src/commands/import-local.d.ts +7 -0
  74. package/dist/src/commands/import-local.d.ts.map +1 -1
  75. package/dist/src/commands/import-local.js +43 -34
  76. package/dist/src/commands/import-local.js.map +1 -1
  77. package/dist/src/commands/import.d.ts +6 -0
  78. package/dist/src/commands/import.d.ts.map +1 -1
  79. package/dist/src/commands/import.js +23 -14
  80. package/dist/src/commands/import.js.map +1 -1
  81. package/dist/src/commands/info.d.ts +7 -0
  82. package/dist/src/commands/info.d.ts.map +1 -1
  83. package/dist/src/commands/info.js +77 -68
  84. package/dist/src/commands/info.js.map +1 -1
  85. package/dist/src/commands/install-skill.d.ts +3 -0
  86. package/dist/src/commands/install-skill.d.ts.map +1 -1
  87. package/dist/src/commands/install-skill.js +23 -15
  88. package/dist/src/commands/install-skill.js.map +1 -1
  89. package/dist/src/commands/install.d.ts +21 -0
  90. package/dist/src/commands/install.d.ts.map +1 -1
  91. package/dist/src/commands/install.js +154 -139
  92. package/dist/src/commands/install.js.map +1 -1
  93. package/dist/src/commands/login.d.ts +4 -0
  94. package/dist/src/commands/login.d.ts.map +1 -1
  95. package/dist/src/commands/login.js +56 -47
  96. package/dist/src/commands/login.js.map +1 -1
  97. package/dist/src/commands/logout.d.ts +1 -0
  98. package/dist/src/commands/logout.d.ts.map +1 -1
  99. package/dist/src/commands/logout.js +36 -27
  100. package/dist/src/commands/logout.js.map +1 -1
  101. package/dist/src/commands/manage.d.ts +3 -9
  102. package/dist/src/commands/manage.d.ts.map +1 -1
  103. package/dist/src/commands/manage.js +69 -45
  104. package/dist/src/commands/manage.js.map +1 -1
  105. package/dist/src/commands/merge.d.ts +7 -0
  106. package/dist/src/commands/merge.d.ts.map +1 -1
  107. package/dist/src/commands/merge.js +117 -108
  108. package/dist/src/commands/merge.js.map +1 -1
  109. package/dist/src/commands/pin.d.ts +2 -0
  110. package/dist/src/commands/pin.d.ts.map +1 -1
  111. package/dist/src/commands/pin.js +88 -73
  112. package/dist/src/commands/pin.js.map +1 -1
  113. package/dist/src/commands/recommend.d.ts +1 -0
  114. package/dist/src/commands/recommend.d.ts.map +1 -1
  115. package/dist/src/commands/recommend.js +35 -27
  116. package/dist/src/commands/recommend.js.map +1 -1
  117. package/dist/src/commands/search-formatters.d.ts +1 -0
  118. package/dist/src/commands/search-formatters.d.ts.map +1 -1
  119. package/dist/src/commands/search-formatters.js +3 -0
  120. package/dist/src/commands/search-formatters.js.map +1 -1
  121. package/dist/src/commands/search.action.d.ts +16 -0
  122. package/dist/src/commands/search.action.d.ts.map +1 -0
  123. package/dist/src/commands/search.action.js +384 -0
  124. package/dist/src/commands/search.action.js.map +1 -0
  125. package/dist/src/commands/search.d.ts +3 -0
  126. package/dist/src/commands/search.d.ts.map +1 -1
  127. package/dist/src/commands/search.js +5 -354
  128. package/dist/src/commands/search.js.map +1 -1
  129. package/dist/src/commands/sync.action.d.ts +39 -0
  130. package/dist/src/commands/sync.action.d.ts.map +1 -0
  131. package/dist/src/commands/sync.action.js +353 -0
  132. package/dist/src/commands/sync.action.js.map +1 -0
  133. package/dist/src/commands/sync.d.ts +3 -0
  134. package/dist/src/commands/sync.d.ts.map +1 -1
  135. package/dist/src/commands/sync.js +8 -310
  136. package/dist/src/commands/sync.js.map +1 -1
  137. package/dist/src/commands/telemetry.action.d.ts +38 -0
  138. package/dist/src/commands/telemetry.action.d.ts.map +1 -0
  139. package/dist/src/commands/telemetry.action.js +350 -0
  140. package/dist/src/commands/telemetry.action.js.map +1 -0
  141. package/dist/src/commands/telemetry.d.ts +5 -13
  142. package/dist/src/commands/telemetry.d.ts.map +1 -1
  143. package/dist/src/commands/telemetry.js +13 -302
  144. package/dist/src/commands/telemetry.js.map +1 -1
  145. package/dist/src/commands/whoami.d.ts +1 -0
  146. package/dist/src/commands/whoami.d.ts.map +1 -1
  147. package/dist/src/commands/whoami.js +29 -21
  148. package/dist/src/commands/whoami.js.map +1 -1
  149. package/dist/src/utils/open-database.d.ts +10 -2
  150. package/dist/src/utils/open-database.d.ts.map +1 -1
  151. package/dist/src/utils/open-database.js +15 -2
  152. package/dist/src/utils/open-database.js.map +1 -1
  153. package/dist/src/utils/skills-directory.d.ts.map +1 -1
  154. package/dist/src/utils/skills-directory.js +5 -1
  155. package/dist/src/utils/skills-directory.js.map +1 -1
  156. package/dist/tests/e2e/audit-sources-affix.test.d.ts +11 -0
  157. package/dist/tests/e2e/audit-sources-affix.test.d.ts.map +1 -0
  158. package/dist/tests/e2e/audit-sources-affix.test.js +121 -0
  159. package/dist/tests/e2e/audit-sources-affix.test.js.map +1 -0
  160. package/dist/tests/e2e/audit-sources-apply.test.d.ts +13 -0
  161. package/dist/tests/e2e/audit-sources-apply.test.d.ts.map +1 -0
  162. package/dist/tests/e2e/audit-sources-apply.test.js +166 -0
  163. package/dist/tests/e2e/audit-sources-apply.test.js.map +1 -0
  164. package/dist/tests/e2e/audit-sources-recovery.test.d.ts +15 -0
  165. package/dist/tests/e2e/audit-sources-recovery.test.d.ts.map +1 -0
  166. package/dist/tests/e2e/audit-sources-recovery.test.js +179 -0
  167. package/dist/tests/e2e/audit-sources-recovery.test.js.map +1 -0
  168. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts +23 -0
  169. package/dist/tests/e2e/audit-sources-roundtrip.test.d.ts.map +1 -0
  170. package/dist/tests/e2e/audit-sources-roundtrip.test.js +139 -0
  171. package/dist/tests/e2e/audit-sources-roundtrip.test.js.map +1 -0
  172. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts +49 -0
  173. package/dist/tests/e2e/utils/source-recovery-fixture.d.ts.map +1 -0
  174. package/dist/tests/e2e/utils/source-recovery-fixture.js +106 -0
  175. package/dist/tests/e2e/utils/source-recovery-fixture.js.map +1 -0
  176. package/dist/tests/init.test.js +2 -1
  177. package/dist/tests/init.test.js.map +1 -1
  178. package/dist/tests/install-quarantine.test.d.ts +10 -0
  179. package/dist/tests/install-quarantine.test.d.ts.map +1 -0
  180. package/dist/tests/install-quarantine.test.js +86 -0
  181. package/dist/tests/install-quarantine.test.js.map +1 -0
  182. package/package.json +4 -5
@@ -0,0 +1,228 @@
1
+ /**
2
+ * @fileoverview Unit tests for `sklx audit sources` CLI command.
3
+ * @see SMI-5407: Skill Source Provenance Recovery
4
+ *
5
+ * Tests the action layer (`runAuditSources`) with injected mocks so the test
6
+ * suite runs fully offline without a real DB or skills directory.
7
+ */
8
+ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
9
+ import * as os from 'node:os';
10
+ import * as path from 'node:path';
11
+ // ============================================================================
12
+ // Module mocks — must be declared before the imports that use them
13
+ // ============================================================================
14
+ const mockOpenCliDatabase = vi.fn();
15
+ vi.mock('../utils/open-database.js', () => ({
16
+ openCliDatabase: (...args) => mockOpenCliDatabase(...args),
17
+ }));
18
+ const mockLoadManifest = vi.fn();
19
+ vi.mock('../utils/manifest.js', () => ({
20
+ loadManifest: () => mockLoadManifest(),
21
+ }));
22
+ const mockRecoverSources = vi.fn();
23
+ const mockBackfillManifest = vi.fn();
24
+ vi.mock('@skillsmith/core', async (importOriginal) => {
25
+ const actual = await importOriginal();
26
+ return {
27
+ ...actual,
28
+ // Must be a regular function (not arrow) so `new SourceRecoveryService()` works.
29
+ SourceRecoveryService: function MockSourceRecoveryService() {
30
+ return { recoverSources: (...args) => mockRecoverSources(...args) };
31
+ },
32
+ backfillManifest: (...args) => mockBackfillManifest(...args),
33
+ defaultSkillsRoot: () => path.join(os.homedir(), '.claude', 'skills'),
34
+ };
35
+ });
36
+ // ============================================================================
37
+ // Import after mocks
38
+ // ============================================================================
39
+ import { runAuditSources } from './audit-sources.action.js';
40
+ function makeReport(overrides = {}) {
41
+ return {
42
+ skills: [
43
+ {
44
+ skillName: 'linear',
45
+ installPath: '/home/user/.claude/skills/linear',
46
+ recoveredSource: {
47
+ owner: 'williamsmith',
48
+ repo: 'linear',
49
+ url: 'https://github.com/williamsmith/linear',
50
+ },
51
+ registryId: 'uuid-linear',
52
+ method: 'git-remote',
53
+ confidence: 'exact',
54
+ candidates: [],
55
+ status: 'recovered',
56
+ },
57
+ ],
58
+ summary: { total: 1, recovered: 1, already_tracked: 0, unknown: 0, skipped_backup: 0 },
59
+ ...overrides,
60
+ };
61
+ }
62
+ function makeDb() {
63
+ return {
64
+ prepare: vi.fn().mockReturnValue({ all: vi.fn().mockReturnValue([]) }),
65
+ close: vi.fn(),
66
+ };
67
+ }
68
+ function baseOptions(overrides = {}) {
69
+ return {
70
+ skillsRoot: '/tmp/test-skills',
71
+ apply: false,
72
+ yes: false,
73
+ set: undefined,
74
+ minConfidence: 'high',
75
+ json: false,
76
+ embedding: false,
77
+ catalogHint: false,
78
+ writeFrontmatter: false,
79
+ forceWriteFrontmatter: false,
80
+ db: ':memory:',
81
+ ...overrides,
82
+ };
83
+ }
84
+ // ============================================================================
85
+ // Tests
86
+ // ============================================================================
87
+ describe('runAuditSources', () => {
88
+ beforeEach(() => {
89
+ vi.clearAllMocks();
90
+ mockOpenCliDatabase.mockResolvedValue(makeDb());
91
+ mockLoadManifest.mockResolvedValue({ version: '1.0.0', installedSkills: {} });
92
+ mockRecoverSources.mockResolvedValue(makeReport());
93
+ mockBackfillManifest.mockResolvedValue({ planned: [], written: [], skipped: [] });
94
+ });
95
+ afterEach(() => {
96
+ vi.clearAllMocks();
97
+ });
98
+ // --------------------------------------------------------------------------
99
+ // --json shape + exit 0
100
+ // --------------------------------------------------------------------------
101
+ it('--json emits valid JSON with skills and summary', async () => {
102
+ const report = makeReport();
103
+ mockRecoverSources.mockResolvedValue(report);
104
+ const written = [];
105
+ vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
106
+ if (typeof chunk === 'string')
107
+ written.push(chunk);
108
+ return true;
109
+ });
110
+ await runAuditSources(baseOptions({ json: true }));
111
+ const output = written.join('');
112
+ const parsed = JSON.parse(output);
113
+ expect(Array.isArray(parsed.skills)).toBe(true);
114
+ expect(parsed.summary.total).toBe(1);
115
+ });
116
+ // --------------------------------------------------------------------------
117
+ // Dry-run: default run does NOT write the manifest
118
+ // --------------------------------------------------------------------------
119
+ it('dry-run by default: does not call backfillManifest', async () => {
120
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
121
+ await runAuditSources(baseOptions());
122
+ expect(mockBackfillManifest).not.toHaveBeenCalled();
123
+ logSpy.mockRestore();
124
+ });
125
+ // --------------------------------------------------------------------------
126
+ // already_tracked overlay
127
+ // --------------------------------------------------------------------------
128
+ it('overlays already_tracked when manifest already has a source', async () => {
129
+ mockLoadManifest.mockResolvedValue({
130
+ version: '1.0.0',
131
+ installedSkills: {
132
+ linear: {
133
+ id: 'uuid-linear',
134
+ name: 'linear',
135
+ version: '1.0.0',
136
+ source: 'https://github.com/williamsmith/linear',
137
+ installPath: '/home/user/.claude/skills/linear',
138
+ installedAt: '2024-01-01T00:00:00.000Z',
139
+ lastUpdated: '2024-01-01T00:00:00.000Z',
140
+ },
141
+ },
142
+ });
143
+ const jsonChunks = [];
144
+ vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
145
+ if (typeof chunk === 'string')
146
+ jsonChunks.push(chunk);
147
+ return true;
148
+ });
149
+ await runAuditSources(baseOptions({ json: true }));
150
+ const parsed = JSON.parse(jsonChunks.join(''));
151
+ const alreadyTracked = parsed.skills.find((s) => s.status === 'already_tracked');
152
+ expect(alreadyTracked).toBeDefined();
153
+ expect(parsed.summary.already_tracked).toBe(1);
154
+ });
155
+ // --------------------------------------------------------------------------
156
+ // --apply --yes writes the manifest
157
+ // --------------------------------------------------------------------------
158
+ it('--apply --yes calls backfillManifest with apply: true', async () => {
159
+ mockBackfillManifest.mockResolvedValue({ planned: [], written: ['linear'], skipped: [] });
160
+ const logSpy = vi.spyOn(console, 'log').mockImplementation(() => { });
161
+ await runAuditSources(baseOptions({ apply: true, yes: true }));
162
+ expect(mockBackfillManifest).toHaveBeenCalledWith(expect.objectContaining({ summary: expect.any(Object) }), expect.objectContaining({ apply: true }));
163
+ logSpy.mockRestore();
164
+ });
165
+ // --------------------------------------------------------------------------
166
+ // Multi-candidate row appears in JSON output
167
+ // --------------------------------------------------------------------------
168
+ it('--json includes candidates array when ambiguous (multi-match)', async () => {
169
+ const ambiguousReport = makeReport({
170
+ skills: [
171
+ {
172
+ skillName: 'git-helper',
173
+ installPath: '/home/user/.claude/skills/git-helper',
174
+ recoveredSource: null,
175
+ registryId: null,
176
+ method: 'registry-name',
177
+ confidence: 'low',
178
+ candidates: [
179
+ {
180
+ id: 'id-1',
181
+ name: 'git-helper',
182
+ owner: 'alice',
183
+ repo: 'git-helper',
184
+ url: 'https://github.com/alice/git-helper',
185
+ qualityScore: 80,
186
+ },
187
+ {
188
+ id: 'id-2',
189
+ name: 'git-helper',
190
+ owner: 'bob',
191
+ repo: 'git-helper',
192
+ url: 'https://github.com/bob/git-helper',
193
+ qualityScore: 60,
194
+ },
195
+ ],
196
+ status: 'unknown',
197
+ },
198
+ ],
199
+ summary: { total: 1, recovered: 0, already_tracked: 0, unknown: 1, skipped_backup: 0 },
200
+ });
201
+ mockRecoverSources.mockResolvedValue(ambiguousReport);
202
+ const written = [];
203
+ vi.spyOn(process.stdout, 'write').mockImplementation((chunk) => {
204
+ if (typeof chunk === 'string')
205
+ written.push(chunk);
206
+ return true;
207
+ });
208
+ await runAuditSources(baseOptions({ json: true }));
209
+ const parsed = JSON.parse(written.join(''));
210
+ expect(parsed.skills[0]?.candidates).toHaveLength(2);
211
+ });
212
+ // --------------------------------------------------------------------------
213
+ // --write-frontmatter without --force-write-frontmatter exits non-zero
214
+ // --------------------------------------------------------------------------
215
+ it('--write-frontmatter without --force-write-frontmatter exits with code 1', async () => {
216
+ const exitSpy = vi
217
+ .spyOn(process, 'exit')
218
+ .mockImplementation((_code) => {
219
+ throw new Error('process.exit');
220
+ });
221
+ const errSpy = vi.spyOn(console, 'error').mockImplementation(() => { });
222
+ await expect(runAuditSources(baseOptions({ writeFrontmatter: true, forceWriteFrontmatter: false }))).rejects.toThrow('process.exit');
223
+ expect(exitSpy).toHaveBeenCalledWith(1);
224
+ exitSpy.mockRestore();
225
+ errSpy.mockRestore();
226
+ });
227
+ });
228
+ //# sourceMappingURL=audit-sources.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit-sources.test.js","sourceRoot":"","sources":["../../../src/commands/audit-sources.test.ts"],"names":[],"mappings":"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"}
@@ -17,12 +17,7 @@
17
17
  * - `sklx audit collisions` is the namespace-collision audit (SMI-4590 PR 5/6).
18
18
  */
19
19
  import { Command } from 'commander';
20
- /**
21
- * Build the `advisories` subcommand. Same body as the pre-SMI-4590 flat
22
- * `audit` command — only the surface (parent + name) changed.
23
- *
24
- * @internal exported for tests; consumers should use {@link createAuditCommand}.
25
- */
20
+ export declare const advisoriesAction: (opts: Record<string, string | boolean | undefined>) => Promise<void>;
26
21
  export declare function createAuditAdvisoriesSubcommand(): Command;
27
22
  /**
28
23
  * Deprecation warning for top-level `sklx audit <skill-id>` flat invocation.
@@ -40,5 +35,6 @@ export declare const AUDIT_FLAT_DEPRECATION_NOTICE = "[DEPRECATED] sklx audit <s
40
35
  * `sklx audit collisions` is added by SMI-4590 PR 5/6.
41
36
  */
42
37
  export declare function createAuditCommand(): Command;
38
+ export declare const auditAction: (skillId: string | undefined, opts: Record<string, string | boolean | undefined>, command: Command) => Promise<void>;
43
39
  export default createAuditCommand;
44
40
  //# sourceMappingURL=audit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAyInC;;;;;GAKG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAgBzD;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,4JACiH,CAAA;AAE3J;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA2C5C;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiKnC,eAAO,MAAM,gBAAgB,uEAI3B,CAAA;AAEF,wBAAgB,+BAA+B,IAAI,OAAO,CAMzD;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,4JACiH,CAAA;AAE3J;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CA0B5C;AA4BD,eAAO,MAAM,WAAW,sHAItB,CAAA;AAEF,eAAe,kBAAkB,CAAA"}
@@ -19,11 +19,13 @@
19
19
  import { Command } from 'commander';
20
20
  import chalk from 'chalk';
21
21
  import { AdvisoryRepository } from '@skillsmith/core';
22
+ import { withTelemetry } from '@skillsmith/core/telemetry';
22
23
  import { openCliDatabase } from '../utils/open-database.js';
23
24
  import { DEFAULT_DB_PATH } from '../config.js';
24
25
  import { sanitizeError } from '../utils/sanitize.js';
25
26
  import { requireTier } from '../utils/require-tier.js';
26
27
  import { createAuditCollisionsSubcommand } from './audit-collisions.js';
28
+ import { createAuditSourcesSubcommand } from './audit-sources.js';
27
29
  // ============================================================================
28
30
  // Severity display helpers
29
31
  // ============================================================================
@@ -127,23 +129,31 @@ async function runAdvisoriesAudit(options) {
127
129
  *
128
130
  * @internal exported for tests; consumers should use {@link createAuditCommand}.
129
131
  */
132
+ // SMI-5128: extracted from inline .action() closure so withTelemetry can wrap
133
+ // it at the export boundary (SMI-5040 coverage gate).
134
+ async function advisoriesActionImpl(opts) {
135
+ try {
136
+ await runAdvisoriesAudit({
137
+ db: opts['db'],
138
+ fix: opts['fix'] ?? false,
139
+ });
140
+ }
141
+ catch (error) {
142
+ console.error(chalk.red('Error:'), sanitizeError(error));
143
+ process.exit(1);
144
+ }
145
+ }
146
+ export const advisoriesAction = withTelemetry(advisoriesActionImpl, {
147
+ source: 'cli',
148
+ extractSkillId: () => 'advisories',
149
+ extractFramework: () => 'cli',
150
+ });
130
151
  export function createAuditAdvisoriesSubcommand() {
131
152
  return new Command('advisories')
132
153
  .description('Check installed skills for known security advisories (Team tier required)')
133
154
  .option('-d, --db <path>', 'Database file path', DEFAULT_DB_PATH)
134
155
  .option('--fix', 'Attempt to update skills with available patches')
135
- .action(async (opts) => {
136
- try {
137
- await runAdvisoriesAudit({
138
- db: opts['db'],
139
- fix: opts['fix'] ?? false,
140
- });
141
- }
142
- catch (error) {
143
- console.error(chalk.red('Error:'), sanitizeError(error));
144
- process.exit(1);
145
- }
146
- });
156
+ .action(advisoriesAction);
147
157
  }
148
158
  /**
149
159
  * Deprecation warning for top-level `sklx audit <skill-id>` flat invocation.
@@ -165,6 +175,8 @@ export function createAuditCommand() {
165
175
  audit.addCommand(createAuditAdvisoriesSubcommand());
166
176
  // SMI-4590 PR 5/6 — register `collisions` sibling subcommand.
167
177
  audit.addCommand(createAuditCollisionsSubcommand());
178
+ // SMI-5407 — register `sources` sibling subcommand.
179
+ audit.addCommand(createAuditSourcesSubcommand());
168
180
  // Deprecation alias: `sklx audit <skill-id>` → forward to `advisories`.
169
181
  // Implemented as a default-action on the parent: when Commander is invoked
170
182
  // with positional args that don't match a registered subcommand, emit the
@@ -177,26 +189,35 @@ export function createAuditCommand() {
177
189
  .argument('[skillId]', 'Legacy positional skill-id (deprecated; use `advisories <skill-id>`)')
178
190
  .option('-d, --db <path>', 'Database file path (deprecated alias)', DEFAULT_DB_PATH)
179
191
  .option('--fix', 'Attempt to update skills with available patches (deprecated alias)')
180
- .action(async (skillId, opts) => {
181
- if (skillId === undefined) {
182
- // No subcommand and no positional — print parent help.
183
- audit.help();
184
- return;
185
- }
186
- // Emit deprecation warning to stderr; do not pollute stdout.
187
- console.error(chalk.yellow(AUDIT_FLAT_DEPRECATION_NOTICE));
188
- try {
189
- await runAdvisoriesAudit({
190
- db: opts['db'],
191
- fix: opts['fix'] ?? false,
192
- });
193
- }
194
- catch (error) {
195
- console.error(chalk.red('Error:'), sanitizeError(error));
196
- process.exit(1);
197
- }
198
- });
192
+ .action(auditAction);
199
193
  return audit;
200
194
  }
195
+ // SMI-5128: extracted from the parent `audit` inline .action() closure so
196
+ // withTelemetry can wrap it. `command.help()` (commander passes the Command as
197
+ // the final action arg) replaces the closure's `audit.help()`.
198
+ async function auditActionImpl(skillId, opts, command) {
199
+ if (skillId === undefined) {
200
+ // No subcommand and no positional — print parent help.
201
+ command.help();
202
+ return;
203
+ }
204
+ // Emit deprecation warning to stderr; do not pollute stdout.
205
+ console.error(chalk.yellow(AUDIT_FLAT_DEPRECATION_NOTICE));
206
+ try {
207
+ await runAdvisoriesAudit({
208
+ db: opts['db'],
209
+ fix: opts['fix'] ?? false,
210
+ });
211
+ }
212
+ catch (error) {
213
+ console.error(chalk.red('Error:'), sanitizeError(error));
214
+ process.exit(1);
215
+ }
216
+ }
217
+ export const auditAction = withTelemetry(auditActionImpl, {
218
+ source: 'cli',
219
+ extractSkillId: () => 'audit',
220
+ extractFramework: () => 'cli',
221
+ });
201
222
  export default createAuditCommand;
202
223
  //# sourceMappingURL=audit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,kBAAkB,EAAsB,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,+BAA+B,EAAE,MAAM,uBAAuB,CAAA;AAEvE,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,eAAe,GAA6C;IAChE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;IAChC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI;IACpB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI;IACzB,GAAG,EAAE,KAAK,CAAC,IAAI;CAChB,CAAA;AAED,MAAM,iBAAiB,GAA2B;IAChD,QAAQ,EAAE,KAAK;IACf,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,KAAK;IACb,GAAG,EAAE,KAAK;CACX,CAAA;AAED,SAAS,aAAa,CAAC,QAAgB;IACrC,MAAM,OAAO,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,KAAK,CAAA;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAA;IACnD,OAAO,OAAO,CAAC,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;GAEG;AACH,SAAS,eAAe,CAAC,UAA2B;IAClD,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,GAAG,CAAC,eAAe;YAClC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC;YACtD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QAEjC,OAAO,CAAC,GAAG,CACT,GAAG,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;YAC1D,aAAa,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI;YAClC,aAAa,QAAQ,IAAI,CAC5B,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,MAA8B;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;IAC9D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;IACnC,IAAI,MAAM,CAAC,UAAU,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;IACnF,IAAI,MAAM,CAAC,MAAM,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACzF,IAAI,MAAM,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IAChG,IAAI,MAAM,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IACnF,OAAO,CAAC,GAAG,CAAC,KAAK,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAA;AACzD,CAAC;AAWD,KAAK,UAAU,kBAAkB,CAAC,OAA+B;IAC/D,6CAA6C;IAC7C,MAAM,WAAW,CAAC,MAAM,CAAC,CAAA;IAEzB,MAAM,EAAE,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IAE5C,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAA;QAC/C,MAAM,UAAU,GAAG,YAAY,CAAC,mBAAmB,EAAE,CAAA;QAErD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAA;YAChD,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,2EAA2E;gBACzE,uEAAuE,CAC1E,CACF,CAAA;YACD,OAAO,CAAC,GAAG,EAAE,CAAA;YACb,OAAM;QACR,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAA;QAChE,eAAe,CAAC,UAAU,CAAC,CAAA;QAE3B,oBAAoB;QACpB,MAAM,MAAM,GAA2B,EAAE,CAAA;QACzC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;QACxD,CAAC;QACD,YAAY,CAAC,MAAM,CAAC,CAAA;QACpB,OAAO,CAAC,GAAG,EAAE,CAAA;QAEb,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;YAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAA;gBACzD,OAAM;YACR,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,OAAO,CAAC,MAAM,mBAAmB,CAAC,CAAC,CAAA;YAEjF,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;YACjF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,OAAO,EAAE,CAAC,CAAC,CAAA;gBAClE,4EAA4E;gBAC5E,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,mBAAmB,OAAO,2CAA2C,CAAC,CACjF,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC;SAC7B,WAAW,CAAC,2EAA2E,CAAC;SACxF,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,eAAe,CAAC;SAChE,MAAM,CAAC,OAAO,EAAE,iDAAiD,CAAC;SAClE,MAAM,CAAC,KAAK,EAAE,IAAkD,EAAE,EAAE;QACnE,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC;gBACvB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAW;gBACxB,GAAG,EAAG,IAAI,CAAC,KAAK,CAAa,IAAI,KAAK;aACvC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACxC,yJAAyJ,CAAA;AAE3J;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAC5C,2DAA2D,CAC5D,CAAA;IAED,KAAK,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC,CAAA;IACnD,8DAA8D;IAC9D,KAAK,CAAC,UAAU,CAAC,+BAA+B,EAAE,CAAC,CAAA;IAEnD,wEAAwE;IACxE,2EAA2E;IAC3E,0EAA0E;IAC1E,yDAAyD;IACzD,EAAE;IACF,0EAA0E;IAC1E,2EAA2E;IAC3E,+DAA+D;IAC/D,KAAK;SACF,QAAQ,CAAC,WAAW,EAAE,sEAAsE,CAAC;SAC7F,MAAM,CAAC,iBAAiB,EAAE,uCAAuC,EAAE,eAAe,CAAC;SACnF,MAAM,CAAC,OAAO,EAAE,oEAAoE,CAAC;SACrF,MAAM,CACL,KAAK,EAAE,OAA2B,EAAE,IAAkD,EAAE,EAAE;QACxF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,uDAAuD;YACvD,KAAK,CAAC,IAAI,EAAE,CAAA;YACZ,OAAM;QACR,CAAC;QACD,6DAA6D;QAC7D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC,CAAA;QAC1D,IAAI,CAAC;YACH,MAAM,kBAAkB,CAAC;gBACvB,EAAE,EAAE,IAAI,CAAC,IAAI,CAAW;gBACxB,GAAG,EAAG,IAAI,CAAC,KAAK,CAAa,IAAI,KAAK;aACvC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAA;YACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,CACF,CAAA;IAEH,OAAO,KAAK,CAAA;AACd,CAAC;AAED,eAAe,kBAAkB,CAAA"}
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/commands/audit.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,8 @@
8
8
  * Provides CLI commands for creating, validating, publishing skills,
9
9
  * and generating companion subagents.
10
10
  */
11
- export { createInitCommand, createValidateCommand, createPublishCommand, initSkill, validateSkill, publishSkill, type InitOptions, VALID_CATEGORIES, } from './init.js';
11
+ export { createInitCommand, createValidateCommand, createPublishCommand } from './init.action.js';
12
+ export { initSkill, validateSkill, publishSkill, type InitOptions, VALID_CATEGORIES, } from './init.js';
12
13
  export { createSubagentCommand, generateSubagent, type SubagentOptions } from './subagent.js';
13
14
  export { createTransformCommand, transformSkill, type TransformOptions } from './transform.js';
14
15
  export { createMcpInitCommand, initMcpServer, type McpInitOptions } from './mcp-init.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/author/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,YAAY,EACZ,KAAK,WAAW,EAChB,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAE7F,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE9F,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAGxF,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/author/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACjG,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EACZ,KAAK,WAAW,EAChB,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,eAAe,CAAA;AAE7F,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAE9F,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAA;AAGxF,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,YAAY,CAAA"}
@@ -9,7 +9,10 @@
9
9
  * and generating companion subagents.
10
10
  */
11
11
  // Re-export command creators
12
- export { createInitCommand, createValidateCommand, createPublishCommand, initSkill, validateSkill, publishSkill, VALID_CATEGORIES, } from './init.js';
12
+ // SMI-5129: the command factories moved to init.action.ts (sibling-split);
13
+ // the logic functions + types stay in init.ts.
14
+ export { createInitCommand, createValidateCommand, createPublishCommand } from './init.action.js';
15
+ export { initSkill, validateSkill, publishSkill, VALID_CATEGORIES, } from './init.js';
13
16
  export { createSubagentCommand, generateSubagent } from './subagent.js';
14
17
  export { createTransformCommand, transformSkill } from './transform.js';
15
18
  export { createMcpInitCommand, initMcpServer } from './mcp-init.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/author/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,6BAA6B;AAC7B,OAAO,EACL,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAwB,MAAM,eAAe,CAAA;AAE7F,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAyB,MAAM,gBAAgB,CAAA;AAE9F,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAuB,MAAM,eAAe,CAAA;AAExF,oDAAoD;AACpD,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/commands/author/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,6BAA6B;AAC7B,2EAA2E;AAC3E,+CAA+C;AAC/C,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACjG,OAAO,EACL,SAAS,EACT,aAAa,EACb,YAAY,EAEZ,gBAAgB,GACjB,MAAM,WAAW,CAAA;AAElB,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAwB,MAAM,eAAe,CAAA;AAE7F,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAyB,MAAM,gBAAgB,CAAA;AAE9F,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAuB,MAAM,eAAe,CAAA;AAExF,oDAAoD;AACpD,OAAO,EACL,qBAAqB,EACrB,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,YAAY,CAAA"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @fileoverview `skillsmith author init|validate|publish` command factories +
3
+ * withTelemetry-wrapped action handlers.
4
+ * @module @skillsmith/cli/commands/author/init.action
5
+ * @see SMI-5129 — sibling-split of init.ts so the 3 author handlers can be
6
+ * wrapped without init.ts exceeding the 500-LOC gate. Mirrors the
7
+ * sync.action.ts / telemetry.action.ts convention (SMI-5127/SMI-5128): the
8
+ * business logic (initSkill/validateSkill/publishSkill) stays in init.ts;
9
+ * the commander factories + wrapped actions live here. One-way import
10
+ * (init.action → init), so no import cycle.
11
+ */
12
+ import { Command } from 'commander';
13
+ export declare const initAction: (name: string | undefined, opts: Record<string, string | boolean | undefined>) => Promise<void>;
14
+ /**
15
+ * Create init command
16
+ * SMI-1473: Added non-interactive flags for E2E testing
17
+ */
18
+ export declare function createInitCommand(): Command;
19
+ export declare const validateAction: (skillPath: string) => Promise<void>;
20
+ /**
21
+ * Create validate command
22
+ */
23
+ export declare function createValidateCommand(): Command;
24
+ export declare const publishAction: (skillPath: string, opts: Record<string, string | boolean | undefined>) => Promise<void>;
25
+ /**
26
+ * Create publish command
27
+ */
28
+ export declare function createPublishCommand(): Command;
29
+ //# sourceMappingURL=init.action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.action.d.ts","sourceRoot":"","sources":["../../../../src/commands/author/init.action.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAuCnC,eAAO,MAAM,UAAU,iGAIrB,CAAA;AAEF;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAa3C;AAgBD,eAAO,MAAM,cAAc,sCAIzB,CAAA;AAEF;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAK/C;AA8BD,eAAO,MAAM,aAAa,0FAIxB,CAAA;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAU9C"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * @fileoverview `skillsmith author init|validate|publish` command factories +
3
+ * withTelemetry-wrapped action handlers.
4
+ * @module @skillsmith/cli/commands/author/init.action
5
+ * @see SMI-5129 — sibling-split of init.ts so the 3 author handlers can be
6
+ * wrapped without init.ts exceeding the 500-LOC gate. Mirrors the
7
+ * sync.action.ts / telemetry.action.ts convention (SMI-5127/SMI-5128): the
8
+ * business logic (initSkill/validateSkill/publishSkill) stays in init.ts;
9
+ * the commander factories + wrapped actions live here. One-way import
10
+ * (init.action → init), so no import cycle.
11
+ */
12
+ import { Command } from 'commander';
13
+ import chalk from 'chalk';
14
+ import { withTelemetry } from '@skillsmith/core/telemetry';
15
+ import { sanitizeError } from '../../utils/sanitize.js';
16
+ import { InitSkillError } from '../../utils/errors.js';
17
+ import { initSkill, validateSkill, publishSkill } from './init.js';
18
+ // ---------------------------------------------------------------------------
19
+ // init
20
+ // ---------------------------------------------------------------------------
21
+ async function initActionImpl(name, opts) {
22
+ const targetPath = opts['path'] || '.';
23
+ try {
24
+ await initSkill(name, targetPath, {
25
+ description: opts['description'],
26
+ author: opts['author'],
27
+ category: opts['category'],
28
+ yes: opts['yes'],
29
+ });
30
+ }
31
+ catch (error) {
32
+ // SMI-4314: typed InitSkillError → user-facing message is already
33
+ // composed (and chalk-styled); print it verbatim and exit with the
34
+ // requested code. Anything else is an unexpected bug — route
35
+ // through sanitizeError with the generic prefix.
36
+ if (error instanceof InitSkillError) {
37
+ console.error(error.message);
38
+ process.exit(error.exitCode);
39
+ }
40
+ console.error(chalk.red('Error initializing skill:'), sanitizeError(error));
41
+ process.exit(1);
42
+ }
43
+ }
44
+ export const initAction = withTelemetry(initActionImpl, {
45
+ source: 'cli',
46
+ extractSkillId: () => 'author init',
47
+ extractFramework: () => 'cli',
48
+ });
49
+ /**
50
+ * Create init command
51
+ * SMI-1473: Added non-interactive flags for E2E testing
52
+ */
53
+ export function createInitCommand() {
54
+ return new Command('init')
55
+ .description('Initialize a new skill directory')
56
+ .argument('[name]', 'Skill name')
57
+ .option('-p, --path <path>', 'Target directory', '.')
58
+ .option('-d, --description <description>', 'Skill description (non-interactive)')
59
+ .option('-a, --author <author>', 'Skill author (non-interactive)')
60
+ .option('-c, --category <category>', 'Skill category: development|productivity|communication|data|security|other (non-interactive)')
61
+ .option('-y, --yes', 'Auto-confirm overwrite (non-interactive)')
62
+ .action(initAction);
63
+ }
64
+ // ---------------------------------------------------------------------------
65
+ // validate
66
+ // ---------------------------------------------------------------------------
67
+ async function validateActionImpl(skillPath) {
68
+ try {
69
+ const valid = await validateSkill(skillPath);
70
+ process.exit(valid ? 0 : 1);
71
+ }
72
+ catch (error) {
73
+ console.error(chalk.red('Error validating skill:'), sanitizeError(error));
74
+ process.exit(1);
75
+ }
76
+ }
77
+ export const validateAction = withTelemetry(validateActionImpl, {
78
+ source: 'cli',
79
+ extractSkillId: () => 'author validate',
80
+ extractFramework: () => 'cli',
81
+ });
82
+ /**
83
+ * Create validate command
84
+ */
85
+ export function createValidateCommand() {
86
+ return new Command('validate')
87
+ .description('Validate a local SKILL.md file')
88
+ .argument('[path]', 'Path to SKILL.md or skill directory', '.')
89
+ .action(validateAction);
90
+ }
91
+ // ---------------------------------------------------------------------------
92
+ // publish
93
+ // ---------------------------------------------------------------------------
94
+ async function publishActionImpl(skillPath, opts) {
95
+ try {
96
+ const referencePatterns = opts['referencePatterns']
97
+ ? String(opts['referencePatterns'])
98
+ .split(',')
99
+ .map((p) => p.trim())
100
+ : undefined;
101
+ // SMI-2444: Use conditional spread to satisfy exactOptionalPropertyTypes
102
+ const success = await publishSkill(skillPath, {
103
+ ...(opts['checkReferences'] !== undefined && {
104
+ checkReferences: opts['checkReferences'],
105
+ }),
106
+ ...(referencePatterns !== undefined && { referencePatterns }),
107
+ });
108
+ process.exit(success ? 0 : 1);
109
+ }
110
+ catch (error) {
111
+ console.error(chalk.red('Error publishing skill:'), sanitizeError(error));
112
+ process.exit(1);
113
+ }
114
+ }
115
+ export const publishAction = withTelemetry(publishActionImpl, {
116
+ source: 'cli',
117
+ extractSkillId: () => 'author publish',
118
+ extractFramework: () => 'cli',
119
+ });
120
+ /**
121
+ * Create publish command
122
+ */
123
+ export function createPublishCommand() {
124
+ return new Command('publish')
125
+ .description('Prepare skill for sharing')
126
+ .argument('[path]', 'Path to skill directory', '.')
127
+ .option('--check-references', 'Scan for project-specific references before publishing')
128
+ .option('--reference-patterns <patterns>', 'Additional regex patterns to check (comma-separated)')
129
+ .action(publishAction);
130
+ }
131
+ //# sourceMappingURL=init.action.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.action.js","sourceRoot":"","sources":["../../../../src/commands/author/init.action.ts"],"names":[],"mappings":"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"}