mcpField
A
autumn-add-usage-tracking

autumn-add-usage-tracking

github.com/useautumnDevelopment151 installsUpdated 3w ago
Repository

About autumn-add-usage-tracking

autumn-add-usage-tracking is a skill for integrating Autumn feature-usage checks and tracking into applications. It guides backend enforcement, frontend usage displays, metered features, and credit systems.

Key features

  1. 01Check feature access before work
  2. 02Track usage after successful work
  3. 03Enforce limits on the backend
  4. 04Display customer usage balances
  5. 05Handle metered features and credit systems
  6. 06Use idempotency keys and batch values

Use cases

  1. 01Prevent actions when a customer reaches a limit
  2. 02Record completed API or feature usage
  3. 03Show remaining usage in a React interface
  4. 04Deduct credits for metered feature use

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/useautumn/skills --skill autumn-add-usage-tracking

After installing, type/autumn-add-usage-trackingin Claude Code to confirm it loaded.

Details

From the project README

Autumn Usage Tracking

Always consult docs.useautumn.com for code examples and latest API.

Autumn tracks feature usage and enforces limits. Backend checks required for security.


Quick Reference

Core Pattern
check → work → track
Check Response
FieldDescription
allowedCan customer proceed
balanceUnits remaining
included_usageTotal usage included in plan
unlimitedNo limit enforced
Feature Types
TypeBehavior
booleanAccess granted or denied
meteredUsage tracked against limit
credit_systemPool for multiple features

Security Model

LayerPurposeTrust
FrontendUX (show/hide UI)Untrusted
BackendEnforcementRequired

Backend Implementation

import { Autumn } from "autumn-js";

const autumn = new Autumn({ secretKey: process.env.AUTUMN_SECRET_KEY });

// 1. Check
const { data } = await autumn.check({ customer_id, feature_id: "api_calls" });
if (!data.allowed) return { error: "Limit reached" };

// 2. Work
const result = await doWork();

// 3. Track
await autumn.track({ customer_id, feature_id: "api_calls", value: 1 });
return result;
from autumn import Autumn

autumn = Autumn('am_sk_test_xxx')

response = await autumn.check(customer_id="user_123", feature_id="api_calls")
if not response.allowed:
    raise HTTPException(403, "Limit reached")

result = await do_work()
await autumn.track(customer_id="user_123", feature_id="api_calls", value=1)

React Implementation

import { useCustomer } from "autumn-js/react";

const { check, refetch } = useCustomer();

const handleAction = async () => {
  const { data } = await check({ featureId: "messages" });
  if (!data?.allowed) {
    showUpgradePrompt();
    return;
  }
  
  await performAction();
  await refetch();
};

Displaying Usage

const { customer } = useCustomer();
const feature = customer?.features?.api_calls;

<p>{feature?.balance} / {feature?.included_usage}</p>

Credit Systems

Track the underlying metered feature, not the credit system:

// Config: credits → api_calls (1), image_gen (10)

// Wrong
await autumn.track({ customer_id, feature_id: "credits", value: 10 });

// Right - Autumn deducts 10 credits automatically
await autumn.track({ customer_id, feature_id: "image_gen", value: 1 });

Common Gotchas

  1. Track after success - Only track if work completes successfully
  2. Backend required - Frontend checks can be bypassed
  3. Credit systems - Track metered features, not the credit pool
  4. Idempotency - Use idempotency_key to prevent double-counting
  5. Batch tracking - Pass higher value for bulk operations

Resources

Comments

Markdown supported