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.