Prefer Claude's Plan Mode over built-in planning when available#2
Conversation
Updated the planning workflow to prefer Claude's native Plan Mode (available in Claude Code) when creating implementation plans. When Plan Mode is not available (Cursor, Codex, OpenCode, etc.), falls back to the plugin's built-in planning process. Key changes: - using-superpowers: Flow graph routes to writing-plans skill (with Plan Mode preference) instead of blocking Plan Mode - writing-plans: New Plan Mode Detection section with instructions for using Claude's Plan Mode and saving output as a plan document - brainstorming: Updated handoff to mention Plan Mode preference The plan output format remains unchanged regardless of planning method, ensuring downstream skills (alignment-check, executing-plans, subagent-driven-development) continue to work correctly. Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the “superpowers” skill pipeline docs to stop blocking Claude Code’s native Plan Mode, preferring it when available while preserving the existing downstream plan-document-based workflow.
Changes:
- Add Plan Mode detection guidance to
writing-plans, preferring Claude Code Plan Mode and falling back to the existing built-in planning steps elsewhere. - Update the
using-superpowersflow graph to route “already brainstormed” directly intowriting-plans(which prefers Plan Mode). - Clarify the autonomous handoff in
brainstormingto note the Plan Mode preference.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| skills/writing-plans/SKILL.md | Adds “Plan Mode Detection” section describing Plan Mode-first behavior and saving to the standard plan document format. |
| skills/using-superpowers/SKILL.md | Updates the DOT flow graph to route brainstormed work into writing-plans (Plan Mode preferred). |
| skills/brainstorming/SKILL.md | Adds a handoff bullet noting writing-plans will prefer Plan Mode when available. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| "Already brainstormed?" -> "Invoke brainstorming skill" [label="no"]; | ||
| "Already brainstormed?" -> "Might any skill apply?" [label="yes"]; | ||
| "Already brainstormed?" -> "Invoke writing-plans skill\n(prefers Claude's Plan Mode)" [label="yes"]; | ||
| "Invoke brainstorming skill" -> "Might any skill apply?"; |
There was a problem hiding this comment.
In the DOT flow graph, the new "Invoke writing-plans skill" node is a dead-end (no outgoing edge), unlike the brainstorming node which continues the flow. This makes the diagram misleading; add an outgoing edge from the writing-plans node (e.g., to the next decision point or terminal state) so the flow remains connected/accurate.
| "Invoke brainstorming skill" -> "Might any skill apply?"; | |
| "Invoke brainstorming skill" -> "Might any skill apply?"; | |
| "Invoke writing-plans skill\n(prefers Claude's Plan Mode)" -> "Might any skill apply?"; |
| **Autonomous handoff:** | ||
| - This is the user's **last interaction point** — everything after runs autonomously | ||
| - Invoke the writing-plans skill with autonomous context: the design is approved, no further user input needed | ||
| - writing-plans will prefer Claude's Plan Mode if available (Claude Code), falling back to its built-in planning process in other environments |
There was a problem hiding this comment.
This bullet starts with a lowercase "writing-plans" while surrounding bullets are sentence-cased. Capitalize it (or start with "The writing-plans skill …") for consistent formatting and readability.
| - writing-plans will prefer Claude's Plan Mode if available (Claude Code), falling back to its built-in planning process in other environments | |
| - The writing-plans skill will prefer Claude's Plan Mode if available (Claude Code), falling back to its built-in planning process in other environments |
|
@copilot apply changes based on the comments in this thread |
…ation Co-authored-by: intel352 <77607+intel352@users.noreply.github.com>
Applied both review suggestions in 6bfb656:
|
… plan+design Finding #1 (plan:395): verification command pipes to grep, which exits 1 when no matches — looks like failure. Fix: add || true, update expected output description. Finding #2 (design:142): described markers as "HTML-comment-shaped" but the syntax is angle-bracket tags (not HTML comments). Fix: "angle-bracket tag syntax that most markdown renderers treat as unknown HTML tags". Finding #3 (design:178): prose said OpenCode/Cursor "get blank entries" but table uses sentinel value host-pass-through. Fix: prose now matches sentinel. Finding #4 (plan:1232): "Two distinct clean Copilot review timestamps" hard gate has no anchor policy doc. Fix: downgrade to "recommended practice" phrasing. Finding #5 (plan:65): skill-content-grep.expected.txt listed as a created file and in ALLOWED_FILES but the script never reads it — dead artifact. Fix: drop the file from the task entirely. Finding #6 (plan:141): guard script ran grep twice per token, reported line numbers from the stripped (AWK-processed) string rather than the original file. Fix: single-pass AWK that emits "LINENO:content" preserving original line numbers; single grep pass with || true. Finding #7 (plan:132): skip-regex <host: *claude-code *> only matched the exact single-host tag form, not comma-separated lists like <host: codex, claude-code>. Fix: AWK rule checks if /claude-code/ appears anywhere in the <host:> line, handling any comma-separated host list. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… plan+design Finding #1 (plan:395): verification command pipes to grep, which exits 1 when no matches — looks like failure. Fix: add || true, update expected output description. Finding #2 (design:142): described markers as "HTML-comment-shaped" but the syntax is angle-bracket tags (not HTML comments). Fix: "angle-bracket tag syntax that most markdown renderers treat as unknown HTML tags". Finding #3 (design:178): prose said OpenCode/Cursor "get blank entries" but table uses sentinel value host-pass-through. Fix: prose now matches sentinel. Finding #4 (plan:1232): "Two distinct clean Copilot review timestamps" hard gate has no anchor policy doc. Fix: downgrade to "recommended practice" phrasing. Finding #5 (plan:65): skill-content-grep.expected.txt listed as a created file and in ALLOWED_FILES but the script never reads it — dead artifact. Fix: drop the file from the task entirely. Finding #6 (plan:141): guard script ran grep twice per token, reported line numbers from the stripped (AWK-processed) string rather than the original file. Fix: single-pass AWK that emits "LINENO:content" preserving original line numbers; single grep pass with || true. Finding #7 (plan:132): skip-regex <host: *claude-code *> only matched the exact single-host tag form, not comma-separated lists like <host: codex, claude-code>. Fix: AWK rule checks if /claude-code/ appears anywhere in the <host:> line, handling any comma-separated host list. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ign docs (#13) * fix(pr12-round2): address 7 Copilot findings on cross-LLM portability plan+design Finding #1 (plan:395): verification command pipes to grep, which exits 1 when no matches — looks like failure. Fix: add || true, update expected output description. Finding #2 (design:142): described markers as "HTML-comment-shaped" but the syntax is angle-bracket tags (not HTML comments). Fix: "angle-bracket tag syntax that most markdown renderers treat as unknown HTML tags". Finding #3 (design:178): prose said OpenCode/Cursor "get blank entries" but table uses sentinel value host-pass-through. Fix: prose now matches sentinel. Finding #4 (plan:1232): "Two distinct clean Copilot review timestamps" hard gate has no anchor policy doc. Fix: downgrade to "recommended practice" phrasing. Finding #5 (plan:65): skill-content-grep.expected.txt listed as a created file and in ALLOWED_FILES but the script never reads it — dead artifact. Fix: drop the file from the task entirely. Finding #6 (plan:141): guard script ran grep twice per token, reported line numbers from the stripped (AWK-processed) string rather than the original file. Fix: single-pass AWK that emits "LINENO:content" preserving original line numbers; single grep pass with || true. Finding #7 (plan:132): skip-regex <host: *claude-code *> only matched the exact single-host tag form, not comma-separated lists like <host: codex, claude-code>. Fix: AWK rule checks if /claude-code/ appears anywhere in the <host:> line, handling any comma-separated host list. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(cross-llm-plan): address 14 Copilot round-1 findings on plan+design Plan doc (cross-llm-portability.md): - Add lowercase sonnet/opus/haiku to forbidden-tokens list and explain why - Add rationale for not yet including AskUserQuestion/Agent (PRs B-D) - Remove tests/skill-content-grep.sh from ALLOWED_FILES (tests/ not scanned) - Fix AWK skip to match only exclusive <host: claude-code> blocks, not multi-host tags; update inline comment accordingly - Remove dead fail=1 inside while-pipe subshell; rely solely on $tmp check - Add || true to all 7 skill-scoped grep verification commands (lines 443, 517, 626, 694, 764, 844, 888) — grep exits 1 on no-match (PASS case) Design doc (cross-llm-portability-design.md): - Fix broken path: subagent-driven-development.md → skills/subagent-driven-development/SKILL.md - Remove false gpt-5.x claim from grep guard description; clarify that only Claude-Code brand names are guarded, Codex names use <host:> markers - Replace "Open questions deferred to implementation" with resolved decisions: AWK guard approach, angle-bracket marker syntax, OpenCode tool mapping, Cursor support depth scope Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(cross-llm-plan): address 7 Copilot round-2 findings on plan + design docs - set -euo pipefail (was set -u only) - Fix stray || true in step-title prose and GHA step name - Verification commands capture guard output before grepping to avoid masking execution errors - Fix prose claiming gpt-5.x tokens are guarded (guard only covers Claude brand names) - Design doc: clarify angle-bracket marker advantage is readability in rendered Markdown * fix(cross-llm-plan): add end-anchor to AWK skip regex so multi-host blocks are never skipped Agent-Logs-Url: https://github.com/GoCodeAlone/claude-superpowers/sessions/24d5a30f-f7b3-43e7-83dd-60c470d0f4a4 Co-authored-by: intel352 <77607+intel352@users.noreply.github.com> * Update docs/plans/2026-04-25-cross-llm-portability.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: intel352 <77607+intel352@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
skills/using-superpowers/SKILL.md- Modified flow graph to route to writing-plans skill (with Plan Mode preference) when brainstorming is done, instead of blocking Plan Mode entirelyskills/writing-plans/SKILL.md- Added Plan Mode Detection section: prefer Claude's Plan Mode when available (Claude Code), fall back to built-in planning process; ensure Plan Mode output is saved as plan document todocs/plans/in the required formatskills/brainstorming/SKILL.md- Updated autonomous handoff to mention Plan Mode preference✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.