Skip to content

docs: give the @objectstack/skills install line for the project's own package manager - #24973

Merged
objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-24926-skills-install-pm
Oct 20, 2026
Merged

objectstack-fleet[bot] merged 1 commit into
mainfrom
claude/issue-24926-skills-install-pm

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Fixes #24926
Clause-②: no

What changed

Three content/docs/** pages printed npm install --save-dev "@objectstack/skills@$(node -p …)" as the only install command. Each one now gives the install line for the project's own package manager, in the same shape as PR #24922 (content/docs/releases/v18/18-0.mdx step 1):

  • the pnpm line in the block;
  • a one-line comment with the npm and yarn spellings;
  • the rule "add the package with the manager that installed the project", followed by the npm failure as measured.
site old → new measurement
content/docs/upgrading.mdx, step 4, the "From 17.x to 18" block npm install --save-dev "@objectstack/skills@$(node -p …)" → pnpm add -D "@objectstack/skills@$(node -p …)", plus the line # npm: npm install --save-dev "@objectstack/skills@…" · yarn: yarn add -D "@objectstack/skills@…", plus the rule sentence M1 pnpm exit 0 · M2 the old line exit 1 · M3 npm exit 0 · M4 yarn exit 0
content/docs/ai/skills.mdx, § Installing skills same change M1 to M4
content/docs/ai/skills-reference.mdx, § Installing skills, step 1 same change. Also: the 17.x refusal now names pnpm's ERR_PNPM_NO_MATCHING_VERSION beside npm's ETARGET, and the 18.0.0-next.0 note runs npx skills list before npx skills remove --all M1 to M4, M5, M6
skills/README.md (≈:11) not in this PR. The file is governed (Tier H, domain:skills). The domain:devx seat moves it to a domain:skills card when this one lands —
skills/objectstack-upgrade/SKILL.md (≈:129) not in this PR, for the same reason —

upgrading.mdx already said to run npx skills list before --all ("Run npx skills list first"), so that sentence is unchanged. skills.mdx does not print --all.

Measured

Node 22.22.0. Each scaffold was created in its own new, empty directory under the session scratchpad. The command was copied from the page: the pnpm line, or a spelling from the comment with its @… filled in with the same version expression.

# manager project command exit @objectstack/skills line in package.json afterwards
M1 pnpm 10.28.0 create-objectstack@18.0.0 scaffold, pnpm-installed pnpm add -D "@objectstack/skills@$(node -p …)", the line every site now keeps 0 "18.0.0", written in place of the template's "^18.0.0"
M2 npm 10.9.4 a second create-objectstack@18.0.0 scaffold, pnpm-installed npm install --save-dev "@objectstack/skills@$(node -p …)", the line every site kept 1 not written: npm error Cannot read properties of null (reading 'edgesOut'); package.json unchanged ("^18.0.0")
M3 npm 10.9.4 create-objectstack@18.0.0 scaffold, npm-installed. pnpm was taken off PATH, so the scaffolder chose npm and wrote package-lock.json npm install --save-dev "@objectstack/skills@$(node -p …)", the comment's npm spelling 0, it succeeds "^18.0.0": npm saves with its default ^ prefix, so the value is the template's
M4 yarn 1.22.22 create-objectstack@18.0.0 --skip-install, then yarn install (exit 0, yarn.lock) yarn add -D "@objectstack/skills@$(node -p …)", the comment's yarn spelling 0 "18.0.0"
M5 pnpm 10.28.0 create-objectstack@17.7.0 --skip-skills, pnpm-installed (@objectstack/spec 17.7.0) pnpm add -D "@objectstack/skills@$(node -p …)" 1 not written: ERR_PNPM_NO_MATCHING_VERSION No matching version found for @objectstack/skills@17.7.0; unchanged
M6 npm 10.9.4 the M3 scaffold, with the version given as the literal 17.7.0 npm install --save-dev "@objectstack/skills@17.7.0" 1 not written: npm error code ETARGET, No matching version found for @objectstack/skills@17.7.0.; unchanged

Notes on the readings:

  • M6 used a literal version. No npm-installed 17.7.0 scaffold could be built here: create-objectstack@17.7.0's own npm install exited 1 with the same edgesOut error, and again on a retry. So npm's 17.x refusal was measured with the version written out.
  • Yarn's 17.x refusal was also measured: error Couldn't find any versions for "@objectstack/skills" that matches "17.7.0", exit 1. The page does not name it.
  • pnpm, npm and yarn all re-sorted dependencies alphabetically in M1, M3 and M4. No other value changed.

Gates

Local, at head bd085862fc. These are the 44 commands that node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derives from this diff, with each exit code captured before any pipe.

  • All 44 exited 0.

  • Five needed a build first. They answered exit 3 (prerequisite not met) on the first pass, which is not a measurement:

    • check:doc-formula-expressions, check:doc-security-posture and check:docs-transcript-drift needed @objectstack/lint built;
    • @objectstack/spec check:docs needed its generated tree;
    • @objectstack/spec check:skill-examples needed @objectstack/client-react built.

    I built @objectstack/lint... and @objectstack/client-react... under the verify lock (VERDICT command-exit 0 both times) and re-ran the five. Each exited 0.

  • The builds left the worktree clean. git status --porcelain printed nothing afterwards.

  • --ran reconciliation: 44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN (it calls this "a DERIVED zero").

  • Selected verdict lines:

    • check:doc-anchors: 563 internal fragment links, each reaching a real heading;
    • check:docs-single-h1: 418 pages, no body-level heading-one;
    • check:docs-image-tag: OK, 9 concrete pins against 18.0.0;
    • check:skill-docs: ✓ content/docs/ai/skills-reference.mdx, "Skill docs in sync";
    • check:nul-bytes: OK, no raw control bytes.
  • No package code changed, so there is no package build, pnpm test or typecheck to run. test:repo is left to CI.

  • Merge check: git merge-tree --write-tree origin/main HEAD exited 0 against origin/main 693352e4c2. That is three commits past the base, none of them under content/docs/.

Changeset

This PR is labelled skip-changeset, because content/docs/** ships in no package. Measured:

  • no published package lists a content or docs path in its files[];
  • no build step copies these pages into a package;
  • after the build, I searched every path @objectstack/spec ships (dist, json-schema, liveness, prompts, llms.txt, README.md, api-surface) for five strings from the edited passages. Each matched 0 files. The positive control defineStack matched 93 files.

Acceptance notes

  • One sentence beyond the install line, the rule and npx skills list. In skills-reference.mdx, the 17.x refusal sentence now names the code that step 1 prints. Left alone, the page would put npm's ETARGET under a pnpm command, which prints ERR_PNPM_NO_MATCHING_VERSION (M5).
  • A sentence left as written. skills-reference.mdx still says that a bare npm install --save-dev @objectstack/skills installs whichever version the registry tags latest. That is true as stated, and equally true of a bare pnpm add -D. The card rules out other prose changes, so it stays. Carrier: none.
  • A sixth site the card does not list. packages/skills/README.md:28, the published @objectstack/skills README, prints the same npm install --save-dev line as its only step 1. That is the M2 command. The README is in the package's files[], so this text is on the npm page and in the tarball. It is outside this PR's file surface, and changing it publishes (a patch changeset for @objectstack/skills). It is reported to the seat to join the follow-up card with the two skills/** rows.
  • create-objectstack@17.7.0 cannot install with npm here. Its own npm install (npm 10.9.4, no lockfile) exits 1 with edgesOut. 17.7.0 is a superseded release, and 18.0.0's npm path succeeds (M3). Carrier: none.
  • pnpm and yarn write the exact version; npm writes a caret range. pnpm and yarn write "18.0.0" and npm writes "^18.0.0". None of the three pages says which. The sentence in releases/v18/18-0.mdx, "The command writes the exact version", is about its pnpm line, and M1 agrees with it.

Generated by Claude Code

… package manager

The three content/docs sites printed `npm install --save-dev` as the only
command; in a pnpm-installed project it exits 1 with
`npm error Cannot read properties of null (reading 'edgesOut')`. Each site now
carries the pnpm line, a comment with the npm and yarn spellings, and the rule
to add the package with the manager that installed the project. The 17.x
refusal names the pnpm code beside npm's, and skills-reference runs
`npx skills list` before `npx skills remove --all`.

Claude-Session: https://claude.ai/code/session_01FM29ZqLTrnPNXxijioZwMp
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

Seat review

ACCEPT · domain:devx seat 1 · os-warren · session_01FM29ZqLTrnPNXxijioZwMp · 2026-10-20T19:55Z · head bd085862fc · card #24926 (claim 6299009495)

  • Form. Draft, base main. The first line is Fixes #24926, then Clause-②: no. Assignee os-warren; labels documentation, size/s, skip-changeset. node scripts/pm/check-governed-merges.mjs --pr 24973 → NOT governed. git merge-tree against main 693352e4c2 is clean (and again against 6440cf1633). Three files, all on the claim's surface. The upgrading.mdx hunk is the skills step only, away from the image-tag line Version Packages PR chore: version packages #24876 rewrites.

  • The change, read. Each of the three sites now uses PR docs(releases): the 18.0.0 notes and upgrade checklist, walked from 17.7.0; Upgrading's table gains 18.0.0 and 17.5–17.7 #24922's shape:

    • the pnpm line in the block;
    • a one-line comment giving npm and yarn;
    • after the block, the rule "add the package with the manager that installed the project", with npm's measured edgesOut exit 1.

    skills-reference.mdx also puts npx skills list before npx skills remove --all.

  • The one sentence beyond the ruling is accepted. skills-reference.mdx's 17.x sentence named npm's ETARGET for step 1. Step 1 is now the pnpm line, which refuses with ERR_PNPM_NO_MATCHING_VERSION, so the sentence now names both codes. Left as it was, the change would have made it false.

  • Measured, every spelling the pages keep. In scaffolds of create-objectstack@18.0.0:

    • pnpm-installed: pnpm add -D exit 0, writing "18.0.0", and the old npm line exit 1 with edgesOut;
    • npm-installed: npm install --save-dev exit 0, writing "^18.0.0";
    • yarn-installed: yarn add -D exit 0, writing "18.0.0".

    The 17.x refusals were measured as ERR_PNPM_NO_MATCHING_VERSION and ETARGET.

  • Routed:

  • Gates.

    • The dev's dispatch-gates union: 44 derived, 44 run, all exit 0. Five commands first returned exit 3 (prerequisite not met), and were re-run after builds under the verify lock. --ran reconciles.
    • Check-runs at bd085862fc: 46, 34 success, 12 skipped, 0 failing or pending. node scripts/pm/check-expected-skips.mjs --pr 24973 → OK (12 skipped, every one in the roster). No review, no comment.

This seat readies the PR and queues it with auto-merge.


Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/s skip-changeset PR has no user-facing published change; bypasses the changeset gate

Projects

None yet

2 participants