Skip to content

fix(pstack): name a callable UI driver and a todolist tool on Claude Code - #73

Merged
michael-denyer merged 2 commits into
mainfrom
verify-driver-and-todolist-fallback
Sep 11, 2026
Merged

michael-denyer merged 2 commits into
mainfrom
verify-driver-and-todolist-fallback

Conversation

@michael-denyer

@michael-denyer michael-denyer commented Sep 11, 2026

Copy link
Copy Markdown
Owner

Why

Claude Code's bundled /verify is 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-mode Non-negotiables. Playbooks refer to that policy, and worker briefs carry the selected skill path or exact commands. The policy uses a project verify skill for UIs and falls back to run. The generator writes .claude/skills/verify/; maintenance still accepts older verify-* skills. The single control skilldriver skill substitution 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.md with 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.
  • Markdown lint: 152 files, 0 issues. git diff --check passes.
  • Sync comparison against the local checkout of upstream e8d856f, using syncComponent with the CLI's derivation and exclusions: 57 forked, 66 unchanged, 35 excluded; no writes, conflicts, or denylist hits. The fork count is unchanged.
  • Before the fixes, regression checks failed on orchestrate.md's obsolete UI instruction and the stale sync diagnostic; they pass after the fixes.
  • Earlier isolated Claude Code 2.1.252 probes invoked the root verify and nested apps/web:verify skills successfully. Skill naming and placement are unchanged by this follow-up; the probes were not repeated.

Closes #71
Closes #72

…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>
@coldtea-pr-lens

coldtea-pr-lens Bot commented Sep 11, 2026

Copy link
Copy Markdown

◈ PR Lens

🟢 +0 new · 🟠 ~8 changed · 🔴 -0 removed · 1 flow · 20 files · commit 160230b


Architecture

Architecture diagram for michael-denyer/pstack-claude at 160230b

8 components touched across 5 lanes.

Open the interactive canvas


Inside the changed components — 2 views

Component view — Driver policy and verification

poteto-mode centralizes driver selection in Non-negotiables, redirecting playbooks to project .claude/skills/verify/ or fallback run.

Architecture view of Component view — Driver policy and verification in michael-denyer/pstack-claude

Component view — Sync substitutions and rule tests

Sync substitution rules simplify control skill translation and test suites pin rules for issue #71 and #72.

Architecture view of Component view — Sync substitutions and rule tests in michael-denyer/pstack-claude

Data flow

Data flow diagram for michael-denyer/pstack-claude at 160230b

Resolving and running app verification

Open the interactive canvas


View

  • Architecture lens
  • Data flow lens
  • Expand every detail

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
  • Run npx skills add coldteadotai/pr-lens, then tell your coding agent: "Diagram the change you just made with PR Lens and attach it to the pull request."
  • Run npx @coldtea/pr-lens-cli analyze --base origin/main on a branch, then npx @coldtea/pr-lens-cli render .pr-lens/graph.json. Same lenses, your own model key, before the pull request exists.
  • Untick Architecture lens or Data flow lens under View to hide a diagram, or tick Expand every detail to open every section. The comment redraws in a few seconds.
  • Click the link under each diagram to open it on a canvas you can zoom, pan and step through.
  • The diagrams are links. Click one to open it on the canvas, then press W or click play to walk through the change.
  • The CLI's render reads .github/pr-lens.yml and applies your renames, exclusions and lane pins at draw time.
  • Set github.comment.collapsed: true in .github/pr-lens.yml to fold the comment behind one View architecture and data flow row. Drawing still runs on every push.
  • Add .github/workflows/pr-lens.yml with coldteadotai/pr-lens/packages/action@v0 and your model provider's key as its api-key to run PR Lens from your own CI. Any /chat/completions endpoint works.
  • Push a commit and the comment redraws for the new head. A slow older run never overwrites a newer one.
  • Switch GitHub to dark mode and the diagrams follow. The moving dots are this pull request's data in motion.

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.

❤️ Share

@michael-denyer
michael-denyer merged commit 4580501 into main Sep 11, 2026
10 checks passed
@michael-denyer
michael-denyer deleted the verify-driver-and-todolist-fallback branch September 11, 2026 22:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant