← ClaudeAtlas

komodosolid

Read and drive a Komodo deployment orchestrator, stacks, deployments, servers, builds, container logs and alerts via the Komodo Core API. Use when the user asks about Komodo, their stacks/deployments/containers, what is running where, or wants something deployed, restarted or stopped.
intentic/intentic · ★ 46 · DevOps & Infrastructure · score 82
Install: claude install-skill intentic/intentic
# Komodo (connected) Core at `$KOMODO_ADDRESS`, credentials in `$KOMODO_API_KEY` + `$KOMODO_API_SECRET`. Every call is `POST $KOMODO_ADDRESS/<read|write|execute>/<Operation>` and **the body is the params object itself**: there is no `{"params":{…}}` wrapper on this path form. Sending one deserializes as *empty* params, so zero-argument operations still answer and every operation with a required field fails with ``missing field `stack` ``. Define this helper once per shell: `komodo <module>/<Operation> ['<params json>']`: ```sh komodo() { local p='{}'; [ -n "$2" ] && p="$2"; curl -s -H "x-api-key: $KOMODO_API_KEY" \ -H "x-api-secret: $KOMODO_API_SECRET" -H "content-type: application/json" \ -d "$p" "$KOMODO_ADDRESS/$1"; } ``` Responses carry every field Komodo knows; project them with `jq` instead of reading them whole. - Who am I: `curl -s -H "x-api-key: $KOMODO_API_KEY" -H "x-api-secret: $KOMODO_API_SECRET" "$KOMODO_ADDRESS/user" | jq '{username, admin}'`, a GET, the one call that is not a POST envelope - Stacks (compose): `komodo read/ListStacks | jq -c '.[] | {name, state: .info.state, status: .info.status, server: .info.server_id}'` - A stack's compose file: `komodo read/GetStack '{"stack":"<NAME>"}' | jq -r '.config.file_contents'`, empty when the stack is git-backed or host-backed, and then `.config.repo` / `.config.file_paths` / `.config.files_on_host` say where it really lives - Images, and what is out of date: `komodo read/ListStacks | jq -c '.[] | {name, ser