🧩 Admin Prompts

Admin prompts are editable templates stored in admin_prompts. A matching DB row wins over factory text; otherwise the configured default is used. Admin editing requires a signed-in admins or pwiz-admins group through optional SSO.

Implemented contract

getAdminText(key, vars) interpolates the winning text. Generation persona, enhancement and chat additionally retain the shared current-library policy; ideas retain the object-output contract even when an older override omits it. The client caches overrides for up to 60 seconds. Save creates/updates an override, while Restore Default deletes it.

Interpolation rule

  • input:
    • template text from the winning DB row or config default
    • variables object
  • replacement:
    • {name} becomes vars[name]
    • unknown placeholders become empty string
  • required additions:
    • {targetPlatform}
    • {targetPlatformClause}
  • target platform clause:
    • empty when no target platform is configured
    • targeting <targetPlatform> when set

Required keys

  • generation.persona:
    • purpose: main prompt generation persona
    • placeholders: {type}, {targetPlatformClause}
    • target wording: platform-neutral PromptWizard expert for development-optimized prompts
  • generation.architect:
    • purpose: planning phase
    • placeholders: {steps}, {complexity}, {style}, {focus}, {targetAudience}, {techVibe}, {targetPlatform}
  • generation.specialist:
    • purpose: detailed step writing
    • placeholders: {targetPlatform}
    • target wording: actionable implementation prompts without WebSim-only assumptions unless target platform says so
  • generation.formatter:
    • purpose: JSON-only output shape
    • placeholders: {steps}
  • mermaid.system:
    • purpose: strict Mermaid diagram generation
    • placeholders: none required
    • fidelity note: encode low-temperature intent as strict syntax instruction because omp has no temperature flag
  • mermaid.instructions:
    • purpose: project-specific Mermaid request
    • placeholders: {type}
  • enhance.system:
    • purpose: step refinement
    • placeholders: {targetPlatform}
    • fidelity note: encode conservative enhancement intent in prose
  • chat.system:
    • purpose: brainstorming assistant response
    • placeholders: {targetPlatform}
    • target output: valid JSON with explanation and optional enhancement instruction
  • ideas.system:
    • purpose: inspiration engine
    • placeholders: {count}, {targetPlatform}, {targetPlatformClause} (6 initially; 5 complementary alternatives when selected)
    • output: one JSON object with an ideas array, title/description entries and optional complete selectable settings; never a top-level array or singleton
  • generation.cover.system:
    • purpose: produce image prompt for blueprint covers
    • placeholders: {targetPlatform}
  • generation.wizard_image.system:
    • purpose: produce wizard character image prompt
    • placeholders: {targetPlatform}
    • transparency note: do not promise transparent output from omp image tool
  • wizard.image.prompt_suffix:
    • purpose: appended style suffix for wizard avatar image prompts
    • placeholders: {targetPlatform}
    • transparency note: circular UI mask handles solid backgrounds

Storage behavior

  • defaults are not pre-seeded into the DB
  • user edits create or update rows
  • future default changes remain visible for keys without DB rows
  • AdminPromptManager merges defaults with DB rows for display

Interpolating call sites

  • logic/prompt-system.js
  • utils/enhancements.js
  • components/ChatDrawer.jsx
  • components/InspirationEngine.jsx
  • hooks/usePublishBlueprint.js
  • components/WizardManager.jsx

Current daisyUI policy

Generation, enhancement and chat share the official CDN recipe checked on 2026-10-13: daisyUI 5 CSS at https://cdn.jsdelivr.net/npm/daisyui@5, Tailwind browser script at https://cdn.jsdelivr.net/npm/@tailwindcss/browser@4, and extra themes at https://cdn.jsdelivr.net/npm/daisyui@5/themes.css. Source: daisyUI CDN documentation.

Tailwind browser 4 is not daisyUI 4; the old daisyUI /dist/full.min.css path is not valid for the current recipe. Respect an explicit request for older versions as a deliberate legacy choice. An older pin merely present in a generated step is not that request: enhancement/chat instructions flag it in detail/explanation and migrate all affected links and constraints.

The D-479 forensics found that the generation model chose daisyui@4.12.14 in its output and enhancements re-fed that output; the stored system prompt did not pin it. The requested route was xai-oauth/grok-4.7; the resolved provider and model knowledge cutoff were not established.

Anti-regression checks

  • no literal {type}, {steps}, or similar placeholders reach omp
  • no default prompt tells the model to use WebSim-only APIs unless the user explicitly set a WebSim target platform
  • JSON-returning prompts state JSON-only response
  • Mermaid prompts state raw Mermaid only

See settings for targetPlatform and omp-integration for omitted temperature and max-token flags.