AI Pro Obsidian Plugin — Setup + Onboarding
USE WHEN the user runs /obsidian-ai-setup or asks to set up their vault, bootstrap the assistant,
initialize the system, or configure the AI Pro Obsidian Plugin.
[!important] User-facing language This skill is fully in English. Everything the user sees must be
in English: orientation messages, form headings, bullet prompts in Phase B, the final Phase B+
question, confirmations, and summaries.
Internal instructions in this SKILL.md and technical values such as file names, frontmatter
keys, os-mode, and slugs must remain as written.
[!note] One universal mode This skill builds one universal structure — there is no "individual
/ company" mode selection. The base is a lightweight professional structure (Context,
Projects, Daily, Resources, Skills, Intelligence) that works equally well for a solo
operator or a small team. Do not create Departments/, Team/{org}/Profiles/, or separate
business templates. os-mode is always professional.
This is a two-phase process:
- Phase A: Bootstrap — Create the universal directory structure and system files
- Phase B: Onboarding — Interview the user and personalize everything
Pre-flight Check
Check if claude.md or CLAUDE.md exists only in the current working directory. Do NOT search
subdirectories or parent directories. Check only the exact current working directory path.
- If it exists: The vault is already set up. Ask the user:
- Question:
This vault is already configured. What would you like to do?
Restart onboarding — Keep the structure and update files using new answers
Full reset — Delete everything and start from scratch (confirm twice before deleting)
Cancel — Do nothing
- If it does NOT exist: Proceed with full setup (Phase A + Phase B)
[!note] No mode selection There used to be a Phase 0 for choosing "individual / company" mode. It
has been removed. The structure is always universal (os-mode: professional). Go directly to
Phase A. Do not ask about a mode.
Phase A: Bootstrap
Create the universal directory structure and write all system files. There is one structure — always
os-mode: professional.
Resolving reference file paths
Every references/<file>.md mentioned below lives in the references/ subdirectory next to this
SKILL.md — not in the user's working directory. Two conventions matter:
- Read paths (
references/foo.md) → resolve relative to this SKILL.md's directory.
- Write paths (
./Foo/CLAUDE.md) → resolve relative to the user's current working directory
(the vault root).
If the Read tool cannot open a references/... path directly because some harnesses mount the skill
at a path that differs between Read and Bash, run a quick discovery step once before Step A.2:
# Find the references directory; cache the result for the rest of Phase A.
find / -type d -path '*obsidian-ai-setup/references' 2>/dev/null | head -1
Use that absolute path as the prefix for every reference read in Phase A and Phase B. Do not retry
path resolution per file. Resolve once and reuse.
Step A.1: Create Directory Structure
One universal structure for everyone:
mkdir -p .claude
mkdir -p Context
mkdir -p Projects
mkdir -p Daily
mkdir -p Resources
mkdir -p Skills
mkdir -p Intelligence/meetings/team-standups
mkdir -p Intelligence/meetings/client-calls
mkdir -p Intelligence/meetings/one-on-ones
mkdir -p Intelligence/meetings/general
mkdir -p Intelligence/competitors
mkdir -p Intelligence/market
mkdir -p Intelligence/decisions
mkdir -p Intelligence/archive
No Departments/, no Team/, no Onboarding/ — those were business-mode folders and are no longer
used.
Step A.2: Write System Files from References
Read each reference file and write it to the corresponding local path. The reference files contain
the complete content for each system file.
Shared system files:
| Reference File |
Creates at Local Path |
references/settings-json-template.md |
./.claude/settings.json |
references/claudeignore-template.md |
./.claudeignore |
references/gitignore-template.md |
./.gitignore |
Root CLAUDE.md template:
| Reference File |
Creates at Local Path |
references/claude-md-template.md |
./CLAUDE.md |
Per-folder routing indexes (every major folder gets its own CLAUDE.md — this matches the
production vault convention):
| Reference File |
Creates at Local Path |
references/claude-md-context.md |
./Context/CLAUDE.md |
references/claude-md-projects.md |
./Projects/CLAUDE.md |
references/claude-md-daily.md |
./Daily/CLAUDE.md |
references/claude-md-intelligence.md |
./Intelligence/CLAUDE.md |
references/claude-md-resources.md |
./Resources/CLAUDE.md |
references/claude-md-skills.md |
./Skills/CLAUDE.md |
For each row: read the reference file, then write its content to the local path.
Step A.3: Initialize Starter Context Files
Do NOT create placeholder skills. The Skills/ folder is created empty, with only its
CLAUDE.md routing index from Step A.2. The user adds their own skills later. No linkedin-writer,
no newsletter-writer, no example scaffolds.
Starter context file:
- Read
references/context-me.md → write to ./Context/me.md
That is the only starter context file. Everything else in Context/ is created later during Phase B
Build, only when the onboarding answers actually contain data for it.
Step A.4: Make Hooks Executable
chmod +x .claude/hooks/*.sh
Step A.5: Confirm Bootstrap
Tell the user:
- "The vault structure has been created successfully."
- List the main folders created:
Context, Projects, Daily, Resources, Skills,
Intelligence
- Recommend opening this folder as a vault in Obsidian
- Recommend installing the TaskNotes community plugin if they want task management features
- Note that Bases (native database views) are built into Obsidian — no plugin is needed for
queries
- Mention that
Resources/ is for prompts, frameworks, swipe files, templates, and reusable
materials
- "Now let's personalize it for you."
Then proceed to Phase B.
Phase B: Onboarding — Guided Brain Dump
This skill runs inside Cowork. Phase B uses Cowork's rich-HTML widget tool — not
AskUserQuestion — to render real forms with stacked categories, free-text textareas, and proper
styling. The form should match the look of os-optimizer's "Audit run details" form.
This is a guided brain dump across 12 categories of the user's life and work, batched into 3
rich-HTML forms with 4 categories per form. Bullet points inside each category are inspiration
prompts. The user can riff on whatever feels relevant.
The pitch to the user: sit down for an hour or two, pour a beer, order a pizza, and brain-dump.
This is not only about making the assistant personal on day one — it is a useful exercise in
itself.
The tool: mcp__visualize__show_widget (Cowork-only)
Each of the 3 forms is one call to mcp__visualize__show_widget. The tool accepts:
| Field |
Purpose |
title |
Internal widget identifier, for example ai_setup_form_1_you_business |
loading_messages |
Array of short strings shown while the form renders |
widget_code |
Raw HTML for the form, using Cowork's elicit-* class conventions |
The user fills in the form and submits. The submitted values come back to the agent as the tool
result. The agent then proceeds to the next form. No AskUserQuestion. No radio buttons. No "Other"
box.
How the user should respond — per category
Inside each category's textarea, the user can:
- Paste a Whisper / dictation transcript — open phone or Mac dictation, ramble for 2–5 minutes,
then paste the transcript.
- Paste documents — links to PDFs, Notion pages, Google Docs, brand guides, About pages,
LinkedIn profiles, OKR docs, decks, or file paths.
- Point at connectors — paste a Notion workspace URL, wiki link, or Drive folder.
- Type long-form free text.
There are two kinds of knowledge: what lives in your head (dictate it) and what already lives
online or in a tool (paste links, docs, files, or paths). The user can mix them freely per
category. Leave a textarea blank to skip that category.
Before Form 1 — Send one orienting message
Send this verbatim or close to it. No tool call yet:
Three short forms. Four categories each. Twelve categories total. This is not a questionnaire — it
is a guided brain dump.
In each category there are three ways to give me context: a brain-dump field, a links and
file paths field, and file uploads. Use any of them or all of them. Dump whatever comes to
mind around the bullet prompts. You do not need to answer every bullet. Leave a category empty to
skip it.
The best inputs are things like a dictation transcript, an About page, a brand book PDF, an OKR
document, a LinkedIn profile, or a Notion page. The more context you give me, the less generic
your vault will feel on day one.
Sit down for an hour or two. Pour a beer. Order a pizza. It is worth it.
Submit each form when you are ready. Write "skip all" at any point to move forward with defaults.
Widget HTML template
Every category in every form uses this shape.
Each category gets three inputs: a brain-dump textarea, a links/paths textarea, and a file
upload input. Any or all can be filled. All blank = skip.
Inside widget_code for each form, build a <form class="elicit"> containing one header and four
elicit-group blocks. Per category:
<div class="elicit-group">
<label class="elicit-question">{N}/12 — {Category name}</label>
<div
class="elicit-bullets"
style="font-size:13px; color:var(--color-text-secondary); margin:8px 0">
<ul style="margin:0; padding-left:18px">
<li>{inspiration bullet 1}</li>
<li>{inspiration bullet 2}</li>
<li>{inspiration bullet 3}</li>
<!-- etc -->
</ul>
<p style="margin-top:6px; font-style:italic"
>Dump your thoughts below, OR paste links / file paths, OR upload documents. Any combination
works. Leave everything empty to skip this category.</p
>
</div>
<textarea
class="elicit-textarea"
name="cat{N}_braindump"
rows="6"
style="width:100%; border-radius:10px; padding:10px; border:1px solid var(--color-border-subtle); font-family:inherit; font-size:13px; margin-bottom:8px"
placeholder="Brain dump — paste a dictation transcript or write freely…"></textarea>
<textarea
class="elicit-textarea"
name="cat{N}_links"
rows="2"
style="width:100%; border-radius:10px; padding:10px; border:1px solid var(--color-border-subtle); font-family:inherit; font-size:13px; margin-bottom:8px"
placeholder="Links and file paths — one per line (Notion URL, LinkedIn profile, /path/to/file.pdf, etc.)"></textarea>
<input
class="elicit-file"
type="file"
name="cat{N}_files"
multiple
accept=".md,.txt,.pdf,.docx,.pptx,.xlsx,.csv,.json,.yaml,.yml,.png,.jpg,.jpeg"
style="font-size:12px; color:var(--color-text-secondary)" />
</div>
And one header at the top of <form class="elicit">:
<div class="elicit-header">
<svg
viewBox="0 0 20 20"
fill="currentColor"
width="20"
height="20">
<!-- pencil/clipboard icon -->
</svg>
<span>{Form title}</span>
</div>
<div class="elicit-body">
<!-- 4 elicit-group blocks -->
</div>
Reuse the SVG icon pattern from the optimizer's Audit run details widget, using the
clipboard-with-marks icon. Form titles: "You and the Business", "Customer and Brand", "How You
Work". The {N}/12 — {Category name} label and every bullet must be shown in English using the
category names and bullets defined below.
Reading form submissions
When the widget returns, the result is a record mapping each input's name to its value:
cat{N}_braindump → string (typed text / transcript)
cat{N}_links → string (newline-separated URLs and file paths)
cat{N}_files → array of file references (Cowork uploads these into the workspace folder; the
result gives you the paths or signed URLs)
A category is "skipped" only when all three inputs are empty or blank.
Ingestion between forms
After each form returns, for each category in that form:
cat{N}_braindump — if non-empty, tag and store raw in the working corpus under that
category. Do not paraphrase.
cat{N}_links — split on newlines. For each line:
- HTTP(S) URL → fetch with WebFetch / WebSearch.
- Local file path → Read it.
- Folder path → Glob, then Read each file.
cat{N}_files — for each uploaded file:
.md, .txt, .json, .yaml, .csv → Read directly
.pdf → Read with pages parameter if large
.docx / .pptx / .xlsx → use pandoc / textutil via Bash if available; otherwise note
and continue
- Images → Read with multimodal support
Merge everything into the corpus tagged by category. Then immediately fire the next form. No
commentary or summarization between forms.
The 12 categories use Oskar's category breakdown. Bullet inspiration prompts are Oskar's prompt
blocks, plus Ben's framing of "brain-dump anything around any of these bullets."
The 12 Categories — 3 Forms × 4 Categories
This is the single universal onboarding flow. Slugs in Title: are internal identifiers; keep them
as written. Category headings, Header: values, and bullets are shown to the user in English.
Form 1 — You and the Business — one mcp__visualize__show_widget call. Title:
ai_setup_form_1_you_business. Contains Q1–Q4 as stacked elicit-group blocks.
Q1. You. Header: You
Bullets:
- Name, role/title, location, niche
- When and how you work best: mornings, deep-work blocks, after a walk, late at night, etc.
- If someone you respect introduced you in a room full of people you respect, how would you want
them to describe you?
- Five qualities that describe you, one or two words each
Q2. Your Origin and Point of View. Header: POV
Bullets:
- Why you started, or how you came into the work you do now
- A belief or position you hold strongly, even when it is unpopular
- The "big idea" behind your work: wedge, thesis, core belief
- What you are fighting against: a category, behavior, competitor archetype, or status quo
Q3. What You Sell. Header: Revenue Lines
Bullets (write one paragraph for each revenue line; skip if none exist yet):
- Name, what it does, who it is for, current stage
- Current revenue baseline, if relevant
- How it started and what made you create it
Q4. Promise. Header: Offer
Bullets:
- One to three problems you solve for customers
- For each problem: do customers already know they have it, or do you need to educate them?
- Your value proposition in one sentence
- The promise or guarantee you make, explicit or implied
- Why customers actually choose you, using their words if you have heard them
Form 2 — Customer and Brand — one mcp__visualize__show_widget call. Title:
ai_setup_form_2_customer_brand. Contains Q5–Q8 as stacked elicit-group blocks.
Q5. Customer. Header: Customer
Bullets:
- Job title, role, niche, responsibility area
- What their day looks like and which tools they live in
- The language and words they use to describe their problem
- The dream outcome they want
- The situation they are in before they come to you — what triggered the search
- How long it usually takes them to decide to buy
- Media, podcasts, newsletters, or authors they follow
- Three to five real examples: names, LinkedIn profiles, or company names
Q6. Your Voice and Visual Identity. Header: Voice
Bullets:
- Tone descriptors that fit: direct, warm, dry, technical, playful, serious, supportive, etc.
- Five qualities that describe how you sound
- Signature phrases you actually use
- Words or phrases you would never use
- Topics you enjoy talking about
- Topics you refuse to discuss publicly
- Brand colors, fonts, slogans, if any
- The feeling people should leave with after reading your material
- Or paste a writing sample / link, and I will extract the voice from it
Q7. Your Positioning. Header: Positioning
Bullets:
- The enemy you are fighting: category, behavior, or competitor archetype
- How you solve the problem differently from the obvious alternatives
- Three to four clear messages you want associated with your name or brand
Q8. Priorities This Year. Header: Priorities
Bullets:
- One to three measurable outcomes: revenue, audience size, launch date, etc.
- The "why" behind each one
- What you are deliberately saying no to in order to stay focused
Form 3 — How You Work — one mcp__visualize__show_widget call. Title:
ai_setup_form_3_how_you_operate. Contains Q9–Q12 as stacked elicit-group blocks.
Q9. Active Projects. Header: Projects
Bullets (for each project):
- Name, one-line goal, status, deadline if any
- Which business it belongs to, if there are several
- Who else is involved
Q10. People You Work With. Header: People
Bullets:
- Team members, contractors, key external contacts
- For each person: name, role, how you work together
- Skip if you are completely solo
Q11. Your Stack. Header: Stack
Bullets:
- Your stack for communication, meetings, CRM, content, finance, development, and automation
- The source of truth for each major workflow: where deals live, where decisions live, where writing
actually happens, where the calendar lives
Q12. What Drains You and What Should Be Automated. Header: Drain
Bullets:
- Top one or two painful recurring processes. Use this template: When X happens → I do Y →
it takes Z time → the result is W → what I actually want is V
- What is currently consuming your attention: open loops, unresolved decisions, or things that
should be done but are not done
The user submits each form with one click. Per-category response patterns:
- Type or paste a brain dump, transcript, links, docs, or file paths into the textarea
- Leave the textarea blank to skip that category
- Reply "skip all" between forms to stop asking and move to Phase B+
Accept whatever they give. Do not ask follow-up questions inside or between forms. Extract what
you can.
If the user submits every form empty, proceed to build with defaults only.
Phase B+: Additional Context Drop
After Q12 or "skip all", and before Phase B Build, ask one final AskUserQuestion to invite any
leftover source material that did not surface during the 12 categories. Most users still have brand
decks, About pages, intake forms, LinkedIn URLs, Notion docs, PDFs, slide exports, voice/style
guides, OKR docs, org charts, project briefs, and similar materials. Always ask, even if Q1–Q12
looked rich.
Call AskUserQuestion with one question, header: Context
- Question: "Is there anything else I should extract context from before building the vault? Upload
files (PDF, MD, DOCX), paste links (LinkedIn, websites, Notion pages, Google Docs), point me to a
local folder, or paste raw text. The more context I have, the more personal your vault will be —
instead of generic templates with placeholders."
- Options:
Yes — I will paste links / upload files — "Walk me through it"
Yes — I will point to a local folder — "I have local files"
No — build from the answers above — "Use what you already have"
Skip — "Skip this step"
If the user picks a "Yes" option or pastes content directly:
- Collect everything they share. Be greedy — accept anything they offer.
- For each link: call
WebFetch or WebSearch if the URL is a search. Extract the relevant
content.
- For each uploaded file or local file path:
.md, .txt, .json, .yaml, .csv → read directly with Read
.pdf → read with Read, using the pages parameter if the file is longer than 10 pages
.docx, .pptx, .xlsx → use Bash with pandoc or textutil if available; otherwise tell
the user to export as PDF or Markdown and share it again
- Images / screenshots → read with multimodal support
- For a local folder path: use
Glob to enumerate, then read each file.
- Maintain a context corpus in working memory: every fact, name, number, quote, and useful
detail you find. Tag each item by likely target file, such as
me.md, brand.md, icp.md,
strategy.md, projects/{name}, etc.
- After ingestion, briefly tell the user what you pulled, for example: "Pulled 4 files:
brand-guidelines.pdf, about-page.md, okrs-2026.md, team-roster.csv. Fetched 18 links." One
sentence. Then proceed to Build.
If the user picks No or Skip: proceed straight to Build with only the Q1–Q12 answers from
Phase B.
Phase B Build: Personalize the Vault
After Q12 + the additional context drop, or after skips, build everything you can from what the user
gave you. Work silently. Do not narrate every step.
CRITICAL: Real Personalization, Not Template Scaffolds
The reference files in references/ are scaffolds. They show the section structure to use. They
are not the output. Do not copy a template verbatim with placeholders intact.
For every file you write:
- Read the reference template to learn the section structure: headings, frontmatter shape, and
section order.
- Replace every placeholder — anything in
[brackets] or marked as TBD — with real data
extracted from the 12 Phase B answers and the Phase B+ corpus.
- If a section has zero supporting data after exhausting both Q answers and the corpus, omit
the entire section instead of writing
[name] or TBD. The output should never contain
bracketed placeholders.
- If only some bullets in a section have data, keep the section and drop the empty bullets.
- Use the user's actual words, names, numbers, URLs, and quotes wherever the corpus contains
them. Do not paraphrase facts. Preserve specificity: exact company names, exact dollar figures,
exact dates, and exact phrases the user uses.
- Cross-reference: a single fact may belong in multiple files. For example, "we sell to RevOps
leaders at Series B SaaS" belongs in both
icp.md and brand.md positioning. Place it in every
file where it is relevant.
- Frontmatter
updated: = today's date.
A finished context file should read like a real human-written document about the user. If it reads
like a fillable form, you did it wrong. Go back and fill it.
Build Step 1: Create Context Files
For every file below, source data from BOTH the Q answers AND the Phase B+ corpus: uploaded files,
fetched links, and folder reads. The corpus usually contains the depth; Q answers are the anchors.
Q1–Q12 are the 12 onboarding categories.
Context/me.md — Always created. Fill from Q1 (name, role, location, peer-intro line,
attributes, working style), Q2 (origin / POV / wedge / enemy), Q12 (drains, open loops), and the
corpus. Read references/context-me.md as scaffold.
Context/business.md — Only if Q3 had content. Fill from Q3 (revenue lines: name, what it
does, who it is for, stage, baseline, origin) and the corpus (About page, business overview docs).
Read references/context-business.md as scaffold.
Context/services.md — Only if Q3 lists multiple revenue lines or the corpus has
product/service docs. Read references/context-services.md as scaffold.
Context/pain-points.md — Only if Q4 named problems or Q2 surfaced one. Include an awareness
column (aware vs needs education) using Q4's awareness signal. Read
references/context-pain-points.md as scaffold.
Context/icp.md — Only if Q5 had content or the corpus has ICP material. Fill role, day,
language, dream outcome, trigger, decision time, media, and examples. Read
references/context-icp.md as scaffold.
Context/brand.md — Only if Q6 (voice), Q7 (positioning), or Q4 (why customers choose you)
had content, or if the corpus has brand material. From Q4, take value proposition + why customers
choose you. From Q6, take voice descriptors, signature phrases, words to avoid, feeling, colors,
and fonts. From Q7, take enemy, differentiation, and key messages. Read
references/context-brand.md as scaffold.
Context/strategy.md — Only if Q8 had content. Fill priorities, why, and explicit nos. Read
references/context-strategy.md as scaffold.
Context/team.md — Only if Q10 had content (people / collaborators) or the corpus has a team
/ contractor list. Read references/context-team.md as scaffold.
Context/infrastructure.md — Only if Q11 (stack) or Q12 (workflows) had content, or the
corpus has a stack doc. Combine tool stack from Q11 with workflows to automate from Q12. Read
references/context-infrastructure.md as scaffold.
Build Step 2: Create Project Folders
Use Q9 (active projects), plus any project briefs, Notion exports, or project lists in the corpus.
Intelligently structure each project based on what the user gave you.
Analyze the information and decide the right structure:
- Simple mention ("working on a podcast") → just a
README.md
- Moderate detail (scope, deadlines, people) →
README.md + relevant subdirectories
- Rich info (briefs, specs, research, multiple workstreams) → full structure with subdirectories and
files
Create subdirectories only when the content justifies them:
| Content type |
Goes to |
| Overview, status, deadlines, contacts |
README.md |
| Research, competitor analysis, references |
research/{topic}.md |
| Specs, requirements, briefs |
specs/{name}.md or briefs/{name}.md |
| Drafts, scripts, written content |
drafts/{name}.md |
| Ideas, brainstorms |
ideas/{name}.md |
| Notes, working docs |
notes/{name}.md |
README.md is always the index:
---
type: project
status: active
owner: [name]
business: [business unit if applicable]
created: YYYY-MM-DD
updated: YYYY-MM-DD
---
## Overview
[What this project is]
## Current Status
[Where things stand]
## Key Resources
[Links, tools, contacts]
## Next Steps
[What needs to happen]
Do not create empty subdirectories. Do not cram everything into the README. Distribute content into
the right files based on what it actually is.
Build Step 3: Create First Daily Note
Create Daily/YYYY-MM-DD.md using today's date:
---
type: daily-note
date: YYYY-MM-DD
---
# YYYY-MM-DD
## Session
- **Focus**: Initial vault setup and onboarding
- **Completed**: Full vault bootstrap + personalized onboarding
- **Next Steps**: [based on what was discussed]
Build Step 4: Confirm Completion
Tell the user:
- A quick summary of what was created: which context files, how many projects, and any important
structure
- "Open this folder in Obsidian to see your vault."
- "You can add more context anytime — just tell me and I will update the right files."
- Suggest a next action based on what they told you
Guidelines
- No mode selection — one universal structure, always
os-mode: professional
- Phase A is fully automated — no user input needed
- Phase B is 12 categories, batched into 3 rich-HTML forms rendered via
mcp__visualize__show_widget (Cowork-only)
- Each form has 4 stacked categories with title, bullet inspiration, a brain-dump textarea, a
links/paths textarea, and file upload
- It is a guided brain dump, not a Q&A box
- The bullets are inspiration, not strict questions
- Always recommend dictation / Whisper, plus pasting docs, links, and file paths into the textarea
- No follow-ups, no drilling deeper between forms
- Phase B+ is one final AskUserQuestion (or visualize widget) inviting any leftover files, links,
folders, or raw text — always ask, even if Forms 1–3 looked rich
- Accept any format: typed brain dumps, Whisper transcripts, pasted docs, uploaded files, links
(LinkedIn, websites, blog posts, Notion, Drive), local folder paths, or skips
- For every link the user pastes, fetch it with
WebFetch / WebSearch; for every file or folder,
read it with Read / Glob; merge everything into a single context corpus before building
- Templates are scaffolds, not outputs. Replace every
[bracketed placeholder] with real user
data. If a section has no data after exhausting Q answers + corpus, omit the section. Never leave
placeholders in the written file.
- Preserve specificity: use the user's exact names, numbers, URLs, and phrasing
- Only create context files that have real content — do not create empty placeholder files
- Do not narrate every file you create — build the vault and summarize at the end
1---2name: obsidian-ai-setup3description: Bootstrap an Obsidian vault with the AI Pro Obsidian Plugin. Creates the complete vault structure, system files, Obsidian configuration, memory system, hooks, and output styles, then runs personalized onboarding to tailor the workspace to the user. Uses a single universal structure with no mode selection. Trigger when the user says "set up", "bootstrap", "initialize", "onboarding", or runs `/obsidian-ai-setup`.4---56# AI Pro Obsidian Plugin — Setup + Onboarding78USE WHEN the user runs `/obsidian-ai-setup` or asks to set up their vault, bootstrap the assistant,9initialize the system, or configure the AI Pro Obsidian Plugin.1011> [!important] User-facing language This skill is fully in English. Everything the user sees must be12> in English: orientation messages, form headings, bullet prompts in Phase B, the final Phase B+13> question, confirmations, and summaries.14>15> Internal instructions in this `SKILL.md` and technical values such as file names, frontmatter16> keys, `os-mode`, and slugs must remain as written.1718> [!note] One universal mode This skill builds **one universal structure** — there is no "individual19> / company" mode selection. The base is a lightweight professional structure (`Context`,20> `Projects`, `Daily`, `Resources`, `Skills`, `Intelligence`) that works equally well for a solo21> operator or a small team. Do not create `Departments/`, `Team/{org}/Profiles/`, or separate22> business templates. `os-mode` is always `professional`.2324This is a two-phase process:2526- **Phase A**: Bootstrap — Create the universal directory structure and system files27- **Phase B**: Onboarding — Interview the user and personalize everything2829## Pre-flight Check3031Check if `claude.md` or `CLAUDE.md` exists **only** in the current working directory. Do NOT search32subdirectories or parent directories. Check only the exact current working directory path.3334- **If it exists**: The vault is already set up. Ask the user:35 - Question: `This vault is already configured. What would you like to do?`36 - **`Restart onboarding`** — `Keep the structure and update files using new answers`37 - **`Full reset`** — `Delete everything and start from scratch (confirm twice before deleting)`38 - **`Cancel`** — `Do nothing`39- **If it does NOT exist**: Proceed with full setup (Phase A + Phase B)4041> [!note] No mode selection There used to be a Phase 0 for choosing "individual / company" mode. It42> has been removed. The structure is always universal (`os-mode: professional`). Go directly to43> Phase A. Do not ask about a mode.4445---4647## Phase A: Bootstrap4849Create the universal directory structure and write all system files. There is one structure — always50`os-mode: professional`.5152### Resolving reference file paths5354Every `references/<file>.md` mentioned below lives in the `references/` subdirectory next to **this55SKILL.md** — not in the user's working directory. Two conventions matter:5657- **Read paths** (`references/foo.md`) → resolve relative to this SKILL.md's directory.58- **Write paths** (`./Foo/CLAUDE.md`) → resolve relative to the user's current working directory59 (the vault root).6061If the Read tool cannot open a `references/...` path directly because some harnesses mount the skill62at a path that differs between Read and Bash, run a quick discovery step **once** before Step A.2:6364```bash65# Find the references directory; cache the result for the rest of Phase A.66find / -type d -path '*obsidian-ai-setup/references' 2>/dev/null | head -167```6869Use that absolute path as the prefix for every reference read in Phase A and Phase B. Do not retry70path resolution per file. Resolve once and reuse.7172### Step A.1: Create Directory Structure7374One universal structure for everyone:7576```bash77mkdir -p .claude78mkdir -p Context79mkdir -p Projects80mkdir -p Daily81mkdir -p Resources82mkdir -p Skills83mkdir -p Intelligence/meetings/team-standups84mkdir -p Intelligence/meetings/client-calls85mkdir -p Intelligence/meetings/one-on-ones86mkdir -p Intelligence/meetings/general87mkdir -p Intelligence/competitors88mkdir -p Intelligence/market89mkdir -p Intelligence/decisions90mkdir -p Intelligence/archive91```9293No `Departments/`, no `Team/`, no `Onboarding/` — those were business-mode folders and are no longer94used.9596### Step A.2: Write System Files from References9798Read each reference file and write it to the corresponding local path. The reference files contain99the complete content for each system file.100101**Shared system files:**102103| Reference File | Creates at Local Path |104| -------------------------------------- | ------------------------- |105| `references/settings-json-template.md` | `./.claude/settings.json` |106| `references/claudeignore-template.md` | `./.claudeignore` |107| `references/gitignore-template.md` | `./.gitignore` |108109**Root CLAUDE.md template:**110111| Reference File | Creates at Local Path |112| ---------------------------------- | --------------------- |113| `references/claude-md-template.md` | `./CLAUDE.md` |114115**Per-folder routing indexes** (every major folder gets its own `CLAUDE.md` — this matches the116production vault convention):117118| Reference File | Creates at Local Path |119| -------------------------------------- | -------------------------- |120| `references/claude-md-context.md` | `./Context/CLAUDE.md` |121| `references/claude-md-projects.md` | `./Projects/CLAUDE.md` |122| `references/claude-md-daily.md` | `./Daily/CLAUDE.md` |123| `references/claude-md-intelligence.md` | `./Intelligence/CLAUDE.md` |124| `references/claude-md-resources.md` | `./Resources/CLAUDE.md` |125| `references/claude-md-skills.md` | `./Skills/CLAUDE.md` |126127For each row: read the reference file, then write its content to the local path.128129### Step A.3: Initialize Starter Context Files130131**Do NOT create placeholder skills.** The `Skills/` folder is created empty, with only its132`CLAUDE.md` routing index from Step A.2. The user adds their own skills later. No `linkedin-writer`,133no `newsletter-writer`, no example scaffolds.134135Starter context file:136137- Read `references/context-me.md` → write to `./Context/me.md`138139That is the only starter context file. Everything else in `Context/` is created later during Phase B140Build, only when the onboarding answers actually contain data for it.141142### Step A.4: Make Hooks Executable143144```bash145chmod +x .claude/hooks/*.sh146```147148### Step A.5: Confirm Bootstrap149150Tell the user:151152- "The vault structure has been created successfully."153- List the main folders created: `Context`, `Projects`, `Daily`, `Resources`, `Skills`,154 `Intelligence`155- Recommend opening this folder as a vault in Obsidian156- Recommend installing the **TaskNotes** community plugin if they want task management features157- Note that **Bases** (native database views) are built into Obsidian — no plugin is needed for158 queries159- Mention that `Resources/` is for prompts, frameworks, swipe files, templates, and reusable160 materials161- "Now let's personalize it for you."162163Then proceed to Phase B.164165---166167## Phase B: Onboarding — Guided Brain Dump168169This skill runs **inside Cowork**. Phase B uses Cowork's rich-HTML widget tool — **not**170AskUserQuestion — to render real forms with stacked categories, free-text textareas, and proper171styling. The form should match the look of `os-optimizer`'s "Audit run details" form.172173This is a guided brain dump across **12 categories** of the user's life and work, batched into **3174rich-HTML forms** with 4 categories per form. Bullet points inside each category are **inspiration175prompts**. The user can riff on whatever feels relevant.176177The pitch to the user: _sit down for an hour or two, pour a beer, order a pizza, and brain-dump.178This is not only about making the assistant personal on day one — it is a useful exercise in179itself._180181### The tool: `mcp__visualize__show_widget` (Cowork-only)182183Each of the 3 forms is **one** call to `mcp__visualize__show_widget`. The tool accepts:184185| Field | Purpose |186| ------------------ | ---------------------------------------------------------------------- |187| `title` | Internal widget identifier, for example `ai_setup_form_1_you_business` |188| `loading_messages` | Array of short strings shown while the form renders |189| `widget_code` | Raw HTML for the form, using Cowork's `elicit-*` class conventions |190191The user fills in the form and submits. The submitted values come back to the agent as the tool192result. The agent then proceeds to the next form. No AskUserQuestion. No radio buttons. No "Other"193box.194195### How the user should respond — per category196197Inside each category's textarea, the user can:1981991. **Paste a Whisper / dictation transcript** — open phone or Mac dictation, ramble for 2–5 minutes,200 then paste the transcript.2012. **Paste documents** — links to PDFs, Notion pages, Google Docs, brand guides, About pages,202 LinkedIn profiles, OKR docs, decks, or file paths.2033. **Point at connectors** — paste a Notion workspace URL, wiki link, or Drive folder.2044. **Type long-form free text.**205206There are two kinds of knowledge: **what lives in your head** (dictate it) and **what already lives207online or in a tool** (paste links, docs, files, or paths). The user can mix them freely per208category. Leave a textarea blank to skip that category.209210### Before Form 1 — Send one orienting message211212Send this verbatim or close to it. No tool call yet:213214> Three short forms. Four categories each. Twelve categories total. This is not a questionnaire — it215> is a guided brain dump.216>217> In each category there are three ways to give me context: **a brain-dump field**, **a links and218> file paths field**, and **file uploads**. Use any of them or all of them. Dump whatever comes to219> mind around the bullet prompts. You do not need to answer every bullet. Leave a category empty to220> skip it.221>222> The best inputs are things like a dictation transcript, an About page, a brand book PDF, an OKR223> document, a LinkedIn profile, or a Notion page. The more context you give me, the less generic224> your vault will feel on day one.225>226> Sit down for an hour or two. Pour a beer. Order a pizza. It is worth it.227>228> Submit each form when you are ready. Write "skip all" at any point to move forward with defaults.229230### Widget HTML template231232Every category in every form uses this shape.233234Each category gets **three inputs**: a brain-dump textarea, a links/paths textarea, and a file235upload input. Any or all can be filled. All blank = skip.236237Inside `widget_code` for each form, build a `<form class="elicit">` containing one header and four238`elicit-group` blocks. Per category:239240```html241<div class="elicit-group">242 <label class="elicit-question">{N}/12 — {Category name}</label>243 <div244 class="elicit-bullets"245 style="font-size:13px; color:var(--color-text-secondary); margin:8px 0">246 <ul style="margin:0; padding-left:18px">247 <li>{inspiration bullet 1}</li>248 <li>{inspiration bullet 2}</li>249 <li>{inspiration bullet 3}</li>250 <!-- etc -->251 </ul>252 <p style="margin-top:6px; font-style:italic"253 >Dump your thoughts below, OR paste links / file paths, OR upload documents. Any combination254 works. Leave everything empty to skip this category.</p255 >256 </div>257258 <textarea259 class="elicit-textarea"260 name="cat{N}_braindump"261 rows="6"262 style="width:100%; border-radius:10px; padding:10px; border:1px solid var(--color-border-subtle); font-family:inherit; font-size:13px; margin-bottom:8px"263 placeholder="Brain dump — paste a dictation transcript or write freely…"></textarea>264265 <textarea266 class="elicit-textarea"267 name="cat{N}_links"268 rows="2"269 style="width:100%; border-radius:10px; padding:10px; border:1px solid var(--color-border-subtle); font-family:inherit; font-size:13px; margin-bottom:8px"270 placeholder="Links and file paths — one per line (Notion URL, LinkedIn profile, /path/to/file.pdf, etc.)"></textarea>271272 <input273 class="elicit-file"274 type="file"275 name="cat{N}_files"276 multiple277 accept=".md,.txt,.pdf,.docx,.pptx,.xlsx,.csv,.json,.yaml,.yml,.png,.jpg,.jpeg"278 style="font-size:12px; color:var(--color-text-secondary)" />279</div>280```281282And one header at the top of `<form class="elicit">`:283284```html285<div class="elicit-header">286 <svg287 viewBox="0 0 20 20"288 fill="currentColor"289 width="20"290 height="20">291 <!-- pencil/clipboard icon -->292 </svg>293 <span>{Form title}</span>294</div>295<div class="elicit-body">296 <!-- 4 elicit-group blocks -->297</div>298```299300Reuse the SVG icon pattern from the optimizer's `Audit run details` widget, using the301clipboard-with-marks icon. Form titles: "You and the Business", "Customer and Brand", "How You302Work". The `{N}/12 — {Category name}` label and every bullet must be shown in English using the303category names and bullets defined below.304305### Reading form submissions306307When the widget returns, the result is a record mapping each input's `name` to its value:308309- `cat{N}_braindump` → string (typed text / transcript)310- `cat{N}_links` → string (newline-separated URLs and file paths)311- `cat{N}_files` → array of file references (Cowork uploads these into the workspace folder; the312 result gives you the paths or signed URLs)313314A category is "skipped" only when all three inputs are empty or blank.315316### Ingestion between forms317318After each form returns, for each category in that form:3193201. **`cat{N}_braindump`** — if non-empty, tag and store raw in the working corpus under that321 category. Do not paraphrase.3222. **`cat{N}_links`** — split on newlines. For each line:323 - HTTP(S) URL → fetch with WebFetch / WebSearch.324 - Local file path → Read it.325 - Folder path → Glob, then Read each file.3263. **`cat{N}_files`** — for each uploaded file:327 - `.md`, `.txt`, `.json`, `.yaml`, `.csv` → Read directly328 - `.pdf` → Read with `pages` parameter if large329 - `.docx` / `.pptx` / `.xlsx` → use `pandoc` / `textutil` via Bash if available; otherwise note330 and continue331 - Images → Read with multimodal support332333Merge everything into the corpus tagged by category. Then immediately fire the next form. No334commentary or summarization between forms.335336The 12 categories use Oskar's category breakdown. Bullet inspiration prompts are Oskar's prompt337blocks, plus Ben's framing of "brain-dump anything around any of these bullets."338339---340341### The 12 Categories — 3 Forms × 4 Categories342343This is the single universal onboarding flow. Slugs in `Title:` are internal identifiers; keep them344as written. Category headings, `Header:` values, and bullets are shown to the user in English.345346**Form 1 — You and the Business** — one `mcp__visualize__show_widget` call. Title:347`ai_setup_form_1_you_business`. Contains Q1–Q4 as stacked `elicit-group` blocks.348349**Q1. You.** Header: `You`350351Bullets:352353- Name, role/title, location, niche354- When and how you work best: mornings, deep-work blocks, after a walk, late at night, etc.355- If someone you respect introduced you in a room full of people you respect, how would you want356 them to describe you?357- Five qualities that describe you, one or two words each358359**Q2. Your Origin and Point of View.** Header: `POV`360361Bullets:362363- Why you started, or how you came into the work you do now364- A belief or position you hold strongly, even when it is unpopular365- The "big idea" behind your work: wedge, thesis, core belief366- What you are fighting against: a category, behavior, competitor archetype, or status quo367368**Q3. What You Sell.** Header: `Revenue Lines`369370Bullets (write one paragraph for each revenue line; skip if none exist yet):371372- Name, what it does, who it is for, current stage373- Current revenue baseline, if relevant374- How it started and what made you create it375376**Q4. Promise.** Header: `Offer`377378Bullets:379380- One to three problems you solve for customers381- For each problem: do customers already know they have it, or do you need to educate them?382- Your value proposition in one sentence383- The promise or guarantee you make, explicit or implied384- Why customers actually choose you, using their words if you have heard them385386**Form 2 — Customer and Brand** — one `mcp__visualize__show_widget` call. Title:387`ai_setup_form_2_customer_brand`. Contains Q5–Q8 as stacked `elicit-group` blocks.388389**Q5. Customer.** Header: `Customer`390391Bullets:392393- Job title, role, niche, responsibility area394- What their day looks like and which tools they live in395- The language and words they use to describe their problem396- The dream outcome they want397- The situation they are in before they come to you — what triggered the search398- How long it usually takes them to decide to buy399- Media, podcasts, newsletters, or authors they follow400- Three to five real examples: names, LinkedIn profiles, or company names401402**Q6. Your Voice and Visual Identity.** Header: `Voice`403404Bullets:405406- Tone descriptors that fit: direct, warm, dry, technical, playful, serious, supportive, etc.407- Five qualities that describe how you sound408- Signature phrases you actually use409- Words or phrases you would never use410- Topics you enjoy talking about411- Topics you refuse to discuss publicly412- Brand colors, fonts, slogans, if any413- The feeling people should leave with after reading your material414- Or paste a writing sample / link, and I will extract the voice from it415416**Q7. Your Positioning.** Header: `Positioning`417418Bullets:419420- The enemy you are fighting: category, behavior, or competitor archetype421- How you solve the problem differently from the obvious alternatives422- Three to four clear messages you want associated with your name or brand423424**Q8. Priorities This Year.** Header: `Priorities`425426Bullets:427428- One to three measurable outcomes: revenue, audience size, launch date, etc.429- The "why" behind each one430- What you are deliberately saying no to in order to stay focused431432**Form 3 — How You Work** — one `mcp__visualize__show_widget` call. Title:433`ai_setup_form_3_how_you_operate`. Contains Q9–Q12 as stacked `elicit-group` blocks.434435**Q9. Active Projects.** Header: `Projects`436437Bullets (for each project):438439- Name, one-line goal, status, deadline if any440- Which business it belongs to, if there are several441- Who else is involved442443**Q10. People You Work With.** Header: `People`444445Bullets:446447- Team members, contractors, key external contacts448- For each person: name, role, how you work together449- Skip if you are completely solo450451**Q11. Your Stack.** Header: `Stack`452453Bullets:454455- Your stack for communication, meetings, CRM, content, finance, development, and automation456- The source of truth for each major workflow: where deals live, where decisions live, where writing457 actually happens, where the calendar lives458459**Q12. What Drains You and What Should Be Automated.** Header: `Drain`460461Bullets:462463- Top one or two painful recurring processes. Use this template: When **X** happens → I do **Y** →464 it takes **Z** time → the result is **W** → what I actually want is **V**465- What is currently consuming your attention: open loops, unresolved decisions, or things that466 should be done but are not done467468---469470The user submits each form with one click. Per-category response patterns:471472- Type or paste a brain dump, transcript, links, docs, or file paths into the textarea473- Leave the textarea blank to skip that category474- Reply "skip all" between forms to stop asking and move to Phase B+475476**Accept whatever they give.** Do not ask follow-up questions inside or between forms. Extract what477you can.478479**If the user submits every form empty**, proceed to build with defaults only.480481---482483## Phase B+: Additional Context Drop484485After Q12 or "skip all", and **before** Phase B Build, ask one final `AskUserQuestion` to invite any486leftover source material that did not surface during the 12 categories. Most users still have brand487decks, About pages, intake forms, LinkedIn URLs, Notion docs, PDFs, slide exports, voice/style488guides, OKR docs, org charts, project briefs, and similar materials. Always ask, even if Q1–Q12489looked rich.490491**Call AskUserQuestion** with one question, header: `Context`492493- Question: "Is there anything else I should extract context from before building the vault? Upload494 files (PDF, MD, DOCX), paste links (LinkedIn, websites, Notion pages, Google Docs), point me to a495 local folder, or paste raw text. The more context I have, the more personal your vault will be —496 instead of generic templates with placeholders."497- Options:498 - `Yes — I will paste links / upload files` — "Walk me through it"499 - `Yes — I will point to a local folder` — "I have local files"500 - `No — build from the answers above` — "Use what you already have"501 - `Skip` — "Skip this step"502503**If the user picks a "Yes" option** or pastes content directly:5045051. Collect everything they share. Be greedy — accept anything they offer.5062. **For each link**: call `WebFetch` or `WebSearch` if the URL is a search. Extract the relevant507 content.5083. **For each uploaded file or local file path**:509 - `.md`, `.txt`, `.json`, `.yaml`, `.csv` → read directly with `Read`510 - `.pdf` → read with `Read`, using the `pages` parameter if the file is longer than 10 pages511 - `.docx`, `.pptx`, `.xlsx` → use Bash with `pandoc` or `textutil` if available; otherwise tell512 the user to export as PDF or Markdown and share it again513 - Images / screenshots → read with multimodal support5144. **For a local folder path**: use `Glob` to enumerate, then read each file.5155. **Maintain a context corpus** in working memory: every fact, name, number, quote, and useful516 detail you find. Tag each item by likely target file, such as `me.md`, `brand.md`, `icp.md`,517 `strategy.md`, `projects/{name}`, etc.5186. After ingestion, briefly tell the user what you pulled, for example: "Pulled 4 files:519 brand-guidelines.pdf, about-page.md, okrs-2026.md, team-roster.csv. Fetched 18 links." One520 sentence. Then proceed to Build.521522**If the user picks `No` or `Skip`**: proceed straight to Build with only the Q1–Q12 answers from523Phase B.524525---526527## Phase B Build: Personalize the Vault528529After Q12 + the additional context drop, or after skips, build everything you can from what the user530gave you. Work silently. Do not narrate every step.531532### CRITICAL: Real Personalization, Not Template Scaffolds533534The reference files in `references/` are **scaffolds**. They show the section structure to use. They535are **not** the output. Do not copy a template verbatim with placeholders intact.536537For every file you write:5385391. **Read the reference template** to learn the section structure: headings, frontmatter shape, and540 section order.5412. **Replace every placeholder** — anything in `[brackets]` or marked as TBD — with real data542 extracted from the 12 Phase B answers and the Phase B+ corpus.5433. **If a section has zero supporting data** after exhausting both Q answers and the corpus, **omit544 the entire section** instead of writing `[name]` or `TBD`. The output should never contain545 bracketed placeholders.5464. **If only some bullets in a section have data**, keep the section and drop the empty bullets.5475. **Use the user's actual words, names, numbers, URLs, and quotes** wherever the corpus contains548 them. Do not paraphrase facts. Preserve specificity: exact company names, exact dollar figures,549 exact dates, and exact phrases the user uses.5506. **Cross-reference**: a single fact may belong in multiple files. For example, "we sell to RevOps551 leaders at Series B SaaS" belongs in both `icp.md` and `brand.md` positioning. Place it in every552 file where it is relevant.5537. **Frontmatter `updated:`** = today's date.554555A finished context file should read like a real human-written document about the user. If it reads556like a fillable form, you did it wrong. Go back and fill it.557558### Build Step 1: Create Context Files559560For every file below, source data from BOTH the Q answers AND the Phase B+ corpus: uploaded files,561fetched links, and folder reads. The corpus usually contains the depth; Q answers are the anchors.562Q1–Q12 are the 12 onboarding categories.563564- **`Context/me.md`** — Always created. Fill from Q1 (name, role, location, peer-intro line,565 attributes, working style), Q2 (origin / POV / wedge / enemy), Q12 (drains, open loops), and the566 corpus. Read `references/context-me.md` as scaffold.567- **`Context/business.md`** — Only if Q3 had content. Fill from Q3 (revenue lines: name, what it568 does, who it is for, stage, baseline, origin) and the corpus (About page, business overview docs).569 Read `references/context-business.md` as scaffold.570- **`Context/services.md`** — Only if Q3 lists multiple revenue lines or the corpus has571 product/service docs. Read `references/context-services.md` as scaffold.572- **`Context/pain-points.md`** — Only if Q4 named problems or Q2 surfaced one. Include an awareness573 column (aware vs needs education) using Q4's awareness signal. Read574 `references/context-pain-points.md` as scaffold.575- **`Context/icp.md`** — Only if Q5 had content or the corpus has ICP material. Fill role, day,576 language, dream outcome, trigger, decision time, media, and examples. Read577 `references/context-icp.md` as scaffold.578- **`Context/brand.md`** — Only if Q6 (voice), Q7 (positioning), or Q4 (why customers choose you)579 had content, or if the corpus has brand material. From Q4, take value proposition + why customers580 choose you. From Q6, take voice descriptors, signature phrases, words to avoid, feeling, colors,581 and fonts. From Q7, take enemy, differentiation, and key messages. Read582 `references/context-brand.md` as scaffold.583- **`Context/strategy.md`** — Only if Q8 had content. Fill priorities, why, and explicit nos. Read584 `references/context-strategy.md` as scaffold.585- **`Context/team.md`** — Only if Q10 had content (people / collaborators) or the corpus has a team586 / contractor list. Read `references/context-team.md` as scaffold.587- **`Context/infrastructure.md`** — Only if Q11 (stack) or Q12 (workflows) had content, or the588 corpus has a stack doc. Combine tool stack from Q11 with workflows to automate from Q12. Read589 `references/context-infrastructure.md` as scaffold.590591### Build Step 2: Create Project Folders592593Use Q9 (active projects), plus any project briefs, Notion exports, or project lists in the corpus.594Intelligently structure each project based on what the user gave you.595596**Analyze the information and decide the right structure:**597598- Simple mention ("working on a podcast") → just a `README.md`599- Moderate detail (scope, deadlines, people) → `README.md` + relevant subdirectories600- Rich info (briefs, specs, research, multiple workstreams) → full structure with subdirectories and601 files602603**Create subdirectories only when the content justifies them:**604605| Content type | Goes to |606| ----------------------------------------- | --------------------------------------- |607| Overview, status, deadlines, contacts | `README.md` |608| Research, competitor analysis, references | `research/{topic}.md` |609| Specs, requirements, briefs | `specs/{name}.md` or `briefs/{name}.md` |610| Drafts, scripts, written content | `drafts/{name}.md` |611| Ideas, brainstorms | `ideas/{name}.md` |612| Notes, working docs | `notes/{name}.md` |613614**README.md is always the index:**615616```markdown617---618type: project619status: active620owner: [name]621business: [business unit if applicable]622created: YYYY-MM-DD623updated: YYYY-MM-DD624---625626## Overview627628[What this project is]629630## Current Status631632[Where things stand]633634## Key Resources635636[Links, tools, contacts]637638## Next Steps639640[What needs to happen]641```642643Do not create empty subdirectories. Do not cram everything into the README. Distribute content into644the right files based on what it actually is.645646### Build Step 3: Create First Daily Note647648Create `Daily/YYYY-MM-DD.md` using today's date:649650```markdown651---652type: daily-note653date: YYYY-MM-DD654---655656# YYYY-MM-DD657658## Session659660- **Focus**: Initial vault setup and onboarding661- **Completed**: Full vault bootstrap + personalized onboarding662- **Next Steps**: [based on what was discussed]663```664665### Build Step 4: Confirm Completion666667Tell the user:668669- A quick summary of what was created: which context files, how many projects, and any important670 structure671- "Open this folder in Obsidian to see your vault."672- "You can add more context anytime — just tell me and I will update the right files."673- Suggest a next action based on what they told you674675## Guidelines676677- No mode selection — one universal structure, always `os-mode: professional`678- Phase A is fully automated — no user input needed679- Phase B is **12 categories**, batched into **3 rich-HTML forms** rendered via680 `mcp__visualize__show_widget` (Cowork-only)681- Each form has 4 stacked categories with title, bullet inspiration, a brain-dump textarea, a682 links/paths textarea, and file upload683- It is a guided **brain dump**, not a Q&A box684- The bullets are inspiration, not strict questions685- Always recommend dictation / Whisper, plus pasting docs, links, and file paths into the textarea686- No follow-ups, no drilling deeper between forms687- Phase B+ is one final AskUserQuestion (or visualize widget) inviting any leftover files, links,688 folders, or raw text — always ask, even if Forms 1–3 looked rich689- Accept any format: typed brain dumps, Whisper transcripts, pasted docs, uploaded files, links690 (LinkedIn, websites, blog posts, Notion, Drive), local folder paths, or skips691- For every link the user pastes, fetch it with `WebFetch` / `WebSearch`; for every file or folder,692 read it with `Read` / `Glob`; merge everything into a single context corpus before building693- **Templates are scaffolds, not outputs.** Replace every `[bracketed placeholder]` with real user694 data. If a section has no data after exhausting Q answers + corpus, omit the section. Never leave695 placeholders in the written file.696- Preserve specificity: use the user's exact names, numbers, URLs, and phrasing697- Only create context files that have real content — do not create empty placeholder files698- Do not narrate every file you create — build the vault and summarize at the end