@its-thepoe/skills 1.0.8 → 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 CHANGED
@@ -1,6 +1,21 @@
1
1
  # @its-thepoe/skills
2
2
 
3
- CLI to **install**, **sync**, **check**, and **remove** [@its-thepoe](https://www.npmjs.com/search?q=scope%3Aits-thepoe) Agent Skills into local directories used by **Cursor**, **Claude Code**, **OpenCode**, and **Windsurf**.
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 Object.keys(AGENT_TARGETS)) {
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
 
@@ -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(["cursor", "claude", "opencode", "windsurf"]);
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.8",
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,7 +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/market-command-matrix": "1.0.0",
32
33
  "@its-thepoe/root-cause-analysis": "1.0.1",
33
- "@its-thepoe/write-a-skill": "1.0.2"
34
+ "@its-thepoe/write-a-skill": "1.0.3"
34
35
  }
35
36
  }
@@ -7,6 +7,7 @@
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" },
10
11
  { "name": "root-cause-analysis", "package": "@its-thepoe/root-cause-analysis" },
11
12
  { "name": "write-a-skill", "package": "@its-thepoe/write-a-skill" }
12
13
  ]