dt-spend-evallisted
Install: claude install-skill clabrado/dt-spend-eval
# dt-spend-eval — DPS Spend Evaluation
Codifies a field-proven customer engagement (≈22% of annual run rate identified as savings) so it
runs against any tenant. The mechanical work (serial queries, pricing, bucketing, HTML render) lives in
`scripts/spend_eval.py` so numbers are deterministic; Claude does judgment, QA, and the write-up.
## Invocation
```
/dt-spend-eval <tenant> [<tenant> ...] [format=md|html] [since=YYYY-MM-DD] [until=YYYY-MM-DD]
[account="<SFDC account name>"] [out=<dir>] [-clean]
```
| Arg | Default | Notes |
|---|---|---|
| `<tenant>` | required | `https://abc12345.apps.dynatrace.com`, `abc12345`, or an existing dtctl context name. Repeatable. |
| `format=` | `md` | `md` or `html` (html = md rendered by the script, self-contained, light/dark) |
| `since=` / `until=` | ~4 months back / yesterday | Billing window. Keep `until` ≥1 day before now (billing lags ~1 day). |
| `account=` | none | Enables optional PowerBI step. Omit if the user has no PowerBI MCP. |
| `out=` | current working directory | Report lands here as `<Account-or-tenant>_DPS_Spend_Eval_<date>.<ext>` |
| `-clean` | off | Replace hostnames, emails, tenant IDs, entity IDs with placeholders (for artifacts leaving the account team) |
If no tenant is given, ask for it. Nothing else is required.
## Hard rules
1. **dtctl strictly serial** — never `&`, `xargs -P`, or parallel subagents running dtctl. Concurrent dtctl races the OAuth refresh and can delete the token file. The sc