| name | setup |
| description | Bootstrap the Second Brain vault and personalize it in under five minutes. Scans existing Claude context, scrapes the user's website for voice and ICP signals, generates draft business.md, voice.md, icp.md, strategy.md the user can approve or edit. Creates a five-folder vault (Context, Projects, Daily, Resources, Skills) and a root claude.md config. Use when the user says "set up", "bootstrap", "initialize", "onboarding", or runs /setup. |
Second Brain — Setup
USE WHEN the user runs /setup or asks to set up their vault, bootstrap the assistant, or initialize their second brain.
The Goal
Get the user from zero to a working second brain in under five minutes. No technical dependencies. No plugins to install. No API keys to configure. Just a folder, a vault, and Claude.
Three Phases
- Phase 0 — Context Scan. Silently pull everything we can from existing Claude context, skills, and local markdown. Don't ask yet — gather first.
- Phase A — Bootstrap. Create the folder structure and write system files.
- Phase B — Onboarding. Ask for a website URL, scrape it for voice and ICP signals, generate draft Context files, show them for approval.
Pre-flight Check
Check if claude.md or CLAUDE.md exists in the current working directory. Check only the exact CWD — don't search subdirectories or parents.
- If it exists: this vault is already set up. Ask the user:
- Re-run onboarding — Keep the existing structure, regenerate the Context files from fresh inputs.
- Full reset — Delete everything and start fresh. Confirm twice before proceeding.
- Cancel — Stop here.
- If it does NOT exist: proceed to Phase 0.
Phase 0: Context Scan (silent, fast)
Before asking the user anything, pull as much useful context as possible from the machine. Run these checks silently — no narration, no questions yet.
Scan Targets
Run each of these and collect the text. Don't block on failures — missing files are normal.
1. Global Claude context:
[ -f ~/.claude/CLAUDE.md ] && cat ~/.claude/CLAUDE.md
2. Current directory and close parents:
[ -f ./CLAUDE.md ] && cat ./CLAUDE.md
[ -f ../CLAUDE.md ] && cat ../CLAUDE.md
[ -f ../../CLAUDE.md ] && cat ../../CLAUDE.md
3. Brand / voice / ICP files nearby:
find . -maxdepth 2 -type f -iname "*.md" | xargs grep -l -i -E "(brand|voice|icp|about|bio|tone)" 2>/dev/null | head -5
Read the top few matches.
4. Existing brand-voice skills:
ls -d ~/.claude/skills/*brand* ~/.claude/skills/*voice* 2>/dev/null
If any exist, read their SKILL.md and key reference files.
Silent Extraction
From everything collected, extract what you can find for each of these signals. Keep a mental draft — don't write anything to disk yet.
| Signal | What to extract |
|---|
| Name | First name, last name |
| Business | Company name, what they do, products, revenue model |
| Audience | Who they speak to, industry, role, pain points |
| Voice | Do / don't rules, tone descriptors, writing patterns |
| Topics | Content pillars, what they write about |
| Tools | Tech stack, platforms mentioned |
| Goals | Priorities, current focus, stated strategy |
If the scan finds rich context (especially a filled-in global ~/.claude/CLAUDE.md): the Phase B interview can be very short. You already know most of what the Context files need.
If the scan finds nothing useful: Phase B leans entirely on the website scrape and what the user pastes.
Phase A: Bootstrap
Create the folder structure and write system files. Work silently — don't narrate each step.
Step A.1: Create Directory Structure
mkdir -p Context
mkdir -p Projects
mkdir -p Daily
mkdir -p Resources
mkdir -p Skills
mkdir -p .claude
Five folders at the vault root. Meetings live inside Resources/meetings/ once the user logs one — don't pre-create that subdirectory.
Step A.2: Write System Files
Read each reference file and write it to its local path.
| Reference File | Creates at Local Path |
|---|
references/claude-md-template.md | ./claude.md |
references/gitignore-template.md | ./.gitignore |
references/claudeignore-template.md | ./.claudeignore |
references/settings-json-template.md | ./.claude/settings.json |
Step A.3: Write Folder Guides
Short _guide.md files inside each top-level folder so the user understands the system without reading the SKILL files.
| Reference File | Creates at Local Path |
|---|
references/guide-context.md | ./Context/_guide.md |
references/guide-projects.md | ./Projects/_guide.md |
references/guide-daily.md | ./Daily/_guide.md |
references/guide-resources.md | ./Resources/_guide.md |
references/guide-skills.md | ./Skills/_guide.md |
Step A.4: Confirm Bootstrap
Tell the user in one short paragraph:
Vault structure is ready. Five folders at the root: Context, Projects, Daily, Resources, Skills. Open this folder as a vault in Obsidian to see it, or keep working in Claude Code — both work. Now let's personalize it.
Then proceed to Phase B.
Phase B: Onboarding
The goal of Phase B is to generate four Context files the user can rely on: business.md, voice.md, icp.md, strategy.md.
Phase B has three steps:
- Show what the scan found. Let the user correct or confirm.
- Ask for a website URL (required) and a bio or LinkedIn URL (optional).
- Generate drafts of all four Context files. Show each for approval.
Step B.1: Show Scan Findings
If Phase 0 pulled meaningful context, summarize it in a short paragraph:
Here's what I picked up from your existing setup:
- Name: [extracted name]
- Business: [extracted business]
- Voice signals: [short description of tone patterns found]
Anything wrong? If this looks right, I'll use it as the starting point.
If scan found nothing useful, skip this step and go straight to Step B.2.
Wait for the user to confirm or correct. Update the mental draft with any corrections.
Step B.2: Ask for URLs
Ask for two inputs in one turn:
To make this sharp, I need to look at your content. Give me:
- Your website URL (required)
- Optional: a LinkedIn URL, or paste a paragraph bio — anything that describes who you are and who you help
Wait for the response. Don't drill in with follow-up questions — accept what they give you.
Step B.3: Scrape the Website
Use the WebFetch tool to pull the website. Extract:
- Voice patterns: sentence length, tone descriptors, vocabulary, hedging or directness, humor, profanity level
- ICP signals: who they speak to, pain points named, results promised, language they use
- Topics: content pillars, products, services
- Positioning: what they claim to be, unique angle
- Business signals: products, pricing, revenue model, team size
If the website returns thin or empty content (less than a few paragraphs), note it. Still useful even if short.
If a LinkedIn URL was given: try WebFetch on it. LinkedIn often returns a login page for logged-out fetches — if the response looks like a login wall or is under 500 characters of real content, silently fall back: "Couldn't pull much from LinkedIn — paste a paragraph about yourself instead." Wait for the paragraph.
Never use Apify or any paid scraping service. WebFetch only. If WebFetch fails on the website, ask the user to paste the About page content directly.
Step B.4: Generate Draft Files
Combine everything — scan context + user corrections + website scrape + bio — and generate drafts for all four Context files.
Context/business.md — who the user is, what they sell, how they work.
Read references/context-business.md for the template. Fill with: name, company, products, revenue model, tools, team, location, style preferences.
Context/voice.md — how the user writes.
Read references/context-voice.md for the template. Fill with: do rules, don't rules, tone descriptors, example sentences pulled from the user's actual content. Extract voice patterns from the website — sentence length, vocabulary choices, use of humor, how they address the reader.
Context/icp.md — ideal customer profile.
Read references/context-icp.md for the template. Fill with: who they are, what they do, pain points, what they want, language they use, where they hang out. Extract this from the website — specifically from landing pages, testimonials, and "about" content.
Context/strategy.md — goals, focus, priorities.
Read references/context-strategy.md for the template. Fill with current priorities, content pillars, revenue targets, strategic bets. If you don't have real signal for this one, leave the placeholders in and mark it as "to fill in later" rather than inventing goals.
Step B.5: Show Drafts for Approval
Show each file one at a time:
Here's your business.md draft. Edit anything, or say "good" to lock it in.
[draft content]
Accept edits inline. Save once the user approves. Move to the next file.
Order: business.md → voice.md → icp.md → strategy.md.
Don't skip the show-draft step. The drafts are only as good as the inputs, and the user should see what's landing in their Context before committing.
Step B.6: Create First Daily Note
Create Daily/YYYY-MM-DD.md (today's date):
---
type: daily-note
date: YYYY-MM-DD
---
# YYYY-MM-DD
## Session Log: HH:MM — Vault Setup
**Outcome:** Ran /setup. Created five-folder vault. Generated Context/business.md, Context/voice.md, Context/icp.md, Context/strategy.md.
**Next:** Run `/assistant` to start your first working session.
Step B.7: Confirm Completion
Tell the user in one short paragraph:
You're done. Your vault has five folders at the root, four Context files tuned to your business, and a claude.md that tells me how to work. Run /assistant anytime you want to resume a session, save something permanent, do a daily review, or process a meeting. Everything you tell me from here on will route to the right file automatically.
Suggest a next action based on what they told you — usually "run /assistant and start your first real session" or "add your first project by pasting a brief."
Guidelines
- Phase 0 is silent. Scan first. Gather. Don't narrate.
- Phase A is automatic. No user input needed.
- Phase B is three interactions max. Confirm scan findings, drop URLs, approve drafts. That's it.
- Accept whatever the user gives you. No follow-up questions. No drilling deeper.
- WebFetch only. Never Apify, never paid scraping. If fetch fails, ask for pasted content.
- Show drafts before saving. The user approves each Context file individually.
- Generate drafts in the user's own voice. The whole point is that voice.md captures how they actually write — pull phrases and patterns from their website, don't invent.
Anti-Patterns
Do NOT:
- Ask whether the user is solo or has a team — there is no team mode in this plugin
- Mention TaskNotes, Obsidian CLI, Fireflies, or any external plugin during setup — the system works without them
- Require the user to install anything before running setup
- Skip the Phase 0 context scan — it's the single biggest time-saver
- Invent content for Context files when you have no signal — ask for the missing input instead
- Write all four Context files in one batch — show and approve one at a time
- Create folders beyond the five at the root — subdirectories emerge on demand