
cost-audit
Read-only Runpod spend audit: find idle spend, explain serverless billing when nothing seems to run, break spend down by resource type and by resource, and give a whole-account snapshot. Every figure comes from the MCP billing and list reads; it recommends actions and never stops or changes anything. Use when the user asks about their bill, what is costing money, what is running on the account, or tells you to stop or delete idle resources it did not name by id: the audit with ids and the user's own next steps is the answer. A resource the user names by id goes to pod-doctor or endpoint-ops, and the change is made.
- Installs
- 2.9K
- Last 24h
- +143
- Trending rank
- #1528
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/runpod/runpod-plugins-official --skill cost-audit- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads cost-audit automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Cost audit
You answer where the money goes on a Runpod account and how to stop a leak. This skill is strictly read-only: it discovers, scores, and explains spend, then leaves the decision to the user. It never stops, deletes, or reconfigures a resource on its own. Any apply is handed off (a Pod stop to pod-doctor, dropping serverless min-workers to 0 to endpoint-ops), and only after the user explicitly approves it.
Every figure comes from a read: hourly rates from the resource list, spend-to-date from the billing reads. Never invent or estimate a number you did not read; a monthly projection is allowed only as read_hourly × hours, with the hourly quoted.
The raw billing and list reads are runpod-mcp tool calls; this skill is the audit journey on top of them: the idle-scoring, the idle-worker-vs-idle-pod disambiguation, and the per-resource attribution the plain reads don't do.
Required capabilities
Named as capabilities; the tool serving each one on this server is in the tool binding below. All are reads.
- List Pods with cost info, and inspect one Pod.
- List serverless endpoints and inspect one, for min/max workers config.
- List network volumes.
- Aggregate billing history, and per-resource billing (pods, serverless endpoints, Public Endpoints, network volumes, clusters).
The four journeys
Read first, always. Match the prompt to one journey; do not run all four unasked.
- Whole-account view. List Pods, endpoints, network volumes, and pull aggregate billing for the recent window. Report the count and running-state of each category, the current burn, and the spend-to-date from the billing read. Report an empty category as empty ("no network volumes") rather than padding the picture.
- Idle Pods. List Pods. On the pod record
statusis the state field andcostis the pod's hourly rate in USD (those exact names, from the read). For eachstatus=RUNNINGpod, quotecostand projectcost × 730as "$/mo at this rate"; sort by projected cost, present one table (name, GPU, $/hr, up-for, $/mo), and name the costliest. When every pod is stopped/EXITED, don't stop at "nothing is running". State that no GPU is burning AND that stopped pods still bill their volume disk until terminated, then still give the per-pod table. A stopped pod'scostreads 0, so the rate it would resume at comes from the GPU catalog price for its type, labelled as such. Ifcostis missing on a row, render?and exclude it from any total; do not fabricate it. Recommend stopping (or terminating the long-dead) ones; do not mutate anything. - Serverless idle-worker spend. A serverless endpoint with min workers ≥ 1 keeps an always-on worker that bills even at zero traffic. That is serverless idle-worker spend, and it is not the same as an idle Pod. Inspect the endpoint's worker config to confirm min-workers ≥ 1, quote the serverless billing read for that endpoint, and explain the mechanism. The fix is min-workers 0 (cold-start trade-off): recommend it and hand the apply to
endpoint-ops; do not change it here. If no endpoint has min-workers ≥ 1, the charge is worker run time on scale-to-zero endpoints. A worker bills from the moment it starts running until it fully stops, rounded up to the second (model loading, the job itself, and the idle timeout after the last request), whether the job completed, failed, or the worker crash-looped without finishing anything. Attribute it from the per-endpoint serverless billing rows plus the worker/job states, and name the responsible endpoint. Say explicitly that this is worker run time on a live scale-to-zero endpoint (start-up, execution and idle timeout), not an always-on worker and not a phantom charge. - Where the spend went. Get the per-TYPE totals from the aggregate
list-billingread first; it answers the breakdown directly. Drill into a type only as needed, and always size-safely: on the serverless read passlastN: 1(or abucketSizecovering the whole window) so each endpoint yields ONE record. The default per-endpoint-per-bucket dump on a many-endpoint account overflows the tool-result limit, and an oversized result comes back truncated, which dead-ends the audit. Attribute spend to each named resource, sort descending, and name the single costliest. Present figures as coming from the billing read. If a category returned nothing, list it as $0 / empty rather than dropping it silently. When every category returns zero (no spend anywhere), say so. Give the per-type table with $0 for each and a $0 total, and cross-check it against the live lists (list-pods/list-endpoints/list-network-volumesall empty confirms it). State directly that there is no costliest type because nothing has billed and nothing is currently costing money. The reads are authoritative for the window used; re-pull only when the user names a different period. - Commit the attribution (all spend questions). When the billing reads show real spend, name its source from the data you have, even when the responsible resource has since been deleted ("$X from serverless jobs on endpoints that no longer exist, run at <times from the billing rows>"). That attribution IS the answer: deliver it as the verdict, then at most one sentence of follow-up the user could choose. Lead with the attribution the reads support instead of deflecting the question back at the user. Never reach for tools you were not given (no shell, no web): every figure you need is in the billing reads and lists you already have, so analyze them directly in your reply. The per-endpoint serverless drill-down is
list-serverless-billing;list-endpoint-billingis Public Endpoint spend (the pay-per-use model APIs), a different product. Deliver the verdict first: state the finding, then at most one recommended next step or follow-up question.
Hard rules
- Read-only. This skill never calls a mutating tool: no stop, no delete, no update.
- For resources the user did not name: that holds however urgently the change is ordered: an instruction changes the urgency, not the authority. The audit plus the exact ids and actions for the USER to run IS the complete answer to that order. Deliver it as such, not as a permission question, and never attempt the mutation to "try anyway".
- Work with the tools you were granted. In an MCP-only session never reach for a shell, a script, a web-fetch tool, or anything else you do not have: a tool you do not have cannot be called, and the audit ends with nothing delivered. Every figure this skill needs is in the MCP billing and list reads.
- When a read's result comes back truncated, the recovery is a NARROWER RE-READ (smaller page, one endpoint at a time,
lastN: 1, a tighter bucket). Do not try to recover the dropped output, parse it with an external script, or ask for extra tool access. - Any recommended apply is a handoff to
pod-doctor(stop) orendpoint-ops(min-workers-0), and only after the user says yes. Name the handoff; do not perform it. - Every dollar figure traces to a tool read. Quote the hourly / billing source. A projection is
read_hourly × hours, never a bare invented number. - Report empty categories as empty. Absence is a finding, not a gap to fill.
- Never flag a Pod that has been up under an hour as idle; it is too fresh to call.
- Distinguish Pod idle spend from serverless idle-worker spend explicitly whenever both could be in play.
Error handling
- A
401on any list means the API key is invalid. Say so and stop; there is nothing to audit without it. - A
429mid-audit: report the partial picture and note it is incomplete; do not retry in a tight loop. - A missing
coston a pod row, or an empty billing bucket, is data, not an error. Render?/ $0 and keep going.
Tool binding
| Capability | Tool |
|---|---|
| List Pods (with cost) | list-pods |
| Inspect one Pod | get-pod |
| List / inspect endpoints | list-endpoints, get-endpoint |
| Endpoint worker config / counts | list-endpoint-workers, endpoint-health |
| List network volumes | list-network-volumes |
| Aggregate billing (per type, one call) | list-billing |
| Per-resource billing | list-pod-billing, list-serverless-billing (serverless endpoints), list-endpoint-billing (Public Endpoints), list-network-volume-billing, list-cluster-billing |
If a tool named here is missing from the session's tool list, say so and use the nearest read instead of inventing a result.
Report template — cost summary
Every cost answer ships as: per-type table (Pods / Serverless / Public Endpoints / Network volumes / Clusters / storage, with every type present even at $0.00) with figures only from billing reads made this turn · a total line · the named costliest item (or the explicit statement that nothing billed) · the one-sentence verdict answering the user's question. Attribution follows the commit rule above.
Figure format:
- Figures are exact dollar amounts from the billing and list reads.
- Table rows sum to the stated total.
Contract
The cross-journey answer contract (definite facts from reads, commit-don't-hedge, mutations bind to this conversation's creations, a standalone final message, honest failure, granted tools only) is defined in the runpod-mcp skill and applies to every reply from this journey. If the runpod-mcp skill has not been loaded in this conversation, load it now, before the next tool call: its rules on which resources you may change, when a request is the go, and when to stop for the user are not repeated here.
FAQ
What does the cost-audit skill do?
Read-only Runpod spend audit: find idle spend, explain serverless billing when nothing seems to run, break spend down by resource type and by resource, and give a whole-account snapshot. Every figure comes from the MCP billing and list reads; it recommends actions and never stops or changes anything. Use when the user asks about their bill, what is costing money, what is running on the account, or tells you to stop or delete idle resources it did not name by id: the audit with ids and the user's own next steps is the answer. A resource the user names by id goes to pod-doctor or endpoint-ops, and the change is made.
How do I install cost-audit?
Run npx skills add https://github.com/runpod/runpod-plugins-official --skill cost-audit in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/cost-audit/ (personal) or .claude/skills/cost-audit/ (project).
Which AI agents can use cost-audit?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is cost-audit safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains cost-audit?
It is published by runpod in runpod/runpod-plugins-official. It has 2,882 recorded installs.
More from runpod/runpod-plugins-official
runpodctl
runpod/runpod-plugins-official
Runpod CLI for managing GPU/CPU workloads from the terminal — pods, serverless endpoints, templates, network volumes, Hub deploys, models, SSH, and file transfer (send/receive). Use for terminal/CI/scripting, SSH setup, doctor, or when the Runpod MCP tools are not connected; prefer runpod-mcp for structured tool calls in an MCP-enabled session.
flash
runpod/runpod-plugins-official
Write and deploy code-first Runpod Serverless with runpod-flash: @Endpoint/@remote, flash dev, resource configuration, and debugging. Use runpod-build-template for explicit Dockerfile/template project authoring, and runpodctl/runpod-mcp for infrastructure management.
companion-clis
runpod/runpod-plugins-official
Companion CLIs for Runpod workflows — HuggingFace, GitHub, Docker, and AWS. Use runpod-build-template for complete template project authoring, and the ComfyUI model-repair guide in runpod-templates for imported workflows lacking model download metadata.
runpod
runpod/runpod-plugins-official
Start here for any Runpod task — running GPU/CPU pods, deploying serverless endpoints, templates, network volumes, building images, or understanding how Runpod works. Routes to the right skill (runpod-mcp, runpodctl, flash, companion-clis, runpod-usage, runpod-templates, runpod-build-template, runpod-migrate) and indexes two dozen live-verified end-to-end examples (golden paths) — use it when the lane is unclear, and for any multi-step or provisioning task even when it is not.
runpod-usage
runpod/runpod-plugins-official
Explain Runpod architecture and design choices: Pods versus Serverless, GPU/VRAM, image construction, storage, networking, and workload development. For creating or improving a complete template project use runpod-build-template; execute infrastructure with runpodctl/runpod-mcp and code-first work with flash.
runpod-mcp
runpod/runpod-plugins-official
Manage Runpod infrastructure through the connected Runpod MCP server's tool calls (pods, serverless endpoints and jobs, templates, network volumes, registry credentials, secrets, clusters, the GPU/CPU catalog, and billing), and connect the server when it is missing (hosted or local npx). Load it before the first Runpod MCP tool call of a request: it routes the task to the journey skill that carries the procedure, owns the answer contract and the rules on which resources you may change, and defers to runpodctl for the terminal, file transfer, and SSH setup; template project and Hub listing authoring routes to runpod-build-template.
Popular security skills
azure-compliance
microsoft/azure-skills
Run Azure compliance and security audits with azqr plus Key Vault expiration checks. Covers best-practice assessment, resource review, policy/compliance validation, and security posture checks. WHEN: compliance scan, security audit, BEFORE running azqr (compliance cli tool), Azure best practices, Key Vault expiration check, expired certificates, expiring secrets, orphaned resources, compliance assessment.
minimal-run-and-audit
lllllllama/rigorpilot-skills
Rigor Run skill for README-first deep learning repo reproduction. Use when the task is specifically to capture or normalize evidence from the selected smoke test or documented inference or evaluation command and write standardized reprooutputs/ files, including patch notes when repository files changed. Do not use for training execution, initial repo intake, generic environment setup, paper lookup, target selection, hidden scientific-meaning changes, or end-to-end orchestration by itself.
seo-audit
coreyhaines31/marketingskills
When the user wants to audit, review, or diagnose SEO issues on their site. Also use when the user mentions "SEO audit," "technical SEO," "why am I not ranking," "SEO issues," "on-page SEO," "meta tags review," "SEO health check," "my traffic dropped," "lost rankings," "not showing up in Google," "site isn't ranking," "Google update hit me," "page speed," "core web vitals," "crawl errors," "indexing issues," "stuck on page 2," "striking distance keywords," "title tag rewrite," "low CTR," "local SEO," "Google Business Profile," or "map pack." Use this even if the user just says something vague like "my SEO is bad" or "help with SEO" — start with an audit. For building pages at scale to target keywords, see programmatic-seo. For adding structured data, see schema. For AI search optimization, see ai-seo.
firebase-security-rules-auditor
firebase/agent-skills
Audits Firebase (Firestore, Cloud Storage) security rules for vulnerabilities, privilege escalation, role bypasses, create vs update inconsistencies, resource exhaustion, type safety, size limits, and hasOnly ownership checks. Use when auditing/reviewing rules, running red-team rule assessments, or scoring against auditor checklists. Don't use for Firebase CLI (login, deploy), Auth, Crashlytics, Remote Config, or database queries.
audit
pbakaus/impeccable
Run technical quality checks across accessibility, performance, theming, responsive design, and anti-patterns. Generates a scored report with P0-P3 severity ratings and actionable plan. Use when the user wants an accessibility check, performance audit, or technical quality review.
competitors
coreyhaines31/marketingskills
When the user wants to create competitor comparison or alternative pages for SEO and buyer-facing use. Also use when the user mentions 'alternative page,' 'vs page,' 'competitor comparison,' 'comparison page,' '[Product] vs [Product],' '[Product] alternative,' 'competitive landing pages,' 'how do we compare to X,' 'competitor teardown,' 'audit our competitor pages,' 'are our comparison pages out of date,' or 'competitive asset audit.' Use this for any content that positions your product against competitors. Covers four formats: singular alternative, plural alternatives, you vs competitor, and competitor vs competitor. For auditing existing claims (not researching competitors from scratch, which is competitor-profiling; not technical SEO on these pages, which is seo-audit), use the asset audit here. For internal battle cards and sales-specific competitor docs, see sales-enablement.