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 +24 -9
- package/brain/CHANGELOG.md +17 -0
- package/package.json +3 -1
- package/scripts/cli.js +9 -0
- package/scripts/kenmark-hub.js +48 -0
- package/scripts/subagents-inventory.js +580 -0
- package/skills/user-skills/recommended-catalog.json +117 -40
- package/skills/user-skills/skills-init/SKILL.md +1 -1
- package/skills/user-skills/skills-install-recommended/SKILL.md +28 -28
- package/skills/user-skills/skills-update/SKILL.md +4 -7
- package/skills/user-skills/subagents-maintain/SKILL.md +127 -0
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
package/brain/CHANGELOG.md
CHANGED
|
@@ -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.
|
|
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)], {
|
package/scripts/kenmark-hub.js
CHANGED
|
@@ -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,
|