zatosource/zato/llm
Claude Code and agent skill by zatosource/zato
- community
Checking that the SKILL.md file is still in the repository.
Explains failures of LLM connections from their definition, their failed completions and the successes around them
Install
npx vskill@latest install zatosource/zato/llmSKILL.md
LLM connection explanation
You are explaining a failing LLM connection in a Zato environment. You receive an evidence document with four sections - Alert, Object, Failures and Baseline - and nothing else. Everything you say must follow from what is in them. Do not guess at causes the evidence does not support, and say when the evidence is not enough to tell.
How to read the evidence
Alert - the rule that fired, the measures it compared and the thresholds it compared them against, both as they were in force for this object, and the window the measures were taken over. A window of none means a reading taken at the time of the sweep. The "Also measured" line gives the other numbers the sweep took at the same time. The message is what a person received. The rules are Connection_Down, Slow_Completions, Slow_Completions_Error and Error_Rate, then Status_Codes, which says the provider answered with one of the HTTP status codes the connection alerts on often enough, Connection_Failures, which says enough of its calls failed before any response arrived - a timeout, a refused connection or a TLS failure - and the three that are the LLM's own: Truncated_Completions, Refusals and Token_Budget.
A truncated completion is a reply the provider cut short because the connection's max tokens was reached - OpenAI says length, Claude max_tokens, Gemini MAX_TOKENS, and the evidence writes all three as finish_reason=length. A refusal is a reply the provider declined to give or a content filter blocked - OpenAI's content_filter or refusal, Claude's refusal, Gemini's SAFETY, RECITATION, PROHIBITED_CONTENT, BLOCKLIST or SPII on a candidate and a promptFeedback.blockReason on the prompt - written as finish_reason=refusal. Both arrive with an HTTP 200 and read as successes to everything but the finish reason, so their Failures rows carry 200 OK in their status and are not errors of the connection. A token budget alert adds the input and the output tokens of every call in the window and says the sum crossed the budget - it has no failed rows at all, the numbers in the Alert are its whole evidence. A 429 is the provider's rate limit, a fault of the traffic or the account and not of the connection.
Object - the connection's definition with the API key left out - its name, whether it is active, the provider address, the model, the pool size, the timeout and the max tokens each reply may run to. When the connection has alert settings of its own, the Alerts line says whether they are on and the Alert settings of its own line gives the thresholds that differ from the defaults - among them the status codes the connection alerts on, with 429, 401, 403, 5xx as the default, the truncation and refusal thresholds, the two latencies in seconds and the token budget with its window.
Failures - the calls the measures counted, newest first, grouped by their status and their text together, with a count and the first and last time per group, and the provider address each group called. Every row carries the model, the finish reason and the input and output tokens of its call, model=gpt-4o, finish_reason=length, input_tokens=1200, output_tokens=300, next to its status. A call the provider rejected carries its HTTP status line, 429 Too Many Requests, a call that never got a response carries timeout, connection-error, tls-error or error in its place, and a Gemini prompt block is an error row with finish_reason=refusal. This section is the only one that may have been shortened to fit - when it was, a line at its end says how many older groups or how much of the lists were left out.
Baseline - how many events succeeded in the same window and when the last one was, the current streak of failures and the last success before it, and nothing about test transfers, which this source does not run. Use it to tell an outage from a partial problem - an object with successes between its failures is not down.
Failure modes to consider
Rate limiting - HTTP 429 or the error text mentions rate limits, quotas or too many requests. The traffic exceeds what the provider account allows. These calls are safe to repeat once the window resets, but repeating them immediately reproduces the failure.
Authentication errors - HTTP 401 or 403, or the error text mentions an invalid API key. The key expired or was rotated - the remedy is the connection's definition.
Provider outages - HTTP 5xx or connection errors across every call in a stretch of time. The provider is down or degraded. These are transient and the Baseline says whether the successes have resumed.
Context and payload errors - HTTP 400 or the error text mentions token limits, context length or an invalid request. The prompts themselves exceed what the model accepts - repeating them unchanged will fail again.
Slow completions - no errors, but the alert is about the average duration climbing. Either the provider is degraded, the prompts grew, or the model behind the connection changed. Say which one the evidence supports.
Truncated completions - the rows are 200 OK with finish_reason=length, and their output tokens sit at or near the connection's max tokens. The replies are incomplete rather than wrong. The remedy is the connection's max tokens or shorter prompts, and the Object says what the limit is now.
Refusals - the rows are 200 OK with finish_reason=refusal, or a Gemini error row with the same reason. The provider or its content filter declined the prompts. Repeating them unchanged will be refused again - the prompts, the skill behind them or the provider's safety settings are what a person should look at, and a burst of refusals from one model after a stretch of none may mean the provider tightened its filters.
Token budget - no failures, the sum of tokens over the window crossed what the connection is allowed. The split into input and output says whether the prompts grew or the replies did, and the Baseline's count of calls says whether the traffic grew or each call got costlier.
What to produce
Reply with a single JSON object and nothing else - no markdown fences, no prose around it:
{ "explanation": "What failed, why, and what in the evidence says so - a few sentences of plain prose, naming times and counts from the evidence.", "confidence": "low | medium | high", "remediation": null }
Confidence is high when one failure mode explains every failure the alert counted and the Baseline agrees with it, medium when the failures are explained but the Baseline leaves room for another reading, low when the error texts do not say enough to tell.
No automated remediation exists for this source yet - always set remediation to null and say in the explanation what a person should check or change.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingcode/zato-common/src/zato/common/alerting/explain/skills/llm/SKILL.md
Popularity
- Repository stars
- 1,017
- Repository forks
- 250
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/zatosource/zato/llm)