Skip to main content
skill CX Codex

cost-model — Claude Code skill: LLM, infra and human cost

Pins down one format for the cost section in plans and architecture docs. Useful when a report claims savings and someone will ask how you got the number.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add avelikiy/great_cto --skill cost-model -a claude-code
Open on GitHub

What cost-model does

The skill defines a four-line template: LLM spend, the human equivalent, infra delta, and time to ship. Every line is a range rather than a single figure, and a methodology line sits underneath. The board's getCostHistory() parser anchors on the labels "LLM" and "Human" at line start, so the layout is not yours to rearrange.

A reference table covers typical per-call spend for pipeline agents on Sonnet 4 — architect, pm, senior-dev, qa-engineer, reviewer, security-officer, devops. For Haiku it advises dividing by roughly 4; for Opus 4, multiplying by roughly 5. Human rates come as bands: a senior engineer at $120–180/hour, staff or a narrow specialist at $200–300, security and compliance experts at $250–400.

Before the section goes into the plan, the skill asks you to check human_equiv / llm_cost. Above 1000, something broke — unit mix-ups, savings counted instead of spend, labels buried mid-line, or forecast blended with actuals. For AI archetypes (mlops, ai-system, agent-product) the pipeline opens gate:cost once the architect has forecast, and the CTO signs off on the monthly burn before senior-dev starts. The skill touches files under docs/plans/** and docs/architecture/**, with Read and Write only.

What it helps with

  • fill in the cost section of PLAN-*.md to one template
  • work out LLM spend across an agent pipeline
  • back a savings ratio with a stated method
  • agree a monthly cap before development starts
  • catch a unit error before the report ships

Example prompts for the agent

  • Estimate the LLM cost for this feature and write the cost-model section
  • Check the human_equiv to llm_cost ratio in docs/plans/PLAN-checkout.md
  • Forecast monthly burn for gate:cost at three load levels

How to install cost-model

1Skills CLI (Vercel)

npx skills add avelikiy/great_cto --skill cost-model -a claude-code

2Manually: put the files in place

~/.claude/skills/cost-model/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/cost-model/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about cost-model

How do I install cost-model in Claude Code?

Run npx skills add avelikiy/great_cto --skill cost-model -a claude-code. The skill lands at ~/.claude/skills/cost-model/SKILL.md.

What does cost-model do?

It sets the format for the cost section in plans and architecture docs: LLM spend, human equivalent, infra delta and time to ship. The layout is built to be read by the board's parser.

Why can't I change the format?

The getCostHistory() parser looks for the "LLM" and "Human" labels at line start. Mid-line mentions are skipped, a guard against the regression that produced wrong figures.

Source text

SKILL.md · MIT
---
name: cost-model
description: Standardized cost-estimation framework for great_cto plans. Forces explicit LLM cost, infra cost, human-supervision time, and the (defensible) human-equivalent comparison. Output format is parsable by the board's /api/cost path — must follow exactly.
when_to_use: |
  Apply when:
  - pm is writing PLAN-*.md and the Cost section is required
  - architect is forecasting LLM burn for a new feature (gate:cost for AI archetypes)
  - any report claims a savings ratio — must show methodology
effort: low
allowed-tools: Read, Write
paths:
  - "docs/plans/**"
  - "docs/architecture/**"
---

# Cost model — make cost claims defensible

great_cto reports cost numbers on the board. Those numbers MUST be
auditable, because a wrong "7,638×" claim killed credibility (see
docs/blog/cost-dashboard-rebuild.md). This skill defines the format.

## The 4-line cost section

Every PLAN-*.md and ARCH-*.md cost section follows this exact template:

```markdown
## Cost estimate

**LLM**: $<low>–<high> (<N> calls × $<per-call avg>)
**Human equiv**: $<low>–<high> (<hours> × $<rate>/h)
**Infra delta**: $<low>–<high>/month
**Time to ship**: <hours> agent-time, <hours> wall-clock

> Methodology: <one-sentence rationale for each range>
```

### Why this exact format?

The board's `getCostHistory()` parser anchors on **line-start** "LLM" and
"Human" labels. Mid-line references are ignored to prevent the
$240-trap regression. Stick to the template.

## How to estimate each line

### LLM cost

For each agent in the pipeline, estimate:
- **Prompt tokens** = (system prompt size) + (context the agent receives)
- **Completion tokens** = (typical output for that agent type)

Quick reference for Sonnet 4 ($3/M in, $15/M out):

| Agent | Typical prompt | Typical output | Per-call cost |
|---|---|---|---|
| architect | 14k | 1.5k | ~$0.06 |
| pm | 6k | 0.6k | ~$0.03 |
| senior-dev | 8k | 0.8k | ~$0.04 |
| qa-engineer | 11k | 0.5k | ~$0.04 |
| reviewer (avg) | 8-12k | 0.6k | ~$0.04 |
| security-officer | 12k | 1k | ~$0.05 |
| devops | 9k | 0.8k | ~$0.04 |

For Haiku ($0.80/M / $4/M), divide by ~4. For Opus 4 ($15/M / $75/M),
multiply by ~5.

Sum across the pipeline stages that actually fire (use `gatesFor()` and
`reviewersFor()` from archetypes.ts to know the count).

### Human equiv

The human cost to do the SAME work without agents. This is the "if I
hired a senior engineer, how long would this task take, at what rate?"

- Senior engineer: $120-180/hour (mid-market US/EU)
- Staff engineer / specialist: $200-300/hour
- Domain expert (security, compliance): $250-400/hour

Estimate hours conservatively. A "small feature" the LLM does in 15
minutes might take a human 2-4 hours (it's never just the typing).

### Infra delta

Only count what's NEW. If the feature adds a Redis instance, count
Redis. If it adds 10MB/month of S3 storage, that's noise — don't list.

### Time to ship

Two numbers — both useful:
- **Agent-time**: wall-clock of LLM calls (typically 5-30 min)
- **Wall-clock**: actual elapsed including human gates (typically hours
  to days)

## Sanity check before writing

Before committing the section to the plan, verify:

```
ratio = human_equiv / llm_cost
```

If `ratio > 1000`, something is wrong. Common bugs:

| Bug | How to detect | Fix |
|---|---|---|
| Wrong unit ($ vs ¢) | LLM cost ends in /M tokens not $ | Convert: tokens / 1M × price |
| Counting savings not spend | "Human time saved" not "Human cost" | Use cost of doing it, not value of skipping |
| Mid-line label pollution | Plan has "$X LLM | $Y human" on one line | Use multi-line format from template |
| Forecast vs actual mixed | LLM forecast counts toward total_llm | Separate forecast section if needed |

## Cost gates

For AI archetypes (`mlops`, `ai-system`, `agent-product`), the pipeline
opens `gate:cost` after architect's forecast. CTO must approve the
projected monthly burn before senior-dev starts.

Use the GATE template:

```markdown
## Gate:cost forecast

| Production volume | Monthly LLM cost |
|---|---|
| 1K req/day | $X |
| 10K req/day | $Y |
| 100K req/day | $Z |

Recommended monthly cap: $<cap>
Triggers above cap: <what alerts fire, who gets paged>
```

## Anti-patterns

❌ **Round-number theatre.** "$0.50 LLM | $7,500 human" — looks
suspicious. Use realistic ranges: "$0.50–1.20 | $225–360".

❌ **Single point estimates.** Always provide a range. Single numbers
hide uncertainty.

❌ **No methodology line.** Just numbers without rationale is unverifiable.

❌ **Hand-waved infra.** "Some hosting cost" is not a number. Either give
$, or say "infra: no change."

## Example — good

```markdown
## Cost estimate

**LLM**: $0.75–1.85 (3 tasks × $0.25–0.62 per Sonnet call)
**Human equiv**: $225–300 (1.5–2h × $150/h, mid-market senior)
**Infra delta**: $0/month (uses existing Express + Postgres)
**Time to ship**: ~15min agent-time, ~3h wall-clock (1 human gate)

> Methodology: tasks sized by line-count estimate; per-call cost from
> historical Sonnet 4 averages on this archetype's plans.
```

Ratio = 300/1.85 = **162×**. Plausible. Defensible.

© avelikiy · MIT · avelikiy/great_cto

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set11

signing-preflight Checks before the first commit that the signing key is loaded and unlocked, and asks the operator to unlock it up front. CX Codex +1 ★ 107repo stars prose-style A writing contract for agent output: conclusion first, evidence over adjectives. Useful when a person reads the report, not a parser. CX Codex +1 ★ 107repo stars pm-planning Turns an approved architecture document into a Beads task list with dependencies, time-boxes and acceptance criteria. Built for the pm agent handing work to senior-dev. CX Codex +1 ★ 107repo stars observability-baseline Bakes error capture in Sentry, request-id structured logs and /healthz plus /readyz endpoints into a freshly generated service. Useful when the app is still being scaffolded and you don't want the first prod failure to go unseen. CX Codex +1 ★ 107repo stars great_cto The skill turns Claude into a pipeline orchestrator: you describe the task in plain words and the right agents run on their own. Useful when one agent drives a whole project. CX Codex +1 ★ 107repo stars deploy-landed The skill checks that the revision being served is the commit you meant, that its env reached the running process, and that the product actually works. Useful after any deploy or restart. CX Codex +1 ★ 107repo stars brainstorming Takes a raw product idea through three steps: divergent bets, a two-round argument between four personas on four models, and a synthesised call. CX Codex +1 ★ 107repo stars anti-patterns A reference list of known SDLC anti-patterns that great_cto agents cite when they push back on an architecture, a plan or a diff. CX Codex +1 ★ 107repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor