ops-revenue

GitHub

追踪AWS成本、收入及烧钱率。解析凭证,调用脚本获取Usage消耗与Credits,结合FinOps仪表盘数据生成财务简报,确保准确反映真实支出与资金跑道。

claude-ops/skills/ops-revenue/SKILL.md Lifecycle-Innovations-Limited/claude-ops

Trigger Scenarios

查询公司或项目当前的AWS花费与收入状况 评估资金燃烧速率(Burn Rate)和剩余运行时间(Runway) 检查信用额度即将过期的情况

Install

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-revenue -g -y
More Options

Non-standard path

npx skills add https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-revenue -g -y

Use without installing

npx skills use Lifecycle-Innovations-Limited/claude-ops@ops-revenue

指定 Agent (Claude Code)

npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-revenue -a claude-code -g -y

安装 repo 全部 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --all -g -y

预览 repo 内 skill

npx skills add Lifecycle-Innovations-Limited/claude-ops --list

SKILL.md

Frontmatter
{
    "name": "ops-revenue",
    "effort": "low",
    "maxTurns": 20,
    "description": "Revenue and costs tracker. AWS spend via aws ce, credits tracker, project revenue stages. Shows burn rate, runway estimate, credits expiring.",
    "allowed-tools": [
        "Bash",
        "Read",
        "Grep",
        "Glob",
        "Skill",
        "AskUserQuestion",
        "WebFetch",
        "Write"
    ],
    "argument-hint": "[costs|revenue|credits|runway|all]",
    "disallowedTools": [
        "Edit",
        "NotebookEdit"
    ]
}

OPS ► REVENUE & COSTS

Runtime Context

