Skip to content

Reproduce a Stack from tinkerise.lock

Record a working stack once, then recreate it elsewhere — for a teammate, a fresh machine, or a second project — without remembering every flag.

  • Node.js 20.11+
  • tinkerise installed
Terminal window
tinkerise web next my-app --typescript --tailwind
cd my-app
tinkerise add eslint prettier

Expected result: my-app is scaffolded and a tinkerise.lock is written at its root. The add step records eslint and prettier into that lock.

Terminal window
cat tinkerise.lock

Expected output (abbreviated):

{
"schemaVersion": 1,
"framework": "next",
"category": "web",
"flags": { "typescript": true, "tailwind": true },
"enhancements": [
{ "id": "eslint", "version": null },
{ "id": "prettier", "version": null }
],
"packageManager": "npm",
"createdWith": "1.0.0"
}

Commit tinkerise.lock alongside your code — it is a reproducible record, not a cache.

Put the shared tinkerise.lock in an empty working directory, then preview what reproducing it will run — without writing anything. --from-lock reads tinkerise.lock from the current directory and creates the new project as a subfolder named by the first argument:

Terminal window
mkdir ../reproduce && cd ../reproduce
cp ../my-app/tinkerise.lock .
tinkerise my-app-clone --from-lock --dry-run

Expected result: the exact upstream command is printed and no files are created.

Terminal window
tinkerise my-app-clone --from-lock

Expected result: ./my-app-clone is scaffolded with the recorded flags and variant, then the recorded enhancements (eslint, prettier) are re-applied — recreating the full stack in one command.

Step 5: Re-apply enhancements in an existing checkout

Section titled “Step 5: Re-apply enhancements in an existing checkout”

If you cloned a repo that already contains a tinkerise.lock and just want its tooling:

Terminal window
tinkerise add --from-lock

Expected result: the lock’s recorded enhancements run through the normal add flow, with the usual skip / replace / merge handling for any existing config.

  • tinkerise.lock at each project root
  • Framework output from the official scaffolder (e.g. create-next-app)
  • Enhancement-generated files (ESLint and Prettier configs)
  1. Add the lock to version control so reproductions are deterministic.
  2. Layer more tooling with tinkerise add — each run keeps the lock current.