{"_id":"@021.is/spine","_rev":"2-eeac1323f28fd3be5ad9700185b5f3e2","name":"@021.is/spine","dist-tags":{"latest":"0.4.3"},"versions":{"0.4.0":{"name":"@021.is/spine","version":"0.4.0","license":"MIT","_id":"@021.is/spine@0.4.0","maintainers":[{"name":"edvone","email":"edvard@edvone.dev"}],"homepage":"https://github.com/021is/spine-ts#readme","bugs":{"url":"https://github.com/021is/spine-ts/issues"},"bin":{"spine":"dist/bin.js"},"dist":{"shasum":"ecddac949da212aff0067e41b3a5af33cbcb3df7","tarball":"https://registry.npmjs.org/@021.is/spine/-/spine-0.4.0.tgz","fileCount":7,"integrity":"sha512-qG68emlo0BEwJGyLOAjOnqXf66k5MjdjlzebsiqluVN5L/xdQzRhb+tijNAby3zTbW2lvtO2aK3NGYJM4+/QkA==","signatures":[{"sig":"MEUCIQCAg8/n5/ppF7/uR/JlrfwY0Em3BgbmAYR1kRLh3dQAjwIgTWtYsVufrFwxL5cpBvqEGiharEND//zzPCaAbEfZGnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27846},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"e4434c6f59db8f586e0f05ffdb3b88a96e68e67b","scripts":{"build":"tsup src/index.ts src/bin.ts --format esm --dts --clean","typecheck":"tsc --noEmit"},"_npmUser":{"name":"edvone","email":"edvard@edvone.dev"},"repository":{"url":"git+https://github.com/021is/spine-ts.git","type":"git","directory":"packages/cli"},"_npmVersion":"10.9.4","description":"Spine CLI: scaffold 021-shaped projects (spine new), add Spine features to existing repos (spine add), audit (spine doctor). Enforces STRUCTURE.md.","directories":{},"_nodeVersion":"22.22.0","dependencies":{"cac":"^6.7.14","kleur":"^4.1.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/spine_0.4.0_1779981939175_0.4140979021894371","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@021.is/spine","version":"0.4.3","license":"MIT","description":"Spine CLI: scaffold 021-shaped projects (spine new), add Spine features to existing repos (spine add), audit (spine doctor). Enforces STRUCTURE.md.","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"spine":"dist/bin.js"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsup src/index.ts src/bin.ts --format esm --dts --clean","typecheck":"tsc --noEmit"},"dependencies":{"cac":"^6.7.14","kleur":"^4.1.5"},"repository":{"type":"git","url":"git+https://github.com/021is/spine-ts.git","directory":"packages/cli"},"publishConfig":{"access":"public"},"_id":"@021.is/spine@0.4.3","gitHead":"b9f9333776fa55686cc2feb05f851aa6000b0e05","bugs":{"url":"https://github.com/021is/spine-ts/issues"},"homepage":"https://github.com/021is/spine-ts#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-Cqcjgbi1lwFMseWpDIc8WHu++nvUVn+FdBUfkqKP5Qj/81zZk2RIcsKFWexyf/bRhXW6oOyEe3Ny1XPwwNysVA==","shasum":"bfb301871a1b589a23d33eebec69fd99f8cd16ec","tarball":"https://registry.npmjs.org/@021.is/spine/-/spine-0.4.3.tgz","fileCount":8,"unpackedSize":29318,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDmt3+2Ut6rjKqpY4mLLMvewVUKEQQCweVyv7/DlmnOQAIgZrvJl1aNS9RclV9ZHlyZx2GFLiRqSCyq1DM+4rm6BWI="}]},"_npmUser":{"name":"edvone","email":"edvard@edvone.dev"},"directories":{},"maintainers":[{"name":"edvone","email":"edvard@edvone.dev"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/spine_0.4.3_1779995230493_0.22338542583414878"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-28T15:25:39.021Z","modified":"2026-05-28T19:07:10.747Z","0.4.0":"2026-05-28T15:25:39.339Z","0.4.3":"2026-05-28T19:07:10.632Z"},"bugs":{"url":"https://github.com/021is/spine-ts/issues"},"license":"MIT","homepage":"https://github.com/021is/spine-ts#readme","repository":{"type":"git","url":"git+https://github.com/021is/spine-ts.git","directory":"packages/cli"},"description":"Spine CLI: scaffold 021-shaped projects (spine new), add Spine features to existing repos (spine add), audit (spine doctor). Enforces STRUCTURE.md.","maintainers":[{"name":"edvone","email":"edvard@edvone.dev"}],"readme":"# @021.is/spine\n\nCLI for scaffolding 021-shaped projects and auditing existing ones.\n\n## Install\n\n```bash\nbun add -g @021.is/spine\n# or\nnpx @021.is/spine ...\n```\n\n## Commands\n\n### `spine new <name>`\n\nScaffold a fresh Next.js app following the [Spine folder doctrine](../../STRUCTURE.md). Creates 19 files: full feature-folder skeleton + one example feature + Vitest/Playwright config + Prisma stub + Biome config + AGENTS.md + CLAUDE.md.\n\n```bash\nspine new my-app\ncd my-app\nbun install\nbun run test\n```\n\n### `spine doctor`\n\nAudit an existing repo against [STRUCTURE.md](../../STRUCTURE.md). Lists every error + warning + actionable hint.\n\n```bash\nspine doctor\n# Type: next-app\n# ✗ [no-vitest] vitest not installed.\n#     → bun add -d vitest @vitest/coverage-v8\n# ✗ [missing-spine-errors] @021.is/spine-errors not installed.\n#     → Required across every product. Run: bun add @021.is/spine-errors\n# ...\n```\n\nExit code 1 on any error. Use as a pre-merge sanity check or in CI.\n\n## Roadmap (not yet shipped)\n\nThese ideas live as GitHub issues; the CLI currently only ships `new` + `doctor`. PRs welcome.\n\n- `spine add feature <name>` — scaffold a feature folder skeleton inside an existing repo\n- `spine add testing` / `spine add auth` — install a Spine package + wire boilerplate\n- `spine upgrade` — bump all `@021.is/spine-*` to latest in lockstep\n","readmeFilename":"README.md"}