# Obsidian Vault Setup

> Bootstrap Obsidian vault conventions - checks for required folders and templates, creates missing items with sensible defaults

- **Type:** Skill
- **Install:** `agentstack add skill-jlaska-obsidian-claude-plugins-obsidian-vault-setup`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [jlaska](https://agentstack.voostack.com/s/jlaska)
- **Installs:** 0
- **Category:** [Productivity](https://agentstack.voostack.com/c/productivity)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [jlaska](https://github.com/jlaska)
- **Source:** https://github.com/jlaska/obsidian-claude-plugins/tree/main/skills/obsidian-vault-setup

## Install

```sh
agentstack add skill-jlaska-obsidian-claude-plugins-obsidian-vault-setup
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Obsidian Vault Setup

This skill helps bootstrap an Obsidian vault with standard productivity conventions. It checks for required folders and templates, then creates missing items with sensible defaults.

## When to Use

Invoke `/obsidian-vault-setup` when:
- Setting up a new Obsidian vault for use with Claude Code
- A vault is missing expected conventions (PEOPLE/, MEETINGS/, etc.)
- You need to verify vault structure before running other skills
- You want to ensure templates exist for daily planning workflows

## Workflow

### 1. Discover Vault Root

Use the same logic as `obsidian-vault-discovery` skill:

```bash
cat ~/Library/Application\ Support/obsidian/obsidian.json
```

Parse the JSON to find:
- The vault with `"open": true`, OR
- If in a vault directory (cwd contains `.obsidian/`), use that vault
- Otherwise, use the most recently opened vault (highest `ts`)

### 2. Check Required Conventions

Check for the existence of these items:

#### Folders

| Folder | Detection Method | Description |
|--------|------------------|-------------|
| `PEOPLE/` | Directory exists | People notes directory |
| `MEETINGS/` | Directory exists | Meeting notes directory |
| `DAILY_NOTES/` | Read `.obsidian/daily-notes.json` → `folder` field, OR directory exists | Daily notes directory |
| `TEMPLATES/` | Read `.obsidian/templates.json` → `folder` field, OR directory exists | Templates directory |

#### Templates

| Template | Path | Description |
|----------|------|-------------|
| Daily Note Template | `TEMPLATES/Daily Note Template.md` | Daily note template with Templater support |
| Meeting Template | `TEMPLATES/Meeting Template.md` | Meeting note template with attendees and dataview |
| People Template | `TEMPLATES/People Template.md` | People note template with contact fields |

#### Configuration

| File | Path | Description |
|------|------|-------------|
| CLAUDE.md | `CLAUDE.md` (vault root) | Vault conventions documentation for Claude |

### 3. Report Status

Display a status report showing:

```
✓ PEOPLE/ folder
✓ MEETINGS/ folder
✗ DAILY_NOTES/ folder (missing)
✓ TEMPLATES/ folder
✓ TEMPLATES/Daily Note Template.md
✗ TEMPLATES/Meeting Template.md (missing)
✗ TEMPLATES/People Template.md (missing)
✗ CLAUDE.md (missing)
```

### 4. Prompt for Creation

If any items are missing, ask the user:

```
The following items are missing from your vault:
- DAILY_NOTES/ folder
- TEMPLATES/Meeting Template.md
- TEMPLATES/People Template.md
- CLAUDE.md

Would you like to create these items with default conventions?
```

Use `AskUserQuestion` to confirm.

### 5. Create Missing Items

If the user confirms, create missing items:

#### Create Folders

```bash
mkdir -p "/PEOPLE"
mkdir -p "/MEETINGS"
mkdir -p "/DAILY_NOTES"
mkdir -p "/TEMPLATES"
```

#### Copy Templates

Copy template files from this skill's `defaults/templates/` directory to the vault's `TEMPLATES/` folder:

```bash
cp "skills/obsidian-vault-setup/defaults/templates/Daily Note Template.md" \
   "/TEMPLATES/Daily Note Template.md"

cp "skills/obsidian-vault-setup/defaults/templates/Meeting Template.md" \
   "/TEMPLATES/Meeting Template.md"

cp "skills/obsidian-vault-setup/defaults/templates/People Template.md" \
   "/TEMPLATES/People Template.md"
```

#### Copy CLAUDE.md Example

```bash
cp "skills/obsidian-vault-setup/defaults/CLAUDE.md.example" \
   "/CLAUDE.md"
```

### 6. Verify Creation

After creating items, re-run the status check to confirm all items now exist. Display final status:

```
✓ All required conventions are now in place!

Your vault is ready for:
- /daily-planner skill
- Meeting note automation
- People directory management
```

## Configuration Files to Check

### Daily Notes Configuration

Read `.obsidian/daily-notes.json` to get the configured folder:

```json
{
  "folder": "DAILY_NOTES",
  "format": "YYYY/MM-MMMM/YYYY-MM-DD dddd",
  "template": "TEMPLATES/Daily Note Template"
}
```

If this file doesn't exist, check if `DAILY_NOTES/` folder exists as fallback.

### Templates Configuration

Read `.obsidian/templates.json` to get the configured folder:

```json
{
  "folder": "TEMPLATES"
}
```

If this file doesn't exist, check if `TEMPLATES/` folder exists as fallback.

## Default Conventions

The skill installs these conventions:

1. **ALL-CAPS folder names**: `PEOPLE/`, `MEETINGS/`, `DAILY_NOTES/`, `TEMPLATES/`
2. **Templater-compatible templates**: Use `` syntax
3. **YAML frontmatter**: All notes use frontmatter with quoted wikilinks
4. **Date-based organization**: Meetings and daily notes organized by `YYYY/MM-Month/`
5. **Dataview queries**: Templates include dataview queries for related notes

## Idempotency

Running this skill multiple times is safe:
- Existing folders are not modified
- Existing templates are not overwritten
- Only missing items are created
- User confirmation required before any changes

## Usage Example

```
User: /obsidian-vault-setup

Claude:
Checking your Obsidian vault conventions...

Vault: /Users/jlaska/Library/Mobile Documents/iCloud~md~obsidian/Documents/Obsidian Vault

Status:
✓ PEOPLE/ folder
✓ MEETINGS/ folder
✗ DAILY_NOTES/ folder (missing)
✓ TEMPLATES/ folder
✗ TEMPLATES/Daily Note Template.md (missing)
✗ TEMPLATES/Meeting Template.md (missing)
✗ TEMPLATES/People Template.md (missing)
✓ CLAUDE.md

The following items are missing:
- DAILY_NOTES/ folder
- TEMPLATES/Daily Note Template.md
- TEMPLATES/Meeting Template.md
- TEMPLATES/People Template.md

Would you like to create these items?

User: yes

Claude:
Creating missing items...
✓ Created DAILY_NOTES/ folder
✓ Created TEMPLATES/Daily Note Template.md
✓ Created TEMPLATES/Meeting Template.md
✓ Created TEMPLATES/People Template.md

All conventions are now in place! Your vault is ready for:
- /daily-planner skill
- Meeting note automation
- People directory management
```

## Related Skills

- **obsidian-vault-discovery**: Used to discover vault configuration
- **daily-planner**: Requires these conventions to be in place

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [jlaska](https://github.com/jlaska)
- **Source:** [jlaska/obsidian-claude-plugins](https://github.com/jlaska/obsidian-claude-plugins)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-jlaska-obsidian-claude-plugins-obsidian-vault-setup
- Seller: https://agentstack.voostack.com/s/jlaska
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
