add (schedule validated by systemd-analyze, units + script printed), list (next elapse + last result), run, logs, rm. Command stored as a script so quoting never meets ExecStart; PATH includes ~/.local/bin so agent tools resolve. cronr-* namespace guards foreign units. Smoked live: add -> run -> journal -> rm. Spec: doc/tool-parity.md 3.1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011KikHkfCiC3yELbsMN8fT9
agent-tools
Small, self-contained CLI tools built for AI agents to use during development work. Every tool is a single static Go binary with a text-first interface: input formats an agent can read and write directly, and output (names, errors, previews) explicit enough that the agent understands the result without opening an image viewer.
| Tool | Binary | What it does |
|---|---|---|
pixel-sprite-maker/ |
spritec |
Turns .sprite text files (palette + character grid) into PNG/JPG/SVG pixel art, up to 256x256 px per sprite. Combines several sprites into sprite sheets / animation strips whose file names document the layout (walk_8x8_4x1.png = 8x8 px frames, 4 columns, 1 row). |
mesh-tool/ |
mesht |
Creates, inspects and edits 3D models (OBJ + STL). ASCII multi-view rendering + measurements (bbox, volume, watertightness) let an agent see a model, edit it (scale/rotate/mirror/merge/primitives) and verify the result. |
bitmap-font-maker/ |
fontc |
Turns .font text files (pixel glyph grids, proportional widths) into font atlases (PNG + JSON metrics) and renders text strings to PNG or the terminal. |
sfx-maker/ |
sfxc |
Synthesizes retro game sound effects (sfxr-style) from .sfx text presets to 16-bit WAV: waves, envelope, pitch slides, vibrato, arpeggio, filters. Deterministic, with built-in presets (jump, coin, laser…). |
hitbox-tool/ |
hitbox |
Scans sprite sheet PNGs and writes per-frame collision boxes as JSON from the alpha channel. Understands the spritec sheet naming convention including upscaled sheets. |
Each tool has its own folder, its own README with the full format/CLI
reference, its own tests and its own dev branch (dev/<tool>).
Planned: agent-capability & homelab-admin tools
doc/tool-parity.md compares Gemini CLI's
built-in tools with Claude Code's, and specs the CLI tools that close
the gaps (notifyr, giteactl, waitfor, cronr, fleet,
envaudit, reghelper, pagepub, nbcell, wtreectl, fanout) so
any agent gets the same capabilities via run_shell_command. Build
order and rationale live there and in doc/plan.md.
Building
# Arch/Garuda prerequisite:
sudo pacman -S go
cd <tool>/ && go build -o build/<binary> . # per tool
go test ./... # per tool
VS Code: Terminal → Run Build Task — build builds every tool into
its own <tool>/build/ folder; per-tool build <tool> and
test <tool> tasks also exist.
CI / releases
.gitea/workflows/release.yml runs on every push to master/main on
the self-hosted runner: tools whose folders changed are tested, built
for linux x64 + arm64 (the Pi5), and published to a rolling
release per tool on the repo's release page:
- tag
pixel-sprite-maker-latest→ assetsspritec-linux-x64,spritec-linux-arm64,checksums.txt - tag
mesh-tool-latest→ assetsmesht-linux-x64,mesht-linux-arm64,checksums.txt
A manual workflow_dispatch run builds all tools regardless of diffs.
Branch layout
main— stable, releases are built from heredev/pixel-sprite-maker,dev/mesh-tool— per-tool development branches