{"_id":"@appswithlove/sdd","_rev":"18-0cfa1b674766719d8a0d94eecce5dde3","name":"@appswithlove/sdd","dist-tags":{"latest":"0.7.0"},"versions":{"0.1.0":{"name":"@appswithlove/sdd","version":"0.1.0","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.1.0","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"6f8440f5b563ec50950c04d0debb0c8aaded4e85","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.1.0.tgz","fileCount":68,"integrity":"sha512-IG0ydxDWJGxKgcbkQFc5LTV6yx9/HwtYnAVQmo+BVablYAv0mJ09hjtHJMMcXS4pEDJ+32ah6CToIHwUl8xdtA==","signatures":[{"sig":"MEQCIBgg2DbHio8+mTbTmjpIAJHDzOEQUJ3+D5wAU/lHXsR3AiBXu606FfeQ2lqX6qgfKYThxRGCtH3QC+TpY1qUnZ1utw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":231678},"engines":{"node":">=18"},"gitHead":"b0294c2b5e069c2327123b639ee5d4134939415a","scripts":{"test":"node test/smoke.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.1.0_1780410224289_0.4349158857729405","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@appswithlove/sdd","version":"0.1.1","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.1.1","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"36632ede49ceb88e75e72a12fd6dadb89e1db129","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.1.1.tgz","fileCount":68,"integrity":"sha512-0+uxbMnvVSHSReF/5udzwLR1m/seKyX4sUV1CLd3A8dPpoGzFg5SLlm4g+51wRFx/n5Q8v5P8WTQC3l5qrg1mQ==","signatures":[{"sig":"MEYCIQCXjrq9vMfVNzfmYIFa18C72m543TirsHkiYjPtwRAAggIhAMamftA2acWTlfxsJdE7dq3D4qJWfARwBKqFsDMq04jP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":234279},"engines":{"node":">=18"},"gitHead":"e83aa48cf8b094b1ede09b80850fee6f921e9239","scripts":{"test":"node test/smoke.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.1.1_1780433715511_0.6775800890498374","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@appswithlove/sdd","version":"0.1.3","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.1.3","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"49cf336ac536b52778da0d29d793aff57db4296c","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.1.3.tgz","fileCount":71,"integrity":"sha512-o/G08Vt/yK69IM50FiZoXhaTGqA7gg0ZInelP1AsWtahaTf3vUIMKgeaPO2bzzp1/qeQ96vPf0CdhX3Gv71Ilg==","signatures":[{"sig":"MEUCIQD52Cte2td29GcngfPhsvKsbkcAJ6jaOy4Oc2/hunU2YAIgeKLC+BqSFgt0XXYX4c7nDEwNcRXSBtFIKZzT3D3m1Mo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":254976},"engines":{"node":">=18"},"gitHead":"84b2486649315bcb08a4b816d073285dd163d8dc","scripts":{"test":"node test/smoke.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.1.3_1780530747241_0.9121263855503186","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@appswithlove/sdd","version":"0.1.4","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.1.4","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"dc55c330560fc3cfdf8d03cb1da666ff30176531","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.1.4.tgz","fileCount":72,"integrity":"sha512-1oM/bSTu5WdjFoSQeafgyk+dG6qoZACD4zIbCILOKST20XxkWr0RCWrwFrVEMPm2hh/r3M3afbvr/GQpvLRLnw==","signatures":[{"sig":"MEYCIQCF6TPfDoy16y9bZkc/VikRZ+JAqmhUy7WqQ6VObT6QxgIhAIS9jqR4LHPQOwYneCW9o+firKOqImEPsJgib4c/Gd41","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":268683},"engines":{"node":">=18"},"gitHead":"5bd839e70bd270e240c3c02e03ff0df0d9b6fa5f","scripts":{"test":"node test/smoke.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.1.4_1780575913563_0.759220584230905","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@appswithlove/sdd","version":"0.1.5","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.1.5","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"884d476155c2c5674c2c505cc33d397a0d770619","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.1.5.tgz","fileCount":72,"integrity":"sha512-aUHbRrHLmZzrN7iOKtipT3kPs+je4ehRzvGSF36AzGvl0hyiepmsOlKquR+C/R88+TyxXMJOryi4gWUBfVQSzA==","signatures":[{"sig":"MEUCIQCCy7zNU8mSOG6yRbikvqN4IRdoaQs5r0Kpyhm3FyoIoQIgEcjbYPuU0Y9Tu2QWCzndZ/ni4unc3ztmId4gBV+tH70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271001},"engines":{"node":">=18"},"gitHead":"26fdbe7604ff5ebc0f250f5698f42b3bc6f8efbe","scripts":{"test":"node test/smoke.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.1.5_1780929056363_0.0703200229346359","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@appswithlove/sdd","version":"0.1.6","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.1.6","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"0c5cf5597975397b665fccae725e4a8ea5b48aaf","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.1.6.tgz","fileCount":72,"integrity":"sha512-1quvvfXTMmdzyocrklzHEKsAOpADPDyX47rk/tZFoF6aOXYcxcnbkI4UOLwjItzNkmcLPaaaAPw1mVsxONPUhw==","signatures":[{"sig":"MEUCICvRjCONbCzkoXFVeqzpEMs/hpJpp39tnw+s2Xt8MqfPAiEAm6f1IVwS6lW1Fmr9JLhElmlQ6IabPpYvCWqipJ+pGyI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":272687},"engines":{"node":">=18"},"gitHead":"e900b04d80417ade1d48fe7dfcfc8e6b01144c89","scripts":{"test":"node test/smoke.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.1.6_1780934717033_0.8890780566637815","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@appswithlove/sdd","version":"0.2.3","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.2.3","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"6c7afc592b05dc05134862581fc7bb398e51a006","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.2.3.tgz","fileCount":72,"integrity":"sha512-lmYk+Xs/E3uS354p9uVCaduBeL7LVRN0BrxNc93hyU113RgazspAuwpCqNcGC1TyGYossQyRwGzjk2bVrrJDRw==","signatures":[{"sig":"MEUCIGZjYtAH3PiSRMk3MBjfjkqgYFkkczFyu99H82oFlw5PAiEAvEZp0hLC4UlVvLzQlW/M0/EhdOJLoIqRJ5gu/GV4Rwo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":299356},"engines":{"node":">=18"},"gitHead":"c1ffae6626dbad65713bfd1b94a45b981cb6045e","scripts":{"test":"node test/smoke.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.2.3_1784670100308_0.6398925572752288","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@appswithlove/sdd","version":"0.3.0","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.3.0","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"8d5a2524acc723a32bafebf1b7fcdff9174c8e50","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.3.0.tgz","fileCount":83,"integrity":"sha512-MakH67AbO5jh5HRdM587Vvs1XIr4RwLLzPhqulsD7JyY99o/WQj5cqy5lb2uSITkxN58/Pk1pGzXQIOqbt2HoA==","signatures":[{"sig":"MEUCIQCfq1LBg7UpxpeYenr2W2b1nh95myTD+bc+XHJyNI1ocwIgJKxwq11Y6klPj9MEg0sSeKSWAqxQI8+09Vj3fRqGm70=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":319836},"engines":{"node":">=18"},"gitHead":"1b5c499b2cf1f99401d5879275b9ac26a3d037ef","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/staleness-lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.3.0_1784809137467_0.15255339557282732","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@appswithlove/sdd","version":"0.4.0","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.4.0","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"665d6648960d792ea606d6577da178025c162518","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.4.0.tgz","fileCount":85,"integrity":"sha512-a3AbvvNRcYVleCeaMJp4MH8XrYaLc4s7fZsU8qap5Gg6PDK6Diru+DwNeP887p6sswKAnZnYzzCGR1RWF8vzgQ==","signatures":[{"sig":"MEUCIQCf5SMH+QMPfXUvwpnmeqFlI8yxjbkCaDQiUu0zczDS6wIgaMHky9CrEKesOo5k5tX4FEHsgtZ+ciTMTi7AgRXuXD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":363202},"engines":{"node":">=18"},"gitHead":"f4fe922ab3b0567b43020145aba85dc61f4454e0","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/staleness-lint.mjs && node test/sync-pull.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.4.0_1785334445760_0.04822324497869057","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@appswithlove/sdd","version":"0.4.1","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.4.1","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"714e482a3f1670d6cd3a8794ae05bd72f7f272cf","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.4.1.tgz","fileCount":86,"integrity":"sha512-gGP3AbCEKx04JHKJQ/2qtFWs4d6mD/cQJQsnXy9Qxa/7UiDn6fY5xKGIVuA/BFVmdHcocT6gQkex5F1cFHQGEA==","signatures":[{"sig":"MEUCIQDGXsyLLwBgH588Pp1jQkqyMUhMXD0HkzAaMp6CRmBB9gIgLymV2q6zs/+tx7q4tlucCLTzDpKvy+YhYXV/PyOPakA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":398987},"engines":{"node":">=18"},"gitHead":"f4fe922ab3b0567b43020145aba85dc61f4454e0","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/sync-pull.mjs && node test/sync-config.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.4.1_1785338954762_0.4200602130363038","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@appswithlove/sdd","version":"0.4.2","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.4.2","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"6171991b3b0fd6b6e2f5f3852e0f6343f539fffb","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.4.2.tgz","fileCount":86,"integrity":"sha512-zG5KplaeCMRGx0UcKr7pYTi1SHHidJoASplYFWfClZwEkTZfgmidvNUjXR9GHv/BNluglri0v4RaZe5wLNQoLA==","signatures":[{"sig":"MEYCIQDaYc9zTMbORXsuJ0CIb8+pe+eSjZVll7LVp7iZg0wlSwIhAM6kzjqzo6lLtE0D27kXKcUD0exP2Mo61eAyO/yuXBFx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":409972},"engines":{"node":">=18"},"gitHead":"d74c3a4ebec996aa47200f571f4613bb8d933aad","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/sync-pull.mjs && node test/sync-config.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.4.2_1785359996425_0.6322985243254415","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@appswithlove/sdd","version":"0.4.3","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.4.3","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"d3a57b1b963a13b096b3213e56b9f198050b7538","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.4.3.tgz","fileCount":86,"integrity":"sha512-87ueXhoGo6vQSPA9Ig8q9ITNyOTPvMpEVYAoyXcvmyMIVjhdb3WHULZQ3CUeKPCpnGHRPI1ajiTW/0p1/hXdRg==","signatures":[{"sig":"MEYCIQCf4PCXZXEhhxmOTsc9aMJAu6HeVMw8x8nfw97OA1EQxAIhANEQmXljNoJ6GyEx2kaiq2xPVKbIlO/0PUtefV6wkNAJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":430350},"engines":{"node":">=18"},"gitHead":"5983ee56d7e1ecbf2d2a2e502d25849a639c9c28","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/sync-pull.mjs && node test/sync-config.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.4.3_1785403573858_0.19734065773216702","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@appswithlove/sdd","version":"0.4.4","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.4.4","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"c0d10a21a67845e72b87685b5a2c8126f99a47c2","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.4.4.tgz","fileCount":86,"integrity":"sha512-Oc48RO1IHt+luFsxZDZklx8Rw5ik12iR/JqCNPw8a1HY2qTMCDJkqBerEumh3rpcdDraNTT+zhvtfw2qPSRx0w==","signatures":[{"sig":"MEUCIQDHfWp6PXhNszjK4tw2qmLkhjsx+kVcZ1RExp0F/P9gdAIgRKjQUBPPsh9f5CglLq4S6KTibUd4EiCP7xh5mzsWGB8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":431532},"engines":{"node":">=18"},"gitHead":"bac8499f2adb13cde764844d6c957f3340efe2a2","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/sync-pull.mjs && node test/sync-config.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.4.4_1785405469160_0.8090634878736598","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@appswithlove/sdd","version":"0.4.5","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.4.5","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"fb0bce50a4bf87ee127a7614d14700bb954433ee","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.4.5.tgz","fileCount":86,"integrity":"sha512-gU3Fhed74SI3E1p4AIc2pmQ+jtvVX06+4gPg6otdSOC6IoM6aiwAhs4TaJvJUODrF1kqjaJ8sz8uU94pZhCAoA==","signatures":[{"sig":"MEUCIEa0Vpia2LAwK7Qti9suJ2ug/EMIe1oblplWG1jZq5TJAiEA10N3l2CesdL+HL1aH1RmACLs58wgTgzeHIDiwT3j/hI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":432176},"engines":{"node":">=18"},"gitHead":"e2416a1f1914fb5b51b4a971d5666fe887185ba8","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/sync-pull.mjs && node test/sync-config.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, steering, and hooks installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.4.5_1785864406039_0.6423873786863072","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@appswithlove/sdd","version":"0.5.0","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.5.0","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"05a82061df9d3bfe19929b3873e2a32246a1de74","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.5.0.tgz","fileCount":52,"integrity":"sha512-CoZaN8gGRBpy9infeNydW8iGYLOTyPrbRAKVWqyKEeo/iZexGmVB7nslHjU6M+8KP22W8Hva967+ye+8Xm6ajg==","signatures":[{"sig":"MEUCICawGzeorsbgCxcd+RBbZVflagAb5MlJD86FVGAGB6Z0AiEA0v4OUgtwiL8gPb+ROnWjx4rC4zPNZ9w0CfexpK3EJrI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":256721},"engines":{"node":">=18"},"gitHead":"eec5496801f37e21ca2ff11375c833f6407edd72","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills, hooks, and agents installer.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.5.0_1786432475102_0.35198471540752174","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@appswithlove/sdd","version":"0.6.0","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.6.0","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"1c2fe2cc6fff4dca31dc602fc3522ee127a8f796","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.6.0.tgz","fileCount":28,"integrity":"sha512-4pQjSi+b3WaPQtm4H9xVR/n/sdBQjsMx3WJ0CFk9a3+KbWmfHo2vO7tbZViikasEPTdg25yYQiWq08Aij4VvPA==","signatures":[{"sig":"MEUCIFj7ZhVkOUf4ldKmAzZ5k9xzmMpxkxPGxPBpKu1jvSmmAiEAzA4mDSU3Daw3fwqBm1U2Uc+tiYA0b/JdAx9iM2lQ4PA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112427},"engines":{"node":">=18"},"gitHead":"8261aefce4f1fd380c6af3ae13f8329584e57ae0","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills and hooks installer — one gate, four verbs.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.6.0_1787041364928_0.851321039119346","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"@appswithlove/sdd","version":"0.6.1","keywords":["sdd","spec-driven","claude-code","skills","awl"],"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","_id":"@appswithlove/sdd@0.6.1","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"homepage":"https://github.com/appswithlove/sdd","bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"bin":{"sdd":"bin/install.js"},"dist":{"shasum":"b62e87ca77c011974e03114cb7dd73123aab5b6d","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.6.1.tgz","fileCount":30,"integrity":"sha512-DEnSMnEKnys7YQyI2n3pQuUSdVN5zYS8mpWc9OTm1QYSKgU1+4FSYv+BZceCOXeoGZdyi8xbbxrZN1120zZcTw==","signatures":[{"sig":"MEYCIQCeQ+/Il+imwK9EA/ng74LOUYE0DrgBCt8+QsFi/YVJ7wIhALXL12hXFw9R/fJhlIueTpdS4AgeigbZA58Lu4BLNinT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFoGJ9NF06HcQuiJAVxNGWAGumGIFfq4W6HYRnSU09DBAiAqFYuHS93AzJW9RanYUptrUrXvArZID9X9cxzAZq8ybA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125600},"engines":{"node":">=18"},"gitHead":"1dc5590f781a8450ce63e038d598371d836953d1","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills and hooks installer — one gate, four verbs.","directories":{},"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/sdd_0.6.1_1788865786930_0.6609450972892676","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"_id":"@appswithlove/sdd@0.7.0","bin":{"sdd":"bin/install.js"},"bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"dist":{"shasum":"3e954605c9d5f23fe0df2e203380e9045746941b","tarball":"https://registry.npmjs.org/@appswithlove/sdd/-/sdd-0.7.0.tgz","fileCount":31,"integrity":"sha512-iDC1yNa9P0w3iBHiR2i42TSOeEKrDvG5IPTacvxPKQF6geXfa91/9qR2cMDsGWj3L0VnBc3VJEKtkH8NwXusaw==","signatures":[{"sig":"MEQCIEJWkooQk8QFQBs2mHNoVXfGrJz1QUmy/0ZbVZ0+x7CkAiBGi1nePyOztlFmLPMC0H8uVvf07eB9DrxRHV6jdF5ieA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGsykFV5EkfOtsF5ZlwokgS/rXA3ojPC/gQnZLwqqi6YAiABttiMwRYPjvVNJKN15pdd/xzmU+3+djLw10cokJ0NwQ=="}],"unpackedSize":135500},"name":"@appswithlove/sdd","author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"engines":{"node":">=18"},"gitHead":"7501faba47e5e8e69ff4fb88827910d367d34d39","license":"MIT","scripts":{"test":"node test/smoke.mjs && node test/structure-health.mjs && node test/path-guard.mjs && node test/staleness-lint.mjs && node test/manifest-load.mjs && node test/e2e/lint.mjs"},"version":"0.7.0","_npmUser":{"name":"mlemberg","email":"maximilian@appswithlove.com"},"homepage":"https://github.com/appswithlove/sdd","keywords":["sdd","spec-driven","claude-code","skills","awl"],"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"_npmVersion":"11.13.0","description":"Spec-Driven Development for Apps with Love — Claude Code skills and hooks installer — one gate, four verbs.","directories":{},"maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"_nodeVersion":"26.1.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/sdd_0.7.0_1788866583928_0.04391607190251423"}}},"time":{"created":"2026-06-02T14:23:44.147Z","modified":"2026-09-08T11:23:04.226Z","0.1.0":"2026-06-02T14:23:44.436Z","0.1.1":"2026-06-02T20:55:15.653Z","0.1.3":"2026-06-03T23:52:27.398Z","0.1.4":"2026-06-04T12:25:13.727Z","0.1.5":"2026-06-08T14:30:56.495Z","0.1.6":"2026-06-08T16:05:17.239Z","0.2.3":"2026-07-21T21:41:40.463Z","0.3.0":"2026-07-23T12:18:57.659Z","0.4.0":"2026-07-29T14:14:05.974Z","0.4.1":"2026-07-29T15:29:14.917Z","0.4.2":"2026-07-29T21:19:56.609Z","0.4.3":"2026-07-30T09:26:14.006Z","0.4.4":"2026-07-30T09:57:49.318Z","0.4.5":"2026-08-04T17:26:46.187Z","0.5.0":"2026-08-11T07:14:35.264Z","0.6.0":"2026-08-18T08:22:45.071Z","0.6.1":"2026-09-08T11:09:47.027Z","0.7.0":"2026-09-08T11:23:04.031Z"},"bugs":{"url":"https://github.com/appswithlove/sdd/issues"},"author":{"name":"Apps with Love AG","email":"info@appswithlove.com"},"license":"MIT","homepage":"https://github.com/appswithlove/sdd","keywords":["sdd","spec-driven","claude-code","skills","awl"],"repository":{"url":"git+https://github.com/appswithlove/sdd.git","type":"git"},"description":"Spec-Driven Development for Apps with Love — Claude Code skills and hooks installer — one gate, four verbs.","maintainers":[{"name":"rrelmy","email":"npm@rrelmy.ch"},{"name":"mlemberg","email":"maximilian@appswithlove.com"}],"readme":"# SDD — Spec-Driven Development\n\nA Claude Code plugin that keeps a project's knowledge current and its requirements accepted before code is written. Built by [Apps with Love AG](https://appswithlove.com).\n\nSDD centres on **one gate, four verbs**, and a living knowledge base. It is not a process machine — how you design, split, and verify work stays your team's call. The system's job is that knowledge flows *in* (sales material, briefs, Confluence, people's heads) and *out* (decisions, lessons, finished work), and that a feature's requirements are accepted before it gets built.\n\n> **Upgrading?** 0.6.0 is a breaking release — see [CHANGELOG.md](CHANGELOG.md) and [Migration from pre-0.6](#migration-from-pre-06) below.\n\n## Install\n\n**Via npx** (bare-name commands: `/init`, `/req`, …):\n\n```bash\nnpx @appswithlove/sdd@latest\n```\n\nOn a **first install** you are asked for the scope — global (`~/.claude`) or project (`./.claude`). Non-interactive:\n\n```bash\nnpx @appswithlove/sdd@latest --global    # or --project, or -y to auto-detect\nnpx @appswithlove/sdd@latest --dry-run   # preview the writes, touch nothing\n```\n\nThis installs the skills and hook scripts and merges the SDD hooks into `settings.json` (your own hooks are preserved). Nothing else lands on your machine — project conventions live per project in `.project/steering/`, seeded by `/sdd:init`.\n\n**Updating** = re-run the same command. An existing install is detected: no scope question, it shows the version delta, asks one confirm (`-y` skips it), and mirrors the current source — files a previous version installed and this one no longer ships are removed. Your `.project/` artifacts are never touched.\n\n**Via the Claude marketplace plugin** (namespaced commands: `/sdd:init`, `/sdd:req`, …):\n\n```\n/plugin marketplace add appswithlove/sdd\n/plugin install sdd@awl-sdd\n```\n\nThe plugin channel auto-loads the hooks; no `settings.json` merge happens. Both channels ship the same source tree — only the command prefix differs. This README uses the `/sdd:` prefix throughout; drop it if you installed via npx.\n\n## The four verbs\n\n```\n/sdd:init      →  create the structure (once per project)\n/sdd:intake    →  knowledge IN:  offer, brief, Confluence, interview → product/\n/sdd:req       →  requirements + acceptance (the one gate)\n...build...    →  free-form: your normal Claude Code work\n/sdd:document  →  knowledge OUT: decisions, lessons, finished work → product/\n```\n\n**`/sdd:init`** creates `.project/` with the four knowledge files and the steering seeds. On an existing codebase it derives the code-provable facts itself (stack, libraries, test command, module map) instead of asking you to type what the code already states. Run it once; re-running only fills in what is missing.\n\n**`/sdd:intake`** brings knowledge from outside into the knowledge base — repo documents, Confluence/ClickUp pages (via the session's MCP tools), a pasted offer, or an interview when the knowledge only exists in someone's head. Non-repo sources are snapshotted into `.project/intake/` with a provenance header. Run it whenever new material arrives, not just at project start.\n\n**`/sdd:req`** captures a feature's requirements as behavioural REQs with acceptance criteria, and records their acceptance — the one gate. It ships no tracker integration: how requirements reach the client, and how their acceptance comes back, stays your project's own practice — you report the acceptance, `/sdd:req` records it.\n\n**...build...** is deliberately not a skill — once `req.md` is `accepted`, work normally. A typical start:\n\n```bash\n/clear                                 # fresh context for the build phase\nImplement the accepted req.md for <feature>\n# complex approach? plan mode first, then persist it:\n#   → .project/specs/<feature>/plan.md — reviewable, iterable, committed\n# iterate however your team works — code, tests, review\n/sdd:document                          # capture decisions/lessons when done\n```\n\n**`/sdd:document`** routes what the work produced into its home: architecture decisions into `product/adrs/`, library and stack changes plus lessons into `tech-stack.md`, finished work into the Feature Log in `overview.md`, discovered non-functional requirements into `constitution.md`. It runs any time — after a design session, at the end of a work session, when a feature wraps up — and is idempotent, so a re-run extends or corrects instead of duplicating. On request it archives a finished feature's spec directory.\n\n**`/sdd:learning`** is the one verb outside the product flow: when the *workflow itself* got in the way — a skill guessed wrong, a hook nagged falsely, a template had no home for something — it appends one observation (what happened, what it cost, no proposed fix) to `.project/workflow-learnings.md`. That log is the raw material for improving SDD itself; product knowledge still goes through `/sdd:document`.\n\n`/sdd:help` shows the cheatsheet, per-skill detail, and `/sdd:help status` — where the project currently stands.\n\n## The knowledge base\n\nA map plus references under `.project/product/`. `README.md` is the map — the one file every session loads (the SessionStart hook injects it) — and its *Read when* column says which reference to load for the task at hand. Everything else loads on demand:\n\n| File | Answers | Read when |\n|---|---|---|\n| `README.md` | **The map** — one row per file, what it answers, when to read it | always (injected at session start) |\n| `constitution.md` | **Why** — mission, goals, users, constraints, sales commitments, non-functional requirements | before any feature work |\n| `tech-stack.md` | **With what** — platforms, repos, shared conventions and lessons; per code repo: `tech-stack/<repo>.md` | code or libraries are touched |\n| `adrs.md` + `adrs/NNN-<slug>.md` | **Why so** — an index line per decision, one file per record | before a design decision |\n| `overview.md` | **What & where** — description, module map, stakeholders & sources, Feature Log | a feature is picked up; onboarding |\n| `<name>.md` | **Project references** — a data model, an external contract, a backend surface that outgrew a section | as its map row says |\n\nA specs repo that governs several code repos splits repo-specific stack facts into `tech-stack/<repo>.md` — the repo the evidence came from decides the file, so nothing is filed by judgement.\n\nTwo supporting homes: `.project/intake/` holds raw source material that has nowhere else to live (never auto-loaded — read once, re-read on demand), and `.project/specs/<feature>/` holds the feature's `req.md` plus whatever free-form notes the team wants — design sketches, task lists. No required sections, no validation of their shape. The one optional exception is `plan.md`: when an approach is complex enough to review and iterate on, write the plan there instead of leaving it in a plan-mode session that nobody can diff.\n\nOnly two verbs ever write to `product/`: `/sdd:intake` (from outside in) and `/sdd:document` (from the work back). See [docs/artifact-lifecycle.md](docs/artifact-lifecycle.md).\n\n**New to a project?** `product/README.md` names what to load for your task; read `constitution.md` before building and `overview.md` to orient. That is the onboarding path.\n\n## The one gate\n\n```\n.project/specs/<feature>/req.md exists\n  AND its YAML header carries  status: accepted\n```\n\nThat is the only gate in SDD: **a feature's requirements are accepted before its code is written.** Questions, exploration, and discussion never require it, and an explicit instruction to bypass SDD wins — Claude says so and proceeds.\n\nThe acceptance axis lives in the `req.md` header and nowhere else: `draft` → `in-review` → `accepted`. In client work, `accepted` means *the client accepted*, not that we decided the requirements looked finished. Acceptance is a human fact that arrives on whatever channel the project uses — a tracker status, a meeting, a mail. You report it, `/sdd:req` records it; nothing sets it automatically. Solo projects self-accept directly. A meaning-changing edit to an accepted requirement revokes acceptance back to `in-review`; a typo fix does not.\n\nFull model, including feature resolution: [docs/gate-system.md](docs/gate-system.md).\n\n## Hooks\n\nThree deterministic bash hooks (no LLM calls, `jq` required) back the behavioural rules up. All are **warn-not-block** — they nudge, they never deny a write, and they no-op outside an SDD project.\n\n| Event | What it does |\n|---|---|\n| `SessionStart` | Injects the flow rules plus a live status report derived from the files: every feature and its acceptance state, the steering file list, a warning if a knowledge file is missing, and one if a committed `settings.json` points its SDD hooks at a script that does not exist here (an absolute path from another machine — otherwise a silent total hook failure). |\n| `PostToolUse` (Write/Edit) | Warns when a `req.md` header carries a status outside the vocabulary, and once per session when source files are written while the active feature is not accepted. The active feature is only named when a deterministic signal identifies it — a spec written this session, the prompt, or the git branch; otherwise the nudge stays silent rather than accuse the wrong feature. |\n| `Stop` | Asks once per session, when code was written but no spec or knowledge file was touched, whether `/sdd:document` should record what happened. |\n\nEach warning class fires at most once per distinct state per session — a nudge that repeats on every edit teaches the model to ignore it.\n\n## Migration from pre-0.6\n\nNothing to run. Old artifacts in a project — the retired gate carrier and the previously mandatory design/task spec files, the retired state digest, the pre-0.6 extra `product/` files — are **inert leftovers**: no skill, hook, or check reads or complains about them. `/sdd:document` archives spec leftovers along with their feature, and on request folds still-true content from the pre-0.6 product files into the current files. A project from before the map existed gets its `product/README.md` from the next `/sdd:init` or `/sdd:document` run. On the machine side, updating the npm install removes the skills and agents that 0.6.0 no longer ships.\n\n## Documentation\n\n| Document | Contents |\n|---|---|\n| [docs/gate-system.md](docs/gate-system.md) | The one gate, the acceptance axis, feature resolution |\n| [docs/artifact-lifecycle.md](docs/artifact-lifecycle.md) | Permanent vs ephemeral artifacts, the two-verb write rule, archival |\n| [docs/artifact-header.md](docs/artifact-header.md) | The slim YAML header + status vocabularies |\n| [docs/steering-system.md](docs/steering-system.md) | Project conventions: the one steering home, loader mechanics |\n| [docs/skill-manifest.md](docs/skill-manifest.md) | SKILL.md format, description conventions, context budgets |\n| [docs/context-engineering.md](docs/context-engineering.md) | Context-rot doctrine and the reading discipline it implies |\n| [docs/troubleshooting.md](docs/troubleshooting.md) | Common problems and fixes |\n| [docs/decisions.md](docs/decisions.md) | Design decision log (historical record) |\n| [docs/lessons-from-field.md](docs/lessons-from-field.md) | Field observations that shaped the tooling (historical record) |\n\n## Development\n\nThe repo *is* the plugin — no build step. Source tree:\n\n```\nplugins/sdd/\n  .claude-plugin/plugin.json    ← plugin manifest\n  hooks/hooks.json              ← wires the bash hooks into Claude Code events\n  scripts/                      ← the three hook scripts + shared flow library\n  skills/<skill>/SKILL.md       ← skill definition + instructions\n  skills/<skill>/references/    ← templates (incl. init's steering seeds)\n```\n\n```bash\nnpm test                                  # installer smoke, hook tests, manifest load, staleness lint\nnode bin/install.js --dry-run --project   # preview an install\n```\n\nContributor rules live in [CLAUDE.md](CLAUDE.md) — including the mandatory staleness sweep after every change and the lockstep version bump across the three manifests. This README deliberately keeps no second copy of them.\n\n### Key design principles\n\n- **No runtime.** Skills are system prompt injections. The gate is behavioural, backed by warn-not-block hooks; nothing programmatically denies a write.\n- **Adoption beats enforcement.** 0.6.0 retired the multi-gate machinery because a process people route around documents nothing.\n- **Two verbs own the knowledge base.** Everything that enters `product/` comes through `/sdd:intake` or `/sdd:document`, which keeps the write paths reviewable.\n- **Specs are ephemeral, knowledge is permanent.** Feature specs archive; `product/` lives as long as the project.\n\n## License\n\nProprietary — Apps with Love AG.\n","readmeFilename":"README.md"}