skillship 1.0.0 → 1.0.2
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 +53 -2
- package/package.json +6 -1
- package/skillship/SKILL.md +106 -0
package/README.md
CHANGED
|
@@ -16,11 +16,29 @@ registry. It adds the three things the ecosystem is missing:
|
|
|
16
16
|
|
|
17
17
|
## Install / usage
|
|
18
18
|
|
|
19
|
+
Both commands below use `npx`, which ships with [Node.js](https://nodejs.org)
|
|
20
|
+
(>= 18). If `npx` is not found, install Node.js first — e.g. download the LTS
|
|
21
|
+
installer from [nodejs.org](https://nodejs.org), or use a version manager
|
|
22
|
+
(`brew install node`, `nvm install --lts`, `winget install OpenJS.NodeJS.LTS`).
|
|
23
|
+
Verify with `node -v` and `npx -v`.
|
|
24
|
+
|
|
25
|
+
**Recommended:** install the bundled `/skillship` Agent Skill straight from
|
|
26
|
+
GitHub. It drives the CLI for you — invoke `/skillship` (or ask to publish a
|
|
27
|
+
skill) and the agent locates/scaffolds a `SKILL.md`, validates it, fixes issues,
|
|
28
|
+
and installs or packages it for the chosen surface:
|
|
29
|
+
|
|
19
30
|
```bash
|
|
20
|
-
npx skillship
|
|
31
|
+
npx skills add shivdeepak/skillship
|
|
21
32
|
```
|
|
22
33
|
|
|
23
|
-
|
|
34
|
+
Add `-a <agent>` (e.g. `-a cursor`, repeatable) to target specific agents, or
|
|
35
|
+
`-g` to install globally.
|
|
36
|
+
|
|
37
|
+
Or run the CLI directly with `npx` (requires Node.js >= 18):
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
npx skillship <command>
|
|
41
|
+
```
|
|
24
42
|
|
|
25
43
|
## Commands
|
|
26
44
|
|
|
@@ -148,9 +166,42 @@ src/
|
|
|
148
166
|
lib/exec.ts # spawn wrappers for npx skills / gh / agentskills
|
|
149
167
|
lib/load.ts # SKILL.md loader
|
|
150
168
|
templates/ # CI + snippet + AGENTS/README/SKILL templates for init
|
|
169
|
+
skillship/ # bundled Agent Skill (the /skillship skill)
|
|
151
170
|
test/ # vitest specs + fixtures
|
|
152
171
|
```
|
|
153
172
|
|
|
173
|
+
## Releases
|
|
174
|
+
|
|
175
|
+
Releases are automated via
|
|
176
|
+
[release-please](https://github.com/googleapis/release-please-action) +
|
|
177
|
+
[Conventional Commits](https://www.conventionalcommits.org/). On every push to
|
|
178
|
+
`main`, release-please opens/updates a release PR that bumps the version in
|
|
179
|
+
`package.json` and the `CHANGELOG.md` based on the commits since the last
|
|
180
|
+
release (`feat:` -> minor, `fix:`/`perf:` -> patch, `feat!:`/`BREAKING CHANGE`
|
|
181
|
+
-> major). Merging that PR tags the release and triggers `npm publish` from
|
|
182
|
+
`.github/workflows/release.yml`. `chore:`/`ci:` commits do not trigger a
|
|
183
|
+
release.
|
|
184
|
+
|
|
185
|
+
Publishing uses **npm trusted publishing (OIDC)** — no `NPM_TOKEN` secret. The
|
|
186
|
+
workflow requests a short-lived OIDC token (`id-token: write`) that npm verifies
|
|
187
|
+
against the trusted-publisher config; provenance attestations are generated
|
|
188
|
+
automatically.
|
|
189
|
+
|
|
190
|
+
`.github/workflows/ci.yml` runs lint + test + build on every push and PR.
|
|
191
|
+
|
|
192
|
+
One-time setup:
|
|
193
|
+
|
|
194
|
+
1. Enable **Settings -> Actions -> General -> Workflow permissions**: "Read and
|
|
195
|
+
write" and "Allow GitHub Actions to create and approve pull requests" so
|
|
196
|
+
release-please can open release PRs.
|
|
197
|
+
2. Publish `1.0.0` once manually (`npm publish --access public`) — trusted
|
|
198
|
+
publishing can only be configured for a package that already exists.
|
|
199
|
+
3. On npmjs.com, open the package's **Access** page and add a **Trusted
|
|
200
|
+
Publisher** for GitHub Actions, matching repo `shivdeepak/skillship` and
|
|
201
|
+
workflow file `release.yml` exactly. After that, every release publishes
|
|
202
|
+
tokenlessly. Optionally set the package to "require 2FA and disallow tokens"
|
|
203
|
+
so only the workflow can publish.
|
|
204
|
+
|
|
154
205
|
## License
|
|
155
206
|
|
|
156
207
|
MIT
|
package/package.json
CHANGED
|
@@ -1,14 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillship",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Make any Agent Skill (SKILL.md) portable across Cursor, Claude Code, Claude Web, and Claude Cowork.",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/shivdeepak/skillship.git"
|
|
9
|
+
},
|
|
6
10
|
"bin": {
|
|
7
11
|
"skillship": "dist/cli.js"
|
|
8
12
|
},
|
|
9
13
|
"files": [
|
|
10
14
|
"dist",
|
|
11
15
|
"templates",
|
|
16
|
+
"skillship",
|
|
12
17
|
"README.md"
|
|
13
18
|
],
|
|
14
19
|
"engines": {
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skillship
|
|
3
|
+
description: Turn a project into a publishable Agent Skill via the skillship CLI. Use to scaffold, validate, package, install, or publish a SKILL.md for Cursor, Claude Code, Claude Web, or Cowork, or on /skillship
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# skillship
|
|
7
|
+
|
|
8
|
+
Drive the `skillship` CLI to convert the user's project into a portable Agent
|
|
9
|
+
Skill and publish it. Run the CLI for the user; do not ask them to run commands
|
|
10
|
+
manually.
|
|
11
|
+
|
|
12
|
+
## Workflow
|
|
13
|
+
|
|
14
|
+
Copy this checklist and track progress:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
- [ ] 1. Locate or create the SKILL.md
|
|
18
|
+
- [ ] 2. Validate (skillship validate)
|
|
19
|
+
- [ ] 3. Fix any reported issues, re-validate until clean
|
|
20
|
+
- [ ] 4. Confirm publish target with the user
|
|
21
|
+
- [ ] 5. Install (filesystem) or package (Claude upload)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Step 1 — Locate or create the SKILL.md
|
|
25
|
+
|
|
26
|
+
A skill is a directory containing a `SKILL.md`. Find one in the project (search
|
|
27
|
+
for `SKILL.md`). Determine `<dir>` = the folder that directly contains it.
|
|
28
|
+
|
|
29
|
+
- **Already exists** → use it.
|
|
30
|
+
- **Does not exist** → scaffold one:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npx skillship init <name> --ci --snippets
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Then author the `SKILL.md` body following the `create-skill` skill's rules
|
|
37
|
+
(third-person `description`, both WHAT and WHEN, under 500 lines). The skill
|
|
38
|
+
`name` must be lowercase letters/numbers/hyphens and match the parent folder.
|
|
39
|
+
|
|
40
|
+
### Step 2 — Validate
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
npx skillship validate <dir> --profile all
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`--profile all` is the strictest (Claude's 200-char description cap). Use
|
|
47
|
+
`--json` if you need to parse results programmatically.
|
|
48
|
+
|
|
49
|
+
### Step 3 — Fix and re-validate
|
|
50
|
+
|
|
51
|
+
Read each failure, edit the `SKILL.md`, and re-run validate until it exits 0.
|
|
52
|
+
Common failures: description over 200 chars, `name` not matching the folder,
|
|
53
|
+
`<`/`>` characters in the description, body over 500 lines (warning only).
|
|
54
|
+
|
|
55
|
+
### Step 4 — Confirm the publish target
|
|
56
|
+
|
|
57
|
+
Ask the user where to publish (use AskQuestion). Targets:
|
|
58
|
+
|
|
59
|
+
| Target | Mechanism |
|
|
60
|
+
| --- | --- |
|
|
61
|
+
| `cursor`, `claude-code` | Filesystem install |
|
|
62
|
+
| `claude-web`, `claude-cowork` | Upload-only `.skill` zip |
|
|
63
|
+
|
|
64
|
+
### Step 5 — Install or package
|
|
65
|
+
|
|
66
|
+
**Filesystem agents** (e.g. Cursor, Claude Code) — install with the `npx skills`
|
|
67
|
+
convention that skillship wraps:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
npx skillship install <dir> -a cursor,claude-code
|
|
71
|
+
# equivalently: npx skills add <dir> -a cursor,claude-code
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Add `--global` to install for all projects, `--copy` to copy instead of
|
|
75
|
+
symlink.
|
|
76
|
+
|
|
77
|
+
**Upload-only surfaces** (e.g. Claude Web / Cowork):
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx skillship package <dir> # -> dist/<name>.skill
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Then tell the user to upload `dist/<name>.skill`:
|
|
84
|
+
- Claude Web: Settings → Capabilities → Upload skill → enable toggle.
|
|
85
|
+
- Claude Cowork: Customize → Skills → Upload (desktop app only).
|
|
86
|
+
|
|
87
|
+
## Publishing via CI (optional)
|
|
88
|
+
|
|
89
|
+
If the skill repo was created with `init --ci`, it auto-releases via
|
|
90
|
+
release-please + Conventional Commits. After pushing, tell the user to enable
|
|
91
|
+
**Settings → Actions → Workflow permissions**: "Read and write" and "Allow
|
|
92
|
+
GitHub Actions to create and approve pull requests" so release-please can open
|
|
93
|
+
release PRs and attach the `.skill` asset.
|
|
94
|
+
|
|
95
|
+
## Invoking the CLI
|
|
96
|
+
|
|
97
|
+
Prefer `npx skillship <command>`. If `npx skillship` cannot resolve the package
|
|
98
|
+
(not published / offline), run it from a local checkout instead:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm run build # in the skillship repo, produces dist/cli.js
|
|
102
|
+
node dist/cli.js <command>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Run `npx skillship doctor` to verify the environment (Node >= 18, npx; optional
|
|
106
|
+
gh and agentskills).
|