Repository navigation
0.9.130
pstack now installs as a native Kimi Code CLI plugin. The root kimi.plugin.json points Kimi at the shared skills tree and adds the routing instruction in kimi-instructions.md to the system prompt while the plugin is enabled. This is the first release that carries the manifest, which the README's Kimi install waits for. In a fresh session, run /plugins install https://github.com/michael-denyer/pstack-claude and /reload, and invoke a skill as /skill:pstack:poteto-mode. The new kimi-tools.md maps Claude tools to Kimi's, with Agent and its built-in coder, explore, and plan agents, and CronCreate for a one-time wake-up. Kimi reads no session hook line, so /plugins disable pstack is how to turn routing off, and setup-pstack writes no effort or hook lines there. On Kimi Code CLI 2.4.1 for macOS, installation and delivery of routing and skill content to a synthetic provider were verified; model compliance is untested. @donbeave added Kimi support in #394.
pstack now loads as a native Grok Build plugin from a local checkout, with grok plugin install "$PWD/plugins/pstack" --trust and grok plugin enable pstack. .grok-plugin/plugin.json lists the shared skills and a Grok-only pstack-routing skill. Grok discards SessionStart hook output, so that skill's description carries the poteto-mode hint instead. The model may not follow it, and session hook: off does not turn it off; disabling the plugin does. The new grok.md maps Claude tools to Grok's, with spawn_subagent for Agent. grok plugin update does not refresh a local install, so the README gives the update steps. On Grok Build 1.0.70 for macOS, tests/grok-smoke.py checked that a synthetic provider received the routing skill description and explicit skill content. @donbeave added Grok support in #398.
pstack now installs as a native OMP plugin through the marketplace, with omp plugin marketplace add michael-denyer/pstack-claude and omp plugin install --scope user pstack@pstack-claude. The new plugins/pstack/package.json declares the extension in omp/index.mjs, which adds the poteto-mode mandate before each main-agent turn and points main and subagent turns at the new omp-tools.md. It has the agent read each pstack:<name> skill from the installed plugin's files, so the agent never picks a same-named skill from another source. session hook: off in ~/.omp/pstack-models.md turns routing off for every OMP profile, and setup-pstack on OMP sets only that line, leaving models to OMP's own modelRoles. OMP 18.16.0 shares one plugin cache across scopes, so an upgrade or removal can affect other installations (OMP issue 16827). On OMP 18.16.0, installation from a local marketplace, skill access, and the routing toggle were verified with a synthetic provider; model compliance is untested. @donbeave added OMP support in #396.
OpenCode 2 now has a native plugin in place of the ~/.agents/skills install. Add the checkout's plugins/pstack/opencode directory to the plugins array in ~/.config/opencode/opencode.jsonc, or install the Git package with opencode plugin add 'github:michael-denyer/pstack-claude#main'; the root package.json now exports the plugin as ./server. The plugin in opencode/index.js registers each skill as pstack-<name> and adds the routing instruction in session-start-opencode.md at each model step in root sessions, including after compaction. It skips routing when a pstack- skill ID resolves to another installation, and session hook: off in ${XDG_CONFIG_HOME:-~/.config}/opencode/pstack-models.md turns it off. If you linked pstack skills into ~/.agents/skills before, remove the links that point at your pstack checkout first. OpenCode 1 is unsupported. The new opencode-tools.md maps Claude tools to OpenCode's. Explicit activation and routing were tested on OpenCode 2.2.5 with a synthetic loopback provider. CLI delegation was verified earlier, on 2.0.30. Real model behavior with this plugin is untested. @donbeave added OpenCode 2 support in #397.
Kimi, Grok, OMP, and OpenCode join RUNTIMES in tools/runtimes.mjs, so the generator stamps their manifest versions and the Model names section of each mapping, and checks each manifest. poteto-mode's Platform Adaptation and setup-pstack's runtime table name each one. tests/kimi.test.mjs, tests/grok.test.mjs, tests/omp.test.mjs, and tests/opencode.test.mjs check that each mapping covers the Claude terms the skills use.
On Kimi, setup-pstack now says in steps 1 and 6 and in the sheet header that inherit-parent and auto omit model. Kimi then runs the subagent on its configured [secondary_model] default when one is set, and on the parent's model otherwise, so these aliases do not always mean the parent's model. When the Agent tool has no model parameter, setup offers only those two aliases; Kimi 2.5.1 shows the parameter only for a pool of two or more models. Step 2 keeps a model ID as written, including one that starts with claude-, instead of rewriting it to a family name. kimi-tools.md says the same, and with no sheet the agent omits model. @donbeave changed this in #407.
On Grok, setup-pstack read models from the Agent tool and the session model selector, but Grok dispatches through spawn_subagent, whose description lists the models a subagent can use. Step 1 now offers those models. When subagent model inheritance hides the model argument, setup offers only inherit-parent and auto and notes that configured subagent overrides still apply. Step 2 keeps a full claude- model ID the tool lists instead of rewriting it to a family name. @donbeave fixed this in #408.
With session hook: off, the Antigravity SessionStart hook now prints {} where it printed nothing, because Antigravity's hooks documentation says a hook returns its output on stdout as JSON. {} carries no injectSteps, so no mandate loads, and the agy off cases in tests/session-hook.test.mjs parse the output as JSON. @donbeave changed this in #405.
The README's MiniMax Code update steps no longer delete the installed copy. Record the plugin's enabled state, quit every mcode process, and move plugins/pstack to an unused path outside plugins/, since MiniMax loads every directory under plugins/. Then run git pull and the cp line again, and restore the enabled state. A first install checks that plugins/pstack does not already exist. The reference table now records that on MiniMax Code 0.7.4, synthetic-provider sessions delivered routing and the explicit pstack:poteto-mode skill with the plugin enabled and omitted them with it disabled. Agent dispatch and real-model compliance remain unverified. @donbeave changed this in #401.
worktree-audit.mjs no longer stalls under Bun on macOS. It named each sibling symlink with realpathSync, and Bun opens a link's target to name it. In a macOS 27.2 guest, that open on the autofs /home link hung the worktree-audit tests. Under Bun on macOS, the audit now matches links by stat identity alone. Under Node, which the script's shebang names, and on other platforms, it keeps the name match. @donbeave changed this in #406.
deslop diffs against the branch's base, where it diffed against main. The base is the PR's base branch, else the branch this one was cut from, else the default branch, and uncommitted changes count. After editing, deslop reruns the checks that verified the change and reverts any edit whose check fails. On the how simple path, the explainer prompt tells a lone explainer that no explorers ran, so it traces the code itself; the old prompt told it the explorers had already done that work. The session-pickup playbook now verifies inherited claims before it routes the remaining work. Step 4 used to route and end the playbook, so the verification in step 5 came after the end. codex-tools.md maps Codex rollouts under ${CODEX_HOME:-~/.codex}/sessions/ and archived_sessions/, including zstd-compressed .jsonl.zst ones read with zstd -dc, and keeps only rollouts whose cwd is the workspace or one of its worktrees. recall and show-me-your-work now send Codex to that mapping, so they read Codex history instead of Claude Code's projects directory, and show-me-your-work reports that its audit could not run when CODEX_THREAD_ID is unset. tools/forks.json declares the deslop and explainer-prompt edits as policy forks since 0.9.130. @wattanartongtipsukon-create made these changes in #400.