@skillsmith/cli 0.2.7 → 0.3.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 (35) hide show
  1. package/README.md +3 -1
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/commands/author.d.ts +16 -2
  4. package/dist/src/commands/author.d.ts.map +1 -1
  5. package/dist/src/commands/author.js +96 -51
  6. package/dist/src/commands/author.js.map +1 -1
  7. package/dist/src/commands/index.d.ts +1 -0
  8. package/dist/src/commands/index.d.ts.map +1 -1
  9. package/dist/src/commands/index.js +4 -0
  10. package/dist/src/commands/index.js.map +1 -1
  11. package/dist/src/commands/sync.d.ts +21 -0
  12. package/dist/src/commands/sync.d.ts.map +1 -0
  13. package/dist/src/commands/sync.js +413 -0
  14. package/dist/src/commands/sync.js.map +1 -0
  15. package/dist/src/index.d.ts +3 -0
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +9 -2
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/tests/author.test.js +85 -0
  20. package/dist/tests/author.test.js.map +1 -1
  21. package/dist/tests/e2e/author.e2e.test.js +341 -21
  22. package/dist/tests/e2e/author.e2e.test.js.map +1 -1
  23. package/dist/tests/e2e/utils/index.d.ts +4 -0
  24. package/dist/tests/e2e/utils/index.d.ts.map +1 -1
  25. package/dist/tests/e2e/utils/index.js +4 -0
  26. package/dist/tests/e2e/utils/index.js.map +1 -1
  27. package/dist/tests/e2e/utils/mock-github.d.ts +23 -0
  28. package/dist/tests/e2e/utils/mock-github.d.ts.map +1 -0
  29. package/dist/tests/e2e/utils/mock-github.js +60 -0
  30. package/dist/tests/e2e/utils/mock-github.js.map +1 -0
  31. package/dist/tests/e2e/utils/mock-prompts.d.ts +19 -0
  32. package/dist/tests/e2e/utils/mock-prompts.d.ts.map +1 -0
  33. package/dist/tests/e2e/utils/mock-prompts.js +48 -0
  34. package/dist/tests/e2e/utils/mock-prompts.js.map +1 -0
  35. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../tests/e2e/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../tests/e2e/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
@@ -1,8 +1,12 @@
1
1
  /**
2
2
  * E2E Test Utilities Index
3
+ *
4
+ * SMI-1475: Added mock utilities for E2E tests
3
5
  */
4
6
  export * from './hardcoded-detector.js';
5
7
  export * from './linear-reporter.js';
6
8
  export * from './baseline-collector.js';
9
+ export * from './mock-prompts.js';
10
+ export * from './mock-github.js';
7
11
  export * from '../test-config.js';
8
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../tests/e2e/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../tests/e2e/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,yBAAyB,CAAA;AACvC,cAAc,sBAAsB,CAAA;AACpC,cAAc,yBAAyB,CAAA;AACvC,cAAc,mBAAmB,CAAA;AACjC,cAAc,kBAAkB,CAAA;AAChC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * SMI-1474: GitHub API mock utilities for E2E tests
3
+ *
4
+ * Provides mock responses for GitHub API calls without real API access.
5
+ */
6
+ export interface MockGitHubSkill {
7
+ name: string;
8
+ full_name: string;
9
+ description: string;
10
+ html_url: string;
11
+ topics: string[];
12
+ stargazers_count: number;
13
+ }
14
+ export declare const MOCK_SKILLS: MockGitHubSkill[];
15
+ /**
16
+ * Setup mock GitHub API responses
17
+ */
18
+ export declare function setupMockGitHub(customSkills?: MockGitHubSkill[]): void;
19
+ /**
20
+ * Clear GitHub API mocks
21
+ */
22
+ export declare function clearMockGitHub(): void;
23
+ //# sourceMappingURL=mock-github.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-github.d.ts","sourceRoot":"","sources":["../../../../tests/e2e/utils/mock-github.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,eAAO,MAAM,WAAW,EAAE,eAAe,EAiBxC,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,eAAe,EAAE,QA0B/D;AAED;;GAEG;AACH,wBAAgB,eAAe,SAE9B"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * SMI-1474: GitHub API mock utilities for E2E tests
3
+ *
4
+ * Provides mock responses for GitHub API calls without real API access.
5
+ */
6
+ import { vi } from 'vitest';
7
+ export const MOCK_SKILLS = [
8
+ {
9
+ name: 'commit-skill',
10
+ full_name: 'anthropics/commit-skill',
11
+ description: 'A skill for git commits',
12
+ html_url: 'https://github.com/anthropics/commit-skill',
13
+ topics: ['claude-skill', 'git', 'commit'],
14
+ stargazers_count: 100,
15
+ },
16
+ {
17
+ name: 'test-helper',
18
+ full_name: 'community/test-helper',
19
+ description: 'Testing utilities skill',
20
+ html_url: 'https://github.com/community/test-helper',
21
+ topics: ['claude-skill', 'testing'],
22
+ stargazers_count: 50,
23
+ },
24
+ ];
25
+ /**
26
+ * Setup mock GitHub API responses
27
+ */
28
+ export function setupMockGitHub(customSkills) {
29
+ const skills = customSkills || MOCK_SKILLS;
30
+ // Mock global fetch for GitHub API calls
31
+ const originalFetch = global.fetch;
32
+ global.fetch = vi.fn().mockImplementation(async (url) => {
33
+ if (url.includes('api.github.com/search/repositories')) {
34
+ return {
35
+ ok: true,
36
+ json: async () => ({
37
+ total_count: skills.length,
38
+ items: skills,
39
+ }),
40
+ };
41
+ }
42
+ if (url.includes('api.github.com/repos/')) {
43
+ const repoName = url.split('/repos/')[1]?.split('/')[1];
44
+ const skill = skills.find((s) => s.name === repoName);
45
+ return {
46
+ ok: !!skill,
47
+ json: async () => skill || { message: 'Not Found' },
48
+ };
49
+ }
50
+ // Fall back to original fetch for non-GitHub URLs
51
+ return originalFetch(url);
52
+ });
53
+ }
54
+ /**
55
+ * Clear GitHub API mocks
56
+ */
57
+ export function clearMockGitHub() {
58
+ vi.restoreAllMocks();
59
+ }
60
+ //# sourceMappingURL=mock-github.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-github.js","sourceRoot":"","sources":["../../../../tests/e2e/utils/mock-github.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAW3B,MAAM,CAAC,MAAM,WAAW,GAAsB;IAC5C;QACE,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,yBAAyB;QACpC,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,4CAA4C;QACtD,MAAM,EAAE,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC;QACzC,gBAAgB,EAAE,GAAG;KACtB;IACD;QACE,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,uBAAuB;QAClC,WAAW,EAAE,yBAAyB;QACtC,QAAQ,EAAE,0CAA0C;QACpD,MAAM,EAAE,CAAC,cAAc,EAAE,SAAS,CAAC;QACnC,gBAAgB,EAAE,EAAE;KACrB;CACF,CAAA;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,YAAgC;IAC9D,MAAM,MAAM,GAAG,YAAY,IAAI,WAAW,CAAA;IAE1C,yCAAyC;IACzC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAA;IAClC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAW,EAAE,EAAE;QAC9D,IAAI,GAAG,CAAC,QAAQ,CAAC,oCAAoC,CAAC,EAAE,CAAC;YACvD,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,WAAW,EAAE,MAAM,CAAC,MAAM;oBAC1B,KAAK,EAAE,MAAM;iBACd,CAAC;aACH,CAAA;QACH,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;YACrD,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,KAAK;gBACX,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE;aACpD,CAAA;QACH,CAAC;QACD,kDAAkD;QAClD,OAAO,aAAa,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,EAAE,CAAC,eAAe,EAAE,CAAA;AACtB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * SMI-1473: Mock prompt utilities for E2E tests
3
+ *
4
+ * Provides utilities to mock @inquirer/prompts for non-interactive testing.
5
+ */
6
+ export interface MockPromptResponses {
7
+ input?: Record<string, string>;
8
+ confirm?: Record<string, boolean>;
9
+ select?: Record<string, string>;
10
+ }
11
+ /**
12
+ * Setup mock responses for inquirer prompts
13
+ */
14
+ export declare function setupMockPrompts(responses: MockPromptResponses): void;
15
+ /**
16
+ * Clear all mock prompts
17
+ */
18
+ export declare function clearMockPrompts(): void;
19
+ //# sourceMappingURL=mock-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-prompts.d.ts","sourceRoot":"","sources":["../../../../tests/e2e/utils/mock-prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,mBAAmB,QA+B9D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,SAE/B"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * SMI-1473: Mock prompt utilities for E2E tests
3
+ *
4
+ * Provides utilities to mock @inquirer/prompts for non-interactive testing.
5
+ */
6
+ import { vi } from 'vitest';
7
+ /**
8
+ * Setup mock responses for inquirer prompts
9
+ */
10
+ export function setupMockPrompts(responses) {
11
+ // Mock the @inquirer/prompts module
12
+ vi.mock('@inquirer/prompts', () => ({
13
+ input: vi.fn().mockImplementation(async (opts) => {
14
+ const key = opts.message.toLowerCase();
15
+ for (const [pattern, value] of Object.entries(responses.input || {})) {
16
+ if (key.includes(pattern.toLowerCase())) {
17
+ return value;
18
+ }
19
+ }
20
+ return 'test-value';
21
+ }),
22
+ confirm: vi.fn().mockImplementation(async (opts) => {
23
+ const key = opts.message.toLowerCase();
24
+ for (const [pattern, value] of Object.entries(responses.confirm || {})) {
25
+ if (key.includes(pattern.toLowerCase())) {
26
+ return value;
27
+ }
28
+ }
29
+ return false;
30
+ }),
31
+ select: vi.fn().mockImplementation(async (opts) => {
32
+ const key = opts.message.toLowerCase();
33
+ for (const [pattern, value] of Object.entries(responses.select || {})) {
34
+ if (key.includes(pattern.toLowerCase())) {
35
+ return value;
36
+ }
37
+ }
38
+ return 'development';
39
+ }),
40
+ }));
41
+ }
42
+ /**
43
+ * Clear all mock prompts
44
+ */
45
+ export function clearMockPrompts() {
46
+ vi.clearAllMocks();
47
+ }
48
+ //# sourceMappingURL=mock-prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-prompts.js","sourceRoot":"","sources":["../../../../tests/e2e/utils/mock-prompts.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAQ3B;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAA8B;IAC7D,oCAAoC;IACpC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC;QAClC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;YACpE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;YACtC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC;gBACrE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACxC,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YACD,OAAO,YAAY,CAAA;QACrB,CAAC,CAAC;QACF,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;YACtE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;YACtC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBACvE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACxC,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YACD,OAAO,KAAK,CAAA;QACd,CAAC,CAAC;QACF,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAyB,EAAE,EAAE;YACrE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAA;YACtC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBACxC,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;YACD,OAAO,aAAa,CAAA;QACtB,CAAC,CAAC;KACH,CAAC,CAAC,CAAA;AACL,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,EAAE,CAAC,aAAa,EAAE,CAAA;AACpB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skillsmith/cli",
3
- "version": "0.2.7",
3
+ "version": "0.3.0",
4
4
  "description": "CLI tools for Skillsmith skill discovery",
5
5
  "type": "module",
6
6
  "bin": {