fix(pstack): name a callable UI driver and a todolist tool on Claude Code - #73
Conversation
…Code ## Why Two reports from @Graham3324. The playbooks name `verify` as the UI driver and call it a Claude Code built-in, but Claude Code's bundled `/verify` runs only when the user types it, so an agent following a playbook improvised its own driver at every UI step (#71). The todolist rule names no tool, and Claude Code 2.1.267 ships its task tools off, so a skipped playbook step left no trace (#72). A project skill named `verify` at the repo root replaces the bundled one from Claude Code 2.1.200, and the model can call that. The generator now writes that name, and every driver line reads "`run`, or the project `verify` skill for UIs", with `run` as the fallback because it drives browser and Electron apps too. poteto-mode names `TaskCreate` and `TaskUpdate` as the todolist, the `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` switch that turns them on, and an uncommitted `todo.md` in the work dir as the fallback. ## Scope - The driver replacement in `tools/substitutions.json`, and the same phrase in `poteto-mode/SKILL.md` and eleven playbook lines. - `create-verification-skill` writes `.claude/skills/verify/` instead of `verify-<app>/`. `maintain-verification-skill` locates either. - The Platform Adaptation section of `poteto-mode/SKILL.md` names the task tools and the file fallback. The README install section and `codex-tools.md` say the same. - The README dependency note and the CHANGES substitution table stop calling `verify` a built-in the model can invoke. - Version 0.9.29, the changelog entry, and the three manifests stamped by `tools/generate.mjs`. ## Verification - `bun test` reports 236 pass and 0 fail after `bun install --frozen-lockfile` in `plugins/pstack/skills/poteto-mode/scripts`. - `bun tools/generate.mjs` stamps 0.9.29 and reports the 31 Codex prompts current. `tests/skill-collision-repro.sh` passes. - This session's Skill tool lists `run` and not `verify`, and the session has no `TodoWrite` or `TaskCreate`, which matches both reports. Closes #71 Closes #72 Co-authored-by: Graham3324 <13489963+Graham3324@users.noreply.github.com>
◈ PR Lens
Architecture 8 components touched across 5 lanes. Inside the changed components — 2 viewsComponent view — Driver policy and verification poteto-mode centralizes driver selection in Non-negotiables, redirecting playbooks to project .claude/skills/verify/ or fallback run. Component view — Sync substitutions and rule tests Sync substitution rules simplify control skill translation and test suites pin rules for issue #71 and #72. Data flow
View
Tip Open a diagram on the canvas, then press W or click play to walk through the change one step at a time. 🪧 More tips
Thanks for using PR Lens! It's built by Coldtea, free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
Why
Claude Code's bundled
/verifyis user-invocable only, so an agent following the UI playbooks could not call the named driver. The todolist rule also named no concrete tool or fallback when task tools were unavailable.What changes
Driver selection lives in
poteto-modeNon-negotiables. Playbooks refer to that policy, and worker briefs carry the selected skill path or exact commands. The policy uses a projectverifyskill for UIs and falls back torun. The generator writes.claude/skills/verify/; maintenance still accepts olderverify-*skills. The singlecontrol skill→driver skillsubstitution keeps platform selection out of the sync rules, and sync diagnostics point to the policy. The generator retains both control-skill and driver-skill discovery phrases.The checklist uses available task-tracking tools or an uncommitted
todo.mdwith verbatim playbook steps and skip reasons. The setup guidance links to the documented task-tool opt-in and describes model-dependent defaults. The version requirement for project skill replacement links to the official Claude Code documentation.Issue-linked tests protect the driver policy, generator name, legacy maintenance lookup, and checklist fallback. New denylist entries let the existing installed-plugin sync test catch obsolete UI instructions. Tests also check the emitted repair advice and permit legitimate project and legacy skill references.
Version 0.9.29; upstream pin remains
e8d856f.Verification
bun test: 244 passed, 0 failed.bun tools/generate.mjs: generated files current; layout and local links valid.git diff --checkpasses.e8d856f, usingsyncComponentwith the CLI's derivation and exclusions: 57 forked, 66 unchanged, 35 excluded; no writes, conflicts, or denylist hits. The fork count is unchanged.orchestrate.md's obsolete UI instruction and the stale sync diagnostic; they pass after the fixes.verifyand nestedapps/web:verifyskills successfully. Skill naming and placement are unchanged by this follow-up; the probes were not repeated.Closes #71
Closes #72