/calibration-report - Estimate Accuracy by Category
SkillMonitoring & opsSummarize estimate accuracy from the assistant time log.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /calibration-report - Estimate Accuracy by Category skill
What this skill tells your AI
The instructions your AI receives, as published by indigoai-us/hq-core in .claude/skills/calibration-report/SKILL.md and read by ahel’s review.
Read workspace/estimate-log/log.jsonl and summarize how well the assistant's estimates match actuals. Output a table per category showing median ratio, sample size, and a suggested inflation multiplier.
Input: $ARGUMENTS
Optional flags:
--category <name>— restrict to one category (release,pr,build, ...)--since YYYY-MM-DD— only include entries withtimestamp >= date--abandon-stale— markpendingentries older than 30 days asabandoned--show-misses— print the top 5 worst misses with surrounding text
Steps
-
Read the log
LOG=workspace/estimate-log/log.jsonl [ -s "$LOG" ] || { echo "No estimates logged yet."; exit 0; } -
Apply filters
FILTERED=$(jq -c --arg cat "$CATEGORY" --arg since "$SINCE" ' select( (($cat == "" or .category == $cat)) and (($since == "" or .timestamp >= $since)) ) ' "$LOG") -
Compute stats per category (only
kind=="estimate"ANDstatus=="completed")For each category:
n— countmedian_ratio— median ofactual / expectedp25/p75— quartilesover_count— entries whereratio > 1.2under_count— entries whereratio < 0.8on_count— entries within ±20%suggested_multiplier—round(median_ratio * 4) / 4(rounded to 0.25)
Use
jq+ simple awk math. For median, sort then pick middle. -
Render report
ESTIMATE CALIBRATION REPORT =========================== Window: <since> to <now> | Total entries: <n> | Completed: <c> | Pending: <p> Category n median_ratio p25-p75 verdict-mix suggest-multiply-by -------- -- ------------ ---------- --------------- -------------------- release 5 0.40 0.30-0.50 1on/0over/4under 0.5x (you over-estimate by 2x) build 3 2.40 1.80-3.00 0on/3over/0under 2.5x (you under-estimate by 2.5x) infra 4 1.10 0.90-1.30 3on/1over/0under 1.0x (well calibrated) pr 2 0.55 0.50-0.60 0on/0over/2under 0.5x (you over-estimate by 2x) ... -
Show pending count + stale flagging
Pending: 3 entries Stale (>30d, no /finish-estimate): 1 est_abc1234 "..." estimated 14 days ago Run /calibration-report --abandon-stale to clear them. -
(Optional)
--show-misses— print top 5 worst misses (completedentries with highest|log(ratio)|):Worst misses: 1. est_xyz release expected 60 min, actual 5 min 12.0x over "going to take ~1 hr for the npm release of hq-cloud@5.7.1" 2. ... -
Recommendation block Highlight categories with
n >= 3and|log(median_ratio)| > log(1.5)— those are systematically wrong. Recommend the agent inflate future estimates in those categories bysuggested_multiplier.
Implementation note
Pure jq + awk + bash. No Python, no installs. Keep it < 100 lines.
For median in awk:
{ a[NR] = $1 } END {
asort(a)
if (NR % 2) print a[(NR+1)/2]
else print (a[NR/2] + a[NR/2+1]) / 2
}
(GNU awk has asort; BSD awk on macOS does too as of recent versions. Fall back to sort -n | awk if needed.)
Notes
- This report is read-only by default. Only
--abandon-stalemutates the log. - Suggested multipliers should be applied loosely — if the median says
2.5xbutn=3, treat it as a rough heuristic, not a precise correction. - The agent should consult this report (or read
log.jsonldirectly) when generating a new estimate in a high-bias category, and explicitly inflate.
See also
/track-estimate— start tracking an estimate/finish-estimate— close one out
Signals
- GitHub stars
- 84
- Forks
- 15
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
calibration-report- Source
- github.com/indigoai-us/hq-core