Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add rshade/finfocus --skill finfocus-plugin-devgit clone --depth 1 https://github.com/rshade/finfocusWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/rshade/finfocus/finfocus-plugin-dev)<a href="https://agentmods.dev/skills/rshade/finfocus/finfocus-plugin-dev"><img src="https://agentmods.dev/badge/skills/rshade/finfocus/finfocus-plugin-dev/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/rshade/finfocus/finfocus-plugin-dev"><img src="https://agentmods.dev/badge/skills/rshade/finfocus/finfocus-plugin-dev.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00157 | $0.02262 |
| Opus 5.5 | $0.00063 | $0.00905 |
| Sonnet 5.5 | $0.00031 | $0.00452 |
| Haiku 4.5 | $0.00016 | $0.00226 |
Grade A, and why
finfocus-plugin-dev scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 157 lines — stays where its author put it; the contents beside it link to each section on GitHub.
FinFocus Plugin Development
A FinFocus plugin is a standalone binary that serves the CostSourceService
gRPC API from github.com/rshade/finfocus-spec/sdk/go/pluginsdk. The
finfocus CLI launches it, asks Supports, then calls GetProjectedCost (and
optionally GetActualCost, GetRecommendations, and others) per resource.
This repository was scaffolded by finfocus plugin init.
Rules
- Never hand-edit SDK-version state (the
finfocus-specline ingo.mod,SpecVersion, workflow pins). Runfinfocus plugin upgradeand follow thefinfocus-plugin-upgradeskill. - Never fabricate prices. If the plugin cannot price a resource, return
"not supported" from
Supportsor an error fromGetProjectedCost. Do not guess, and do not return a default. The scaffold's example rates incalculateEC2InstanceCostare placeholders: replace them. Scaffolds from finfocus v0.4.0 and earlier also default a missing instance type tot3.microand price unknown types at thet3.microrate; remove both. - Price from real data: a local pricing table with a documented source and
date, or the provider's pricing API. Record the source in
billing_detail. - Do not run
git commitorgit addunless the user asks. SpecVersionmust bev-prefixed (v0.7.2). Usepluginsdk.SpecVersion, as the scaffold does. Older scaffolds wrote a bare literal such as"0.6.1";finfocus plugin upgraderewrites it.- Never write to stdout from the plugin: the SDK prints a single
PORT=<n>handshake line there. Log to stderr or the SDK log writer.
Repo layout (from finfocus plugin init)
| Path | Purpose | Edit? |
|---|---|---|
cmd/plugin/main.go |
Builds pricing.NewCalculator() and calls pluginsdk.Serve; reads --port and FINFOCUS_PLUGIN_PORT; optional health server |
Rarely |
internal/pricing/calculator.go |
Calculator embeds *pluginsdk.BasePlugin; GetPluginInfo, Supports, GetProjectedCost, GetActualCost |
Yes, main work |
internal/pricing/data.go |
PricingData load/save helpers and example data |
Yes, if you use local tables |
internal/client/client.go |
Provider API client stub (GetResourceCost, ValidateCredentials, GetSupportedRegions) |
If you call live APIs |
internal/pricing/calculator_test.go |
Example tests using pluginsdk.NewTestPlugin |
Yes, extend |
manifest.yaml, manifest.json |
Plugin metadata (name, version, providers, capabilities) | Keep in sync |
Makefile |
build, test, lint, install, cover, security |
Rarely |
.golangci-lint.yml |
Lint config used by make lint |
No |
.github/workflows/ |
CI, release, release-please (docker, claude review when generated) | Via upgrade only |
docs/, docker/, issues.md, examples/ |
Generated docs, image, TODO list | As needed |
What ships with it
4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 157 lines · 157 tokens per session scan A 180d5d22d86b
finfocus-plugin-dev is a skill published in the GitHub repository rshade/finfocus (10 stars, last pushed today), licensed Apache-2.0. It adds 157 tokens to every session and 2,262 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-04.
Other skills, from other repositories
dashboards
Use when creating or extending Costory dashboards, generating interesting FinOps overviews (suggestgroupby + suggestusagemetrics + text widgets), adding or replacing widgets, copying widgets between dashboards, editing dashboardContext (global filter / period / groupBy) via updatedashboard, or applying shared-context…
query
Use when exploring Costory cost, usage, metric, formula, budget, or external-metric data with the query tool — scope vs split (filterCel / groupBy), explorer PoP comparison, CEL discovery, unit economics, budgets. Not for one-shot "what changed last month" change trees — those use recipes explain-period-change /…
cost-change-investigation
Use when investigating a cost change to explain what changed, when, and the best-supported drivers with contribution, timing, usage, metric, event, alert, and terminology evidence. Call getskill with skillId "cost-change-investigation" before starting the investigation.
recipes
Use when a user states a FinOps outcome rather than a tool. Route to one recipe card, then hand off: bill jump → explain-period-change (DIGEST preview); clicked chart slice / explain this bar → explain-chart-slice; marketplace → marketplace-spend; K8s namespace → namespace-cost; credits runway → provider-credits; GCP…
costory-finops
Use when the user asks about cloud, Kubernetes, SaaS or AI spend through Costory: why a bill moved, cost by team/service/namespace, unit economics, budgets, allocating shared or untagged cost, or building Costory dashboards, scheduled reports and cost alerts. Covers org selection, the tool order, preview-then-confirm…
rutebayar-agent-contributor
Operate and extend Rute Bayar, the Go CLI and webhook daemon for Indonesian payment gateways. Use when setting up sandbox or production Rute Bayar flows, helping AI Agents create invoices and verify payments through the rutebayar CLI, testing webhooks/forwarding/reconciliation, preparing releases, or contributing a…