with one click
finish-estimate
Mark a pending time estimate complete with actual duration.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Mark a pending time estimate complete with actual duration.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | finish-estimate |
| description | Mark a pending time estimate complete with actual duration. |
| allowed-tools | Bash, Read, Edit |
Look up an estimate by ID (or grab the most-recent pending) and fill in the actual elapsed time, ratio, and verdict.
Input: $ARGUMENTS
Examples:
latest 10m — close out the most-recently-logged pending estimate with 10 minutesest_f43cca6aa1 1h — close out a specific estimatelatest 45m "Tauri sign step took longer than expected" — with a noteParse arguments
est_*) or literal latest/track-estimate (10m, 1.5h, 2d)Resolve target entry
latest: read workspace/estimate-log/log.jsonl, find the most-recent entry with kind == "estimate" AND status == "pending". Take its id.id == <provided>.Normalize actual duration
Same parser as /track-estimate. Compute actual_minutes (single value, not a range — actuals are point measurements).
Compute verdict
ratio = actual_minutes / expected_minutes
verdict = "under" if ratio < 0.8
| "on" if 0.8 <= ratio <= 1.2
| "over" if ratio > 1.2
Rewrite the entry's line in log.jsonl
actual_minutesactual_at (current ISO timestamp)ratioverdictstatus: "completed"notes if providedReport
ID: <id>
Task: <task-or-surrounding-truncated>
Estimate: <expected> min (range <min>-<max>)
Actual: <actual> min
Ratio: <ratio> ({factor}x {over/under/on})
Category: <category>
Where factor:
over: round(ratio, 1) — e.g. 2.4x overunder: round(1/ratio, 1) — e.g. 3.0x underon: ±X% — e.g. +12%Use jq for the in-place rewrite. Atomic pattern:
LOG=workspace/estimate-log/log.jsonl
TMP=$(mktemp)
jq -c --arg id "$ID" --argjson actual "$ACTUAL_MINUTES" --arg ts "$NOW_ISO" --arg verdict "$VERDICT" --argjson ratio "$RATIO" --arg notes "$NOTES" '
if .id == $id then
. + {actual_minutes: $actual, actual_at: $ts, ratio: $ratio, verdict: $verdict, status: "completed"}
+ (if $notes != "" then {notes: $notes} else {} end)
else . end
' "$LOG" > "$TMP" && mv "$TMP" "$LOG"
jq -c keeps it as JSONL. Field order may shift after the merge; that's fine — the dedup grep doesn't depend on order.
status: "completed", an entry won't be re-processed by latest — so it's safe to run repeatedly./calibration-report — review accuracy across estimates/track-estimate — start a new oneDeploy or share generated HQ artifacts through hq-deploy.
Mark a company as HQ Pro cloud-backed and sync its team setup.
Send HQ Sync direct messages, prompts, details, or scheduled notes to teammates.
Run a full bidirectional sync for cloud-backed HQ companies.
Scaffold a new HQ company AND optionally take it all the way to operational — business-discovery interview, seeded knowledge/workers/skills/projects, brand design packs (generated from website/PDF/Drive and bound to deploys via policy), connected integrations, org groups + ACL rules, teammate invites, and optional cloud agents.
Resolve HQ Sync conflicts by choosing local, cloud, or discard.