Agent skill

Obsidian Vault Adoption

by ballred in ballred/obsidian-claude-pkm

Scans an existing Obsidian vault, maps its folders to PKM roles with your confirmation and generates configuration for the Claude PKM system without a template.

MITAuto-check: notesKnowledge Management

Install Obsidian Vault Adoption

skills CLI
$ npx skills add ballred/obsidian-claude-pkm --skill adopt -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ballred/obsidian-claude-pkm adopt --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ballred/obsidian-claude-pkm.git skills-src && mkdir -p .claude/skills && cp -r skills-src/vault-template/.claude/skills/adopt .claude/skills/adopt && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
adopt
GitHub stars
1.9k
Token cost
~2.6k tokens
SKILL.md length
952 words
Files
2
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Scans an existing Obsidian vault, maps its folders to PKM roles with your confirmation and generates configuration for the Claude PKM system without a template.

  • Works in 6 steps: Scan Vault Structure → Map Folders to Roles → Personalize Preferences → …
  • Adding the Claude PKM system to a vault you already use
  • SKILL.md covers Usage, When to Use, Phase 1: Scan Vault Structure and Phase 2: Map Folders to Roles, plus 6 more sections
  • Calls vault

What it does

Run from the root of your vault, the skill installs the Claude PKM system onto a vault you already have, keeping your folder structure. Phase 1 lists top-level folders while skipping system ones such as `.obsidian` and `.git`, counts Markdown files, looks for date-named files that signal daily notes, greps for goal, review and template keywords, and checks for `CLAUDE.md` files in subfolders. From these signals it guesses your organization method: PARA, Zettelkasten, Johnny Decimal, LYT, flat or custom.

Phase 2 maps six roles to folders: daily notes, goals, projects, templates, archives and inbox. For each role it asks you to confirm or correct the detected folder, offering the candidates, creating a new folder or skipping the role. The results are used to generate the system's configuration.

When your agent uses it

  • Adding the Claude PKM system to a vault you already use
  • Keeping your current folder structure instead of starting from a template
  • Detecting whether a vault follows PARA, Zettelkasten or another method

Example prompts

  • “Adopt the PKM system onto my existing Obsidian vault.”
  • “Scan this vault and tell me which organization method it follows.”
  • “Map my existing folders to daily notes, goals and projects before generating the config.”

Requirements

  • An existing Obsidian vault, with the skill run from its root
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Scan Vault Structure
  2. Map Folders to Roles
  3. Personalize Preferences
  4. Generate Configuration
  5. Scaffold Missing Pieces
  6. Verify & Next Steps

What it can do on your machine

Read from SKILL.md and the folder at commit ef1e4da. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Bash
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • vault

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Obsidian Vault Adoption loads about 2.6k tokens when it runs. Until then it costs about 43 tokens; SKILL.md has 952 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~43
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ballred/obsidian-claude-pkm at commit ef1e4da, republished under its MIT licence (© ballred). 952 words, ~2,621 tokens.

Download SKILL.mdSave it as .claude/skills/adopt/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
adopt
description
Scaffold the PKM system onto an existing Obsidian vault. Scans your vault structure, maps folders interactively, and generates configuration — no template required.
allowed-tools
Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion
model
sonnet
user-invocable
true

Adopt Skill

Bring Your Own Vault (BYOV) — install the Claude PKM system onto an existing Obsidian vault.

Usage

/adopt    # Run from the root of your existing Obsidian vault

When to Use

  • You have an existing Obsidian vault and want to add the Claude PKM system
  • You don't want to start from the vault template
  • You want to keep your current folder structure

Phase 1: Scan Vault Structure

Analyze the existing vault to understand its organization.

