一键导入
release
Release a package to NPM. Validates version bump, changelog, creates release branch, monitors CI, verifies publish.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Release a package to NPM. Validates version bump, changelog, creates release branch, monitors CI, verifies publish.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Team-wide PR dashboard for the SDK pod. Shows open PRs touching SDK pod paths or authored by SDK roster members, sorted oldest-first, grouped by author tier (SDK Core / Platform / External) into needs-your-re-review / stale / needs-review / fully-approved, with merge-conflict and CI-red warnings. Use when checking team SDK pod PR status or invoking /qv-sdk-pr-status.
Generate NOTICE files with third-party attributions for all packages in the monorepo.
Generate changelogs for SDK pod packages using tag-based GitFlow. Use when preparing a release, generating changelog, or creating CHANGELOG_LLM.md.
Inspect GitHub Actions self-hosted runner queues when a developer provides a run URL, job URL, runner label, or reports a blocked CI job, or invokes /qv-devops-runner-queue.
Benchmark an optimization (PR or branch) on a Device Farm device via the vlm-benchmark framework — baseline vs optimized, quality-regression-aware.
Generate PR descriptions for SDK pod packages following template and format rules. Use when creating an SDK pod PR or invoking /qv-sdk-pr-create.
| name | release |
| description | Release a package to NPM. Validates version bump, changelog, creates release branch, monitors CI, verifies publish. |
| argument-hint | <package-name> [base-branch] |
| disable-model-invocation | true |
Release a package to NPM. Ensures version bump, changelog, release branch, CI pipeline, and npm publish.
The package is identified by the <package-name> argument, which is the directory name under packages/ (e.g., ocr-onnx, qvac-sdk, tts-onnx). The skill reads packages/<package-name>/package.json to determine the package type and npm scope.
/release <package-name> [base-branch]
Where:
<package-name> is the directory name under packages/ (e.g., ocr-onnx, tts-onnx)[base-branch] is optional — the branch to create the release from. Defaults to main. Use this for patches, e.g., /release ocr-onnx release-ocr-onnx-0.6.0Read packages/$ARGUMENTS/package.json to get the current version and npm package name.
Compare version against the latest version published on npm:
npm view <npm-package-name> version
If the local version is not higher than the npm version, stop and ask the user to bump the version first.
Verify the CHANGELOG heading format exactly matches what the publish-release workflow extracts. The workflow uses this awk regex: ^## \[<version>\] — heading must be bracketed (Keep-a-Changelog style). Soft phrasing like "section for 0.1.0" is not enough; the heading line must literally be ## [0.1.0].
Run this exact check (mirrors the regex in .github/workflows/create-github-release.yml):
version=$(node -p "require('./packages/<package>/package.json').version")
if ! grep -qE "^## \[${version}\]" "packages/<package>/CHANGELOG.md"; then
echo "FAIL: packages/<package>/CHANGELOG.md is missing a '## [${version}]' heading."
echo " A heading like '## ${version}' (no brackets) will NOT match — publish-release will fail."
exit 1
fi
If the check fails, fix the heading or generate the section first:
/qv-addon-changelog/qv-sdk-changelogDisplay a summary and ask for confirmation before proceeding:
Release summary:
Package: <package>
Version: <version>
Branch: release-<package>-<version>
Target: NPM (latest tag)
Proceed? (y/n)
git checkout <base-branch>
git pull origin <base-branch>
Where <base-branch> is determined in Step 1 (main for new releases, release-<package>-<base-version> for patches).git checkout -b release-<package>-<version>
git push origin release-<package>-<version>
gh workflow run "on-merge-<package>.yml" --repo tetherto/qvac --ref release-<package>-<version>
This workflow:
release-merge-guard (validates version bump + changelog)latest tag<package>-v<version>Use /loop to poll the pipeline status every 2 minutes:
/loop 2m Check the CI pipeline status for the release branch release-<package>-<version>. Run: gh run list --branch release-<package>-<version> --limit 5. If all runs completed successfully, report SUCCESS and stop. If any run failed, report the failure details. If still running, report progress.
Once CI completes successfully:
Check that the package was published to npm:
npm view @qvac/<package>@<version> version
(Note: some packages may not have the @qvac/ scope — check package.json for the actual package name)
Check that the GitHub release was created:
gh release view <package>-v<version>
Report final status to user:
Release complete:
Package: <npm-package-name>@<version>
NPM: published
GitHub Release: <package>-v<version>
Branch: release-<package>-<version>
Verify the published package is publicly accessible without authentication by installing it in a clean temp directory with no npm token:
# Create a temp directory and install without any auth
TMPDIR=$(mktemp -d)
cd $TMPDIR
echo "registry=https://registry.npmjs.org/" > .npmrc
npm install <npm-package-name>@<version> --ignore-scripts --no-package-lock
If the install succeeds, the package is publicly accessible. If it fails with a 401/403, the package may still be private — flag this to the user.
Sanity checks on the installed package:
# Verify the tarball contents look correct
npm pack <npm-package-name>@<version> --pack-destination $TMPDIR
tar tf $TMPDIR/<tarball-filename> | head -20
# Check that key files are present in the installed package:
ls $TMPDIR/node_modules/<npm-package-name>/
# Expected: package.json, README.md, index.js (or similar entry point), prebuilds/ (for addons)
# Verify package.json version matches
node -e "console.log(require('$TMPDIR/node_modules/<npm-package-name>/package.json').version)"
Clean up:
rm -rf $TMPDIR
If any check fails, report the issue to the user before proceeding.
git checkout main
release-merge-guard fails: the version or changelog is missing/incorrect. Fix and re-trigger the workflow.gh run view <run-id> --log-failed.npm view), or if NPM_TOKEN is valid.