Skip to content

fix(ce-plan): close exit gates and honor user-named resources#597

Merged
tmchow merged 1 commit intomainfrom
tmchow/ceplan-travel-skip
Apr 18, 2026
Merged

fix(ce-plan): close exit gates and honor user-named resources#597
tmchow merged 1 commit intomainfrom
tmchow/ceplan-travel-skip

Conversation

@tmchow
Copy link
Copy Markdown
Collaborator

@tmchow tmchow commented Apr 18, 2026

Summary

A user invoked /ce:plan asking for a travel research task involving output from a CLI they had installed. This is classic use case for 'universal planning' mode we previoulsy designed. The skill classified the request as "travel research, not a software plan" and exited with a CLI-execution response rather than producing an itinerary. This goes against the universal-planning mode that was built for exactly this kind of non-software planning.

The miss came from two compounding exit gates. Phase 0.1b in SKILL.md had a "factual lookup" branch. universal-planning.md had a duplicate "quick-help request" branch that silently shadowed it. Refining the wording of one would still leave the other.

Changes

Both exit branches are removed. Once the skill routes to non-software planning, it commits to producing a plan. Only software reclassification and pipeline/disable-model-invocation mode remain as early exits.

Core Principle 8 (Honor user-named resources) is added as the single source of truth for named inputs. CLIs, MCP servers, URLs, file paths, doc links, and prior artifacts are treated as authoritative input. Unknown resources are discovered (command -v, fetch, read) before being assumed unavailable. Named resources are used in place of generic alternatives. If one fails or doesn't exist, the skill says so explicitly rather than silently substituting.

Phase 0.1b and the universal-planning.md research decomposition reference the principle instead of restating it.

Why one PR

Closing the gates gets the skill to the research step. The principle makes sure it uses what the user named rather than silently substituting generic web search. Either change alone would leave the other failure mode intact for this class of request.


Compound Engineering
Claude Code

A user asked ce:plan for 3 travel itineraries using the flightgoat-pp-cli.
The skill classified it as "travel research, not a software plan" and
exited — instead of producing the plan universal-planning was built for.

Two compounding gates caused the miss: a "factual lookup" branch in
Phase 0.1b and a "quick-help request" branch in universal-planning.md
that silently duplicated it. Remove both so the skill commits to planning
once it routes to the non-software path.

Add Core Principle 8 (Honor user-named resources) so named CLIs, MCPs,
URLs, files, or links are treated as authoritative inputs — discovered
if unknown, used before generic alternatives, and surfaced explicitly
if unavailable rather than silently substituted.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@tmchow tmchow merged commit d8e87c1 into main Apr 18, 2026
2 checks passed
@github-actions github-actions bot mentioned this pull request Apr 18, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5f3c8db4f8

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +85 to +87
Otherwise, read `references/universal-planning.md` and follow that workflow instead. Skip all subsequent phases. Named tools or source links don't change this routing — they're inputs, handled per Core Principle 8.

If genuinely ambiguous (e.g., "plan a migration" with no other context), ask the user before routing.

For everything else (quick questions, error messages, factual lookups) **only when auto-selected**, respond directly without any planning workflow. When directly invoked by the user, treat the input as a planning request — ask clarifying questions if needed, but do not exit the workflow.
If the domain is genuinely ambiguous (e.g., "plan a migration" with no other context), ask the user before routing.
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Handle ambiguous domains before the catch-all routing

The new Otherwise, read universal-planning... branch is now a catch-all that executes before the explicit ambiguity check, so prompts like "plan a migration" can be routed immediately to non-software planning instead of first asking the user to disambiguate. Because this line also says to skip subsequent phases, it effectively undermines the intended ask before routing safeguard and can misclassify software-adjacent requests; reordering or narrowing the catch-all condition would preserve the ambiguity gate.

Useful? React with 👍 / 👎.

tmchow added a commit that referenced this pull request Apr 18, 2026
PR #597 reordered Phase 0.1b so the "Otherwise, read universal-planning
and skip subsequent phases" branch came before the ambiguity check. That
made the ambiguity gate unreachable — prompts like "plan a migration"
with no other context now route straight to non-software planning
instead of asking the user first.

Move the ambiguity check above the catch-all so it still gets to
intercept software-adjacent or under-specified requests.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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.

1 participant