ClipSpacesClipSpaces Docs
Back to app

All releases

soul.md: a personality for your assistant

Added

  • A user-defined AI personality, set via a stepped onboarding wizard. The first time you open Clip AI, a real step-by-step wizard (welcome → one question per step with a progress bar and Back/Next → a summary of what the assistant sees) asks how it should come across — tone, verbosity, register, initiative, expertise level, formatting/emoji — plus optional free-text (a name, focus areas, hard don'ts). Every step is skippable. Shown once to users with no personality yet; re-openable anytime from the AI panel's Personalize assistant… entry, prefilled, to revise it (the same wizard, not a separate form).
    • Structured answers are the source of truth; compileSoul() turns them into a deterministic prompt fragment (lib/ai/soul.ts, snapshot-tested).
    • Dual-mode storage: localStorage for everyone (and the read path the AI request uses), plus a per-user public.ai_soul row (owner-scoped RLS) that syncs the personality across devices when you're signed in.
  • Precedence is enforced by placement, not trust. The compiled personality is injected beneath the Phase-A guardrails: buildSystem always orders the prompt SAFETY_PREAMBLE → persona + soul → untrusted board data → task, and the server clamps the fragment's length. A personality can shape tone and focus; it can never loosen a safety rule. Documented in docs/AI_SAFETY.md.

Notes

  • Un-onboarded users are unaffected — with no answers set, compileSoul returns "" and the prompt is byte-for-byte what it was before. Covered by tests/ai-soul.test.ts.