Skip to content

feat(framework): bootstrap mode system prompt (#448)#451

Merged
suleimansh merged 1 commit into
mainfrom
feat/bootstrap-system-prompt-448
Jul 13, 2026
Merged

feat(framework): bootstrap mode system prompt (#448)#451
suleimansh merged 1 commit into
mainfrom
feat/bootstrap-system-prompt-448

Conversation

@suleimansh

Copy link
Copy Markdown
Member

Closes #448. Part of #297 (Bootstrap mode).

Adds --bootstrap (and StartRunOptions.bootstrap so 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_PREAMBLE above 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).
  • Threaded through both run paths (runFramework, runPrompt), the CLI (--bootstrap + a ◆ bootstrap: on echo), and the daemon (StartRunOptions.bootstrap -> --bootstrap).

Verified

  • Unit: preamble prepends above the template / defaults off / sits after Context; parseArgs --bootstrap; startOptionFlags maps it. 468 framework tests pass, typecheck 22/22.
  • End-to-end: ran the framework's actual composed bootstrap prompt through a real claude -p against 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).
  • CLI: framework --bootstrap --fake prints ◆ bootstrap: on, exit 0.

Next in #297: #449 (create-empty-project daemon path) + #450 ("Create new project" entry, which flips this flag on).

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
@suleimansh suleimansh added enhancement New feature or request priority: low Nice to have / latent the-framework ♻️ labels Jul 13, 2026
@suleimansh suleimansh self-assigned this Jul 13, 2026
@suleimansh suleimansh merged commit 418a85b into main Jul 13, 2026
2 checks passed
@suleimansh suleimansh deleted the feat/bootstrap-system-prompt-448 branch July 13, 2026 00:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request priority: low Nice to have / latent the-framework ♻️

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[The Framework] Bootstrap system prompt (interpretations / PLAN / await)

1 participant