@the-keep/imprint-scratchpad
v0.1.0
Published
The scratchpad imprint — plain-text notes in a repo; push is publishing, the repo is the publication.
Readme
@the-keep/imprint-scratchpad
The scratchpad imprint — the packaged craft scratchpad almanacs are made
from: the authoring contract (house-style/) plus the publish machinery,
shipped as an npm package. It is the deliberately minimal imprint: plain-text
notes in a repo. As the first imprint, it is the reference implementation of
the imprint contract.
Publishing
Push is publishing; the repo is the publication. There is no rendering, no build, and no deploy wiring — an instance made from this imprint is published the moment its repo is pushed, and its readership is whoever can read the repo. The publish machinery of this imprint is, by design, nothing at all.
Usage
Standalone (the almanac CLI wraps this for keeps):
bunx --package @the-keep/imprint-scratchpad bind <dir>bind is the imprint's one verb — and its whole binary (--package because
the binary is named for the verb, not the package). It is idempotent
convergence, not one-shot scaffolding: the first bind stamps a new instance,
and every install rebinds — the stamped postinstall invokes the installed
imprint's bind .. (Rebinding is real bookbinding practice; worn volumes get
rebound.) Tri-state on the target:
- empty or absent directory → full scaffold, then
bun install - an instance of this imprint → converge
- anything else → fail cleanly, change nothing
Everything bind writes has an ownership class:
- clobber —
_house-style/(README included): re-derived on every bind as a verbatim, read-only copy of this repo'shouse-style/. Git-tracked, so imprint updates show contract changes as honest diffs in the instance's history. - create-if-missing —
custom-style/+ its README,notes/, the instanceREADME.md,.gitignore: scaffold handed to the user, never touched again once present. - key-level converge —
package.json: machinery keys (scripts.postinstall) are converged;dependencies(this imprint as the sole entry, at an exact self-pin) and user-added keys are never touched — the pin moves only viabun update --latest.
bind performs no git operations — git init belongs to the almanac CLI;
standalone users init themselves.
Updating an instance
bun update --latestThat is the entire update story — there is no custom update verb. With a sole
exact-pinned dependency, bun update --latest does exactly one thing: it bumps
the pin to the newest version, and that install's postinstall rebinds — the new
version's house-style and any machinery new to it arrive; files you own stay
yours.
Layout
bin/bind the binary, named for its one verb (bun runtime assumed;
no build step)
house-style/ master copy of the authoring contract — copied verbatim
(README included) into an instance's _house-style/, so
this directory is exactly what a physical almanac will
carry