---
name: create_obsidian_vault
kind: function
lang: py
domain: obsidian
version: "1.0.0"
purity: impure
signature: "create_obsidian_vault(parent_dir: str, name: str) -> str"
description: "Crea un vault de Obsidian nuevo: parent_dir/name/ + parent_dir/name/.obsidian/app.json con {} (config minima valida). Lanza error si el vault ya existe (ya tiene .obsidian/). Devuelve el path absoluto del vault."
tags: [obsidian, vault, create, crud, filesystem]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: ["json", "os"]
params:
  - name: parent_dir
    desc: "directorio bajo el cual se crea la carpeta del vault; se crea si no existe"
  - name: name
    desc: "nombre de la carpeta del nuevo vault (un solo segmento de path, sin separadores)"
output: "path absoluto del directorio del vault creado"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/obsidian/create_obsidian_vault.py"
---

## Ejemplo

```python
from obsidian import create_obsidian_vault

path = create_obsidian_vault("/home/enmanuel/Obsidian", "Proyectos2026")
print(path)  # /home/enmanuel/Obsidian/Proyectos2026
# Crea ademas /home/enmanuel/Obsidian/Proyectos2026/.obsidian/app.json -> {}
```

## Cuando usarla

Cuando necesites crear un vault de Obsidian listo para abrir desde cero (scaffolding de un workspace nuevo, automatizar la creacion de vaults por proyecto) sin pasar por la GUI de Obsidian.

## Gotchas

- **Impura**: escribe en el filesystem. Crea `parent_dir/name/.obsidian/` y un `app.json` con `{}` (config minima que Obsidian reconoce como vault valido).
- **No sobrescribe**: si el destino ya parece un vault (ya tiene `.obsidian/`) lanza `FileExistsError`; nunca pisa un vault existente.
- **Nombre validado**: lanza `ValueError` si `name` es vacio o contiene un separador de path (`/`), para evitar crear estructuras anidadas accidentales.
- Lo que hace vault a una carpeta es la presencia de `.obsidian/`; este es el mismo criterio que usa `list_obsidian_vaults` para descubrir vaults, asi que un vault recien creado aparece de inmediato en ese listado.
- `parent_dir` se crea si no existe (`makedirs`), de modo que se puede crear un vault en una ruta nueva en una sola llamada.
