Project remaining workflow cost from per-phase averages — warns on budget ceiling overruns
59
67%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.claude/skills/skill-cost-projections/SKILL.mdProjects remaining workflow cost based on per-phase averages from completed work. Displays cost data in the HUD/statusline and warns when projected totals exceed a configured budget ceiling.
Minimum data requirement: Needs 2+ completed steps before projecting. With fewer than 2 data points, the average is unreliable — display actual spend only and skip projection.
Read cost data from ~/.claude-octopus/metrics/ or from metrics-tracker.sh output. Each completed phase/step should have an associated cost entry.
# Read metrics from the session metrics directory
METRICS_DIR="$HOME/.claude-octopus/metrics"
SESSION_METRICS="$METRICS_DIR/session-$(date +%Y%m%d).jsonl"
# Each line contains: {"phase": "discover", "cost": 0.42, "tokens_in": 12000, "tokens_out": 3400, "timestamp": "..."}
# Sum costs from completed steps
completed_costs=$(jq -s '[.[].cost]' "$SESSION_METRICS")
completed_count=$(jq -s 'length' "$SESSION_METRICS")
total_spent=$(jq -s '[.[].cost] | add' "$SESSION_METRICS")Data sources (in priority order):
~/.claude-octopus/metrics/session-*.jsonl — structured per-phase cost entriesmetrics-tracker.sh output — fallback for legacy sessionsIf fewer than 2 completed steps are available, display only actual spend:
💰 Spent: $0.42 (1 step complete — need 2+ for projection)Calculate the mean cost across all completed steps.
avg_cost=$(echo "$total_spent / $completed_count" | bc -l)Formula:
avg_cost = total_cost / completed_stepsExample: If 3 steps cost $0.30, $0.50, $0.40 → avg = $1.20 / 3 = $0.40/step
Multiply the average cost per step by the number of remaining steps.
remaining_steps=$((total_steps - completed_count))
projected_remaining=$(echo "$avg_cost * $remaining_steps" | bc -l)
projected_total=$(echo "$total_spent + $projected_remaining" | bc -l)Formula:
projected_remaining = avg_cost × remaining_steps
projected_total = total_spent + projected_remainingStep counts by workflow type:
| Workflow | Total Steps | Example Phases |
|---|---|---|
| embrace | 4 | Discover, Define, Develop, Deliver |
| research | 3-7 | Per-agent probe count |
| review | 3 | Fleet, Verifier, Synthesis |
| debate | 3 | Opening, Rebuttal, Synthesis |
Format the cost projection for the HUD/statusline display.
Standard display:
💰 Spent: $2.40 | Est. remaining: $3.60 | Total: ~$6.00Format rules:
~ to indicate estimate💰 prefix for the cost lineWhen insufficient data (< 2 steps):
💰 Spent: $0.42 (need 2+ steps for projection)Integration: This display line is emitted by the octopus-hud hook and rendered in the statusline alongside phase progress and provider status.
If the OCTO_BUDGET_CEILING environment variable is set, compare the projected total against it and warn on overrun.
if [[ -n "${OCTO_BUDGET_CEILING:-}" ]]; then
ceiling="$OCTO_BUDGET_CEILING"
if (( $(echo "$projected_total > $ceiling" | bc -l) )); then
overage=$(echo "$projected_total - $ceiling" | bc -l)
echo "⚠️ Budget ceiling: \$$ceiling — projected to exceed by \$$overage"
fi
fiDisplay when over budget:
💰 Spent: $2.40 | Est. remaining: $3.60 | Total: ~$6.00
⚠️ Budget ceiling: $5.00 — projected to exceed by $1.00Display when within budget:
💰 Spent: $2.40 | Est. remaining: $3.60 | Total: ~$6.00
✅ Within budget ceiling: $10.00Note: OCTO_BUDGET_CEILING is optional. When unset, no ceiling check is performed.
If the projected total is high relative to the task, suggest switching to the budget profile to reduce costs.
# Suggest budget profile when projected total exceeds $5.00 (configurable)
COST_THRESHOLD="${OCTO_COST_THRESHOLD:-5.00}"
if (( $(echo "$projected_total > $COST_THRESHOLD" | bc -l) )); then
echo "💡 Tip: Switch to OCTO_PROFILE=budget to reduce costs"
fiDisplay:
💰 Spent: $2.40 | Est. remaining: $3.60 | Total: ~$6.00
💡 Tip: Switch to OCTO_PROFILE=budget to reduce costsThe budget profile (OCTO_PROFILE=budget) routes to cheaper models and reduces agent count to minimize spend.
Normal — within budget, moderate cost:
💰 Spent: $2.40 | Est. remaining: $3.60 | Total: ~$6.00Over budget ceiling:
💰 Spent: $2.40 | Est. remaining: $3.60 | Total: ~$6.00
⚠️ Budget ceiling: $5.00 — projected to exceed by $1.00
💡 Tip: Switch to OCTO_PROFILE=budget to reduce costsEarly in workflow (insufficient data):
💰 Spent: $0.42 (need 2+ steps for projection)Low cost — no warnings:
💰 Spent: $0.80 | Est. remaining: $0.80 | Total: ~$1.60The cost projection line is rendered as part of the HUD statusline output, updated after each phase completes.
Reads per-phase cost data written by the metrics tracker. Each completed phase logs cost, token counts, and provider details.
When OCTO_PROFILE=budget is active, the projection accounts for reduced per-step costs from cheaper model routing.
No metrics directory:
💰 Cost projection unavailable — no metrics data foundCorrupted metrics data: Skip malformed entries and project from valid data only. If no valid entries remain, show unavailable message.
Zero remaining steps: When all steps are complete, show final total only:
💰 Final cost: $4.80 (4 steps)9f39f0c
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.