🚀 v0.2.5 Released

Build Faster with Toolbelt CLI

An opinionated developer productivity CLI built with Python 3.11+, Typer, Rich, and Claude API. Scaffold robust projects across Python, Node, and Java, draft Conventional Commits from staged diffs, and audit repositories with auto-repair.

Toolbelt CLI in action screenshot

Core Highlights

🚀

Multi-Language Scaffolding

Generate opinionated, production-ready project templates for Python, Node.js / TypeScript, and Java with pre-configured linters, unit tests, GitHub Actions CI, and Dockerfiles.

🤖

AI Commits with Claude

Analyzes your staged git diff and drafts structured Conventional Commit messages using Claude Sonnet 4. Includes a deterministic rule-based fallback when offline.

🔍

10-Point Repo Auditor

Audits repositories for README sections, test suites, licenses, CI configs, and .gitignore rules. Features --fix to auto-create missing standard files.

📦

PyPI Sync & Dual Alias

Inspects your installed version and queries the PyPI API for newer releases. Ships with dual entrypoints: toolbelt and the Swahili alias zana.

Installation

Toolbelt CLI is distributed on PyPI and can be installed through any modern Python package manager.

# Isolated install in its own virtual environment
pipx install toolbelt-cli
# Blazing-fast installation via astral uv
uv tool install toolbelt-cli
# Standard pip install
pip install toolbelt-cli
git clone https://github.com/crnjihia/toolbelt-cli.git
cd toolbelt-cli
pip install -e ".[dev]"
💡
Dual CLI Aliases: Installing the package registers both toolbelt and zana (Swahili for "tools"). Both commands are 100% equivalent.

Quickstart

Run toolbelt --help to see global flags and available commands:

$ toolbelt --help

Usage: toolbelt [OPTIONS] COMMAND [ARGS]...

  Toolbelt – developer productivity CLI: scaffolding, AI commits, and audits.

Options:
  --install-completion          Install completion for the current shell.
  --show-completion             Show completion for the current shell.
  --help                        Show this message and exit.

Commands:
  audit    Audit repo for README sections, .gitignore, licenses, and CI.
  commit   Generate Conventional Commit messages from diff using Claude API.
  new      Scaffold a new project (python, node, java) with opinionated defaults.
  version  Print installed version and check PyPI for updates.

Interactive Terminal Simulator

Test real CLI commands directly in your browser. Click any quick shortcut or type any command below:

bash — toolbelt-cli v0.2.5 simulator
Quick Run:
$ toolbelt audit .
Repository Audit: toolbelt-cli ┌────────────────────────────┬──────────┬──────────────────────────┐ │ Check │ Status │ Details │ ├────────────────────────────┼──────────┼──────────────────────────┤ │ README.md exists │ ✅ │ 344 lines │ │ README has Install │ ✅ │ found "## Installation" │ │ README has Usage │ ✅ │ found "## Usage" │ │ README has License │ ✅ │ found "## License" │ │ LICENSE file │ ✅ │ MIT │ │ .gitignore exists │ ✅ │ 29 entries │ │ .gitignore has __pycache__ │ ✅ │ │ │ Tests directory │ ✅ │ tests/ found │ │ CI config │ ✅ │ .github/workflows/ci.yml │ │ pyproject.toml │ ✅ │ │ └────────────────────────────┴──────────┴──────────────────────────┘
💡 Type a command below or press one of the quick test buttons above.
$

toolbelt new <type> <name>

Scaffolds a new project directory with opinionated defaults, complete with interactive Rich prompts or non-interactive automation flags.

# Interactive scaffolding
toolbelt new python my_api_service

# Non-interactive scaffolding with all defaults accepted
toolbelt new python my_api_service --yes

# With custom flags
toolbelt new node web_client --author "Jane Doe" --license Apache-2.0 --ci --no-docker

Arguments & Options

Argument / Option Type Default Description
type Argument (required) Project ecosystem: python, node, or java.
name Argument (required) Target directory and package/module name.
-a, --author Option Git user.name Author name injected into License, Readme, and manifests.
-l, --license Option MIT License choice: MIT, Apache-2.0, or none.
--ci / --no-ci Option True Include .github/workflows/ci.yml pipeline.
--docker / --no-docker Option False Include multi-stage Dockerfile.
-y, --yes Flag False Accept all default prompts automatically without pausing.

toolbelt commit

Inspects your currently staged Git diff (git diff --staged) and drafts a Conventional Commit message conforming to <type>(<scope>): <subject>.

# Stage your modifications first
git add src/

