ccski 1.1.0 → 2.1.0
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/LICENSE +21 -0
- package/README.md +51 -92
- package/dist/chunk-B7onSSqq.mjs +34 -0
- package/dist/cli.mjs +1648 -3551
- package/dist/cli.mjs.map +1 -1
- package/dist/create-prompt-CkW5qmPT.mjs +3107 -0
- package/dist/create-prompt-CkW5qmPT.mjs.map +1 -0
- package/dist/esm-X74pBEPN.mjs +47 -0
- package/dist/esm-X74pBEPN.mjs.map +1 -0
- package/dist/index.d.mts +132 -56
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +2 -2
- package/dist/{registry-DtGaEhsM.mjs → registry-DNMfmLqa.mjs} +388 -142
- package/dist/registry-DNMfmLqa.mjs.map +1 -0
- package/package.json +18 -4
- package/dist/registry-DtGaEhsM.mjs.map +0 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 jixoai-labs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,22 +1,32 @@
|
|
|
1
1
|
# ccski – Claude Code Skills Manager
|
|
2
2
|
|
|
3
|
-
ccski is a CLI + MCP server
|
|
3
|
+
ccski is a CLI + MCP server to discover, install, enable/disable, and serve Claude Code-compatible skills. This README covers install and usage. For architecture and UX philosophy, see `SPEC.md`.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Install
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
- **Who it’s for**: humans running CLI workflows and agents connecting over MCP.
|
|
7
|
+
Requires Node.js >= 20.
|
|
9
8
|
|
|
10
|
-
|
|
9
|
+
```bash
|
|
10
|
+
# run directly
|
|
11
|
+
npx ccski --help
|
|
12
|
+
|
|
13
|
+
# or install locally
|
|
14
|
+
pnpm install ccski
|
|
15
|
+
ccski --help
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Quick start
|
|
19
|
+
|
|
20
|
+
### Run MCP server
|
|
11
21
|
|
|
12
22
|
```bash
|
|
13
23
|
npx ccski mcp
|
|
14
24
|
```
|
|
15
25
|
|
|
16
|
-
|
|
26
|
+
- Add extra skill roots: `npx ccski mcp --skill-dir /extra/skills`
|
|
27
|
+
- Disable auto refresh: `npx ccski mcp --no-refresh`
|
|
17
28
|
|
|
18
|
-
|
|
19
|
-
- **Cursor / Windsurf / VS Code MCP plugins** (config excerpt):
|
|
29
|
+
MCP plugin config example (Codex/Cursor/Windsurf/VS Code):
|
|
20
30
|
|
|
21
31
|
```json
|
|
22
32
|
{
|
|
@@ -29,100 +39,49 @@ Common MCP registrations:
|
|
|
29
39
|
}
|
|
30
40
|
```
|
|
31
41
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
## 2) Core CLI surface (human-friendly)
|
|
35
|
-
|
|
36
|
-
| Command | Purpose |
|
|
37
|
-
| ------------------------------------------- | ---------------------------------------------------------------------------------------- |
|
|
38
|
-
| `ccski list` | Show discovered skills (projects, home, plugin marketplace) with status badges |
|
|
39
|
-
| `ccski info <name>` | Inspect metadata and preview content |
|
|
40
|
-
| `ccski install <source> [-i\|--all\|--path]` | Install skills from git/dir/marketplace; interactive picker shows final one-shot command |
|
|
41
|
-
| `ccski enable [names...] [-i\|--all]` | Restore `.SKILL.md` → `SKILL.md`; interactive defaults **unchecked** |
|
|
42
|
-
| `ccski disable [names...] [-i\|--all]` | Disable skills by flipping to `.SKILL.md` |
|
|
43
|
-
| `ccski mcp` | Start MCP server (stdio/http/sse) |
|
|
44
|
-
| `ccski validate <path>` | Validate SKILL.md or directory structure |
|
|
42
|
+
### Core CLI commands
|
|
45
43
|
|
|
46
|
-
|
|
44
|
+
| Command | Purpose |
|
|
45
|
+
| --- | --- |
|
|
46
|
+
| `ccski list` | List discovered skills (project, user, plugin) |
|
|
47
|
+
| `ccski info <name>` | Show metadata and content preview |
|
|
48
|
+
| `ccski install <source> [-i|--all|--path]` | Install from git/dir/marketplace/SKILL.md; interactive picker available |
|
|
49
|
+
| `ccski enable [names...] [-i|--all]` | Enable skills (`.SKILL.md` -> `SKILL.md`) |
|
|
50
|
+
| `ccski disable [names...] [-i|--all]` | Disable skills (`SKILL.md` -> `.SKILL.md`) |
|
|
51
|
+
| `ccski validate <path>` | Validate SKILL.md or skill directory |
|
|
52
|
+
| `ccski mcp` | Start MCP server (stdio/http/sse) |
|
|
47
53
|
|
|
48
|
-
### Install
|
|
54
|
+
### Install examples
|
|
49
55
|
|
|
50
|
-
-
|
|
51
|
-
- **Granular selection**: `-i/--interactive` to pick; `--all`; positional filters for fuzzy name matching.
|
|
52
|
-
- **Where it lands**: project `.claude/skills` by default, or `--global` to `~/.claude/skills`.
|
|
53
|
-
- **Force/overwrite**: `--force`/`--override` to replace existing skill folder.
|
|
54
|
-
|
|
55
|
-
#### Examples
|
|
56
|
-
|
|
57
|
-
- Repo root(default branch, auto-detect marketplace)
|
|
56
|
+
- Git repo (auto-detect marketplace):
|
|
58
57
|
`ccski install https://github.com/wshobson/agents`
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
`ccski install https://github.com/wshobson/agents/
|
|
62
|
-
|
|
63
|
-
- Specific file inside repo (auto clone, blob path)
|
|
64
|
-
`ccski install https://github.com/wshobson/agents/blob/main/.claude-plugin/marketplace.json`
|
|
65
|
-
|
|
66
|
-
- Local directory (no git)
|
|
58
|
+
- Specific branch or path:
|
|
59
|
+
`ccski install https://github.com/wshobson/agents/tree/main --branch main`
|
|
60
|
+
`ccski install https://github.com/wshobson/agents --path skills/foo/SKILL.md`
|
|
61
|
+
- Local directory or single file:
|
|
67
62
|
`ccski install /path/to/skills --mode file`
|
|
68
|
-
|
|
69
|
-
- Direct SKILL.md
|
|
70
63
|
`ccski install ./plugins/foo/SKILL.md`
|
|
64
|
+
- Overwrite existing skill: add `--force` (or `--override`).
|
|
71
65
|
|
|
72
|
-
###
|
|
73
|
-
|
|
74
|
-
- **Install target**: ccski copies **SKILL.md skills** into `.claude/skills`; `claude plugin install` pulls a **Claude plugin package** (commands + metadata) into the Claude app. Two different ecosystems.
|
|
75
|
-
- **Sources**: ccski supports git / local dir / marketplace.json / direct SKILL.md. Claude plugins come from the Claude plugin directory/store.
|
|
76
|
-
- **Flexibility**: ~ccski can mix many repos (including private git) and expose them via MCP; Claude plugin installs can’t be combined this way.~
|
|
66
|
+
### Enable/disable
|
|
77
67
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
- **universal-skills** — offers a curated, ready-to-use skill set; ccski focuses on management and transport, not bundling content.
|
|
82
|
-
|
|
83
|
-
Key differences and what we fused:
|
|
84
|
-
- We blend **universal-skills’ MCP-first philosophy** with **openskills’ CLI ergonomics** so the same tool serves both agents and humans.
|
|
85
|
-
- ccski uniquely **scans skills shipped inside Claude Code plugins**, which universal-skills and openskills don’t cover.
|
|
86
|
-
- The `install` command accepts flexible sources (git URLs, marketplace, SKILL.md paths) and `-i` provides an interactive picker with a live one-shot command preview.
|
|
87
|
-
|
|
88
|
-
Bottom line: ccski is a manager/server (no baked-in corpus), MCP-first, multi-root-aware, with a friendlier install/enable/disable workflow.
|
|
89
|
-
|
|
90
|
-
## 4) Contributing & architecture at a glance
|
|
91
|
-
|
|
92
|
-
### Fast start
|
|
93
|
-
|
|
94
|
-
- `pnpm install`
|
|
95
|
-
- `pnpm test` (Vitest)
|
|
96
|
-
- `pnpm ts` (type-check)
|
|
97
|
-
- `pnpm build` (tsdown)
|
|
98
|
-
|
|
99
|
-
### Architecture map
|
|
100
|
-
|
|
101
|
-
- Entry: `src/cli.ts` (yargs CLI, shared color flags)
|
|
102
|
-
- Commands: `src/cli/commands/*.ts`
|
|
103
|
-
- Interactive UI: `src/cli/prompts/multiSelect.ts` (shared checkbox with live command preview)
|
|
104
|
-
- Formatting: `src/utils/format.ts` (tone helpers; avoid ad-hoc colors)
|
|
105
|
-
- Skill core: `src/core/*` (discovery, registry, parsing)
|
|
106
|
-
- Tests: `tests/*.test.ts` (Vitest + bun runtime for CLI e2e)
|
|
107
|
-
|
|
108
|
-
Suggested reading order: `src/utils/format.ts` → `src/cli/prompts/multiSelect.ts` → command files (install, toggle) → `src/core/registry.ts`.
|
|
68
|
+
```bash
|
|
69
|
+
# Enable via interactive picker
|
|
70
|
+
ccski enable -i
|
|
109
71
|
|
|
110
|
-
|
|
72
|
+
# Disable all enabled skills
|
|
73
|
+
ccski disable --all
|
|
74
|
+
```
|
|
111
75
|
|
|
112
|
-
|
|
113
|
-
- Keep CLI colors via `tone/heading/warn/info/success/error`; don’t hardcode colorette directly.
|
|
114
|
-
- Prefer small files (<200 lines) or refactor into folders when complexity grows.
|
|
115
|
-
- Tests: Vitest with jsdom where needed; integration tests exercise CLI via bun runner.
|
|
116
|
-
- Package manager: pnpm; scripts live in `package.json`.
|
|
76
|
+
## More
|
|
117
77
|
|
|
118
|
-
|
|
78
|
+
- Claude users: prefer `ccski mcp --exclude=claude` to avoid echoing built-in Claude skills.
|
|
79
|
+
- Codex users: prefer `ccski mcp --exclude=codex` when avoid echoing built-in Codex skills.
|
|
80
|
+
- All commands support `--json` for scripting.
|
|
81
|
+
- Use `--no-color` to disable colors or `--color` to force them.
|
|
82
|
+
- Read `SPEC.md` for deep technical details and design philosophy.
|
|
119
83
|
|
|
120
|
-
|
|
121
|
-
pnpm install # deps
|
|
122
|
-
pnpm test # full test suite
|
|
123
|
-
pnpm ts # type check
|
|
124
|
-
pnpm build # bundle with tsdown
|
|
125
|
-
pnpm fmt # prettier + organize imports + tailwind plugin
|
|
126
|
-
```
|
|
84
|
+
## Acknowledgements
|
|
127
85
|
|
|
128
|
-
|
|
86
|
+
- [openskills](https://github.com/numman-ali/openskills) — established the SKILL.md authoring pattern; ccski aligns with that spec.
|
|
87
|
+
- [universal-skills](https://github.com/klaudworks/universal-skills) — MCP-first skill set; ccski focuses on management, not bundling content.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
|
|
3
|
+
//#region rolldown:runtime
|
|
4
|
+
var __create = Object.create;
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
7
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
8
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
9
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
10
|
+
var __commonJS = (cb, mod) => function() {
|
|
11
|
+
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
16
|
+
key = keys[i];
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
18
|
+
__defProp(to, key, {
|
|
19
|
+
get: ((k) => from[k]).bind(null, key),
|
|
20
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return to;
|
|
26
|
+
};
|
|
27
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: true
|
|
30
|
+
}) : target, mod));
|
|
31
|
+
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
32
|
+
|
|
33
|
+
//#endregion
|
|
34
|
+
export { __require as n, __toESM as r, __commonJS as t };
|