.cursor/skills/update-card-benefits/SKILL.md
Update, add, or remove benefits from existing credit cards in CouponCycle. Use when the user asks to update card benefits, add a new benefit to a card, remove a benefit, change benefit values, or mentions annual fee updates for cards like Amex Platinum, Chase Sapphire Reserve.
npx skillsauth add lifan-builds/credit-card-tracker update-card-benefitsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides you through updating benefits for existing credit cards. This is a 3-step process to ensure all users (new and existing) see the changes.
When you update benefits in prisma/seed.ts:
This skill ensures ALL users get the updates.
Edit prisma/seed.ts to add, remove, or modify benefits:
{
name: 'American Express Platinum Card',
issuer: 'American Express',
annualFee: 895, // Update annual fee if changed
benefits: [
// Add new benefits
{
description: '$100 Quarterly Resy Dining Credit',
category: 'Dining',
maxAmount: 100,
frequency: BenefitFrequency.QUARTERLY,
percentage: 0,
cycleAlignment: BenefitCycleAlignment.CALENDAR_FIXED,
occurrencesInCycle: 1,
},
// Keep existing benefits...
],
}
npx prisma db seed
This updates the predefined card template for new users.
# Preview changes (safe - no data modified)
node scripts/update-card-benefits.js --card "Card Name" --dry-run
# Execute the update (migrates all existing users)
node scripts/update-card-benefits.js --card "Card Name" --force
The unified script automatically:
# Update Amex Platinum
node scripts/update-card-benefits.js \
--card "American Express Platinum Card" \
--dry-run
# Update Chase Sapphire Reserve
node scripts/update-card-benefits.js \
--card "Chase Sapphire Reserve" \
--force
# Update Amex Business Platinum
node scripts/update-card-benefits.js \
--card "American Express Business Platinum Card" \
--force
For complex migrations involving multiple cards or custom logic:
# 1. Create migration definition in scripts/migrate-benefits.js
# 2. Validate migration
node scripts/validate-migration.js --migration-id=your-migration
# 3. Preview changes
node scripts/migrate-benefits.js --migration-id=your-migration --dry-run
# 4. Execute migration
node scripts/migrate-benefits.js --migration-id=your-migration --force
npx prisma db seed # Only helps NEW users
Without the update script, existing users won't see the changes.
npx prisma db seed # Update template
node scripts/update-card-benefits.js --card "Card Name" --force
| Type | Enum | Description |
|------|------|-------------|
| Monthly | BenefitFrequency.MONTHLY | Resets every month |
| Quarterly | BenefitFrequency.QUARTERLY | Resets every 3 months |
| Yearly | BenefitFrequency.YEARLY | Resets once per year |
| One-time | BenefitFrequency.ONE_TIME | Never resets |
| Type | Enum | Description |
|------|------|-------------|
| Calendar Fixed | BenefitCycleAlignment.CALENDAR_FIXED | Fixed dates (Jan 1, Apr 1, etc.) |
| Card Anniversary | BenefitCycleAlignment.CARD_ANNIVERSARY | Based on card opening date |
For benefits that reset twice a year (Jan-Jun, Jul-Dec), create TWO separate benefits:
// First half: January - June
{
description: '$300 Hotel Credit (Jan-Jun)',
frequency: BenefitFrequency.YEARLY,
cycleAlignment: BenefitCycleAlignment.CALENDAR_FIXED,
fixedCycleStartMonth: 1,
fixedCycleDurationMonths: 6,
},
// Second half: July - December
{
description: '$300 Hotel Credit (Jul-Dec)',
frequency: BenefitFrequency.YEARLY,
cycleAlignment: BenefitCycleAlignment.CALENDAR_FIXED,
fixedCycleStartMonth: 7,
fixedCycleDurationMonths: 6,
},
--dry-run firsttools
Generate CouponCycle version update notes in Chinese (一行格式) and track versions. Use when the user asks for a version note, release note, update note, 更新说明, 版本说明, or to add or bump a version.
documentation
Self-reflect on the current chat session, summarize changes made, and update project documentation (AGENTS.md, VERSION_HISTORY.md). Use when the user asks to summarize, recap, reflect on, or document what was done in this session, or asks to update docs/documentation after making changes.
testing
Add a new credit card to the CouponCycle application with its image and benefits. Use when the user asks to add a new card, create a card template, download a card image, or mentions adding cards like "Amex", "Chase", "Citi" to the system.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.