skillship 1.0.0 → 1.0.1

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
@@ -127,6 +127,21 @@ metadata:
127
127
  Checks the local environment: Node >= 18 and `npx` (required), plus `gh` and
128
128
  `agentskills` (optional).
129
129
 
130
+ ## Bundled skill (`/skillship`)
131
+
132
+ skillship ships with its own Agent Skill at `skillship/SKILL.md`. Installed into
133
+ any agent, it drives the CLI for you: invoke `/skillship` (or ask to publish a
134
+ skill) and the agent locates/scaffolds the `SKILL.md`, validates it, fixes
135
+ issues, and installs or packages it for the chosen surface.
136
+
137
+ Install it like any other skill, into whichever agents you use:
138
+
139
+ ```bash
140
+ npx skills add ./skillship -a cursor,claude-code [--global]
141
+ # or, dogfooding skillship itself:
142
+ npx skillship install ./skillship -a cursor,claude-code
143
+ ```
144
+
130
145
  ## Development
131
146
 
132
147
  ```bash
@@ -148,9 +163,42 @@ src/
148
163
  lib/exec.ts # spawn wrappers for npx skills / gh / agentskills
149
164
  lib/load.ts # SKILL.md loader
150
165
  templates/ # CI + snippet + AGENTS/README/SKILL templates for init
166
+ skillship/ # bundled Agent Skill (the /skillship skill)
151
167
  test/ # vitest specs + fixtures
152
168
  ```
153
169
 
170
+ ## Releases
171
+
172
+ Releases are automated via
173
+ [release-please](https://github.com/googleapis/release-please-action) +
174
+ [Conventional Commits](https://www.conventionalcommits.org/). On every push to
175
+ `main`, release-please opens/updates a release PR that bumps the version in
176
+ `package.json` and the `CHANGELOG.md` based on the commits since the last
177
+ release (`feat:` -> minor, `fix:`/`perf:` -> patch, `feat!:`/`BREAKING CHANGE`
178
+ -> major). Merging that PR tags the release and triggers `npm publish` from
179
+ `.github/workflows/release.yml`. `chore:`/`ci:` commits do not trigger a
180
+ release.
181
+
182
+ Publishing uses **npm trusted publishing (OIDC)** — no `NPM_TOKEN` secret. The
183
+ workflow requests a short-lived OIDC token (`id-token: write`) that npm verifies
184
+ against the trusted-publisher config; provenance attestations are generated
185
+ automatically.
186
+
187
+ `.github/workflows/ci.yml` runs lint + test + build on every push and PR.
188
+
189
+ One-time setup:
190
+
191
+ 1. Enable **Settings -> Actions -> General -> Workflow permissions**: "Read and
192
+ write" and "Allow GitHub Actions to create and approve pull requests" so
193
+ release-please can open release PRs.
194
+ 2. Publish `1.0.0` once manually (`npm publish --access public`) — trusted
195
+ publishing can only be configured for a package that already exists.
196
+ 3. On npmjs.com, open the package's **Access** page and add a **Trusted
197
+ Publisher** for GitHub Actions, matching repo `shivdeepak/skillship` and
198
+ workflow file `release.yml` exactly. After that, every release publishes
199
+ tokenlessly. Optionally set the package to "require 2FA and disallow tokens"
200
+ so only the workflow can publish.
201
+
154
202
  ## License
155
203
 
156
204
  MIT
package/package.json CHANGED
@@ -1,14 +1,19 @@
1
1
  {
2
2
  "name": "skillship",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
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).