@bacnh85/agent-skills 0.1.1
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 +229 -0
- package/dist/src/cli.d.ts +12 -0
- package/dist/src/cli.js +224 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/config.d.ts +9 -0
- package/dist/src/config.js +14 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/discovery.d.ts +16 -0
- package/dist/src/discovery.js +161 -0
- package/dist/src/discovery.js.map +1 -0
- package/dist/src/installer.d.ts +9 -0
- package/dist/src/installer.js +131 -0
- package/dist/src/installer.js.map +1 -0
- package/dist/src/manager.d.ts +8 -0
- package/dist/src/manager.js +229 -0
- package/dist/src/manager.js.map +1 -0
- package/dist/src/registry.d.ts +5 -0
- package/dist/src/registry.js +46 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/skill.d.ts +2 -0
- package/dist/src/skill.js +50 -0
- package/dist/src/skill.js.map +1 -0
- package/dist/src/types.d.ts +39 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/ui.d.ts +14 -0
- package/dist/src/ui.js +70 -0
- package/dist/src/ui.js.map +1 -0
- package/dist/test/cli.test.d.ts +1 -0
- package/dist/test/cli.test.js +168 -0
- package/dist/test/cli.test.js.map +1 -0
- package/dist/test/config.test.d.ts +1 -0
- package/dist/test/config.test.js +12 -0
- package/dist/test/config.test.js.map +1 -0
- package/dist/test/discovery.test.d.ts +1 -0
- package/dist/test/discovery.test.js +42 -0
- package/dist/test/discovery.test.js.map +1 -0
- package/dist/test/installer.test.d.ts +1 -0
- package/dist/test/installer.test.js +159 -0
- package/dist/test/installer.test.js.map +1 -0
- package/dist/test/manager.test.d.ts +1 -0
- package/dist/test/manager.test.js +150 -0
- package/dist/test/manager.test.js.map +1 -0
- package/dist/test/skill.test.d.ts +1 -0
- package/dist/test/skill.test.js +27 -0
- package/dist/test/skill.test.js.map +1 -0
- package/dist/test/ui.test.d.ts +1 -0
- package/dist/test/ui.test.js +28 -0
- package/dist/test/ui.test.js.map +1 -0
- package/package.json +54 -0
- package/skills/frontend-design/LICENSE.txt +177 -0
- package/skills/frontend-design/SKILL.md +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Agent Skills
|
|
2
|
+
|
|
3
|
+
`agent-skills` manages a curated repository of AI agent skills and installs
|
|
4
|
+
those skills into project or user directories.
|
|
5
|
+
|
|
6
|
+
## Requirements
|
|
7
|
+
|
|
8
|
+
- Node.js 20 or later
|
|
9
|
+
- Git for adding or updating skills from remote repositories
|
|
10
|
+
|
|
11
|
+
## Install the CLI
|
|
12
|
+
|
|
13
|
+
Install the CLI globally from GitHub:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install -g @bacnh85/agent-skills
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Verify the installed CLI:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
agent-skills --help
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
You can also install it into a project and run it with `npx`:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install @bacnh85/agent-skills
|
|
29
|
+
npx agent-skills --help
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Pin a branch, tag, or commit by adding a `#ref` suffix:
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g bacnh85/agent-skills#main
|
|
36
|
+
npm install bacnh85/agent-skills#main
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
SSH/Git installs also work on development machines with GitHub SSH keys:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install -g git+ssh://git@github.com/bacnh85/agent-skills.git
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Set `AGENT_SKILLS_REPO` to the local checkout that contains the curated
|
|
46
|
+
`skills/` directory and its registry:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
export AGENT_SKILLS_REPO=/absolute/path/to/agent-skills
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
PowerShell on Windows:
|
|
53
|
+
|
|
54
|
+
```powershell
|
|
55
|
+
$env:AGENT_SKILLS_REPO = "C:\path\to\agent-skills"
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
To persist it for future PowerShell sessions:
|
|
59
|
+
|
|
60
|
+
```powershell
|
|
61
|
+
[Environment]::SetEnvironmentVariable("AGENT_SKILLS_REPO", "C:\path\to\agent-skills", "User")
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
When the variable is not set, `agent-skills` uses the current working
|
|
65
|
+
directory as the repository.
|
|
66
|
+
|
|
67
|
+
## Install Skills for Agents
|
|
68
|
+
|
|
69
|
+
Run this command from a project directory to select skills interactively:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
agent-skills install
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Selected skills are installed in:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
<current-directory>/.agents/skills/
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Install every skill without a prompt:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
agent-skills install --all
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Install selected skills for the current user:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
agent-skills install -g
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Install every skill for the current user:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
agent-skills install -g --all
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Global skills are installed in:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
~/.agents/skills/
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Installing a selected skill replaces its existing directory with the
|
|
106
|
+
repository version. Skills in the destination that were not selected are left
|
|
107
|
+
untouched.
|
|
108
|
+
|
|
109
|
+
Interactive selection requires a terminal. Use `--all` in scripts, CI, and
|
|
110
|
+
other non-interactive environments.
|
|
111
|
+
|
|
112
|
+
## Uninstall Skills for Agents
|
|
113
|
+
|
|
114
|
+
Remove named skills from the current project:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
agent-skills uninstall demo notes
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Run without names to select installed project skills interactively:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
agent-skills uninstall
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Remove every installed project skill:
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
agent-skills uninstall --all
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Use `-g` with named, interactive, or `--all` forms to remove skills from
|
|
133
|
+
`~/.agents/skills/`:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
agent-skills uninstall demo -g
|
|
137
|
+
agent-skills uninstall -g
|
|
138
|
+
agent-skills uninstall --all -g
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Only valid immediate skill directories are candidates. Uninstall leaves the
|
|
142
|
+
`.agents/skills` directory and all unselected or unrelated entries intact.
|
|
143
|
+
|
|
144
|
+
## Manage the Curated Repository
|
|
145
|
+
|
|
146
|
+
The following commands read and update the repository selected by
|
|
147
|
+
`AGENT_SKILLS_REPO`, or the current directory when it is unset.
|
|
148
|
+
|
|
149
|
+
### Add
|
|
150
|
+
|
|
151
|
+
Add skills from GitHub shorthand, a GitHub tree URL, any Git URL, or a local
|
|
152
|
+
path:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
agent-skills add vercel-labs/skills
|
|
156
|
+
agent-skills add https://github.com/acme/skills/tree/main/skills/demo
|
|
157
|
+
agent-skills add ssh://git@github.com/acme/skills.git
|
|
158
|
+
agent-skills add ./my-local-skills
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
A direct skill source or a source containing one skill is selected
|
|
162
|
+
automatically. Sources containing multiple skills open an interactive
|
|
163
|
+
multiselect. Non-interactive callers must use a direct skill URL or path.
|
|
164
|
+
|
|
165
|
+
### List
|
|
166
|
+
|
|
167
|
+
List skills registered in the curated repository:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
agent-skills list
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Remove
|
|
174
|
+
|
|
175
|
+
Remove named skills:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
agent-skills remove demo another-skill
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Run without names to select skills interactively:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
agent-skills remove
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Update
|
|
188
|
+
|
|
189
|
+
Update named skills from their recorded sources:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
agent-skills update demo another-skill
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Run without names to update every registered skill:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
agent-skills update
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Git skills track the branch or ref recorded when added. Local skills are
|
|
202
|
+
copied again from their original absolute path.
|
|
203
|
+
|
|
204
|
+
## Command Reference
|
|
205
|
+
|
|
206
|
+
```text
|
|
207
|
+
agent-skills add <source>
|
|
208
|
+
agent-skills remove [skills...]
|
|
209
|
+
agent-skills list
|
|
210
|
+
agent-skills update [skills...]
|
|
211
|
+
agent-skills install [-g] [--all]
|
|
212
|
+
agent-skills uninstall [skills...] [-g]
|
|
213
|
+
agent-skills uninstall --all [-g]
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Repository Metadata
|
|
217
|
+
|
|
218
|
+
`skill-registry.json` records each curated skill's repository-relative
|
|
219
|
+
destination, source, source-relative path, tracked ref and commit, content
|
|
220
|
+
hash, and timestamps. `skill-history.jsonl` contains append-only `add`,
|
|
221
|
+
`update`, and `remove` events.
|
|
222
|
+
|
|
223
|
+
These metadata files belong to the curated repository. The `install` command
|
|
224
|
+
copies only skill directories and does not create registry or history files in
|
|
225
|
+
`.agents/skills`.
|
|
226
|
+
|
|
227
|
+
Version 1 registries are migrated in memory and written as version 2 on the
|
|
228
|
+
next mutation. Legacy entries without enough source provenance remain listable
|
|
229
|
+
and removable, but must be re-added before they can be updated.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import type { RegistryEntry } from "./types.js";
|
|
3
|
+
export interface Args {
|
|
4
|
+
command?: "add" | "remove" | "list" | "update" | "install" | "uninstall";
|
|
5
|
+
values: string[];
|
|
6
|
+
all?: boolean;
|
|
7
|
+
global?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function usage(): string;
|
|
10
|
+
export declare function parseArgs(argv: string[]): Args;
|
|
11
|
+
export declare function isCliEntrypoint(moduleUrl: string, argvPath?: string): boolean;
|
|
12
|
+
export declare function formatRegistryList(entries: RegistryEntry[]): string;
|
package/dist/src/cli.js
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { realpathSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import pc from "picocolors";
|
|
6
|
+
import { resolveInstallTarget, resolveTargetRepo } from "./config.js";
|
|
7
|
+
import { discoverSkills, resolveSource } from "./discovery.js";
|
|
8
|
+
import { discoverInstalledSkills, installSkills, uninstallSkills } from "./installer.js";
|
|
9
|
+
import { addSkills, removeSkills, updateSkills } from "./manager.js";
|
|
10
|
+
import { readRegistry } from "./registry.js";
|
|
11
|
+
import { formatOperationResult, runOperation, selectDiscoveredSkills, selectInstalledSkills, selectRegistrySkills } from "./ui.js";
|
|
12
|
+
export function usage() {
|
|
13
|
+
return `Usage:
|
|
14
|
+
agent-skills add <source>
|
|
15
|
+
agent-skills remove [skills...]
|
|
16
|
+
agent-skills list
|
|
17
|
+
agent-skills update [skills...]
|
|
18
|
+
agent-skills install [-g] [--all]
|
|
19
|
+
agent-skills uninstall [skills...] [-g]
|
|
20
|
+
agent-skills uninstall --all [-g]`;
|
|
21
|
+
}
|
|
22
|
+
export function parseArgs(argv) {
|
|
23
|
+
if (!argv.length)
|
|
24
|
+
return { values: [] };
|
|
25
|
+
if (argv[0] === "--help" || argv[0] === "-h")
|
|
26
|
+
return { values: [] };
|
|
27
|
+
const command = argv[0];
|
|
28
|
+
if (!["add", "remove", "list", "update", "install", "uninstall"].includes(command)) {
|
|
29
|
+
throw new Error(`Unknown command: ${command}`);
|
|
30
|
+
}
|
|
31
|
+
const values = argv.slice(1);
|
|
32
|
+
if (command === "install") {
|
|
33
|
+
const allowed = new Set(["-g", "--all"]);
|
|
34
|
+
const option = values.find((value) => value.startsWith("-") && !allowed.has(value));
|
|
35
|
+
if (option)
|
|
36
|
+
throw new Error(`Unknown option: ${option}`);
|
|
37
|
+
const positional = values.find((value) => !value.startsWith("-"));
|
|
38
|
+
if (positional)
|
|
39
|
+
throw new Error("agent-skills install does not accept arguments.");
|
|
40
|
+
return {
|
|
41
|
+
command: "install",
|
|
42
|
+
values: [],
|
|
43
|
+
all: values.includes("--all"),
|
|
44
|
+
global: values.includes("-g")
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
if (command === "uninstall") {
|
|
48
|
+
const allowed = new Set(["-g", "--all"]);
|
|
49
|
+
const option = values.find((value) => value.startsWith("-") && !allowed.has(value));
|
|
50
|
+
if (option)
|
|
51
|
+
throw new Error(`Unknown option: ${option}`);
|
|
52
|
+
const names = values.filter((value) => !value.startsWith("-"));
|
|
53
|
+
const all = values.includes("--all");
|
|
54
|
+
if (all && names.length) {
|
|
55
|
+
throw new Error("agent-skills uninstall does not accept names with --all.");
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
command: "uninstall",
|
|
59
|
+
values: names,
|
|
60
|
+
all,
|
|
61
|
+
global: values.includes("-g")
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const option = values.find((value) => value.startsWith("-"));
|
|
65
|
+
if (option)
|
|
66
|
+
throw new Error(`Unknown option: ${option}`);
|
|
67
|
+
if (command === "add" && values.length !== 1) {
|
|
68
|
+
throw new Error("Usage: agent-skills add <source>");
|
|
69
|
+
}
|
|
70
|
+
if (command === "list" && values.length) {
|
|
71
|
+
throw new Error("agent-skills list does not accept arguments.");
|
|
72
|
+
}
|
|
73
|
+
return { command: command, values };
|
|
74
|
+
}
|
|
75
|
+
export function isCliEntrypoint(moduleUrl, argvPath) {
|
|
76
|
+
if (!argvPath)
|
|
77
|
+
return false;
|
|
78
|
+
try {
|
|
79
|
+
return realpathSync(fileURLToPath(moduleUrl)) === realpathSync(argvPath);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
export function formatRegistryList(entries) {
|
|
86
|
+
if (!entries.length)
|
|
87
|
+
return pc.dim("No project skills found.");
|
|
88
|
+
const rows = [...entries]
|
|
89
|
+
.sort((a, b) => a.name.localeCompare(b.name))
|
|
90
|
+
.map((entry) => ({
|
|
91
|
+
name: entry.name,
|
|
92
|
+
path: entry.path,
|
|
93
|
+
source: entry.source || "-",
|
|
94
|
+
ref: entry.ref || "-",
|
|
95
|
+
commit: entry.commit?.slice(0, 12) || "-",
|
|
96
|
+
updatedAt: entry.updatedAt || "-"
|
|
97
|
+
}));
|
|
98
|
+
const width = (values) => Math.max(...values.map((value) => value.length));
|
|
99
|
+
const widths = {
|
|
100
|
+
name: width(rows.map((row) => row.name)),
|
|
101
|
+
path: width(rows.map((row) => row.path)),
|
|
102
|
+
source: width(rows.map((row) => row.source)),
|
|
103
|
+
ref: width(rows.map((row) => row.ref)),
|
|
104
|
+
commit: width(rows.map((row) => row.commit))
|
|
105
|
+
};
|
|
106
|
+
const lines = rows.map((row) => [
|
|
107
|
+
pc.cyan(row.name.padEnd(widths.name)),
|
|
108
|
+
pc.dim(row.path.padEnd(widths.path)),
|
|
109
|
+
`${pc.dim("Source:")} ${row.source.padEnd(widths.source)}`,
|
|
110
|
+
`${pc.dim("Ref:")} ${row.ref.padEnd(widths.ref)}`,
|
|
111
|
+
`${pc.dim("Commit:")} ${row.commit.padEnd(widths.commit)}`,
|
|
112
|
+
`${pc.dim("Updated:")} ${row.updatedAt}`
|
|
113
|
+
].join(" "));
|
|
114
|
+
return [pc.bold("Project Skills"), "", ...lines, ""].join("\n");
|
|
115
|
+
}
|
|
116
|
+
function printResults(results) {
|
|
117
|
+
for (const result of results) {
|
|
118
|
+
console.log(formatOperationResult(result));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
async function main() {
|
|
122
|
+
const args = parseArgs(process.argv.slice(2));
|
|
123
|
+
if (!args.command) {
|
|
124
|
+
console.log(usage());
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const interactive = Boolean(process.stdout.isTTY);
|
|
128
|
+
if (args.command === "install") {
|
|
129
|
+
const repo = resolveTargetRepo();
|
|
130
|
+
const source = resolveSource(join(repo, "skills"));
|
|
131
|
+
try {
|
|
132
|
+
const discovered = discoverSkills(source);
|
|
133
|
+
if (!discovered.length)
|
|
134
|
+
throw new Error("No skills found in repository.");
|
|
135
|
+
let selected = discovered;
|
|
136
|
+
if (!args.all) {
|
|
137
|
+
if (!process.stdin.isTTY) {
|
|
138
|
+
throw new Error("Interactive skill selection requires a TTY. Use --all for unattended installation.");
|
|
139
|
+
}
|
|
140
|
+
selected = await selectDiscoveredSkills(discovered, "install");
|
|
141
|
+
if (!selected.length)
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const target = resolveInstallTarget({ global: args.global });
|
|
145
|
+
const count = selected.length;
|
|
146
|
+
printResults(runOperation(`Installing ${count} skill${count === 1 ? "" : "s"}...`, `Installed ${count} skill${count === 1 ? "" : "s"}`, interactive, () => installSkills(target, selected)));
|
|
147
|
+
}
|
|
148
|
+
finally {
|
|
149
|
+
source.cleanup();
|
|
150
|
+
}
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
if (args.command === "uninstall") {
|
|
154
|
+
const target = resolveInstallTarget({ global: args.global });
|
|
155
|
+
const installed = discoverInstalledSkills(target);
|
|
156
|
+
if (!installed.length)
|
|
157
|
+
throw new Error(`No installed skills found in ${target}.`);
|
|
158
|
+
let names = args.all ? installed.map((skill) => skill.name) : args.values;
|
|
159
|
+
if (!args.all && !names.length) {
|
|
160
|
+
if (!process.stdin.isTTY) {
|
|
161
|
+
throw new Error("Interactive skill selection requires a TTY. Specify skills or use --all.");
|
|
162
|
+
}
|
|
163
|
+
names = await selectInstalledSkills(installed);
|
|
164
|
+
if (!names.length)
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
const count = names.length;
|
|
168
|
+
printResults(runOperation(`Uninstalling ${count} skill${count === 1 ? "" : "s"}...`, `Uninstalled ${count} skill${count === 1 ? "" : "s"}`, interactive, () => uninstallSkills(target, names)));
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const repo = resolveTargetRepo();
|
|
172
|
+
if (args.command === "list") {
|
|
173
|
+
console.log(formatRegistryList(Object.values(readRegistry(repo).skills)));
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
if (args.command === "remove") {
|
|
177
|
+
let names = args.values;
|
|
178
|
+
if (!names.length) {
|
|
179
|
+
if (!process.stdin.isTTY) {
|
|
180
|
+
throw new Error("No skills specified and interactive selection is unavailable.");
|
|
181
|
+
}
|
|
182
|
+
names = await selectRegistrySkills(Object.values(readRegistry(repo).skills));
|
|
183
|
+
if (!names.length)
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
const count = names.length;
|
|
187
|
+
printResults(runOperation(`Removing ${count} skill${count === 1 ? "" : "s"}...`, `Removed ${count} skill${count === 1 ? "" : "s"}`, interactive, () => removeSkills(repo, names)));
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (args.command === "update") {
|
|
191
|
+
const count = args.values.length || Object.keys(readRegistry(repo).skills).length;
|
|
192
|
+
printResults(runOperation(`Updating ${count} skill${count === 1 ? "" : "s"}...`, `Checked ${count} skill${count === 1 ? "" : "s"}`, interactive, (progress) => updateSkills(repo, args.values, (name, index, total) => {
|
|
193
|
+
progress.message(`Updating ${name} (${index}/${total})...`);
|
|
194
|
+
})));
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const source = resolveSource(args.values[0]);
|
|
198
|
+
try {
|
|
199
|
+
const discovered = discoverSkills(source);
|
|
200
|
+
if (!discovered.length)
|
|
201
|
+
throw new Error("No skills found in source.");
|
|
202
|
+
let selected = discovered;
|
|
203
|
+
if (discovered.length > 1) {
|
|
204
|
+
if (!process.stdin.isTTY) {
|
|
205
|
+
throw new Error(`Source contains ${discovered.length} skills; interactive selection requires a TTY. Use a direct skill URL or path.`);
|
|
206
|
+
}
|
|
207
|
+
selected = await selectDiscoveredSkills(discovered);
|
|
208
|
+
if (!selected.length)
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
const count = selected.length;
|
|
212
|
+
printResults(runOperation(`Adding ${count} skill${count === 1 ? "" : "s"}...`, `Added ${count} skill${count === 1 ? "" : "s"}`, interactive, () => addSkills({ repo, source, selected })));
|
|
213
|
+
}
|
|
214
|
+
finally {
|
|
215
|
+
source.cleanup();
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (isCliEntrypoint(import.meta.url, process.argv[1])) {
|
|
219
|
+
main().catch((error) => {
|
|
220
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
221
|
+
process.exitCode = 1;
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
export function resolveTargetRepo(options = {}) {
|
|
4
|
+
const cwd = options.cwd ?? process.cwd();
|
|
5
|
+
const configured = (options.env ?? process.env).AGENT_SKILLS_REPO;
|
|
6
|
+
return resolve(cwd, configured || ".");
|
|
7
|
+
}
|
|
8
|
+
export function resolveInstallTarget(options = {}) {
|
|
9
|
+
const root = options.global
|
|
10
|
+
? options.home ?? homedir()
|
|
11
|
+
: options.cwd ?? process.cwd();
|
|
12
|
+
return join(root, ".agents", "skills");
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,UAAU,iBAAiB,CAAC,UAG9B,EAAE;IACJ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAAC;IAClE,OAAO,OAAO,CAAC,GAAG,EAAE,UAAU,IAAI,GAAG,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAIjC,EAAE;IACJ,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM;QACzB,CAAC,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE;QAC3B,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACjC,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import type { DiscoveredSkill, ResolvedSource } from "./types.js";
|
|
3
|
+
export interface ParsedSource {
|
|
4
|
+
type: "git" | "local";
|
|
5
|
+
normalized: string;
|
|
6
|
+
cloneUrl?: string;
|
|
7
|
+
ref?: string;
|
|
8
|
+
directPath?: string;
|
|
9
|
+
localPath?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function parseSource(source: string, cwd?: string): ParsedSource;
|
|
12
|
+
export declare function resolveSource(source: string, options?: {
|
|
13
|
+
cwd?: string;
|
|
14
|
+
execute?: typeof execFileSync;
|
|
15
|
+
}): ResolvedSource;
|
|
16
|
+
export declare function discoverSkills(source: ResolvedSource): DiscoveredSkill[];
|