A personal Scoop bucket for apps that aren't in main/extras —
things installed from loose JSON files, GitHub repos with no releases, or local
one-offs. Having them here makes a machine reproducible instead of depending on
whatever happens to be sitting in ~\Downloads.
scoop bucket add halr9000 https://github.com/halr9000/scoop-bucket
scoop install halr9000/sa3_tflite| App | Description |
|---|---|
cadcraft |
Native CAD and drafting app, with its command-line tool. |
vectorcraft |
Native vector illustration app, with its command-line and MCP tools. |
effectcraft |
Native motion graphics and effects app, with its command-line and MCP tools. |
soundcraft |
Native audio editing and mixing app, with its command-line and MCP tools. |
pdfcraft |
Native PDF workbench, with its command-line tool. |
neo |
A distraction-free word processor for authors. |
sa3_tflite |
Stable Audio 3 CPU inference via LiteRT/TFLite — text-to-audio, audio-to-audio, inpainting. No PyTorch at runtime. |
Install the Crafting apps with
scoop install halr9000/pdfcraft halr9000/cadcraft halr9000/vectorcraft halr9000/effectcraft halr9000/soundcraft.
These use official portable builds for x64, x86, and ARM64, create Start Menu
shortcuts, and expose their app and -cli commands on PATH. Their per-user
settings remain outside Scoop's version directories. Launch PdfCraft or
CADCraft, VectorCraft, EffectCraft, or SoundCraft from the Start Menu,
or use this checkout's Codex launch Actions.
PdfCraft automatically registers .pdf support for the Windows user running
Scoop and removes its registration on uninstall. To make it the default PDF
reader, choose PdfCraft (Scoop) under Settings > Apps > Default apps.
Windows requires that one-time selection; installation preserves your existing
default reader.
sa3_tflite puts upstream's own wrappers on PATH as sa3 and sa3-gradio,
so they work from any directory:
sa3 --prompt "lofi house loop" --dit sm-music --decoder same-s --play
sa3 --help
sa3-gradioModel weights are not bundled; they lazy-download from HuggingFace on first use (~2.3 GB small, ~9.5 GB medium) and persist across upgrades.
The bucket covers which apps exist; scoop export covers what you had installed:
scoop export > scoop-apps.jsonCommit that file somewhere, then on a fresh machine:
scoop import scoop-apps.jsonscoop import restores buckets first, then apps — so anything from this bucket
comes back automatically, as long as the bucket is in the export.
-
Drop a manifest in
bucket/<app>.json. -
Test it locally before committing — you can install straight from the file:
scoop install .\bucket\<app>.json
-
Check that
checkverresolves. Thebin\wrappers already point atbucket\, so don't pass-Dir:.\bin\checkver.ps1 -App <app>
-
Let scoop compute the hash and rewrite the manifest for the newest version:
.\bin\checkver.ps1 -App <app> -Update
-
Format consistently:
.\bin\formatjson.ps1
-
Run the test suite. It needs two modules the CI installs for you, so install them once locally:
Install-Module BuildHelpers, Pester -Scope CurrentUser -Force
.\bin\test.ps1
The first CI run on a new bucket logs a scary error that you can ignore. The changed-manifest linter diffs
HEAD^..HEAD, which doesn't resolve when the repo has only one commit, so discovery reportsfatal: ambiguous argument 'HEAD^..HEAD'. The job still passes —test.ps1exits on Pester's failed-test count, and a discovery error doesn't add to it. It stops appearing from the second commit onward.
Worth knowing if you package something similar:
- No upstream release is needed. Scoop installs from any URL. For a repo with
no tags, pin a commit archive —
https://github.com/<owner>/<repo>/archive/<full-sha>.zip— which is immutable and therefore hashable. Useextract_dirto pull out a subdirectory. - Phase order matters. It runs
installer→create_shims→persist_data→post_install. Generate any file thatbinshims inpre_install/installer; do work that should reuse persisted state inpost_install. - Version scheme for commit-pinned apps.
<date>-<shortsha>alone is unsafe: two commits on the same day fall back to comparing SHAs lexically, which is meaningless ordering. Include the time —2026.08.02.0800-c7e8800. - Don't depend on system Python.
scoop install pythontracks the newest release, which routinely outpaces wheel availability for native packages, andpythononPATHmay belong to some other app's virtualenv. Depend onmain/uvand let it provision a pinned interpreter instead.
Unlicense — applies to this bucket's manifests and scripts, not to the apps they install.