Skip to content

fix(templates): replace Claude-only TodoWrite instruction with a generic todo list#1403

Open
clay-good wants to merge 1 commit into
mainfrom
fix/generic-todo-tracking
Open

fix(templates): replace Claude-only TodoWrite instruction with a generic todo list#1403
clay-good wants to merge 1 commit into
mainfrom
fix/generic-todo-tracking

Conversation

@clay-good

@clay-good clay-good commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Status: Ready for review. CI green on all platforms; CodeRabbit reviewed with no actionable comments. Full suite: 2,027 passed; the only local failures are the 17 known environment-only ZshInstaller tests (#1321, fixed separately in #1400).

What was wrong

The generated openspec-propose and openspec-ff-change skills (and their /opsx:propose / /opsx:ff commands) instructed agents to "Use the TodoWrite tool to track progress through the artifacts." TodoWrite is a Claude Code-specific tool — the same templates generate commands for every supported tool, so Codex, Cursor, Gemini, Copilot, and the rest were told to use a tool they don't have. Reported in #643 (and TodoWrite is one of the unsupported references reported for Codex in #1103); the maintainer note on #643 already pointed the way: "this instruction probably needs to be generic anyways."

How it was fixed

The instruction is now runtime-neutral:

-   Use the **TodoWrite tool** to track progress through the artifacts.
+   Use a todo list to track progress through the artifacts.

Applied to all 4 template sites (propose + ff-change, skill and command variants), with the static skills/ copies regenerated via npm run generate:skills and the golden hashes in skill-templates-parity.test.ts updated. Tools with a native todo mechanism (Claude Code) still use it; tools without one track progress however they normally would. No behavior, CLI, or schema changes.

Proof

End-to-end from the built CLI (init --tools claude,codex,cursor, plus a custom-profile run that installs the ff workflow), then inspecting every generated asset:

$ grep -rn "TodoWrite" <project>          # → no matches
$ grep -c "Use a todo list to track progress through the artifacts" ...
.claude/commands/opsx/ff.md:1
.claude/skills/openspec-ff-change/SKILL.md:1
.codex/skills/openspec-ff-change/SKILL.md:1
.cursor/commands/opsx-ff.md:1
.cursor/skills/openspec-ff-change/SKILL.md:1

(Same result for the propose assets across all three tools.)

Notes

Fixes #643

🤖 Generated with Claude Code

…ric todo list

The propose and ff-change skill/command templates told agents to use the
TodoWrite tool, which only exists in Claude Code. The same templates
generate commands for every supported tool, so Codex, Cursor, Gemini,
and the rest were instructed to use a tool they don't have. The
instruction is now runtime-neutral.

Fixes #643

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@clay-good
clay-good requested a review from TabishB as a code owner July 21, 2026 00:49
@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Propose and fast-forward workflow instructions now use generic todo lists instead of the Claude-specific TodoWrite tool. Corresponding generated skill content, parity hashes, and the package patch changeset were updated.

Changes

Runtime-neutral todo tracking

Layer / File(s) Summary
Update propose and fast-forward instructions
src/core/templates/workflows/*, skills/openspec-*-change/SKILL.md, skills/openspec-propose/SKILL.md
Replaces TodoWrite references with generic todo-list progress tracking in propose and fast-forward templates and skills.
Refresh parity checks and release metadata
test/core/templates/skill-templates-parity.test.ts, .changeset/generic-todo-tracking.md
Updates template and generated-skill hash baselines and adds a patch changeset describing the wording changes.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

Suggested reviewers: tabishb, alfred-openspec

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The templates and generated skill copies were updated to remove TodoWrite references, matching issue #643's requirement.
Out of Scope Changes check ✅ Passed The hash/test updates and regenerated skill files are supporting changes for the template text edits and do not appear unrelated.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: replacing the Claude-only TodoWrite instruction with a runtime-neutral todo list in templates.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/generic-todo-tracking

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@alfred-openspec alfred-openspec left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All four generated workflow variants now use runtime-neutral todo guidance, the checked-in skills regenerate cleanly, and no TodoWrite references remain. Exact-head build, 20 template/parity tests, CodeRabbit, and the full cross-platform matrix passed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fast forward command instructs to use TodoWrite tool but claude no longer has it

2 participants