@skillmark/cli 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/cli-entry-point.d.ts +3 -0
  2. package/dist/cli-entry-point.d.ts.map +1 -0
  3. package/dist/cli-entry-point.js +207 -0
  4. package/dist/cli-entry-point.js.map +1 -0
  5. package/dist/commands/auth-setup-and-token-storage-command.d.ts +21 -0
  6. package/dist/commands/auth-setup-and-token-storage-command.d.ts.map +1 -0
  7. package/dist/commands/auth-setup-and-token-storage-command.js +166 -0
  8. package/dist/commands/auth-setup-and-token-storage-command.js.map +1 -0
  9. package/dist/commands/publish-results-command.d.ts +21 -0
  10. package/dist/commands/publish-results-command.d.ts.map +1 -0
  11. package/dist/commands/publish-results-command.js +256 -0
  12. package/dist/commands/publish-results-command.js.map +1 -0
  13. package/dist/commands/run-benchmark-command.d.ts +6 -0
  14. package/dist/commands/run-benchmark-command.d.ts.map +1 -0
  15. package/dist/commands/run-benchmark-command.js +331 -0
  16. package/dist/commands/run-benchmark-command.js.map +1 -0
  17. package/dist/commands/view-leaderboard-command.d.ts +8 -0
  18. package/dist/commands/view-leaderboard-command.d.ts.map +1 -0
  19. package/dist/commands/view-leaderboard-command.js +169 -0
  20. package/dist/commands/view-leaderboard-command.js.map +1 -0
  21. package/dist/config/api-key-config-reader.d.ts +14 -0
  22. package/dist/config/api-key-config-reader.d.ts.map +1 -0
  23. package/dist/config/api-key-config-reader.js +107 -0
  24. package/dist/config/api-key-config-reader.js.map +1 -0
  25. package/dist/config/api-key-config-reader.test.d.ts +2 -0
  26. package/dist/config/api-key-config-reader.test.d.ts.map +1 -0
  27. package/dist/config/api-key-config-reader.test.js +21 -0
  28. package/dist/config/api-key-config-reader.test.js.map +1 -0
  29. package/dist/engine/claude-cli-executor.d.ts +33 -0
  30. package/dist/engine/claude-cli-executor.d.ts.map +1 -0
  31. package/dist/engine/claude-cli-executor.js +251 -0
  32. package/dist/engine/claude-cli-executor.js.map +1 -0
  33. package/dist/engine/concept-accuracy-scorer.d.ts +24 -0
  34. package/dist/engine/concept-accuracy-scorer.d.ts.map +1 -0
  35. package/dist/engine/concept-accuracy-scorer.js +186 -0
  36. package/dist/engine/concept-accuracy-scorer.js.map +1 -0
  37. package/dist/engine/concept-accuracy-scorer.test.d.ts +2 -0
  38. package/dist/engine/concept-accuracy-scorer.test.d.ts.map +1 -0
  39. package/dist/engine/concept-accuracy-scorer.test.js +230 -0
  40. package/dist/engine/concept-accuracy-scorer.test.js.map +1 -0
  41. package/dist/engine/enhanced-test-prompt-builder.d.ts +30 -0
  42. package/dist/engine/enhanced-test-prompt-builder.d.ts.map +1 -0
  43. package/dist/engine/enhanced-test-prompt-builder.js +134 -0
  44. package/dist/engine/enhanced-test-prompt-builder.js.map +1 -0
  45. package/dist/engine/markdown-test-definition-parser.d.ts +18 -0
  46. package/dist/engine/markdown-test-definition-parser.d.ts.map +1 -0
  47. package/dist/engine/markdown-test-definition-parser.js +525 -0
  48. package/dist/engine/markdown-test-definition-parser.js.map +1 -0
  49. package/dist/engine/markdown-test-definition-parser.test.d.ts +2 -0
  50. package/dist/engine/markdown-test-definition-parser.test.d.ts.map +1 -0
  51. package/dist/engine/markdown-test-definition-parser.test.js +265 -0
  52. package/dist/engine/markdown-test-definition-parser.test.js.map +1 -0
  53. package/dist/engine/retry-with-degrade-utils.d.ts +58 -0
  54. package/dist/engine/retry-with-degrade-utils.d.ts.map +1 -0
  55. package/dist/engine/retry-with-degrade-utils.js +86 -0
  56. package/dist/engine/retry-with-degrade-utils.js.map +1 -0
  57. package/dist/engine/skill-content-collector.d.ts +53 -0
  58. package/dist/engine/skill-content-collector.d.ts.map +1 -0
  59. package/dist/engine/skill-content-collector.js +157 -0
  60. package/dist/engine/skill-content-collector.js.map +1 -0
  61. package/dist/engine/skill-creator-invoker.d.ts +36 -0
  62. package/dist/engine/skill-creator-invoker.d.ts.map +1 -0
  63. package/dist/engine/skill-creator-invoker.js +222 -0
  64. package/dist/engine/skill-creator-invoker.js.map +1 -0
  65. package/dist/engine/transcript-jsonl-parser.d.ts +28 -0
  66. package/dist/engine/transcript-jsonl-parser.d.ts.map +1 -0
  67. package/dist/engine/transcript-jsonl-parser.js +175 -0
  68. package/dist/engine/transcript-jsonl-parser.js.map +1 -0
  69. package/dist/sources/git-repository-skill-source-handler.d.ts +18 -0
  70. package/dist/sources/git-repository-skill-source-handler.d.ts.map +1 -0
  71. package/dist/sources/git-repository-skill-source-handler.js +119 -0
  72. package/dist/sources/git-repository-skill-source-handler.js.map +1 -0
  73. package/dist/sources/local-skill-source-handler.d.ts +21 -0
  74. package/dist/sources/local-skill-source-handler.d.ts.map +1 -0
  75. package/dist/sources/local-skill-source-handler.js +138 -0
  76. package/dist/sources/local-skill-source-handler.js.map +1 -0
  77. package/dist/sources/local-skill-source-handler.test.d.ts +2 -0
  78. package/dist/sources/local-skill-source-handler.test.d.ts.map +1 -0
  79. package/dist/sources/local-skill-source-handler.test.js +55 -0
  80. package/dist/sources/local-skill-source-handler.test.js.map +1 -0
  81. package/dist/sources/skillsh-registry-source-handler.d.ts +18 -0
  82. package/dist/sources/skillsh-registry-source-handler.d.ts.map +1 -0
  83. package/dist/sources/skillsh-registry-source-handler.js +130 -0
  84. package/dist/sources/skillsh-registry-source-handler.js.map +1 -0
  85. package/dist/sources/unified-skill-source-resolver.d.ts +20 -0
  86. package/dist/sources/unified-skill-source-resolver.d.ts.map +1 -0
  87. package/dist/sources/unified-skill-source-resolver.js +64 -0
  88. package/dist/sources/unified-skill-source-resolver.js.map +1 -0
  89. package/dist/sources/unified-skill-source-resolver.test.d.ts +2 -0
  90. package/dist/sources/unified-skill-source-resolver.test.d.ts.map +1 -0
  91. package/dist/sources/unified-skill-source-resolver.test.js +84 -0
  92. package/dist/sources/unified-skill-source-resolver.test.js.map +1 -0
  93. package/dist/types/benchmark-types.d.ts +142 -0
  94. package/dist/types/benchmark-types.d.ts.map +1 -0
  95. package/dist/types/benchmark-types.js +5 -0
  96. package/dist/types/benchmark-types.js.map +1 -0
  97. package/dist/types/index.d.ts +5 -0
  98. package/dist/types/index.d.ts.map +1 -0
  99. package/dist/types/index.js +5 -0
  100. package/dist/types/index.js.map +1 -0
  101. package/package.json +38 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli-entry-point.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-entry-point.d.ts","sourceRoot":"","sources":["../src/cli-entry-point.ts"],"names":[],"mappings":""}
