learn-skill.md 1.0.1 → 1.0.3
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/bin/cli.mjs +19 -13
- package/package.json +2 -2
- package/src/agents.mjs +41 -7
package/bin/cli.mjs
CHANGED
|
@@ -5,15 +5,21 @@ import { add } from '../src/install.mjs'
|
|
|
5
5
|
import { search, list } from '../src/search.mjs'
|
|
6
6
|
import { AGENTS, detectAgents } from '../src/agents.mjs'
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const BANNER = `
|
|
9
|
+
▄▄ ▄▄▄▄▄ ▄▄▄ ▄▄▄▄ ▄▄ ▄▄ ▄▄▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄ ▄▄▄▄
|
|
10
|
+
██ ██▄▄ ██▀██ ██▄█▄ ███▄██ ▄▄▄ ███▄▄ ██▄█▀ ██ ██ ██ ██▀▄▀██ ██▀██
|
|
11
|
+
██▄▄▄ ██▄▄▄ ██▀██ ██ ██ ██ ▀██ ▄▄██▀ ██ ██ ██ ██▄▄▄ ██▄▄▄ ▄ ██ ██ ████▀
|
|
12
|
+
`
|
|
13
|
+
|
|
14
|
+
const HELP = `${BANNER}
|
|
15
|
+
install AI agent skills from learn-skill.md
|
|
10
16
|
|
|
11
17
|
usage:
|
|
12
|
-
learn-skill
|
|
13
|
-
learn-skill
|
|
14
|
-
learn-skill
|
|
15
|
-
learn-skill
|
|
16
|
-
learn-skill
|
|
18
|
+
learn-skill-md add <slug> install a skill
|
|
19
|
+
learn-skill-md add <slug> -a claude install to a specific agent
|
|
20
|
+
learn-skill-md search <query> search for skills
|
|
21
|
+
learn-skill-md list list recent skills
|
|
22
|
+
learn-skill-md agents show supported agents
|
|
17
23
|
|
|
18
24
|
options:
|
|
19
25
|
-a, --agent <name> target agent (claude, cursor, codex, windsurf, etc.)
|
|
@@ -22,9 +28,9 @@ const HELP = `
|
|
|
22
28
|
-v, --version show version
|
|
23
29
|
|
|
24
30
|
examples:
|
|
25
|
-
npx learn-skill
|
|
26
|
-
npx learn-skill
|
|
27
|
-
npx learn-skill
|
|
31
|
+
npx learn-skill-md add my-skill
|
|
32
|
+
npx learn-skill-md add my-skill -a cursor
|
|
33
|
+
npx learn-skill-md search "unit test"
|
|
28
34
|
`
|
|
29
35
|
|
|
30
36
|
const { values, positionals } = parseArgs({
|
|
@@ -40,7 +46,7 @@ const { values, positionals } = parseArgs({
|
|
|
40
46
|
const [command, ...args] = positionals
|
|
41
47
|
|
|
42
48
|
if (values.version) {
|
|
43
|
-
console.log('learn-skill
|
|
49
|
+
console.log('learn-skill-md v1.0.3')
|
|
44
50
|
process.exit(0)
|
|
45
51
|
}
|
|
46
52
|
|
|
@@ -55,7 +61,7 @@ async function main() {
|
|
|
55
61
|
case 'install': {
|
|
56
62
|
const slug = args[0]
|
|
57
63
|
if (!slug) {
|
|
58
|
-
console.error(' error: missing skill slug\n usage: learn-skill
|
|
64
|
+
console.error(' error: missing skill slug\n usage: learn-skill-md add <slug>')
|
|
59
65
|
process.exit(1)
|
|
60
66
|
}
|
|
61
67
|
await add(slug, { agent: values.agent, yes: values.yes })
|
|
@@ -65,7 +71,7 @@ async function main() {
|
|
|
65
71
|
case 'find': {
|
|
66
72
|
const query = args.join(' ')
|
|
67
73
|
if (!query) {
|
|
68
|
-
console.error(' error: missing search query\n usage: learn-skill
|
|
74
|
+
console.error(' error: missing search query\n usage: learn-skill-md search <query>')
|
|
69
75
|
process.exit(1)
|
|
70
76
|
}
|
|
71
77
|
await search(query)
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "learn-skill.md",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "Install AI agent skills from learn-skill.md — the skill marketplace for AI agents",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
|
-
"learn-skill": "./bin/cli.mjs"
|
|
7
|
+
"learn-skill-md": "./bin/cli.mjs"
|
|
8
8
|
},
|
|
9
9
|
"files": [
|
|
10
10
|
"bin/",
|
package/src/agents.mjs
CHANGED
|
@@ -5,13 +5,47 @@ import { existsSync } from 'node:fs'
|
|
|
5
5
|
const home = homedir()
|
|
6
6
|
|
|
7
7
|
export const AGENTS = [
|
|
8
|
-
{ id: 'claude', name: 'Claude Code',
|
|
9
|
-
{ id: 'cursor',
|
|
10
|
-
{ id: 'codex',
|
|
11
|
-
{ id: 'windsurf',
|
|
12
|
-
{ id: '
|
|
13
|
-
{ id: '
|
|
14
|
-
{ id: 'amp',
|
|
8
|
+
{ id: 'claude-code', name: 'Claude Code', dir: '.claude/skills', configDir: '.claude' },
|
|
9
|
+
{ id: 'cursor', name: 'Cursor', dir: '.cursor/skills', configDir: '.cursor' },
|
|
10
|
+
{ id: 'codex', name: 'Codex', dir: '.codex/skills', configDir: '.codex' },
|
|
11
|
+
{ id: 'windsurf', name: 'Windsurf', dir: '.codeium/windsurf/skills', configDir: '.codeium' },
|
|
12
|
+
{ id: 'github-copilot', name: 'GitHub Copilot', dir: '.copilot/skills', configDir: '.copilot' },
|
|
13
|
+
{ id: 'gemini-cli', name: 'Gemini CLI', dir: '.gemini/skills', configDir: '.gemini' },
|
|
14
|
+
{ id: 'amp', name: 'Amp', dir: '.config/agents/skills', configDir: '.config/agents' },
|
|
15
|
+
{ id: 'continue', name: 'Continue', dir: '.continue/skills', configDir: '.continue' },
|
|
16
|
+
{ id: 'opencode', name: 'OpenCode', dir: '.config/opencode/skills', configDir: '.config/opencode' },
|
|
17
|
+
{ id: 'cline', name: 'Cline', dir: '.agents/skills', configDir: '.agents' },
|
|
18
|
+
{ id: 'roo', name: 'Roo Code', dir: '.roo/skills', configDir: '.roo' },
|
|
19
|
+
{ id: 'goose', name: 'Goose', dir: '.config/goose/skills', configDir: '.config/goose' },
|
|
20
|
+
{ id: 'augment', name: 'Augment', dir: '.augment/skills', configDir: '.augment' },
|
|
21
|
+
{ id: 'kilo', name: 'Kilo Code', dir: '.kilocode/skills', configDir: '.kilocode' },
|
|
22
|
+
{ id: 'trae', name: 'Trae', dir: '.trae/skills', configDir: '.trae' },
|
|
23
|
+
{ id: 'trae-cn', name: 'Trae CN', dir: '.trae-cn/skills', configDir: '.trae-cn' },
|
|
24
|
+
{ id: 'antigravity', name: 'Antigravity', dir: '.gemini/antigravity/skills', configDir: '.gemini/antigravity' },
|
|
25
|
+
{ id: 'codebuddy', name: 'CodeBuddy', dir: '.codebuddy/skills', configDir: '.codebuddy' },
|
|
26
|
+
{ id: 'command-code', name: 'Command Code', dir: '.commandcode/skills', configDir: '.commandcode' },
|
|
27
|
+
{ id: 'cortex', name: 'Cortex Code', dir: '.snowflake/cortex/skills', configDir: '.snowflake' },
|
|
28
|
+
{ id: 'crush', name: 'Crush', dir: '.config/crush/skills', configDir: '.config/crush' },
|
|
29
|
+
{ id: 'droid', name: 'Droid', dir: '.factory/skills', configDir: '.factory' },
|
|
30
|
+
{ id: 'iflow-cli', name: 'iFlow CLI', dir: '.iflow/skills', configDir: '.iflow' },
|
|
31
|
+
{ id: 'junie', name: 'Junie', dir: '.junie/skills', configDir: '.junie' },
|
|
32
|
+
{ id: 'kimi-cli', name: 'Kimi Code CLI', dir: '.config/agents/skills', configDir: '.config/agents' },
|
|
33
|
+
{ id: 'kiro-cli', name: 'Kiro CLI', dir: '.kiro/skills', configDir: '.kiro' },
|
|
34
|
+
{ id: 'kode', name: 'Kode', dir: '.kode/skills', configDir: '.kode' },
|
|
35
|
+
{ id: 'mcpjam', name: 'MCPJam', dir: '.mcpjam/skills', configDir: '.mcpjam' },
|
|
36
|
+
{ id: 'mistral-vibe', name: 'Mistral Vibe', dir: '.vibe/skills', configDir: '.vibe' },
|
|
37
|
+
{ id: 'mux', name: 'Mux', dir: '.mux/skills', configDir: '.mux' },
|
|
38
|
+
{ id: 'openclaw', name: 'OpenClaw', dir: '.openclaw/skills', configDir: '.openclaw' },
|
|
39
|
+
{ id: 'openhands', name: 'OpenHands', dir: '.openhands/skills', configDir: '.openhands' },
|
|
40
|
+
{ id: 'pi', name: 'Pi', dir: '.pi/agent/skills', configDir: '.pi' },
|
|
41
|
+
{ id: 'qoder', name: 'Qoder', dir: '.qoder/skills', configDir: '.qoder' },
|
|
42
|
+
{ id: 'qwen-code', name: 'Qwen Code', dir: '.qwen/skills', configDir: '.qwen' },
|
|
43
|
+
{ id: 'replit', name: 'Replit', dir: '.config/agents/skills', configDir: '.config/agents' },
|
|
44
|
+
{ id: 'universal', name: 'Universal', dir: '.config/agents/skills', configDir: '.config/agents' },
|
|
45
|
+
{ id: 'zencoder', name: 'Zencoder', dir: '.zencoder/skills', configDir: '.zencoder' },
|
|
46
|
+
{ id: 'neovate', name: 'Neovate', dir: '.neovate/skills', configDir: '.neovate' },
|
|
47
|
+
{ id: 'pochi', name: 'Pochi', dir: '.pochi/skills', configDir: '.pochi' },
|
|
48
|
+
{ id: 'adal', name: 'AdaL', dir: '.adal/skills', configDir: '.adal' },
|
|
15
49
|
]
|
|
16
50
|
|
|
17
51
|
export function detectAgents() {
|