[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74YS02HR4AYWAYH2339VG9D":3,"skill-same:01M74YS02HR4AYWAYH2339VG9D":49},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":6,"ownerDescription":33,"updatedAt":34,"install":35,"resources":48},"01M74YS02HR4AYWAYH2339VG9D","trip-calculator",null,"Cash vs points trip cost comparison. Factors in transfer ratios, taxes, fees, CPP valuations, and opportunity cost to recommend the best redemption strategy for flights and hotels.","borski\u002Ftravel-hacking-toolkit","borski","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F207674?v=4","01M74YKQ7FZM71RB1ET5KSXBZT","Michael Borohovski","01M74YKQ85N97DKHKHJCDECJT5",978,"MIT","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Ftrip-calculator\u002FSKILL.md",[],[],"2026-11-11 17:32:24",false,"---\nname: trip-calculator\ndescription: Cash vs points trip cost comparison. Factors in transfer ratios, taxes, fees, CPP valuations, and opportunity cost to recommend the best redemption strategy for flights and hotels.\ncategory: orchestration\nsummary: Cash vs points decision answered with math. Transfer ratios, taxes, opportunity cost.\napi_key: None (free, local data)\n---\n\n# Trip Cost Calculator\n\n\"Should I pay cash or use points?\" answered with math.\n\nCompares the true cost of booking with cash versus each available points currency, accounting for transfer ratios, taxes\u002Ffees, and the opportunity cost of burning your points.\n\n**No API key needed.** Uses local JSON data files plus flight\u002Fhotel search results.\n\n## Data Files\n\n| File | Purpose |\n|------|---------|\n| `data\u002Fpoints-valuations.json` | CPP valuations per program (floor\u002Fceiling) |\n| `data\u002Ftransfer-partners.json` | Credit card → loyalty program transfer ratios |\n\n## When to Use\n\n- User has both cash prices (from Duffel\u002FIgnav\u002FGoogle Flights) and award prices (from seats.aero)\n- User asks \"should I pay cash or use points?\"\n- User wants to know the CPP of a specific redemption\n- User is deciding between multiple booking strategies for a trip\n\n## Core Concepts\n\n### Cents Per Point (CPP)\n\nThe value you're getting per point when redeeming:\n\n```\ncpp = (cash_price - taxes_on_award) \u002F points_needed × 100\n```\n\nA CPP **above** the floor valuation from `points-valuations.json` means you're getting above-average value. Below floor = poor redemption.\n\n### Opportunity Cost\n\nPoints have value even when unspent. Burning 100K Chase UR at 1.7 cpp (floor) means you're \"spending\" $1,700 in future travel flexibility:\n\n```\nopportunity_cost = points_needed × floor_cpp \u002F 100\n```\n\nIf the cash price is lower than the opportunity cost, pay cash. If higher, use points.\n\n### The Decision Framework\n\n```\nIF cash_price \u003C opportunity_cost → PAY CASH (points are worth more saved)\nIF cash_price > opportunity_cost → USE POINTS (good redemption)\nIF cash_price ≈ opportunity_cost → PAY CASH (preserve flexibility)\n```\n\nThe tie goes to cash because points maintain optionality.\n\n## Workflow\n\n### Step 1: Gather Prices\n\n**Cash prices** (use one or more sources):\n```\nDuffel API → exact bookable fares\nIgnav API → fast comparison prices\nGoogle Flights → browser-based, includes Southwest\n```\n\n**Award prices** (use seats.aero):\n```\nSeats.aero API → cached availability across 25+ programs\nSeats.aero web → live search (local Patchright only)\n```\n\n### Step 2: Calculate CPP for Each Award Option\n\nFor each award option with a corresponding cash price:\n\n```\ncpp = (cash_price_usd - award_taxes_usd) \u002F award_miles × 100\n```\n\nAward taxes come from seats.aero trip details (`TotalTaxes` field, in cents) or estimate $5.60 per segment for domestic US, $50-$200 for international (varies wildly by carrier and routing).\n\n### Step 3: Factor in Transfer Ratios\n\nIf using transferable points (Chase UR, Amex MR, etc.), the effective points cost changes:\n\n```\neffective_points = award_miles \u002F transfer_ratio\neffective_cpp = (cash_price - award_taxes) \u002F effective_points × 100\n```\n\nExample: Flying Blue award at 50,000 miles via Capital One (1:1):\n- Effective points: 50,000\n- Cash price: $1,200, taxes: $100\n- CPP: ($1,200 - $100) \u002F 50,000 × 100 = **2.2 cpp**\n\nContrast: a separate Emirates award at 72,500 Skywards miles via Capital One (4:3 ratio, the worst Cap One transfer rate):\n- Effective points needed: 72,500 \u002F 0.75 = 96,667 Cap One miles\n- Same $1,200 cash equivalent: ($1,200 - $100) \u002F 96,667 × 100 = **1.14 cpp**. Worse than the Flying Blue path.\n\n**Important: pick the best currency for the destination program.** Emirates Skywards has a 1:1 transfer from Bilt Rewards (no fee, instant). For the same Emirates redemption, 72,500 Bilt = 72,500 Skywards = ($1,200 - $100) \u002F 72,500 × 100 = **1.52 cpp**. Always check `data\u002Ftransfer-partners.json` for every transferable currency the user holds before recommending a transfer — Bilt's 1:1 to Emirates beats Capital One's 4:3 by a wide margin. The skill enforces this in Step 0 (load `transfer-partners` first to enumerate every viable path).\n\n### Step 4: Compare Against Valuations\n\nLoad valuations from `points-valuations.json`:\n\n```bash\njq -r '.credit_card_points.chase_ultimate_rewards | \"Chase UR: floor \\(.floor)cpp, ceiling \\(.ceiling)cpp\"' data\u002Fpoints-valuations.json\n```\n\n| Rating | CPP vs Floor | Meaning |\n|--------|-------------|---------|\n| Excellent | > ceiling | Exceptional redemption. Book it. |\n| Good | > floor | Above average. Solid use of points. |\n| Fair | 0.8× to 1× floor | Mediocre. Consider cash instead. |\n| Poor | \u003C 0.8× floor | Bad deal. Pay cash. |\n\n### Step 5: Present Comparison\n\n**Always use markdown tables.**\n\n#### Flight: SFO → NRT Business Class, Aug 15\n\n| Option | Program | Miles\u002FPoints | Taxes | Cash Equiv | CPP | Rating |\n|--------|---------|-------------|-------|------------|-----|--------|\n| Cash | — | — | — | $4,200 | — | — |\n| United via Chase UR | United | 88,000 UR | $45 | $1,496 | 4.72 | Excellent |\n| Aeroplan via Chase UR | Aeroplan | 75,000 UR | $120 | $1,275 | 5.44 | Excellent |\n| Alaska via Bilt | Alaska | 55,000 Bilt | $30 | $935 | 7.58 | Excellent |\n| Virgin Atlantic → ANA via Chase UR | VA | 52,500 UR | $200 | $893 | 7.62 | Excellent |\n\n**Recommendation:**\n- **Best value:** Virgin Atlantic at 7.62 cpp, but $200 in taxes and must call to book.\n- **Best convenience:** Aeroplan at 5.44 cpp, bookable online, low taxes.\n- **Cash price ($4,200) vs opportunity cost ($893-$1,496):** Points win decisively. Use points.\n\n### Step 6: Round-Trip and Multi-Segment\n\nFor round trips, calculate each direction separately. Award pricing is usually one-way, cash pricing is often round-trip. Make sure you're comparing apples to apples:\n\n```\nIf cash = round-trip $4,200:\n  Compare against: outbound award + return award\n  e.g., 75K out + 75K return = 150K total vs $4,200 cash\n  CPP = ($4,200 - $240 taxes) \u002F 150,000 = 2.64 cpp\n```\n\n## jq Recipes\n\n### Get floor valuation for a currency\n\n```bash\njq -r '.credit_card_points.chase_ultimate_rewards.floor' data\u002Fpoints-valuations.json\n```\n\n### Calculate opportunity cost\n\n```bash\n# 75,000 Chase UR points\nPOINTS=75000\nFLOOR=$(jq -r '.credit_card_points.chase_ultimate_rewards.floor' data\u002Fpoints-valuations.json)\necho \"$POINTS points × $FLOOR cpp = \\$$(echo \"$POINTS * $FLOOR \u002F 100\" | bc) opportunity cost\"\n```\n\n### Full comparison for one route\n\n```bash\n# Cash: $4200 round trip. Award: 75000 Aeroplan each way, $120 taxes each way.\nCASH=4200\nMILES_ONEWAY=75000\nTAXES_ONEWAY=120\nTOTAL_MILES=$((MILES_ONEWAY * 2))\nTOTAL_TAXES=$((TAXES_ONEWAY * 2))\n\necho \"Cash: \\$$CASH\"\necho \"Award: $TOTAL_MILES miles + \\$$TOTAL_TAXES taxes\"\necho \"CPP: $(echo \"scale=2; ($CASH - $TOTAL_TAXES) \u002F $TOTAL_MILES * 100\" | bc)\"\n\n# Opportunity cost at floor valuation\nFLOOR=$(jq -r '.credit_card_points.chase_ultimate_rewards.floor' data\u002Fpoints-valuations.json)\necho \"Opportunity cost: \\$$(echo \"scale=0; $TOTAL_MILES * $FLOOR \u002F 100\" | bc)\"\n```\n\n## Hotel Comparison\n\nThe same framework works for hotels:\n\n```\nhotel_cpp = (cash_rate_per_night × nights) \u002F total_points × 100\n```\n\nHotel redemptions vary more than flights. Use `points-valuations.json` hotel section:\n- Hyatt: floor 1.4 cpp (consistently best hotel currency)\n- Hilton: floor 0.4 cpp (high point costs, low per-point value)\n- Marriott: floor 0.6 cpp\n\nFor premium hotel programs (FHR, THC, Chase Edit), factor in the additional benefits (breakfast, upgrade, credit, late checkout) when comparing cash vs points. A $500\u002Fnight FHR rate with $100 breakfast credit and potential suite upgrade might be worth more than the sticker price.\n\n## Chase Travel Portal vs Transfer\n\nChase Sapphire Reserve uses dynamic Points Boost pricing in the Chase travel portal: roughly 1.5-2.0 cpp on select bookings, but **not a guaranteed floor on every booking**. The historical 1.5 cpp fixed multiplier is gone — current redemptions vary by route, date, and inventory. Always check the actual portal price before assuming a rate.\n\nRough decision rule, with the caveat that you must verify the actual portal quote:\n\n```\nIf actual portal CPP > award CPP → portal wins\nIf award CPP > actual portal CPP → transfer to partner wins\n```\n\nSapphire Preferred is similar (1.5-1.75 cpp typical via Points Boost). Amex portal is ~1.0 cpp for flights (1 cent per MR point). Capital One portal is ~0.75-1.0 cpp.\n\n**Always pull the real portal quote** via the `chase-travel` or `amex-travel` skills before making a points-vs-portal recommendation. Don't assume the headline rate applies to your specific booking.\n\n## Common Pitfalls\n\n- **Ignoring taxes\u002Ffees on awards.** Some airlines (especially BA, Lufthansa, Singapore on own metal) add $500+ in fuel surcharges to award tickets. Always subtract taxes before calculating CPP.\n- **Comparing one-way award to round-trip cash.** Make sure denominators match.\n- **Forgetting transfer ratios.** 50K miles via Amex → Emirates at 5:4 costs 62,500 MR, not 50,000.\n- **Not checking portal pricing.** Sometimes Chase\u002FAmex portal pricing beats the transfer math.\n- **Over-optimizing small differences.** If two options are within 0.5 cpp of each other, pick the one with better routing, lower taxes, or more flexibility.\n\n## Notes\n\n- Point valuations are subjective. The floor from `points-valuations.json` is the most defensible number.\n- \"Opportunity cost\" assumes you WILL use those points eventually at floor value. If you're sitting on a huge balance with no plans, the real opportunity cost is lower.\n- Currency devaluation risk matters for long-term holdings. Points are depreciating assets.\n- Transfer bonuses can shift the math significantly. A 30% bonus on Chase → Flying Blue means 75K UR becomes 97.5K Flying Blue miles.\n","# Trip Cost Calculator\n\n\"Should I pay cash or use points?\" answered with math.\n\nCompares the true cost of booking with cash versus each available points currency, accounting for transfer ratios, taxes\u002Ffees, and the opportunity cost of burning your points.\n\n**No API key needed.** Uses local JSON data files plus flight\u002Fhotel search results.\n\n## Data Files\n\n| File | Purpose |\n|------|---------|\n| `data\u002Fpoints-valuations.json` | CPP valuations per program (floor\u002Fceiling) |\n| `data\u002Ftransfer-partners.json` | Credit card → loyalty program transfer ratios |\n\n## When to Use\n\n- User has both cash prices (from Duffel\u002FIgnav\u002FGoogle Flights) and award prices (from seats.aero)\n- User asks \"should I pay cash or use points?\"\n- User wants to know the CPP of a specific redemption\n- User is deciding between multiple booking strategies for a trip\n\n## Core Concepts\n\n### Cents Per Point (CPP)\n\nThe value you're getting per point when redeeming:\n\n```\ncpp = (cash_price - taxes_on_award) \u002F points_needed × 100\n```\n\nA CPP **above** the floor valuation from `points-valuations.json` means you're getting above-average value. Below floor = poor redemption.\n\n### Opportunity Cost\n\nPoints have value even when unspent. Burning 100K Chase UR at 1.7 cpp (floor) means you're \"spending\" $1,700 in future travel flexibility:\n\n```\nopportunity_cost = points_needed × floor_cpp \u002F 100\n```\n\nIf the cash price is lower than the opportunity cost, pay cash. If higher, use points.\n\n### The Decision Framework\n\n```\nIF cash_price \u003C opportunity_cost → PAY CASH (points are worth more saved)\nIF cash_price > opportunity_cost → USE POINTS (good redemption)\nIF cash_price ≈ opportunity_cost → PAY CASH (preserve flexibility)\n```\n\nThe tie goes to cash because points maintain optionality.\n\n## Workflow\n\n### Step 1: Gather Prices\n\n**Cash prices** (use one or more sources):\n```\nDuffel API → exact bookable fares\nIgnav API → fast comparison prices\nGoogle Flights → browser-based, includes Southwest\n```\n\n**Award prices** (use seats.aero):\n```\nSeats.aero API → cached availability across 25+ programs\nSeats.aero web → live search (local Patchright only)\n```\n\n### Step 2: Calculate CPP for Each Award Option\n\nFor each award option with a corresponding cash price:\n\n```\ncpp = (cash_price_usd - award_taxes_usd) \u002F award_miles × 100\n```\n\nAward taxes come from seats.aero trip details (`TotalTaxes` field, in cents) or estimate $5.60 per segment for domestic US, $50-$200 for international (varies wildly by carrier and routing).\n\n### Step 3: Factor in Transfer Ratios\n\nIf using transferable points (Chase UR, Amex MR, etc.), the effective points cost changes:\n\n```\neffective_points = award_miles \u002F transfer_ratio\neffective_cpp = (cash_price - award_taxes) \u002F effective_points × 100\n```\n\nExample: Flying Blue award at 50,000 miles via Capital One (1:1):\n- Effective points: 50,000\n- Cash price: $1,200, taxes: $100\n- CPP: ($1,200 - $100) \u002F 50,000 × 100 = **2.2 cpp**\n\nContrast: a separate Emirates award at 72,500 Skywards miles via Capital One (4:3 ratio, the worst Cap One transfer rate):\n- Effective points needed: 72,500 \u002F 0.75 = 96,667 Cap One miles\n- Same $1,200 cash equivalent: ($1,200 - $100) \u002F 96,667 × 100 = **1.14 cpp**. Worse than the Flying Blue path.\n\n**Important: pick the best currency for the destination program.** Emirates Skywards has a 1:1 transfer from Bilt Rewards (no fee, instant). For the same Emirates redemption, 72,500 Bilt = 72,500 Skywards = ($1,200 - $100) \u002F 72,500 × 100 = **1.52 cpp**. Always check `data\u002Ftransfer-partners.json` for every transferable currency the user holds before recommending a transfer — Bilt's 1:1 to Emirates beats Capital One's 4:3 by a wide margin. The skill enforces this in Step 0 (load `transfer-partners` first to enumerate every viable path).\n\n### Step 4: Compare Against Valuations\n\nLoad valuations from `points-valuations.json`:\n\n```bash\njq -r '.credit_card_points.chase_ultimate_rewards | \"Chase UR: floor \\(.floor)cpp, ceiling \\(.ceiling)cpp\"' data\u002Fpoints-valuations.json\n```\n\n| Rating | CPP vs Floor | Meaning |\n|--------|-------------|---------|\n| Excellent | > ceiling | Exceptional redemption. Book it. |\n| Good | > floor | Above average. Solid use of points. |\n| Fair | 0.8× to 1× floor | Mediocre. Consider cash instead. |\n| Poor | \u003C 0.8× floor | Bad deal. Pay cash. |\n\n### Step 5: Present Comparison\n\n**Always use markdown tables.**\n\n#### Flight: SFO → NRT Business Class, Aug 15\n\n| Option | Program | Miles\u002FPoints | Taxes | Cash Equiv | CPP | Rating |\n|--------|---------|-------------|-------|------------|-----|--------|\n| Cash | — | — | — | $4,200 | — | — |\n| United via Chase UR | United | 88,000 UR | $45 | $1,496 | 4.72 | Excellent |\n| Aeroplan via Chase UR | Aeroplan | 75,000 UR | $120 | $1,275 | 5.44 | Excellent |\n| Alaska via Bilt | Alaska | 55,000 Bilt | $30 | $935 | 7.58 | Excellent |\n| Virgin Atlantic → ANA via Chase UR | VA | 52,500 UR | $200 | $893 | 7.62 | Excellent |\n\n**Recommendation:**\n- **Best value:** Virgin Atlantic at 7.62 cpp, but $200 in taxes and must call to book.\n- **Best convenience:** Aeroplan at 5.44 cpp, bookable online, low taxes.\n- **Cash price ($4,200) vs opportunity cost ($893-$1,496):** Points win decisively. Use points.\n\n### Step 6: Round-Trip and Multi-Segment\n\nFor round trips, calculate each direction separately. Award pricing is usually one-way, cash pricing is often round-trip. Make sure you're comparing apples to apples:\n\n```\nIf cash = round-trip $4,200:\n  Compare against: outbound award + return award\n  e.g., 75K out + 75K return = 150K total vs $4,200 cash\n  CPP = ($4,200 - $240 taxes) \u002F 150,000 = 2.64 cpp\n```\n\n## jq Recipes\n\n### Get floor valuation for a currency\n\n```bash\njq -r '.credit_card_points.chase_ultimate_rewards.floor' data\u002Fpoints-valuations.json\n```\n\n### Calculate opportunity cost\n\n```bash\n# 75,000 Chase UR points\nPOINTS=75000\nFLOOR=$(jq -r '.credit_card_points.chase_ultimate_rewards.floor' data\u002Fpoints-valuations.json)\necho \"$POINTS points × $FLOOR cpp = \\$$(echo \"$POINTS * $FLOOR \u002F 100\" | bc) opportunity cost\"\n```\n\n### Full comparison for one route\n\n```bash\n# Cash: $4200 round trip. Award: 75000 Aeroplan each way, $120 taxes each way.\nCASH=4200\nMILES_ONEWAY=75000\nTAXES_ONEWAY=120\nTOTAL_MILES=$((MILES_ONEWAY * 2))\nTOTAL_TAXES=$((TAXES_ONEWAY * 2))\n\necho \"Cash: \\$$CASH\"\necho \"Award: $TOTAL_MILES miles + \\$$TOTAL_TAXES taxes\"\necho \"CPP: $(echo \"scale=2; ($CASH - $TOTAL_TAXES) \u002F $TOTAL_MILES * 100\" | bc)\"\n\n# Opportunity cost at floor valuation\nFLOOR=$(jq -r '.credit_card_points.chase_ultimate_rewards.floor' data\u002Fpoints-valuations.json)\necho \"Opportunity cost: \\$$(echo \"scale=0; $TOTAL_MILES * $FLOOR \u002F 100\" | bc)\"\n```\n\n## Hotel Comparison\n\nThe same framework works for hotels:\n\n```\nhotel_cpp = (cash_rate_per_night × nights) \u002F total_points × 100\n```\n\nHotel redemptions vary more than flights. Use `points-valuations.json` hotel section:\n- Hyatt: floor 1.4 cpp (consistently best hotel currency)\n- Hilton: floor 0.4 cpp (high point costs, low per-point value)\n- Marriott: floor 0.6 cpp\n\nFor premium hotel programs (FHR, THC, Chase Edit), factor in the additional benefits (breakfast, upgrade, credit, late checkout) when comparing cash vs points. A $500\u002Fnight FHR rate with $100 breakfast credit and potential suite upgrade might be worth more than the sticker price.\n\n## Chase Travel Portal vs Transfer\n\nChase Sapphire Reserve uses dynamic Points Boost pricing in the Chase travel portal: roughly 1.5-2.0 cpp on select bookings, but **not a guaranteed floor on every booking**. The historical 1.5 cpp fixed multiplier is gone — current redemptions vary by route, date, and inventory. Always check the actual portal price before assuming a rate.\n\nRough decision rule, with the caveat that you must verify the actual portal quote:\n\n```\nIf actual portal CPP > award CPP → portal wins\nIf award CPP > actual portal CPP → transfer to partner wins\n```\n\nSapphire Preferred is similar (1.5-1.75 cpp typical via Points Boost). Amex portal is ~1.0 cpp for flights (1 cent per MR point). Capital One portal is ~0.75-1.0 cpp.\n\n**Always pull the real portal quote** via the `chase-travel` or `amex-travel` skills before making a points-vs-portal recommendation. Don't assume the headline rate applies to your specific booking.\n\n## Common Pitfalls\n\n- **Ignoring taxes\u002Ffees on awards.** Some airlines (especially BA, Lufthansa, Singapore on own metal) add $500+ in fuel surcharges to award tickets. Always subtract taxes before calculating CPP.\n- **Comparing one-way award to round-trip cash.** Make sure denominators match.\n- **Forgetting transfer ratios.** 50K miles via Amex → Emirates at 5:4 costs 62,500 MR, not 50,000.\n- **Not checking portal pricing.** Sometimes Chase\u002FAmex portal pricing beats the transfer math.\n- **Over-optimizing small differences.** If two options are within 0.5 cpp of each other, pick the one with better routing, lower taxes, or more flexibility.\n\n## Notes\n\n- Point valuations are subjective. The floor from `points-valuations.json` is the most defensible number.\n- \"Opportunity cost\" assumes you WILL use those points eventually at floor value. If you're sitting on a huge balance with no plans, the real opportunity cost is lower.\n- Currency devaluation risk matters for long-term holdings. Points are depreciating assets.\n- Transfer bonuses can shift the math significantly. A 30% bonus on Chase → Flying Blue means 75K UR becomes 97.5K Flying Blue miles.\n",{"name":5,"api_key":24,"summary":25,"category":26,"description":7},"None (free, local data)","Cash vs points decision answered with math. Transfer ratios, taxes, opportunity cost.","orchestration","main","30b091178a3e4b02ff2c31bb43eb4186c4bf9d8a","plugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Ftrip-calculator",120,"https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit","https:\u002F\u002Fgithub.com\u002Fborski","I run the Agentic Red Team @ DeepMind (Google)","2026-11-09 22:54:02",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add borski\u002Ftravel-hacking-toolkit --skill trip-calculator",{"tool":41,"command":42},"bunx","bunx skills add borski\u002Ftravel-hacking-toolkit --skill trip-calculator",{"tool":44,"command":45},"pnpm","pnpm dlx skills add borski\u002Ftravel-hacking-toolkit --skill trip-calculator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Ftrip-calculator\u002FSKILL.md",true,[],[50,57,64,71,78,85],{"skillNo":51,"name":52,"nameZh":6,"description":53,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":54,"categories":55,"keywords":56,"publishedAt":19},"01M74YSPQMTR5MVRP5DPXM6F73","wikipedia-airports","Discover destinations served from any airport via Wikipedia. Sanity-check whether an airline flies a specific route, find regional service that fare tools miss, identify late-split-return airport options.","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Fwikipedia-airports\u002FSKILL.md",[],[],{"skillNo":58,"name":59,"nameZh":6,"description":60,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":61,"categories":62,"keywords":63,"publishedAt":19},"01M74YSK14ZG02D6DT18N3X4GM","wheretocredit","Mileage earning rates by airline and booking class via wheretocredit.com. Redeemable and qualifying miles across 50+ programs. Use when deciding where to credit a flight or comparing earning rates.","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Fwheretocredit\u002FSKILL.md",[],[],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":19},"01M74YSDZJZ70SN5A9GG16NQC0","vrbo","Search VRBO (Vrbo \u002F Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation. VRBO sits behind Akamai Bot Manager so plain HTTP and standard Playwright get a 429 bot wall. Use for whole-home or group stays, multi-bedroom rentals, and Airbnb-vs-VRBO comparisons. Trigger phrases include search VRBO, Vrbo rentals, vacation rental, cabin rental, whole house, condo for the group.","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Fvrbo\u002FSKILL.md",[],[],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":77,"publishedAt":19},"01M74YSAXWPG81WK20XTQS0K04","tripadvisor","TripAdvisor Content API for hotel ratings, restaurant search, attraction reviews, rankings, and nearby locations. Use when evaluating hotels or researching destinations. 5K calls\u002Fmonth.","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Ftripadvisor\u002FSKILL.md",[],[],{"skillNo":79,"name":80,"nameZh":6,"description":81,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":82,"categories":83,"keywords":84,"publishedAt":19},"01M74YS7174Q6WJRWVK4TPJQED","trip-planner","Full trip planning orchestration. Combines flight search, hotel search, and points optimization into one cost analysis. Use when the user says \"plan a trip\" or wants the complete picture for a destination.","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Ftrip-planner\u002FSKILL.md",[],[],{"skillNo":86,"name":87,"nameZh":6,"description":88,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":89,"categories":90,"keywords":91,"publishedAt":19},"01M74YS3QM1ED7D6Q6X3JK2783","trip-log","Save flight searches, itineraries, and booked trips to the trips\u002Flogs\u002F directory for future reference. OPT-IN — use when the user asks to log a trip or look up past searches, or on every search only if the user has said they want automatic logging. Also use to update status when a trip is booked or completed.","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Ftrip-log\u002FSKILL.md",[],[]]