Skip to content

Commit f0b0ddc

Browse files
committed
docs(skills): give the @objectstack/skills install line for the project's own package manager
The npm page, the catalog's front page and the upgrade skill's re-install step printed the npm-only line, which exits 1 in a pnpm-installed project. Each now prints the pnpm line with the npm and yarn spellings beside it and the rule: add the package with the manager that installed the project. Claude-Session: https://claude.ai/code/session_01M82feuetLzrCiBz41BJb7L Co-authored-by: Claude <noreply@anthropic.com>
1 parent 62bc129 commit f0b0ddc

4 files changed

Lines changed: 43 additions & 21 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
'@objectstack/skills': patch
3+
---
4+
5+
docs(skills): the npm page and the catalog's front page give the install line for the project's own package manager
6+
7+
Clause-②: no
8+
9+
`README.md` (the npm page) and `dist/skills/README.md` (the catalog's front page, copied from the repository's `skills/README.md`) printed `npm install --save-dev "@objectstack/skills@$(node -p …)"` as the only install line. In a pnpm-installed project that line exits `1` with `npm error Cannot read properties of null (reading 'edgesOut')` and writes nothing, and `create-objectstack` installs with pnpm when it is available, so a scaffolded project is commonly a pnpm project.
10+
11+
- **Both pages** now print `pnpm add -D "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"`, with the npm and yarn spellings on a comment line beside it, and the rule: add the package with the manager that installed the project. The `objectstack-upgrade` skill's re-install step, which an agent follows for this exact move, prints the same line.
12+
- **The npm page** names pnpm's `ERR_PNPM_NO_MATCHING_VERSION` beside npm's `ETARGET` for a project on `@objectstack/spec` 17.x, and runs `npx skills list` before `npx skills remove --all`, which removes every installed skill without asking.

‎packages/skills/README.md‎

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,34 +25,42 @@ agent's own skills directory (`.claude/skills/` for Claude Code, and so on):
2525

2626
```sh
2727
# 1 · the catalog, at the version of your installed @objectstack/spec
28-
npm install --save-dev "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"
28+
pnpm add -D "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"
29+
# npm: npm install --save-dev "@objectstack/skills@…" · yarn: yarn add -D "@objectstack/skills@…"
2930

3031
# 2 · copy it from node_modules into your agent's skills directory
3132
npx skills@1.7.2 experimental_sync --agent claude-code --copy -y
3233
```
3334

35+
Add the package with the manager that installed the project: in a pnpm project,
36+
`npm install --save-dev` exits `1` with
37+
`npm error Cannot read properties of null (reading 'edgesOut')`.
38+
3439
`experimental_sync` discovers the skills at `dist/skills/<skill>/SKILL.md` of
3540
every dependency and copies each one into the named agent's skills directory
3641
as real files, recording the source in `skills-lock.json` (`--agent <name>`
3742
names the runtime — `codex`, `cursor`, …). Keep `--copy`: without it the sync
3843
writes links into `node_modules`, which a clone of the project does not have;
3944
the CLI is pinned to the version `create-objectstack` runs. Keep the version
40-
in step 1: a bare `npm install --save-dev @objectstack/skills` installs
41-
whichever version the registry tags `latest`, not your spec's.
45+
in step 1: a bare `pnpm add -D @objectstack/skills` installs whichever version
46+
the registry tags `latest`, not your spec's.
4247

4348
**Updating.** The catalog moves only with your ObjectStack version: bump
4449
`@objectstack/skills` with the other `@objectstack/*` packages, then re-run the
4550
sync (step 2, same flags).
4651

4752
**Which versions exist.** The package is published from `18.0.0-next.0` on;
4853
there is no 17.x release of it, so on a project whose `@objectstack/spec` is
49-
17.x step 1 refuses with `ETARGET` (`No matching version found`).
54+
17.x step 1 refuses with `ERR_PNPM_NO_MATCHING_VERSION` (npm: `ETARGET`; both
55+
print `No matching version found`).
5056