Steps
  1. List top-level directories using ls, excluding system dirs (.obsidian, .git, .claude, .trash, .claude-plugin)

  2. For each directory, gather signals:

    • Count .md files (using Glob)
    • Check for date-named files (YYYY-MM-DD*.md) — indicates daily notes
    • Grep for goal/review/template keywords in filenames and content
    • Check for existing CLAUDE.md in subdirs — indicates projects
  3. Detect organization method based on signals:

    • PARA: Folders named Projects, Areas, Resources, Archives
    • Zettelkasten: Numeric-prefixed notes, heavy wiki-linking, flat structure
    • Johnny Decimal: 00-09, 10-19 style folder names
    • LYT (Linking Your Thinking): Folders named Atlas, Calendar, Cards, Extras, Sources
    • Flat: Few folders, most files at root
    • Custom: None of the above patterns match
  4. Present findings to the user:

    Vault scan complete!
    
    Found 342 notes across 8 folders:
      Daily/           → 180 notes (date-named — likely daily notes)
      Projects/        → 45 notes (has CLAUDE.md files — likely projects)
      Goals/           → 12 notes (contains goal keywords)
      Templates/       → 8 notes (contains template keywords)
      Archive/         → 67 notes
      Inbox/           → 15 notes
      Resources/       → 10 notes
      Meeting Notes/   → 5 notes
    
    Detected method: PARA-like structure

Phase 2: Map Folders to Roles

Use AskUserQuestion to confirm or correct the detected mappings.

Roles to Map

Each role maps a PKM function to a folder in the user's vault:

RolePurposeDetection Signal
Daily NotesDaily journal entriesDate-named files (YYYY-MM-DD)
GoalsGoal cascade (3-year → weekly)Files with goal/review keywords
ProjectsActive projectsSubdirs with CLAUDE.md or project keywords
TemplatesReusable note structuresFiles with template keywords or in Templates/
ArchivesCompleted/inactive contentFolder named Archive(s) or with old dates
InboxUncategorized capturesFolder named Inbox, or files tagged #inbox
Interactive Mapping

For each role, ask the user to confirm or correct:

Question format (use AskUserQuestion):

  • "Which folder holds your daily notes?"
  • Options: detected candidate(s), "I don't have one (create it)", "Skip — I don't use this"
  • For optional roles (Inbox), include "Skip" as a default

Edge cases:

  • Existing CLAUDE.md at root: Ask the user — back up as CLAUDE.md.backup or merge content
  • No candidate for a role: Offer to create the folder
  • Multiple candidates: Present all and let the user choose
Save Mappings

Store the folder mapping for use in later phases:

dailyNotes → "Daily"
goals → "Goals"
projects → "Projects"
templates → "Templates"
archives → "Archive"
inbox → "Inbox"     (or null if skipped)

Phase 3: Personalize Preferences

Ask the same 4 questions as /onboard:

Question 1: Your name

  • "What should I call you?"
  • Used for personalized prompts and greetings

Question 2: Preferred review day

  • "What day do you prefer for your weekly review?"
  • Options: Sunday (Recommended), Saturday, Monday, Friday
  • Used by /review auto-detection and session-init nudges

Question 3: Primary goal areas

  • "Which areas are most important to you right now? (Pick 2-4)"
  • Options: Career & Professional, Health & Wellness, Relationships, Personal Growth
  • Also offer: Financial, Creativity & Fun, Learning, Other
  • multiSelect: true
  • Used to customize goal template suggestions

Question 4: Work style

  • "How do you prefer Claude to interact?"
  • Options: Direct and concise (Recommended), Coaching and challenging, Detailed and thorough, Minimal — just do the task
  • Sets output style preference

Phase 4: Generate Configuration

4a. Write settings.json

Write .claude/settings.json with permissions scoped to the user's actual folders:

json
{
  "permissions": {
    "allow": [
      "Read",
      "Write **/{mapped-daily}/**",
      "Write **/{mapped-goals}/**",
      "Write **/{mapped-projects}/**",
      "Write **/{mapped-templates}/**",
      "Edit **/{mapped-daily}/**",
      "Edit **/{mapped-goals}/**",
      "Edit **/{mapped-projects}/**",
      "Glob",
      "Grep"
    ]
  }
}

Replace {mapped-*} with actual folder names from Phase 2.

4b. Write root CLAUDE.md

Generate a root CLAUDE.md that describes the user's actual vault structure. Use the same format as the template's CLAUDE.md but with:

  • Their folder names in the Directory Structure table
  • Their goal areas in the System Purpose section
  • Their actual skills table (same as template)
  • Cascade section adapted to their folder names

