release

Diagnose and recover pythinker-code release lanes across changesets, npm OIDC, desktop, VS Code, CDN, and Homebrew.

18|8|Updated Jun 17, 2026
One-click install
npx skills add https://github.com/PyModel/pythinker-code --skill release-pymodel
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: release
Source: https://github.com/PyModel/pythinker-code/tree/main/.agents/skills/release
Command: npx skills add https://github.com/PyModel/pythinker-code --skill release-pymodel

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Cutting a release for the pythinker-code TypeScript monorepo spans changesets, npm Trusted Publishing, desktop tags, VS Code registries, native assets, CDN redeploys, and a Homebrew tap — and each lane fails differently. This Skill documents the release mechanics, failure modes, and safe recovery commands so you can debug or verify a release without guessing. ## Core Features & Use Cases - Release model reference: Explains the changesets flow, the ci: release packages version PR, npm Trusted Publishing via OIDC, and why NPM_TOKEN must never be added. - Job map and lane controls: Maps every release.yml job to its trigger, including desktop Stable/Beta/Nightly tags, VS Code publishing, native assets, CDN redeploy, and the Homebrew tap, plus the RELEASE_LANE_* opt-out variables. - Failure-mode playbook: Covers known issues like the idempotent-publish bug, half-published npm releases, stale CDN, and Beta/Nightly channel confusion, with a recovery table of exact commands and their safety constraints. - Use Case: A maintainer sees release.yml fail with "cannot publish over previously published versions" and uses this Skill to identify the Trusted Publishing placeholder-token cause and verify registry state before rerunning anything. ## Quick Start Ask the agent to check why the latest pythinker-code release workflow failed and recommend the safe recovery step.

Frequently Asked Questions about release

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fix "cannot publish over previously published versions" in a changesets release?

This error occurs because Trusted Publishing exports a placeholder NODE_AUTH_TOKEN, so changesets cannot read published versions and republishes. The changeset-publish-idempotent.mjs wrapper pre-checks the registry with a clean environment and exits 0 when versions are already live; if it still fails, suspect a genuinely half-published release and read the log before rerunning.

How does npm Trusted Publishing with OIDC work in GitHub Actions?

Trusted Publishing authenticates npm publishes through OIDC tokens from the CI environment instead of a stored NPM_TOKEN. Adding an NPM_TOKEN takes precedence over OIDC and breaks the flow, so publishing must stay CI-only and changeset publish must never run locally.

Why is the CDN not updated after an npm publish?

The verify-release-consistency.mjs script gates the CDN webhook by comparing the local package.json version against the npm latest dist-tag. A mismatch means the job checkout predates the release commit or npm propagation is lagging; check npm view dist-tags before rerunning the Redeploy CDN job.

How do I recover a failed desktop release tag job?

Manually create the tag with git tag desktop-v<VERSION> <RELEASE_SHA> and push it to origin, but first confirm the tag does not already exist. Pushing the tag starts a public release workflow, so this step is irreversible once done.

Can I rerun native asset builds after npm publish succeeded?

Yes, rerun failed jobs from the same workflow run with gh run rerun --failed before any assets upload, since npm state is final. A complete asset set is an idempotent no-op, but a partial set must not be filled from a rebuild; publish a new patch version instead.

When should I not merge the changesets version PR?

Merging the ci: release packages PR is the irreversible step that publishes to npm and creates the release tag. Confirm with the user before merging, and never hand-patch the changeset-release/main branch; fix changesets on main and let the workflow regenerate the PR.