Problem
The system prompt is a hardcoded string in chat.ts. Every repo, session, and model gets identical instructions — no context tailoring, no learning loop from memory observations, no prompt experimentation across models.
Proposed Solution
A design spec has been merged at docs/features/dynamic-system-prompts.md that outlines a three-layer prompt stack:
- Global defaults (
prompts/defaults.md) — HITL governance, mobile UX, project context reading
- Per-repo context (
.mitzo.json prompt section) — repo-specific rules, context, available personas
- Per-session persona — user-selectable instruction sets (manager, architect, builder, etc.)
Three prompt modes (preset/hybrid/custom) and prompt logging to JSONL for future experimentation.
Implementation Phases
- Foundation —
prompt.ts, defaults.md, replace hardcoded string
- Repo context — extend
.mitzo.json, wire into assembler
- Personas — UI chips, session metadata
- Custom mode —
tool-essentials.md, mode toggle, prompt preview
- Prompt Lab — separate analysis project (future)
See the full spec for details: docs/features/dynamic-system-prompts.md
Problem
The system prompt is a hardcoded string in
chat.ts. Every repo, session, and model gets identical instructions — no context tailoring, no learning loop from memory observations, no prompt experimentation across models.Proposed Solution
A design spec has been merged at
docs/features/dynamic-system-prompts.mdthat outlines a three-layer prompt stack:prompts/defaults.md) — HITL governance, mobile UX, project context reading.mitzo.jsonpromptsection) — repo-specific rules, context, available personasThree prompt modes (preset/hybrid/custom) and prompt logging to JSONL for future experimentation.
Implementation Phases
prompt.ts,defaults.md, replace hardcoded string.mitzo.json, wire into assemblertool-essentials.md, mode toggle, prompt previewSee the full spec for details:
docs/features/dynamic-system-prompts.md