skillfish 1.0.11 → 1.0.13
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/README.md +32 -28
- package/dist/commands/add.js +2 -2
- package/dist/index.js +14 -1
- package/package.json +4 -2
package/README.md
CHANGED
|
@@ -20,7 +20,11 @@
|
|
|
20
20
|
## Quick Start
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
+
# One-off skill installation
|
|
23
24
|
npx skillfish add owner/repo
|
|
25
|
+
|
|
26
|
+
# For skill management (list, update, remove), install globally
|
|
27
|
+
npm i -g skillfish
|
|
24
28
|
```
|
|
25
29
|
|
|
26
30
|
One command installs to **all detected agents** on your system.
|
|
@@ -52,11 +56,11 @@ All commands support `--json` for automation.
|
|
|
52
56
|
## Examples
|
|
53
57
|
|
|
54
58
|
```bash
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
59
|
+
skillfish add user/my-skill # Install a skill
|
|
60
|
+
skillfish add owner/repo --all # Install all skills from repo
|
|
61
|
+
skillfish list # See what's installed
|
|
62
|
+
skillfish update # Update all skills
|
|
63
|
+
skillfish remove old-skill # Remove a skill
|
|
60
64
|
```
|
|
61
65
|
|
|
62
66
|
## Supported Agents
|
|
@@ -99,15 +103,15 @@ Works with 17+ agents including:
|
|
|
99
103
|
Install skills from a repository.
|
|
100
104
|
|
|
101
105
|
```bash
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
106
|
+
skillfish add owner/repo # Auto-discover SKILL.md
|
|
107
|
+
skillfish add owner/repo my-skill # Install by skill name
|
|
108
|
+
skillfish add owner/repo/path/to/skill # Full path syntax
|
|
109
|
+
skillfish add owner/repo --path skills/foo # Explicit path
|
|
110
|
+
skillfish add owner/repo --all # Install all skills
|
|
111
|
+
skillfish add owner/repo --force # Overwrite existing
|
|
112
|
+
skillfish add owner/repo --yes # Skip confirmation
|
|
113
|
+
skillfish add owner/repo --project # Project only (./)
|
|
114
|
+
skillfish add owner/repo --global # Global only (~/)
|
|
111
115
|
```
|
|
112
116
|
|
|
113
117
|
### list
|
|
@@ -115,10 +119,10 @@ npx skillfish add owner/repo --global # Global only (~/)
|
|
|
115
119
|
View installed skills.
|
|
116
120
|
|
|
117
121
|
```bash
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
+
skillfish list # List all installed skills
|
|
123
|
+
skillfish list --global # Global skills only (~/)
|
|
124
|
+
skillfish list --project # Project skills only (./)
|
|
125
|
+
skillfish list --agent "Claude Code" # Specific agent
|
|
122
126
|
```
|
|
123
127
|
|
|
124
128
|
### remove
|
|
@@ -126,13 +130,13 @@ npx skillfish list --agent "Claude Code" # Specific agent
|
|
|
126
130
|
Remove installed skills.
|
|
127
131
|
|
|
128
132
|
```bash
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
133
|
+
skillfish remove # Interactive picker
|
|
134
|
+
skillfish remove my-skill # By name
|
|
135
|
+
skillfish remove --all # Remove all
|
|
136
|
+
skillfish remove my-skill --project # Project only
|
|
137
|
+
skillfish remove my-skill --global # Global only
|
|
138
|
+
skillfish remove my-skill --agent "Cursor" # Specific agent
|
|
139
|
+
skillfish remove my-skill --yes # Skip confirmation
|
|
136
140
|
```
|
|
137
141
|
|
|
138
142
|
### update
|
|
@@ -140,9 +144,9 @@ npx skillfish remove my-skill --yes # Skip confirmation
|
|
|
140
144
|
Update installed skills to latest version.
|
|
141
145
|
|
|
142
146
|
```bash
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
147
|
+
skillfish update # Check for updates interactively
|
|
148
|
+
skillfish update --yes # Update all without prompting
|
|
149
|
+
skillfish update --json # Check for updates (JSON output)
|
|
146
150
|
```
|
|
147
151
|
|
|
148
152
|
<details>
|
package/dist/commands/add.js
CHANGED
|
@@ -471,11 +471,11 @@ async function discoverSkillPaths(owner, repo, installAll, jsonMode, jsonOutput,
|
|
|
471
471
|
return { paths: [skill.dir], branch, sha };
|
|
472
472
|
}
|
|
473
473
|
// Build options for selection with frontmatter metadata
|
|
474
|
-
// Title in label, description in hint (
|
|
474
|
+
// Title in label, truncated description in hint (keeps UI clean)
|
|
475
475
|
const optionsList = skills.map((skill) => ({
|
|
476
476
|
value: skill.dir,
|
|
477
477
|
label: pc.bold(toTitleCase(skill.name)),
|
|
478
|
-
hint: skill.description
|
|
478
|
+
hint: skill.description ? truncate(skill.description, 70) : undefined,
|
|
479
479
|
}));
|
|
480
480
|
// Non-TTY or JSON mode: require --all or --path for multiple skills
|
|
481
481
|
if (!isInputTTY() || jsonMode) {
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { Command } from 'commander';
|
|
|
8
8
|
import { readFileSync } from 'fs';
|
|
9
9
|
import { fileURLToPath } from 'url';
|
|
10
10
|
import { dirname, join } from 'path';
|
|
11
|
+
import updateNotifier from 'update-notifier';
|
|
11
12
|
import { addCommand } from './commands/add.js';
|
|
12
13
|
import { listCommand } from './commands/list.js';
|
|
13
14
|
import { removeCommand } from './commands/remove.js';
|
|
@@ -15,6 +16,8 @@ import { updateCommand } from './commands/update.js';
|
|
|
15
16
|
// Read version from package.json (single source of truth)
|
|
16
17
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
17
18
|
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
19
|
+
// Check for updates (runs in background, non-blocking)
|
|
20
|
+
const notifier = updateNotifier({ pkg });
|
|
18
21
|
const program = new Command()
|
|
19
22
|
.name('skillfish')
|
|
20
23
|
.description('Install and manage AI agent skills from GitHub repositories')
|
|
@@ -52,7 +55,17 @@ program.on('option:json', () => {
|
|
|
52
55
|
// JSON mode is handled by commands
|
|
53
56
|
});
|
|
54
57
|
// Parse and run
|
|
55
|
-
program
|
|
58
|
+
program
|
|
59
|
+
.parseAsync(process.argv)
|
|
60
|
+
.then(() => {
|
|
61
|
+
// Show update notification after command completes (if update available)
|
|
62
|
+
notifier.notify({
|
|
63
|
+
message: `Update available: {currentVersion} → {latestVersion}
|
|
64
|
+
Run: npx skillfish@latest
|
|
65
|
+
Or: npm i -g skillfish`,
|
|
66
|
+
});
|
|
67
|
+
})
|
|
68
|
+
.catch((err) => {
|
|
56
69
|
console.error('Error:', err instanceof Error ? err.message : String(err));
|
|
57
70
|
process.exit(1);
|
|
58
71
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillfish",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
4
|
"description": "Install AI agent skills from GitHub with a single command",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -71,11 +71,13 @@
|
|
|
71
71
|
"@clack/prompts": "^0.11.0",
|
|
72
72
|
"commander": "^14.0.2",
|
|
73
73
|
"giget": "^3.1.1",
|
|
74
|
-
"picocolors": "^1.1.1"
|
|
74
|
+
"picocolors": "^1.1.1",
|
|
75
|
+
"update-notifier": "^7.3.1"
|
|
75
76
|
},
|
|
76
77
|
"devDependencies": {
|
|
77
78
|
"@eslint/js": "^9.39.2",
|
|
78
79
|
"@types/node": "^20.0.0",
|
|
80
|
+
"@types/update-notifier": "^6.0.8",
|
|
79
81
|
"eslint": "^9.39.2",
|
|
80
82
|
"eslint-config-prettier": "^10.1.8",
|
|
81
83
|
"husky": "^9.1.7",
|