Install
$ agentstack add skill-nodewarrior-spine-spine-init ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Spine Init — Vault Setup Wizard
Initialize a new Spine Architecture vault, or adopt an existing Obsidian vault into the Spine conventions.
Vault Path Resolution
Spine uses a config chain to find the vault:
$SPINE_VAULT_PATHenvironment variable~/.spine/config.json→{ "vaultPath": "..." }- Default:
~/Documents/SpineVault/
Step 1: Determine Mode
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:
- If yes → Adopt mode
- If no → Fresh vault mode
Step 2a: Fresh Vault Mode
- Create the vault root directory at the chosen path
- Ask the user: "Enable Tier 3 autonomous mode?"
Explain briefly: "Tier 3 adds session-start scanning, silent commit tracking, and batch capture at session end. You can change this anytime in ~/.spine/config.json."
- If yes →
tier3: true - If no (default) →
tier3: false
- Create
~/.spine/config.json:
``json { "vaultPath": "/absolute/path/to/vault", "tier3": false } ``
- Create
.obsidian/graph.jsonwith color groups:
``json { "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 } ``
- Write
Spine Architecture.mdat the vault root:
```markdown --- 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]]
```
- Detect the current repo name from
basename $(git remote get-url origin 2>/dev/null) .gitor the current directory name - Create the first repo folder:
{vault}/{repo}/ - Ask the user: "What's the first feature you'd like to track?"
- Create the feature folder and spine note using the template:
```markdown --- 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 ```
Step 2b: Adopt Mode
- Create
~/.spine/config.jsonpointing to the existing vault - Scan the vault structure:
- Find all repo folders (directories containing feature subdirectories)
- Find all spine notes (files matching
{Feature}.mdat the feature folder level) - Find all doc files and classify by naming prefix
- Check for
.obsidian/graph.json— if missing or missing color groups, create/patch it - Validate conventions:
- Flag docs missing
type/*frontmatter tags - Flag spine notes with missing wikilinks to existing docs
- Flag docs not linked from any spine note
- Report findings:
``` Adopted 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}
```
- Do NOT move, rename, or delete anything — adopt is read-only + additive
Step 3: Next Steps
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
Output Contract
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) — includerecovery_hint
Mode: 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.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Nodewarrior
- Source: Nodewarrior/spine
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.