If the user had an existing CLAUDE.md, merge their content into the appropriate sections (preserve their mission statement, custom conventions, etc.).

Show full SKILL.md (370 more words)Show less
4c. Write vault-config.json

Write vault-config.json in the vault root:

json
{
  "name": "User's name",
  "reviewDay": "Sunday",
  "goalAreas": ["Career & Professional", "Health & Wellness"],
  "workStyle": "Direct and concise",
  "setupDate": "2026-02-17",
  "version": "3.1",
  "adoptedVault": true,
  "folderMapping": {
    "dailyNotes": "Daily",
    "goals": "Goals",
    "projects": "Projects",
    "templates": "Templates",
    "archives": "Archive",
    "inbox": "Inbox"
  }
}
4d. Set Environment Variables

Write or update CLAUDE.local.md with env var exports for hooks:

markdown
## Environment Overrides

These env vars allow hooks and scripts to find your folders:

<!--
Export these in your shell profile or they'll be set by session-init:
-->
DAILY_NOTES_DIR={mapped daily notes folder}
GOALS_DIR={mapped goals folder}
PROJECTS_DIR={mapped projects folder}
TEMPLATES_DIR={mapped templates folder}
INBOX_DIR={mapped inbox folder}
ARCHIVES_DIR={mapped archives folder}

Also create .claude/hooks/adopt-env.sh that exports these variables:

bash
#!/bin/bash
# Environment variables for adopted vault folder mapping
# Generated by /adopt — edit vault-config.json and re-run /adopt to update

export DAILY_NOTES_DIR="{mapped daily notes}"
export GOALS_DIR="{mapped goals}"
export PROJECTS_DIR="{mapped projects}"
export TEMPLATES_DIR="{mapped templates}"
export INBOX_DIR="{mapped inbox}"
export ARCHIVES_DIR="{mapped archives}"

Then add a source line to session-init.sh if not already present:

bash
# Source adopted vault env vars if present
ADOPT_ENV="$VAULT_PATH/.claude/hooks/adopt-env.sh"
if [ -f "$ADOPT_ENV" ]; then
    source "$ADOPT_ENV"
fi

Phase 5: Scaffold Missing Pieces

Check what's missing and offer to create it. Always ask before creating.

5a. Goal Cascade Files

If the goals folder is empty or newly created:

  • "Your goals folder is empty. Want me to create the goal cascade? (3-year vision, yearly goals, monthly goals, weekly review)"
  • If yes: copy the standard templates, adapting paths to the user's folder names
  • If no: skip
5b. Templates

If the templates folder is empty or newly created:

  • "Want me to add standard templates? (Daily, Weekly Review, Project)"
  • If yes: copy templates, adapting internal links to the user's folder names
  • If no: skip
5c. CLAUDE.local.md.template

If CLAUDE.local.md.template doesn't exist:

  • Copy it from the standard template
  • Adapt any folder references
5d. Claude Config Directories

Ensure these directories exist (create silently):

  • .claude/skills/ (for future skill additions)
  • .claude/rules/
  • .claude/hooks/
  • .claude/agents/

Copy standard rules files if .claude/rules/ is empty:

  • markdown-standards.md
  • productivity-workflow.md
  • project-management.md
  • task-tracking.md

Phase 6: Verify & Next Steps

6a. Validation

Run quick checks:

  • vault-config.json is valid JSON (read it back)
  • All mapped folders exist
  • CLAUDE.md is present and non-empty
  • .claude/hooks/adopt-env.sh is present and executable
6b. Summary

Present a summary:

Adoption complete!

Vault: /path/to/vault
Method: PARA-like (preserved your existing structure)
Mapped folders:
  Daily Notes → Daily/
  Goals       → Goals/
  Projects    → Projects/
  Templates   → Templates/
  Archives    → Archive/
  Inbox       → Inbox/

Created:
  ✓ CLAUDE.md (vault context)
  ✓ vault-config.json (preferences)
  ✓ .claude/hooks/adopt-env.sh (folder mapping)
  ✓ Goal cascade files (4 files)
  ✓ Standard templates (3 files)

Your vault structure is unchanged — only configuration files were added.
6c. Next Steps

