{"_id":"@afshar7/toolkit","_rev":"6-7d38c03587b4b6272808eb0df5c4d62d","name":"@afshar7/toolkit","dist-tags":{"latest":"0.2.1"},"versions":{"0.1.0":{"name":"@afshar7/toolkit","version":"0.1.0","_id":"@afshar7/toolkit@0.1.0","maintainers":[{"name":"afshar7","email":"mr.afshar0@gmail.com"}],"bin":{"toolkit":"dist/cli.js"},"dist":{"shasum":"29a80e2bee91f0c6ab1bf20e387362412de6308e","tarball":"https://registry.npmjs.org/@afshar7/toolkit/-/toolkit-0.1.0.tgz","fileCount":20,"integrity":"sha512-qymZUhCHt71ULf/K9eOEbkpG92oj+8ZiuBNZLsyRpXy2t2NW5nIstihaVOOul3Jp2QqQl1gYedQA5Y9bqlZonA==","signatures":[{"sig":"MEUCIFB6AyAsKQnb5AqKX1QDjpdKrGYpOV3oX2EMgpfW9oo/AiEA8OTg5MHZyjqd6463bgtOCBGfDzBenwg5GQM58c22nHU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14854},"type":"module","engines":{"node":">=20"},"exports":"./dist/index.js","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"afshar7","email":"mr.afshar0@gmail.com"},"_npmVersion":"11.19.0","description":"Portable development workspace recipes","directories":{},"_nodeVersion":"24.20.0","dependencies":{"citty":"^0.1.6","execa":"^9.6.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.3"},"_npmOperationalInternal":{"tmp":"tmp/toolkit_0.1.0_1788095810787_0.32892037864673096","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@afshar7/toolkit","version":"0.1.2","_id":"@afshar7/toolkit@0.1.2","maintainers":[{"name":"afshar7","email":"mr.afshar0@gmail.com"}],"bin":{"toolkit":"dist/cli.js"},"dist":{"shasum":"867b9e91425cc32b4e631c85ea1575cc2a0a65e2","tarball":"https://registry.npmjs.org/@afshar7/toolkit/-/toolkit-0.1.2.tgz","fileCount":20,"integrity":"sha512-Ndcw0lOVek54+297oFz4iqetldg9YrlQpGGEu1xkdj441wuqocQ4u2kfZLVkXKu1R2aOYTmxIA2wDGo7c0NCWQ==","signatures":[{"sig":"MEUCIQD3Bd4rBTl44An7Gx4hKGRUerAsb5zFMcSjCjNPBhcA8wIgarDjl4uzH8Z3Bq5XO9MzOk16PFO5uyH+02SFaPvoOH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAcuLcVAbRESiDlEYFS7XmkkcF+VpIszdygSv9X6KIL6AiEA8DLDdsc8gFn3yu0iNr1o3cCAfcNMHIy1I4Eqh5SVSSo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":22410},"type":"module","engines":{"node":">=20"},"exports":"./dist/index.js","gitHead":"e5bb159e93143facf2c6db2d30210f3648153c1a","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"afshar7","email":"mr.afshar0@gmail.com"},"_npmVersion":"11.19.0","description":"Portable development workspace recipes","directories":{},"_nodeVersion":"24.20.0","dependencies":{"citty":"^0.1.6","execa":"^9.6.0","pathe":"^2.0.3","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.3"},"_npmOperationalInternal":{"tmp":"tmp/toolkit_0.1.2_1788099508050_0.1909300275316339","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@afshar7/toolkit","version":"0.1.3","_id":"@afshar7/toolkit@0.1.3","maintainers":[{"name":"afshar7","email":"mr.afshar0@gmail.com"}],"bin":{"toolkit":"dist/cli.js"},"dist":{"shasum":"0a14311c75780798c72b5836a5ea98be8fc780c8","tarball":"https://registry.npmjs.org/@afshar7/toolkit/-/toolkit-0.1.3.tgz","fileCount":32,"integrity":"sha512-h9H7Q9Cx65HO5dfEBfYS+671oR9bV2CbOyr3SfHNSYTaWIiGjMLRSXxcII2WmE+JIlHz9iHf+BaZB5V5CGbdRQ==","signatures":[{"sig":"MEQCICLiRdAWXEEKlLdmXG2eAVi2ppBWzRo9bPH/ZMo1xDd2AiBlzZUIWcHn+ruBe3cWrRV62/XLt7PxND2iRwvQd5AGVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEJbLqwvEbBwIfsRET8TYIf19fsrj5TJOW3ixcHTxeC5AiEA/dQlCH2h/F/59vXeAcijO8rW04JQ69+YgQI86cxoLYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":62541},"type":"module","engines":{"node":">=20"},"exports":"./dist/index.js","gitHead":"30b5293c76704dc91517a4aa4bdbc3316420786f","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"afshar7","email":"mr.afshar0@gmail.com"},"_npmVersion":"11.19.0","description":"Portable development workspace recipes","directories":{},"_nodeVersion":"24.20.0","dependencies":{"citty":"^0.1.6","execa":"^9.6.0","pathe":"^2.0.3","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.3"},"_npmOperationalInternal":{"tmp":"tmp/toolkit_0.1.3_1788107635133_0.10067156223979712","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@afshar7/toolkit","version":"0.1.4","_id":"@afshar7/toolkit@0.1.4","maintainers":[{"name":"afshar7","email":"mr.afshar0@gmail.com"}],"bin":{"toolkit":"dist/cli.js"},"dist":{"shasum":"e12d4c7cfbee19fe6799be1d42cb2d44ac42ac46","tarball":"https://registry.npmjs.org/@afshar7/toolkit/-/toolkit-0.1.4.tgz","fileCount":36,"integrity":"sha512-rRAy2gEDAPpEH1dsbd5PiOpM2M2/jkPhLrW7HvAbxqRhkmobGzTy2lrvYrpmOjvcRpCez5PvS99ztz5DuiEgEg==","signatures":[{"sig":"MEYCIQD0Rsw9pAW2hCbk3Z4FLIR8d3tbUtyag9WTAuCvwy+k5QIhAPLZLjzHWdDqrOM1rC0vk9f2WKM1ikZFGlBzLvivnyjM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC6MPaICfHRxLLtzURidJx8Xoz+2/IEMfZ/ecYYKl8ySwIgcPa4DeukOYIjwWiSfCs+ZrhX9Uq+VmH+kNgEAF1ukz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83830},"type":"module","engines":{"node":">=20"},"exports":"./dist/index.js","gitHead":"c8311bc478eb5e9eaba61aa95e64a8e67e725d66","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"afshar7","email":"mr.afshar0@gmail.com"},"_npmVersion":"11.19.0","description":"Portable development workspace recipes","directories":{},"_nodeVersion":"24.20.0","dependencies":{"citty":"^0.1.6","execa":"^9.6.0","pathe":"^2.0.3","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.3"},"_npmOperationalInternal":{"tmp":"tmp/toolkit_0.1.4_1788117814465_0.9214441122424775","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@afshar7/toolkit","version":"0.2.0","_id":"@afshar7/toolkit@0.2.0","maintainers":[{"name":"afshar7","email":"mr.afshar0@gmail.com"}],"bin":{"toolkit":"dist/cli.js"},"dist":{"shasum":"6d6f45287675e2aea85c7070cf84306592cf335d","tarball":"https://registry.npmjs.org/@afshar7/toolkit/-/toolkit-0.2.0.tgz","fileCount":44,"integrity":"sha512-xWYXbqVshBZuxKJZ08KqWUvITQyXd90oR+f3rxzxMQM/Zguz8v5gMqLtifcMB2hm14JVUEmsjWJJLMyi1WPyiA==","signatures":[{"sig":"MEQCIF2ioGCdhbQkOMT1TBy700SGqHZ8+b1XmSawPAk1NJyaAiAuACGdjpUqe9vhlwjqj/upw4yoofYyvoSXmQKLxJwNvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIH/KYPAx88gBwfoINW+VzQEqbnfn5WjEdJBwgnI1k8u+AiAFdVdxMsymsmfXCTbHNNKH79AusLIxrA19ZqlbHD15wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":92902},"type":"module","engines":{"node":">=20"},"exports":"./dist/index.js","gitHead":"4fd1ef8632d8f0c792c1aa5ca84f9d9e3a6a4da4","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"afshar7","email":"mr.afshar0@gmail.com"},"_npmVersion":"11.17.0","description":"Portable development workspace recipes","directories":{},"_nodeVersion":"24.19.0","dependencies":{"citty":"^0.1.6","execa":"^9.6.0","pathe":"^2.0.3","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.3"},"_npmOperationalInternal":{"tmp":"tmp/toolkit_0.2.0_1788633139192_0.8199982167316764","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"_id":"@afshar7/toolkit@0.2.1","bin":{"toolkit":"dist/cli.js"},"dist":{"shasum":"29167a3f953c8997c42a78142ec12a49c56ab6a4","tarball":"https://registry.npmjs.org/@afshar7/toolkit/-/toolkit-0.2.1.tgz","fileCount":44,"integrity":"sha512-P+CW1zoV2mKLi9JXh59O8vmbRuZqhA1RlR9P/YrRfGOkqNxDEWKHjpNq8/e52clFty7sDL61Lz5Ob/M5gs7U0g==","signatures":[{"sig":"MEUCIGsyd1c4CtZ2N9VpsnUqowehxmTRwxUlebeNZ3uYhfJyAiEA4Zl6NmxQwmTywoVO+tkJj11sxD7JpNWZYTcik1dw9aQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDPqH+uTLo2gMwHDXPAt56oUYgN14GCJyR2hhZC3TVMjwIhAPkcTUjKSF8Rbz1k9L5tK3fYQqqvzVY8zQ+KatOlCP2V"}],"unpackedSize":93703},"name":"@afshar7/toolkit","type":"module","engines":{"node":">=20"},"exports":"./dist/index.js","gitHead":"4d958725cb2574c501687b74774dc5181b0ea46d","scripts":{"dev":"tsx src/cli.ts","test":"vitest run","build":"tsc -p tsconfig.json"},"version":"0.2.1","_npmUser":{"name":"afshar7","email":"mr.afshar0@gmail.com"},"_npmVersion":"11.17.0","description":"Portable development workspace recipes","directories":{},"maintainers":[{"name":"afshar7","email":"mr.afshar0@gmail.com"}],"_nodeVersion":"24.19.0","dependencies":{"citty":"^0.1.6","execa":"^9.6.0","pathe":"^2.0.3","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.3","vitest":"^3.1.3","typescript":"^5.8.3","@types/node":"^22.15.3"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/toolkit_0.2.1_1788633632554_0.9017472243586282"}}},"time":{"created":"2026-08-30T13:16:50.589Z","modified":"2026-09-05T18:40:32.786Z","0.1.0":"2026-08-30T13:16:50.944Z","0.1.2":"2026-08-30T14:18:28.141Z","0.1.3":"2026-08-30T16:33:55.216Z","0.1.4":"2026-08-30T19:23:34.564Z","0.2.0":"2026-09-05T18:32:19.275Z","0.2.1":"2026-09-05T18:40:32.639Z"},"description":"Portable development workspace recipes","maintainers":[{"name":"afshar7","email":"mr.afshar0@gmail.com"}],"readme":"# @afshar7/toolkit\n\nToolkit creates portable **workspace recipes**: declarative manifests for reconstructing workspace structure, not backups of arbitrary local files.\n\n```sh\ntoolkit scan\ntoolkit scan .\ntoolkit scan . --name trigate\ntoolkit scan . --name trigate --output ./trigate.workspace.json\n\ntoolkit setup\ntoolkit setup ./trigate.workspace.json\ntoolkit setup ./trigate.workspace.json --destination ~/work\n\ntoolkit doctor --workspace ./trigate.workspace.json\n\ntoolkit context init\ntoolkit context validate\ntoolkit context agents\n```\n\n`scan` is interactive by default. A supplied workspace, name, or output skips that prompt. It records a root Git repository when the workspace itself is a repository, otherwise discovers child Git repositories using relative paths. Every discovered remote is recorded; `origin` is selected for cloning when available, and Toolkit asks you to choose when multiple remotes exist without an `origin`.\n\nRecipes also record package-manager lockfile hints, Node-version hints, and standalone structural or empty directories where applicable. Generated, sensitive, and machine-specific directories (such as `.git`, `node_modules`, `.nuxt`, `dist`, and IDE caches) are ignored.\n\n`setup` is interactive by default; a supplied manifest or destination skips the matching prompt. It recreates declared directories and clones repositories without installing dependencies. Existing destinations are validated as matching Git repositories and skipped; non-matching repositories or other existing content are reported as conflicts and never overwritten. If the selected clone remote fails, interactive setup can retry another recorded remote and updates the recipe’s selection after a successful fallback clone. If a secondary remote cannot be configured, the successful clone is kept and the setup error names the repository and remote.\n\n`doctor` checks Git, Node, and recorded package managers. Node compatibility is checked only for exact `major.minor.patch` hints (with an optional `v`); ranges and major-only hints remain advisory.\n\n`context init` creates an `AGENTS.md` entry point and a `.ai/` Markdown context structure for the current workspace. Markdown context is authoritative: `AGENTS.md` routes work to the applicable workspace and project guidance, while `.ai/` contains workspace conventions, policies, and project context. Existing `AGENTS.md`, `.ai/`, and project-local context paths are never overwritten.\n\nRun `toolkit context init` without arguments for prompts. Supply the destination and all context flags with `--non-interactive` for scripts.\n\n`context validate` checks that the Markdown context entry point and referenced structure are present without changing files. `context agents` creates the four personal OpenCode agent files in either the workspace or global OpenCode agents directory, also without overwriting existing files.\n\nThe generated structure includes shared workspace guidance under `.ai/`, project guidance under `.ai/projects/`, and project-local indexes under each non-root project's `.ai/`. Project routes are intentionally added and maintained manually; Toolkit does not infer or rewrite them after initialization.\n","readmeFilename":"README.md"}