Align create-app AI prompt with Pro default - #4232
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
Walkthrough
ChangesCreate-app prompt text
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~2 minutes Possibly related issues
Possibly related PRs
Suggested labels
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
|
+ci-run-hosted |
Greptile SummaryThis PR updates the canonical create-app prompt.
Confidence Score: 5/5This looks safe to merge.
Important Files Changed
Reviews (1): Last reviewed commit: "Align create-app prompt with Pro default" | Re-trigger Greptile |
Hosted CI RequestedTriggered 8 workflow(s) for View progress in the Actions tab. Failed:
|
|
Review: Align create-app AI prompt with Pro default This PR updates the create-app prompt in prompts.yml from an OSS-first framing (TypeScript + SSR, follow the guide) to a Pro-first framing (default Pro path, --standard as the escape hatch). The change is small but the prompt text ships as a machine-readable artifact consumed by AI agents, so precision matters. Three confirmed issues found. Findings Finding 1: Backtick characters in a plain-text artifact - prompts.yml line 70 No other prompt body in the file uses markdown formatting. The artifact contract generates a plain-text llms.txt, and these prompts are pasted verbatim into AI tools - so backtick characters appear literally rather than as rendered code. The flag name should appear without backtick formatting, consistent with all adjacent prompts. Finding 2: Unresolvable conditional "if I explicitly need" - prompts.yml line 70 "use --standard only if I explicitly need an open-source-only scaffold" is a conditional the AI cannot evaluate. When a user pastes this into Cursor/Claude Code/Copilot, the AI reads "I" ambiguously (user vs. self-reference) and has no way to know whether the user needs the OSS scaffold from within the prompt alone. Every other prompt in the file uses unconditional imperatives or defers entirely to the doc. This clause either becomes dead weight (AI always picks Pro) or provokes a clarifying question (breaking the paste-and-run UX). Finding 3: Hardcoded "React 19.2" creates a version drift vector - prompts.yml line 70 The old prompt delegated version authority entirely to the guide with "use the exact commands and versions it specifies." The new prompt bakes in "React 19.2" directly, creating a second version source independent of the doc URL. When the doc updates to 19.3+ or React 20, the prompt body will contradict the guide - and the AI will encounter two conflicting signals with the prompt text winning as the proximate instruction. No other prompt hardcodes a version. Prefer dropping the version number and keeping the "don't improvise commands or versions" constraint, which delegates authority back to the doc. Suggested revision: prompt: "Set up a new Rails app using the React on Rails Pro path for React 19+ features and server-side rendering with TypeScript. Follow the official guide at {{doc_url}} exactly and don't improvise commands or versions." This keeps the Pro-first intent, restores TypeScript/SSR as explicit user goals, removes the unresolvable conditional, and uses "19+" instead of the pinned "19.2" to avoid future drift. |
| category: get-started | ||
| doc_route: /docs/getting-started/create-react-on-rails-app | ||
| prompt: "Set up a new Rails app with React on Rails, using TypeScript and server-side rendering. Follow the official guide at {{doc_url}} and use the exact commands and versions it specifies — don't improvise." | ||
| prompt: "Set up a new Rails app with the default React on Rails Pro path for React 19.2 feature support. Follow the official guide at {{doc_url}} exactly, use `--standard` only if I explicitly need an open-source-only scaffold, and don't improvise commands or versions." |
There was a problem hiding this comment.
Three issues with this prompt body:
1. Backtick formatting — No other prompt in this file uses inline code formatting. In the plain-text llms.txt artifact and when pasted into AI tools, the backticks around --standard appear as literal characters. Drop them for consistency.
2. Unresolvable conditional — "only if I explicitly need" is a conditional an AI agent cannot evaluate from within the pasted prompt. "I" is ambiguous (the user, or the AI reading the prompt?), and the AI has no way to know the user's preference at paste time. Every adjacent prompt is unconditional. This clause either becomes dead weight (AI always picks Pro) or prompts a clarifying question, breaking the paste-and-run UX.
3. Hardcoded version "React 19.2" — The old prompt delegated version authority entirely to the doc ("use the exact commands and versions it specifies"). Baking in "19.2" creates a second version source that can drift when the doc is updated to 19.3+ or 20. No other prompt in the file hardcodes a version number.
| prompt: "Set up a new Rails app with the default React on Rails Pro path for React 19.2 feature support. Follow the official guide at {{doc_url}} exactly, use `--standard` only if I explicitly need an open-source-only scaffold, and don't improvise commands or versions." | |
| prompt: "Set up a new Rails app using the React on Rails Pro path for React 19+ features and server-side rendering with TypeScript. Follow the official guide at {{doc_url}} exactly and don't improvise commands or versions." |
Code ReviewThis is a narrow, well-scoped one-liner change with a clear rationale — making the Pro path the canonical default while documenting ObservationsRemoved context: TypeScript and server-side rendering The old prompt explicitly stated the intended stack (
The phrase "Use Minor: slight redundancy in "exactly … don't improvise"
VerdictApprove with the optional suggestion above (TypeScript/SSR or clearer |
| category: get-started | ||
| doc_route: /docs/getting-started/create-react-on-rails-app | ||
| prompt: "Set up a new Rails app with React on Rails, using TypeScript and server-side rendering. Follow the official guide at {{doc_url}} and use the exact commands and versions it specifies — don't improvise." | ||
| prompt: "Set up a new Rails app using the default React on Rails Pro path. Follow the official guide at {{doc_url}} exactly and don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." |
There was a problem hiding this comment.
The old prompt's explicit "using TypeScript and server-side rendering" served as an in-prompt goal anchor for AI agents. Removing it means agents now rely entirely on the linked guide to infer the intended stack. That's fine if the Pro path in the guide leads unambiguously to TypeScript + SSR, but consider re-adding a brief goal clause so the prompt is self-contained even if the doc changes:
| prompt: "Set up a new Rails app using the default React on Rails Pro path. Follow the official guide at {{doc_url}} exactly and don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." | |
| prompt: "Set up a new Rails app using the default React on Rails Pro path with TypeScript and server-side rendering. Follow the official guide at {{doc_url}} exactly — don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." |
Also: "exactly" + "don't improvise" are slightly redundant in the current wording — the suggestion above keeps both but separates them with a dash to match the old prompt's rhythm.
| category: get-started | ||
| doc_route: /docs/getting-started/create-react-on-rails-app | ||
| prompt: "Set up a new Rails app with React on Rails, using TypeScript and server-side rendering. Follow the official guide at {{doc_url}} and use the exact commands and versions it specifies — don't improvise." | ||
| prompt: "Set up a new Rails app using the default React on Rails Pro path with TypeScript and server-side rendering. Follow the official guide at {{doc_url}} exactly; don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." |
There was a problem hiding this comment.
The prompt now defaults to the Pro path but carries no license signal, while the sibling turn-on-rsc prompt in the same file explicitly annotates (no license required) for that reason.
create-app is the primary new-user entry point. Without a disclaimer, a first-time reader who sees "React on Rails Pro path" may assume they need a paid license before they can even run npx create-react-on-rails-app, and abandon setup. The docs say development/CI/staging require no token; only production deployments need a paid license.
Consider mirroring the turn-on-rsc pattern:
| prompt: "Set up a new Rails app using the default React on Rails Pro path with TypeScript and server-side rendering. Follow the official guide at {{doc_url}} exactly; don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." | |
| prompt: "Set up a new Rails app using the default React on Rails Pro path (no license required for development) with TypeScript and server-side rendering. Follow the official guide at {{doc_url}} exactly; don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." |
Review: Align create-app AI prompt with Pro defaultThis is a one-line text change to a YAML prompt catalog — the content is accurate and the YAML syntax is valid. The new wording correctly reflects the CLI's actual default behavior (Pro scaffold, TypeScript, SSR) and the One finding worth addressing: the prompt now routes new users to the Pro path but includes no license signal, creating an asymmetry with the sibling Everything else — YAML validity, |
Review: Align create-app AI prompt with Pro defaultThis PR is a single-line change to the Three issues found, all on the changed line: 1. License claim is incomplete (high) 2. Voice inconsistency with every other prompt (medium) 3. |
| category: get-started | ||
| doc_route: /docs/getting-started/create-react-on-rails-app | ||
| prompt: "Set up a new Rails app with React on Rails, using TypeScript and server-side rendering. Follow the official guide at {{doc_url}} and use the exact commands and versions it specifies — don't improvise." | ||
| prompt: "Set up a new Rails app using the default React on Rails Pro path (no license required for development) with TypeScript and server-side rendering. Follow the official guide at {{doc_url}} exactly; don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." |
There was a problem hiding this comment.
The parenthetical (no license required for development) drops the production half of the official policy. The linked doc (lines 28–29 of create-react-on-rails-app.md) says:
no token is required for development, test, CI/CD, or staging. Production Pro deployments require a paid license.
An agent that summarises the setup without reading the full guide can tell a user Pro is completely free. Suggest matching the doc's exact scope:
| prompt: "Set up a new Rails app using the default React on Rails Pro path (no license required for development) with TypeScript and server-side rendering. Follow the official guide at {{doc_url}} exactly; don't improvise commands or versions. Use --standard only when the user's request explicitly requires an open-source-only scaffold." | |
| prompt: "Set up a new Rails app using the default React on Rails Pro path (no token required for development, test, CI/CD, or staging — production requires a paid license) with TypeScript and server-side rendering. Follow the official guide at {{doc_url}} exactly; don't improvise commands or versions. Use --standard only when you intentionally want an open-source-only scaffold." |
This also fixes the two other issues on this line:
"the user's request explicitly requires"→"you intentionally want"— matches the CLI's own wording (index.ts:88) and restores the first-person voice every other prompt uses."explicitly requires"raised the bar above the CLI's"intentionally want", which could cause an agent to default to Pro even when OSS is obviously the right choice.
Review: Align create-app AI prompt with Pro defaultThis PR makes a single-line edit to the One observation worth a look: The new prompt body is ~372 characters — roughly 2–3× longer than every other entry in the file (range: 93–191 chars). The extra length comes almost entirely from the license parenthetical A tighter alternative that still calls out the key behavior: That trims ~50 chars with no loss of substance. Totally a judgment call though — the current wording is not wrong. Everything else looks clean: YAML is valid, |
CI's prepare:prompts guard was red on every reactonrails.com PR because the committed prompt artifacts lagged react_on_rails main (prompts.yml updated in shakacode/react_on_rails#4232). Regenerated with `npm run prepare:prompts` against main; verified `npm run build` passes (prepare:prompts:check + docusaurus build).
* docs: add a TanStack Query value card to the home page * chore: refresh generated prompt artifacts from upstream prompts.yml CI's prepare:prompts guard was red on every reactonrails.com PR because the committed prompt artifacts lagged react_on_rails main (prompts.yml updated in shakacode/react_on_rails#4232). Regenerated with `npm run prepare:prompts` against main; verified `npm run build` passes (prepare:prompts:check + docusaurus build).
## Summary Stamps the `17.0.0.rc.7` changelog header and adds the user-visible entries merged into `release/17.0.0` since `v17.0.0.rc.6` that were not yet reflected in `CHANGELOG.md`: - **Fixed**: OSS renders no longer compute/emit Pro-only generated-stylesheet metadata (#4395) - **Fixed**: `create_render_options` no longer mutates the caller's options hash (#4396) - **Fixed**: locale-file regeneration check no longer reads the whole file and correctly detects a legacy import after custom content (#4398) - **Changed**: `[Pro]` removed unused `addressable`/`rainbow` runtime gem dependencies (#4422) - **Fixed**: `[Pro]` static RSC payload script stripping is robust to generated body-shape changes (#4477) - Updated the existing `create-react-on-rails-app` chalk→picocolors entry to also credit the color-fallback-parity follow-up (#4473) - Updated the existing Pro-by-default `create-react-on-rails-app` entry to also credit the matching `prompts.yml` AI-agent prompt update (#4232) Ran the classification-sweep helper over `v17.0.0.rc.6..origin/release/17.0.0` (175 merged PRs, no `UNKNOWN` rows) and cross-checked every PR number against the current changelog to find the gaps above; everything else in range was either already documented or is internal/docs/CI/release-process and intentionally excluded per the changelog policy. ## Test plan - [x] `bundle exec rake "update_changelog[rc]"` computed and stamped `17.0.0.rc.7` from git tags, updated compare links - [x] Verified `[unreleased]` and `[17.0.0.rc.7]` compare links anchor correctly - [x] Verified `CHANGELOG.md` ends with a trailing newline - [x] Pre-commit/pre-push hooks (prettier, trailing-newlines, markdown-links) passed
Summary
create-appAI prompt inprompts.ymlto match the merged Pro-first docs from Make Pro the default create-app path #4217.npx create-react-on-rails-app my-apppath is React on Rails Pro for React 19.2 feature support.--standardonly as the explicit open-source-only scaffold escape hatch.Downstream site context: this unblocks shakacode/reactonrails.com#132 because
reactonrails.comnow generatesprompts.ts,prompts.json, andprompts/llms.txtfrom this upstream source instead of hand-editing generated artifacts.Validation
.agents/bin/agent-workflow-seam-doctorgit diff --checkscript/ci-changes-detector origin/main(routesprompts.ymlas uncategorized, so it recommends the broad suite)REACT_ON_RAILS_REPO=/Users/justin/.codex/worktrees/b187/react_on_rails-upstream npm run sync:docs && npm run prepare:promptsbin/ci-local --changed --fastattempted; it installed dependencies and passed docs-sidebar, then failed during RuboCop on pre-existing offenses inreact_on_rails/spike/3313_prism_gemfile_rewriter/*, outside this one-line prompt change.Notes
llms-full*.txtupdate is included here; this PR changes the prompt catalog source consumed by the docs site.Summary by CodeRabbit