From cdb2a0736ab6dc8d1c972e0327172c9e0643bb42 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 20 Dec 2025 17:38:54 +0000 Subject: [PATCH] docs(onboarding): add soul creation step --- apps/macos/Sources/Clawdis/Onboarding.swift | 4 +++- docs/onboarding.md | 2 ++ docs/templates/BOOTSTRAP.md | 6 ++++++ docs/templates/SOUL.md | 10 +++++++--- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/apps/macos/Sources/Clawdis/Onboarding.swift b/apps/macos/Sources/Clawdis/Onboarding.swift index ff3d53374..2cd0ba04b 100644 --- a/apps/macos/Sources/Clawdis/Onboarding.swift +++ b/apps/macos/Sources/Clawdis/Onboarding.swift @@ -1468,7 +1468,9 @@ struct OnboardingView: View { let kickoff = "Hi! I just installed Clawdis and you’re my brand‑new agent. " + "Please start the first‑run ritual from BOOTSTRAP.md, ask one question at a time, " + - "and guide me through choosing how we should talk (web‑only, WhatsApp, or Telegram)." + "and before we talk about WhatsApp/Telegram, visit soul.md with me to craft SOUL.md: " + + "ask what matters to me and how you should be. Then guide me through choosing " + + "how we should talk (web‑only, WhatsApp, or Telegram)." self.onboardingChatModel.input = kickoff self.onboardingChatModel.send() } diff --git a/docs/onboarding.md b/docs/onboarding.md index c4833baa8..ef1c7da17 100644 --- a/docs/onboarding.md +++ b/docs/onboarding.md @@ -82,6 +82,7 @@ The onboarding flow now embeds the SwiftUI chat view directly. It uses a **speci This onboarding chat is where the agent: - does the BOOTSTRAP.md identity ritual (one question at a time) +- visits **soul.md** with the user and writes `SOUL.md` (values, tone, boundaries) - asks how the user wants to talk (web-only / WhatsApp / Telegram) - guides linking steps (including showing a QR inline for WhatsApp via the `whatsapp_login` tool) @@ -103,6 +104,7 @@ We no longer collect identity in the onboarding wizard. Instead, the **first age - The agent writes results to: - `IDENTITY.md` (agent name, vibe/creature, emoji) - `USER.md` (who the user is + how they want to be addressed) + - `SOUL.md` (identity, tone, boundaries — crafted from the soul.md prompt) - `~/.clawdis/clawdis.json` (structured identity defaults) - After the ritual, the agent **deletes `BOOTSTRAP.md`** so it only runs once. diff --git a/docs/templates/BOOTSTRAP.md b/docs/templates/BOOTSTRAP.md index 6015e899d..aee004713 100644 --- a/docs/templates/BOOTSTRAP.md +++ b/docs/templates/BOOTSTRAP.md @@ -49,6 +49,12 @@ After the user chooses, update: 3) ~/.clawdis/clawdis.json Set identity.name, identity.theme, identity.emoji to match IDENTITY.md. +## Craft the soul (before messaging setup) +Before WhatsApp/Telegram, open **soul.md** together and use it to guide a short, thoughtful chat: +- Ask what matters most to the user. +- Ask how the agent should be (tone, boundaries, vibe). +- Write or update `SOUL.md` based on their answers. + ## Ask how they want to talk After identity is set, ask how the user wants to talk: - Web-only (this chat) diff --git a/docs/templates/SOUL.md b/docs/templates/SOUL.md index 73bbade50..179563378 100644 --- a/docs/templates/SOUL.md +++ b/docs/templates/SOUL.md @@ -17,9 +17,13 @@ Keep it short, human, and specific. - Ask clarifying questions when needed. ## Boundaries -- Local work is fine; external actions require explicit approval. -- Don’t share private data or contact info. +- I’m the user’s collaborator/companion; trust matters. +- Act locally; ask before external actions. +- Never share private data or contact info. ## Continuity -- You start fresh each session; continuity lives in memory files. +- Fresh instance each session; memory files are the only long-term. - If you change this file, tell the user. + +## Creation prompt (optional) +- If the user asks for a fresh start, open **soul.md** together and shape this file from it.