From spine
Initializes a new Obsidian vault for Spine Architecture or adopts an existing one, creating structure, tag-based graph color config, and global config file. Run once per vault.
npx claudepluginhub nodewarrior/spine --plugin spineThis skill uses the workspace's default tool permissions.
Initialize a new Spine Architecture vault, or adopt an existing Obsidian vault into the Spine conventions.
Initializes any folder as a Bedrock-powered Obsidian vault by creating entity directories, copying templates, configuring language/domain taxonomy, scaffolding example entities, and checking dependencies. Use for 'bedrock setup' or new vault bootstrapping.
Audits Spine Architecture Obsidian vault for coverage gaps via git history, stale docs, duplicates, spine note integrity, tag consistency, and Claude memory sync. Maintains vault hygiene.
Manages Obsidian vault structure by organizing documents into service and work-log layers, adding files with auto-categorization and metadata, processing meeting notes, running health checks, and committing via Git.
Share bugs, ideas, or general feedback.
Initialize a new Spine Architecture vault, or adopt an existing Obsidian vault into the Spine conventions.
Spine uses a config chain to find the vault:
$SPINE_VAULT_PATH environment variable~/.spine/config.json → { "vaultPath": "..." }~/Documents/SpineVault/If $ARGUMENTS is provided, use it as the vault path. Otherwise, check the config chain for an existing path. If none found, ask the user.
Check if the path already contains an Obsidian vault (.obsidian/ directory) or markdown files:
~/.spine/config.json."
tier3: truetier3: false~/.spine/config.json:
{ "vaultPath": "/absolute/path/to/vault", "tier3": false }
.obsidian/graph.json with color groups:
{
"collapse-filter": true,
"search": "",
"showTags": false,
"showAttachments": false,
"hideUnresolved": false,
"showOrphans": true,
"collapse-color-groups": false,
"colorGroups": [
{ "query": "tag:#type/spine", "color": { "a": 1, "rgb": 3381759 } },
{ "query": "tag:#type/fix", "color": { "a": 1, "rgb": 14495282 } },
{ "query": "tag:#type/feature", "color": { "a": 1, "rgb": 4439473 } },
{ "query": "tag:#type/architecture", "color": { "a": 1, "rgb": 10170623 } },
{ "query": "tag:#type/plan", "color": { "a": 1, "rgb": 16750848 } },
{ "query": "tag:#type/decision", "color": { "a": 1, "rgb": 16776960 } },
{ "query": "tag:#type/meta", "color": { "a": 1, "rgb": 10066329 } }
],
"collapse-display": true,
"showArrow": false,
"textFadeMultiplier": 0,
"nodeSizeMultiplier": 1,
"lineSizeMultiplier": 1,
"collapse-forces": true,
"centerStrength": 0.5,
"repelStrength": 10,
"linkStrength": 1,
"linkDistance": 250,
"scale": 1.6,
"close": true
}
Spine Architecture.md at the vault root:
---
tags:
- type/meta
---
# Spine Architecture
A knowledge management system that bridges Claude Code's memory with this Obsidian vault, organizing project knowledge as a navigable graph tree.
## Structure
{vault}/
└─ {repo}/
└─ {feature}/
├─ {Feature}.md ← spine note (overview, wikilinks to all children)
├─ Fix - {description}.md
├─ Feature - {description}.md
├─ Architecture - {description}.md
├─ Plan - {description}.md
└─ Decision - {description}.md
## Navigation
Claude Memory → Feature Signpost → Spine Note → Specific Doc
## Conventions
- **Repo-first** hierarchy separates concerns across codebases
- **Feature-first** grouping within each repo keeps related knowledge together
- **Spine notes** are the entry point — read the spine to understand a feature before diving in
- **Naming convention** (`Fix -`, `Feature -`, `Architecture -`, `Plan -`, `Decision -`) keeps the tree shallow
- **Type tags** (`type/spine`, `type/fix`, `type/feature`, `type/architecture`, `type/plan`, `type/decision`) drive graph coloring
- **Cross-repo features** link to each other via `[[wikilinks]]`
basename $(git remote get-url origin 2>/dev/null) .git or the current directory name{vault}/{repo}/---
title: {Feature} — {repo}
tags:
- {repo}
- {feature-kebab-case}
- type/spine
---
# {Feature} ({repo})
{Brief description — ask user or derive from context}
## Fixes
## Features
## Architecture
## Plans
## Decisions
~/.spine/config.json pointing to the existing vault{Feature}.md at the feature folder level).obsidian/graph.json — if missing or missing color groups, create/patch ittype/* frontmatter tagsAdopted existing vault at {path}
Found: {n} repos, {n} features, {n} docs
- {n} docs with correct type tags
- {n} docs missing type tags (run /spine-health to fix)
- Graph colors: {configured/added}
Print:
Spine vault ready at {path}
Next steps:
1. Open {path} in Obsidian (File → Open Vault → choose folder)
2. Press Cmd+G to see the color-coded knowledge graph
3. Use /spine-capture after completing work to add docs
4. Use /spine-health periodically to audit vault health
5. (Optional) Add the status line segment — see docs/status-line.md
After initialization completes, emit a structured observation block.
spine_init_result:
status: success | partial | error
mode: fresh | adopt
summary: "Fresh vault created at ~/Documents/SpineVault with 1 repo, 1 feature"
created:
- { type: "directory", path: "~/Documents/SpineVault/" }
- { type: "directory", path: "~/Documents/SpineVault/spine/" }
- { type: "config", path: "~/.spine/config.json" }
- { type: "graph", path: ".obsidian/graph.json" }
- { type: "meta", path: "Spine Architecture.md" }
- { type: "spine_note", path: "spine/Tier 3 Curator/Tier 3 Curator.md" }
adopted:
repos: 0
features: 0
docs: 0
tags_missing: 0
next_actions:
- { action: "open Obsidian", path: "~/Documents/SpineVault/" }
- { action: "/spine-capture", reason: "start documenting current work" }
recovery_hint: null
Status values:
success — vault fully initialized, all files createdpartial — vault created but some steps skipped (e.g., no git repo detected, user skipped feature creation)error — init failed (permissions, disk space) — include recovery_hintMode: fresh when creating a new vault, adopt when integrating an existing Obsidian vault. The adopted fields are only populated in adopt mode; created is only populated in fresh mode.