This workflow bundle has six host delivery surfaces plus an optional managed CLI setup path:
- Codex — marketplace-first, with skills, agents, and plugin hooks (trust under
/hooks). - Claude Code — marketplace-first, with Claude-native hooks, commands, and generated agents.
- Cursor — local copy or Team Import today; public marketplace listing is pending. The bundle has medium-depth hooks.
- OpenCode — independent
@tdwhere/do-it-opencodenpm package with a global vendored fallback. The TypeScript plugin has per-message routing and selective bridges. - Pi — independent
@tdwhere/do-it-pinpm package or local-path install. One TypeScript extension, full skills, prompts, and optional namespaceddo-it.*package agents viapi-subagents. - Kimi Code — repo-root
kimi.plugin.jsoninstalled via/plugins install(per-user). Skills, commands, and manifest hooks; no custom subagents on this host, so agents are not shipped. - Optional / legacy:
do-it setupfor managed doctor, temp-home smoke, and migration from older global installs.
| Plane | Current repository evidence |
|---|---|
| Source/package | package.json, manifest, and plugin metadata declare 0.16.0; inventory is 11 user/runnable skills + 1 generated discovery entry + 10 agents. |
| Git tag | The 0.16.0 release commit must carry v0.16.0; version metadata alone is not a release. |
| Marketplace/npm | The release workflow publishes separate @tdwhere/do-it, @tdwhere/do-it-opencode, and @tdwhere/do-it-pi artifacts. Only post-workflow registry queries prove publication. Cursor marketplace listing remains pending. |
| Live host | Only host install/inspection evidence proves an active version. Source, package, tag, and live host may differ. |
- Every release ends with a
vX.Y.Zgit tag on the release commit — the tag is what triggers.github/workflows/release.yml(verify → pack → optional npm publish). A version bump without a tag is not a release. - After a release,
mainbumps to the next patch version (e.g.0.16.0) promptly, so a checkout never claims a published version it has already moved past. - Historical gap:
0.6.1–0.14.0shipped without tags (latest tag wasv0.6.0). Retro-tag old release commits only with maintainer confirmation; going forward, tag at release time.
2026-07-12(0.14.0source baseline; not a publication claim): meaning-centric skill buckets —do-it-router,do-it-code-quality,do-it-review,do-it-decide,do-it-verify, plusdo-it-handbook/do-it-context/do-it-skill-authoring. Agents reduced to 10. Plugin-first install;grill-pretoolremoved;grill-promptHeavy-only. SeeCHANGELOG.md.0.14.1: adds the Kimi and Pi adapters, default-off retrospective and strict external-action profiles, Windows hardening, and independent npm delivery for root, OpenCode, and Pi packages. SeeCHANGELOG.md.2026-04-24: earlier do-it rewrite installed a larger process-skill set (planning, grill, review-loop, …). Those names are deleted in0.14.0; use the migration table in the changelog.
# Codex
codex plugin marketplace add tdwhere123/do-it
codex plugin add do-it@tdwhere-do-it
# then trust plugin hooks under /hooks
# Claude Code
# /plugin marketplace add tdwhere123/do-it && /plugin install do-it@do-it
# Cursor — no Claude /plugin commands; copy (not external symlink):
# npm run install:cursor-local
# then Developer: Reload Window. Or: do-it setup --target=cursor
# Team Import from Repo / public marketplace when listed
# OpenCode — use npm only after `npm view ... version` succeeds
# opencode plugin @tdwhere/do-it-opencode -g
# npm run install:opencode-global # pre-publication/outage fallback
# Pi — use npm only after `npm view ... version` succeeds
# pi install npm:@tdwhere/do-it-pi
# npm run install:pi-global # pre-publication/development, then /reload
# optional executable package agents: pi install npm:pi-subagents
# Kimi Code — repo-root plugin, no build step:
# /plugins install https://github.com/tdwhere123/do-it (then /reload)
# local checkout smoke: /plugins install /path/to/do-itOptional CLI (legacy / doctor / migration):
npm install -g https://github.com/tdwhere123/do-it/archive/refs/heads/main.tar.gz
do-it setupAfter npm view @tdwhere/do-it@0.16.0 version succeeds, the root registry
package provides the optional managed CLI. Before publication, use the GitHub
or checkout-local path above.
npm install -g @tdwhere/do-it
do-it setupThe Codex plugin marketplace files follow the repo-local marketplace shape:
.agents/plugins/marketplace.jsonplugins/do-it/.codex-plugin/plugin.jsonplugins/do-it/skills/plugins/do-it/agents/plugins/do-it/hooks/(plugin-local hooks; trust under/hooks)
Regenerate the bundle from manifest.json:
npm run build:codex-pluginRegister the marketplace from a checkout, then install:
CODEX_HOME=/tmp/do-it-plugin-test codex plugin marketplace add /path/to/do-it
CODEX_HOME=/tmp/do-it-plugin-test codex plugin add do-it@tdwhere-do-itPlugin hooks are the primary enforcement path. Global do-it setup is optional
for doctor and migration — do not require pairing it with marketplace install.
| Host surface | Skills | Agents | Commands | Hooks | Doctor | Verification command |
|---|---|---|---|---|---|---|
| Codex plugin marketplace | Yes, under plugins/do-it/skills/ |
Yes, under plugins/do-it/agents/ |
No slash command surface | Yes, plugin hooks (trust under /hooks) |
Optional via CLI | npm run build:codex-plugin then CODEX_HOME=/tmp/do-it-plugin-test codex plugin marketplace add /path/to/do-it and codex plugin add do-it@tdwhere-do-it |
| Codex CLI setup (legacy) | Yes, from manifest.json |
No — bundled agents are plugin-owned; legacy CLI only supports safe migration | CLI do-it only |
Yes, root hooks.json plus hooks/ |
Yes, default target | CODEX_HOME=/tmp/do-it-codex-test npm exec --package . -- do-it setup |
| Claude Code plugin | Yes, from skills/do-it/ |
Yes, under dist/claude/agents/ |
Yes, commands/ |
Yes, plugin hooks/hooks.json |
Yes, --target=claude |
CLAUDE_PLUGIN_ROOT_OVERRIDE=/tmp/do-it-claude-test npm exec --package . -- do-it setup --target=claude |
| Cursor local / Team Import (public listing pending) | Full 11 (ALL_SKILLS) plus generated discovery/reference files |
Yes, under plugins/do-it-cursor/agents/ |
No | Medium: sessionStart, beforeSubmitPrompt, postToolUse/afterFileEdit, advisory-evidence stop |
Managed CLI setup only; not standalone local copy | npm run install:cursor-local, Reload Window, inspect exact directory + Hooks UI; or do-it setup --target=cursor for managed doctor |
| OpenCode plugin | Yes, under plugins/do-it-opencode/skills/ |
Yes, under plugins/do-it-opencode/agents/ |
No | Medium-Light: transform bootstrap, tool.execute.after, session.idle soft reminder |
No CLI doctor | npm run build:opencode-plugin && npm run test-opencode |
| Pi package | Yes, under plugins/do-it-pi/skills/ |
Ten do-it.* package agents when optional pi-subagents is installed; prompts remain available without it |
Prompt templates | Medium: root router/grill, root write advice, soft next-turn verification reminder; child stance only | /do-it-status |
npm run build:pi-plugin && npm --prefix plugins/do-it-pi test && node scripts/smoke-pi-package.mjs; live: /reload, /do-it-status, and package-agent discovery |
| Kimi Code plugin (repo root) | Full 11 via root kimi.plugin.json skills |
No — host has no custom subagents | Yes, /do-it:* namespaced |
Full-minus-subagent: manifest hooks[] (UserPromptSubmit×2, including serialized router/grill via prompt-submit; PostToolUse; Stop) |
No — /plugins info do-it is the host-side check |
npm run validate:kimi-plugin; live: /plugins install /path/to/do-it then /reload |
- Meaning-centric skill buckets; migration table in CHANGELOG.
- Agents: 10 retained after merges.
- Hooks: Heavy-only
grill-prompt;grill-pretoolremoved; quality families overhaul; Codex plugin bundles hooks. - Host-native delivery: marketplace-first for Codex / Claude; local copy or Team Import for Cursor pending public listing; global vendor / package-name registration for OpenCode pending npm publication.
- Hotfix on the four-host line: safer
verification-gateturn slicing, hardened write-quality scan edge cases, corrected skillreferences/links. - OpenCode build requires
tsc;prepackexpands Cursor and OpenCode plugin builds.
- Four-host adapter matrix: Codex, Claude, Cursor, OpenCode share one workflow kernel.
- Merged advisory
write-quality-lintreplaces dual PostToolUsecomments-lint+anti-patterns-lint(legacy wrappers exec into merged script for one release). - UserPromptSubmit chain compressed for Standard turns; tier/DIM gates write-quality.
- Skills
references/sheets externalized; harness matrix atdocs/harness-adapter-matrix.md. - Cursor bundle and OpenCode TS plugin source ship from
plugins/; shipping source does not prove Cursor public listing or OpenCode npm publication.
From the repository root (optional CLI path):
npm exec --package . -- do-it setup
npm exec --package . -- do-it install
npm exec --package . -- do-it doctorThe package bin is do-it, and it delegates to install/manage.mjs. The shell
wrappers remain available:
./install/install.sh
./install/doctor.shSet CODEX_HOME=/path/to/codex-home to test or install into a temporary target.
- CI (
.github/workflows/ci.yml): matrix tests, generated-artifact drift checks, Cursor local-install smoke (real copy underplugins/local),npm run smoke:package, and dedicated Linux/Windows Pi build, test, Git Bash, discovery, and dependency-absent package smoke jobs on Node 22. - Release (
.github/workflows/release.yml): onv*tags or manual dispatch — full verify,npm run validate:release, exact root/OpenCode/Pi package smoke, then separate verified tarballs and independent publish jobs for all three npm packages.
Prefer publishing the exact tarballs that already passed release validation:
VERSION=0.16.0
npm run validate:release -- "v${VERSION}"
npm run build:opencode-plugin
npm run build:pi-plugin
npm --prefix plugins/do-it-pi test
npm pack --ignore-scripts
(cd plugins/do-it-opencode && npm pack --ignore-scripts --pack-destination ../..)
(cd plugins/do-it-pi && npm pack --ignore-scripts --pack-destination ../..)
ROOT_TARBALL="./tdwhere-do-it-${VERSION}.tgz"
OPENCODE_TARBALL="./tdwhere-do-it-opencode-${VERSION}.tgz"
PI_TARBALL="./tdwhere-do-it-pi-${VERSION}.tgz"
npm run smoke:package -- "$ROOT_TARBALL" "$OPENCODE_TARBALL"
node scripts/smoke-pi-package.mjs "$PI_TARBALL"
npm publish "$ROOT_TARBALL" --access public
npm publish "$OPENCODE_TARBALL" --access public
npm publish "$PI_TARBALL" --access publicKeep the root package scoped and keep do-it as its bin. Install from the
registry only after npm view @tdwhere/do-it@0.16.0 version succeeds; before
publication, use the exact local tarball from the verified pack step.
npm install -g @tdwhere/do-it
do-it setup # optional / legacyThe release workflow produces separate root, OpenCode, and Pi artifacts. Publishing one must not select another package's tarball by a broad wildcard.
VERSION=0.16.0
npm pack --ignore-scripts
npm run smoke:package -- "./tdwhere-do-it-${VERSION}.tgz"With one or more .tgz arguments, smoke:package installs and exercises those
artifacts and does not repack from checkout. With no arguments it packs both the
root and OpenCode packages from the working tree, then smokes them (CI default).
Use the generated tarball with npm install --global or
npm exec --package "./tdwhere-do-it-${VERSION}.tgz" -- do-it setup when testing
a release artifact.
- Run
git diff --checkand inspect the intended diff. - Run
npm test. - Run
npm run validate:agentsandnpm run validate:core-skill-boundaries. - Build Claude, Codex, Cursor, and OpenCode artifacts and check generated drift.
- Run
npm run build:pi-plugin,npm --prefix plugins/do-it-pi test, and an exact-tarballnode scripts/smoke-pi-package.mjs <pi.tgz>check. - On Windows, require Git Bash and prove Pi hook execution plus timeout/abort process-tree cleanup; do not skip Bash-dependent tests.
- Run
npm run validate:kimi-plugin(the Kimi root manifest ships unbuilt). - Smoke Codex plugin marketplace + trust hooks under
/hooks. - Optional: run isolated managed CLI setup and doctor checks for Codex, Claude, and Cursor.
- Smoke advisory hook behavior: router, write-quality, verification, and
child stance. No host contains
grill-pretool; only Claude may contain the named, default-off strict external-action profile. - In a reloaded Pi session, run
/do-it-statusfor Bash, hook diagnostics, andsubagenttool registration. Separately usepi-subagentsdiscovery to confirmdo-it.*agents are executable; without it, confirm extension, skills, and prompts remain available with explicit degradation. - Run
npm run validate:release -- vX.Y.Z; it must check both Pi lockfile version fields as well as the other host metadata. - Run
npm run smoke:packagefor root/OpenCode and smoke the independently packed Pi tarball. - Confirm
manifest.jsonmatches the on-disk inventory (11 user/runnable skills + 1 generated discovery entry, 10 agents). - Confirm root tarball contents remain separate from
plugins/do-it-pi, and the Pi tarball contains only its README/license/runtime assets. - Confirm temporary files, machine-local settings,
node_modules, test build output, and retired forced-tool extensions are absent from both tarballs. - Confirm simulated legacy upgrades and replacement failures retain the existing install-state safety guarantees.
- Confirm managed
doctorfails for missing/stale install state; do not use it as proof for Cursor's standalone local-copy installer or Pi package load. - Confirm Codex agent TOML and generated Claude frontmatter retain their supported field/model contracts.
- Record source, package, temp-install, live-host, and registry truth planes separately. A pushed commit is not proof of npm publication or live load.