Suggest what to do next:

  • "Try /daily to create today's note using your vault's structure"
  • "Try /review for a guided weekly review"
  • "Run /push to commit these changes to git"
  • "Edit CLAUDE.local.md for private preferences (not committed to git)"

Error Handling

  • Not in a vault: If no .obsidian directory found, warn: "This doesn't look like an Obsidian vault. Continue anyway?"
  • Already adopted: If vault-config.json exists with adoptedVault: true, ask: "This vault was already adopted. Re-run adoption? (This will regenerate config files.)"
  • Permission errors: If .claude/ can't be written, suggest checking permissions
  • Empty vault: If no .md files found, suggest using /onboard with the template instead

Integration

Works with:

  • /onboard — adopt replaces onboard for existing vaults
  • /daily — uses mapped daily notes folder
  • /weekly — uses mapped goals folder
  • /review — respects adopted vault structure
  • /push — commits adoption changes
  • All hooks — read env vars from adopt-env.sh

© ballred, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in vault-template/.claude/skills/adopt of ballred/obsidian-claude-pkm.

  • SKILL.md
  • CLAUDE.md

Open the folder on GitHubat commit ef1e4da

Compare with similar skills

Obsidian Vault Adoption next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Obsidian Vault Adoption compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Obsidian Vault Adoption this skillballred/obsidian-claude-pkm1.9k—~2.6kAutomated safety check: NotesMIT
Obsidian Canvas BoardsAgriciDaniel/claude-obsidian15k—~1.4kAutomated safety check: PassMIT
Obsidian Wiki Log FoldAgriciDaniel/claude-obsidian15k—~1.2kAutomated safety check: PassMIT
Obsidian Bases EditorAgriciDaniel/claude-obsidian15k—~1.2kAutomated safety check: PassMIT
My LLM WikiMartinLwx/dotfiles140—~2.7kAutomated safety check: PassNone
Obsidian Knowledge BuilderMichael-OvO/obsidian-knowledge-agent205—~917Automated safety check: PassMIT

Similar skills

  • Obsidian Canvas Boards

    AgriciDaniel/claude-obsidian

    Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.

    15k GitHub stars~1.4k tokensUpdated 26 days ago
    Knowledge ManagementAuto-check passed
  • Obsidian Wiki Log Fold

    AgriciDaniel/claude-obsidian

    Creates a bounded, extractive rollup of recent Obsidian wiki log entries, previewed by default, with one optional apply step and no changes to child pages.

    15k GitHub stars~1.2k tokensUpdated 26 days ago
    Knowledge ManagementAuto-check passed
  • Obsidian Bases Editor

    AgriciDaniel/claude-obsidian

    Explains, drafts and validates Obsidian Bases .base files, building filters, formulas and table, card or list views, and applying edits only through one inspected transaction.

    15k GitHub stars~1.2k tokensUpdated 26 days ago
    Knowledge ManagementAuto-check passed
  • My LLM Wiki

    MartinLwx/dotfiles

    Provides access to the user's personal wiki, including notes, research, project documentation, decisions, and archived knowledge.

    140 GitHub stars~2.7k tokensUpdated 17 days ago
    Knowledge ManagementAuto-check passed
  • Obsidian Knowledge Builder

    Michael-OvO/obsidian-knowledge-agent

    Turns PDFs, slides, syllabi, papers and transcripts into structured, teaching-quality Obsidian notes, matching how much structure is built to how much the material needs.

    205 GitHub stars~917 tokensUpdated 3 mo ago
    Knowledge ManagementAuto-check passed
  • Obsidian Project Knowledge Base

    Galaxy-Dawn/claude-scholar

    Maintains a project-scoped Obsidian research knowledge base: bootstrapping its folders, routing notes, updating hub, plan and index notes, and linting.

    5.7k GitHub stars~551 tokensUpdated 14 days ago
    Knowledge ManagementAuto-check passed

More from ballred/obsidian-claude-pkm

