Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Roll up the yakos dispatch-log into a per-runtime / per-agent / per-day cost summary, optionally posting to a webhook. Use when reviewing spend, before a budget check, or when asked "what did this cost?".
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 75% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 77% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 98% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 70% | 0% |
Generate a human-readable cost summary from the yakos dispatch-log (~/.yakos-state/dispatch-log*.ndjson) over a configurable window. Designed for daily/weekly check-ins — operator runs the skill, gets a markdown summary, optionally posts to a Slack/Discord webhook.
yakos cost --json.per-day breakdowns.
YAKOS_COST_WEBHOOK is set in the operator's environment AND--post is passed, POSTs the summary to that webhook (Slack / Discord / Mattermost / generic JSON receiver). The webhook URL format is up to the operator; the skill emits a JSON body of {"text": "<markdown>"} which most chat receivers accept.
supplies the URL via env var.
the next operator knows the burn rate.
~/.yakos-state/dispatch-log.ndjson | jq is faster.
per-runtime token counts are emitted by the v0.6+ telemetry path for claude (and v0.6.x+ for codex/gemini); use the runtime's own billing dashboard for authoritative numbers.
sh yakos doctor --probe-runtime | head -20
sh yakos cost --since "${SINCE:-$(date -u -v-7d +%Y-%m-%d 2>/dev/null || date -u -d '7 days ago' +%Y-%m-%d)}" --json --by runtime > /tmp/cost-runtime.json yakos cost --since "${SINCE}" --json --by agent > /tmp/cost-agent.json yakos cost --since "${SINCE}" --json --by day > /tmp/cost-day.json
pending model-routing notice: sh MR_CANDS="${HOME}/.yakos-state/model-routing-candidates.ndjson" if [ -s "$MR_CANDS" ]; then n="$(jq -rs '[.[].agent] | unique | length' "$MR_CANDS" 2>/dev/null || echo 0)" echo "pending model-routing candidates: $n (run \yakos model-routing list\ to see)" fi Then include three tables (runtime, agent, day) and the totals. Mark the est-tokens columns "estimate" so readers know to consult the runtime's own billing for billable numbers.
--post is set AND YAKOS_COST_WEBHOOK isnon-empty, also POST: sh if [ -n "${YAKOS_COST_WEBHOOK:-}" ] && [ "${POST:-0}" = "1" ]; then curl -fsS -X POST -H 'Content-Type: application/json' \ --data "$(jq -Rs '{text: .}' < /tmp/summary.md)" \ "$YAKOS_COST_WEBHOOK" fi
If automation is overkill, the operator runs:
shyakos cost --since 2026-05-01 --by agent yakos cost --since 2026-05-01 --by runtime yakos cost --since 2026-05-01 --by day --json | jq
…and pastes the relevant table into a chat or weekly note.
for claude dispatches in the usage field of each dispatch_finished event. Codex + gemini real counts arrive in v0.6.x+. The skill's totals mix both — note this in the output.
yakos cost reads all~/.yakos-state/dispatch-log*.ndjson (current + rotated archives). After heavy use, the windowed total covers archives too. If the window predates the oldest archive, the tail is silently missing — call this out in the summary if --since predates the oldest log file.
across machines requires copying logs to a central host first.
task_preview (first200 chars of the task). If the cost summary is posted to a shared channel, scrub or summarize before posting; do not raw- paste task previews to a public webhook.
cli/lib/cost.sh — the underlying command.~/.yakos-state/dispatch-log.ndjson — the source data.docs/runtime-matrix.md — what real telemetry is availableper-runtime.
Other measured skills in the registry, with their headline benchmark lift.