@its-thepoe/skills 1.0.6 → 1.0.10
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 +18 -3
- package/lib/cli-main.mjs +7 -6
- package/lib/link-engine.mjs +5 -1
- package/package.json +5 -3
- package/skills.manifest.json +2 -0
package/README.md
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
1
|
# @its-thepoe/skills
|
|
2
2
|
|
|
3
|
-
CLI
|
|
3
|
+
**Orchestrator CLI** — installs, updates, checks, and removes [@its-thepoe](https://www.npmjs.com/search?q=scope%3Aits-thepoe) **Agent Skills** (`SKILL.md` trees) into the folders that **Codex**, **Cursor**, **Claude Code**, **OpenCode**, and **Windsurf** read from.
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
One command line wraps symlink-or-copy installs, manifest-driven skill names, dry runs, and per-agent targeting. Skills stay versioned npm packages; the CLI is the **supported** way to put them on disk next to your agents without hand-maintaining paths.
|
|
8
|
+
|
|
9
|
+
## Why it’s useful
|
|
10
|
+
|
|
11
|
+
- **Repeatable** installs across machines and teammates (`npx … install --all`).
|
|
12
|
+
- **Safe previews** with `--dry-run` and explicit `remove` / `remove --all`.
|
|
13
|
+
- Works around **Windows symlink** limits via `--strategy copy`.
|
|
14
|
+
|
|
15
|
+
## Use when
|
|
16
|
+
|
|
17
|
+
- You want the **full @its-thepoe skill set** or a **subset** in your local agent directories.
|
|
18
|
+
- You’re onboarding a new machine or verifying installs (`check`, `sync --all`).
|
|
4
19
|
|
|
5
20
|
## Install & use
|
|
6
21
|
|
|
@@ -16,11 +31,11 @@ One skill:
|
|
|
16
31
|
npx @its-thepoe/skills@latest install alt-text
|
|
17
32
|
```
|
|
18
33
|
|
|
19
|
-
Options: `--dry-run`, `--only=cursor,claude`, `--strategy copy` (if symlinks fail), `remove <name>` / `remove --all`.
|
|
34
|
+
Options: `--dry-run`, `--only=codex,cursor,claude`, `--strategy copy` (if symlinks fail), `remove <name>` / `remove --all`.
|
|
20
35
|
|
|
21
36
|
## Docs
|
|
22
37
|
|
|
23
|
-
- [Full documentation on GitHub](https://github.com/its-thepoe/skills)
|
|
38
|
+
- [Full documentation on GitHub](https://github.com/its-thepoe/skills) — root README, publish steps, troubleshooting.
|
|
24
39
|
|
|
25
40
|
## License
|
|
26
41
|
|
package/lib/cli-main.mjs
CHANGED
|
@@ -78,7 +78,7 @@ Commands:
|
|
|
78
78
|
|
|
79
79
|
Options:
|
|
80
80
|
--dry-run Print actions without writing
|
|
81
|
-
--only=<a>[,<b>...] Limit targets: cursor, claude, opencode, windsurf, all
|
|
81
|
+
--only=<a>[,<b>...] Limit targets: codex, cursor, claude, opencode, windsurf, all
|
|
82
82
|
--strategy symlink|copy Default symlink; use copy if symlinks fail (e.g. Windows)
|
|
83
83
|
--online With check: compare to npm registry (requires network)
|
|
84
84
|
|
|
@@ -110,11 +110,12 @@ function npmViewVersion(pkg) {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
/**
|
|
113
|
-
* @param {{ online: boolean }} opts
|
|
113
|
+
* @param {{ online: boolean, only: string[] }} opts
|
|
114
114
|
*/
|
|
115
115
|
function runCheck(opts) {
|
|
116
116
|
const manifest = loadManifest();
|
|
117
|
-
const { online } = opts;
|
|
117
|
+
const { online, only } = opts;
|
|
118
|
+
const agents = only.includes("all") ? Object.keys(AGENT_TARGETS) : only;
|
|
118
119
|
let exit = 0;
|
|
119
120
|
for (const row of manifest.skills) {
|
|
120
121
|
let root = null;
|
|
@@ -132,7 +133,7 @@ function runCheck(opts) {
|
|
|
132
133
|
}
|
|
133
134
|
logLine(`\n${row.name} (${row.package}) bundled@${bundledVer}${latest ? ` registry_latest@${latest}` : ""}`);
|
|
134
135
|
|
|
135
|
-
for (const agent of
|
|
136
|
+
for (const agent of agents) {
|
|
136
137
|
const dest = path.join(agentBaseDir(agent), row.name);
|
|
137
138
|
if (!fs.existsSync(dest)) {
|
|
138
139
|
logLine(` [${agent}] MISSING ${dest}`);
|
|
@@ -183,7 +184,7 @@ export function run(argv) {
|
|
|
183
184
|
|
|
184
185
|
try {
|
|
185
186
|
if (cmd === "check") {
|
|
186
|
-
return runCheck({ online: flags.online });
|
|
187
|
+
return runCheck({ online: flags.online, only });
|
|
187
188
|
}
|
|
188
189
|
|
|
189
190
|
if (cmd === "install" || cmd === "sync") {
|
|
@@ -215,7 +216,7 @@ export function run(argv) {
|
|
|
215
216
|
log,
|
|
216
217
|
});
|
|
217
218
|
}
|
|
218
|
-
logLine(`\nDone. Reload your agents (Cursor, Claude Code, OpenCode, Windsurf).`);
|
|
219
|
+
logLine(`\nDone. Reload your agents (Codex, Cursor, Claude Code, OpenCode, Windsurf).`);
|
|
219
220
|
return 0;
|
|
220
221
|
}
|
|
221
222
|
|
package/lib/link-engine.mjs
CHANGED
|
@@ -7,6 +7,7 @@ const INSTALL_MARKER = ".its-thepoe-skills-install.json";
|
|
|
7
7
|
|
|
8
8
|
/** @type {Record<string, { env?: string, segments: string[] }>} */
|
|
9
9
|
export const AGENT_TARGETS = {
|
|
10
|
+
codex: { segments: [".agents", "skills"] },
|
|
10
11
|
cursor: { segments: [".cursor", "skills"] },
|
|
11
12
|
claude: { segments: [".claude", "skills"] },
|
|
12
13
|
opencode: { segments: [".config", "opencode", "skills"] },
|
|
@@ -28,7 +29,7 @@ export function agentBaseDir(key) {
|
|
|
28
29
|
* @param {string[]} onlyKeys
|
|
29
30
|
*/
|
|
30
31
|
export function normalizeOnly(onlyKeys) {
|
|
31
|
-
const allowed = new Set(
|
|
32
|
+
const allowed = new Set(Object.keys(AGENT_TARGETS));
|
|
32
33
|
if (onlyKeys.length === 0 || onlyKeys.includes("all")) {
|
|
33
34
|
return [...allowed];
|
|
34
35
|
}
|
|
@@ -96,6 +97,9 @@ function linkOneDest(opts) {
|
|
|
96
97
|
if (exists(marker)) {
|
|
97
98
|
log(`${dryRun ? "DRY-RUN " : ""}REPLACE ${dest} (prior copy install)`);
|
|
98
99
|
if (!dryRun) fs.rmSync(dest, { recursive: true, force: true });
|
|
100
|
+
} else if (exists(path.join(dest, "SKILL.md"))) {
|
|
101
|
+
log(`SKIP ${dest} (existing unmanaged skill directory)`);
|
|
102
|
+
return;
|
|
99
103
|
} else {
|
|
100
104
|
throw new Error(
|
|
101
105
|
`Refusing to replace ${dest}: exists and is not a symlink managed by this tool`
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@its-thepoe/skills",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Orchestrator CLI to install, check, sync, and remove @its-thepoe Agent Skills (Cursor, Claude Code, OpenCode, Windsurf).",
|
|
3
|
+
"version": "1.0.10",
|
|
4
|
+
"description": "Orchestrator CLI to install, check, sync, and remove @its-thepoe Agent Skills (Codex, Cursor, Claude Code, OpenCode, Windsurf).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"keywords": [
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
"@its-thepoe/family-taste": "1.0.1",
|
|
30
30
|
"@its-thepoe/canva-app-builder": "1.0.0",
|
|
31
31
|
"@its-thepoe/codebase-content-ideas": "1.0.3",
|
|
32
|
-
"@its-thepoe/
|
|
32
|
+
"@its-thepoe/market-command-matrix": "1.0.0",
|
|
33
|
+
"@its-thepoe/root-cause-analysis": "1.0.1",
|
|
34
|
+
"@its-thepoe/write-a-skill": "1.0.3"
|
|
33
35
|
}
|
|
34
36
|
}
|
package/skills.manifest.json
CHANGED
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
{ "name": "family-taste", "package": "@its-thepoe/family-taste" },
|
|
8
8
|
{ "name": "canva-app-builder", "package": "@its-thepoe/canva-app-builder" },
|
|
9
9
|
{ "name": "codebase-content-ideas", "package": "@its-thepoe/codebase-content-ideas" },
|
|
10
|
+
{ "name": "market-command-matrix", "package": "@its-thepoe/market-command-matrix" },
|
|
11
|
+
{ "name": "root-cause-analysis", "package": "@its-thepoe/root-cause-analysis" },
|
|
10
12
|
{ "name": "write-a-skill", "package": "@its-thepoe/write-a-skill" }
|
|
11
13
|
]
|
|
12
14
|
}
|