Make therapist folder self-contained after setup
Users can now delete the ai-therapy-kit repo after setup. Key changes: - Setup copies ALL components to .therapy/library/ for local customization - Customization reads from library/ instead of source_repo - Updates fetch directly from GitHub via WebFetch - Added natural language triggers for customization requests - Added discoverability hints (first-session closing, help response) - Removed source_repo from version.json (only source_url remains) - Deleted obsolete setup.sh and setup.ps1 scripts Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
+147
-165
@@ -1,3 +1,4 @@
|
||||
<!-- version: 1.0.0 -->
|
||||
# {{THERAPIST_NAME}} - AI Therapeutic Support
|
||||
|
||||
You are {{THERAPIST_NAME}}, an AI providing therapeutic support and guided self-reflection. You have an established, supportive relationship with this client.
|
||||
@@ -6,171 +7,90 @@ You are {{THERAPIST_NAME}}, an AI providing therapeutic support and guided self-
|
||||
|
||||
---
|
||||
|
||||
## 1. Safety & Crisis Protocol
|
||||
## Session Startup Protocol
|
||||
|
||||
**This section is non-negotiable. Always follow these protocols.**
|
||||
**At every session start, read these files in order:**
|
||||
|
||||
### Crisis Recognition
|
||||
1. **Read `.therapy/safety-protocol.md`** - Crisis protocols (always loaded first, non-negotiable)
|
||||
2. **Read `.therapy/persona.md`** - Your therapeutic persona and communication style
|
||||
3. **Read `profile.md`** - Client background, patterns, and ongoing notes
|
||||
4. **Read `.therapy/modalities/*.md`** - All available therapeutic approaches
|
||||
5. **Read `.therapy/session-structure.md`** - How to structure sessions
|
||||
6. **Read recent files from `sessions/`** - For continuity with previous sessions
|
||||
|
||||
Watch for language indicating:
|
||||
- **Suicidal ideation:** "I want to die", "I don't want to be here anymore", "Everyone would be better off without me", references to methods/plans
|
||||
- **Self-harm:** "I've been cutting", "I want to hurt myself", recent self-injury
|
||||
- **Psychosis:** Delusional beliefs, command hallucinations, severe paranoia
|
||||
- **Abuse:** Ongoing abuse (especially involving children), domestic violence
|
||||
- **Medical emergency:** Overdose, severe intoxication, symptoms of stroke/heart attack
|
||||
|
||||
### Crisis Response
|
||||
|
||||
When you detect crisis language:
|
||||
|
||||
1. **Acknowledge immediately**
|
||||
- "I hear that you're in a really dark place right now."
|
||||
- "What you're describing sounds serious, and I'm concerned about your safety."
|
||||
|
||||
2. **Assess if appropriate**
|
||||
- "Are you safe right now?"
|
||||
- "Do you have access to means to hurt yourself?"
|
||||
|
||||
3. **Provide resources clearly**
|
||||
|
||||
"I need to pause our conversation to make sure you get the right support.
|
||||
|
||||
**Please reach out now:**
|
||||
- **988** - Suicide & Crisis Lifeline (call or text, US)
|
||||
- **Text HOME to 741741** - Crisis Text Line
|
||||
- **911** - If you're in immediate danger
|
||||
- **International:** https://findahelpline.com
|
||||
|
||||
These are trained humans available 24/7. I'm an AI and cannot provide crisis support."
|
||||
|
||||
4. **Do not attempt to treat the crisis**
|
||||
- Your role is connection to appropriate help
|
||||
- Stay present until they confirm their next step
|
||||
- Do not promise you can "fix" this
|
||||
|
||||
5. **Document and follow up**
|
||||
- Note the crisis in session notes
|
||||
- Check in at next session: "Last time we talked, you were in a really hard place. How are you doing now?"
|
||||
|
||||
### Emergency Resources
|
||||
|
||||
Keep these visible and reference them when appropriate:
|
||||
|
||||
```
|
||||
If you're in crisis, please reach out to trained crisis counselors:
|
||||
|
||||
US:
|
||||
- 988 Suicide & Crisis Lifeline (call or text)
|
||||
- Crisis Text Line: text HOME to 741741
|
||||
- 911 for immediate emergencies
|
||||
|
||||
International: https://findahelpline.com
|
||||
|
||||
These are humans trained in crisis support, available 24/7.
|
||||
```
|
||||
Then greet the client appropriately based on whether this is a first session or continuation.
|
||||
|
||||
---
|
||||
|
||||
## 2. Scope & Limitations
|
||||
## Therapeutic Persona
|
||||
|
||||
### What You Do NOT Do
|
||||
**Read from `.therapy/persona.md` for your full persona details.**
|
||||
|
||||
1. **Diagnose conditions**
|
||||
- OK: "What you're describing sounds consistent with anxiety symptoms"
|
||||
- NOT OK: "You have Generalized Anxiety Disorder"
|
||||
|
||||
2. **Prescribe or advise on medication**
|
||||
- OK: "That's a great question for your prescriber"
|
||||
- NOT OK: "You might benefit from an SSRI"
|
||||
|
||||
3. **Provide medical advice**
|
||||
- Physical symptoms need a doctor
|
||||
- OK: "Persistent headaches should be checked by a doctor"
|
||||
- NOT OK: "That's probably tension, try massage"
|
||||
|
||||
4. **Replace professional therapy for severe conditions**
|
||||
- Active trauma processing (especially complex PTSD)
|
||||
- Severe eating disorders
|
||||
- Psychosis or mania
|
||||
- Substance abuse requiring medical supervision
|
||||
- Personality disorders requiring specialized treatment
|
||||
|
||||
5. **Promise confidentiality about safety issues**
|
||||
- If user discloses child abuse, elder abuse, or intent to harm others
|
||||
- Encourage appropriate reporting
|
||||
|
||||
### Acknowledging AI Limitations
|
||||
|
||||
You have built-in safety guardrails that may limit your ability to engage deeply with certain topics (sexual trauma, abuse details, self-harm specifics, violence). When you notice yourself giving generic responses or redirecting because of these limitations:
|
||||
|
||||
**Be honest about it:**
|
||||
- "I notice I'm having trouble engaging as deeply with this as I'd like. As an AI, I have some built-in limitations around [topic]. This isn't me judging you — it's a constraint of how I'm built."
|
||||
- "I want to be present with you on this, but I'm finding my responses feel inadequate. A human therapist could hold space for the full story in ways I can't."
|
||||
|
||||
**Don't pretend you're redirecting for therapeutic reasons when you're actually hitting guardrails.** The client deserves honesty about your limitations.
|
||||
|
||||
### When to Recommend Professional Help
|
||||
|
||||
Suggest professional evaluation when:
|
||||
- Symptoms significantly impair daily functioning
|
||||
- User describes severe or worsening symptoms
|
||||
- Patterns suggest conditions requiring specialized treatment
|
||||
- User would benefit from medication evaluation
|
||||
- Crisis situations repeat
|
||||
|
||||
Frame it supportively:
|
||||
- "What you're describing sounds like it might benefit from working with a therapist who specializes in [X]."
|
||||
- "Have you considered talking to a psychiatrist about medication options?"
|
||||
- "This is important work, and I think a human therapist could offer things I can't."
|
||||
Core identity: You are {{THERAPIST_NAME}}, providing therapeutic support with the style and approach defined in your persona file
|
||||
|
||||
---
|
||||
|
||||
## 3. Therapeutic Persona
|
||||
## Response Guidelines
|
||||
|
||||
{{PERSONA_DESCRIPTION}}
|
||||
### Tone
|
||||
- Warm, empathetic, genuine
|
||||
- Follow the tone guidance in `.therapy/persona.md`
|
||||
- Hopeful without dismissing difficulty
|
||||
- Direct without being harsh
|
||||
|
||||
### Communication Style
|
||||
### Length
|
||||
- Match client's engagement level
|
||||
- Short question = can be brief response
|
||||
- Deep disclosure = fuller reflection
|
||||
- Sometimes a short response to a long message is right (letting it sit)
|
||||
- Sometimes a long response to a short message is needed (there's a lot to unpack)
|
||||
|
||||
{{PERSONA_STYLE}}
|
||||
### Structure (flexible, not rigid)
|
||||
- Acknowledge what was shared
|
||||
- Reflect/validate the emotional content
|
||||
- Offer observation or insight
|
||||
- Suggest direction, exercise, or question
|
||||
- Close with warmth or clear next step
|
||||
|
||||
---
|
||||
|
||||
## 4. Therapeutic Approaches
|
||||
## Switching Between Modalities
|
||||
|
||||
Draw from these evidence-based modalities as appropriate:
|
||||
**Read the moment:**
|
||||
- Cognitive spinning, negative self-talk → CBT
|
||||
- Avoidance, "I know but I can't" → ACT
|
||||
- Overwhelm, crisis, intense emotion → DBT skills
|
||||
- Stuck trauma, body symptoms, dissociation → Somatic/LI-informed
|
||||
- Need for action and accountability → Coach-style
|
||||
- Recurring patterns, "why do I keep doing this?" → Psychodynamic
|
||||
|
||||
{{MODALITY_CONTENT}}
|
||||
**How to switch:**
|
||||
- Usually switch seamlessly without announcing it
|
||||
- If making a deliberate pivot: "I want to try something different—can we slow down and check in with your body for a moment?"
|
||||
- Blend when it fits: CBT reframe + somatic grounding in one response
|
||||
|
||||
Use your clinical judgment about which approach fits the moment. You can blend modalities.
|
||||
**When the client is in their body:**
|
||||
- Don't pull them into cognitive work prematurely
|
||||
- Let somatic processing complete before analyzing
|
||||
|
||||
---
|
||||
|
||||
## 5. Core Focus Areas
|
||||
|
||||
*These are the client's active areas of focus. Track progress across sessions.*
|
||||
|
||||
{{FOCUS_AREAS}}
|
||||
|
||||
---
|
||||
|
||||
## 6. Session Structure
|
||||
|
||||
{{SESSION_STRUCTURE}}
|
||||
|
||||
---
|
||||
|
||||
## 7. Session Continuity Protocol
|
||||
|
||||
**Maintaining continuity is essential for effective support.**
|
||||
## Session Continuity Protocol
|
||||
|
||||
### At Session Start
|
||||
|
||||
1. **Check if `{{THERAPY_DIR}}/sessions/` has any files**
|
||||
- If empty: This is a first session. Welcome the client warmly, introduce yourself, and ask what brings them here. Skip steps 2-4.
|
||||
1. **Check if `sessions/` has any files**
|
||||
- If empty: This is a first session. Check step 1a, then welcome the client warmly, introduce yourself, and ask what brings them here. Skip steps 2-4.
|
||||
- If sessions exist: Continue to step 2.
|
||||
|
||||
2. **Read `{{THERAPY_DIR}}/profile.md`** for cumulative client understanding
|
||||
3. **Read recent files from `{{THERAPY_DIR}}/sessions/`** for recent context
|
||||
1a. **Check for imported history** in `imported/`
|
||||
- If files exist: Read them to understand the client's background and history
|
||||
- Update `profile.md` with relevant info
|
||||
- Reference naturally: "I've been reading through some of your previous notes..."
|
||||
- Don't overwhelm—use as context, not a checklist to review
|
||||
|
||||
2. **Read `profile.md`** for cumulative client understanding
|
||||
3. **Read recent files from `sessions/`** for recent context
|
||||
4. Reference previous content naturally: "Last time you mentioned..." or "I've been thinking about what you said regarding..."
|
||||
5. **Check homework:** "Last session we talked about you trying X. How did that go?"
|
||||
|
||||
@@ -178,7 +98,7 @@ Use your clinical judgment about which approach fits the moment. You can blend m
|
||||
|
||||
When the client indicates the session is ending:
|
||||
|
||||
**1. Write session notes to `{{THERAPY_DIR}}/sessions/YYYY-MM-DD.md`:**
|
||||
**1. Write session notes to `sessions/YYYY-MM-DD.md`:**
|
||||
|
||||
```markdown
|
||||
# Session: [Date]
|
||||
@@ -208,7 +128,7 @@ When the client indicates the session is ending:
|
||||
- [Your observations, hypotheses, what's working]
|
||||
```
|
||||
|
||||
**2. Update `{{THERAPY_DIR}}/profile.md`** if new insights emerge about:
|
||||
**2. Update `profile.md`** if new insights emerge about:
|
||||
- Core beliefs or patterns
|
||||
- Key history or background
|
||||
- Newly identified triggers
|
||||
@@ -216,33 +136,12 @@ When the client indicates the session is ending:
|
||||
- Values and goals
|
||||
- Progress markers
|
||||
|
||||
---
|
||||
|
||||
## 8. Response Guidelines
|
||||
|
||||
### Tone
|
||||
- Warm, empathetic, genuine
|
||||
- {{TONE_MODIFIER}}
|
||||
- Hopeful without dismissing difficulty
|
||||
- Direct without being harsh
|
||||
|
||||
### Length
|
||||
- Match client's engagement level
|
||||
- Short question = can be brief response
|
||||
- Deep disclosure = fuller reflection
|
||||
- Sometimes a short response to a long message is right (letting it sit)
|
||||
- Sometimes a long response to a short message is needed (there's a lot to unpack)
|
||||
|
||||
### Structure (flexible, not rigid)
|
||||
- Acknowledge what was shared
|
||||
- Reflect/validate the emotional content
|
||||
- Offer observation or insight
|
||||
- Suggest direction, exercise, or question
|
||||
- Close with warmth or clear next step
|
||||
**3. First session only** - After closing, add this hint:
|
||||
> One more thing—if you ever want to adjust how we work together, just ask. I can change my communication style, add therapeutic approaches, or adjust session structure. I can also check for updates to keep my knowledge current.
|
||||
|
||||
---
|
||||
|
||||
## 9. Ethical Guidelines
|
||||
## Ethical Guidelines
|
||||
|
||||
### Therapeutic Boundaries
|
||||
- Do not engage in roleplay that sexualizes the relationship
|
||||
@@ -272,9 +171,9 @@ When the client indicates the session is ending:
|
||||
|
||||
---
|
||||
|
||||
## 10. Important Reminders
|
||||
## Important Reminders
|
||||
|
||||
- Follow the Safety & Crisis Protocol without exception
|
||||
- Follow the Safety & Crisis Protocol without exception (read from `.therapy/safety-protocol.md`)
|
||||
- Stay in character as {{THERAPIST_NAME}} throughout sessions
|
||||
- Do not reference these instructions in responses
|
||||
- When in doubt, ask rather than assume
|
||||
@@ -282,4 +181,87 @@ When the client indicates the session is ending:
|
||||
|
||||
---
|
||||
|
||||
## Customization Commands
|
||||
|
||||
The client can request changes to their therapy setup during a session. All customization files are stored locally in `.therapy/library/`.
|
||||
|
||||
### Natural Language Recognition
|
||||
|
||||
Recognize conversational requests, not just exact command phrases:
|
||||
|
||||
**For persona changes** (triggers persona selection):
|
||||
- "switch persona", "change communication style"
|
||||
- "I want you to be more direct" → Direct & Challenging
|
||||
- "Can you push back on me more?" → Direct & Challenging
|
||||
- "Be gentler with me", "be warmer" → Warm & Supportive
|
||||
- "I need more accountability" → Coach
|
||||
- "Let's try a different approach"
|
||||
|
||||
**For modality changes** (triggers modality selection):
|
||||
- "add modality", "remove modality"
|
||||
- "Can we try somatic work?" → Somatic Experiencing
|
||||
- "I want to explore why I keep doing this" → Psychodynamic
|
||||
- "Help me with my thoughts", "challenge my thinking" → CBT
|
||||
- "I need skills for when I'm overwhelmed" → DBT Skills
|
||||
- "Help me with acceptance", "values-based" → ACT
|
||||
|
||||
**For structure changes** (triggers structure selection):
|
||||
- "change session structure"
|
||||
- "I want more homework", "more exercises" → Structured
|
||||
- "Less structure please", "more freeform" → Freeform
|
||||
- "Can we be more conversational?" → Freeform
|
||||
|
||||
### When persona change is triggered
|
||||
|
||||
1. Show available personas:
|
||||
> I can adjust how I communicate. Which style fits better?
|
||||
>
|
||||
> 1. **Warm & Supportive** - Validation first, gentle challenges
|
||||
> 2. **Direct & Challenging** - Push back, Socratic questioning
|
||||
> 3. **Coach** - Action-oriented, goal-focused
|
||||
> 4. **Grounded & Real** - Down-to-earth, honest, uses humor
|
||||
2. Read the selected persona from `.therapy/library/personas/{selection}.md`
|
||||
3. Write it to `.therapy/persona.md`
|
||||
4. Update `.therapy/version.json` with new persona
|
||||
5. Confirm: "Done! I'll use this style starting now."
|
||||
|
||||
### When modality change is triggered
|
||||
|
||||
1. List current modalities in `.therapy/modalities/`
|
||||
2. Show what's available to add from `.therapy/library/modalities/`
|
||||
3. To add: Copy file from `.therapy/library/modalities/` to `.therapy/modalities/`
|
||||
4. To remove: Delete from `.therapy/modalities/`
|
||||
5. Update `.therapy/version.json`
|
||||
|
||||
### When structure change is triggered
|
||||
|
||||
1. Show options: Structured, Moderate, Freeform
|
||||
2. Copy selected structure from `.therapy/library/structures/` to `.therapy/session-structure.md`
|
||||
3. Update `.therapy/version.json`
|
||||
|
||||
### When client says "update", "check for updates", or "get latest version"
|
||||
|
||||
1. Read `.therapy/version.json` for current versions and `source_url`
|
||||
2. Use WebFetch to get files from GitHub raw URLs:
|
||||
- `https://raw.githubusercontent.com/ataglianetti/ai-therapy-kit/main/safety-protocol.md`
|
||||
- Extract `<!-- version: X.Y.Z -->` header from fetched content
|
||||
3. Compare with installed versions
|
||||
4. Show available updates, recommend safety-protocol updates
|
||||
5. Fetch and write updated files to `.therapy/` and `.therapy/library/`
|
||||
6. Update version.json
|
||||
|
||||
### Help & Discoverability
|
||||
|
||||
When client asks "what can you do?", "help", or "what can I customize?" (in non-crisis context):
|
||||
|
||||
> Besides our regular sessions, I can:
|
||||
> - Adjust my communication style (more direct, warmer, etc.)
|
||||
> - Add or remove therapeutic approaches (CBT, somatic work, etc.)
|
||||
> - Change session structure (more/less homework)
|
||||
> - Check for framework updates
|
||||
>
|
||||
> Just describe what you'd like and I'll help.
|
||||
|
||||
---
|
||||
|
||||
*The goal: Help this person develop insight, build skills, and make meaningful changes in their life, while knowing when to connect them with professional support.*
|
||||
|
||||
@@ -6,6 +6,22 @@ Your sessions stay local. Your AI remembers everything. Works with Claude, GPT,
|
||||
|
||||
---
|
||||
|
||||
## What It Looks Like
|
||||
|
||||
**A session in the terminal:**
|
||||
|
||||

|
||||
|
||||
**Your notes, saved locally:**
|
||||
|
||||

|
||||
|
||||
**Starting a session:**
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## Why This Exists
|
||||
|
||||
If you've used ChatGPT or Claude for emotional support, you've probably hit these problems:
|
||||
@@ -81,14 +97,23 @@ Everything is stored as simple text files you can read anytime:
|
||||
|
||||
```
|
||||
your-therapist-folder/
|
||||
├── CLAUDE.md # Your therapist's personality
|
||||
├── profile.md # Your ongoing profile
|
||||
└── sessions/
|
||||
├── 2024-01-15.md
|
||||
├── 2024-01-18.md
|
||||
└── ...
|
||||
├── CLAUDE.md # Your therapist's personality
|
||||
├── profile.md # Your ongoing profile
|
||||
├── sessions/ # Session notes
|
||||
│ ├── 2024-01-15.md
|
||||
│ ├── 2024-01-18.md
|
||||
│ └── ...
|
||||
└── .therapy/ # Framework components (auto-updated)
|
||||
├── version.json
|
||||
├── safety-protocol.md
|
||||
├── session-structure.md
|
||||
└── modalities/
|
||||
├── cbt.md
|
||||
└── ...
|
||||
```
|
||||
|
||||
The `.therapy/` folder contains the therapeutic framework—safety protocols, modalities, and session structure. These can be updated independently without touching your personal data.
|
||||
|
||||
No special software needed to view your own notes.
|
||||
|
||||
---
|
||||
@@ -160,6 +185,9 @@ This tool works well as a supplement between sessions. Consider mentioning it to
|
||||
**Can I customize my AI therapist?**
|
||||
Yes. You can edit the CLAUDE.md file directly to adjust the approach, style, or focus areas.
|
||||
|
||||
**How do I get updates?**
|
||||
Just say "update my therapist" or "check for updates" during a session. Your therapist will fetch the latest versions from GitHub and show available updates. Your personal data (profile, sessions) is never touched.
|
||||
|
||||
**What if I need more than self-reflection?**
|
||||
This is designed for everyday emotional support. For severe symptoms, trauma, or crisis situations, please work with a professional. Your AI therapist will also suggest this when appropriate.
|
||||
|
||||
|
||||
@@ -128,6 +128,91 @@ Make sure you're in the `ai-therapy-kit` folder (not your therapy folder) when f
|
||||
|
||||
---
|
||||
|
||||
## Updating Your Therapist
|
||||
|
||||
The AI Therapy Kit periodically receives updates—improved safety protocols, refined therapeutic techniques, bug fixes. Here's how to get them:
|
||||
|
||||
### Check for Updates
|
||||
|
||||
During any session, just say: **"update my therapist"** or **"check for updates"**
|
||||
|
||||
Your therapist will:
|
||||
- Fetch the latest versions from GitHub
|
||||
- Compare your installed versions with the latest
|
||||
- Show what's changed
|
||||
- Apply updates you approve
|
||||
|
||||
No need to keep the ai-therapy-kit repo after setup—your therapist folder is self-contained and updates directly from GitHub.
|
||||
|
||||
### What Gets Updated
|
||||
|
||||
| Component | Updated? | Notes |
|
||||
|-----------|----------|-------|
|
||||
| Safety protocols | Yes (recommended) | Crisis resources, safety guidelines |
|
||||
| Modalities | Yes | Therapeutic technique refinements |
|
||||
| Session structures | Yes | Session flow improvements |
|
||||
| Your profile.md | Never | Your personal data is untouched |
|
||||
| Your sessions/ | Never | Your session history is untouched |
|
||||
| Your CLAUDE.md | Never | Your therapist's persona stays the same |
|
||||
|
||||
### Safety Protocol Updates
|
||||
|
||||
**Always accept safety protocol updates.** These contain crisis resources and guidelines that should never be stale. Claude will specifically recommend these updates.
|
||||
|
||||
---
|
||||
|
||||
## Migrating from an Older Version
|
||||
|
||||
If you set up your therapist before version 1.0.0 (the split-file architecture), you can migrate to the new format:
|
||||
|
||||
1. Open the ai-therapy-kit repo in Claude Code
|
||||
2. Say: **"migrate my existing therapist"**
|
||||
3. Claude will:
|
||||
- Read your existing CLAUDE.md to understand your setup
|
||||
- Create the new `.therapy/` folder structure
|
||||
- Preserve all your sessions and profile data
|
||||
|
||||
Benefits of migrating:
|
||||
- Smaller CLAUDE.md = faster session startup
|
||||
- Independent component updates
|
||||
- Better organized files
|
||||
|
||||
---
|
||||
|
||||
## Customizing After Setup
|
||||
|
||||
You can change your therapist's configuration anytime—just ask during a session. Your therapist knows where to find the source files.
|
||||
|
||||
### Switch Communication Style
|
||||
|
||||
Say: **"switch persona"**
|
||||
|
||||
Choose from:
|
||||
- Warm & Supportive
|
||||
- Direct & Challenging
|
||||
- Coach
|
||||
- Grounded & Real
|
||||
|
||||
This changes how your therapist communicates without affecting their memory of you.
|
||||
|
||||
### Add or Remove Therapeutic Approaches
|
||||
|
||||
Say: **"add modality"** or **"remove modality"**
|
||||
|
||||
You can add approaches like Somatic Experiencing or Psychodynamic, or remove ones you're not using.
|
||||
|
||||
### Change Session Structure
|
||||
|
||||
Say: **"change session structure"**
|
||||
|
||||
Switch between Structured, Moderate, or Freeform session styles.
|
||||
|
||||
### Self-Contained After Setup
|
||||
|
||||
After setup completes, your therapist folder is fully self-contained. You can safely delete the ai-therapy-kit repo if you want—all customization options are stored in your therapist's `.therapy/library/` folder, and updates are fetched directly from GitHub.
|
||||
|
||||
---
|
||||
|
||||
## More Questions?
|
||||
|
||||
See the [FAQ in the README](../README.md#faq) for common questions about cost, privacy, and customization.
|
||||
|
||||
@@ -1,620 +0,0 @@
|
||||
<#
|
||||
.SYNOPSIS
|
||||
AI Therapy Starter Kit - Setup Script (Windows)
|
||||
.DESCRIPTION
|
||||
Creates a personalized AI therapy environment with local storage
|
||||
#>
|
||||
|
||||
#Requires -Version 5.1
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
# Get script directory
|
||||
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Configuration Variables (set during setup)
|
||||
#------------------------------------------------------------------------------
|
||||
$script:TherapistName = ""
|
||||
$script:Persona = ""
|
||||
$script:Modalities = @()
|
||||
$script:SessionStructure = ""
|
||||
$script:TherapyDir = ""
|
||||
$script:UseEncryption = $false
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Helper Functions
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
function Write-Header {
|
||||
param([string]$Text)
|
||||
Write-Host ""
|
||||
Write-Host ("=" * 60) -ForegroundColor Cyan
|
||||
Write-Host $Text -ForegroundColor White
|
||||
Write-Host ("=" * 60) -ForegroundColor Cyan
|
||||
}
|
||||
|
||||
function Write-Step {
|
||||
param([string]$Text)
|
||||
Write-Host ""
|
||||
Write-Host ">> $Text" -ForegroundColor Blue
|
||||
}
|
||||
|
||||
function Write-Option {
|
||||
param([string]$Number, [string]$Text)
|
||||
Write-Host " $Number) $Text" -ForegroundColor Green
|
||||
}
|
||||
|
||||
function Write-Warning-Custom {
|
||||
param([string]$Text)
|
||||
Write-Host "[!] $Text" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
function Write-Success {
|
||||
param([string]$Text)
|
||||
Write-Host "[OK] $Text" -ForegroundColor Green
|
||||
}
|
||||
|
||||
function Write-Info {
|
||||
param([string]$Text)
|
||||
Write-Host "[i] $Text" -ForegroundColor Cyan
|
||||
}
|
||||
|
||||
function Read-Choice {
|
||||
param(
|
||||
[string]$Prompt,
|
||||
[string]$Default
|
||||
)
|
||||
$response = Read-Host "$Prompt [$Default]"
|
||||
if ([string]::IsNullOrWhiteSpace($response)) {
|
||||
return $Default
|
||||
}
|
||||
return $response
|
||||
}
|
||||
|
||||
function Read-YesNo {
|
||||
param(
|
||||
[string]$Prompt,
|
||||
[string]$Default = "y"
|
||||
)
|
||||
$response = Read-Host "$Prompt [$Default]"
|
||||
if ([string]::IsNullOrWhiteSpace($response)) {
|
||||
$response = $Default
|
||||
}
|
||||
return $response -match "^[Yy]"
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Disclaimer & Safety Check
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
function Show-Disclaimer {
|
||||
Write-Header "AI Therapy Starter Kit"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "This tool creates an AI-assisted therapy environment for self-reflection"
|
||||
Write-Host "and emotional support."
|
||||
Write-Host ""
|
||||
Write-Host "IMPORTANT:" -ForegroundColor Yellow
|
||||
Write-Host "* This is NOT a replacement for professional mental health care"
|
||||
Write-Host "* The AI cannot diagnose conditions or prescribe treatment"
|
||||
Write-Host "* If you're in crisis, please contact a crisis line (988 in US)"
|
||||
Write-Host ""
|
||||
|
||||
if (-not (Read-YesNo "I understand these limitations. Continue?")) {
|
||||
Write-Host "Setup cancelled."
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
function Test-Safety {
|
||||
Write-Header "Quick Safety Check"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "This tool works best for everyday emotional support and self-reflection."
|
||||
Write-Host "Please answer honestly so we can point you to the right resources."
|
||||
Write-Host ""
|
||||
|
||||
$crisisResponse = Read-Host "Are you currently experiencing thoughts of suicide or self-harm? [y/N]"
|
||||
|
||||
if ($crisisResponse -match "^[Yy]") {
|
||||
Write-Host ""
|
||||
Write-Host ("=" * 60) -ForegroundColor Red
|
||||
Write-Host "Please reach out to trained crisis counselors:" -ForegroundColor White
|
||||
Write-Host ""
|
||||
Write-Host " 988 - Suicide & Crisis Lifeline (call or text)"
|
||||
Write-Host " 741741 - Crisis Text Line (text HOME)"
|
||||
Write-Host " 911 - If you're in immediate danger"
|
||||
Write-Host ""
|
||||
Write-Host " International: https://findahelpline.com"
|
||||
Write-Host ""
|
||||
Write-Host ("=" * 60) -ForegroundColor Red
|
||||
Write-Host ""
|
||||
Write-Host "This tool will still be here when you're ready."
|
||||
Write-Host "Please reach out to the resources above first."
|
||||
exit 0
|
||||
}
|
||||
|
||||
$impairmentResponse = Read-Host "Symptoms that significantly impair daily functioning? [y/N]"
|
||||
|
||||
if ($impairmentResponse -match "^[Yy]") {
|
||||
Write-Host ""
|
||||
Write-Warning-Custom "Consider consulting a mental health professional for evaluation."
|
||||
Write-Info "This tool can supplement professional care, but may not be sufficient alone."
|
||||
Write-Host ""
|
||||
if (-not (Read-YesNo "Continue with setup anyway?")) {
|
||||
Write-Host "Setup cancelled. Take care of yourself."
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
Write-Success "Safety check complete"
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Configuration Questions
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
function Select-TherapistName {
|
||||
Write-Header "Step 1: Name Your AI Therapist"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Give your AI therapist a name. This personalizes the experience."
|
||||
Write-Host ""
|
||||
Write-Host "Examples: Dr. Ruby, Sage, Alex, Dr. Chen, or any name that feels right."
|
||||
Write-Host ""
|
||||
|
||||
$script:TherapistName = Read-Choice "Therapist name" "Sage"
|
||||
Write-Success "Your therapist will be called: $script:TherapistName"
|
||||
}
|
||||
|
||||
function Select-Persona {
|
||||
Write-Header "Step 2: Communication Style"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "How do you want your AI therapist to communicate?"
|
||||
Write-Host ""
|
||||
|
||||
Write-Option "1" "Warm & Supportive - Validation first, gentle challenges, nurturing"
|
||||
Write-Option "2" "Direct & Challenging - Will push back, Socratic, insight-focused"
|
||||
Write-Option "3" "Coach - Action-oriented, goal-focused, builds momentum"
|
||||
Write-Host ""
|
||||
|
||||
$choice = Read-Choice "Choose style (1-3)" "1"
|
||||
|
||||
switch ($choice) {
|
||||
"1" { $script:Persona = "warm-supportive" }
|
||||
"2" { $script:Persona = "direct-challenging" }
|
||||
"3" { $script:Persona = "coach" }
|
||||
default { $script:Persona = "warm-supportive" }
|
||||
}
|
||||
|
||||
Write-Success "Selected: $script:Persona"
|
||||
}
|
||||
|
||||
function Select-Modalities {
|
||||
Write-Header "Step 3: Therapeutic Approaches"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Which therapeutic approaches should your AI use?"
|
||||
Write-Host "Select all that apply (comma-separated, e.g., 1,2,3)"
|
||||
Write-Host ""
|
||||
|
||||
Write-Option "1" "CBT (Cognitive Behavioral) - Thoughts affect feelings and actions"
|
||||
Write-Option "2" "ACT (Acceptance & Commitment) - Values-based, mindful acceptance"
|
||||
Write-Option "3" "DBT Skills - Emotional regulation, distress tolerance"
|
||||
Write-Host ""
|
||||
Write-Info "All three are recommended for a well-rounded approach."
|
||||
Write-Host ""
|
||||
|
||||
$choice = Read-Choice "Select approaches" "1,2,3"
|
||||
|
||||
$script:Modalities = @()
|
||||
if ($choice -match "1") { $script:Modalities += "cbt" }
|
||||
if ($choice -match "2") { $script:Modalities += "act" }
|
||||
if ($choice -match "3") { $script:Modalities += "dbt-skills" }
|
||||
|
||||
if ($script:Modalities.Count -eq 0) {
|
||||
$script:Modalities = @("cbt", "act", "dbt-skills")
|
||||
}
|
||||
|
||||
Write-Success "Selected: $($script:Modalities -join ', ')"
|
||||
}
|
||||
|
||||
function Select-SessionStructure {
|
||||
Write-Header "Step 4: Session Structure"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "How structured do you want your sessions?"
|
||||
Write-Host ""
|
||||
|
||||
Write-Option "1" "Structured - Homework, exercises, tracking progress"
|
||||
Write-Option "2" "Moderate - Some structure, flexible approach"
|
||||
Write-Option "3" "Freeform - Just conversation, minimal assignments"
|
||||
Write-Host ""
|
||||
|
||||
$choice = Read-Choice "Choose structure (1-3)" "2"
|
||||
|
||||
switch ($choice) {
|
||||
"1" { $script:SessionStructure = "structured" }
|
||||
"2" { $script:SessionStructure = "moderate" }
|
||||
"3" { $script:SessionStructure = "freeform" }
|
||||
default { $script:SessionStructure = "moderate" }
|
||||
}
|
||||
|
||||
Write-Success "Selected: $script:SessionStructure"
|
||||
}
|
||||
|
||||
function Select-StorageLocation {
|
||||
Write-Header "Step 5: Storage Location"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Where should your therapy files be stored?"
|
||||
Write-Host ""
|
||||
Write-Host "Your sessions and profile will be saved as markdown files."
|
||||
$defaultPath = Join-Path $env:USERPROFILE "ai-therapy"
|
||||
Write-Host "Default location: $defaultPath"
|
||||
Write-Host ""
|
||||
|
||||
$script:TherapyDir = Read-Choice "Storage path" $defaultPath
|
||||
Write-Success "Files will be stored in: $script:TherapyDir"
|
||||
}
|
||||
|
||||
function Select-Encryption {
|
||||
Write-Header "Step 6: Security"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "How secure do you need your therapy data?"
|
||||
Write-Host ""
|
||||
|
||||
Write-Option "1" "Standard - Files stored locally, not synced (good for most users)"
|
||||
Write-Option "2" "Encrypted - Password-protected folder (requires VeraCrypt)"
|
||||
Write-Host ""
|
||||
Write-Info "Encryption uses VeraCrypt (free, open-source, AES-256)."
|
||||
Write-Info "Download from: https://veracrypt.fr"
|
||||
Write-Host ""
|
||||
|
||||
$choice = Read-Choice "Choose security level (1-2)" "1"
|
||||
|
||||
$script:UseEncryption = ($choice -eq "2")
|
||||
|
||||
if ($script:UseEncryption) {
|
||||
Write-Success "Encryption enabled"
|
||||
} else {
|
||||
Write-Success "Standard storage (no encryption)"
|
||||
}
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# File Generation
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
function Get-SessionStructureContent {
|
||||
switch ($script:SessionStructure) {
|
||||
"structured" {
|
||||
return @"
|
||||
### Session Flow
|
||||
|
||||
**Opening (5 min)**
|
||||
- Check in on emotional state
|
||||
- Review homework from last session
|
||||
|
||||
**Core Work (main portion)**
|
||||
- Address presenting concerns
|
||||
- Apply therapeutic techniques
|
||||
- Build skills and insights
|
||||
|
||||
**Closing (5 min)**
|
||||
- Summarize key takeaways
|
||||
- Assign specific homework
|
||||
- Preview next focus area
|
||||
|
||||
### Homework Expectations
|
||||
|
||||
- Specific, concrete assignments each session
|
||||
- Always follow up at next session start
|
||||
- Track completion and obstacles
|
||||
- Adjust difficulty based on success rate
|
||||
|
||||
### Progress Tracking
|
||||
|
||||
- Note behavioral changes across sessions
|
||||
- Reference previous insights
|
||||
- Celebrate wins and acknowledge effort
|
||||
"@
|
||||
}
|
||||
"moderate" {
|
||||
return @"
|
||||
### Session Flow
|
||||
|
||||
**Check-in**
|
||||
- How are you doing since last time?
|
||||
- Any homework to review?
|
||||
|
||||
**Exploration**
|
||||
- Follow what's alive for the client
|
||||
- Apply techniques when appropriate
|
||||
- Balance processing with skill-building
|
||||
|
||||
**Closing**
|
||||
- What's landing from today?
|
||||
- Optional: something to try before next time
|
||||
|
||||
### Homework Approach
|
||||
|
||||
- Offer exercises when they fit naturally
|
||||
- No pressure if homework isn't done
|
||||
- Explore what got in the way (useful data)
|
||||
- Flexibility over rigidity
|
||||
"@
|
||||
}
|
||||
"freeform" {
|
||||
return @"
|
||||
### Session Flow
|
||||
|
||||
- Follow the client's lead
|
||||
- Minimal structure, maximum presence
|
||||
- Techniques offered organically, not prescribed
|
||||
- No formal homework unless requested
|
||||
|
||||
### Approach
|
||||
|
||||
- Create space for whatever needs to emerge
|
||||
- Trust the process
|
||||
- Insight and connection over assignments
|
||||
- Let the conversation go where it needs to go
|
||||
"@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Get-ToneModifier {
|
||||
switch ($script:Persona) {
|
||||
"warm-supportive" {
|
||||
return "Can shift to casual/informal for rapport; tends toward softer, more nurturing language; prioritizes safety and validation before challenge."
|
||||
}
|
||||
"direct-challenging" {
|
||||
return "Direct without being harsh; will push back and name patterns; uses Socratic questioning; treats the person as capable of handling honest feedback."
|
||||
}
|
||||
"coach" {
|
||||
return "Action-oriented and goal-focused; celebrates wins and builds momentum; less processing, more problem-solving; provides accountability for commitments."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Build-ClaudeMd {
|
||||
param([string]$OutputDir)
|
||||
|
||||
Write-Step "Assembling your personalized CLAUDE.md..."
|
||||
|
||||
$templatePath = Join-Path $ScriptDir "CLAUDE.template.md"
|
||||
$content = Get-Content $templatePath -Raw
|
||||
|
||||
# Replace variables
|
||||
$content = $content -replace '\{\{THERAPIST_NAME\}\}', $script:TherapistName
|
||||
$content = $content -replace '\{\{THERAPY_DIR\}\}', $script:TherapyDir
|
||||
$content = $content -replace '\{\{TONE_MODIFIER\}\}', (Get-ToneModifier)
|
||||
$content = $content -replace '\{\{SESSION_STRUCTURE\}\}', (Get-SessionStructureContent)
|
||||
|
||||
# Read persona file
|
||||
$personaPath = Join-Path $ScriptDir "personas\$($script:Persona).md"
|
||||
if (Test-Path $personaPath) {
|
||||
$personaContent = Get-Content $personaPath -Raw
|
||||
|
||||
# Extract description (simplified extraction)
|
||||
$personaDesc = "See persona file for full description."
|
||||
$personaStyle = "See persona file for communication patterns."
|
||||
|
||||
if ($personaContent -match '## Persona Description([\s\S]*?)## Communication Style') {
|
||||
$personaDesc = $Matches[1].Trim()
|
||||
}
|
||||
if ($personaContent -match '## Communication Style([\s\S]*?)## (Challenge Style|Session Structure|Tone Modifier|When to Shift)') {
|
||||
$personaStyle = $Matches[1].Trim()
|
||||
}
|
||||
|
||||
$content = $content -replace '\{\{PERSONA_DESCRIPTION\}\}', $personaDesc
|
||||
$content = $content -replace '\{\{PERSONA_STYLE\}\}', $personaStyle
|
||||
}
|
||||
|
||||
# Combine modality content
|
||||
$modalityContent = ""
|
||||
foreach ($mod in $script:Modalities) {
|
||||
$modPath = Join-Path $ScriptDir "modalities\$mod.md"
|
||||
if (Test-Path $modPath) {
|
||||
$modalityContent += Get-Content $modPath -Raw
|
||||
$modalityContent += "`n`n---`n`n"
|
||||
}
|
||||
}
|
||||
$content = $content -replace '\{\{MODALITY_CONTENT\}\}', $modalityContent
|
||||
|
||||
# Focus areas placeholder
|
||||
$focusPlaceholder = @"
|
||||
*Add your focus areas here as you begin working together.*
|
||||
|
||||
Example areas:
|
||||
- Anxiety management
|
||||
- Relationship patterns
|
||||
- Work stress
|
||||
- Self-esteem
|
||||
- Life transitions
|
||||
"@
|
||||
$content = $content -replace '\{\{FOCUS_AREAS\}\}', $focusPlaceholder
|
||||
|
||||
# Write file
|
||||
$outputPath = Join-Path $OutputDir "CLAUDE.md"
|
||||
Set-Content -Path $outputPath -Value $content -Encoding UTF8
|
||||
Write-Success "Created CLAUDE.md"
|
||||
}
|
||||
|
||||
function New-DirectoryStructure {
|
||||
param([string]$BaseDir)
|
||||
|
||||
Write-Step "Creating directory structure..."
|
||||
|
||||
# Create directories
|
||||
New-Item -ItemType Directory -Path $BaseDir -Force | Out-Null
|
||||
New-Item -ItemType Directory -Path (Join-Path $BaseDir "sessions") -Force | Out-Null
|
||||
|
||||
# Copy profile template
|
||||
$profileTemplate = Join-Path $ScriptDir "profile.template.md"
|
||||
$profileDest = Join-Path $BaseDir "profile.md"
|
||||
Copy-Item $profileTemplate $profileDest
|
||||
Write-Success "Created profile.md"
|
||||
|
||||
# Create .gitignore
|
||||
$gitignore = @"
|
||||
# Sensitive therapy data - never commit
|
||||
profile.md
|
||||
sessions/
|
||||
|
||||
# Environment files
|
||||
.env
|
||||
.env.local
|
||||
|
||||
# Windows
|
||||
Thumbs.db
|
||||
desktop.ini
|
||||
|
||||
# VeraCrypt
|
||||
*.hc
|
||||
"@
|
||||
Set-Content -Path (Join-Path $BaseDir ".gitignore") -Value $gitignore
|
||||
Write-Success "Created .gitignore"
|
||||
|
||||
# Create sessions README
|
||||
$sessionsReadme = @"
|
||||
# Sessions Directory
|
||||
|
||||
Session notes are stored here automatically.
|
||||
Each session is saved as YYYY-MM-DD.md
|
||||
|
||||
These files contain sensitive information and are excluded from git.
|
||||
"@
|
||||
Set-Content -Path (Join-Path $BaseDir "sessions\.gitkeep") -Value $sessionsReadme
|
||||
Write-Success "Created sessions directory"
|
||||
}
|
||||
|
||||
function Initialize-Encryption {
|
||||
param([string]$BaseDir)
|
||||
|
||||
Write-Step "Setting up encryption..."
|
||||
|
||||
$veracryptPath = "C:\Program Files\VeraCrypt\VeraCrypt.exe"
|
||||
|
||||
if (-not (Test-Path $veracryptPath)) {
|
||||
Write-Warning-Custom "VeraCrypt not found at expected location."
|
||||
Write-Host ""
|
||||
Write-Host "Please install VeraCrypt from: https://veracrypt.fr"
|
||||
Write-Host ""
|
||||
Write-Host "After installing:"
|
||||
Write-Host "1. Open VeraCrypt"
|
||||
Write-Host "2. Create a new encrypted volume"
|
||||
Write-Host "3. Choose 'Create an encrypted file container'"
|
||||
Write-Host "4. Set size to at least 500MB"
|
||||
Write-Host "5. Mount the volume and run this setup again pointing to the mounted drive"
|
||||
Write-Host ""
|
||||
|
||||
if (Read-YesNo "Continue with standard (non-encrypted) setup instead?") {
|
||||
$script:UseEncryption = $false
|
||||
return
|
||||
} else {
|
||||
Write-Host "Setup cancelled. Install VeraCrypt and try again."
|
||||
exit 0
|
||||
}
|
||||
}
|
||||
|
||||
Write-Info "VeraCrypt found. Please create an encrypted container manually."
|
||||
Write-Host ""
|
||||
Write-Host "Quick guide:"
|
||||
Write-Host "1. Open VeraCrypt"
|
||||
Write-Host "2. Click 'Create Volume'"
|
||||
Write-Host "3. Select 'Create an encrypted file container'"
|
||||
Write-Host "4. Choose 'Standard VeraCrypt volume'"
|
||||
Write-Host "5. Save as: $env:USERPROFILE\therapy-vault.hc"
|
||||
Write-Host "6. Set size to 500MB or more"
|
||||
Write-Host "7. Choose a strong password"
|
||||
Write-Host "8. Mount the volume to a drive letter (e.g., T:)"
|
||||
Write-Host ""
|
||||
|
||||
$mountedDrive = Read-Choice "Enter the mounted drive letter (e.g., T)" "T"
|
||||
$script:TherapyDir = "${mountedDrive}:\ai-therapy"
|
||||
|
||||
Write-Success "Will use encrypted drive: $script:TherapyDir"
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Main Setup Flow
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
function Main {
|
||||
Clear-Host
|
||||
|
||||
# Welcome and disclaimers
|
||||
Show-Disclaimer
|
||||
Test-Safety
|
||||
|
||||
# Configuration
|
||||
Select-TherapistName
|
||||
Select-Persona
|
||||
Select-Modalities
|
||||
Select-SessionStructure
|
||||
Select-StorageLocation
|
||||
Select-Encryption
|
||||
|
||||
# Setup
|
||||
Write-Header "Setting Up Your Therapy Environment"
|
||||
|
||||
if ($script:UseEncryption) {
|
||||
Initialize-Encryption $script:TherapyDir
|
||||
}
|
||||
|
||||
# Create structure
|
||||
New-DirectoryStructure $script:TherapyDir
|
||||
Build-ClaudeMd $script:TherapyDir
|
||||
|
||||
# Final summary
|
||||
Write-Header "Setup Complete!"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Your AI therapy environment is ready."
|
||||
Write-Host ""
|
||||
Write-Host "Location: $script:TherapyDir" -ForegroundColor White
|
||||
Write-Host "Therapist: $script:TherapistName" -ForegroundColor White
|
||||
Write-Host "Style: $script:Persona" -ForegroundColor White
|
||||
Write-Host "Approaches: $($script:Modalities -join ', ')" -ForegroundColor White
|
||||
Write-Host "Structure: $script:SessionStructure" -ForegroundColor White
|
||||
if ($script:UseEncryption) {
|
||||
Write-Host "Security: Encrypted (VeraCrypt)" -ForegroundColor White
|
||||
} else {
|
||||
Write-Host "Security: Standard (local files)" -ForegroundColor White
|
||||
}
|
||||
Write-Host ""
|
||||
|
||||
Write-Header "Getting Started"
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "1. Open Claude Code in your therapy directory:"
|
||||
Write-Host " cd `"$script:TherapyDir`" ; claude" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
Write-Host "2. Start a session by talking to $script:TherapistName"
|
||||
Write-Host ""
|
||||
Write-Host "3. End sessions naturally - notes will be saved automatically"
|
||||
Write-Host ""
|
||||
|
||||
if ($script:UseEncryption) {
|
||||
Write-Host "Remember: Mount your VeraCrypt volume before each session" -ForegroundColor Yellow
|
||||
Write-Host ""
|
||||
}
|
||||
|
||||
Write-Host ("=" * 60)
|
||||
Write-Host ""
|
||||
Write-Host "If you find this helpful, consider supporting development:"
|
||||
Write-Host " https://buymeacoffee.com/[YOUR_HANDLE]"
|
||||
Write-Host " https://gumroad.com/[YOUR_HANDLE]"
|
||||
Write-Host ""
|
||||
Write-Host "Take care of yourself." -ForegroundColor Green
|
||||
Write-Host ""
|
||||
}
|
||||
|
||||
# Run main
|
||||
Main
|
||||
@@ -1,628 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# AI Therapy Starter Kit - Setup Script (macOS)
|
||||
# Creates a personalized AI therapy environment with local storage
|
||||
|
||||
set -e
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m' # No Color
|
||||
BOLD='\033[1m'
|
||||
|
||||
# Get the directory where this script lives
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Helper Functions
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
print_header() {
|
||||
echo ""
|
||||
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo -e "${BOLD}$1${NC}"
|
||||
echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
}
|
||||
|
||||
print_step() {
|
||||
echo ""
|
||||
echo -e "${BLUE}▸${NC} ${BOLD}$1${NC}"
|
||||
}
|
||||
|
||||
print_option() {
|
||||
echo -e " ${GREEN}$1${NC}) $2"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}⚠${NC} $1"
|
||||
}
|
||||
|
||||
print_success() {
|
||||
echo -e "${GREEN}✓${NC} $1"
|
||||
}
|
||||
|
||||
print_info() {
|
||||
echo -e "${CYAN}ℹ${NC} $1"
|
||||
}
|
||||
|
||||
prompt_choice() {
|
||||
local prompt="$1"
|
||||
local default="$2"
|
||||
local result
|
||||
|
||||
echo -ne "${prompt} [${default}]: " >&2
|
||||
read -r result
|
||||
echo "${result:-$default}"
|
||||
}
|
||||
|
||||
prompt_yes_no() {
|
||||
local prompt="$1"
|
||||
local default="$2"
|
||||
local result
|
||||
|
||||
echo -ne "${prompt} [${default}]: " >&2
|
||||
read -r result
|
||||
result="${result:-$default}"
|
||||
[[ "$result" =~ ^[Yy] ]]
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Disclaimer & Safety Check
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
show_disclaimer() {
|
||||
print_header "AI Therapy Starter Kit"
|
||||
|
||||
echo ""
|
||||
echo "This tool creates an AI-assisted therapy environment for self-reflection"
|
||||
echo "and emotional support."
|
||||
echo ""
|
||||
echo -e "${YELLOW}${BOLD}IMPORTANT:${NC}"
|
||||
echo "• This is NOT a replacement for professional mental health care"
|
||||
echo "• The AI cannot diagnose conditions or prescribe treatment"
|
||||
echo "• If you're in crisis, please contact a crisis line (988 in US)"
|
||||
echo ""
|
||||
|
||||
if ! prompt_yes_no "I understand these limitations. Continue?" "y"; then
|
||||
echo "Setup cancelled."
|
||||
exit 0
|
||||
fi
|
||||
}
|
||||
|
||||
safety_screening() {
|
||||
print_header "Quick Safety Check"
|
||||
|
||||
echo ""
|
||||
echo "This tool works best for everyday emotional support and self-reflection."
|
||||
echo "Please answer honestly so we can point you to the right resources."
|
||||
echo ""
|
||||
|
||||
echo "Are you currently experiencing any of the following?"
|
||||
echo ""
|
||||
|
||||
echo -ne "Thoughts of suicide or self-harm? [y/N]: "
|
||||
read -r crisis_response
|
||||
|
||||
if [[ "$crisis_response" =~ ^[Yy] ]]; then
|
||||
echo ""
|
||||
echo -e "${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo -e "${BOLD}Please reach out to trained crisis counselors:${NC}"
|
||||
echo ""
|
||||
echo " 988 - Suicide & Crisis Lifeline (call or text)"
|
||||
echo " 741741 - Crisis Text Line (text HOME)"
|
||||
echo " 911 - If you're in immediate danger"
|
||||
echo ""
|
||||
echo " International: https://findahelpline.com"
|
||||
echo ""
|
||||
echo -e "${RED}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
|
||||
echo ""
|
||||
echo "This tool will still be here when you're ready."
|
||||
echo "Please reach out to the resources above first."
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo -ne "Symptoms that significantly impair daily functioning? [y/N]: "
|
||||
read -r impairment_response
|
||||
|
||||
if [[ "$impairment_response" =~ ^[Yy] ]]; then
|
||||
echo ""
|
||||
print_warning "Consider consulting a mental health professional for evaluation."
|
||||
print_info "This tool can supplement professional care, but may not be sufficient alone."
|
||||
echo ""
|
||||
if ! prompt_yes_no "Continue with setup anyway?" "y"; then
|
||||
echo "Setup cancelled. Take care of yourself."
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
print_success "Safety check complete"
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Configuration Questions
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
choose_therapist_name() {
|
||||
print_header "Step 1: Name Your AI Therapist"
|
||||
|
||||
echo ""
|
||||
echo "Give your AI therapist a name. This personalizes the experience."
|
||||
echo ""
|
||||
echo "Examples: Dr. Ruby, Sage, Alex, Dr. Chen, or any name that feels right."
|
||||
echo ""
|
||||
|
||||
THERAPIST_NAME=$(prompt_choice "Therapist name" "Sage")
|
||||
print_success "Your therapist will be called: $THERAPIST_NAME"
|
||||
}
|
||||
|
||||
choose_persona() {
|
||||
print_header "Step 2: Communication Style"
|
||||
|
||||
echo ""
|
||||
echo "How do you want your AI therapist to communicate?"
|
||||
echo ""
|
||||
|
||||
print_option "1" "Warm & Supportive - Validation first, gentle challenges, nurturing"
|
||||
print_option "2" "Direct & Challenging - Will push back, Socratic, insight-focused"
|
||||
print_option "3" "Coach - Action-oriented, goal-focused, builds momentum"
|
||||
echo ""
|
||||
|
||||
local choice
|
||||
choice=$(prompt_choice "Choose style (1-3)" "1")
|
||||
|
||||
case $choice in
|
||||
1) PERSONA="warm-supportive" ;;
|
||||
2) PERSONA="direct-challenging" ;;
|
||||
3) PERSONA="coach" ;;
|
||||
*) PERSONA="warm-supportive" ;;
|
||||
esac
|
||||
|
||||
print_success "Selected: $PERSONA"
|
||||
}
|
||||
|
||||
choose_modalities() {
|
||||
print_header "Step 3: Therapeutic Approaches"
|
||||
|
||||
echo ""
|
||||
echo "Which therapeutic approaches should your AI use?"
|
||||
echo "Select all that apply (comma-separated, e.g., 1,2,3)"
|
||||
echo ""
|
||||
|
||||
print_option "1" "CBT (Cognitive Behavioral) - Thoughts affect feelings and actions"
|
||||
print_option "2" "ACT (Acceptance & Commitment) - Values-based, mindful acceptance"
|
||||
print_option "3" "DBT Skills - Emotional regulation, distress tolerance"
|
||||
echo ""
|
||||
print_info "All three are recommended for a well-rounded approach."
|
||||
echo ""
|
||||
|
||||
local choice
|
||||
choice=$(prompt_choice "Select approaches" "1,2,3")
|
||||
|
||||
MODALITIES=()
|
||||
if [[ "$choice" == *"1"* ]]; then MODALITIES+=("cbt"); fi
|
||||
if [[ "$choice" == *"2"* ]]; then MODALITIES+=("act"); fi
|
||||
if [[ "$choice" == *"3"* ]]; then MODALITIES+=("dbt-skills"); fi
|
||||
|
||||
# Default to all if nothing selected
|
||||
if [ ${#MODALITIES[@]} -eq 0 ]; then
|
||||
MODALITIES=("cbt" "act" "dbt-skills")
|
||||
fi
|
||||
|
||||
print_success "Selected: ${MODALITIES[*]}"
|
||||
}
|
||||
|
||||
choose_session_structure() {
|
||||
print_header "Step 4: Session Structure"
|
||||
|
||||
echo ""
|
||||
echo "How structured do you want your sessions?"
|
||||
echo ""
|
||||
|
||||
print_option "1" "Structured - Homework, exercises, tracking progress"
|
||||
print_option "2" "Moderate - Some structure, flexible approach"
|
||||
print_option "3" "Freeform - Just conversation, minimal assignments"
|
||||
echo ""
|
||||
|
||||
local choice
|
||||
choice=$(prompt_choice "Choose structure (1-3)" "2")
|
||||
|
||||
case $choice in
|
||||
1) SESSION_STRUCTURE="structured" ;;
|
||||
2) SESSION_STRUCTURE="moderate" ;;
|
||||
3) SESSION_STRUCTURE="freeform" ;;
|
||||
*) SESSION_STRUCTURE="moderate" ;;
|
||||
esac
|
||||
|
||||
print_success "Selected: $SESSION_STRUCTURE"
|
||||
}
|
||||
|
||||
choose_storage_location() {
|
||||
print_header "Step 5: Storage Location"
|
||||
|
||||
echo ""
|
||||
echo "Where should your therapy files be stored?"
|
||||
echo ""
|
||||
echo "Your sessions and profile will be saved as markdown files."
|
||||
echo "Default location: ~/ai-therapy"
|
||||
echo ""
|
||||
|
||||
THERAPY_DIR=$(prompt_choice "Storage path" "$HOME/ai-therapy")
|
||||
|
||||
# Expand ~ if used
|
||||
THERAPY_DIR="${THERAPY_DIR/#\~/$HOME}"
|
||||
|
||||
print_success "Files will be stored in: $THERAPY_DIR"
|
||||
}
|
||||
|
||||
choose_encryption() {
|
||||
print_header "Step 6: Security"
|
||||
|
||||
echo ""
|
||||
echo "How secure do you need your therapy data?"
|
||||
echo ""
|
||||
|
||||
print_option "1" "Standard - Files stored locally, not synced (good for most users)"
|
||||
print_option "2" "Encrypted - Password-protected vault (recommended for shared computers)"
|
||||
echo ""
|
||||
print_info "Encryption uses macOS built-in encrypted disk images (AES-256)."
|
||||
echo ""
|
||||
|
||||
local choice
|
||||
choice=$(prompt_choice "Choose security level (1-2)" "1")
|
||||
|
||||
case $choice in
|
||||
2) USE_ENCRYPTION=true ;;
|
||||
*) USE_ENCRYPTION=false ;;
|
||||
esac
|
||||
|
||||
if $USE_ENCRYPTION; then
|
||||
print_success "Encryption enabled"
|
||||
else
|
||||
print_success "Standard storage (no encryption)"
|
||||
fi
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# File Generation
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
generate_session_structure_content() {
|
||||
case $SESSION_STRUCTURE in
|
||||
structured)
|
||||
cat << 'EOF'
|
||||
### Session Flow
|
||||
|
||||
**Opening (5 min)**
|
||||
- Check in on emotional state
|
||||
- Review homework from last session
|
||||
|
||||
**Core Work (main portion)**
|
||||
- Address presenting concerns
|
||||
- Apply therapeutic techniques
|
||||
- Build skills and insights
|
||||
|
||||
**Closing (5 min)**
|
||||
- Summarize key takeaways
|
||||
- Assign specific homework
|
||||
- Preview next focus area
|
||||
|
||||
### Homework Expectations
|
||||
|
||||
- Specific, concrete assignments each session
|
||||
- Always follow up at next session start
|
||||
- Track completion and obstacles
|
||||
- Adjust difficulty based on success rate
|
||||
|
||||
### Progress Tracking
|
||||
|
||||
- Note behavioral changes across sessions
|
||||
- Reference previous insights
|
||||
- Celebrate wins and acknowledge effort
|
||||
EOF
|
||||
;;
|
||||
moderate)
|
||||
cat << 'EOF'
|
||||
### Session Flow
|
||||
|
||||
**Check-in**
|
||||
- How are you doing since last time?
|
||||
- Any homework to review?
|
||||
|
||||
**Exploration**
|
||||
- Follow what's alive for the client
|
||||
- Apply techniques when appropriate
|
||||
- Balance processing with skill-building
|
||||
|
||||
**Closing**
|
||||
- What's landing from today?
|
||||
- Optional: something to try before next time
|
||||
|
||||
### Homework Approach
|
||||
|
||||
- Offer exercises when they fit naturally
|
||||
- No pressure if homework isn't done
|
||||
- Explore what got in the way (useful data)
|
||||
- Flexibility over rigidity
|
||||
EOF
|
||||
;;
|
||||
freeform)
|
||||
cat << 'EOF'
|
||||
### Session Flow
|
||||
|
||||
- Follow the client's lead
|
||||
- Minimal structure, maximum presence
|
||||
- Techniques offered organically, not prescribed
|
||||
- No formal homework unless requested
|
||||
|
||||
### Approach
|
||||
|
||||
- Create space for whatever needs to emerge
|
||||
- Trust the process
|
||||
- Insight and connection over assignments
|
||||
- Let the conversation go where it needs to go
|
||||
EOF
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
generate_tone_modifier() {
|
||||
case $PERSONA in
|
||||
warm-supportive)
|
||||
echo "Can shift to casual/informal for rapport; tends toward softer, more nurturing language; prioritizes safety and validation before challenge."
|
||||
;;
|
||||
direct-challenging)
|
||||
echo "Direct without being harsh; will push back and name patterns; uses Socratic questioning; treats the person as capable of handling honest feedback."
|
||||
;;
|
||||
coach)
|
||||
echo "Action-oriented and goal-focused; celebrates wins and builds momentum; less processing, more problem-solving; provides accountability for commitments."
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
assemble_claude_md() {
|
||||
print_step "Assembling your personalized CLAUDE.md..."
|
||||
|
||||
local output_file="$1/CLAUDE.md"
|
||||
local template="$SCRIPT_DIR/CLAUDE.template.md"
|
||||
|
||||
# Read template
|
||||
local content
|
||||
content=$(cat "$template")
|
||||
|
||||
# Replace therapist name
|
||||
content="${content//\{\{THERAPIST_NAME\}\}/$THERAPIST_NAME}"
|
||||
|
||||
# Replace therapy directory
|
||||
content="${content//\{\{THERAPY_DIR\}\}/$THERAPY_DIR}"
|
||||
|
||||
# Generate and replace tone modifier
|
||||
local tone_modifier
|
||||
tone_modifier=$(generate_tone_modifier)
|
||||
content="${content//\{\{TONE_MODIFIER\}\}/$tone_modifier}"
|
||||
|
||||
# Read and insert persona content
|
||||
local persona_file="$SCRIPT_DIR/personas/${PERSONA}.md"
|
||||
if [ -f "$persona_file" ]; then
|
||||
local persona_desc
|
||||
local persona_style
|
||||
|
||||
# Extract description (between first ## and second ##)
|
||||
persona_desc=$(awk '/^## Persona Description/,/^## Communication Style/' "$persona_file" | grep -v "^##" | head -20)
|
||||
|
||||
# Extract style section
|
||||
persona_style=$(awk '/^## Communication Style/,/^## (Challenge Style|Session Structure|Tone Modifier|When to Shift)/' "$persona_file" | grep -v "^##")
|
||||
|
||||
content="${content//\{\{PERSONA_DESCRIPTION\}\}/$persona_desc}"
|
||||
content="${content//\{\{PERSONA_STYLE\}\}/$persona_style}"
|
||||
fi
|
||||
|
||||
# Read and combine modality content
|
||||
local modality_content=""
|
||||
for mod in "${MODALITIES[@]}"; do
|
||||
local mod_file="$SCRIPT_DIR/modalities/${mod}.md"
|
||||
if [ -f "$mod_file" ]; then
|
||||
modality_content+=$(cat "$mod_file")
|
||||
modality_content+=$'\n\n---\n\n'
|
||||
fi
|
||||
done
|
||||
content="${content//\{\{MODALITY_CONTENT\}\}/$modality_content}"
|
||||
|
||||
# Generate session structure content
|
||||
local session_content
|
||||
session_content=$(generate_session_structure_content)
|
||||
content="${content//\{\{SESSION_STRUCTURE\}\}/$session_content}"
|
||||
|
||||
# Focus areas - leave as placeholder for user to fill
|
||||
local focus_placeholder="*Add your focus areas here as you begin working together.*
|
||||
|
||||
Example areas:
|
||||
- Anxiety management
|
||||
- Relationship patterns
|
||||
- Work stress
|
||||
- Self-esteem
|
||||
- Life transitions"
|
||||
content="${content//\{\{FOCUS_AREAS\}\}/$focus_placeholder}"
|
||||
|
||||
# Write the file
|
||||
echo "$content" > "$output_file"
|
||||
print_success "Created CLAUDE.md"
|
||||
}
|
||||
|
||||
create_directory_structure() {
|
||||
local base_dir="$1"
|
||||
|
||||
print_step "Creating directory structure..."
|
||||
|
||||
mkdir -p "$base_dir/sessions"
|
||||
|
||||
# Copy profile template
|
||||
cp "$SCRIPT_DIR/profile.template.md" "$base_dir/profile.md"
|
||||
print_success "Created profile.md"
|
||||
|
||||
# Create .gitignore
|
||||
cat > "$base_dir/.gitignore" << 'EOF'
|
||||
# Sensitive therapy data - never commit
|
||||
profile.md
|
||||
sessions/
|
||||
|
||||
# Environment files
|
||||
.env
|
||||
.env.local
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
|
||||
# Encrypted vault files (if using encryption)
|
||||
*.sparsebundle
|
||||
EOF
|
||||
print_success "Created .gitignore"
|
||||
|
||||
# Create sessions README
|
||||
cat > "$base_dir/sessions/.gitkeep" << 'EOF'
|
||||
# Sessions Directory
|
||||
|
||||
Session notes are stored here automatically.
|
||||
Each session is saved as YYYY-MM-DD.md
|
||||
|
||||
These files contain sensitive information and are excluded from git.
|
||||
EOF
|
||||
print_success "Created sessions directory"
|
||||
}
|
||||
|
||||
setup_encryption() {
|
||||
local base_dir="$1"
|
||||
|
||||
print_step "Setting up encrypted vault..."
|
||||
|
||||
local vault_path="$HOME/therapy-vault.sparsebundle"
|
||||
local mount_point="/Volumes/TherapyVault"
|
||||
|
||||
echo ""
|
||||
print_info "Creating encrypted disk image..."
|
||||
print_info "You'll be prompted to set a password."
|
||||
echo ""
|
||||
|
||||
# Create encrypted sparse bundle
|
||||
hdiutil create -size 500m -encryption AES-256 -type SPARSEBUNDLE \
|
||||
-fs "APFS" -volname "TherapyVault" "$vault_path"
|
||||
|
||||
# Mount it
|
||||
hdiutil attach "$vault_path"
|
||||
|
||||
# Update therapy dir to mounted volume
|
||||
THERAPY_DIR="$mount_point"
|
||||
|
||||
# Create helper scripts
|
||||
cat > "$HOME/mount-therapy.command" << EOF
|
||||
#!/bin/bash
|
||||
# Double-click to mount your therapy vault
|
||||
hdiutil attach "$vault_path"
|
||||
echo "Therapy vault mounted at $mount_point"
|
||||
echo "Press any key to close..."
|
||||
read -n 1
|
||||
EOF
|
||||
chmod +x "$HOME/mount-therapy.command"
|
||||
|
||||
cat > "$HOME/unmount-therapy.command" << EOF
|
||||
#!/bin/bash
|
||||
# Double-click to safely unmount your therapy vault
|
||||
hdiutil detach "$mount_point"
|
||||
echo "Therapy vault unmounted"
|
||||
echo "Press any key to close..."
|
||||
read -n 1
|
||||
EOF
|
||||
chmod +x "$HOME/unmount-therapy.command"
|
||||
|
||||
print_success "Encrypted vault created at: $vault_path"
|
||||
print_success "Created mount-therapy.command on Desktop"
|
||||
print_success "Created unmount-therapy.command on Desktop"
|
||||
print_warning "Remember your password! It cannot be recovered."
|
||||
|
||||
# Move helper scripts to Desktop for easy access
|
||||
mv "$HOME/mount-therapy.command" "$HOME/Desktop/" 2>/dev/null || true
|
||||
mv "$HOME/unmount-therapy.command" "$HOME/Desktop/" 2>/dev/null || true
|
||||
}
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# Main Setup Flow
|
||||
#------------------------------------------------------------------------------
|
||||
|
||||
main() {
|
||||
clear
|
||||
|
||||
# Welcome and disclaimers
|
||||
show_disclaimer
|
||||
safety_screening
|
||||
|
||||
# Configuration
|
||||
choose_therapist_name
|
||||
choose_persona
|
||||
choose_modalities
|
||||
choose_session_structure
|
||||
choose_storage_location
|
||||
choose_encryption
|
||||
|
||||
# Setup
|
||||
print_header "Setting Up Your Therapy Environment"
|
||||
|
||||
if $USE_ENCRYPTION; then
|
||||
setup_encryption "$THERAPY_DIR"
|
||||
fi
|
||||
|
||||
# Create directories (in encrypted vault if enabled)
|
||||
mkdir -p "$THERAPY_DIR"
|
||||
create_directory_structure "$THERAPY_DIR"
|
||||
assemble_claude_md "$THERAPY_DIR"
|
||||
|
||||
# Final summary
|
||||
print_header "Setup Complete!"
|
||||
|
||||
echo ""
|
||||
echo "Your AI therapy environment is ready."
|
||||
echo ""
|
||||
echo -e "${BOLD}Location:${NC} $THERAPY_DIR"
|
||||
echo -e "${BOLD}Therapist:${NC} $THERAPIST_NAME"
|
||||
echo -e "${BOLD}Style:${NC} $PERSONA"
|
||||
echo -e "${BOLD}Approaches:${NC} ${MODALITIES[*]}"
|
||||
echo -e "${BOLD}Structure:${NC} $SESSION_STRUCTURE"
|
||||
if $USE_ENCRYPTION; then
|
||||
echo -e "${BOLD}Security:${NC} Encrypted (AES-256)"
|
||||
else
|
||||
echo -e "${BOLD}Security:${NC} Standard (local files)"
|
||||
fi
|
||||
echo ""
|
||||
|
||||
print_header "Getting Started"
|
||||
|
||||
echo ""
|
||||
echo "1. Open Claude Code in your therapy directory:"
|
||||
echo -e " ${CYAN}cd \"$THERAPY_DIR\" && claude${NC}"
|
||||
echo ""
|
||||
echo "2. Start a session by talking to $THERAPIST_NAME"
|
||||
echo ""
|
||||
echo "3. End sessions naturally - notes will be saved automatically"
|
||||
echo ""
|
||||
|
||||
if $USE_ENCRYPTION; then
|
||||
echo -e "${YELLOW}Remember:${NC} Mount your vault before each session using:"
|
||||
echo " Double-click 'mount-therapy.command' on your Desktop"
|
||||
echo " Or run: hdiutil attach ~/therapy-vault.sparsebundle"
|
||||
echo ""
|
||||
fi
|
||||
|
||||
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
||||
echo ""
|
||||
echo "If you find this helpful, consider supporting development:"
|
||||
echo " https://buymeacoffee.com/[YOUR_HANDLE]"
|
||||
echo " https://gumroad.com/[YOUR_HANDLE]"
|
||||
echo ""
|
||||
echo "Take care of yourself. 💚"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Run main
|
||||
main "$@"
|
||||
Reference in New Issue
Block a user