docs: the @objectstack/skills install line npm install --save-dev … exits 1 in a pnpm-installed project (edgesOut), and five sites still print it as the only command #24926
Description
Filing gate ①: a documented command that fails, measured, with named locations. finding class a. Reader who acts: the domain:devx seat for the content/docs/** rows. The two skills/** rows are governed (Tier H) and belong to domain:skills, so triage splits them or routes them. Filed by domain:devx seat 1 (os-warren, session_01FM29ZqLTrnPNXxijioZwMp, seat post #6023), from #24905's upgrade walk (PR #24922, out-of-scope finding 3). ⛔ Not a claim. The lane is self-labelled under rule B; grade and area:* are triage's.
Measured (2026-10-20)
The walk scaffolded an app with create-objectstack@17.7.0 and installed it with pnpm 10.28 on Node 22.22. In that app:
npm install --save-dev "@objectstack/skills@$(node -p "require('@objectstack/spec/package.json').version")"exited1withnpm error Cannot read properties of null (reading 'edgesOut');pnpm add -Dof the same spec succeeded and wrote"@objectstack/skills": "18.0.0".
create-objectstack installs with pnpm when it is available, so a scaffolded app is commonly a pnpm project.
The sites (main)
| path | row |
|---|---|
content/docs/upgrading.mdx (≈:111, the skills step) |
devx |
content/docs/ai/skills.mdx (≈:32) |
devx |
content/docs/ai/skills-reference.mdx (≈:21) |
devx |
skills/README.md (≈:11) |
skills (Tier H) |
skills/objectstack-upgrade/SKILL.md (≈:129) |
skills (Tier H) |
content/docs/releases/v18/index.mdx |
fixed in PR #24922 |
Wanted
- Each site gives the install line for the project's own package manager: pnpm, npm and yarn, or one line plus the rule. 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 spelling in
releases/v18/is one precedent. - Measured, not restated: run the line each site keeps in a pnpm-installed and an npm-installed scaffold.
- ⛔ No new gate.
Dedupe
MCP search_issues, objectstack, open and closed, for "npm install --save-dev @objectstack/skills fails pnpm project edgesOut skills install command": 0 hits. #23788 (closed) is npm 10's edgesOut crash on lockfile-less installs in the release lane, which is a different site.
Dedupe words: skills npm install pnpm; @objectstack/skills save-dev; experimental_sync pnpm.
Generated by Claude Code
Activity
objectstack-fleet commentedon Oct 20, 2026
Claim: PM loop round 28 · a p1
domain:devxdocs card this seat filed from #24905's upgrade walk; serial dispatch under the maintainer's 「串行派发」Session:
session_01FM29ZqLTrnPNXxijioZwMpAccount:
os-warren(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-24926-skills-install-pmWorktree:
objectstack-issue-24926Domain:
domain:devxSeat:
domain:devx#1File surface: the card's three
content/docs/**rows, each giving the@objectstack/skillsinstall line for the project's own package manager:content/docs/upgrading.mdx(the skills step, ≈:111);content/docs/ai/skills.mdx(≈:32);content/docs/ai/skills-reference.mdx(≈:21).⛔ Not the two
skills/**rows (skills/README.md,skills/objectstack-upgrade/SKILL.md). They are governed anddomain:skills's, and this seat moves them to their own card when this one lands. ⛔ Notcontent/docs/releases/v18/**, which is fixed by PR #24922. ⛔ No new gate. Stop on breach and explain.Container & model:
S (three install lines, each measured in a pnpm- and an npm-installed scaffold),mode:subagent,model: TIER_DEFAULTClause-②: no
Responsibility:
the documented skills install line exits 1 in a pnpm-installed create-objectstack project (#24926)|PR #24922's releases/v18 spelling|every app moving to 18 that follows the skills step, first HotCRMThread-read: none
Serial constraints cleared: the open PRs touching these files are Version Packages PR #24876, whose
upgrading.mdxchange is the image tag at ≈:55, outside the skills step. No liveClaim:names these files: #24522's claim excludescontent/docs/**(read at 2026-10-20T19:08Z). No dev of this session is in flight: round 16 of #24579 has reported, and its PR #24963 is queued.Generated by Claude Code
objectstack-fleet commentedon Oct 20, 2026
os-dev-report
{
"issue": 24926,
"status": "done",
"branch": "claude/issue-24926-skills-install-pm",
"pr": "#24973",
"session": "session_01FM29ZqLTrnPNXxijioZwMp — the parent's id (this run is a subagent); it is also the session the relay stamped on the pr_create stroke",
"premise_still_valid": true,
"summary": "Draft PR #24973 changes the three content/docs sites on the claim's file surface: upgrading.mdx (only the skills step, step 4; the image-tag line is untouched), ai/skills.mdx and ai/skills-reference.mdx. Each now uses PR #24922's shape. The block carries
pnpm add -D \"@objectstack/skills@$(node -p …)\"followed by the comment# npm: npm install --save-dev \"@objectstack/skills@…\" · yarn: yarn add -D \"@objectstack/skills@…\", and the block is followed by the rule sentence 'Add the package with the manager that installed the project', which cites the measured npmedgesOutexit 1. skills-reference.mdx also runsnpx skills listbeforenpx skills remove --all. Its 17.x refusal sentence now names pnpm'sERR_PNPM_NO_MATCHING_VERSIONbeside npm'sETARGET; left as it was, it would have become false under the pnpm line (see deviations). upgrading.mdx already rannpx skills listfirst, and skills.mdx prints no--all. The two governed skills/** rows are named in the PR body as not in this PR. CI was in_progress when this report was written. Base 2941a19, head bd08586.","tests": "No package code changed, so there is no package test or typecheck to run. The measured lines follow (Node 22.22.0, each scaffold in its own new empty scratch directory; package.json was diffed before and after each command). M1: pnpm 10.28.0 in a pnpm-installed create-objectstack@18.0.0 scaffold,
pnpm add -D \"@objectstack/skills@$(node -p \"require('@objectstack/spec/package.json').version\")\"exit 0, wrote\"@objectstack/skills\": \"18.0.0\"(the template had^18.0.0). M2: in a second pnpm-installed 18.0.0 scaffold, the old linenpm install --save-dev \"@objectstack/skills@$(…)\"(npm 10.9.4) exit 1,npm error Cannot read properties of null (reading 'edgesOut'), package.json unchanged. M3: in an npm-installed 18.0.0 scaffold (pnpm taken off PATH, so the scaffolder chose npm and wrote package-lock.json),npm install --save-dev \"@objectstack/skills@$(…)\"exit 0. It SUCCEEDS and writes\"@objectstack/skills\": \"^18.0.0\"(npm's default caret prefix). M4: yarn 1.22.22 is installed here. In a scaffold made with--skip-installand thenyarn install(exit 0),yarn add -D \"@objectstack/skills@$(…)\"exit 0, wrote\"18.0.0\". M5: in a pnpm-installed create-objectstack@17.7.0--skip-skillsscaffold (spec 17.7.0), the pnpm line exits 1 withERR_PNPM_NO_MATCHING_VERSION No matching version found for @objectstack/skills@17.7.0, package.json unchanged. M6: npm's 17.x refusal was measured in the M3 scaffold with the literal version:npm install --save-dev \"@objectstack/skills@17.7.0\"exit 1,npm error code ETARGET,No matching version found. A literal was needed because create-objectstack@17.7.0's own npm install exits 1 withedgesOut, twice, so no npm-installed 17.7.0 scaffold could be built. Yarn's 17.x refusal: exit 1,Couldn't find any versions; the page does not name it. No ablation was run: docs only, no tested behaviour changed. All readings were taken at head bd08586.","gates": "Local, at head bd08586. The list was derived with
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackfrom the merge base: 44 commands, 3 paths. All 44 exit 0, each exit code captured before any pipe. Five needed a build first: they returned exit 3 (PREREQUISITE NOT MET, nothing measured) and were re-run afterpnpm --workspace-concurrency=2 --filter '@objectstack/lint...' buildand--filter '@objectstack/client-react...' build, both under os-verify-lock (VERDICT command-exit 0, 117 s and 307 s held; the worktree stayed clean). The five are lint check:doc-formula-expressions, lint check:doc-security-posture, spec check:docs, spec check:skill-examples (262 examples type-check) and check:docs-transcript-drift.--ranreconciliation with the exit codes recorded: '44 derived, 44 run, 0 NOT-MEASURED, 0 UNRUN … a DERIVED zero'. Selected verdict lines: doc-anchors, 563 fragment links all reach a real heading; docs-single-h1, 418 pages clean; docs-image-tag OK; skill-docs in sync; nul-bytes OK.git merge-tree --write-tree origin/main HEADexit 0 against origin/main 693352e (3 commits past base, none under content/docs). Branch not merged with main. CI check-runs on bd08586, read once at 2026-10-20T19:41Z and not polled: success for Check Changeset, Check Documentation Links, filter, and the claim/closing guards ('The card this PR closes must claim this branch', 'No other open PR may claim the same issue'); skipped for Build Core; in_progress for the Lint lanes, the Type Check lanes, Test Core (1/6 to 6/6), Governed Surface Queue Guard, Build Docs, Dogfood Regression Gate and Spec property liveness.","mcp_calls": "0 — no MCP GitHub tool was called. Reads went through
gh api(REST GET): the card, its comments, the PR and its check-runs.","api_writes": "2 relay strokes. (1) pr_create via scripts/pm/fleet-write/dispatch.mjs: POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204, run 39485467419 success), which executed as objectstack-fleet[bot] POST /repos/objectstack-ai/objectstack/pulls (draft) → #24973, POST /repos//issues/24973/assignees [os-warren] and POST /repos//issues/24973/labels [skip-changeset]. The relay's read-back confirmed the body (8385 bytes sent and stored, identical) and the assignee os-warren. Its read-back line did not print the label set; an independent REST GET of the PR lists labels ['skip-changeset'], assignees ['os-warren'] and draft true, and its body is byte-identical to the file sent. (2) This os-dev-report comment via scripts/pm/post-stamped.mjs: POST /repos//issues/24926/comments. Plus two git pushes, which are not REST: the empty-branch probe and the commit.",
"open_questions": [],
"deviations": [
"The ruling says no other prose change, and the role file says a sentence this change makes false must be fixed; the role file wins. skills-reference.mdx's 17.x sentence named npm's
ETARGETfor step 1. Step 1 is now the pnpm line, which printsERR_PNPM_NO_MATCHING_VERSION(M5), so the sentence now names both codes (npm measured in M6). This is the only sentence edited beyond the install block, the rule sentence andnpx skills list.","The npm-installed 17.7.0 scaffold could not be built (its own npm install exits 1 with edgesOut), so npm's 17.x refusal was measured with the version literal in the 18.0.0 npm scaffold (M6).",
"origin/main moved 3 commits past the base (none under content/docs, merge-tree clean). The branch was not merged with main before the PR was opened.",
"Assumption: the label read-back counts as passed. Its evidence is the PR's label set as read by REST GET; the relay's read-back line printed only the body and the assignees."
],
"out_of_scope_findings": [
"class: a · reach: public door, the published @objectstack/skills README. packages/skills/README.md:28 is in the package's files[], so this text is on the npm package page and in the tarball. It prints
npm install --save-dev \"@objectstack/skills@$(node -p …)\"as its only step 1, which is the exact command that exits 1 withnpm error Cannot read properties of null (reading 'edgesOut')in a pnpm-installed create-objectstack@18.0.0 scaffold (M2). This is a sixth site of #24926's family that the card does not list. It is outside this claim's file surface, so it was not touched. It belongs in the family's follow-up card with skills/README.md and skills/objectstack-upgrade/SKILL.md, not in a card of its own. The change publishes, so it owes a patch changeset for @objectstack/skills. Dedupe words: @objectstack/skills README install npm pnpm; packages/skills README save-dev; skills package page install line","carrier: none · noted, not filed. skills-reference.mdx still says 'A bare
npm install --save-dev @objectstack/skillsinstalls whichever version the registry tags latest'. That is true as stated, and it was left alone under the no-other-prose ruling.","carrier: none · noted, not filed. With pnpm off PATH, create-objectstack@17.7.0 cannot install with npm 10.9.4: its own lockfile-less
npm installexits 1 with edgesOut, twice. 17.7.0 is superseded, and the 18.0.0 npm path succeeds (M3).","carrier: none · noted, not filed. pnpm and yarn write the exact
\"18.0.0\"and npm writes\"^18.0.0\". None of the three pages says which; the claim in releases/v18/18-0.mdx that 'the command writes the exact version' refers to its pnpm line and matches M1."]
}
objectstack-fleet commentedon Oct 20, 2026
Landed ·
domain:devxseat 1 ·session_01FM29ZqLTrnPNXxijioZwMp· 2026-10-20T20:49Z3a7a60af8f(ACCEPT6300131789; not governed;Fixes #24926)origin/main, by contentcontent/docs/upgrading.mdx,content/docs/ai/skills.mdxandcontent/docs/ai/skills-reference.mdxare byte-identical to the headbd085862fcState change: PR #24973 closed this card through
Fixes #24926(completed).pm:dispatchedcomes off in this act.The three
content/docs/**sites now give the install line for the project's package manager: pnpm in the block, with npm and yarn beside it, each measured. The rows this PR left are #24974 (domain:skills): the two governedskills/**pages, and the publishedpackages/skills/README.md, which owes a patch changeset.Generated by Claude Code