@@ -0,0 +1,207 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Skillmark CLI - Agent skill benchmarking tool
4
+ *
5
+ * Commands:
6
+ * run <skill> - Run benchmark against a skill
7
+ * publish <result> - Upload results to leaderboard
8
+ * leaderboard - View skill rankings
9
+ */
10
+ import { Command } from 'commander';
11
+ import chalk from 'chalk';
12
+ import { runBenchmark } from './commands/run-benchmark-command.js';
13
+ import { publishResults, publishResultsWithAutoKey } from './commands/publish-results-command.js';
14
+ import { viewLeaderboard } from './commands/view-leaderboard-command.js';
15
+ import { readApiKeyConfig, getConfigSourceDescription } from './config/api-key-config-reader.js';
16
+ import { runAuth, showAuthStatus } from './commands/auth-setup-and-token-storage-command.js';
17
+ const VERSION = '0.1.0';
18
+ const program = new Command();
19
+ program
20
+ .name('skillmark')
21
+ .description('Agent skill benchmarking platform with CLI and public leaderboards')
22
+ .version(VERSION);
23
+ // Run benchmark command
24
+ program
25
+ .command('run')
26
+ .description('Run benchmark against a skill')
27
+ .argument('<skill-source>', 'Skill source (local path, git URL, or skill.sh reference)')
28
+ .option('-t, --tests <path>', 'Path to test suite directory (default: <skill>/tests)')
29
+ .option('-m, --model <model>', 'Model to use (haiku|sonnet|opus)', 'opus')
30
+ .option('-r, --runs <n>', 'Number of iterations', '3')
31
+ .option('-o, --output <dir>', 'Output directory', './skillmark-results')
32
+ .option('-p, --publish', 'Auto-publish results after benchmark completes')
33
+ .option('-k, --api-key <key>', 'API key for publishing (or use config/env)')
34
+ .option('-e, --endpoint <url>', 'API endpoint URL for publishing')
35
+ .option('-v, --verbose', 'Show detailed progress for each test step')
36
+ .action(async (skillSource, options) => {
37
+ try {
38
+ // Validate model
39
+ const model = options.model.toLowerCase();
40
+ if (!['haiku', 'sonnet', 'opus'].includes(model)) {
41
+ console.error(chalk.red(`Invalid model: ${options.model}`));
42
+ console.error('Valid models: haiku, sonnet, opus');
43
+ process.exit(1);
44
+ }
45
+ // Parse runs
46
+ const runs = parseInt(options.runs, 10);
47
+ if (isNaN(runs) || runs < 1) {
48
+ console.error(chalk.red(`Invalid runs value: ${options.runs}`));
49
+ process.exit(1);
50
+ }
51
+ // Run benchmark
52
+ const result = await runBenchmark(skillSource, {
53
+ tests: options.tests,
54
+ model: model,
55
+ runs,
56
+ output: options.output,
57
+ verbose: options.verbose,
58
+ });
59
+ // Auto-publish if requested
60
+ if (options.publish) {
61
+ console.log(chalk.blue('\n📤 Publishing results...\n'));
62
+ // Get API key from option or config
63
+ let apiKey = options.apiKey;
64
+ let keySource = 'command line';
65
+ if (!apiKey) {
66
+ const config = await readApiKeyConfig();
67
+ if (config) {
68
+ apiKey = config.apiKey;
69
+ keySource = getConfigSourceDescription(config.source);
70
+ }
71
+ }
72
+ if (!apiKey) {
73
+ console.error(chalk.red('No API key found.'));
74
+ console.error(chalk.gray('Provide via --api-key, SKILLMARK_API_KEY env, or ~/.skillmarkrc'));
75
+ console.error(chalk.gray('\nGet your API key at: https://skillmark.sh/login'));
76
+ process.exit(1);
77
+ }
78
+ console.log(chalk.gray(`Using API key from ${keySource}`));
79
+ await publishResultsWithAutoKey(result, {
80
+ apiKey,
81
+ endpoint: options.endpoint,
82
+ testsPath: options.tests,
83
+ });
84
+ }
85
+ }
86
+ catch (error) {
87
+ console.error(chalk.red(`\nError: ${error instanceof Error ? error.message : error}`));
88
+ process.exit(1);
89
+ }
90
+ });
91
+ // Publish results command
92
+ program
93
+ .command('publish')
94
+ .description('Upload benchmark results to leaderboard')
95
+ .argument('<result-file>', 'Path to result.json file')
96
+ .option('-k, --api-key <key>', 'Your skillmark API key (or use config/env)')
97
+ .option('-e, --endpoint <url>', 'API endpoint URL')
98
+ .action(async (resultFile, options) => {
99
+ try {
100
+ // Get API key from option or config
101
+ let apiKey = options.apiKey;
102
+ if (!apiKey) {
103
+ const config = await readApiKeyConfig();
104
+ if (config) {
105
+ apiKey = config.apiKey;
106
+ console.log(chalk.gray(`Using API key from ${getConfigSourceDescription(config.source)}`));
107
+ }
108
+ }
109
+ if (!apiKey) {
110
+ console.error(chalk.red('No API key found.'));
111
+ console.error(chalk.gray('Provide via --api-key, SKILLMARK_API_KEY env, or ~/.skillmarkrc'));
112
+ console.error(chalk.gray('\nGet your API key at: https://skillmark.sh/login'));
113
+ process.exit(1);
114
+ }
115
+ await publishResults(resultFile, {
116
+ apiKey,
117
+ endpoint: options.endpoint,
118
+ });
119
+ }
120
+ catch (error) {
121
+ console.error(chalk.red(`\nError: ${error instanceof Error ? error.message : error}`));
122
+ process.exit(1);
123
+ }
124
+ });
125
+ // Auth command - setup Claude CLI OAuth token (required for running benchmarks)
126
+ program
127
+ .command('auth')
128
+ .description('Setup Claude CLI authentication (required for running benchmarks)')
129
+ .option('-s, --status', 'Check authentication status')
130
+ .action(async (options) => {
131
+ try {
132
+ if (options.status) {
133
+ await showAuthStatus();
134
+ }
135
+ else {
136
+ await runAuth();
137
+ }
138
+ }
139
+ catch (error) {
140
+ console.error(chalk.red(`Error: ${error instanceof Error ? error.message : error}`));
141
+ process.exit(1);
142
+ }
143
+ });
144
+ // Login command - save Skillmark API key (for publishing results)
145
+ program
146
+ .command('login')
147
+ .description('Save Skillmark API key to ~/.skillmarkrc (for publishing)')
148
+ .argument('<api-key>', 'Your Skillmark API key (get it at https://skillmark.sh/login)')
149
+ .action(async (apiKey) => {
150
+ const { writeFile } = await import('node:fs/promises');
151
+ const { join } = await import('node:path');
152
+ const { homedir } = await import('node:os');
153
+ try {
154
+ const rcPath = join(homedir(), '.skillmarkrc');
155
+ await writeFile(rcPath, `api_key=${apiKey}\n`, 'utf-8');
156
+ console.log(chalk.green('✓ API key saved to ~/.skillmarkrc'));
157
+ console.log(chalk.gray('\nYou can now use: skillmark run <skill> --publish'));
158
+ }
159
+ catch (error) {
160
+ console.error(chalk.red(`Error saving API key: ${error instanceof Error ? error.message : error}`));
161
+ process.exit(1);
162
+ }
163
+ });
164
+ // Leaderboard command
165
+ program
166
+ .command('leaderboard')
167
+ .description('View skill rankings')
168
+ .argument('[skill-name]', 'Optional skill name to view details')
169
+ .option('-l, --limit <n>', 'Number of entries to show', '20')
170
+ .option('-e, --endpoint <url>', 'API endpoint URL')
171
+ .action(async (skillName, options) => {
172
+ try {
173
+ await viewLeaderboard(skillName, {
174
+ endpoint: options.endpoint,
175
+ limit: parseInt(options.limit, 10),
176
+ });
177
+ }
178
+ catch (error) {
179
+ console.error(chalk.red(`\nError: ${error instanceof Error ? error.message : error}`));
180
+ process.exit(1);
181
+ }
182
+ });
183
+ // ASCII logo
184
+ const LOGO = `
185
+ ${chalk.gray('███████╗██╗ ██╗██╗██╗ ██╗ ███╗ ███╗ █████╗ ██████╗ ██╗ ██╗')}
186
+ ${chalk.gray('██╔════╝██║ ██╔╝██║██║ ██║ ████╗ ████║██╔══██╗██╔══██╗██║ ██╔╝')}
187
+ ${chalk.white('███████╗█████╔╝ ██║██║ ██║ ██╔████╔██║███████║██████╔╝█████╔╝')}
188
+ ${chalk.gray('╚════██║██╔═██╗ ██║██║ ██║ ██║╚██╔╝██║██╔══██║██╔══██╗██╔═██╗')}
189
+ ${chalk.gray('███████║██║ ██╗██║███████╗███████╗██║ ╚═╝ ██║██║ ██║██║ ██║██║ ██╗')}
190
+ ${chalk.gray('╚══════╝╚═╝ ╚═╝╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝')}
191
+ `;
192
+ // Show logo and help if no command
193
+ if (!process.argv.slice(2).length) {
194
+ console.log(LOGO);
195
+ console.log(chalk.gray(' Agent Skill Benchmarking Platform\n'));
196
+ console.log(' ' + chalk.gray('Examples:'));
197
+ console.log(' ' + chalk.cyan('skillmark run') + ' ~/.claude/skills/my-skill');
198
+ console.log(' ' + chalk.cyan('skillmark run') + ' ./skill --model opus --publish');
199
+ console.log(' ' + chalk.cyan('skillmark publish') + ' ./result.json');
200
+ console.log(' ' + chalk.cyan('skillmark leaderboard'));
201
+ console.log('');
202
+ program.outputHelp();
203
+ process.exit(0);
204
+ }
205
+ // Parse and execute
206
+ program.parse();
207
+ //# sourceMappingURL=cli-entry-point.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-entry-point.js","sourceRoot":"","sources":["../src/cli-entry-point.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ interface SkillmarkConfig {
2
+ claudeOAuthToken?: string;
3
+ }
4
+ /**
5
+ * Load skillmark config
6
+ */
7
+ export declare function loadConfig(): Promise<SkillmarkConfig>;
8
+ /**
9
+ * Get stored OAuth token
10
+ */
11
+ export declare function getStoredToken(): Promise<string | undefined>;
12
+ /**
13
+ * Run the auth setup flow
14
+ */
15
+ export declare function runAuth(): Promise<void>;
16
+ /**
17
+ * Show auth status
18
+ */
19
+ export declare function showAuthStatus(): Promise<void>;
20
+ export {};
21
+ //# sourceMappingURL=auth-setup-and-token-storage-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-setup-and-token-storage-command.d.ts","sourceRoot":"","sources":["../../src/commands/auth-setup-and-token-storage-command.ts"],"names":[],"mappings":"AAaA,UAAU,eAAe;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,eAAe,CAAC,CAO3D;AAUD;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAQlE;AAED;;GAEG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAmC7C;AAgFD;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAkBpD"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * Auth command - setup Claude CLI authentication for skillmark
3
+ */
4
+ import { spawn } from 'node:child_process';
5
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
6
+ import { homedir } from 'node:os';
7
+ import { join } from 'node:path';
8
+ import chalk from 'chalk';
9
+ /** Config file location */
10
+ const CONFIG_DIR = join(homedir(), '.skillmark');
11
+ const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
12
+ /**
13
+ * Load skillmark config
14
+ */
15
+ export async function loadConfig() {
16
+ try {
17
+ const content = await readFile(CONFIG_FILE, 'utf-8');
18
+ return JSON.parse(content);
19
+ }
20
+ catch {
21
+ return {};
22
+ }
23
+ }
24
+ /**
25
+ * Save skillmark config
26
+ */
27
+ async function saveConfig(config) {
28
+ await mkdir(CONFIG_DIR, { recursive: true });
29
+ await writeFile(CONFIG_FILE, JSON.stringify(config, null, 2));
30
+ }
31
+ /**
32
+ * Get stored OAuth token
33
+ */
34
+ export async function getStoredToken() {
35
+ // Check env var first
36
+ if (process.env.CLAUDE_CODE_OAUTH_TOKEN) {
37
+ return process.env.CLAUDE_CODE_OAUTH_TOKEN;
38
+ }
39
+ // Check config file
40
+ const config = await loadConfig();
41
+ return config.claudeOAuthToken;
42
+ }
43
+ /**
44
+ * Run the auth setup flow
45
+ */
46
+ export async function runAuth() {
47
+ console.log(chalk.blue('Setting up Claude CLI authentication for skillmark...\n'));
48
+ // Check if already authenticated
49
+ const existingToken = await getStoredToken();
50
+ if (existingToken) {
51
+ const isValid = await testToken(existingToken);
52
+ if (isValid) {
53
+ console.log(chalk.green('✓ Already authenticated'));
54
+ console.log(chalk.gray(` Token stored in: ${CONFIG_FILE}`));
55
+ return;
56
+ }
57
+ console.log(chalk.yellow('Existing token invalid, re-authenticating...\n'));
58
+ }
59
+ console.log(chalk.gray('This will open your browser for authentication.\n'));
60
+ // Run claude setup-token and capture output
61
+ const token = await runSetupToken();
62
+ if (!token) {
63
+ console.log(chalk.red('\n✗ Authentication failed'));
64
+ console.log(chalk.gray(' You can manually run: claude setup-token'));
65
+ console.log(chalk.gray(' Then set: export CLAUDE_CODE_OAUTH_TOKEN=<token>'));
66
+ process.exit(1);
67
+ }
68
+ // Save token to config
69
+ const config = await loadConfig();
70
+ config.claudeOAuthToken = token;
71
+ await saveConfig(config);
72
+ console.log(chalk.green('\n✓ Authentication successful'));
73
+ console.log(chalk.gray(` Token saved to: ${CONFIG_FILE}`));
74
+ console.log(chalk.gray(' You can now run: skillmark run <skill>'));
75
+ }
76
+ /**
77
+ * Run claude setup-token and capture the generated token
78
+ */
79
+ async function runSetupToken() {
80
+ return new Promise((resolve) => {
81
+ // Run setup-token with inherited stdio so user can interact
82
+ const proc = spawn('claude', ['setup-token'], {
83
+ stdio: ['inherit', 'pipe', 'inherit'],
84
+ });
85
+ let stdout = '';
86
+ proc.stdout?.on('data', (data) => {
87
+ const text = data.toString();
88
+ stdout += text;
89
+ // Print to console so user sees the output
90
+ process.stdout.write(text);
91
+ });
92
+ proc.on('close', (code) => {
93
+ if (code !== 0) {
94
+ resolve(null);
95
+ return;
96
+ }
97
+ // Extract token from output
98
+ // Token may span multiple lines due to terminal wrapping
99
+ // Remove all whitespace/newlines from output before matching
100
+ const cleanedOutput = stdout.replace(/[\s\n\r]+/g, ' ');
101
+ const tokenMatch = cleanedOutput.match(/sk-ant-oat01-[A-Za-z0-9_-]+/);
102
+ if (tokenMatch) {
103
+ resolve(tokenMatch[0]);
104
+ }
105
+ else {
106
+ resolve(null);
107
+ }
108
+ });
109
+ proc.on('error', () => {
110
+ resolve(null);
111
+ });
112
+ });
113
+ }
114
+ /**
115
+ * Test if a token is valid
116
+ */
117
+ async function testToken(token) {
118
+ return new Promise((resolve) => {
119
+ const proc = spawn('claude', ['-p', 'Say OK', '--output-format', 'json', '--model', 'haiku'], {
120
+ env: { ...process.env, CLAUDE_CODE_OAUTH_TOKEN: token },
121
+ stdio: ['ignore', 'pipe', 'pipe'],
122
+ });
123
+ let stdout = '';
124
+ proc.stdout.on('data', (data) => { stdout += data.toString(); });
125
+ const timeout = setTimeout(() => {
126
+ proc.kill();
127
+ resolve(false);
128
+ }, 30000);
129
+ proc.on('close', () => {
130
+ clearTimeout(timeout);
131
+ try {
132
+ const result = JSON.parse(stdout);
133
+ resolve(!result.is_error);
134
+ }
135
+ catch {
136
+ resolve(false);
137
+ }
138
+ });
139
+ proc.on('error', () => {
140
+ clearTimeout(timeout);
141
+ resolve(false);
142
+ });
143
+ });
144
+ }
145
+ /**
146
+ * Show auth status
147
+ */
148
+ export async function showAuthStatus() {
149
+ const token = await getStoredToken();
150
+ if (!token) {
151
+ console.log(chalk.yellow('Not authenticated'));
152
+ console.log(chalk.gray(' Run: skillmark auth'));
153
+ return;
154
+ }
155
+ const isValid = await testToken(token);
156
+ if (isValid) {
157
+ console.log(chalk.green('✓ Authenticated'));
158
+ const source = process.env.CLAUDE_CODE_OAUTH_TOKEN ? 'env var' : CONFIG_FILE;
159
+ console.log(chalk.gray(` Token source: ${source}`));
160
+ }
161
+ else {
162
+ console.log(chalk.red('✗ Token invalid or expired'));
163
+ console.log(chalk.gray(' Run: skillmark auth'));
164
+ }
165
+ }
166
+ //# sourceMappingURL=auth-setup-and-token-storage-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-setup-and-token-storage-command.js","sourceRoot":"","sources":["../../src/commands/auth-setup-and-token-storage-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { BenchmarkResult, PublishOptions } from '../types/index.js';
2
+ /** Extended publish options for auto-publish */
3
+ export interface AutoPublishOptions {
4
+ apiKey: string;
5
+ endpoint?: string;
6
+ testsPath?: string;
7
+ }
8
+ /**
9
+ * Execute the publish command
10
+ */
11
+ export declare function publishResults(resultPath: string, options: PublishOptions): Promise<void>;
12
+ /**
13
+ * Publish results with auto-key (from run command with --publish flag)
14
+ * Includes test files and skill.sh link detection
15
+ */
16
+ export declare function publishResultsWithAutoKey(result: BenchmarkResult, options: AutoPublishOptions): Promise<void>;
17
+ /**
18
+ * Verify API key is valid
19
+ */
20
+ export declare function verifyApiKey(apiKey: string, endpoint?: string): Promise<boolean>;
21
+ //# sourceMappingURL=publish-results-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-results-command.d.ts","sourceRoot":"","sources":["../../src/commands/publish-results-command.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAWzE,gDAAgD;AAChD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAgFD;;;GAGG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqDf;AAwGD;;GAEG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAyB,GAClC,OAAO,CAAC,OAAO,CAAC,CAYlB"}