kenmark-skills 1.1.1 → 1.1.4

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
@@ -40,11 +40,12 @@ For installing, updating, and cleaning up skills on your machine (pairs with **`
40
40
 
41
41
  | Skill | Purpose |
42
42
  | --- | --- |
43
- | [`skills-install-recommended`](skills/user-skills/skills-install-recommended/SKILL.md) | Install curated third-party packs (Impeccable, ECC, ) with scope and pack selection |
43
+ | [`skills-install-recommended`](skills/user-skills/skills-install-recommended/SKILL.md) | Install curated third-party packs (Impeccable, ECC, Graphify, code review, SEO/GEO) with scope and pack selection |
44
44
  | [`skills-update`](skills/user-skills/skills-update/SKILL.md) | Refresh Kenmark skills and optionally reinstall recommended packs |
45
45
  | [`skills-maintain`](skills/user-skills/skills-maintain/SKILL.md) | Inventory installed skills, group duplicates, recommend keep vs remove (no auto-delete) |
46
+ | [`subagents-maintain`](skills/user-skills/subagents-maintain/SKILL.md) | Inventory installed sub-agents across Claude, Cursor, Codex, Gemini, OpenCode, MiniMax; recommend keep vs remove (no auto-delete) |
46
47
 
47
- **Typical path:** `skills-init` or `npx kenmark-skills setup` → **`skills-install-recommended`** for curated packs → day-to-day **`skills-router`** → periodic **`skills-update`** / **`skills-maintain`**.
48
+ **Typical path:** `skills-init` or `npx kenmark-skills setup` → **`skills-install-recommended`** for curated packs → day-to-day **`skills-router`** → periodic **`skills-update`** / **`skills-maintain`** / **`subagents-maintain`**.
48
49
 
49
50
  These skills assume a **`brain/`** knowledge base (standards, changelog, optional issue tracker). On a new repo: **`init-brain`** → **`issues-setup`** if you track work in `brain/issues/` → **`commit-push`** when shipping.
50
51
 
@@ -63,10 +64,11 @@ All `kenmark-skills` commands **prompt in the terminal by default** (TTY). For a
63
64
  | --- | --- | --- |
64
65
  | `init` | `npx kenmark-skills init` | `npx kenmark-skills init --global --ide all -y` |
65
66
  | `setup` | `npx kenmark-skills setup` | `npx kenmark-skills setup --global --ide cursor -y` |
66
- | `install-recommended` | `npx kenmark-skills install-recommended` | `npx kenmark-skills install-recommended --ids impeccable,ecc --global -y` |
67
+ | `install-recommended` | `npx kenmark-skills install-recommended` | `npx kenmark-skills install-recommended --ids impeccable --global -y` |
67
68
  | `update` | `npx kenmark-skills update` | `npx kenmark-skills update --both --global -y` |
68
69
  | `adopt` | `npx kenmark-skills adopt` | `npx kenmark-skills adopt --global --ide all -y` |
69
70
  | `inventory` | `npx kenmark-skills inventory` | `npx kenmark-skills inventory --markdown ./report.md -y` |
71
+ | `subagents-inventory` | `npx kenmark-skills subagents-inventory` | `npx kenmark-skills subagents-inventory --markdown ./agents.md --include-marketplaces -y` |
70
72
 
71
73
  ### Option A — Global npm install (recommended)
72
74
 
@@ -79,12 +81,12 @@ npx kenmark-skills init
79
81
 
80
82
  ### Kenmark skill hub (`~/.kenmark`)
81
83
 
82
- Kenmark first-party skills and **curated catalog** skills (Impeccable, ECC skill folders) are stored once under:
84
+ Kenmark first-party skills and **curated catalog** skills (Impeccable, ECC, Graphify, code review, SEO/GEO, and more) are stored once under:
83
85
 
84
86
  - **Store:** `~/.kenmark/store/skills/<name>/`
85
87
  - **Manifest:** `~/.kenmark/manifest.json`
86
88
 
87
- `setup` copies bundled skills into the store, then **symlinks** (or copies on Windows when symlinks are unavailable) into each IDE path. **`update`** refreshes the store and runs **`adopt`** by default to consolidate catalog skills into the store and relink IDEs. **Adopt** includes Kenmark bundled skills, Impeccable, and ECC skills listed in the ECC install profile (`--ecc-profile`, default `core`) not arbitrary third-party trees such as gstack mirrors.
89
+ `setup` copies bundled skills into the store, then **symlinks** (or copies on Windows when symlinks are unavailable) into each IDE path. **`update`** refreshes the store and runs **`adopt`** by default to consolidate catalog skills into the store and relink IDEs. **Adopt** includes Kenmark bundled skills and adoptable catalog packs (Impeccable, ECC, and more) when present on disk.
88
90
 
89
91
  | Flag | Purpose |
90
92
  | --- | --- |
@@ -157,18 +159,30 @@ npx kenmark-skills inventory --markdown ~/Desktop/skills-report.md --json ~/Desk
157
159
  npx kenmark-skills inventory --include-plugins
158
160
  ```
159
161
 
160
- Install curated packs from [`recommended-catalog.json`](skills/user-skills/recommended-catalog.json) via **npx** (no git clone). Default is **global** install; use **project** for the current repo only.
162
+ ### Sub-agents inventory
163
+
164
+ Scan installed sub-agents (Claude, Cursor, Codex, Gemini, OpenCode, MiniMax) and get a keep / dedupe / remove report. Same output layout as the skills inventory, but walks `agents/` directories and reads YAML frontmatter (`name`, `description`, `tools`, `model`).
165
+
166
+ ```bash
167
+ npx kenmark-skills subagents-inventory
168
+ npx kenmark-skills subagents-inventory --markdown ~/Desktop/subagents-report.md --json ~/Desktop/subagents-inventory.json
169
+ npx kenmark-skills subagents-inventory --include-marketplaces
170
+ ```
171
+
172
+ For guided chat cleanup (no auto-delete), use the **`subagents-maintain`** skill — it pairs with **`skills-maintain`** for the full library audit.
173
+
174
+ Install curated packs from [`recommended-catalog.json`](skills/user-skills/recommended-catalog.json) — Impeccable, ECC, Graphify, code review, SEO/GEO, and more. Install methods vary by pack: npx, git clone, uv/pipx, or `npx ecc-install` with a profile. Default is **global** install; use **project** for the current repo only.
161
175
 
162
176
  ```bash
163
177
  npx kenmark-skills install-recommended --list
164
178
 
165
- # Interactive: scope → packs → ECC profile
179
+ # Interactive: scope → packs
166
180
  npx kenmark-skills install-recommended
167
181
 
168
182
  # Non-interactive
169
183
  npx kenmark-skills install-recommended --all --global -y
170
184
  npx kenmark-skills install-recommended --all --project -y
171
- npx kenmark-skills install-recommended --ids impeccable,ecc --global --ecc-profile core -y
185
+ npx kenmark-skills install-recommended --ids impeccable --global -y
172
186
  npx kenmark-skills install-recommended --dry-run --all --project
173
187
  ```
174
188
 
@@ -184,7 +198,7 @@ npx kenmark-skills update
184
198
  # Non-interactive
185
199
  npx kenmark-skills update --both --global -y
186
200
  npx kenmark-skills update --kenmark-only --global --ide all -y
187
- npx kenmark-skills update --recommended-only --global --ids impeccable,ecc -y
201
+ npx kenmark-skills update --recommended-only --global --ids impeccable -y
188
202
  npx kenmark-skills update --npm-only -y
189
203
  ```
190
204
 
@@ -297,6 +311,7 @@ kenmark-skills/
297
311
  ├── issues-*/
298
312
  ├── skills-maintain/
299
313
  ├── skills-install-recommended/
314
+ ├── subagents-maintain/
300
315
  └── recommended-catalog.json
301
316
  ```
302
317
 
@@ -1,5 +1,22 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.1.4 — Multi-pack recommended catalog
4
+
5
+ - **recommended-catalog.json (v3):** Catalog expanded from 1 to 5 packs: `impeccable` (default), `ecc` (minimal/core/full profiles, default `minimal`), `graphify` (Python via uv/pipx), `code-review-skill` (git clone), `seo-geo-claude-skills` (npx). Dropped `defaults.eccProfile`; the profile now lives on the `ecc` pack itself.
6
+ - **scripts/skills-install-recommended.js:** Reused existing `id === "ecc"` special-casing to wire up the ECC profile prompt and `{{profile}}` placeholder substitution. CLI now accepts `--ecc-profile minimal|core|full` (e.g. `npx kenmark-skills install-recommended --ids ecc --ecc-profile minimal --global -y`).
7
+ - **skills-install-recommended, skills-init, skills-update, README:** Docs and examples updated to reflect the multi-pack catalog. The "ECC, gstack not in this catalog" note is gone; the Impeccable-only pack table now lists all 5 packs with their install methods.
8
+ - **Removed:** `compound-engineering` pack entry (replaced by `ecc` as the preferred harness pack).
9
+
10
+ ## v1.1.3 — Impeccable-only recommended catalog
11
+
12
+ - **recommended-catalog.json (v3):** Removed `ecc` and `gstack` packs; only **Impeccable** remains (`defaultSelected: true`). Dropped `defaults.eccProfile`.
13
+ - **skills-install-recommended, skills-init, skills-update, README:** Docs and examples updated for Impeccable-only curated installs. ECC/gstack can still be installed separately outside the catalog.
14
+
15
+ ## v1.1.2 — gstack in recommended catalog
16
+
17
+ - **recommended-catalog.json:** Added [gstack](https://github.com/garrytan/gstack) pack (`id: gstack`) with global `git clone` + `./setup` and project team-mode via `gstack-team-init optional`; `defaultSelected: false`.
18
+ - **skills-install-recommended:** Documented gstack install commands, requirements (Git, Bun), and overlap note with ECC.
19
+
3
20
  ## v1.1.1 — ECC adopt scope fix
4
21
 
5
22
  - **`kenmark-hub.js`:** ECC adopt names come from ECC `install-profiles.json` / `install-modules.json` (profile from catalog, default `core`), not every skill under `~/.claude/skills`. Optional pack-level `adoptSkillNames` override in `recommended-catalog.json`.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "kenmark-skills",
3
- "version": "1.1.1",
3
+ "version": "1.1.4",
4
4
  "description": "Skills by Kenmark ITan Solutions — Cursor/Codex agent skills from our development workflows. Created by Tanooj Mehra & Adwait Date.",
5
5
  "license": "MIT",
6
6
  "private": false,
@@ -19,6 +19,7 @@
19
19
  "scripts/skills-inventory.js",
20
20
  "scripts/skills-install-recommended.js",
21
21
  "scripts/skills-update.js",
22
+ "scripts/subagents-inventory.js",
22
23
  "skills/user-skills/recommended-catalog.json"
23
24
  ],
24
25
  "scripts": {
@@ -26,6 +27,7 @@
26
27
  "setup": "node scripts/cli.js setup",
27
28
  "uninstall:skills": "node scripts/cli.js uninstall",
28
29
  "inventory": "node scripts/cli.js inventory",
30
+ "subagents-inventory": "node scripts/cli.js subagents-inventory",
29
31
  "install-recommended": "node scripts/cli.js install-recommended",
30
32
  "update": "node scripts/cli.js update",
31
33
  "setup:skills": "node scripts/setup-skills.js",
package/scripts/cli.js CHANGED
@@ -16,6 +16,7 @@ function printUsage() {
16
16
  console.log(" kenmark-skills setup [--global|--project] [--ide <target>] [-y]");
17
17
  console.log(" kenmark-skills uninstall [--global|--project] [--ide <target>] [-y]");
18
18
  console.log(" kenmark-skills inventory [--json path] [--markdown path] [--include-plugins]");
19
+ console.log(" kenmark-skills subagents-inventory [--json path] [--markdown path] [--include-plugins] [--include-marketplaces]");
19
20
  console.log(" kenmark-skills install-recommended [--list] [--all] [--ids a,b] [--global|--project] [-y]");
20
21
  console.log(" kenmark-skills update [--kenmark-only|--recommended-only|--both] [--global|--project] [-y]");
21
22
  console.log(" kenmark-skills adopt [--global|--project] [--ide <target>] [--dry-run] [-y]");
@@ -67,6 +68,14 @@ if (command === "inventory") {
67
68
  process.exit(result.status === null ? 1 : result.status);
68
69
  }
69
70
 
71
+ if (command === "subagents-inventory" || command === "agents-inventory") {
72
+ const scriptPath = path.join(__dirname, "subagents-inventory.js");
73
+ const result = spawnSync(process.execPath, [scriptPath, ...args.slice(1)], {
74
+ stdio: "inherit"
75
+ });
76
+ process.exit(result.status === null ? 1 : result.status);
77
+ }
78
+
70
79
  if (command === "install-recommended") {
71
80
  const scriptPath = path.join(__dirname, "skills-install-recommended.js");
72
81
  const result = spawnSync(process.execPath, [scriptPath, ...args.slice(1)], {
@@ -18,7 +18,23 @@ const VENDORED_PREFIXES = [
18
18
  "plugins/cache/"
19
19
  ];
20
20
 
21
+ const AGENT_VENDORED_PREFIXES = [
22
+ "gstack/",
23
+ ".cursor/agents/gstack",
24
+ ".factory/agents/gstack",
25
+ ".agents/agents/gstack",
26
+ ".gbrain/agents/gstack",
27
+ ".hermes/agents/gstack",
28
+ ".kiro/agents/gstack",
29
+ ".openclaw/agents/gstack",
30
+ ".opencode/agents/gstack",
31
+ ".slate/agents/gstack",
32
+ "plugins/cache/",
33
+ "plugins/marketplaces/"
34
+ ];
35
+
21
36
  const IDE_SCAN_PRIORITY = ["agents", "cursor", "claude", "gemini", "codex", "opencode", "minimax"];
37
+ const AGENT_IDE_SCAN_PRIORITY = ["claude", "cursor", "agents", "gemini", "codex", "opencode", "minimax"];
22
38
 
23
39
  function getKenmarkHome() {
24
40
  return path.join(os.homedir(), ".kenmark");
@@ -28,10 +44,18 @@ function getStoreDir() {
28
44
  return path.join(getKenmarkHome(), "store", "skills");
29
45
  }
30
46
 
47
+ function getAgentStoreDir() {
48
+ return path.join(getKenmarkHome(), "store", "agents");
49
+ }
50
+
31
51
  function getManifestPath() {
32
52
  return path.join(getKenmarkHome(), "manifest.json");
33
53
  }
34
54
 
55
+ function getAgentManifestPath() {
56
+ return path.join(getKenmarkHome(), "agent-manifest.json");
57
+ }
58
+
35
59
  function buildGlobalTargets(homeDir = os.homedir()) {
36
60
  return {
37
61
  cursor: path.join(homeDir, ".cursor", "skills"),
@@ -77,11 +101,29 @@ function buildInventoryRoots(homeDir = os.homedir()) {
77
101
  ];
78
102
  }
79
103
 
104
+ function buildAgentInventoryRoots(homeDir = os.homedir()) {
105
+ return [
106
+ { id: "kenmark-store", path: path.join(homeDir, ".kenmark", "store", "agents") },
107
+ { id: "claude", path: path.join(homeDir, ".claude", "agents") },
108
+ { id: "cursor", path: path.join(homeDir, ".cursor", "agents") },
109
+ { id: "agents", path: path.join(homeDir, ".agents", "agents") },
110
+ { id: "gemini", path: path.join(homeDir, ".gemini", "agents") },
111
+ { id: "codex", path: path.join(homeDir, ".codex", "agents") },
112
+ { id: "opencode", path: path.join(homeDir, ".opencode", "agents") },
113
+ { id: "minimax", path: path.join(homeDir, ".minimax", "agents") }
114
+ ];
115
+ }
116
+
80
117
  function isVendoredMirror(relativePath) {
81
118
  const norm = String(relativePath || "").replace(/\\/g, "/");
82
119
  return VENDORED_PREFIXES.some((prefix) => norm.includes(prefix));
83
120
  }
84
121
 
122
+ function isVendoredAgent(relativePath) {
123
+ const norm = String(relativePath || "").replace(/\\/g, "/");
124
+ return AGENT_VENDORED_PREFIXES.some((prefix) => norm.includes(prefix));
125
+ }
126
+
85
127
  function safeRealpath(p) {
86
128
  try {
87
129
  return fs.realpathSync(p);
@@ -588,13 +630,19 @@ function uninstallKenmarkFromIdes(skillNames, targetMap, { keepStore = true, dry
588
630
 
589
631
  module.exports = {
590
632
  VENDORED_PREFIXES,
633
+ AGENT_VENDORED_PREFIXES,
634
+ AGENT_IDE_SCAN_PRIORITY,
591
635
  getKenmarkHome,
592
636
  getStoreDir,
637
+ getAgentStoreDir,
593
638
  getManifestPath,
639
+ getAgentManifestPath,
594
640
  buildGlobalTargets,
595
641
  buildProjectTargets,
596
642
  buildInventoryRoots,
643
+ buildAgentInventoryRoots,
597
644
  isVendoredMirror,
645
+ isVendoredAgent,
598
646
  safeRealpath,
599
647
  readManifest,
600
648
  writeManifest,