From yevice — Cloud Cost Estimation from IaC
Estimate AWS / GCP cloud costs from Infrastructure-as-Code (CloudFormation, Terraform, Cloudflare Wrangler) using the yevice Rust CLI. Use whenever the user asks to estimate / forecast / model cloud costs from IaC, generate a cost model, run sensitivity analysis on cost drivers, compare cost between architectures, or optimize cloud spend via MILP — including phrases like "estimate the monthly cost", "how much will this CloudFormation stack cost", "compare cost of these two stacks", "what if requests 10x", "find the cheapest instance mix", or anything mentioning yevice, cost estimation, IaC pricing, MILP cost optimization, sensitivity analysis on cloud cost, AWS / GCP pricing from templates. Do NOT use for querying past actual billing (AWS Cost Explorer / Billing API), fixing IaC syntax errors, diffing `terraform plan` resources, debugging deploy failures, or generic cloud architecture / performance tuning that does not require a forward-looking cost number.
How this skill is triggered — by the user, by Claude, or both
Slash command
/yevice:yeviceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
yevice is a Rust CLI (`yevice`) that generates a cost model from IaC templates and evaluates monthly cost estimates from that model.
yevice is a Rust CLI (yevice) that generates a cost model from IaC templates and evaluates monthly cost estimates from that model.
Subcommands: generate, eval, compare, sensitivity, validate, simulate, optimize, update-pricing, diagram.
Supported IaC formats: CloudFormation (YAML/JSON), Terraform (HCL), Cloudflare Wrangler (wrangler.toml).
Repository: https://github.com/rabe1028/yevice
which yevice
If not found, install from a yevice checkout:
./scripts/install.sh # default ~/.cargo/bin/yevice
./scripts/install.sh --highs # also enable HiGHS MILP backend
Or clone and install:
git clone https://github.com/rabe1028/yevice.git
cd yevice && ./scripts/install.sh
Or directly via cargo:
cargo install --git https://github.com/rabe1028/yevice.git yevice-cli
yevice generate --template path/to/template.yaml --name app --output ./out
yevice eval ./out/app.cost_model.json --params ./out/app.usage.yaml
yevice eval ./out/app.cost_model.json --params ./out/app.usage.yaml \
--display-currency JPY --exchange-rate USD:JPY=155
--input-format accepts: auto (default), cfn, tf, wrangler--strict treats parse failures as fatal (recommended in CI)Run A.5 before eval — usage.yaml is an empty template after generate.
After generate, three files are produced:
./out/app.cost_model.json — expression AST and resource graph./out/app.schema.json — JSON Schema describing each parameter./out/app.usage.yaml — parameter file (empty template, must be filled)Always inspect <name>.schema.json first. It defines for each parameter:
name, type (number / integer / string), unit (e.g. requests/month, GB, ratio),
description, default (if any), and enum (if any).
Claude follows this procedure to fill usage.yaml interactively:
<name>.schema.json and enumerate all properties.default is present, show it as the candidate and confirm with the user.default, ask the user for a value (AskUserQuestion), presenting the unit and description together.requests, storage_gb), preview 3–4 log-scale examples: 1e6, 1e7, 1e8, 1e9.enum is present, list all choices.usage.yaml (Edit or Write tool).yevice eval --params ./out/app.usage.yaml.Filled values persist in the file, so subsequent eval runs are non-interactive.
Important: When
usage.yamlis empty or contains placeholder values (e.g.null,0,"REPLACE_ME"), do NOT silently fall back to defaults — ask the user. Cost estimates with wrong assumptions are worse than no estimate.
Unit conventions (schema is authoritative; these are common defaults):
| Unit | Meaning |
|---|---|
requests | per-month request count |
storage_gb | GB-month |
egress_gb | GB out per month |
duration_ms | per-invocation duration |
concurrency, replicas | integer count |
cache_hit_ratio | 0.0–1.0 fraction |
Run A.5 first to ensure usage.yaml has values before invoking sensitivity.
yevice sensitivity ./out/app.cost_model.json \
--params ./out/app.usage.yaml \
--var requests --min 1e6 --max 1e9 --steps 10
Enumeration solver (no extra dependency):
yevice optimize ./out/app.cost_model.json \
--params ./out/app.usage.yaml \
--budget 500
HiGHS solver (requires --highs install):
yevice optimize ./out/app.cost_model.json \
--params ./out/app.usage.yaml \
--budget 500 --solver highs
yevice compare \
--baseline ./out/v1.cost_model.json --baseline-params ./out/v1.usage.yaml \
--candidate ./out/v2.cost_model.json --candidate-params ./out/v2.usage.yaml
yevice update-pricing --region ap-northeast-1
| Kind | Description |
|---|---|
| Input | CFN YAML/JSON, TF HCL, wrangler.toml |
<name>.cost_model.json | Expression AST + resource graph |
<name>.schema.json | JSON Schema for parameter file. Read this before filling usage.yaml |
<name>.usage.yaml | Parameter file (must be filled before eval / sensitivity) |
pricing-data/<service>.json | AWS Price List catalog |
The default catalog currency is USD. To display in another currency:
--display-currency JPY --exchange-rate USD:JPY=155.0
When resources span multiple pricing currencies, the total is labeled mixed.
Set --exchange-rate to resolve to a single currency.
--strict: any parse failure is fatal; recommended for CI.Diagnostics have the shape:
IacParseDiagnostic { code, severity, source, location, message }
| Question | Subcommand |
|---|---|
| PR cost delta | compare |
| What if requests 10x? | sensitivity |
| Cheapest SKU mix | optimize |
| Capacity / quota check | validate |
| Time-varying peak load | simulate --profile |
| Just need a number | generate then eval (run A.5 first) |
gcc / clang)../scripts/install.sh --highs.pricing-data/ if available.--exchange-rate to normalise to one currency.usage.yaml empty / eval result is $0 — run interactive completion (A.5) to fill in parameter values.For installation, design rationale, and release notes, see https://github.com/rabe1028/yevice.
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub rabe1028/yevice --plugin yevice