zexuanw958-svg/travel-plan-viz
把旅行行程做成美观、离线可读、手机优先的单文件 HTML(交互地图+每日时间轴+出发前订票提醒)。两种用法——只给目的地和天数让它帮你规划,或丢一份现成计划让它直接出页面。触发:旅行计划可视化、做旅行攻略网页、行程 HTML、travel plan visualization。
npx skills add https://github.com/zexuanw958-svg/travel-plan-viz --skill travel-plan-viz
把一趟旅行变成单文件 HTML 页面:交互地图、每日时间轴、出发前订票提醒。机械逻辑用自带引擎(assets/map.js、assets/reminders.js),美学交给设计步骤(frontend-design / huashu-design,或内置准则兜底)。
references/research-guide.md,联网调研目的地。<script id="trip-data" type="application/json"> 的完整 trip JSON(数据与呈现分离,别去反解析渲染后的 DOM——必丢字段);旧版页面没有这块时才从 DOM/文本提取。references/research-guide.md「第三方 skill 适配」节):若当前 Agent 可调用用户已装的官方旅行 skill / MCP(飞猪、高德、腾讯地图、滴滴等),优先用它们拿对应数据——高德地理编码拿精确坐标(注意:高德/腾讯返回 GCJ-02 坐标,写入 trip 前必须用 map.js 的 gcj02ToWgs84 转成 WGS-84,否则在 OSM 地图上偏移几百米)、路线规划增强点到点交通、天气查询、生成专属地图/导航/叫车的行动链接;飞猪拿实时航班/酒店/门票及预订链接。把用到的来源登记进 trip.dataSources,行动链接写入对应节点的 actionLink(链接只用官方返回的,绝不手拼)。没有这些 skill 就全部走下面的静态调研,成品不缺区块。数据实时性/真实性由对方官方 skill 负责,本 skill 不背书、措辞中性。references/research-guide.md 联网补全(官方 skill 未覆盖的部分):坐标、真实图片 URL、评分、点评、营业时间/休息日、门票参考价、需提前订项及 leadDays;行前须知(天气/台风/穿搭/支付/App/购票时机)、点到点交通(方式/票价/耗时)、时令限定活动、每餐必点菜+参考价;航班给 3-5 个待选班次、酒店按片区+价位推荐、并准备免责声明与全程贴士。排程体现天气/季节逻辑(户外排凉爽时段)。本 skill 自身不查实时票价(实时数据只来自上面用户已装的官方 skill)。assets/page-contract.md 里定义的 trip 数据结构(含可选的 dataSources 与节点 actionLink)。frontend-design 或 huashu-design(花叔Design),任一已安装即用;两者都没有时,按 references/design-guidelines.md 的内置美学准则自己出。无论哪种方式都要严格遵守 assets/page-contract.md 的区块与约束:assets/map.js、assets/reminders.js 内容到 HTML(保证单文件)。trip 对象以 <script id="trip-data" type="application/json"> 内嵌进页面(后续迭代修改的数据源)。computeReminders + renderChecklistHTML。initTravelMap,引入 Leaflet CDN 的 CSS/JS。needsBooking 项插入 reminderBadgeHTML(leadDays)。actionLink 时渲染「去预订/导航/叫车」按钮(缺则不渲染、不手拼);dataSources 非空时中性注明数据来源。<行程名>-旅行计划.html 到工作目录。node <skill目录>/assets/validate.js <生成的.html>——校验 trip 必填字段、坐标越界/离群、必需区块标记、trip-data 内嵌。有 ERROR 必须修复后重跑至通过;WARNING 逐条人工判断。本 skill 自身不做:实时票价/机票价格查询、代订票、多语言 UI、后端。全程静态单文件。
> 注意边界:用户若另装了官方旅行 skill(飞猪/高德/腾讯地图/滴滴等),实时数据与「预订/导航/叫车」链接由其提供、责任在其——本 skill 只适配呈现,并不改变上面「自身不做」的范围(仍不自查实时价、不代订)。
Take zexuanw958-svg/travel-plan-viz from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.