openskills-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.
- package/LICENSE +21 -0
- package/README.md +99 -0
- package/dist/bin/cli.d.ts +10 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +133 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/src/modes/install.d.ts +32 -0
- package/dist/src/modes/install.d.ts.map +1 -0
- package/dist/src/modes/install.js +215 -0
- package/dist/src/modes/install.js.map +1 -0
- package/dist/src/modes/mcp-proxy.d.ts +16 -0
- package/dist/src/modes/mcp-proxy.d.ts.map +1 -0
- package/dist/src/modes/mcp-proxy.js +117 -0
- package/dist/src/modes/mcp-proxy.js.map +1 -0
- package/dist/src/services/downloader.d.ts +32 -0
- package/dist/src/services/downloader.d.ts.map +1 -0
- package/dist/src/services/downloader.js +125 -0
- package/dist/src/services/downloader.js.map +1 -0
- package/dist/src/services/extractor.d.ts +38 -0
- package/dist/src/services/extractor.d.ts.map +1 -0
- package/dist/src/services/extractor.js +82 -0
- package/dist/src/services/extractor.js.map +1 -0
- package/dist/src/services/symlink.d.ts +64 -0
- package/dist/src/services/symlink.d.ts.map +1 -0
- package/dist/src/services/symlink.js +153 -0
- package/dist/src/services/symlink.js.map +1 -0
- package/dist/src/types/index.d.ts +75 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +5 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/utils/agent-dirs.d.ts +49 -0
- package/dist/src/utils/agent-dirs.d.ts.map +1 -0
- package/dist/src/utils/agent-dirs.js +116 -0
- package/dist/src/utils/agent-dirs.js.map +1 -0
- package/dist/src/utils/constants.d.ts +16 -0
- package/dist/src/utils/constants.d.ts.map +1 -0
- package/dist/src/utils/constants.js +21 -0
- package/dist/src/utils/constants.js.map +1 -0
- package/dist/src/utils/errors.d.ts +72 -0
- package/dist/src/utils/errors.d.ts.map +1 -0
- package/dist/src/utils/errors.js +108 -0
- package/dist/src/utils/errors.js.map +1 -0
- package/dist/src/utils/logger.d.ts +41 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +85 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/mode-detector.d.ts +74 -0
- package/dist/src/utils/mode-detector.d.ts.map +1 -0
- package/dist/src/utils/mode-detector.js +156 -0
- package/dist/src/utils/mode-detector.js.map +1 -0
- package/dist/src/utils/prompts.d.ts +22 -0
- package/dist/src/utils/prompts.d.ts.map +1 -0
- package/dist/src/utils/prompts.js +69 -0
- package/dist/src/utils/prompts.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI mode detection utility.
|
|
3
|
+
*
|
|
4
|
+
* Determines which mode the CLI should operate in based on command-line arguments.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Detect CLI mode from command-line arguments.
|
|
8
|
+
*
|
|
9
|
+
* Mode priority:
|
|
10
|
+
* 1. Help (-h, --help)
|
|
11
|
+
* 2. Version (-v, --version)
|
|
12
|
+
* 3. MCP proxy (--api-key)
|
|
13
|
+
* 4. Installation (positional skill name or -s/--skill flag)
|
|
14
|
+
* 5. Help (default if no valid flags)
|
|
15
|
+
*
|
|
16
|
+
* @param args - Command-line arguments (process.argv.slice(2))
|
|
17
|
+
* @returns Detected CLI mode
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* detectMode(['pdf-processing', '-a', 'claude-code']) // 'install'
|
|
22
|
+
* detectMode(['-s', 'pdf', '-a', 'claude-code']) // 'install'
|
|
23
|
+
* detectMode(['--api-key', 'osk_abc123']) // 'mcp'
|
|
24
|
+
* detectMode(['-h']) // 'help'
|
|
25
|
+
* detectMode(['-v']) // 'version'
|
|
26
|
+
* detectMode([]) // 'help'
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export function detectMode(args) {
|
|
30
|
+
// Priority 1: Help
|
|
31
|
+
if (args.includes('-h') || args.includes('--help')) {
|
|
32
|
+
return 'help';
|
|
33
|
+
}
|
|
34
|
+
// Priority 2: Version
|
|
35
|
+
if (args.includes('-v') || args.includes('--version')) {
|
|
36
|
+
return 'version';
|
|
37
|
+
}
|
|
38
|
+
// Priority 3: MCP proxy mode
|
|
39
|
+
if (args.includes('--api-key')) {
|
|
40
|
+
return 'mcp';
|
|
41
|
+
}
|
|
42
|
+
// Priority 4: Installation mode (positional skill name or -s flag)
|
|
43
|
+
if (args.includes('-s') || args.includes('--skill') || hasPositionalSkill(args)) {
|
|
44
|
+
return 'install';
|
|
45
|
+
}
|
|
46
|
+
// Default: Show help
|
|
47
|
+
return 'help';
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Check if args contain a positional skill name.
|
|
51
|
+
* A positional skill is the first non-flag argument.
|
|
52
|
+
*
|
|
53
|
+
* @param args - Command-line arguments
|
|
54
|
+
* @returns True if positional skill exists
|
|
55
|
+
*/
|
|
56
|
+
function hasPositionalSkill(args) {
|
|
57
|
+
if (args.length === 0)
|
|
58
|
+
return false;
|
|
59
|
+
// First arg that doesn't start with - and isn't after a flag that takes a value
|
|
60
|
+
for (let i = 0; i < args.length; i++) {
|
|
61
|
+
const arg = args[i];
|
|
62
|
+
// Skip flags
|
|
63
|
+
if (arg.startsWith('-')) {
|
|
64
|
+
// Skip next arg if this flag takes a value
|
|
65
|
+
if (arg === '-a' || arg === '--agent' || arg === '--api-key') {
|
|
66
|
+
i++; // Skip the value
|
|
67
|
+
}
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
// Found positional argument
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Parse installation options from command-line arguments.
|
|
77
|
+
*
|
|
78
|
+
* Supports both positional and flag-based skill names:
|
|
79
|
+
* - Positional: npx openskills pdf-processing -a claude-code
|
|
80
|
+
* - Flag-based: npx openskills -s pdf-processing -a claude-code
|
|
81
|
+
*
|
|
82
|
+
* @param args - Command-line arguments
|
|
83
|
+
* @returns Parsed installation options or partial options for interactive mode
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* parseInstallOptions(['pdf-processing', '-a', 'claude-code'])
|
|
88
|
+
* // { skill: 'pdf-processing', agent: 'claude-code', global: false, force: false, multiAgent: false }
|
|
89
|
+
*
|
|
90
|
+
* parseInstallOptions(['pdf-processing', '-y'])
|
|
91
|
+
* // { skill: 'pdf-processing', agent: null, global: true, force: false, multiAgent: true }
|
|
92
|
+
*
|
|
93
|
+
* parseInstallOptions(['pdf-processing'])
|
|
94
|
+
* // { skill: 'pdf-processing', agent: null, global: false, force: false, multiAgent: false }
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export function parseInstallOptions(args) {
|
|
98
|
+
// Find skill name (positional or flag-based)
|
|
99
|
+
let skill = null;
|
|
100
|
+
// Check for -s/--skill flag first
|
|
101
|
+
const skillIdx = args.findIndex(arg => arg === '-s' || arg === '--skill');
|
|
102
|
+
if (skillIdx !== -1 && args[skillIdx + 1]) {
|
|
103
|
+
skill = args[skillIdx + 1];
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// Look for positional skill name (first non-flag argument)
|
|
107
|
+
for (let i = 0; i < args.length; i++) {
|
|
108
|
+
const arg = args[i];
|
|
109
|
+
// Skip flags
|
|
110
|
+
if (arg.startsWith('-')) {
|
|
111
|
+
// Skip next arg if this flag takes a value
|
|
112
|
+
if (arg === '-a' || arg === '--agent' || arg === '-s' || arg === '--skill') {
|
|
113
|
+
i++; // Skip the value
|
|
114
|
+
}
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
// Found positional skill name
|
|
118
|
+
skill = arg;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// Find -a/--agent flag
|
|
123
|
+
const agentIdx = args.findIndex(arg => arg === '-a' || arg === '--agent');
|
|
124
|
+
const agent = agentIdx !== -1 && args[agentIdx + 1] ? args[agentIdx + 1] : null;
|
|
125
|
+
// Check for -g/--global or -p/--project flag
|
|
126
|
+
const hasGlobal = args.includes('-g') || args.includes('--global');
|
|
127
|
+
const hasProject = args.includes('-p') || args.includes('--project');
|
|
128
|
+
const hasMultiAgent = args.includes('-y');
|
|
129
|
+
// Track if scope was explicitly set by user
|
|
130
|
+
const scopeExplicit = hasGlobal || hasProject || hasMultiAgent;
|
|
131
|
+
// If both flags provided, -g takes precedence
|
|
132
|
+
// If -y flag provided without -p, default to global
|
|
133
|
+
const global = hasGlobal || (hasMultiAgent && !hasProject);
|
|
134
|
+
// Check for --force flag
|
|
135
|
+
const force = args.includes('--force');
|
|
136
|
+
// Check for -y flag (multi-agent installation)
|
|
137
|
+
const multiAgent = hasMultiAgent;
|
|
138
|
+
return { skill, agent, global, force, multiAgent, scopeExplicit };
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Parse API key from command-line arguments.
|
|
142
|
+
*
|
|
143
|
+
* @param args - Command-line arguments
|
|
144
|
+
* @returns API key or null if not found
|
|
145
|
+
*
|
|
146
|
+
* @example
|
|
147
|
+
* ```typescript
|
|
148
|
+
* parseApiKey(['--api-key', 'osk_abc123']) // 'osk_abc123'
|
|
149
|
+
* parseApiKey(['-s', 'pdf']) // null
|
|
150
|
+
* ```
|
|
151
|
+
*/
|
|
152
|
+
export function parseApiKey(args) {
|
|
153
|
+
const keyIdx = args.indexOf('--api-key');
|
|
154
|
+
return keyIdx !== -1 && args[keyIdx + 1] ? args[keyIdx + 1] : null;
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=mode-detector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode-detector.js","sourceRoot":"","sources":["../../../src/utils/mode-detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive CLI prompts for missing installation options.
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Prompt user to select an agent.
|
|
6
|
+
*
|
|
7
|
+
* @returns Selected agent name
|
|
8
|
+
*/
|
|
9
|
+
export declare function promptAgent(): Promise<string>;
|
|
10
|
+
/**
|
|
11
|
+
* Prompt user to select installation scope (global vs project).
|
|
12
|
+
*
|
|
13
|
+
* @returns True if global, false if project
|
|
14
|
+
*/
|
|
15
|
+
export declare function promptScope(): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Show multi-agent installation info.
|
|
18
|
+
*
|
|
19
|
+
* @param skillName - Skill being installed
|
|
20
|
+
*/
|
|
21
|
+
export declare function showMultiAgentInfo(skillName: string): void;
|
|
22
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,CAkBnD;AAED;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CA0BpD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAK1D"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interactive CLI prompts for missing installation options.
|
|
3
|
+
*/
|
|
4
|
+
import prompts from 'prompts';
|
|
5
|
+
import { SUPPORTED_AGENTS, DEFAULT_AGENTS } from './constants.js';
|
|
6
|
+
/**
|
|
7
|
+
* Prompt user to select an agent.
|
|
8
|
+
*
|
|
9
|
+
* @returns Selected agent name
|
|
10
|
+
*/
|
|
11
|
+
export async function promptAgent() {
|
|
12
|
+
const response = await prompts({
|
|
13
|
+
type: 'select',
|
|
14
|
+
name: 'agent',
|
|
15
|
+
message: 'Select an agent:',
|
|
16
|
+
choices: SUPPORTED_AGENTS.map(agent => ({
|
|
17
|
+
title: agent,
|
|
18
|
+
value: agent,
|
|
19
|
+
})),
|
|
20
|
+
initial: 0,
|
|
21
|
+
});
|
|
22
|
+
if (!response.agent) {
|
|
23
|
+
console.error('\n✗ Installation cancelled');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
return response.agent;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Prompt user to select installation scope (global vs project).
|
|
30
|
+
*
|
|
31
|
+
* @returns True if global, false if project
|
|
32
|
+
*/
|
|
33
|
+
export async function promptScope() {
|
|
34
|
+
const response = await prompts({
|
|
35
|
+
type: 'select',
|
|
36
|
+
name: 'scope',
|
|
37
|
+
message: 'Installation scope:',
|
|
38
|
+
choices: [
|
|
39
|
+
{
|
|
40
|
+
title: 'Global (~/.agents/skills/)',
|
|
41
|
+
description: 'Available to all projects',
|
|
42
|
+
value: 'global',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
title: 'Project (./agents/skills/)',
|
|
46
|
+
description: 'Only for current project',
|
|
47
|
+
value: 'project',
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
initial: 0,
|
|
51
|
+
});
|
|
52
|
+
if (!response.scope) {
|
|
53
|
+
console.error('\n✗ Installation cancelled');
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
return response.scope === 'global';
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Show multi-agent installation info.
|
|
60
|
+
*
|
|
61
|
+
* @param skillName - Skill being installed
|
|
62
|
+
*/
|
|
63
|
+
export function showMultiAgentInfo(skillName) {
|
|
64
|
+
console.log(`\n📦 Installing ${skillName} for multiple agents:`);
|
|
65
|
+
console.log(` Agents: ${DEFAULT_AGENTS.join(', ')}`);
|
|
66
|
+
console.log(` Scope: Global (~/.agents/skills/)`);
|
|
67
|
+
console.log('');
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=prompts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/utils/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAElE;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,kBAAkB;QAC3B,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACtC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,qBAAqB;QAC9B,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,4BAA4B;gBACnC,WAAW,EAAE,2BAA2B;gBACxC,KAAK,EAAE,QAAQ;aAChB;YACD;gBACE,KAAK,EAAE,4BAA4B;gBACnC,WAAW,EAAE,0BAA0B;gBACvC,KAAK,EAAE,SAAS;aACjB;SACF;QACD,OAAO,EAAE,CAAC;KACX,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,SAAS,uBAAuB,CAAC,CAAC;IACjE,OAAO,CAAC,GAAG,CAAC,cAAc,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "openskills-cli",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Install AI agent skills locally or discover via MCP protocol",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"openskills": "dist/bin/cli.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/",
|
|
11
|
+
"README.md",
|
|
12
|
+
"LICENSE"
|
|
13
|
+
],
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=18.0.0"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"prepublishOnly": "npm run build",
|
|
20
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"@modelcontextprotocol/sdk": "^1.12.0",
|
|
24
|
+
"extract-zip": "^2.0.1",
|
|
25
|
+
"node-fetch": "^3.3.2",
|
|
26
|
+
"prompts": "^2.4.2"
|
|
27
|
+
},
|
|
28
|
+
"devDependencies": {
|
|
29
|
+
"@types/node": "^20.11.0",
|
|
30
|
+
"@types/prompts": "^2.4.9",
|
|
31
|
+
"@typescript-eslint/eslint-plugin": "^6.19.0",
|
|
32
|
+
"@typescript-eslint/parser": "^6.19.0",
|
|
33
|
+
"eslint": "^8.56.0",
|
|
34
|
+
"prettier": "^3.2.4",
|
|
35
|
+
"typescript": "^5.3.3"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"mcp",
|
|
39
|
+
"ai",
|
|
40
|
+
"skills",
|
|
41
|
+
"claude",
|
|
42
|
+
"cursor",
|
|
43
|
+
"agent",
|
|
44
|
+
"model-context-protocol",
|
|
45
|
+
"skill-installation",
|
|
46
|
+
"cli"
|
|
47
|
+
],
|
|
48
|
+
"license": "MIT",
|
|
49
|
+
"repository": {
|
|
50
|
+
"type": "git",
|
|
51
|
+
"url": "git+https://github.com/nadeemsangrasi/openskills-mcp.git"
|
|
52
|
+
}
|
|
53
|
+
}
|