# Run commit generator
toolbelt commit
┌────────────────────────── Proposed Commit Message ──────────────────────────┐
│ feat(auth): add bearer token validator and refresh middleware │
└─────────────────────────────────────────────────────────────────────────────┘

Apply commit? [y/n/edit] (y): y
✅ Commit created successfully!

Dual Intelligence Modes

🤖 Claude Sonnet 4 (Online)

When ANTHROPIC_API_KEY is exported, Toolbelt sends your staged diff to Claude Sonnet 4 with system rules enforcing strict Conventional Commit types: feat, fix, docs, style, refactor, test, chore.

⚡ Heuristic Analyzer (Offline Fallback)

If no API key is detected or the network is unavailable, Toolbelt analyzes changed filenames, lines added/removed, and directory patterns to produce clean commits like test: update 2 files (+18/-3 lines).

Options

Option Type Default Description
--dry-run Flag False Print proposed commit message without creating a commit.
-t, --type Option Auto Force commit type (e.g., feat, fix, chore).
-s, --scope Option Auto Force commit scope (e.g., api, ui, parser).
-y, --yes Flag False Commit immediately without interactive confirmation.

toolbelt audit [path]

Scans any local repository for essential documentation, licenses, configuration files, and quality infrastructure across 10 critical checks.

# Audit current directory
toolbelt audit .

# Audit with interactive auto-fix for missing .gitignore and LICENSE
toolbelt audit . --fix

# Output machine-readable JSON for CI pipelines
toolbelt audit . --json

The 10 Audit Verification Checks

Check Name What is Verified Failure Criteria
README.md exists Verifies file presence & line count File is missing
README has Install Regex checks for ## Installation section Missing installation instructions
README has Usage Regex checks for ## Usage section Missing usage guides
README has License Regex checks for ## License section Missing license attribution
LICENSE file Inspects root LICENSE file content File is missing
.gitignore exists Verifies file and counts rule entries File is missing
.gitignore has __pycache__ Ensures Python cache ignores exist Missing __pycache__ ignore rule
Tests directory Checks tests/, test/, or src/test/ No non-empty test directory found
CI config Checks .github/workflows/*.yml No CI workflow files exist
pyproject.toml Checks Python build metadata file File is missing
🛡️
CI Gate Ready: toolbelt audit returns an exit code of 0 when all 10 checks pass, and 1 if any check fails, making it ideal as a GitHub Actions gatekeeper or pre-commit hook.

toolbelt version

Reads the locally installed package version using importlib.metadata and asynchronously queries the PyPI JSON API via HTTPX to notify you if an update has been released.

$ toolbelt version

╭───────────────────────────────╮
│ toolbelt-cli version: 0.2.0   │
╰───────────────────────────────╯
A newer version 0.2.5 is available!
Run: pip install -U toolbelt-cli

Configuration & Environment

Toolbelt CLI requires no configuration to run offline. To enable AI-powered commit generation, export your Anthropic API key:

.env / Shell Export
# Optional Anthropic API Key for Claude-powered commits
export ANTHROPIC_API_KEY="sk-ant-api03-..."

# Optional custom log level for internal debugging
export LOG_LEVEL="INFO"

Architecture & Tech Stack

Toolbelt CLI is architected around separation of concerns, decoupling Typer command definitions from service logic and templates:

Typer & Rich

Type-hinted CLI parser with automatic help generation, formatted tables, rounded panels, and prompt dialogs.

Jinja2 Engine

FileSystemLoader template rendering with recursive file walker and path-placeholder resolution.

Anthropic + Fallback

Claude Sonnet 4 client wrapped in graceful fallback heuristics when running in offline or CI environments.

Testing & Quality Assurance

The codebase maintains a 100% offline unit test suite powered by pytest and Typer's CliRunner.

# Run all 19 offline unit tests
$env:PYTHONPATH="src"; pytest -v

# Code hygiene with Ruff linter
ruff check .

# Code formatting with Ruff formatter
ruff format --check .

# Static type checking with MyPy
mypy src

PyPI Trusted Publishing (OIDC)

This repository uses GitHub Actions Trusted Publishing with OpenID Connect (OIDC). No long-lived passwords or API tokens are stored in repository secrets.

# 1. Update version in pyproject.toml & CHANGELOG.md
# 2. Tag release and push to GitHub
git tag v0.3.0
git push origin v0.3.0

# GitHub Actions release.yml builds the wheel and sdist,
# executes twine check, and publishes to PyPI automatically!

Contributing & License

Contributions, bug reports, and pull requests are warmly welcomed! Please check existing issues on GitHub Issues before opening a new one.

Released under the MIT License. Copyright © 2026 Christopher Njihia.