一键导入
release
Cut an npm release of @kvnwolf/dobby from the main checkout — inferred bump, raw-TS tarball gate, publish, tag, GitHub release with changelog.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Cut an npm release of @kvnwolf/dobby from the main checkout — inferred bump, raw-TS tarball gate, publish, tag, GitHub release with changelog.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Syncs documentation, authors the commit message + PR body, runs the gate and performs the git/gh ceremony directly (stage → `dobby check --fix` → commit → push → PR), then monitors the PR to a verdict. Use when committing code, finishing a task, pushing changes, or creating a PR.
One-pass migration of a consumer repo off vite-plus onto @kvnwolf/dobby — swap deps, thin `tsconfig.json` and delete the now-default tool configs (biome/vite/vitest/drizzle, kept only for real deltas), move files to canonical paths, regenerate dobby.config.json, drop .conductor, rewire CI + Vercel build, verify with `dobby check`. Run in a consumer repo, once, after updating the dobby plugin.
Set up a repo (greenfield or existing) for the work skills — interview, install @kvnwolf/dobby, scaffold the base files + thin tsconfig, write the dobby.config.json contract. Run once.
Disciplined diagnosis loop for hard bugs — build a fast deterministic feedback loop, rank falsifiable hypotheses, instrument one variable at a time. Use when something is failing, a bug is intermittent or non-obvious, or there's a performance regression.
Dispatch a scoped, ad-hoc task to a worker agent (or a few in parallel) and review what comes back — without the full /dobby:execute plan-and-waves ceremony. Use for a small fix or change, or a bounded investigation, when you don't need a STATE.md spec.
Build an approved plan's tasks — per task, separate agents implement → code-review → verify in a loop until both pass. Use to execute a task plan, standalone or as the execute stage after /dobby:spec.
基于 SOC 职业分类
| name | release |
| description | Cut an npm release of @kvnwolf/dobby from the main checkout — inferred bump, raw-TS tarball gate, publish, tag, GitHub release with changelog. |
| disable-model-invocation | true |
| argument-hint | [patch|minor|major] |
Cut ONE release of @kvnwolf/dobby (the cli/ workspace) to npm. Every step ends on a gate — a checkable condition; stop and report at the first gate that fails. The why behind the mechanics (raw-TS publish — bin → src/index.ts, no bundle, no flip — and main-only releases) lives in docs/adr/0008-zero-framework-portable-cli.md and docs/adr/0014-publish-all-typescript.md — don't re-derive or "simplify" them.
From the repo root, ALL must pass:
[ "$(git rev-parse --git-dir)" = "$(git rev-parse --git-common-dir)" ] → true.git rev-parse --abbrev-ref HEAD → main; git status --porcelain → empty; git pull --ff-only succeeds.gh run list --branch main --limit 1 → completed/success (if still running, gh run watch it to completion first).npm whoami prints a user. Note whoami passing does NOT guarantee publish rights: an interactive-login token fails at publish time with EOTP (the account's 2FA demands a per-publish one-time password). The working setup is a granular access token with write access in ~/.npmrc (npmjs.com → Access Tokens → Granular; bypasses the per-publish OTP — field-proven on v0.1.0). If publish later hits EOTP, have the user create one and replace the token — theirs to do.npm view @kvnwolf/dobby version — note the published version (an E404 means first release; fine).patch/minor/major → use it, skip inference.git describe --tags --abbrev=0 --match 'v*'. No tag yet (first release) → nothing to infer from; AskUserQuestion for the bump (or publish the current version as-is if it was never published).git log <last-tag>..HEAD --pretty=format:'%h %s' (subjects) and git log <last-tag>..HEAD --pretty=%B | grep -c 'BREAKING CHANGE' (bodies).! before the : OR any BREAKING CHANGE body → major; else any feat subject → minor; else → patch.<1.0.0 → AskUserQuestion (true 1.0.0 vs the 0.x convention of shipping breaking as minor) — don't cross to 1.0.0 silently.cli/package.json's version — NOT npm version. npm version walks the surrounding workspace and dies with EUNSUPPORTEDPROTOCOL catalog: (it wrote the bump but exited 1 and killed the command chain — field-hit on v0.2.0). One-liner that computes the increment, preserves the tab indentation, and prints the new version as V:
V=$(bun --eval '
const p = "cli/package.json";
const j = await Bun.file(p).json();
const [maj, min, pat] = j.version.split(".").map(Number);
const bump = process.argv[1];
j.version = bump === "major" ? `${maj + 1}.0.0`
: bump === "minor" ? `${maj}.${min + 1}.0`
: `${maj}.${min}.${pat + 1}`;
await Bun.write(p, JSON.stringify(j, null, "\t") + "\n");
console.log(j.version);
' <bump>)
<V> into plugin/.claude-plugin/plugin.json's version — the kit versions in lockstep; the CLI's npm version owns the number, plugin.json mirrors it (ADR-0007).git add cli/package.json plugin/.claude-plugin/plugin.json && git commit -m "release: v<V>". Do NOT push — pushing gates on a successful publish (Step 5). A failed publish is undone with git reset --hard HEAD~1 while the commit is still local.cd cli && bun pm pack and read the printed file list.src/index.ts (the Bun-shebang bin) and the preset assets — biome/*, tsconfig*.json, the *.mjs presets, their *.d.mts type siblings, and knip.base.jsonc.src/run.test.ts and __fixtures__ (tests never ship).dist/ anywhere in the list.__fixtures__, or any dist/ → stop, do not publish.cd cli && npm publish --access public (scoped package needs public access; add --tag next for a prerelease). Plain npm — NOT bun publish: bun 1.3.x does not read ~/.npmrc's _authToken for publish and dies with "missing authentication" (field-hit on v0.1.0). npm is on PATH via the bundled toolchain.npm view @kvnwolf/dobby version → <V>. Propagation can lag MINUTES on a first publish — the package may 404 even authenticated while npm processes it (it shows on the npmjs.com web page first). Don't panic on the 404 if npm publish printed + @kvnwolf/dobby@<V>; Step 7's global install is the definitive smoke.src/index.ts, files allowlist), so the tree is clean apart from the pack tarball.find cli -maxdepth 1 -name '*.tgz' -delete (find, not a bare glob — zsh aborts the whole command when cli/*.tgz has no match).git tag v<V> && git push origin main v<V>git status --porcelain → empty.git show --name-only --pretty=format: <sha>): only cli/** → CLI; only plugin/** → Plugin; anything else or both → Kit. Sections in this order, empty sections/groups omitted, each line - <subject> (<short-sha>):
### Plugin, ### CLI, ### Kit — and inside each: #### Breaking changes (commits that matched the major rule), #### Features (feat), #### Fixes (fix), #### Other (the rest).Initial release.gh release create v<V> --title "v<V>" --notes "<notes>"gh release view v<V> exits 0.bun install -g @kvnwolf/dobby@<V> — refresh this machine's global dobby to the just-published version (the machine runs the latest release; bun link is only for hacking on the CLI itself). On a fresh publish the registry may still 404 — retry every ~20s for a few minutes before declaring failure.dobby --version → prints <V>. This is the definitive proof that the raw-TS bin runs via its Bun shebang end-to-end from the consumer install path. Plain-node execution of the published bin is NOT supported — it requires Bun on PATH (the whole fleet is Bun — ADR-0014); don't smoke it under node.cli/package.json (never npm version — the catalog: trap), with plugin.json mirrored to the same version (lockstep); committed as release: v<V>; nothing pushed before the publish succeededsrc/index.ts + preset assets (biome/*, tsconfig*.json, *.mjs, *.d.mts, knip.base.jsonc) present; src/run.test.ts and __fixtures__ absent; no dist/npm publish --access public (never bun publish); registry shows <V> (first-publish propagation can take minutes)v<V> tag pushed with main; pack tarball cleaned; tree clean (no flip to restore — the repo IS the publish shape)v<V> created with the changelog grouped by surface (Plugin/CLI/Kit) from the same commit range as the bumpbun install -g @kvnwolf/dobby@<V> and dobby --version printed <V> (proves the raw-TS Bun-shebang bin runs; plain-node unsupported)