Specification
Skill ID
ar9av/obsidian-wiki/wiki-setup
Publisher
ar9av
Repository
obsidian-wiki
Installs
0
Files
1
Synced
Sep 23, 2026
How to use it

Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.

ar9av/obsidian-wiki/wiki-setupInstalls these files
  • SKILL.md

What this skill tells the agent

Obsidian Setup — Vault Initialization

You are setting up a new Obsidian wiki vault (or repairing an existing one).

Step 1: Create .env

If .env doesn't exist, create it from .env.example. Ask the user for:

  1. Where should the vault live? → OBSIDIAN_VAULT_PATH
  • Default: ~/Documents/obsidian-wiki-vault
  • Must be an absolute path (after expansion)
  1. Where are your source documents? → OBSIDIAN_SOURCES_DIR
  • Can be multiple paths, comma-separated
  • Default: ~/Documents
  • Local git repo clones (public or private, any host) can be listed here too — clone the repo locally first, then add its path. See "Ingesting Git Repositories" in wiki-ingest/SKILL.md for how repo sources are handled.
  1. Want to import Claude history? → CLAUDE_HISTORY_PATH
  • Default: auto-discovers from ~/.claude
  • Set explicitly if Claude data is elsewhere
  1. Have QMD installed? → QMD_WIKI_COLLECTION / QMD_PAPERS_COLLECTION / QMD_TRANSPORT
  • Optional. Enables semantic search in wiki-query and source discovery in wiki-ingest.
  • Default to QMD_TRANSPORT=mcp unless the user wants the agent to call the local qmd CLI directly.
  • If using CLI mode, set QMD_CLI_SEARCH_MODE=quality by default; suggest balanced if reranking is too slow.
  • If unsure, skip for now — both skills fall back to Grep automatically.
  • Install instructions: see .env.example (QMD section).
  • If `QMD_WIKI_COLLECTION` is set, verify the collection excludes `_raw/`. The wiki collection and papers collection must stay disjoint — wiki-query cites them as separate layers (compiled knowledge vs. raw staging), and OBSIDIAN_VAULT_PATH contains _raw/, so a plain qmd collection add <vault> silently merges the two. Read ~/.config/qmd/index.yml, find the entry for $QMD_WIKI_COLLECTION, and check its ignore list includes _raw/** (and ideally log.md, which has no semantic value). If the collection doesn't exist yet, create it (qmd collection add "$OBSIDIAN_VAULT_PATH" --name <collection-name>), then add the ignore block to index.yml by hand — qmd has no --ignore flag and refuses a second collection add on a path that already has one, so editing the YAML is the only way to scope it. Run qmd update after editing. If the collection already exists without the ignore block, tell the user their wiki collection is indexing _raw/ (including _raw/_archived/ drafts left behind by wiki-ingest) and offer to add the ignore block and re-run qmd update.
  1. Token budget warning threshold? → WIKI_TOKEN_WARN_THRESHOLD
  • Default: 100000 (warn when full-wiki read would cost > 100K tokens)
  • Set to 0 to disable the warning entirely
  • wiki-status shows a token footprint table and emits this warning automatically
  1. Enable staged writes? → WIKI_STAGED_WRITES
  • Default: unset / false (pages written directly to their final location)
  • Set to true for team wikis, high-stakes domains, or any vault where the human wants final say on every LLM-written page
  • When enabled: all new/updated pages land in _staging/ first; run /wiki-stage-commit to review and promote them
  • wiki-status shows a "Staged writes pending" count when files are waiting

After resolving config, assign the global config directory with the exact obsidian_wiki_config_dir algorithm from the Config Resolution Protocol in .skills/llm-wiki/SKILL.md. Create the shared writing profile only when it does not already exist. Preserve an existing $GLOBAL_CONFIG_DIR/WRITING.md; never overwrite it and do not ask additional writing-style questions.

Use OBSIDIAN_WIKI_REPO when it was loaded from config. When it is absent, derive the absolute repository/data root from this loaded skill's absolute path, distinguishing the packaged <root>/skills/wiki-setup/SKILL.md layout from the source <root>/.skills/wiki-setup/SKILL.md layout. Then check both canonical template layouts:

  • Packaged install: <root>/skills/llm-wiki/references/WRITING.md
  • Source checkout: <root>/.skills/llm-wiki/references/WRITING.md
GLOBAL_CONFIG_DIR="$(obsidian_wiki_config_dir)"
mkdir -p "$GLOBAL_CONFIG_DIR"

SKILL_FILE="<absolute path of this loaded wiki-setup/SKILL.md>"
SKILL_DIR="$(cd "$(dirname "$SKILL_FILE")" && pwd)"
if [ -n "${OBSIDIAN_WIKI_REPO:-}" ]; then
  WIKI_ROOT="${OBSIDIAN_WIKI_REPO%/}"
else
  case "$SKILL_DIR" in
    */.skills/wiki-setup) WIKI_ROOT="${SKILL_DIR%/.skills/wiki-setup}" ;;
    */skills/wiki-setup) WIKI_ROOT="${SKILL_DIR%/skills/wiki-setup}" ;;
    *) echo "Cannot derive writing-profile template root from $SKILL_DIR" >&2; exit 1 ;;
  esac
