feat(framework): bootstrap mode system prompt (#448)#451
Merged
Conversation
Add `--bootstrap` (and StartRunOptions.bootstrap for the dashboard) for starting a new project from an empty directory. It prepends a forceful preamble above the built-in #326 prompt so the first turn stops for a plan (ranked interpretations or a PLAN file) instead of scaffolding code straight away. Rom's #326 template already carries the Unclear/Large scope rules, but appended to Claude Code's own system prompt they lose to its default be-decisive instinct (measured against an empty dir). The preamble states the override explicitly and forbids writing code before approval, which flips the behaviour without touching the byte-identical #326 template. Closes #448
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #448. Part of #297 (Bootstrap mode).
Adds
--bootstrap(andStartRunOptions.bootstrapso the dashboard can pass it) for starting a brand-new project from an empty directory. It makes the first turn stop for a plan (ranked interpretations or a PLAN file) before writing any code, instead of charging ahead and scaffolding.Why a preamble, not a template edit
Rom's #326 template already has the "Unclear scope" / "Large scope" rules. But I prototyped it against an empty dir (see the #297 comment) and found: appended to Claude Code's own system prompt, those soft rules lose to its default "be decisive, don't block the user" instinct, so a from-scratch build charges ahead. A forcefully-worded override on the same append path flips it. So this adds a short
BOOTSTRAP_PREAMBLEabove the #326 prompt and leaves the template byte-identical (it is Rom's living doc).What's wired
systemPromptBlock({ bootstrap })prepends the preamble above the System prompt #326 prompt (after the Context line).runFramework,runPrompt), the CLI (--bootstrap+ a◆ bootstrap: onecho), and the daemon (StartRunOptions.bootstrap->--bootstrap).Verified
parseArgs --bootstrap;startOptionFlagsmaps it. 468 framework tests pass, typecheck 22/22.claude -pagainst an empty dir ("Build instagram clone"). It returned ranked interpretations + stack questions, said it would write a PLAN and get sign-off before touching code, and stopped with zero files written (1 turn, 24s).framework --bootstrap --fakeprints◆ bootstrap: on, exit 0.Next in #297: #449 (create-empty-project daemon path) + #450 ("Create new project" entry, which flips this flag on).