| name | gemini-image-recognize-install |
| description | Make the gemini-image-recognize command available, installing it only if it is missing. Use when another skill reports that `gemini-image-recognize` is not on PATH, or when the user asks to install, update or upgrade the ideamans Gemini image recognition CLI. Prefers an already-installed binary, then the latest GitHub release, then a build from source with go install. |
| license | MIT |
| compatibility | Requires curl (or wget) and tar to install from a release, or a Go toolchain for the source fallback. Standalone — does not need gemini-image-recognize to be present already. Installs from the public repository github.com/ideamans/gemini-image-recognize-cli, so no GitHub authentication is needed. |
| allowed-tools | Bash(curl:*) Bash(wget:*) Bash(tar:*) Bash(unzip:*) Bash(go:*) Bash(uname:*) Bash(command:*) Bash(which:*) Bash(mkdir:*) Bash(mv:*) Bash(cp:*) Bash(rm:*) Bash(chmod:*) Bash(ls:*) Bash(test:*) Bash(echo:*) Read |
gemini-image-recognize-install
Make the gemini-image-recognize command usable, doing the least work that
achieves it.
Route 1 — an existing installation on PATH
command -v gemini-image-recognize && gemini-image-recognize --version
If that resolves, use it and stop here. Do not check for a newer release —
it costs an API call and the user did not ask for an upgrade.
Two checks before trusting the hit:
- It is the right tool.
gemini-image-recognize llm | head -1 must read
# gemini-image-recognize — Gemini image recognition CLI (reference for AI agents).
If something else owns the name, tell the user and use an explicit path rather
than shadowing theirs.
- It is recent enough. If
gemini-image-recognize llm is not a known
command, the binary predates the embedded reference. Say so and continue to
route 2 to upgrade it.
Continue past this section only when the command is missing, is the wrong tool,
is too old, or the user explicitly asked to update.
Route 2 — the latest GitHub release
The repository is public, so no authentication is needed.
VERSION=$(curl -fsSL https://api.github.com/repos/ideamans/gemini-image-recognize-cli/releases/latest \
| grep '"tag_name"' | head -1 | cut -d'"' -f4)
The archive is named after the goreleaser project, not the repository —
gemini-image-recognize, without the -cli suffix:
gemini-image-recognize_<version-without-v>_<os>_<arch>.tar.gz
<os> is darwin, linux or windows (lowercase); <arch> is amd64 or
arm64, so uname -m reporting x86_64 maps to amd64. Windows ships a
.zip.
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m); [ "$ARCH" = "x86_64" ] && ARCH=amd64
curl -fsSL -o /tmp/gemini-image-recognize.tar.gz \
"https://github.com/ideamans/gemini-image-recognize-cli/releases/download/${VERSION}/gemini-image-recognize_${VERSION#v}_${OS}_${ARCH}.tar.gz"
If the download 404s, list the actual assets on the release page rather than
retrying variations.
Install onto PATH
tar -xzf /tmp/gemini-image-recognize.tar.gz -C /tmp
mkdir -p ~/.local/bin && mv /tmp/gemini-image-recognize ~/.local/bin/ \
&& chmod +x ~/.local/bin/gemini-image-recognize
Prefer the first writable directory already on PATH — ~/.local/bin, then
/usr/local/bin. Two things not to do on your own initiative:
- If nothing on PATH is writable, leave the binary in
/tmp, print the exact
sudo mv command and let the user run it. Do not run sudo yourself.
- If
~/.local/bin is not on PATH, give the user the line to add to their shell
profile. Do not edit the profile for them.
Route 3 — build from source
Needs a Go toolchain and compiles rather than downloads, so it is the last
resort — but it covers platforms the release assets miss. Note the
/cmd/gemini-image-recognize suffix; installing the module root would not build
anything.
go install github.com/ideamans/gemini-image-recognize-cli/cmd/gemini-image-recognize@latest
The binary lands in $(go env GOPATH)/bin and is named
gemini-image-recognize, the same as the release archive's.
Verify
gemini-image-recognize --version
gemini-image-recognize llm | head -5
Report which route was taken, the version and the install path.
Then say what is still needed: the CLI cannot describe anything without a Gemini
API key. Tell the user now rather than letting the first real command fail —
they need a key from https://aistudio.google.com/apikey, supplied either as
export GEMINI_API_KEY=<key>
or stored once with gemini-image-recognize configure --key-file <path>. Verify
with gemini-image-recognize auth status, and never ask them to paste the key
into the conversation.