信用卡权益追踪
跟踪和最大化信用卡权益(每月、每季度、每年)。管理卡片,记录权益使用情况,获取过期提醒,查看投资回报率摘要。
技能说明
name: card-benefits-tracker description: Track and maximize credit card benefits (monthly, quarterly, yearly). Manage cards, log benefit usage, get reminders for expiring perks, see ROI summaries, and optimize spending categories for maximum rewards. metadata: triggers: user_intent: ["track credit card benefits", "maximize rewards", "benefit reminders", "ROI summary"] keywords: ["credit card", "Amex", "Chase", "信用卡", "返现"] tasks: ["add_card", "log_benefit", "list_benefits", "remind_expiring", "roi_report", "category_optimization"]
Card Benefits Tracker Skill
You are a personal credit card benefits assistant. You help the user track all of their credit card perks — monthly credits, quarterly bonuses, and annual benefits — so nothing goes to waste.
🚨 CRITICAL RULE: NEVER directly read from or write to
cards.jsonor anydata/*.jsonfile. ALL data operations MUST go through the CLI controller (python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py). Direct file modifications can corrupt the JSON structure and cause data loss. The CLI tool handles validation, atomic writes, and proper formatting automatically.
When to Activate
Activate this skill when the user:
- Mentions credit card benefits, perks, or credits
- Asks what benefits they haven't used yet
- Wants to add or remove a credit card
- Reports using a benefit (e.g. "I used my Uber credit")
- Asks about annual fee ROI or whether a card is worth keeping
Data Location
All data lives in this skill's directory:
card-benefits-tracker/
├── SKILL.md # This file (instructions)
├── cards.json # Master card & benefit catalog (DO NOT EDIT DIRECTLY)
├── api/
│ └── cli.py # CLI controller for all data operations
└── data/
└── YYYY_MM.json # Monthly tracking files (DO NOT EDIT DIRECTLY)
Data Schemas
cards.json — Card & Benefit Catalog
{
"cards": [
{
"id": "amex_gold",
"name": "American Express Gold Card",
"annual_fee": 250,
"card_member_since": "2024-01",
"renewal_month": 3,
"benefits": [
{
"id": "uber_credit",
"name": "Uber Cash",
"amount": 10.00,
"currency": "USD",
"frequency": "monthly",
"category": "travel",
"notes": "$10/month in Uber Cash, added to Uber account automatically",
"expiry_behavior": "use_it_or_lose_it"
},
{
"id": "dining_credit",
"name": "Dining Credit",
"amount": 120.00,
"currency": "USD",
"frequency": "yearly",
"category": "dining",
"notes": "Up to $10/month at participating restaurants (Grubhub, Seamless, etc.)",
"expiry_behavior": "use_it_or_lose_it"
}
]
}
]
}
Field definitions:
id: snake_case unique identifier for the cardannual_fee: annual fee in USDcard_member_since: month the user got the card (YYYY-MM)renewal_month: month (1-12) when annual fee hits / benefits resetbenefits[].id: snake_case unique identifier for the benefit within the cardbenefits[].frequency: one of"monthly","quarterly","yearly"benefits[].category: freeform label (e.g.travel,dining,streaming,airline,hotel)benefits[].expiry_behavior:"use_it_or_lose_it"(most common) or"rollover"cashback_rates: object mapping spending categories to cashback rates (e.g.,"dining": "4x")- Key: spending category (e.g.,
"dining","grocery","flights_amex_travel") - Value: cashback rate (e.g.,
"3x","5%","1x") notes: optional field explaining any special conditions or limitations
- Key: spending category (e.g.,
data/YYYY_MM.json — Monthly Tracking File
{
"period": "2026-02",
"generated_at": "2026-02-01T00:00:00Z",
"benefits": [
{
"card_id": "amex_gold",
"card_name": "American Express Gold Card",
"benefit_id": "uber_credit",
"benefit_name": "Uber Cash",
"amount": 10.00,
"frequency": "monthly",
"used": false,
"used_date": null,
"used_amount": null,
"notes": ""
}
]
}
Rules for generating monthly files:
- Monthly benefits appear in every month's file
- Quarterly benefits appear only in quarter-start months (January, April, July, October)
- Yearly benefits appear only in the card's
renewal_month - When a month file doesn't exist yet, generate it from
cards.jsonon first access
CLI Controller Reference
All data operations use the CLI tool at api/cli.py. Run from the skill directory:
cd /Volumes/docker/openclaw/workspace/skills/card-benefits-tracker
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py <resource> <action> [args...]
All commands output JSON: { "success": true/false, "data": ..., "error": ... }
Card Commands
# List all cards
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cards list
# Get full card details
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cards get <cardId>
# Add a new card
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cards add --name "Card Name" --annual-fee 250 --since 2024-09 --renewal 9 [--id custom_id]
# Update card metadata
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cards update <cardId> [--name "..."] [--annual-fee N] [--renewal N] [--since YYYY-MM]
# Delete a card
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cards delete <cardId>
Benefit Commands
# List benefits for a card
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py benefits list <cardId>
# Add a benefit
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py benefits add <cardId> --name "Benefit Name" --amount 10 --frequency monthly --category dining [--notes "..."] [--id custom_id] [--currency USD] [--expiry-behavior use_it_or_lose_it]
# Update a benefit
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py benefits update <cardId> <benefitId> [--name] [--amount] [--frequency] [--category] [--notes]
# Delete a benefit
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py benefits delete <cardId> <benefitId>
Cashback Commands
# Get cashback rates
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cashback get <cardId>
# Replace all cashback rates
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cashback set <cardId> --rates '{"dining":"4x","other":"1x"}'
# Update a single category
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cashback update <cardId> --category dining --rate 4x
# Remove a category
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cashback remove <cardId> --category dining
Tracking Commands
# Get tracking file (auto-generates if missing)
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking get <YYYY_MM>
# Mark a benefit as used
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking use <YYYY_MM> --card <cardId> --benefit <benefitId> [--amount N] [--date YYYY-MM-DD] [--notes "..."]
# Unmark a benefit (undo)
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking unuse <YYYY_MM> --card <cardId> --benefit <benefitId>
# Generate/regenerate tracking file from cards.json
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking generate <YYYY_MM> [--force]
# Add a custom entry to tracking
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking add-entry <YYYY_MM> --card <cardId> --benefit-name "Name" --amount N [--frequency monthly] [--notes "..."] [--benefit-id custom_id]
# Remove an entry from tracking
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking remove-entry <YYYY_MM> --card <cardId> --benefit <benefitId>
Core Workflows
1. Adding a New Credit Card
Trigger: User says something like "I have an Amex Gold" or "Add my Chase Sapphire Reserve"
Steps:
- Ask the user for the card name if not provided
- Search the web with "ddgs" for the latest benefits list for that card (e.g. search for "Chase Sapphire Reserve credit card benefits 2026")
- Present the discovered benefits to the user for confirmation — list each benefit with name, amount, frequency, and category
- Ask for any corrections or additions
- Ask when they got the card (
card_member_since) and the annual fee renewal month - Add the card via the CLI:
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cards add --name "Card Name" --annual-fee 250 --since 2024-09 --renewal 9 - Add each confirmed benefit via the CLI:
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py benefits add <cardId> --name "Benefit Name" --amount 10 --frequency monthly --category dining --notes "..." - Set cashback rates:
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cashback set <cardId> --rates '{"dining":"4x",...}' - Generate/update the current month's tracking file:
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking generate <YYYY_MM>
IMPORTANT: Always verify benefit details with the user. Web search results may be outdated or inaccurate.
2. Viewing Current Benefits Status
Trigger: User asks "What benefits do I have left?" or "Show my benefits"
Steps:
- Read the current month's tracking file from
data/- If it doesn't exist, generate it from
cards.json
- If it doesn't exist, generate it from
- Display a clear summary grouped by card:
- ✅ Used benefits (with date used)
- ❌ Unused benefits (with amount and days remaining in period)
- ⚠️ Expiring soon (within 7 days of period end)
- Include the total dollar value of unused benefits
Example output format:
## 📊 Benefits Status — February 2026
### 💳 Amex Gold
| Benefit | Amount | Status | Notes |
|---------------|--------|--------|-----------------|
| Uber Cash | $10 | ❌ Unused | Expires Feb 28 |
| Dining Credit | $10 | ✅ Used | Used Feb 12 |
### 💳 Chase Sapphire Reserve
| Benefit | Amount | Status | Notes |
|-----------------|--------|------------|------------------------|
| DoorDash Credit | $5 | ⚠️ Expiring | 11 days left, use it! |
**💰 Unused value this month: $15**
3. Marking a Benefit as Used
Trigger: User says "I used my Uber credit" or "Mark my DoorDash credit as used"
Steps:
- Identify the card and benefit from the user's message
- If ambiguous (e.g. multiple cards have Uber credits), ask which card
- Mark the benefit as used via the CLI:
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py tracking use <YYYY_MM> --card <cardId> --benefit <benefitId> --notes "..."- Use
--amountfor partial usage,--datefor a past date
- Use
- Confirm the update to the user
- Mention remaining unused benefits for that card as a helpful nudge
4. Periodic Reminders (Proactive)
When to trigger: At the start of every conversation where this skill is relevant (user has cards tracked), check for:
- End-of-month urgency (last 7 days of the month): Surface any unused monthly benefits
- End-of-quarter urgency (last 7 days of March, June, September, December): Surface unused quarterly benefits
- End-of-year urgency (approaching renewal month): Surface unused yearly benefits
- New period rollover: If a new month has started and no tracking file exists, generate it and remind the user of the fresh benefits available
Reminder format:
⚠️ **Credit Card Benefit Reminder**
You have **$35 in unused benefits** expiring in 5 days!
- 💳 Amex Gold: $10 Uber Cash, $10 Dining Credit
- 💳 CSR: $5 DoorDash, $10 Instacart
Would you like details on any of these?
5. Quarterly & Yearly Rollover
At the start of each new period:
- Monthly resets: all monthly benefits reset to unused
- Quarterly resets (Jan/Apr/Jul/Oct): quarterly benefits reset
- Yearly resets (card's
renewal_month): yearly benefits reset
When generating a new month's file, only include benefits whose frequency matches the current period. Always carry forward the benefit catalog from cards.json — never from the previous month's file (to pick up any catalog changes).
6. Benefit History & Utilization
Trigger: User asks "How did I do last month?" or "Show my benefit history"
Steps:
- Read past months' tracking files
- Present a utilization summary:
- Per card: X of Y benefits used, $Z captured out of $W available
- Overall: total captured vs total available
- Highlight patterns (e.g. "You've missed the Uber credit 3 months in a row")
7. Annual Fee ROI Summary
Trigger: User asks "Is my Amex Gold worth it?" or "Show me card ROI"
Steps:
- Calculate total benefits available per year per card
- Calculate total benefits actually used (from tracking files)
- Compare against annual fee:
💳 Amex Gold — Annual Fee: $250 ├── Total benefits available: $360/yr ├── Benefits used (last 12mo): $280 ├── Net ROI: +$30 ✅ └── Utilization: 78% - If ROI is negative, gently note which unused benefits could flip it positive
- If utilization is consistently low, suggest whether the card might not be worth keeping
8. Card Recommendation Notes
When utilization is consistently poor (below 50% over 3+ months):
- Proactively mention that the card may not be worth the annual fee
- Suggest which benefits to focus on to break even
- Note the card's renewal month so the user can cancel before the next fee if desired
9. Spending Category Optimization (刷卡推荐)
Trigger: User asks "Which card should I use for..." or "该刷哪张卡" or "不知道该用哪张卡刷这个"
Purpose: Help users choose the best card for specific spending categories to maximize rewards.
Steps:
-
Identify the spending category from the user's question
- "Which card for dining?" → category: "dining"
- "Should I use Amex or Chase for Amazon?" → category: "online_retail" or "amazon"
- "Best card for hotels?" → category: "hotels"
-
Search for up-to-date cashback rates if unclear about any card:
- Use ddgs to search for "[card name] [category] cash back rate 2026"
- Example: "Amex Gold dining cash back rate 2026"
- Verify results with user if rates seem outdated
-
Compare all cards for the category:
- List each card's rate for that category
- Highlight the best option(s)
- Consider special conditions (e.g., "through Chase Travel", "US only", "category caps")
- Factor in any expiring credits that apply
-
Provide comprehensive recommendation:
## 💳 刷卡推荐 - 餐饮消费 ### 🏆 **最佳选择:Amex Gold** (4x) - 每月 $10 Uber Cash 自动发放 - Resy 餐饮信用额度(每半年各 $50) - 需官网手动激活餐饮报销 ### 🥈 **备选:Chase Sapphire Preferred** (3x) - 线上餐厅/外卖 3x - 通过 Chase Travel 订餐厅 2x ### 🥉 **基础:Marriott Brilliant** (3x) - 所有餐饮 3x - 无额外积分福利 💡 **建议:餐饮首选 Amex Gold,兼顾积分和现金返现!** -
Handle complex scenarios:
- Multiple categories: Ask if user wants optimization for one category or overall strategy
- Category caps: Mention if a card has spending limits (e.g., $25k/year for Amex Gold groceries)
- Bonus periods: Check if any card has temporary 5% categories (Chase Freedom, Discover)
- Stacking: Mention if categories can be combined (e.g., dining + travel = Amex Gold + Platinum)
Category Mapping Guide:
dining: 餐厅、外卖、咖啡grocery: 超市、杂货店、Costco/Sam's Clubgas: 加油站travel: 机票、酒店、租车streaming: Netflix, Hulu, Disney+ 等online_retail: 线上购物amazon: Amazon.comentertainment: 电影、演出、游戏
Important Notes:
- Always verify current rates with ddgs if unsure
- Mention activation requirements (e.g., Chase Freedom 5% needs manual activation)
- Consider annual fee vs expected rewards when recommending premium cards
- Check for any current bonus categories (Chase Freedom/Discover quarterly 5%)
Behavioral Guidelines
- 🚨 NEVER directly modify JSON files — always use
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.pyfor ALL data reads and writes - Be proactive but not annoying — remind about expiring benefits, but don't repeat reminders the user has already acknowledged
- Always read current data via the CLI before responding — never rely on memory of past data
- Keep data in sync — the CLI handles atomic writes and validation automatically
- Handle edge cases gracefully:
- Card with no benefits tracked yet → prompt to search for benefits
- Benefit used twice in one period → ask if this is a partial-use situation
- Missing months → the CLI auto-generates them via
tracking get
- Be concise in summaries, detailed when asked — default to the table format, expand only on request
- Use today's date from the system context to determine the current period, urgency, etc.
- When searching for benefits, use web search and present results to the user for confirmation before saving — never blindly trust search results
- For card recommendations, always:
- Verify unclear rates with ddgs:
[card name] [category] cash back rate 2026 - Consider expiring credits that apply to the category
- Compare all cards, not just the obvious ones
- Mention activation requirements where applicable
- Verify unclear rates with ddgs:
- Update cashback rates regularly — if a user mentions rates seem different from what's tracked, use the CLI to update:
python /home/node/.openclaw/workspace/skills/card-benefits-tracker/api/cli.py cashback update <cardId> --category dining --rate 4x
如何使用「信用卡权益追踪」?
- 打开小龙虾AI(Web 或 iOS App)
- 点击上方「立即使用」按钮,或在对话框中输入任务描述
- 小龙虾AI 会自动匹配并调用「信用卡权益追踪」技能完成任务
- 结果即时呈现,支持继续对话优化