bhtool
Assorted CLI utilities that are handy in Bosco’s day-to-day work—version bumps, file conversions, process helpers, macOS shortcuts, LLM-assisted movie renaming, and other small odds and ends. Python ≥3.13.
Install options
| Option | Description |
|---|---|
uvx bhtool … |
Run from PyPI on demand (no clone). Example:uvx bhtool --help, uvx bhtool run cursor. |
uv tool install bhtool |
Install**b** / bhtool globally from PyPI (released versions). |
uv sync then uv run bhtool … |
Use the project venv from a checkout (no global install). |
uv tool install . |
Install**b** / bhtool globally from the current directory (pinned copy). |
uv tool install --editable . |
Install**b** / bhtool globally in editable mode from a checkout (code changes apply without reinstall). |
Commands
| Command | Description | |
|---|---|---|
| bumpver | Bump version inpyproject.toml, commit, push; PyPI publish is on by default (--no-publish to skip) |
|
| run | Open macOS applications by partial name (e.g.uvx bhtool run cursor or b run cursor after a local install) |
|
| clr-chmod | Remove execute bit from non-shell files; tighten group/other write | |
| npread | Print the shape of NumPy.npy files |
|
| psword | Find processes by name;--kill to terminate |
|
| port | Find processes listening on TCP ports;--kill to terminate |
|
| rm-npm | Recursively deletenode_modules dirs and package-lock.json files |
|
| text | Convert between Markdown, HTML, DOCX, and Pug (needspandoc and related tools on PATH) |
|
| todict | JSON or YAML file, or stdin, → Pythondict(...)-style repr on stdout |
|
| movies | uvx bhtool movies (or b movies) — ask an LLM for normalized names; writes movie_mapping.json in the current working directory; --execute applies renames (default is dry-run table) |
|
| gdoc | Pull/push Google Docs as Markdown (`b gdoc pull | push |
Movies + LLM
b movies asks an LLM for normalized names. --service <name> selects a provider for one run (groq, google, openai, anthropic, mistral, deepseek, xai, bedrock, ollama — see b movies --help). Without it, the provider comes from LLM_SERVICE, else from the first API key in the environment, else ollama. Set keys in the process environment or in bhtool/.env (loaded from the installed package directory). Each provider uses one cheap model from bhtool/llm_services.py through pydantic-ai.
jtools
Node CLI: pug formatting, agent config copy. Usage: jtools <subcommand>
Install: cd jtools && npm install — dependencies only; this package is not published, so run it from that directory (or npm link after install).
Run (after install): npx jtools <subcommand> resolves the local jtools binary (same as node_modules/.bin/jtools). Examples: npx jtools format-pug, npx jtools copy-agent.
| Subcommand | Description |
|---|---|
| format-pug | Format pug in./index.html |
| copy-agent | Copy~/.claude/CLAUDE.md → ./AGENT.md |
Metadata
Release files for bhtool 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| bhtool-0.5.0.tar.gz | 19.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| bhtool-0.5.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 43.0 kB
Release files / bhtool-0.5.0.tar.gz
| Download URL | bhtool-0.5.0.tar.gz |
|---|---|
| Size | 19.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
af45826e246b9ac336ece2f9a14453cfc507c0fc1689b1b7f318cfcf2806fd5a
|
|
BLAKE2b-256 checksum How to use checksums |
2901d3dab14f284919c000407458e1f88f264948f5f00305cb85b29459b19074
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / bhtool-0.5.0-py3-none-any.whl
| Download URL | bhtool-0.5.0-py3-none-any.whl |
|---|---|
| Size | 23.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c60255ef3f12641234eae9c52522b369ca331ebf87f797d41a89dbc3a155aa95
|
|
BLAKE2b-256 checksum How to use checksums |
85189fbc2227f6351a03c392131ed71a5b0a293656830b373831525eaf2ab515
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|