output-build-workflow
Implement an Output SDK workflow from a plan document. Use when the user asks to build, implement, or code a workflow from an…
Calculate and display the cost of an Output SDK workflow execution run. Use when checking LLM token costs, API service costs, or total spend for a specific workflow run.
Claude Code
$ npx -y skills add growthxai/output --skill output-dev-workflow-cost --agent claude-code
Codex
$ npx skills add growthxai/output --skill output-dev-workflow-cost -a codex -y
Cursor
$ npx skills add growthxai/output --skill output-dev-workflow-cost -a cursor -y
Gemini CLI
$ npx skills add growthxai/output --skill output-dev-workflow-cost -a gemini-cli -y
GitHub Copilot
$ npx skills add growthxai/output --skill output-dev-workflow-cost -a github-copilot -y
OpenCode
$ npx skills add growthxai/output --skill output-dev-workflow-cost -a opencode -y
Windsurf
$ npx skills add growthxai/output --skill output-dev-workflow-cost -a windsurf -y
name: output-dev-workflow-cost description: Calculate and display the cost of an Output SDK workflow execution run. Use when checking LLM token costs, API service costs, or total spend for a specific workflow run. allowed-tools: [Bash]
This skill helps you calculate the cost of a completed workflow execution using the Output CLI. It breaks down costs by LLM model (token usage) and external API service calls.
---
The `workflow cost` command requires a **workflow run ID** — not the workflow name.
A run ID looks like: `process_transcripts_2026-03-23T19:35:17.000Z_c2biRk_F9rYktF-wagBf5`
**Option A — List recent runs** (use skill: `output-workflow-runs-list`):
npx output workflow runs list <workflowName> --limit 5
Copy the run ID from the most recent completed run.
**Option B — Run the workflow now and capture the ID:**
If you know the input, run it synchronously and the run ID will be in the output:
npx output workflow run <workflowName> --input '{"key": "value"}'Or asynchronously (use skill: `output-workflow-start`):
npx output workflow start <workflowName> --input '{"key": "value"}'
# Returns: Workflow ID: <runId>If you don't know the input, check for a scenario file (use skill: `output-dev-scenario-file`) or the workflow's `inputSchema` in its `types.ts`.
> **Note:** The workflow **name** (e.g. `process_transcripts`) identifies the workflow type. The workflow **run ID** (e.g. `process_transcripts_2026-03-23T19:35:17.000Z_abc123`) identifies a specific execution. `workflow cost` requires the run ID.
---
npx output workflow cost <runId>
npx output workflow cost <runId> path/to/trace.json
npx output workflow cost <runId> --json
npx output workflow cost <runId> --verbose
| Flag | Description | Default | |------|-------------|---------| | `--json` | Output machine-readable JSON instead of the text report | `false` | | `--verbose` | Show detailed per-LLM-call breakdown | `false` |
---
> Pricing values are illustrative — the model and per-token rates shown below were current as of 2026-05-04. Live pricing comes from [models.dev](https://models.dev). For current model IDs, see [`output-dev-model-selection`](../output-dev-model-selection/SKILL.md).
Costs come in two figures per row: **Original** is the as-charged cost recorded in the trace attributes (`llm:generation:cost` / `http:request:cost`, with `llm:generation:usage` and legacy `llm:usage` fallbacks), and **Adjusted** is the cost after applying any `costs.yml` override (equal to Original when no override applies). The bottom line and JSON `totalCost` are the Adjusted total.
Workflow: process_transcripts Duration: 12.3s LLM Costs: Model | Calls | Original | Adjusted claude-sonnet-4-6 | 3 | $0.0123 | $0.0123 Subtotal | 3 | $0.0123 | $0.0123 API Costs: Host | Calls | Original | Adjusted r.jina.ai | 2 | $0.0040 | $0.0040 Subtotal | 2 | $0.0040 | $0.0040 TOTAL ESTIMATED COST (adjusted) $0.0163 As-charged (from trace) $0.0163
API Costs only include calls where the client attached a dollar amount with `addRequestCost` (see `output-dev-http-client-create`, "Attaching Request Cost (Paid APIs)"). An HTTP call that never calls `addRequestCost` is still traced but contributes nothing here — that's expected for free or internal services, and a gap to fix for paid ones.
{
"workflowName": "process_transcripts",
"durationMs": 12300,
"llmOriginalCost": 0.0123,
"llmAdjustedCost": 0.0123,
"totalInputTokens": 1234,
"totalOutputTokens": 567,
"httpCosts": [{ "host": "r.jina.ai", "originalTotalCost": 0.004, "adjustedTotalCost": 0.004 }],
"httpOriginalCost": 0.004,
"httpAdjustedCost": 0.004,
"originalTotalCost": 0.0163,
"totalCost": 0.0163
}Per-call entries in `llmCalls` and `httpCosts[].calls` carry `originalCost` and `adjustedCost`. (Older releases exposed `llmTotalCost`, `services[]`, `serviceTotalCost`, and `unknownModels` — replaced by the fields above.)
---
**Get cost of the last run:**
# First get the run ID npx output workflow runs list process_transcripts --limit 1 --json # Then get the cost npx output workflow cost process_transcripts_2026-03-23T19:35:17.000Z_abc123
**Get cost as JSON and extract total:**
npx output workflow cost <runId> --json | jq '.totalCost'
**Show full per-call breakdown:**
npx output workflow cost <runId> --verbose
---
The open-source TypeScript framework for building AI workflows and agents. Designed for Claude Code — describe what you want, Claude builds it, with all the best practices already in place. One framework.
Implement an Output SDK workflow from a plan document. Use when the user asks to build, implement, or code a workflow from an…
View, edit, and set encrypted credentials in an Output.ai project. Use when adding secrets, updating API keys, verifying…
Wire encrypted credentials to environment variables using the credential: convention. Use when setting up LLM provider keys…
Initialize encrypted credentials for an Output.ai project. Use when setting up credentials for the first time, adding…
Debug Output SDK workflow issues. Use when user reports a workflow failing, erroring, hanging, producing wrong results, or asks…
Use the Agent class for multi-step tool loops, conversation history, streaming progress, and reusable LLM agents. Use when…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.