5157
**Projects scaffolded by `create-objectstack`.** Through `18.0.0-next.0` the
5258
scaffolder installs the skills from the `next` channel below with `skills add`,
5359
and step 2 skips every skill a `skills add` installed (it prints `Skipped …
54-
installed with skills add`). Remove them first — `npx skills remove --all`, or
55-
name the `objectstack-*` skills if you added others — then run steps 1 and 2.
60+
installed with skills add`). Run `npx skills list` first, because
61+
`npx skills remove --all` removes every installed skill without asking: run that
62+
when the list shows only the `objectstack-*` skills, or name those if you added
63+
others — then run steps 1 and 2.
5664

5765
## The `next` channel
5866

‎skills/README.md‎

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,17 +8,20 @@ They ship as the npm package `@objectstack/skills`, released with the other
88
copy it from `node_modules` into your agent's directory:
99

1010
```bash
11-
npm install --save-dev "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"
11+
pnpm add -D "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"
12+
# npm: npm install --save-dev "@objectstack/skills@…" · yarn: yarn add -D "@objectstack/skills@…"
1213
npx skills@1.7.2 experimental_sync --agent claude-code --copy -y
1314
```
1415

15-
Keep `--copy`: the skills land as real files in `.claude/skills/`, to commit with
16-
the project; without it they are links into `node_modules`, which a clone does
17-
not have. Name your own runtime after `--agent` (`codex`, `cursor`, …). To update,
18-
bump `@objectstack/skills` with the other `@objectstack/*` packages, then re-run
19-
the sync. The package is published from `18.0.0-next.0` on (there is no 17.x
20-
release); scaffolded projects, the move from a `skills add` install and the rest
21-
are in the [Skills reference](https://objectstack.ai/docs/ai/skills-reference#installing-skills).
16+
Add the package with the manager that installed the project: in a pnpm project,
17+
`npm install --save-dev` exits `1`. Keep `--copy`: the skills land as real files
18+
in `.claude/skills/`, to commit with the project; without it they are links into
19+
`node_modules`, which a clone does not have. Name your own runtime after
20+
`--agent` (`codex`, `cursor`, …). To update, bump `@objectstack/skills` with the
21+
other `@objectstack/*` packages, then re-run the sync. The package is published
22+
from `18.0.0-next.0` on (there is no 17.x release); scaffolded projects, the move
23+
from a `skills add` install and the rest are in the
24+
[Skills reference](https://objectstack.ai/docs/ai/skills-reference#installing-skills).
2225

2326
**The `next` channel.** `npx skills add objectstack-ai/objectstack/skills --skill '*' --agent claude-code -y`
2427
reads the catalog straight from the repository's unreleased `main` — for trying

‎skills/objectstack-upgrade/SKILL.md‎

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -118,15 +118,16 @@ deleting them on merge, is the usual arrangement — decide it with the owner.
118118

119119
A 17.x project's skills came from `skills add`; their `skills-lock.json` entries
120120
read `sourceType: github`, so the sync skips them (exit 0) and the agent keeps
121-
reading 17.x skill text. Remove them (a missing name is skipped; `--all` when
122-
they are the project's only skills), add `@objectstack/skills` at the installed
123-
spec's version, copy it:
121+
reading 17.x skill text. Remove them (a missing name is skipped), add
122+
`@objectstack/skills` at the installed spec's version with the manager that
123+
installed the project, copy it:
124124

125125
```bash
126126
npx skills remove objectstack-ai objectstack-api objectstack-automation \
127127
objectstack-data objectstack-formula objectstack-i18n objectstack-platform \
128128
objectstack-pm-dispatch objectstack-query objectstack-ui objectstack-upgrade -y
129-
npm install --save-dev "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"
129+
pnpm add -D "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"
130+
# npm: npm install --save-dev "@objectstack/skills@…" · yarn: yarn add -D "@objectstack/skills@…"
130131
npx skills@1.7.2 experimental_sync --agent claude-code --copy -y
131132
```
132133

@@ -253,9 +254,7 @@ upgrade and again in the report.
253254
> **Not reachable from a consumer project**, so do not send anyone there: the
254255
> conversion and migration registries (`src/conversions/registry.ts`,
255256
> `src/migrations/registry.ts`) and the platform repo's generated upgrade guide
256-
> are **not** in the published package — only `src/**/*.zod.ts` is. Their
257-
> consumer-facing projection is `spec-changes.json` and the chain's own `--json`
258-
> output.
257+
> are **not** in the published package — only `src/**/*.zod.ts` is.
259258
260259
### 2.2 The three residue classes
261260

0 commit comments

Comments
 (0)