Init
Use to bootstrap the .spine/ project-memory store in a repo before using the other skills. Detects the stack and seeds context.md, conventions.md, and journal.md. Run once per repo.From its SKILL.md
npx -y skills add AndrewTtofi/spine --skill initAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.0 KB, as published. Nobody here has run it
init — bootstrap the Spine
The Spine (.spine/) is the shared memory every andreas-skill reads and writes.
This skill creates it.
Steps
- Check for an existing Spine. If
.spine/already exists, report what's there and ask whether to refresh specific files rather than overwriting. - Detect the stack. Inspect manifests (
package.json,pyproject.toml,go.mod,Cargo.toml, etc.) and config to infer language, framework, test runner, and the install/test/typecheck/build commands. - Create the structure:
.spine/context.md.spine/conventions.md.spine/journal.md.spine/decisions/(empty, with a.gitkeep) Seed each from this skill'stemplates/, filling in detected values. Leave<placeholders>only where you genuinely lack information, and flag them.
- Install the contracting gate. This makes
alignfire for every non-trivial request in this repo — the gate ships with the Spine, not just with the plugin. Two artifacts, both merged into what already exists (never clobber):.claude/settings.json— merge in theUserPromptSubmithook from templates/settings.gate.json. It self-gates on.spine/existing, so it stays silent in a checkout where the Spine was removed. If the file already has ahooks.UserPromptSubmitarray, append this entry; don't duplicate it if an identical Spine-gate command is already present.CLAUDE.md— append the block from templates/claude-gate.md (createCLAUDE.mdif absent). It's wrapped in opening/closingspine:contracting-gatemarkers; if the opening marker is already present anywhere in the file, the block is installed — leave it, don't add a second copy.
- Confirm with the user. Show the seeded
conventions.mdcommands and thecontext.mdarchitecture map; correct anything wrong before finishing. Mention that the contracting gate is now active. - Suggest committing
.spine/,.claude/settings.json, andCLAUDE.mdso the memory and the gate are shared with the team. - Point to the dashboard. Tell the user they can view the Spine anytime in
a browser with
npx spine-dashboard(read-only).
Spine I/O
- Writes:
context.md,conventions.md,journal.md,decisions/. - Also writes (outside
.spine/):.claude/settings.json(contracting-gate hook),CLAUDE.md(contracting-gate instruction).
Notes
- Never invent commands you haven't verified exist in the manifest/scripts.
- The Spine is for durable knowledge, not transient chatter.
- Merge, never overwrite,
.claude/settings.jsonandCLAUDE.md— they routinely hold unrelated config the user cares about.