agentleFS
Piebald-AIPiebald-AI/splitrail/.claude/skills/pricing/SKILL.md

pricing

Skill228 starsChanged 5 months agoMITView on GitHub

Guide for updating model pricing in Splitrail. Use when adding new AI model costs or updating existing pricing data.

58 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use grow-sustainably, processize and 10 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • slavingiaSkill

    grow-sustainably

    Evaluate business decisions through the lens of sustainable, profitable growth. Use when someone is making decisions about spending, hiring, fundraising, or scaling their business.

    Also in 7 projects that use this

  • slavingiaSkill

    processize

    Turn a product idea into a manual-first process you can start delivering today. Use when you have an idea and want to figure out how to deliver value by hand before writing any code.

    Also in 7 projects that use this

  • CesarjoquinSkill

    paywalls

    When the user wants to create or optimize in-app paywalls, upgrade screens, upsell modals, or feature gates. Also use when the user mentions "paywall," "upgrade screen," "upgrade modal," "upsell," "feature gate," "convert free to paid," "freemium conversion," "trial expiration screen," "limit reached screen," "plan upgrade prompt," "in-app pricing," "free users won't upgrade," "trial to paid conversion," or "how do I get users to pay." Use this for any in-product moment where you're asking users to upgrade. Distinct from public pricing pages (see cro) — this focuses on in-product upgrade moments where the user has already experienced value. For pricing decisions, see pricing.

    Also in 19 projects that use this

  • CesarjoquinSkill

    popups

    When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes. Also use when the user mentions "exit intent," "popup conversions," "modal optimization," "lead capture popup," "email popup," "announcement banner," "overlay," "collect emails with a popup," "exit popup," "scroll trigger," "sticky bar," or "notification bar." Use this for any overlay or interrupt-style conversion element. For forms outside of popups, see cro. For general page conversion optimization, see cro.

    Also in 18 projects that use this

  • coreyhaines31Skill

    marketing-council

    When the user wants multiple expert perspectives on a marketing question — a simulated board of advisors staffed by legendary marketers (Seth Godin, David Ogilvy, Eugene Schwartz, April Dunford, Rory Sutherland, Alex Hormozi, Byron Sharp, and more). Also use when the user mentions 'marketing council,' 'board of advisors,' 'advisory board,' 'what would Seth Godin say,' 'what would Ogilvy think,' 'channel Hormozi,' 'get multiple perspectives,' 'debate this,' 'have the council review,' 'marketing mentors,' or asks how a famous marketer would approach their problem. The council gives each advisor's take through their documented frameworks, surfaces where they disagree, and synthesizes a recommendation. For executing the winning direction, hand off to positioning, offers, copywriting, ads, or the relevant skill.

    Also in 14 projects that use this

  • +6 more from Cesarjoquin
  • +1 more from slavingia

The file

We split this skill into the rules it gives an agent

11 rules. 0 are common, 4 are distinctive, and 7 are very specific to this project.

  • 0

    Common

    Most of the 53 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Add a ModelInfo entry in populate_defaults() with:

    line 12
  2. Distinctive:

    If the model has aliases (date suffixes, provider-prefixed names, regional names, etc.), add entries to the alias section mapping each …

    line 19
  3. Very specific:

    Add or update tests in src/models.rs for canonical pricing, aliases, caching, and estimated/non-estimated status.

    line 20
  4. Very specific:

    Use dated_pricing when a model has temporary promotional pricing, launch pricing, or another time-bounded rate that should apply based on …

    line 24
  5. Distinctive:

    When adding a dated override:

    line 28
  6. Very specific:

    Keep the model's default pricing/caching at the post-promo or durable rate.

    line 30
  7. Very specific:

    Add the temporary rate with add_dated_pricing!() after add_model!().

    line 31
  8. Distinctive:

    Add boundary tests for the final day of the temporary rate and the first day after it ends.

    line 32
  9. Distinctive:

    Prefer dated calculator functions in analyzers that know the usage timestamp.

    line 33
  10. Very specific:

    Use models::calculate_total_cost_for_service_tier_at() when an analyzer has a message or event timestamp.

    line 37
  11. Very specific:

    Use the undated compatibility helpers, such as models::calculate_total_cost(), only for tests, config-like calculations, or call sites that …

    line 39

“Common” is measured: kept by at least 6 in 10 of the 53 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Pricing Model Updates

Token pricing is defined in src/models.rs. Built-in models are populated by populate_defaults() into the runtime model registry, and user/config models can be merged with init_external_models().

Adding a New Model

  1. Add a ModelInfo entry in populate_defaults() with:
    • pricing: Use PricingStructure::Flat { input_per_1m, output_per_1m } for flat-rate models, or PricingStructure::Tiered for threshold-based pricing.
    • caching: Use the appropriate CachingSupport variant (None, OpenAI, Anthropic, OpenAIWithWrites, or Tiered).
    • service_tiers: Leave empty unless the provider has distinct priority/flex/batch rates.
    • dated_pricing: Leave empty unless pricing changes by usage date.
    • is_estimated: Set to true only when pricing is not confirmed by a provider/tool source.
    • input_token_semantics: Auto-derived for built-in models (defaults to ExcludesCache); only GPT/o-series models typically need IncludesCacheRead. External model configs should set this explicitly if it affects cache-read counting.
  2. If the model has aliases (date suffixes, provider-prefixed names, regional names, etc.), add entries to the alias section mapping each observed name to the canonical model name.
  3. Add or update tests in src/models.rs for canonical pricing, aliases, caching, and estimated/non-estimated status.

Dated Pricing Overrides

Use dated_pricing when a model has temporary promotional pricing, launch pricing, or another time-bounded rate that should apply based on the original usage timestamp.

The default pricing and caching fields should represent the durable/current sticker price. Each DatedPricing override has a valid_until: NaiveDate exclusive end date and applies when usage_date < valid_until. For example, an introductory rate that applies through 2026-08-31 should use valid_until = NaiveDate::from_ymd_opt(2026, 9, 1).expect("valid date").

When adding a dated override:

  • Keep the model's default pricing/caching at the post-promo or durable rate.
  • Add the temporary rate with add_dated_pricing!() after add_model!().
  • Add boundary tests for the final day of the temporary rate and the first day after it ends.
  • Prefer dated calculator functions in analyzers that know the usage timestamp.

Price Calculation

Use models::calculate_total_cost_for_service_tier_at() when an analyzer has a message or event timestamp. This preserves historical costs across dated pricing windows.

Use the undated compatibility helpers, such as models::calculate_total_cost(), only for tests, config-like calculations, or call sites that truly do not know the usage date. Undated helpers use the model's default pricing/caching, not temporary dated overrides.

Common Pricing Sources

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.