name: shimmy-create-tool description: Create or extend a Shimmy tool kind and its concrete CLI versions. Use when adding a wrapped CLI, selecting its image strategy, adding a version track, or wiring tool-local metadata, runtime, tests, guide, and agent guidance.
Shimmy Tool Creation
Read first
- Read
CONTRIBUTING.md,docs/prompt-shimmy-project.md, and the context path from root to the target tool. - Inspect a comparable tool under
tools/before introducing structure. - Check upstream documentation for required companion tools and choose the image strategy before editing. Ask the user when viable image or version choices materially differ.
Model
- A kind is the stable user command, such as
jqoroc. tools/<kind>/tool.confdeclares the default concrete version and optional selector environment variable.tools/<kind>/versions/<major.minor>/run.showns all Podman, image, mount, credential, and local-build behavior.commands/run-tool.sh <kind> ...performs generic source dispatch. Do not put tool-specific runtime behavior in a dispatcher or shared core module.
Required tool surface
Create or update the following as applicable:
tools/<kind>/tool.conf,guide.md,CONTEXT.md, andagent/SKILL.md;tools/<kind>/versions/<major.minor>/run.sh,smoke.conf, andCONTEXT.md;container/Containerfileand its context only for local-build versions;tools/<kind>/tests/for behavior not covered by generic catalog tests.
Keep the runtime a small POSIX shell wrapper with #!/bin/sh and set -eu.
Mount $PWD at /work unless the tool's context documents an exception. Use
the shared Podman helper for platform selection. Shimmy-defined environment
variables must start with SHIMMY_.
When an image must work on both Linux amd64 and macOS arm64, prefer a
fully qualified manifest-list digest supplied by the image publisher. Do not
pin an architecture-specific image digest or tag as the default: Podman must
select the matching platform image while the shared runtime helper retains
responsibility for --platform.
Dependency and safety gate
Before adding a tool, identify required companion CLIs, plugins, credentials, and network privileges from primary upstream documentation. If a required dependency is neither bundled by the selected image nor available through the requested design, stop and obtain a user decision. Do not silently rely on a host-installed companion tool.
For security-sensitive capabilities, keep network access, privileges, credentials, and write operations explicit opt-ins. Document the safe default in the guide and the tool skill.
Metadata and lifecycle
tool.conf is the source of truth for kind defaults and selectors. smoke.conf
is the source of truth for the concrete version's non-mutating smoke command.
Do not add central tool-name, status-image, or refresh case lists. Follow the
existing catalog and lifecycle contracts until version-local refresh hooks
replace the remaining update logic.
Validation
Run, as applicable:
./commands/run-tool.sh <kind> --preview-shim --help
./shimmy test
git diff --check
Use a live non-mutating --version, version, or --help smoke only after
Podman and the exact outer Shimmy wrapper command have the required approval.
For installed behavior, use a disposable install root and inspect
shimmy status --format manifest rather than relying on command -v alone.