fi

WRITING_TEMPLATE=""
for candidate in \
  "$WIKI_ROOT/skills/llm-wiki/references/WRITING.md" \
  "$WIKI_ROOT/.skills/llm-wiki/references/WRITING.md"
do
  if [ -f "$candidate" ]; then
    WRITING_TEMPLATE="$candidate"
    break
  fi
done
[ -n "$WRITING_TEMPLATE" ] || { echo "Writing profile template not found under $WIKI_ROOT" >&2; exit 1; }

WRITING_PROFILE="$GLOBAL_CONFIG_DIR/WRITING.md"
if [ ! -e "$WRITING_PROFILE" ]; then
  cp "$WRITING_TEMPLATE" "$WRITING_PROFILE"
fi

Step 2: Create Vault Directory Structure

mkdir -p "$OBSIDIAN_VAULT_PATH"/{concepts,entities,skills,references,synthesis,journal,projects,_archives,_raw,_staging,.obsidian}
  • .obsidian/ — Obsidian's own config. Creates vault recognition.
  • projects/ — Per-project knowledge (populated during ingest).
  • _archives/ — Stores wiki snapshots for rebuild/restore operations.
  • _raw/ — Staging area for unprocessed drafts. Drop rough notes here; wiki-ingest will promote them to proper wiki pages and move the originals into _raw/_archived/ (created on first use).
  • _staging/ — Review queue for LLM-written pages when WIKI_STAGED_WRITES=true. Pages here are not visible in Obsidian's graph until promoted via /wiki-stage-commit.

Step 3: Create Special Files

index.md

---
title: Wiki Index
---

# Wiki Index

*This index is automatically maintained. Last updated: TIMESTAMP*

## Concepts

*No pages yet. Use `wiki-ingest` to add your first source.*

## Entities

## Skills

## References

## Synthesis

## Journal

log.md

---
title: Wiki Log
---

# Wiki Log

- [TIMESTAMP] INIT vault_path="OBSIDIAN_VAULT_PATH" categories=concepts,entities,skills,references,synthesis,journal

hot.md

---
title: Hot Cache
updated: TIMESTAMP
---

# Hot Cache

*A ~500-word semantic snapshot of recent activity. Updated after every major write operation.*

## Recent Activity

- [TIMESTAMP] INIT — vault created at OBSIDIAN_VAULT_PATH

## Active Threads

*None yet — start ingesting sources to populate.*

## Key Takeaways

*None yet.*

## Flagged Contradictions

*None yet.*

.manifest.json

Create an empty manifest so ingest skills have a tracking file to append to and obsidian-wiki doctor reports the vault as complete (it treats .manifest.json as a required core file):

printf '{}\n' > "$OBSIDIAN_VAULT_PATH/.manifest.json"

Step 4: Create .obsidian Configuration

Create minimal Obsidian config for a good out-of-box experience:

.obsidian/app.json

{
  "strictLineBreaks": false,
  "showFrontmatter": false,
  "defaultViewMode": "preview",
  "livePreview": true
}

.obsidian/appearance.json

{
  "baseFontSize": 16
}

Step 5: Recommend Obsidian Plugins

Tell the user about these recommended community plugins (they install manually):

  1. Dataview — Query page metadata, create dynamic tables. Essential for a wiki.
  2. Graph Analysis — Enhanced graph view for exploring connections.
  3. Templater — If they want to create pages manually using templates.
  4. Obsidian Git — Auto-backup the vault to a git repo.

Step 6: Verify Setup

Run a quick sanity check:

Use this skill in a project

Open any RiverX project, search the Skills panel for ar9av/obsidian-wiki/wiki-setup, and install it in one click.

Use this skill