Agent Skills
› theopenco/llmgateway
› billing
billing
GitHubLLM网关计费技能,涵盖组织计划、Stripe支付、额度计算及审计通知。涉及金额运算、订阅逻辑、Webhook处理及邮件发送规则。适用于修改计费、订阅、成本计算及相关通知的代码。
触发场景
修改 Stripe 支付或订阅逻辑
调整额度或成本计算公式
处理 Stripe Webhook 事件
变更组织计划或权限门控
安装
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.
版本历史
- d41bf19 当前 2026-10-19 04:12


