Agent Skills
› theopenco/llmgateway
› billing
billing
GitHub管理LLM网关的组织、计划、积分和计费逻辑,涵盖Stripe集成、成本计算及审计通知。适用于涉及账单、订阅或组织权限的代码变更。
Trigger Scenarios
修改计费或订阅逻辑
处理Stripe Webhook
调整组织计划或积分限制
Install
npx skills add theopenco/llmgateway --skill billing -g -y
SKILL.md
Frontmatter
{
"name": "billing",
"description": "Organizations, plans, credits, and billing in LLM Gateway — org kinds, the Pro plan, DevPass and Chat entitlements, Stripe webhooks, end-user wallets, cost and token billing math, audit logs, and org-scoped emails and notifications. Use when changing apps\/api\/src\/stripe.ts, subscription or credit logic, cost calculation, organization.kind or plan gating, DevPass status, audit_log actions, or any email or notification sent for an organization."
}
Billing and organizations
Money
- Do all money, credit, and usage-threshold math with
Decimalfromdecimal.js; convert DB decimal strings withnew Decimal(value ?? 0). - Token extraction (
apps/gateway/src/chat/tools/extract-token-usage.ts) normalizes completion tokens to include reasoning;calculateCosts(packages/actions/src/costs.ts) bills the completion count and reportsreasoningTokensas a detail. Verify a new reasoning provider's usage semantics live.
Organization kinds and plans
organization.kind(default/devpass/chat) is set at creation and never changes; DevPass and Chat signups get a separate organization (apps/api/src/utils/personal-org.ts). Joining on it for historical attribution is safe.organization.planchanges over time.- The Pro plan exists only on
defaultorgs. DevPass and Chat entitlements live indevPlan/chatPlanand their*CreditsLimit/*StripeSubscriptionIdcolumns;organization.stripeSubscriptionIdis reserved for a team org's Pro subscription. - Every Stripe webhook that sets
plan: "pro"or stampsstripeSubscriptionIdfirst returns for non-default kinds, ascheckout.session.completed,customer.subscription.created, andinvoice.payment_succeededinapps/api/src/stripe.tsdo. Adevpassorchatorg withplan: "pro"is corrupt state; gate product behavior for those orgs on their own entitlement columns. - End-user wallet organizations are regular PAYG
defaultorgs.withWalletCreditsaffects only downstream credit gating, never kind- or plan-gated gateway logic. - For "has this org ever paid for DevPass", use
hasBillingHistoryfromGET /dev-plans/status; plan end clears everydevPlan*column.
Audit log, emails, notifications
audit_logrecords actions owned by one organization. User-account events (email, password, profile) belong in a user-scoped store.- Send org-scoped email only when the org owner's email is verified, via
isOrgOwnerEmailVerified/resolveVerifiedOrgRecipient(@llmgateway/db). Only verification and password-reset emails reach unverified users. - Prefix org-scoped notification event keys with the org id.
Version History
- d41bf19 Current 2026-10-19 04:12


