Analyze all failures in a convex-evals run, spawning parallel sub-agents to investigate each failure and producing a report with classifications and recommendations. Use when the user asks to analyze an entire run, review all failures in a run, or wants to understand why a model scored poorly.
npx skills add https://github.com/get-convex/convex-evals --skill analyze-run
https://convex-evals.netlify.app/experiment/.../run/$runId/...Extract the run ID from the visualizer URL. The URL pattern is:
/experiment/$experimentId/run/$runId/...
The $runId is the Convex document ID (e.g. jn7922j1w29pdxm76bj9ps0enx80mg9e).
Reports are stored in reports/{provider}/{model}/ (e.g. reports/anthropic/claude-opus-4-6/).
List the directory for the model being analyzed and read the most recent report(s). This gives you:
Reference prior findings when the same eval fails again — note whether it's a repeat and whether any prior fix should have resolved it.
Run from the evalScores/ directory:
npx convex run --prod debugQueries:getFailedEvalsForRun '{"runId": "<runId>"}'
This returns:
run -- model name, provider, experiment, statustotalEvals, passedCount, failedCount -- overall statsfailedEvals -- array of failed evals, each with _id, evalPath, category, name, failureReason, and failedStep (which step failed and its error)If there are no failures, report that all evals passed and stop.
For each failed eval, spawn a sub-agent (up to 4 in parallel) with this prompt template:
You are investigating a failing eval from the convex-evals system.
The workspace is at c:\dev\convex\convex-evals
Run this command from the evalScores/ directory:
npx convex run --prod debug:getEvalDebugInfo '{"evalId": "<EVAL_ID>"}'
Then analyze the result:
1. Which step failed and what was the exact error?
2. Look at the model's generated code in outputFiles.
3. Look at the expected answer and grader in evalSourceFiles.
4. Look at the task description in eval.task.
5. Is this a genuine model mistake, or is the test/lint/task unfair?
Classify the failure as one of:
- MODEL_FAULT: The model genuinely got it wrong
- OVERLY_STRICT: The eval/lint/test requirements are unreasonable for what was asked
- AMBIGUOUS_TASK: The task description is unclear and the model's interpretation was reasonable
- KNOWN_GAP: A known limitation of this eval that affects all models (e.g. the Convex API returns fields the model can't predict without being told)
Return a structured summary:
- Eval: <name> (<category>)
- Failed step: <step name>
- Error: <one-line error summary>
- Classification: <one of the above>
- Reasoning: <2-3 sentences explaining your classification>
- Model output snippet: <the relevant problematic code, if applicable>
- Expected code snippet: <what the answer looks like, if applicable>
Once all sub-agents return, build the analysis:
For each failure, list: eval name, failed step, classification, one-line reasoning.
Look for patterns across failures:
Group recommendations by type:
Always create a report file at:
reports/{provider}/{model}/{runIdPrefix}_{date}.md
For example: reports/anthropic/claude-opus-4-6/jn72t14a_2026-02-06.md
The runIdPrefix is the first 8 characters of the run ID.
The report should contain:
Present the full analysis to the user. End with:
"These are my findings. Would you like me to implement any of these recommendations, or would you like to discuss specific failures in more detail?"
Do NOT make any code/config changes until the user explicitly asks.
If the user asks you to implement any recommendations, update the report file's "Actions taken" section after making the changes. Record:
This ensures future analysis sessions can see which recommendations were already acted on and avoid re-recommending changes that have already been made.
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or tool integrations.
Replace with description of the skill and when Claude should use it.
Use when facing 2+ independent tasks that can be worked on without shared state or sequential dependencies
This skill should be used when the user wants to "create a skill", "add a skill to plugin", "write a new skill", "improve skill description", "organize skill content", or needs guidance on skill structure, progressive disclosure, or skill development best practices for Claude Code plugins.
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
Use when creating new skills, editing existing skills, or verifying skills work before deployment
Take get-convex/analyze-run from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.
The instructions reference npx.
Without those the skill loads but fails at the first command.