Files
my-vault/.claude/commands/init-bootstrap.md
T
Noah Brier 0f45e49571 fix: improve init-bootstrap vault selection and user identification
- Add explicit handling for multiple vaults found
- Require confirmation before importing any vault
- Better prompts explaining why we ask for name and research permission
- Add disambiguation prompts to find the right person
- Clear instructions to never proceed without explicit confirmation
2025-09-13 21:25:21 -04:00

21 KiB

name, description, allowed-tools, argument-hint
name description allowed-tools argument-hint
init-bootstrap Interactive setup wizard that helps new users create a personalized CLAUDE.md file based on their Obsidian workflow preferences
Read
Write
MultiEdit
Bash
Task
(optional) path to existing vault or 'new' for fresh setup

Initialize Bootstrap Configuration

This command helps you create a personalized CLAUDE.md configuration file by asking questions about your Obsidian workflow and preferences.

Task

Read the CLAUDE-BOOTSTRAP.md template and interactively gather information about the user's:

  • Existing vault structure (if any)
  • Workflow preferences
  • Note-taking style
  • Organization methods
  • Specific requirements

Then generate a customized CLAUDE.md file tailored to their needs.

Process

  1. Initial Environment Setup

    • Get current date with date command for timestamps
    • Check current folder name and ask if they want to rename it
    • If yes, guide them through renaming (handle parent directory move)
    • Check for package.json and install dependencies:
      • Try pnpm install first (faster, better)
      • Fall back to npm install if pnpm not available
    • Verify core dependencies are installed
    • Check git status:
      • If no .git folder: Initialize git repository
      • If has remote origin: Remove it to disconnect from claudesidian
      • If clean local repo: Ready to go
    • Don't create folders yet - wait until after asking about organization method
  2. Check Existing Configuration

    • Look for existing CLAUDE.md
    • If exists, ask if they want to update or start fresh
    • Check for CLAUDE-BOOTSTRAP.md template
  3. Gather Vault Information

    • Search common locations for existing Obsidian vaults (.obsidian folder)
    • Check: ~/Documents, ~/Desktop, home directory, current directory parent
    • If found, ask: "Found Obsidian vault at [path]. Is this the vault you want to import?"
    • Count files correctly: find [path] -type f -name "*.md" | wc -l (no depth limit)
    • Show vault size: du -sh [path]
    • If confirmed, analyze vault structure:
      • Run tree -L 3 -d [path] to see folder hierarchy
      • Sample 10-15 random notes to understand content types
      • List 30-50 recent file names to detect naming patterns
      • Check for daily notes folder and format
      • Identify most active folders by file count
      • Detect if using PARA, Zettelkasten, Johnny Decimal, or custom
    • If not the right one or none found, ask for path to existing vault
    • If no existing vault, they're starting fresh
  4. Ask Configuration Questions

    • "What's your name?" (for personalization)
    • "Would you like me to research your public work to better understand your context?"
      • If yes: Search for information
      • ALWAYS show findings and ask "Is this correct?" for confirmation
      • If multiple people found, list them numbered for selection
      • If wrong person, offer to search again or skip
      • Save relevant context about their work, writing style, areas of expertise
    • "Do you follow the PARA method or have a different organization system?"
    • "What are your main use cases? (research, writing, project management, knowledge base, daily notes)"

    If using PARA, ask specific setup questions: PARA Method by Tiago Forte

    • "What active projects are you working on?" (Create folders in 01_Projects)
    • "What areas of responsibility do you maintain?" (e.g., Work, Health, Finance, Family)
    • "What topics do you research frequently?" (Set up in 03_Resources)
    • "Any projects you recently completed?" (Can archive with summaries)

    General preferences:

    • Check .obsidian/community-plugins.json to see what plugins they use
    • Analyze existing files to detect naming convention automatically
    • Check for attachments folder to see if they work with media files
    • "Do you use git for version control?"
    • "Any specific websites or resources you reference often?"
    • "Do you have any specific writing style preferences?"
    • "Are there any workflows or patterns you want Claude to follow?"
    • "Would you like a weekly review ritual? (e.g., Thursday project review)"
    • "Do you prefer 'thinking mode' (questions/exploration) vs 'writing mode'?"
  5. Optional Tool Setup

    Gemini Vision (already included)

    • Ask: "Gemini Vision is already included for analyzing images, PDFs, and videos. Would you like to activate it? (yes/no/later)"
    • Explain: "You just need a free API key from Google. This lets Claude analyze any visual content in your vault."
    • If later: "No problem! You can set it up anytime by running /setup-gemini"
    • If yes:
      • Guide to get API key from https://aistudio.google.com/apikey (free, takes 30 seconds)
      • Help add to shell profile (.zshrc, .bashrc, etc.)
      • Run claude mcp add --scope project gemini-vision node .claude/mcp-servers/gemini-vision.mjs
      • Configure .mcp.json with API key
      • Test the connection with a sample command

    Firecrawl (already included)

    • Ask: "Firecrawl is included for web research. Would you like to set it up? (yes/no/later)"
    • Explain: "This is a game-changer for research! When you find an article or website, you can save it directly to your vault as markdown - preserving the content forever, making it searchable, and letting Claude analyze it. Perfect for building a research library."
    • Example: "Just tell Claude: 'Save this article to my vault: [URL]' and it's done!"
    • If later: "You can set it up anytime by running /setup-firecrawl"
    • If yes:
      • Guide to get API key from https://firecrawl.dev (free tier available)
      • Help configure the scripts in .scripts/
      • Show example usage: .scripts/firecrawl-scrape.sh https://example.com
  6. Generate Custom Configuration

    • Get current date: date +"%B %d, %Y" for the CLAUDE.md header
    • Save preferences to .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"
      }
      
    • Start with CLAUDE-BOOTSTRAP.md as base
    • Add user-specific sections:
      • Custom folder structure with their actual projects/areas
      • Personal workflows
      • Preferred tools and scripts
      • Specific guidelines
      • MCP configuration if set up
    • Include their websites/resources if provided
    • Add any custom naming conventions
    • Pre-populate with their projects and areas:
      • Create project folders in 01_Projects/
      • Create area folders in 02_Areas/
      • Create resource topics in 03_Resources/
      • Add README files explaining each project/area
  7. Import Existing Vault (if applicable)

    • If user has existing vault:
      • Create OLD_VAULT folder: mkdir OLD_VAULT
      • Copy entire vault preserving structure: cp -r [vault-path]/* ./OLD_VAULT/
      • Copy Obsidian configuration: cp -r [vault-path]/.obsidian ./
      • Check for and copy other important files:
        • .trash/ (Obsidian's trash folder)
        • .smart-connections/ (if using that plugin)
        • Any workspace files: .obsidian.vimrc, etc.
      • Skip copying: .git/ (they'll have their own), .claude/ (using ours)
      • Show summary: "Imported your vault to OLD_VAULT/ (X files, Y folders)"
      • Explain: "Your original structure is preserved in OLD_VAULT. You can gradually migrate files to the PARA folders as needed."
  8. Create Supporting Files

    • Generate initial folder structure if new vault
    • Create README files for main folders
    • For each project folder, create subfolders:
      • Research/ (source materials)
      • Chats/ (AI conversations)
      • Daily Progress/ (running log)
    • Create 05_Attachments/Organized/ directory
    • Set up .gitignore if using git (include .mcp.json, node_modules)
    • Create initial templates if requested
    • Create WEEKLY_REVIEW.md if user wants review ritual
    • Remove FIRST_RUN marker file if it exists
    • Make initial git commit if repository was initialized
  9. Run Test Commands

    • Execute pnpm vault:stats to verify scripts work
    • Test attachment commands if folders exist
    • Test MCP tools if configured
    • Verify git is tracking files correctly
  10. Provide Next Steps

  • Summary of what was created and configured
  • Quick start guide specific to their setup
  • List of available commands they can use
  • Test commands to verify everything works
  • Suggestions for first tasks based on their use cases
  • How to modify configuration later

Example Output

# 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 Commands
- `claude run thinking-partner` - Collaborative thinking mode
- `claude run daily-review` - Review your day
- `claude run init-bootstrap` - Re-run this setup

## 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]

Important Implementation Notes

Handling Multiple Vaults

When multiple vaults are detected:

  1. Always list all vaults found with clear numbering and details
  2. Require explicit selection - don't assume which vault to use
  3. Confirm the selection before proceeding with import
  4. Handle ambiguous responses - if user provides unclear input (like pasting a screenshot), ask for clarification:
    • "I see you've shared a screenshot. Could you please type the number (1-3) of the vault you'd like to import?"
    • "I need a clear selection. Please type '1', '2', or '3' to choose a vault, or 'skip' to start fresh."

Never Proceed Without Clear Confirmation

If the user's response is unclear:

  • Don't guess or assume
  • Ask for explicit confirmation
  • Provide clear options again
  • Example: "I want to make sure I import the right vault. Please type the number of your choice (1, 2, or 3)."

Interactive Example

User: claude run init-bootstrap
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*

🔓 **Disconnecting from Original Repository**
[Removes git remote to disconnect from original]
*Why: This ensures you won't accidentally push your personal notes to the public repo*

📂 **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, ~/, and parent directories]

### Case 1: Single Vault Found

Found Obsidian vault at: ~/Documents/MyNotes
📊 Vault stats: 2,517 markdown files, 1.1GB total size
Would you like to import this vault?
- **yes** - Import this vault
- **no** - Search for a different vault
- **skip** - Start fresh without importing
- **path** - Specify a different path manually

User: yes

### Case 2: Multiple Vaults Found

🔍 **Found multiple Obsidian vaults:**

1. **~/Documents/MyNotes** (2,517 files, 1.1GB)
   - Last modified: 2 hours ago
   - Contains: Daily notes, projects, resources

2. **~/Desktop/WorkVault** (892 files, 450MB)
   - Last modified: 3 days ago
   - Contains: Client projects, meeting notes

3. **~/Documents/ObsidianVault** (156 files, 23MB)
   - Last modified: 2 weeks ago
   - Contains: Personal notes, drafts

**Which vault would you like to import?**
- Enter **1-3** to select a vault
- **all** - Import all vaults (each to a separate folder)
- **skip** - Start fresh without importing
- **path** - Specify a different path manually

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.

📦 **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:
- A modified PARA structure with custom folders
- Date-prefixed files for daily notes (YYYY-MM-DD)
- Project folders with nested research
- Heavy use of the Resources folder for reference material

📦 **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:

1. **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

2. **Would you like me to research your public work?**

   *Why this helps:* By understanding your background, expertise, and interests, I can:
   - Tailor suggestions to your specific field and workflow
   - Reference relevant examples from your domain
   - Better understand the context of your questions
   - Build a profile that helps me be a more effective thinking partner

User: Yes

Great! To make sure I find information about the real you, could you provide any of these details?
- Your company or organization
- Your location (city/country)
- A unique project you've worked on
- Your website or social media handle
- Any other distinguishing information

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:
- Co-founded Variance (developer tools) and Percolate (marketing software)
- Write at every.to and Why Is This Interesting? newsletter
- Focus on systems thinking, creativity, and technology

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?
- Your personal website or blog
- Recent articles or papers you've written
- Company/project pages
- LinkedIn or other profiles

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:
- You co-founded Variance (developer tools) and Percolate (marketing software)
- You write Why Is This Interesting? newsletter with Colin Nagy
- You explore creativity, technology, and systems thinking
- You've written about writing as thinking, note-taking systems, and AI

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.

3. **What will you primarily use this vault for?**
   (research, writing, project management, daily notes, knowledge base, or combination?)

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.

2. **What specific projects are you currently working on?**
   (I'll create folders for each in 01_Projects)

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:
   - 01_Projects/Book - Productivity Systems/
   - 01_Projects/SaaS App Development/
   - 01_Projects/Conference Talk/

3. **What ongoing areas of responsibility do you maintain?**
   (These go in 02_Areas - things without an end date)

User: My newsletter, health & fitness, personal finances, and family activities

Assistant: I'll create area folders for:
   - 02_Areas/Newsletter/
   - 02_Areas/Health & Fitness/
   - 02_Areas/Finances/
   - 02_Areas/Family/

4. **What topics do you frequently research or reference?**
   (I'll organize these in 03_Resources)

User: AI tools, productivity methods, SaaS metrics, and writing techniques

Assistant: Setting up resource folders for:
   - 03_Resources/AI Tools/
   - 03_Resources/Productivity Methods/
   - 03_Resources/SaaS Metrics/
   - 03_Resources/Writing Techniques/

[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 by running `/setup-gemini` when you're ready.

**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:
1. Go to https://aistudio.google.com/apikey
2. Click "Create API Key"
3. Copy the key (starts with AIzaSy...)

Once you have it, paste it here and I'll configure everything for you.