All 13 skills in this repo
  • Daily Notes Workflow

    ballred/obsidian-claude-pkm

    Creates today's daily note in an Obsidian vault and guides morning, midday and evening routines for planning, task review and reflection.

    1.9k GitHub stars~2k tokensUpdated 7 mo ago
    Auto-check passed
  • Cascading Goal Tracker

    ballred/obsidian-claude-pkm

    Tracks three-year, yearly, monthly, and weekly goals in linked Markdown files, calculating completion percentages and flagging stalled goals.

    1.9k GitHub stars~1.5k tokensUpdated 7 mo ago
    Auto-check passed
  • Obsidian Vault Operations

    ballred/obsidian-claude-pkm

    Reads, creates and edits notes in an Obsidian vault while preserving wiki-links, YAML frontmatter, tags and template variables.

    1.9k GitHub stars~652 tokensUpdated 7 mo ago
    Auto-check passed
  • Obsidian Project Tracker

    ballred/obsidian-claude-pkm

    Creates, tracks and archives projects linked to yearly goals in an Obsidian vault, with a status dashboard and a CLAUDE.md context file for each project.

    1.9k GitHub stars~1.1k tokensUpdated 7 mo ago
    Auto-check: notes
  • Push

    ballred/obsidian-claude-pkm

    Commit and push vault changes to Git with smart commit messages.

    1.9k GitHub starsUsed in 1 repo~745 tokens
    Auto-check: notes
  • Obsidian PKM Vault Upgrade

    ballred/obsidian-claude-pkm

    Updates an obsidian-claude-pkm vault's system files to the latest version, with a backup, per-file diff review and no changes to your own notes.

    1.9k GitHub stars~1.1k tokensUpdated 7 mo ago
    Auto-check: notes

Works with

Questions about Obsidian Vault Adoption

What does Obsidian Vault Adoption do?

Scans an existing Obsidian vault, maps its folders to PKM roles with your confirmation and generates configuration for the Claude PKM system without a template. Run from the root of your vault, the skill installs the Claude PKM system onto a vault you already have, keeping your folder structure.md` files in subfolders.

When should I use Obsidian Vault Adoption?

Obsidian Vault Adoption fits situations like: adding the Claude PKM system to a vault you already use; keeping your current folder structure instead of starting from a template; detecting whether a vault follows PARA, Zettelkasten or another method.

How do I install Obsidian Vault Adoption in Claude Code?

Run `npx skills add ballred/obsidian-claude-pkm --skill adopt -a claude-code`. Or copy the skill folder (vault-template/.claude/skills/adopt in ballred/obsidian-claude-pkm) into .claude/skills/adopt in your project. Claude Code loads it when a task matches its description.

How do I install Obsidian Vault Adoption in Codex?

Run `npx skills add ballred/obsidian-claude-pkm --skill adopt -a codex`. Or copy the skill folder (vault-template/.claude/skills/adopt in ballred/obsidian-claude-pkm) into .agents/skills/adopt in your project. Codex loads it when a task matches its description.

Can I use Obsidian Vault Adoption in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ballred/obsidian-claude-pkm --skill adopt -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/adopt, .gemini/skills/adopt, .github/skills/adopt and .opencode/skills/adopt in your project.

What does Obsidian Vault Adoption need to run?

Going by SKILL.md and its folder, Obsidian Vault Adoption needs the command-line tools its instructions call (vault). Our summary lists: An existing Obsidian vault, with the skill run from its root. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash, AskUserQuestion.

Does Obsidian Vault Adoption access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Obsidian Vault Adoption safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Obsidian Vault Adoption use?

Obsidian Vault Adoption is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Obsidian Vault Adoption use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Obsidian Vault Adoption?

Skills that share tags, products or a category with Obsidian Vault Adoption: Obsidian Canvas Boards (AgriciDaniel/claude-obsidian, 15k stars), Obsidian Wiki Log Fold (AgriciDaniel/claude-obsidian, 15k stars), Obsidian Bases Editor (AgriciDaniel/claude-obsidian, 15k stars) and My LLM Wiki (MartinLwx/dotfiles, 140 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Obsidian Vault Adoption?

ballred (a GitHub user) maintains it in ballred/obsidian-claude-pkm, which has 1,876 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on February 18, 2026.

Source: ballred/obsidian-claude-pkm on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.