Before executing, load available context:

  1. Preferences: Read ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json

    • timezone — display all timestamps correctly
  2. Daemon health: Read ${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.json

    • If action_needed is not null → surface it before the cost report
  3. Secrets: AWS Cost Explorer requires credentials.

    Secret Resolution

    • AWS: check $AWS_PROFILE / $AWS_ACCESS_KEY_IDdoppler secrets get AWS_ACCESS_KEY_ID --plain → vault query cmd from prefs
    • If no credentials available, report "AWS costs unavailable — credentials not configured" and show only the revenue pipeline from registry

CLI/API Reference

AWS burn doctrine (CRITICAL — 2026-07-22)

Never report plain UnblendedCost / NetUnblendedCost totals as "spend". Startup credits, SPP discounts, and Savings Plan negation make those nets ≈ $0 while real Usage burn is hundreds/day. Always use RECORD_TYPE=Usage for burn, pace, spikes, runway, and Bedrock. Show credits only as a mask line.

Canonical helper (prefer this over raw aws ce):

${CLAUDE_PLUGIN_ROOT}/scripts/aws-usage-cost.sh snapshot 2>/dev/null || echo '{}'
${CLAUDE_PLUGIN_ROOT}/scripts/aws-usage-cost.sh all 2>/dev/null || true
Command Usage Output
scripts/aws-usage-cost.sh snapshot MTD/prev Usage burn + 7d daily + top services + credit mask JSON
scripts/aws-usage-cost.sh daily 7 Last N days Usage totals JSON array
scripts/aws-usage-cost.sh by-service mtd MTD Usage by service JSON array
scripts/aws-usage-cost.sh record-types Credit / Usage / SP breakdown (mask only) JSON array
aws ce get-cost-and-usage … --filter '{"Dimensions":{"Key":"RECORD_TYPE","Values":["Usage"]}}' Raw Usage-only CE (fallback if helper missing) Cost JSON
aws ce list-savings-plans-purchase-recommendation Savings plan recommendations JSON

Phase 1 — Gather financial data in parallel

FinOps dashboard — canonical revenue + burn

If FINOPS_DASHBOARD_URL and FINOPS_OPS_API_TOKEN are configured, the dashboard is the single source of truth for per-project MRR, 30d revenue, and current burn. Per-DBA breakdown comes from the Stripe revenue snapshots ingested via /api/ops/revenue. Falls open to {} if unset — the per-source AWS / RevenueCat queries below run as fallback.

If the dashboard current_month_spend is ≈ $0 while Usage burn from aws-usage-cost.sh is material, trust the helper (dashboard may still be credit-masked or ingest-empty). Always dual-check with the Usage helper.

${CLAUDE_PLUGIN_ROOT}/scripts/finops-bridge.sh snapshot 2>/dev/null || echo "{}"
${CLAUDE_PLUGIN_ROOT}/scripts/finops-bridge.sh revenue project 2>/dev/null || echo "{}"

When the dashboard returns data, render the per-project MRR section from groups[] rather than from RevenueCat-only data.

AWS costs — Usage burn (authoritative)

${CLAUDE_PLUGIN_ROOT}/scripts/aws-usage-cost.sh snapshot 2>/dev/null || echo '{}'

Fallback if helper missing:

USAGE_FILTER='{"Dimensions":{"Key":"RECORD_TYPE","Values":["Usage"]}}'
aws ce get-cost-and-usage \
  --time-period "Start=$(date +%Y-%m-01),End=$(date +%Y-%m-%d)" \
  --granularity MONTHLY \
  --metrics "UnblendedCost" \
  --filter "$USAGE_FILTER" \
  --group-by "Type=DIMENSION,Key=SERVICE" \
  --output json 2>/dev/null

AWS costs (last 3 months Usage trend)

USAGE_FILTER='{"Dimensions":{"Key":"RECORD_TYPE","Values":["Usage"]}}'
aws ce get-cost-and-usage \
  --time-period "Start=$(date -v-3m +%Y-%m-01 2>/dev/null || date -d '3 months ago' +%Y-%m-01),End=$(date +%Y-%m-%d)" \
  --granularity MONTHLY \
  --metrics "UnblendedCost" \
  --filter "$USAGE_FILTER" \
  --output json 2>/dev/null

AWS credits / discount mask (not spend)

${CLAUDE_PLUGIN_ROOT}/scripts/aws-usage-cost.sh record-types 2>/dev/null || echo '[]'
aws ce list-savings-plans-purchase-recommendation --output json 2>/dev/null || echo '{}'
aws ce get-credits --output json 2>/dev/null || echo "credits API unavailable"

AWS cost forecast (end of month)

Note: CE forecasts are often net-of-credits. Prefer eom_pace from aws-usage-cost.sh snapshot (7d Usage avg × days in month) as the burn forecast.

aws ce get-cost-forecast \
  --time-period "Start=$(date +%Y-%m-%d),End=$(date +%Y-%m-28)" \
  --metric "UNBLENDED_COST" \
  --granularity MONTHLY \
  --output json 2>/dev/null

Project registry (revenue stage)

cat "${CLAUDE_PLUGIN_ROOT}/scripts/registry.json" 2>/dev/null | jq '[.projects[] | {alias, name, stage: (.revenue_stage // .revenue.stage // "pre-revenue"), mrr: (.mrr // 0), source: (.source // "git"), type: (.type // "repo")}]'

External project revenue (Shopify, custom SaaS)

${CLAUDE_PLUGIN_ROOT}/bin/ops-external 2>/dev/null || echo '[]'

For Shopify projects showing status: "healthy", pull GMV via Shopify Admin API:

# For each Shopify project in registry with valid credentials:
STORE_URL="[from project.shopify.store_url]"
TOKEN="[from env var named in project.shopify.credential_key]"
curl -s -H "X-Shopify-Access-Token: $TOKEN" \
  "https://$STORE_URL/admin/api/2024-10/orders.json?status=any&created_at_min=$(date -v-30d +%Y-%m-%dT00:00:00Z 2>/dev/null)&limit=250" 2>/dev/null

Include Shopify GMV in the revenue pipeline table with source=shopify.


Phase 2 — Render dashboard

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 OPS ► REVENUE & COSTS — [month]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AWS USAGE BURN (RECORD_TYPE=Usage — not credit-masked net)
 This month usage:    $[X]     ← from aws-usage-cost.sh mtd_usage
 Forecast (EOM pace): $[X]     ← eom_pace (7d Usage avg × days)
 Last month usage:    $[X]
 MoM change:          [+/-X%]
 7d avg/day:          $[X]

 Top services (Usage):
 [service]  $[X]  ([%] of usage)
 [service]  $[X]
 ...

CREDITS / MASK (do not report as low spend)
 Credits applied MTD:    $[X]  (record_types Credit)
 Discounts MTD:          $[X]
 Net after mask:         ~$0 is EXPECTED when credits cover burn
 Credits remaining:      $[X] (if API available)
 Expires:                [date]
 Months cover at pace:   [N]

REVENUE PIPELINE
 PROJECT        SOURCE     STAGE           MRR/GMV    STATUS
 ──────────────────────────────────────────────────────────────
 [project]      git        [stage]         $[X]       [status]
 [project]      shopify    [stage]         $[X] GMV   [status]
 [project]      custom     [stage]         $[X]       [status]
 ...
 ──────────────────────────────────────────────────────────────
 TOTAL MRR                                 $[X]
 TOTAL SHOPIFY GMV (30d)                   $[X]

RUNWAY ESTIMATE
 Monthly burn (AWS):  $[X]
 Total MRR:           $[X]
 Net burn:            $[X/month]
 Credits cover:       [N months]
 Cash runway:         [depends on external data]

──────────────────────────────────────────────────────

Use batched AskUserQuestion calls (max 4 options each):

AskUserQuestion call 1:

  [Drill into AWS costs by service]
  [Show cost anomalies (spike detection)]
  [Export cost report]
  [More...]

AskUserQuestion call 2 (only if "More..."):

  [Update project revenue stage]
  [Set budget alert]

Route by $ARGUMENTS

Argument Action
costs Show only AWS cost breakdown
credits Show only credits and expiry
revenue Show only revenue pipeline
runway Calculate and show runway
(empty) Show full dashboard

Use AskUserQuestion after the dashboard for next action.


Native tool usage

WebFetch — billing API fallback

When aws ce commands fail or return incomplete data, use WebFetch to query the AWS Cost Explorer API directly. Also useful for fetching Stripe/billing provider data if configured.

Write — export reports

When user selects "Export cost report" (option c), use Write to save the report as a dated file:

Write(file_path: "/tmp/ops-revenue-[date].md", content: "[formatted report]")

Version History

  • 64bad13 Current 2026-08-12 09:01

Same Skill Collection

claude-ops/skills/boss/SKILL.md
claude-ops/skills/flow/SKILL.md
claude-ops/skills/ledger/SKILL.md
claude-ops/skills/ops-accounts/SKILL.md
claude-ops/skills/ops-ar/SKILL.md
claude-ops/skills/ops-aws-audit/SKILL.md
claude-ops/skills/ops-comms/SKILL.md
claude-ops/skills/ops-competitors/SKILL.md
claude-ops/skills/ops-credentials/SKILL.md
claude-ops/skills/ops-daemon/SKILL.md
claude-ops/skills/ops-dash/SKILL.md
claude-ops/skills/ops-deploy-fix/SKILL.md
claude-ops/skills/ops-deploy/SKILL.md
claude-ops/skills/ops-desktop/SKILL.md
claude-ops/skills/ops-doctor/SKILL.md
claude-ops/skills/ops-ecom/SKILL.md
claude-ops/skills/ops-feature-dev/SKILL.md
claude-ops/skills/ops-fires/SKILL.md
claude-ops/skills/ops-fleet/SKILL.md
claude-ops/skills/ops-go/SKILL.md
claude-ops/skills/ops-gtm/SKILL.md
claude-ops/skills/ops-home/SKILL.md
claude-ops/skills/ops-inbox/SKILL.md
claude-ops/skills/ops-integrate/SKILL.md
claude-ops/skills/ops-leadgen/SKILL.md
claude-ops/skills/ops-linear/SKILL.md
claude-ops/skills/ops-mac/SKILL.md
claude-ops/skills/ops-marketing/SKILL.md
claude-ops/skills/ops-mcp/SKILL.md
claude-ops/skills/ops-merge/SKILL.md
claude-ops/skills/ops-monitor/SKILL.md
claude-ops/skills/ops-next/SKILL.md
claude-ops/skills/ops-orchestrate/SKILL.md
claude-ops/skills/ops-package/SKILL.md
claude-ops/skills/ops-pocket/SKILL.md
claude-ops/skills/ops-projects/SKILL.md
claude-ops/skills/ops-recap/SKILL.md
claude-ops/skills/ops-release/SKILL.md
claude-ops/skills/ops-resume/SKILL.md
claude-ops/skills/ops-rotate-setup/SKILL.md
claude-ops/skills/ops-rotate/SKILL.md
claude-ops/skills/ops-secret-sync/SKILL.md
claude-ops/skills/ops-settings/SKILL.md
claude-ops/skills/ops-ship/SKILL.md
claude-ops/skills/ops-speedup/SKILL.md
claude-ops/skills/ops-status/SKILL.md
claude-ops/skills/ops-triage/SKILL.md
claude-ops/skills/ops-unifi/SKILL.md
claude-ops/skills/ops-update/SKILL.md

Metadata

Files
0
Version
2dbf8cb
Hash
9485aff7
Indexed
2026-08-12 09:01

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-12 23:16
浙ICP备14020137号-1 $Гость$