feat: ship workspace.json + setup-vault.sh for zero-config user experience

Users who clone the repo now get the full setup automatically:

- workspace.json tracked in git (removed from .gitignore)
  - Opens with Wiki Map canvas as default view
  - Graph view pre-configured: path:wiki filter, 5 color groups, proper physics
  - Obsidian reads this on first open before any state reset occurs

- bin/setup-vault.sh — one-time setup script
  - Writes correct graph.json (filter + colors)
  - Writes app.json (excludes plugin dirs from graph)
  - Writes appearance.json (enables vault-colors CSS)
  - Prints clear next-step instructions
  - Usage: bash bin/setup-vault.sh

- README updated: Option 1 now shows clone + setup.sh as recommended path
  - Clear explanation of what the script does
  - 2-minute setup flow vs manual configuration

Result: users clone, run setup.sh, open Obsidian — done.
Graph shows only wiki pages, color-coded, no noise.
This commit is contained in:
Daniel
2026-04-07 12:33:01 +03:00
parent 5cf93c9913
commit f597342479
5 changed files with 339 additions and 14 deletions

85
bin/setup-vault.sh Executable file
View File

@@ -0,0 +1,85 @@
#!/usr/bin/env bash
# cosmic-brain vault setup script
# Run this ONCE before opening Obsidian for the first time.
# Usage: bash bin/setup-vault.sh [optional: /path/to/vault]
# Default: uses the directory where this script lives (the vault root)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
VAULT="${1:-$(dirname "$SCRIPT_DIR")}"
OBSIDIAN="$VAULT/.obsidian"
echo "Setting up cosmic-brain vault at: $VAULT"
# ── 1. Create directories ─────────────────────────────────────────────────────
mkdir -p "$OBSIDIAN/snippets"
mkdir -p "$VAULT/.raw"
mkdir -p "$VAULT/wiki/concepts" "$VAULT/wiki/entities" "$VAULT/wiki/sources" "$VAULT/wiki/meta"
mkdir -p "$VAULT/_templates"
# ── 2. Write graph.json ───────────────────────────────────────────────────────
cat > "$OBSIDIAN/graph.json" << 'EOF'
{
"collapse-filter": false,
"search": "path:wiki",
"showTags": false,
"showAttachments": false,
"hideUnresolved": true,
"showOrphans": false,
"collapse-color-groups": false,
"colorGroups": [
{ "query": "path:wiki/entities", "color": { "a": 1, "rgb": 12945088 } },
{ "query": "path:wiki/concepts", "color": { "a": 1, "rgb": 5227007 } },
{ "query": "path:wiki/sources", "color": { "a": 1, "rgb": 6986069 } },
{ "query": "path:wiki/meta", "color": { "a": 1, "rgb": 5676246 } },
{ "query": "path:wiki", "color": { "a": 1, "rgb": 5676246 } }
],
"showArrow": true,
"textFadeMultiplier": -1,
"nodeSizeMultiplier": 1.8,
"lineSizeMultiplier": 1.2,
"centerStrength": 0.5,
"repelStrength": 30,
"linkStrength": 1.5,
"linkDistance": 120,
"scale": 1.0
}
EOF
# ── 3. Write app.json (excluded files) ───────────────────────────────────────
cat > "$OBSIDIAN/app.json" << 'EOF'
{
"userIgnoreFilters": [
"agents/",
"commands/",
"hooks/",
"skills/",
"_templates/",
"README.md",
"CLAUDE.md",
"WIKI.md",
"Welcome.md"
]
}
EOF
# ── 4. Write appearance.json (enable CSS snippet) ────────────────────────────
cat > "$OBSIDIAN/appearance.json" << 'EOF'
{
"enabledCssSnippets": ["vault-colors"]
}
EOF
echo ""
echo "Setup complete."
echo ""
echo "Next steps:"
echo " 1. Open Obsidian"
echo " 2. Manage Vaults → Open folder as vault → select: $VAULT"
echo " 3. Install community plugins: Dataview, Templater, Obsidian Git"
echo " 4. Type /wiki in Claude Code to scaffold your knowledge base"
echo ""
echo "Graph view will show only wiki pages, color-coded by type."
echo "If colors reset after closing Obsidian: open Graph settings → Color groups"
echo "and re-add them once. After that, they persist permanently."