This repository stores DotSlash wrapper files used across projects. A DotSlash file (commonly given a .dotslash extension) is a small script-like file that must begin with the shebang:
#!/usr/bin/env dotslashand contain a JSON body that tells the dotslash runtime how to fetch and run the executable it represents. Any arguments passed on the dotslash command line after the DotSlash file are forwarded to the underlying executable.
- Run a DotSlash file:
dotslash ./tool.dotslash -- <args>- Validate / inspect a DotSlash file:
dotslash -- parse ./tool.dotslash- Prepare (fetch) the executable without running it:
dotslash -- fetch ./tool.dotslash- Compute checksums:
dotslash -- sha256 FILE
dotslash -- b3sum FILE#!/usr/bin/env dotslash{
"name": "mytool",
"provider": { "http": "https://example.com/bin/mytool-<platform>.tar.gz" },
"run": { "cmd": ["mytool"] }
}- Make the file executable:
chmod +x ./tool.dotslash- Validate JSON syntax (optional):
jq . ./tool.dotslash- Use
dotslash -- parseanddotslash -- fetchto verify behaviour on your host.
- Use the
#!/usr/bin/env dotslashshebang and prefer a.dotslashextension for clarity. - Avoid hardcoding platform-specific paths; use provider templates and runtime outputs instead (see
--helpfor supported placeholders). - Pin artifacts with checksums when possible and prefer stable, versioned downloads.
- For deployment, you can rename a
.dotslashfile to the target binary name and place it in a directory on yourPATH(for example,node-v24.0.0.dotslash->~/bin/node). After moving the file, ensure it is executable (for example:chmod +x ~/bin/node).
Store DotSlash files in a logical location (root, a tools/ directory, or a dedicated dots/ directory). Keep files small, well-documented, and executable.
-
scripts/dotslash-sandbox- Run a .dotslash file in a Podman container for hermetic, reproducible execution.
- Usage: ./scripts/dotslash-sandbox <file.dotslash> [args...]
- Run a .dotslash file in a Podman container for hermetic, reproducible execution.
-
scripts/dotslash-shim- Lightweight shim that ensures a pinned
dotslashbinary is available in$HOME/.cache/dotslash-shim/bin/dotslash; downloads and verifies v0.5.8 if missing. - Usage: Invoke directly (
./scripts/dotslash-shim) or letdotslash-sandboxmount it into containers. - Use cases: Run
dotslashon systems without a global install (CI, containers), provide an isolated, verifiable runtime for DotSlash files.
- Lightweight shim that ensures a pinned
-
scripts/dotslash-doctor- Update .dotslash assets by downloading and verifying remote files.
- Usage: ./scripts/dotslash-doctor <file.dotslash>
- Use cases: Verify and update size, sha256, and path for platforms in a .dotslash file.
-
scripts/dotslash-install- Install a .dotslash manifest from this repository's bin/ into a local bin directory and create a small wrapper that runs
dotslash <manifest>. - Usage: ./scripts/dotslash-install [OPTIONS]
- Example:
./scripts/dotslash-install fzf(installs the 'fzf' manifest and creates a wrapper in the target directory). - See docs/dotslash-install-plan.md for implementation details and testing notes. Run
make install-teststo execute the install test suite locally.
- Install a .dotslash manifest from this repository's bin/ into a local bin directory and create a small wrapper that runs
- Official project: dotslash-cli.com
- Add your DotSlash file (make it executable).
- Validate locally with
dotslash -- parseanddotslash -- fetch. - Open a PR describing the tool, platforms supported (if any), and any checksums or verification steps.