qv-sdk-inference-version
Skill697 starsChanged 18 days agoApache-2.0View on GitHub
Point @qvac/sdk at a published @qvac/inference version (shared major.minor) and regenerate the generated SDKs (tetherto-qvac-sdk and sdk-kotlin), so an SDK release ships against an engine that is already on npm.
- Installs packages
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 0 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 53
Does not open release PRs or publish (see publish-inference.yml, publish-sdk.yml + gitflow).
- Very specific: line 55
Does not release @qvac/inference.
- Very specific: line 57
Does not sync agent-stack packages (/qv-agent-stack-sync).
- Very specific: line 59
Does not run in CI. CI checks the shared major.minor on every PR through the SDK's lint (enforce-inference-versions) and installs the range …
- Very specific: line 141
Commit alongside the release changelog.
- Very specific: line 155
If the PR diff touches the version of packages/sdk or its @qvac/inference range, the parent skill prompts to run this skill first.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
SDK's @qvac/inference Version
@qvac/sdk and @qvac/inference expose the same API, so the SDK's own version
and its @qvac/inference dependency range share a major and minor. Patch
numbers are free on both sides — @qvac/sdk 0.19.4 may depend on
@qvac/inference ^0.19.2.
packages/sdk-python (tetherto-qvac-sdk) and packages/sdk-kotlin
(qvac-sdk-kotlin-runtime) are both generated from @qvac/sdk and track the
SDK's version.
The engine is published first
The SDK's committed range is installed from npm by publish-sdk.yml and by the
published leg of pr-checks-sdk-pod, so a range naming an unpublished version
fails both.
Moving to a new major.minor is two releases:
release-inference-<x.y.z>→publish-inference.ymlpublishes@qvac/inferenceand tagsinference-v<x.y.z>.release-sdk-<x.y.z>→ this skill points the SDK at that version, thenpublish-sdk.ymlpublishes@qvac/sdkandtetherto-qvac-sdk.
A patch on either side is one release on its own. An SDK patch leaves its range alone; an engine patch is picked up by the existing range with no SDK release at all.
On a release train (qv-release-train) skip Step 2: nx release version
writes the range. Step 3 (packages/sdk-python) still applies.
When to use this skill
Applies to the SDK pod (not the agent-stack cascade: cli / ai-sdk-provider / plugins).
Use when:
- User runs
/qv-sdk-inference-versiondirectly. - Auto-invoked by
/qv-sdk-changelogwhen--package=sdk. - Auto-invoked by
/qv-sdk-pr-createwhen the PR diff touches the version ofpackages/sdkor its@qvac/inferencerange. - Manually, when an
@qvac/inferencerelease has shipped and the SDK should depend on it.
What it does NOT do
- Does not open release PRs or publish (see
publish-inference.yml,publish-sdk.yml+ gitflow). - Does not release
@qvac/inference; it only points the SDK at a version that is already published. - Does not sync agent-stack packages (
/qv-agent-stack-sync). - Does not auto-commit.
- Does not run in CI. CI checks the shared major.minor on every PR through the
SDK's
lint(enforce-inference-versions) and installs the range for real on thepublishedleg ofpr-checks-sdk-pod; this skill is the fix.
Workflow
Step 1: Confirm the engine version is published
npm view @qvac/inference@<x.y.z> versionAn empty result means the engine release has not landed. STOP and release
@qvac/inference first (release-inference-<x.y.z>); everything below writes a
range that cannot resolve until it does.
Step 2: Point the SDK at that version
From the monorepo root:
node .agents/skills/qv-sdk-inference-version/scripts/set-inference-version.mjs --engine-version=<x.y.z>Sets packages/sdk version to <x.y.0> and its @qvac/inference range to
^<x.y.z> (~ from 1.0.0 onwards, where a caret would reach into the next
minor). For an SDK patch release whose major.minor already matches, add
--sdk-version=<x.y.z>.
Other flags: --dry-run, --check (exit 1 on a mismatch). With no
--engine-version, the script only checks the current manifest.
Step 3: Sync packages/sdk-python generated client
Requires a venv with gen extras (create once if missing):
cd packages/sdk-python
python3 -m venv .venv
.venv/bin/pip install -U pip
.venv/bin/pip install -e ".[gen]"
.venv/bin/python3 scripts/generate.py
.venv/bin/python3 scripts/generate.py --checkSDK_VERSION is stamped from packages/sdk/package.json, which Step 2 already
set. Commit any updates under
packages/sdk-python/src/tetherto/qvac_sdk/_generated/.
Step 3b: Sync packages/sdk-kotlin generated contract
checkVersionAlignment requires the Kotlin runtime version, its @qvac/sdk
range, and the generated SDK_VERSION to match. Set both version and the
@qvac/sdk dependency in packages/sdk-kotlin/package.json to the new version,
then regenerate:
python3 packages/sdk-kotlin/scripts/generate-contract.py
python3 packages/sdk-kotlin/scripts/generate-contract.py --checkSDK_VERSION is stamped from packages/sdk/package.json (Step 2 set it). Commit
the package.json repin and any updates under
packages/sdk-kotlin/src/commonMain/kotlin/io/tether/qvac/sdk/generated/.
Step 4: Verify
cd packages/sdk
npm run enforce-inference-versionsThis is the same check CI runs inside lint.
Step 5: Review and commit
git status should show (as applicable):
packages/sdk/package.jsonpackages/sdk-python/src/tetherto/qvac_sdk/_generated/**packages/sdk-kotlin/package.json+packages/sdk-kotlin/src/commonMain/kotlin/io/tether/qvac/sdk/generated/**
Commit alongside the release changelog. When invoked from /qv-sdk-changelog,
this is part of the release commit; when invoked from /qv-sdk-pr-create, part
of the PR's last commit.
When this skill is invoked from another skill
From /qv-sdk-changelog
/qv-sdk-changelog --package=sdk calls this skill after NOTICE generation for
sdk. Skip for any other --package value — an --package=inference release
does not touch the SDK.
From /qv-sdk-pr-create
If the PR diff touches the version of packages/sdk or its @qvac/inference
range, the parent skill prompts to run this skill first. Opt out with
--no-sync on the parent skill.
Quality Checklist
@qvac/inference@<x.y.z>resolves on npm before the range is writtenset-inference-version.mjsreports OK or an apply summarypackages/sdkversion and@qvac/inferencerange share a major.minor- Range operator is
^below 1.0.0,~from 1.0.0 onwards packages/sdk-pythongenerate.py --checkpassespackages/sdk-kotlingenerate-contract.py --checkpasses and./gradlew checkVersionAlignmentis greennpm run enforce-inference-versionspasses inpackages/sdk- Staged changes are only the version edits (+ the originating edit)
- No CI auto-commits of this skill
References
- Version checks (addon ranges + shared major.minor):
packages/sdk/scripts/enforce-inference-versions.ts - Python generator:
packages/sdk-python/scripts/generate.py - Kotlin generator:
packages/sdk-kotlin/scripts/generate-contract.py - Notice generator:
.agents/skills/qv-notice-generate/SKILL.md - Publish:
.github/workflows/publish-inference.yml,.github/workflows/publish-sdk.yml - Changelog / PR skills:
qv-sdk-changelog,qv-sdk-pr-create
In this repository56 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .cursor/rules/agent-integrations.mdcCursor rule
- .cursor/rules/cpp/string-api-conventions.mdcCursor rule
- .cursor/rules/devops/main.mdcCursor rule
- .cursor/rules/no-remote-code-execution.mdcCursor rule
- .cursor/rules/qip-triage.mdcCursor rule
- .cursor/rules/sdk/commit-and-pr-format.mdcCursor rule
- .cursor/rules/sdk/error-handling.mdcCursor rule
- .cursor/rules/sdk/first-class-product-parity.mdcCursor rule
- .cursor/rules/sdk/main.mdcCursor rule
- .cursor/rules/sdk/public-constants-contract.mdcCursor rule
- .cursor/rules/sdk/request-lifecycle-primitives.mdcCursor rule
- .cursor/rules/sdk/sdk-pod-packages.mdcCursor rule
- .cursor/rules/sdk/skill-authoring-guidelines.mdcCursor rule
- cpp-string-api-reviewSkill
- qv-addon-changelogSkill
- qv-addon-pr-createSkill
- qv-addon-release-notesSkill
- qv-agent-stack-syncSkill
- qv-asana-syncSkill
- qv-daily-work-updateSkill
- qv-dev-diary-setupSkill
- qv-dev-diarySkill
- qv-devops-daily-updateSkill
- qv-devops-pr-createSkill
- qv-devops-pr-reviewSkill
- qv-devops-pr-statusSkill
- qv-devops-runner-queueSkill
- qv-devops-why-my-pr-notSkill
- qv-docs-solution-createSkill
- qv-docs-updateSkill
- qv-holepunch-devSkill
- qv-merge-guard-wireSkill
- qv-mobile-test-dispatchSkill
- qv-notice-generateSkill
- qv-pr-mineSkill
- qv-pr-reviewSkill
- qv-pr-testSkill
- qv-qip-createSkill
- qv-qip-reviewSkill
- qv-qip-triageSkill
- qv-quality-reportingSkill
- qv-registry-autobase-patternsSkill
- qv-release-trainSkill
- qv-sdk-backmergeSkill
- qv-sdk-changelogSkill
- qv-sdk-e2e-createSkill
- qv-sdk-pr-createSkill
- qv-sdk-pr-statusSkill
- qv-sdk-update-modelsSkill
- qv-skill-listSkill
- setupSkill
- setupSkill
- qv-nx-ciSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

