[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M74YMPQYZVF12F3EXNDD3RH6":3,"skill-same:01M74YMPQYZVF12F3EXNDD3RH6":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},"01M74YMPQYZVF12F3EXNDD3RH6","awardwallet",null,"Query AwardWallet for loyalty program balances, elite status, and transaction history. Use when checking points inventory, airline status, or planning trips on points.","borski\u002Ftravel-hacking-toolkit","borski","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F207674?v=4","01M74YKQ7FZM71RB1ET5KSXBZT","Michael Borohovski","01M74YKQ85N97DKHKHJCDECJT5",955,"MIT","https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Fawardwallet\u002FSKILL.md",[],[],"2026-11-11 17:32:24",false,"---\nname: awardwallet\ndescription: Query AwardWallet for loyalty program balances, elite status, and transaction history. Use when checking points inventory, airline status, or planning trips on points.\ncategory: loyalty\nsummary: All loyalty balances, elite status, history.\napi_key: AwardWallet Business\nlicense: MIT\n---\n\n# AwardWallet Skill\n\nQuery loyalty program balances, elite status, and transaction history via the AwardWallet Business Account Access API.\n\n**Source:** [business.awardwallet.com](https:\u002F\u002Fbusiness.awardwallet.com) — Requires a Business account.\n\n## Authentication\n\nSet these in your `.env` file:\n- `AWARDWALLET_API_KEY` — Get from https:\u002F\u002Fbusiness.awardwallet.com\u002Fprofile\u002Fapi\n- `AWARDWALLET_USER_ID` — Your connected user ID. Find it via the List Connected Users endpoint below.\n\nAll requests use the `X-Authentication` header.\n\n> **First-time setup gotcha:** AwardWallet enforces an IP allowlist on Business API keys. Without your IP whitelisted, every call returns `{\"error\": \"access_denied\", \"code\": \"IP_DENIED\"}`. **Whitelist before troubleshooting.**\n>\n> - **Where to whitelist:** https:\u002F\u002Fbusiness.awardwallet.com\u002Fprofile\u002Fapi\n> - **How to find your IP:** `curl ifconfig.me`\n> - **Multi-IP:** home, office, hotspot, VPN exit nodes, and any travel locations each need their own entry. Easiest is to whitelist a \u002F24 if you're on a stable residential ISP.\n\n### Error signatures\n\n| Response | Meaning | Fix |\n|---|---|---|\n| `{\"error\": \"access_denied\", \"code\": \"IP_DENIED\"}` | IP not on allowlist | Whitelist current IP at the developer portal |\n| `Unauthorized` \u002F 401 | Bad key | Regenerate key |\n| Empty `accounts` array | User ID wrong or no connections | Verify `AWARDWALLET_USER_ID` |\n\n## API Base\n\n```\nhttps:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\n```\n\n## Quick Start: Get All Balances\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002FconnectedUser\u002F$AWARDWALLET_USER_ID\" | jq '.accounts'\n```\n\n### Response Fields\n\nEach account object contains:\n\n| Field | Description |\n|-------|-------------|\n| `accountId` | Unique ID for deep dive |\n| `code` | Provider code (e.g., \"united\", \"chase\", \"amex\") |\n| `displayName` | Human name (e.g., \"United Airlines (MileagePlus)\") |\n| `kind` | Category: Airlines, Hotels, Credit Cards, etc. |\n| `balance` | Formatted balance string |\n| `balanceRaw` | Numeric balance |\n| `properties` | Array with status, account number, expiration, etc. |\n| `history` | Last 10 transactions (call `\u002Faccount\u002F{id}` for full history) |\n| `errorCode` | 1 = successfully updated, 2 = invalid creds, etc. |\n\n### Useful jq Filters\n\nAll filters below assume the curl output is piped in. Replace `...` with the full curl command above.\n\n```bash\n# Just airline balances with status\n... | jq '[.accounts[] | select(.kind == \"Airlines\") | {name: .displayName, balance: .balanceRaw, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F \"none\"}]'\n\n# Just hotel balances with status\n... | jq '[.accounts[] | select(.kind == \"Hotels\") | {name: .displayName, balance: .balanceRaw, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F \"none\"}]'\n\n# Just credit card \u002F transferable points\n... | jq '[.accounts[] | select(.kind == \"Credit Cards\") | {name: .displayName, balance: .balanceRaw}]'\n\n# All balances sorted by amount (descending), non-zero only\n... | jq '[.accounts[] | {name: .displayName, kind: .kind, balance: .balanceRaw} | select(.balance > 0)] | sort_by(-.balance)'\n\n# Elite status across all programs\n... | jq '[.accounts[] | {name: .displayName, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F null} | select(.status != null)]'\n\n# Accounts with errors (need password update, etc.)\n... | jq '[.accounts[] | select(.errorCode != 1) | {name: .displayName, error: .errorCode}]'\n\n# Combined summary for trip planning (airlines + transferable points, non-zero, sorted)\n... | jq '[.accounts[] | select((.kind == \"Airlines\" or .kind == \"Credit Cards\") and .balanceRaw > 0) | {name: .displayName, kind: .kind, balance: .balanceRaw, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F null}] | sort_by(-.balance)'\n```\n\n## Deep Dive: Full Account History\n\nFor full transaction history (beyond last 10):\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002Faccount\u002F{accountId}\" | jq '.account[0].history'\n```\n\n## Travel Timeline\n\nGet saved itineraries for a connected user:\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  -X POST \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"start\": \"2026-01-01\", \"end\": \"2027-01-01\"}' \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002Ftravel-timeline\u002F$AWARDWALLET_USER_ID\" | jq '.itineraries'\n```\n\n## List All Supported Providers\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002Fproviders\u002Flist\" | jq '.'\n```\n\n## Account Property Kinds\n\nWhen parsing `properties` arrays, these `kind` values are standardized:\n\n| Kind | Meaning |\n|------|---------|\n| 1 | Account number |\n| 2 | Expiration |\n| 3 | Elite status |\n| 4 | Lifetime points |\n| 5 | Member since |\n| 6 | Expiring balance |\n| 7 | YTD Miles\u002FPoints |\n| 8 | YTD Segments |\n| 9 | Next elite level |\n| 10 | Points needed to next level |\n| 11 | Segments needed to next level |\n| 12 | Name |\n| 13 | Last activity |\n| 14 | Points needed for next reward |\n| 15 | Status expiration |\n| 16 | Points to retain status |\n| 17 | Segments to retain status |\n| 18 | Alliance elite level |\n| 19 | Status miles\u002Fpoints |\n\n## Error Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Never updated |\n| 1 | Success |\n| 2 | Invalid credentials |\n| 3 | Locked out |\n| 4 | Provider error or user action needed |\n| 5 | Provider disabled by AwardWallet |\n| 6 | Parse failure |\n| 7 | Password missing |\n| 8 | Disabled to prevent lockouts |\n| 9 | Success with warning |\n| 10 | Security question needed |\n| 11 | Timed out |\n\n## Workflow: Trip Planning Summary\n\nWhen planning a trip, run this workflow:\n\n1. Pull all accounts\n2. Filter to Airlines and Credit Cards (transferable points)\n3. Show a clean summary: program name, balance, elite status\n4. Note any accounts with errors that might need updating\n5. Cross reference with transfer partners for the destination\n\n## Notes\n\n- History in user\u002Fmember detail responses is capped at 10 records. Use `\u002Faccount\u002F{id}` for full history.\n- `balanceRaw` is the numeric value. `balance` is formatted with commas.\n- Connected users control their own access level. If data seems limited, they may have restricted sharing.\n- SubAccounts exist for programs like Capital One where one login has multiple cards. Check `subAccounts` array.\n","# AwardWallet Skill\n\nQuery loyalty program balances, elite status, and transaction history via the AwardWallet Business Account Access API.\n\n**Source:** [business.awardwallet.com](https:\u002F\u002Fbusiness.awardwallet.com) — Requires a Business account.\n\n## Authentication\n\nSet these in your `.env` file:\n- `AWARDWALLET_API_KEY` — Get from https:\u002F\u002Fbusiness.awardwallet.com\u002Fprofile\u002Fapi\n- `AWARDWALLET_USER_ID` — Your connected user ID. Find it via the List Connected Users endpoint below.\n\nAll requests use the `X-Authentication` header.\n\n> **First-time setup gotcha:** AwardWallet enforces an IP allowlist on Business API keys. Without your IP whitelisted, every call returns `{\"error\": \"access_denied\", \"code\": \"IP_DENIED\"}`. **Whitelist before troubleshooting.**\n>\n> - **Where to whitelist:** https:\u002F\u002Fbusiness.awardwallet.com\u002Fprofile\u002Fapi\n> - **How to find your IP:** `curl ifconfig.me`\n> - **Multi-IP:** home, office, hotspot, VPN exit nodes, and any travel locations each need their own entry. Easiest is to whitelist a \u002F24 if you're on a stable residential ISP.\n\n### Error signatures\n\n| Response | Meaning | Fix |\n|---|---|---|\n| `{\"error\": \"access_denied\", \"code\": \"IP_DENIED\"}` | IP not on allowlist | Whitelist current IP at the developer portal |\n| `Unauthorized` \u002F 401 | Bad key | Regenerate key |\n| Empty `accounts` array | User ID wrong or no connections | Verify `AWARDWALLET_USER_ID` |\n\n## API Base\n\n```\nhttps:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\n```\n\n## Quick Start: Get All Balances\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002FconnectedUser\u002F$AWARDWALLET_USER_ID\" | jq '.accounts'\n```\n\n### Response Fields\n\nEach account object contains:\n\n| Field | Description |\n|-------|-------------|\n| `accountId` | Unique ID for deep dive |\n| `code` | Provider code (e.g., \"united\", \"chase\", \"amex\") |\n| `displayName` | Human name (e.g., \"United Airlines (MileagePlus)\") |\n| `kind` | Category: Airlines, Hotels, Credit Cards, etc. |\n| `balance` | Formatted balance string |\n| `balanceRaw` | Numeric balance |\n| `properties` | Array with status, account number, expiration, etc. |\n| `history` | Last 10 transactions (call `\u002Faccount\u002F{id}` for full history) |\n| `errorCode` | 1 = successfully updated, 2 = invalid creds, etc. |\n\n### Useful jq Filters\n\nAll filters below assume the curl output is piped in. Replace `...` with the full curl command above.\n\n```bash\n# Just airline balances with status\n... | jq '[.accounts[] | select(.kind == \"Airlines\") | {name: .displayName, balance: .balanceRaw, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F \"none\"}]'\n\n# Just hotel balances with status\n... | jq '[.accounts[] | select(.kind == \"Hotels\") | {name: .displayName, balance: .balanceRaw, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F \"none\"}]'\n\n# Just credit card \u002F transferable points\n... | jq '[.accounts[] | select(.kind == \"Credit Cards\") | {name: .displayName, balance: .balanceRaw}]'\n\n# All balances sorted by amount (descending), non-zero only\n... | jq '[.accounts[] | {name: .displayName, kind: .kind, balance: .balanceRaw} | select(.balance > 0)] | sort_by(-.balance)'\n\n# Elite status across all programs\n... | jq '[.accounts[] | {name: .displayName, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F null} | select(.status != null)]'\n\n# Accounts with errors (need password update, etc.)\n... | jq '[.accounts[] | select(.errorCode != 1) | {name: .displayName, error: .errorCode}]'\n\n# Combined summary for trip planning (airlines + transferable points, non-zero, sorted)\n... | jq '[.accounts[] | select((.kind == \"Airlines\" or .kind == \"Credit Cards\") and .balanceRaw > 0) | {name: .displayName, kind: .kind, balance: .balanceRaw, status: ((.properties \u002F\u002F [])[] | select(.kind == 3) | .value) \u002F\u002F null}] | sort_by(-.balance)'\n```\n\n## Deep Dive: Full Account History\n\nFor full transaction history (beyond last 10):\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002Faccount\u002F{accountId}\" | jq '.account[0].history'\n```\n\n## Travel Timeline\n\nGet saved itineraries for a connected user:\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  -X POST \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -d '{\"start\": \"2026-01-01\", \"end\": \"2027-01-01\"}' \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002Ftravel-timeline\u002F$AWARDWALLET_USER_ID\" | jq '.itineraries'\n```\n\n## List All Supported Providers\n\n```bash\ncurl -s -H \"X-Authentication: $AWARDWALLET_API_KEY\" \\\n  \"https:\u002F\u002Fbusiness.awardwallet.com\u002Fapi\u002Fexport\u002Fv1\u002Fproviders\u002Flist\" | jq '.'\n```\n\n## Account Property Kinds\n\nWhen parsing `properties` arrays, these `kind` values are standardized:\n\n| Kind | Meaning |\n|------|---------|\n| 1 | Account number |\n| 2 | Expiration |\n| 3 | Elite status |\n| 4 | Lifetime points |\n| 5 | Member since |\n| 6 | Expiring balance |\n| 7 | YTD Miles\u002FPoints |\n| 8 | YTD Segments |\n| 9 | Next elite level |\n| 10 | Points needed to next level |\n| 11 | Segments needed to next level |\n| 12 | Name |\n| 13 | Last activity |\n| 14 | Points needed for next reward |\n| 15 | Status expiration |\n| 16 | Points to retain status |\n| 17 | Segments to retain status |\n| 18 | Alliance elite level |\n| 19 | Status miles\u002Fpoints |\n\n## Error Codes\n\n| Code | Meaning |\n|------|---------|\n| 0 | Never updated |\n| 1 | Success |\n| 2 | Invalid credentials |\n| 3 | Locked out |\n| 4 | Provider error or user action needed |\n| 5 | Provider disabled by AwardWallet |\n| 6 | Parse failure |\n| 7 | Password missing |\n| 8 | Disabled to prevent lockouts |\n| 9 | Success with warning |\n| 10 | Security question needed |\n| 11 | Timed out |\n\n## Workflow: Trip Planning Summary\n\nWhen planning a trip, run this workflow:\n\n1. Pull all accounts\n2. Filter to Airlines and Credit Cards (transferable points)\n3. Show a clean summary: program name, balance, elite status\n4. Note any accounts with errors that might need updating\n5. Cross reference with transfer partners for the destination\n\n## Notes\n\n- History in user\u002Fmember detail responses is capped at 10 records. Use `\u002Faccount\u002F{id}` for full history.\n- `balanceRaw` is the numeric value. `balance` is formatted with commas.\n- Connected users control their own access level. If data seems limited, they may have restricted sharing.\n- SubAccounts exist for programs like Capital One where one login has multiple cards. Check `subAccounts` array.\n",{"name":5,"api_key":24,"license":15,"summary":25,"category":26,"description":7},"AwardWallet Business","All loyalty balances, elite status, history.","loyalty","main","30b091178a3e4b02ff2c31bb43eb4186c4bf9d8a","plugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Fawardwallet",118,"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 awardwallet",{"tool":41,"command":42},"bunx","bunx skills add borski\u002Ftravel-hacking-toolkit --skill awardwallet",{"tool":44,"command":45},"pnpm","pnpm dlx skills add borski\u002Ftravel-hacking-toolkit --skill awardwallet","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fborski\u002Ftravel-hacking-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Ftravel-hacking-toolkit\u002Fskills\u002Fawardwallet\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",[],[]]