Interactive setup wizard that helps new users create a personalized CLAUDE.md file based on their Obsidian workflow preferences. Use when the user wants to set up claudesidian, onboard a new vault, or run the bootstrap/init/setup wizard.
This command helps you create a personalized CLAUDE.md configuration file by asking questions about your Obsidian workflow and preferences.
Read the CLAUDE-BOOTSTRAP.md template and interactively gather information about the user's:
Then generate a customized CLAUDE.md file tailored to their needs.
Initial Environment Setup
date command for timestampspnpm install first (faster, better)npm install if pnpm not availableCheck Existing Configuration
Gather Vault Information
~/Documents (maxdepth 3) - all platforms~/Desktop (maxdepth 3) - all platforms~/Library/Mobile Documents/iCloud~md~obsidian/Documents (maxdepth 5 -
macOS only, iCloud vaults)~/ (maxdepth 2) - all platformsfind [path] -type f -name "*.md" | wc -l (no depth
limit)du -sh [path]tree -L 3 -d [path] to see folder hierarchyAsk Configuration Questions
If using PARA, ask specific setup questions: PARA Method by Tiago Forte
General preferences:
Optional Tool Setup
Gemini Vision (already included)
GEMINI_API_KEY to
your shell profile, then running claude mcp add --scope project gemini-vision node .claude/mcp-servers/gemini-vision.mjs."claude mcp add --scope project gemini-vision node .claude/mcp-servers/gemini-vision.mjsFirecrawl (already included)
.scripts/.".scripts/firecrawl-scrape.sh https://example.comGenerate Custom Configuration
date +"%B %d, %Y" for the CLAUDE.md header.claude/vault-config.json:
{
"user": {
"name": "Jane Smith",
"background": {
"companies": ["Variance", "Percolate"],
"roles": ["Co-founder", "Writer"],
"publications": ["Why Is This Interesting?", "every.to"],
"expertise": [
"Developer tools",
"Marketing tech",
"Systems thinking"
],
"interests": ["AI for thinking", "Note-taking systems", "Creativity"]
},
"profileSources": [
"https://whyisthisinteresting.com/about",
"https://every.to/@username"
],
"customContext": "Focuses on AI as thinking augmentation, not just writing",
"publicProfile": true
},
"vaultPath": "/path/to/existing/vault",
"fileNamingPattern": "detected-pattern",
"organizationMethod": "PARA",
"primaryUses": ["research", "writing", "projects"],
"tools": {
"geminiVision": true,
"firecrawl": false
},
"projects": ["Book - Productivity", "SaaS App"],
"areas": ["Newsletter", "Health"],
"importedAt": "2025-01-13",
"lastUpdated": "2025-01-13"
}Import Existing Vault (if applicable)
mkdir OLD_VAULTcp -r [vault-path]/* ./OLD_VAULT/cp -r [vault-path]/.obsidian ./.trash/ (Obsidian's trash folder).smart-connections/ (if using that plugin).obsidian.vimrc, etc..git/ (they'll have their own), .claude/ (using ours)Create Supporting Files
Run Test Commands
pnpm vault:stats to verify scripts workProvide Next Steps
# Your Obsidian Vault Configuration
Generated on: [Run `date +"%B %d, %Y"` to get current date] Last updated: [Same
date] Based on your preferences for: [main use cases] Setup completed with: ✅
Dependencies ✅ Folder structure ✅ Git initialized
## Your Custom Folder Structure
[Their specific structure with explanations]
## Your Workflows
### Daily Routine
[Based on their answers]
### Project Management
[Their specific approach]
### Research Method (Noah Brier Style)
- Capture everything you read
- Let important ideas naturally resurface
- Start with writing to test understanding
- Use search, not tags, to find things
- [Learn more from Noah's system](https://every.to/superorganizers/ceo-by-day-internet-sleuth-by-night-267452)
### Weekly Review Ritual
[If enabled: Every Thursday at 4pm, review all projects]
## Your Preferences
### File Naming
- Pattern: [their convention]
- Examples: [specific examples]
### Tools & Scripts
[Relevant scripts for their workflow]
## MCP Servers (if configured)
### Gemini Vision
- Status: ✅ Configured and tested
- API Key: Set in .mcp.json
- Test with: `Use gemini-vision to analyze [image path]`
## Available Commands
### Vault Management
- `pnpm vault:stats` - Show vault statistics
- `pnpm attachments:list` - List unprocessed attachments
- `pnpm attachments:organized` - Count organized files
### Claude Skills
Skills auto-discover when you describe the task. Examples:
- "Help me think through X" → `thinking-partner`
- "Wrap up my day" / "daily review" → `daily-review`
- "Process my inbox" → `inbox-processor`
- "Re-run the setup wizard" → `init-bootstrap`
Skills live in `.agents/skills/` (canonical) with symlinks in `.claude/skills/`
and `.pi/skills/`. They work in Claude Code, OpenCode, Codex, Cursor, and Pi.
## Quick Start
1. [Personalized first step]
2. [Next action based on their goals]
3. [Specific to their workflow]
## Pro Tips from Research Masters
- **Be a token maximalist**: Provide lots of context to Claude
- **Writing scales**: Document everything for future reference
([Noah Brier](https://every.to/superorganizers/ceo-by-day-internet-sleuth-by-night-267452))
- **Trust emergence**: Important ideas will keep surfacing
- **Start with writing**: Always begin projects in text form
- **Review regularly**: Set aside time weekly to prune and update
- **PARA Method**: Projects, Areas, Resources, Archive
([Tiago Forte](https://fortelabs.com/blog/para/))
## Setup Summary
✅ Dependencies installed (pnpm/npm) ✅ Folder structure created ✅ Git
repository initialized and disconnected from original ✅ CLAUDE.md personalized
✅ First-run setup completed [✅ MCP Gemini Vision configured - if set up] [✅
First commit made - if git was initialized]When multiple vaults are detected:
If the user's response is unclear:
This command is designed to work across Linux, macOS, and Windows (WSL/Git Bash), with platform-specific features:
All Platforms:
macOS Only:
Platform Detection:
# Check platform
if [[ "$OSTYPE" == "darwin"* ]]; then
# macOS - enable iCloud features
PLATFORM="macOS"
ICLOUD_SUPPORTED=true
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
# Linux
PLATFORM="Linux"
ICLOUD_SUPPORTED=false
elif [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
# Windows (Git Bash or WSL)
PLATFORM="Windows"
ICLOUD_SUPPORTED=false
fiWhen searching for vaults, use this find command pattern:
# Standard locations (shallow search)
# Note: 2>/dev/null suppresses expected permission errors from system directories
# If no vaults are found, we'll ask the user for their vault path
find ~/Documents ~/Desktop -maxdepth 3 -type d -name ".obsidian" 2>/dev/null
# iCloud location (deeper search needed due to nested structure)
# Only search on macOS
if [[ "$OSTYPE" == "darwin"* ]]; then
find ~/Library/Mobile\ Documents/iCloud~md~obsidian/Documents -maxdepth 5 -type d -name ".obsidian" 2>/dev/null
fi
# Home directory (shallow to avoid deep recursion)
find ~ -maxdepth 2 -type d -name ".obsidian" 2>/dev/nullThe iCloud path requires:
Error Handling Note: Permission errors are suppressed (2>/dev/null) because they're expected when searching system directories. If no vaults are found, the script gracefully prompts the user for their vault path.
When users manually provide a vault path, validate it thoroughly with helpful error messages:
# User provided path
USER_PATH="$1"
# Expand tilde and resolve to absolute path
USER_PATH="${USER_PATH/#\~/$HOME}"
REAL_PATH=$(realpath "$USER_PATH" 2>/dev/null)
# Validation 1: Path exists
if [ -z "$REAL_PATH" ]; then
echo "❌ Error: Path does not exist: $USER_PATH"
echo ""
echo "💡 Suggestions:"
echo " • Check for typos in the path"
echo " • Make sure you're using the full path (e.g., /Users/name/vault)"
echo " • You can use ~ for your home directory (e.g., ~/Documents/vault)"
exit 1
fi
# Validation 2: Is a directory
if [ ! -d "$REAL_PATH" ]; then
echo "❌ Error: Not a directory: $REAL_PATH"
echo ""
echo "💡 The path exists but points to a file, not a folder."
exit 1
fi
# Validation 3: Contains .obsidian folder
if [ ! -d "$REAL_PATH/.obsidian" ]; then
echo "❌ Error: Not a valid Obsidian vault (no .obsidian folder)"
echo " Looking in: $REAL_PATH"
echo ""
echo "💡 Suggestions:"
echo " • Make sure the path points to your vault root (not a subfolder)"
echo " • Check that you've opened this vault in Obsidian at least once"
echo " • Try the path without trailing slash"
echo " • For iCloud: ~/Library/Mobile Documents/iCloud~md~obsidian/Documents/YourVault"
exit 1
fi
# Validation 4: Readable permissions
if [ ! -r "$REAL_PATH/.obsidian" ]; then
echo "❌ Error: Cannot read vault directory (permission denied)"
echo " Path: $REAL_PATH"
echo ""
echo "💡 You may need to:"
echo " • Check file permissions with: ls -la \"$REAL_PATH\""
echo " • Make sure you own this directory"
exit 1
fi
# Show resolved path if different from input
if [ "$USER_PATH" != "$REAL_PATH" ]; then
echo "✓ Resolved path: $REAL_PATH"
fi
# Valid vault path
VAULT_PATH="$REAL_PATH"
echo "✓ Valid Obsidian vault found"This validation:
~ to home directory properlyWhen a user selects an iCloud vault, check sync state and warn if needed:
# After user confirms vault selection
if [[ "$OSTYPE" == "darwin"* ]] && [[ "$vault_path" == *"iCloud"* ]]; then
# Check for common iCloud sync indicators
if [ -f "$vault_path/.icloud" ] || [ -f "$vault_path/.obsidian/.icloud" ]; then
echo ""
echo "📱 iCloud Sync Notice:"
echo " This vault appears to be still downloading from iCloud."
echo " For best results, open it in Obsidian first to ensure files are synced."
echo ""
read -p "Continue anyway? (yes/no): " sync_answer
if [[ ! "$sync_answer" =~ ^[Yy] ]]; then
echo "No problem! Open the vault in Obsidian, then re-run /init-bootstrap"
exit 0
fi
else
echo ""
echo "📱 iCloud vault detected. If import seems incomplete, make sure sync is complete."
echo ""
fi
fiThis provides a soft warning that:
User: Set up claudesidian for my vault
Assistant: Welcome! I'll help you set up your personalized Obsidian + Claude configuration.
📅 Today's date: [Gets from `date +"%B %d, %Y"`]
First, let me check your setup...
📁 **Folder Name Check**
Current folder: claudesidian
Would you like to rename this folder to something more personal? (e.g., my-vault, knowledge-base, obsidian-notes)
*Why: Your vault should have a name that makes sense to you - you'll see it every day!*
[If yes: Handles the rename by moving to parent directory and back]
Now setting up your environment...
📦 **Installing Dependencies**
[Checks for pnpm, uses npm if not available]
[Installs dependencies with pnpm/npm]
*Why: These tools enable Claude Code to work with your vault effectively*
🔓 **Repository Setup**
**Will you be contributing to claudesidian development?**
- **No** (Personal vault only) → I'll remove GitHub workflows and disconnect from the repo
- **Yes** (I want to contribute) → I'll keep the development setup intact
[Implementation:]
```bash
# If user says "No" (personal vault):
rm -rf .github # Remove GitHub workflows
git remote remove origin # Disconnect from claudesidian repo
# If user says "Yes" (contributing):
# Keep .github folder and origin remote
echo "Development setup preserved for contributing"Why: Personal vaults don't need GitHub Actions, but contributors benefit from the automation
📂 Creating Folder Structure [Creates folders based on your chosen organization method] Why: A good structure helps you organize and find your knowledge effectively
🎯 Finalizing Setup [Checks git status and removes first-run marker] Why: Git gives you version control, and removing the marker ensures you won't see the welcome message again
✅ Folder renamed (if requested) ✅ Dependencies installed ✅ Core folders created ✅ Git repository ready (disconnected from original claudesidian) ✅ First-run marker removed
Now let me ask you a few questions to customize your setup:
🔍 Searching for existing Obsidian vaults... [Searches ~/Documents, ~/Desktop, home directory, and parent directories. On macOS, also searches iCloud Drive]
Found Obsidian vault at: ~/Documents/MyNotes 📊 Vault stats: 2,517 markdown files, 1.1GB total size Would you like to import this vault?
User: yes
🔍 Found multiple Obsidian vaults:
~/Documents/MyNotes (2,517 files, 1.1GB)
~/Desktop/WorkVault (892 files, 450MB)
~/Documents/ObsidianVault (156 files, 23MB)
Which vault would you like to import?
User: 1
Confirming your selection: You selected: ~/Documents/MyNotes (2,517 files, 1.1GB)
Is this correct? (yes/no)
User: yes
Great! I'll import your vault to OLD_VAULT/ where it will be safely preserved. You can migrate files to the PARA folders at your own pace.
🔍 No Obsidian vaults found in common locations.
On macOS: Is your vault stored in iCloud Drive? (yes/no)
User: yes
Please enter the full path to your vault: (Example: /Library/Mobile
Documents/iCloudmd~obsidian/Documents/YourVault)
User: /Library/Mobile Documents/iCloudmd~obsidian/Documents/MyVault
[Validates path and shows vault stats]
Found vault at: /Library/Mobile Documents/iCloudmd~obsidian/Documents/MyVault
📊 Vault stats: 1,248 markdown files, 523MB total size
Would you like to import this vault? (yes/skip)
On Linux/Windows: Please enter the path to your existing Obsidian vault, or type 'skip' to start fresh: (Example: ~/Documents/MyVault or /home/user/obsidian-vault)
User: ~/Documents/MyVault
[Validates path and shows vault stats]
Found vault at: ~/Documents/MyVault 📊 Vault stats: 1,248 markdown files, 523MB total size
Would you like to import this vault? (yes/skip)
📦 Analyzing your vault structure... [Running tree to see folder hierarchy] [Sampling notes to understand content] [Detecting naming patterns from recent files]
I can see you're using:
📦 Importing your vault... [Copying files to OLD_VAULT/] [Preserving .obsidian settings] [Checking for plugin folders]
✅ Imported 2,517 files (1.1GB) to OLD_VAULT/ Your original structure is completely preserved!
Now let's personalize your setup:
What's your name?
Why I'm asking: I'll use this to personalize your CLAUDE.md file and help me understand your context better. This creates a more tailored experience where I can reference your work and interests naturally.
User: Noah Brier
Would you like me to research your public work?
Why this helps: By understanding your background, expertise, and interests, I can:
User: Yes
Great! To make sure I find information about the real you, could you provide any of these details?
This helps me avoid confusion with others who share your name.
User: I co-founded Variance and Percolate, I write at every.to
Perfect! Let me search for you with those details...
[Searches for information using the provided identifying information]
Based on your details, I found you - Noah Brier, co-founder of Variance and Percolate, writer at every.to.
Let me confirm this is correct:
Is this you? (yes/no)
User: yes
Excellent! I've identified the right profile.
Building Your Profile Would you like me to read any specific pages to better understand your work?
Enter URLs (comma-separated) or 'skip' to continue:
User: https://whyisthisinteresting.com/about, https://every.to/@noahbrier
[Fetches and analyzes the provided URLs]
I've built a comprehensive profile:
Is there anything else I should know about your work or interests?
User: I'm really interested in how AI can augment thinking, not just writing
Got it! I'll remember that you focus on AI as a thinking tool, not just a writing assistant.
User: I'll use it for research and writing, plus managing client projects
Assistant: Great! I'll configure your vault for research, writing, and client project management.
User: I'm writing a book about productivity systems, building a SaaS app, and planning a conference talk
Assistant: Perfect! I'll set up project folders for:
User: My newsletter, health & fitness, personal finances, and family activities
Assistant: I'll create area folders for:
User: AI tools, productivity methods, SaaS metrics, and writing techniques
Assistant: Setting up resource folders for:
[Continues with questions...]
Gemini Vision Setup Gemini Vision is already included in claudesidian! It can analyze images, PDFs, and videos in your vault. To activate it, you just need a free Google API key (takes 30 seconds). Would you like to set it up now? (yes/no/later)
User: later
No problem! You can set it up anytime — get a free key from
https://aistudio.google.com/apikey and add GEMINI_API_KEY to your shell
profile.
Firecrawl Setup Firecrawl is a game-changer for research! Save any article or website directly to your vault as markdown. Perfect for building a permanent, searchable research library. Would you like to set it up? (yes/no/later)
User: yes
Great choice! Firecrawl will transform how you collect research.
Assistant: Excellent! Here's how to get your API key:
Once you have it, paste it here and I'll configure everything for you.
6c56f35
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.