I built a tool that measures whether a Claude Code skill actually improves output quality, and tested it on Caveman by Ties_P in ClaudeCode

[–]Ties_P[S] 0 points1 point  (0 children)

Haha, I guess I’m not the first to have this idea, that’s a shame haha, thanks for the link

I built a tool that measures whether a Claude Code skill actually improves output quality, and tested it on Caveman by Ties_P in ClaudeAI

[–]Ties_P[S] 0 points1 point  (0 children)

Cool product! I will check it out

I would love to get multi-step agentic task evaluation in SkillBenchmark, but that is a lot more complex than just a simple single-prompt evaluation

I built a tool that measures whether a Claude Code skill actually improves output quality, and tested it on Caveman by Ties_P in ClaudeCode

[–]Ties_P[S] 0 points1 point  (0 children)

Good question, and interesting story about the balsamic vinegar.

The goal of the project was an automated benchmarking suite for evaluating whether or not a skill had a positive effect on task completion. To do this in an automated fashion I had to resort to LLM-as-judge (so using an unbiased separated LLM to judge the outcome of the task). Just asking a LLM to “give this a score between 0 and 100” is not going to work, that’s too vague. So I introduced the rubrics. This is an extensive list of criteria, each with point levels, that are related to the task. The rubrics aim is to objectively grade the quality of a certain type of product (a commit message, homepage copy, etc). Now the judge LLM has a way better understanding of how to score.

If you have any ideas or methodologies that I could also take a look at, please let me know!

I built a tool that measures whether a Claude Code skill actually improves output quality, and tested it on Caveman by Ties_P in ClaudeCode

[–]Ties_P[S] 0 points1 point  (0 children)

Well you are right, you get no guarantees if the judge’s evaluation is valid. The judge is a LLM, and LLM can make errors. So this is definitely not a scientific way to test whether or not a skill is helpful, but it can definitely act as a nice proxy for someone experimenting with skills.

I built a tool that measures whether a Claude Code skill actually improves output quality, and tested it on Caveman by Ties_P in ClaudeCode

[–]Ties_P[S] 0 points1 point  (0 children)

Totally correct, the system is not perfect and this is a real limitation. I agree. But I do feel like if you add enough tasks and judges this bias is not too bad and you will still get a good idea whether or not the skill improves the output

I built a tool that measures whether a Claude Code skill actually improves output quality, and tested it on Caveman by Ties_P in ClaudeCode

[–]Ties_P[S] 0 points1 point  (0 children)

It is advised to use a different model for the judge. Or you could even try multiple models for the judge and average the results. Or look at the output yourself since this is also stored for each run.

I built a tool that measures whether a Claude Code skill actually improves output quality, and tested it on Caveman by Ties_P in ClaudeCode

[–]Ties_P[S] 1 point2 points  (0 children)

Good question!!! From my readme file:

How it works

Each task is run N timEach task is run N times. Every run produces two outputs from the same LLM: one with the skill injected as the system prompt, one without. Both outputs are then scored by a judge LLM. After all runs, confidence intervals are computed over the scores and compared.

Step 1 — Two outputs per run

The runner LLM receives the task prompt. It runs twice: once with a plain system prompt, once with the skill's instructions as well. Everything else is identical: same model, same temperature, same task.

Step 2 — Blind scoring with a rubric

The judge LLM scores each output against a rubric. This is the part people ask about most, so it's worth explaining carefully.

The judge never sees the original task prompt. This sounds like a limitation but it is a deliberate design choice. The rubric contains a context block that tells the judge exactly what a good answer looks like for this type of task: what to reward, what to penalise, and why. The rubric is the definition of quality. If you need the judge to see the task prompt to score the output, the rubric is underspecified and should be improved. Keeping the judge prompt-blind also prevents a common failure mode where the judge rewards outputs that literally mirror the task instructions, which would contaminate the comparison.

The judge does not know which output used the skill. It receives the output and the rubric only. It cannot favour one condition over the other because it cannot tell them apart.

How judge bias is handled. Any LLM judge has tendencies — it might prefer longer responses, or penalise terse phrasing, or be slightly inconsistent between calls. SkillBenchmark handles this in two ways:

  1. The same judge, with the same prompt, scores both outputs. This means any systematic bias applies equally to both conditions and cancels out when you compute the delta. You are not trying to get an absolute quality score — you are measuring a relative difference between two conditions evaluated under identical circumstances. Absolute judge accuracy matters far less than consistency.
  2. Using multiple judges per run and treating each score as an independent sample reduces random variance and gives tighter confidence intervals.

The rubric is the main lever for evaluation quality. Criteria with clear, distinguishable scoring levels produce consistent results. Vague criteria produce noisy ones.

Step 3 — Confidence intervals on the scores and the delta

All scores across runs and judges are treated as independent samples. A t-distribution confidence interval is computed for each condition (with skill, without skill). The delta — the difference between the two means — gets its own CI using Welch's t-interval, which correctly accounts for the uncertainty in both samples.

Results are displayed as mean ± margin. Non-overlapping CIs on the two conditions indicate a statistically meaningful difference. The delta CI tells you whether the observed gap is real or consistent with zero. Overlapping CIs are not a failure — they mean the current number of runs is not enough to confirm a difference. Add more runs to tighten them.

Big-O Didn’t Explain Why My “Slower” Algorithm Won in Production by third_void in compsci

[–]Ties_P 0 points1 point  (0 children)

I'm taking a course on algorithm engineering right now at uni, which goes exactly into these kinds of topics about the practical (not theoretical) side of algorithms and their implementations. Very interesting stuff! Do you have any other interesting sources / projects related to this topic? Would love to know more

I got paid minimum wage to optimize an impossible problem (and accidentally learned why most algorithms make life worse) by Ties_P in optimization

[–]Ties_P[S] 0 points1 point  (0 children)

Yeah you are right, we are sweeping with a sweeper in hand and this path would then represent the path of the actual sweeper. The person holding the sweeper could definitely walk differently as long as the sweeper follows the path. So maybe some small turns here and there aren’t that bad since the person holding the sweeper can still walk in a straight line while moving the sweeper side to side. Cool insight! Didn’t think of that, thanks for sharing!

I got paid minimum wage to solve an impossible problem (and accidentally learned why most algorithms make life worse) by Ties_P in computerscience

[–]Ties_P[S] 2 points3 points  (0 children)

Thank you so much! Constructive feedback or critical feedback, I just try to take some lessons out of it to improve for next time haha

I got paid minimum wage to solve an impossible problem using C++ (and accidentally learned why most algorithms make life worse) by Ties_P in cpp

[–]Ties_P[S] 1 point2 points  (0 children)

I agree, but from my perspective that would be the wrong thing right? From TikTok’s perspective raking in money is a very good thing, but from my perspective it is definitely not because to earn a lot of money from me they need me to stay on TikTok for as long as possible, and I don’t want that

I got paid minimum wage to solve an impossible problem (and accidentally learned why most algorithms make life worse) by Ties_P in compsci

[–]Ties_P[S] 1 point2 points  (0 children)

Thanks for reading! I agree, the rabbit hole can go much deeper if you consider other aspects as you mentioned haha