Skip to main content

Scaffold a clispec-compliant, agent-facing Rust CLI in seconds.

Project description

clihatch

CI crates.io clispec

Scaffold a complete, clispec-compliant, agent-facing Rust CLI in seconds - source skeleton, schema + conformance test, and the GitHub-hosted dual-publish release pipeline. No more copying your last tool and sed-ing the name.

Install

cargo install clihatch

Usage

clihatch new my-tool
cd my-tool && make check      # lint + tests pass out of the box
./target/debug/my-tool 21     # the example command runs

Options: --description, --owner (default rvben), --author (default: git config), --into <dir>, --no-git.

Bootstrap release secrets

Once the repo exists on GitHub, wire up the three secrets the release pipeline needs in one step:

clihatch secrets my-tool            # -> rvben/my-tool
clihatch secrets my-tool --dry-run  # show what would be set, touch nothing
  • HOMEBREW_TAP_DEPLOY_KEY - generates an ed25519 key, registers it as a write deploy key on the tap (--tap, default rvben/homebrew-tap), and stores the private key. This is the fiddly part, fully automated.
  • CARGO_REGISTRY_TOKEN - read from $CARGO_REGISTRY_TOKEN or ~/.cargo/credentials.toml.
  • PYPI_API_TOKEN - read from $PYPI_API_TOKEN / $UV_PUBLISH_TOKEN, or --pypi-token-stdin.

Missing token sources are skipped with a hint, never invented. Needs gh authenticated (gh auth status).

What you get

A ready-to-cargo build, ready-to-release crate:

  • src/ - a minimal but complete clispec CLI: a default command, schema, completions, the structured-error envelope, exit-code contract, and TTY-aware -o auto|json|text. Replace the example run logic with yours.
  • schemas/clispec-v0.2.json + tests/conformance.rs - your schema output is validated against the spec by the test suite.
  • tests/cli.rs - end-to-end tests of the binary.
  • The dual-publish pipeline - .github/workflows/{ci,release}.yml (GitHub-hosted, building macOS + Linux for crates.io + PyPI + Homebrew), pyproject.toml (maturin), Makefile, prek.toml, README.md, LICENSE, .gitignore.
  • A git init + initial commit (skip with --no-git). Generated sources are cargo fmt-clean.

clihatch is itself built with its own output's conventions - it eats its own dog food, and its test suite scaffolds a crate and compiles it to prove the templates stay valid.

Exit codes

code meaning
0 success
2 IO, git, or backend (gh/ssh-keygen) failure
3 usage error, or the target directory already exists

For agents (clispec)

clihatch schema

Structured output on stdout, structured error envelopes on stderr, a schema subcommand validated against clispec.dev/schema/v0.2.json. new and secrets are the mutating: true commands; new never overwrites, and secrets supports --dry-run.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clihatch-0.1.1.tar.gz (35.2 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

clihatch-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (529.2 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

clihatch-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (493.4 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

clihatch-0.1.1-py3-none-macosx_11_0_arm64.whl (478.7 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

clihatch-0.1.1-py3-none-macosx_10_12_x86_64.whl (513.3 kB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file clihatch-0.1.1.tar.gz.

File metadata

  • Download URL: clihatch-0.1.1.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for clihatch-0.1.1.tar.gz
Algorithm Hash digest
SHA256 ce1e9b3bbc5611d7053986a0efee971cb7849b54fa771dc98ad939404049f2d6
MD5 af549e34cfe8439dd208501883ce4ee0
BLAKE2b-256 ed5a5cea8183ede5f8eeba558393399b568f16cd26ede8727ff5619b9245870c

See more details on using hashes here.

File details

Details for the file clihatch-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

  • Download URL: clihatch-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
  • Upload date:
  • Size: 529.2 kB
  • Tags: Python 3, manylinux: glibc 2.17+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for clihatch-0.1.1-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a11437049e8575c40862aada715bfb6096d966a7caffe405d21807e3fa2d2278
MD5 d1cb335563306b14b0dbc9d2ac7fca30
BLAKE2b-256 f599a74f19f503d349f34799bdbb49b6bfca2cb99e2b6cb6fa7974910be99ac5

See more details on using hashes here.

File details

Details for the file clihatch-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

  • Download URL: clihatch-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
  • Upload date:
  • Size: 493.4 kB
  • Tags: Python 3, manylinux: glibc 2.17+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for clihatch-0.1.1-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3a01fcd5f5c1a231caa8f36c738c19f7610f317a3bf3273f42cf735ac91f0471
MD5 f86d420de81ecd13a019a674f313d92b
BLAKE2b-256 c2d5a9a965a282ae29f14754dbc6e55015e80f37b16ad6e12b0dbb10f5e34b9a

See more details on using hashes here.

File details

Details for the file clihatch-0.1.1-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: clihatch-0.1.1-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 478.7 kB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for clihatch-0.1.1-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4fed246181e3807ecf0d6e84bed4bec6ae61ebe954a76736c399d8c6407aa16a
MD5 209b0bf04d109b0a16c84d03b669f48e
BLAKE2b-256 e7304ab312192d8a515daa2060e288df22b3acc6f61a1efc7c34577a0efebac6

See more details on using hashes here.

File details

Details for the file clihatch-0.1.1-py3-none-macosx_10_12_x86_64.whl.

File metadata

  • Download URL: clihatch-0.1.1-py3-none-macosx_10_12_x86_64.whl
  • Upload date:
  • Size: 513.3 kB
  • Tags: Python 3, macOS 10.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for clihatch-0.1.1-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 bff1f6ae90479a7c261eceda0a12fc7da43b96e504c11c5dc5b607deb45e2e41
MD5 37373c5a1fc8efd19a675bf42ad0bfd2
BLAKE2b-256 c801e8e480c3651cd09001b37fc41ab936475a77ec79c6eda17e11ffa0c5e211

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page