Skip to content

docs(skills): start on unreleased ApiDOM PRs through tarballs - #4303

Merged
robert-hebel-sb merged 1 commit into
swagger-api:mainfrom
RobertHebel:docs/skills-upstream-tarballs
Oct 26, 2026
Merged

robert-hebel-sb merged 1 commit into
swagger-api:mainfrom
RobertHebel:docs/skills-upstream-tarballs

Conversation

@RobertHebel

Copy link
Copy Markdown
Contributor

Summary

Lets a spec-support step start before the ApiDOM release it depends on. Once the ApiDOM PR is ready (its exit gate passes and its fresh-context review is clean), /add-oas-support and /add-json-schema-support install tarballs packed from that branch, open their PR as a draft, and merge only after the ApiDOM release, with the tarballs replaced by it and every gate run again. Without a ready ApiDOM PR, Step 0's UPSTREAM still stops.

Changes

  • add-oas-support/references/unreleased-upstream.md (new): pack the ApiDOM branch, wire the tarballs, handle a changed upstream PR, replace the tarballs before merging.
  • spec-status.mjs: new UNRELEASED status for any dependency or override installed from a tarball, path, git or URL; exits 4 when nothing else is open (ready, not mergeable). Tarball specs no longer count as a second ApiDOM version.
  • Step 0 and the gates of both skills, the skills README, and the JSON Schema plan eval's grader 02.

Why tarballs and not git URLs

npm can't install ApiDOM packages from a git URL: it is a private workspace monorepo without committed build output or a prepare script. The wiring rules come from npm behaviour tested offline (npm 10.9.0): a plain override of a direct dependency fails (EOVERRIDE); a relative file: path inside overrides fails once a lockfile exists (ENOENT); a tarball rebuilt under the same name installs the old content, npm ci included. So each tarball is a file: spec in the root fields with a $name override, named by upstream commit.

Verification

  • bash .claude/skills/add-oas-support/scripts/test/smoke.sh: smoke OK, including new cases for UNRELEASED (direct, nested override, $name not flagged, version check unaffected).

🤖 Generated with Claude Code

A step no longer waits for the ApiDOM release to start: once the ApiDOM PR is ready (exit gate
met, review clean), it installs tarballs packed from that branch and merges only after the
release, with the tarballs replaced and every gate run again (Standalone JSON Schema PRD, D13).

references/unreleased-upstream.md packs the branch, wires each tarball as a file: spec in the
root fields with a $name override, and names tarballs by upstream commit: npm rejects a plain
override of a direct dependency (EOVERRIDE), resolves a relative file: path inside overrides
from node_modules/ once a lockfile exists (ENOENT), and reinstalls a cached tarball rebuilt
under the same name. spec-status.mjs reports such specs as UNRELEASED and exits 4 when nothing
else is open; the merge gate requires none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@robert-hebel-sb
robert-hebel-sb merged commit b6dfb8a into swagger-api:main Oct 26, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants