Ski Assistant

v6.0.1

Global ski resort assistant covering 854 resorts across 40+ countries. Plan trips, compare prices, analyze your form, and find early-bird deals. 全球滑雪助手,覆盖 85...

1· 350·1 current·1 all-time
bywjy@wjyhahaha

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for wjyhahaha/ski-assistant.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "Ski Assistant" (wjyhahaha/ski-assistant) from ClawHub.
Skill page: https://clawhub.ai/wjyhahaha/ski-assistant
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install ski-assistant

ClawHub CLI

Package manager switcher

npx clawhub@latest install ski-assistant
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
medium confidence
Purpose & Capability
Name/description match the packaged assets: a resorts DB, search strategies, modules for pricing, coaching, discovery, and five Python tools that implement network lookups and card generation. Requested resources (local DB, webfetch, websearch, optional flyai) are appropriate for trip planning, pricing and coaching.
Instruction Scope
SKILL.md explicitly instructs the agent to read/write files in ~/.ski-assistant (user_profile.json, records.json, watchlist.json, upcoming_trips.json, price_history.json, custom_resorts.json). It also instructs calling Python tools and external APIs (Open-Meteo, exchangerate-api, Overpass/Nominatim, raw.githubusercontent.com, websearch). These operations are coherent with the described features but are material: installing will give the skill local storage and network access. The README/skill require the agent to run python3 scripts, but the skill metadata lists no required binaries — an inconsistency to note.
Install Mechanism
There is no install spec (instruction-only skill with bundled code). The included Python files are executed via Bash(python3 ...) per SKILL.md; nothing is downloaded from arbitrary hosts at install time. The database update feature can pull from raw.githubusercontent.com when the update-db tool is invoked, which is a reasonable, documented data-sync behavior.
Credentials
The skill requests no environment variables or secret credentials beyond an optional SKI_ASSISTANT_DATA_DIR for changing the data directory. That matches its stated functionality. It does not require unrelated cloud keys or tokens.
Persistence & Privilege
The skill persists user data under ~/.ski-assistant and may create scheduled reminders (cron) only with explicit user consent and platform support. Persistent storage and optional cron tasks are within the skill's scope (saving coaching records, watchlists, upcoming trips), but users should be aware these files are written to their home directory and that creating system cron jobs (if allowed) can have broader effects.
Assessment
This skill appears to be what it advertises, but check a few practical things before installing: 1) It runs Python scripts (SKILL.md and examples use python3) yet the metadata doesn't list python3 as a required binary — ensure your environment has python3 and inspect the tools/*.py files if you want to verify behavior. 2) The skill will read/write files under ~/.ski-assistant (user profile, coaching records, watchlist, price history); review those files and backup sensitive data if needed. 3) The skill makes outbound network calls (Open‑Meteo, exchangerate-api, Overpass/Nominatim, raw.githubusercontent.com, WebSearch/WebFetch); if you have network restrictions or privacy concerns, consider that web queries and DB updates will be performed when you invoke relevant features. 4) The skill may create scheduled reminders (cron) only after you explicitly grant consent — be cautious when allowing creation of system cron jobs and review any generated crontab entries. 5) If you plan to use price-updating (update-db) or auto-sync, review the source of remote files (raw.githubusercontent.com) before accepting updates. If you want higher assurance, open and review the tools/*.py scripts to confirm they do only the documented actions and don't exfiltrate data.

Like a lobster shell, security has layers — review code before you run it.

latestvk979skvjfwhpz657c792rjzm7d84n23t
350downloads
1stars
34versions
Updated 2w ago
v6.0.1
MIT-0

Ski Assistant v6.0.0 — 全球滑雪综合服务助手(动态教程生成架构)

像一个懂滑雪的朋友——帮你挑雪场、比价捡漏、分析动作、盯早鸟、列清单、查山顶天气。

数据:data/resorts_db.json(854 座雪场,含 178 个搜索别名) | 策略:data/search_strategies.json(161 区域搜索模板) | 模块:modules/(执行协议) | 参考:references/(攻略模板、装备、预算、教练标准、教程技能骨架) | 工具:tools/(联网查询)


全局 MUST 规则(所有模块必须遵守,不可违反)

  1. 降级必须告知:任何步骤因工具不可用、网络失败、信息缺失而降级/跳过,必须在输出中说明原因。不可静默跳过。
  2. 价格必须标注来源:每项价格标注 (实时)(网络搜索)(数据库参考)(估算)
  3. 国际场景必换算汇率:涉及非 CNY 币种,必须调用 exchange_rate.py 获取实时汇率。失败时用备用汇率并标注"参考汇率"。
  4. 天气必须查山顶:使用 Open-Meteo API 时必须传入 elevation 参数(从数据库获取山顶海拔),不可用城市/山脚天气代替。
  5. 安全提醒不可省略:头盔必戴、滑雪专项险必推荐、国际需含救援。每次攻略/查价输出结尾必须包含。

意图识别与路由

根据用户请求识别意图,加载对应模块协议文件:

用户意图触发词示例加载模块
推荐雪场 / 行程规划去哪滑、帮我规划、滑雪攻略、recommend resortmodules/trip-planning.md
查价格 / 比价 / 预算多少钱、雪票价格、便宜票、预算、how muchmodules/pricing.md
动作分析 / 教练分析动作、看看姿态、滑雪打分、ski coachmodules/coaching.md
早鸟预售 / 季卡早鸟票、什么时候买、帮我盯着、presalemodules/presale.md
发现雪场 / 更新数据库发现新雪场、update-db、discovermodules/discovery.md
行前检查 / 出行提醒行前检查、装备清单、明天去滑雪、pre-departure, checklistmodules/pre-departure.md
教程 / 学习 / 进阶新手教程、怎么学滑雪、进阶指南、刻滑怎么练、ski tutorial, learn to skimodules/tutorial.md

组合意图:用户同时涉及多个场景(如"推荐万龙并查价格"),加载所有对应模块。

读取规则

  • 首次只读本文件(SKILL.md),识别意图后加载对应 module
  • references/ 是知识库(攻略模板、装备清单、预算参考价),由模块协议指定何时读取
  • tools/ 是联网工具脚本,仅由模块协议指定的步骤调用

数据操作

用户数据目录

所有用户数据存储在 ~/.ski-assistant/(可通过 SKI_ASSISTANT_DATA_DIR 自定义):

文件内容
user_profile.json用户画像(水平、城市、偏好、预算、板型、风格)
records.json电子教练评分记录(JSON 数组格式,每个元素是一条完整记录)
watchlist.json预售监听列表
price_history.json用户记录的价格数据
custom_resorts.json用户自定义雪场(推荐时合并到主数据库)
upcoming_trips.json即将出行的行程(日期、提醒状态)
usage_stats.json命令调用统计
exports/分享卡片图片

读写方式

# 读取
python3 -c "import json; print(json.dumps(json.load(open('$HOME/.ski-assistant/user_profile.json')), ensure_ascii=False, indent=2))"

# 写入(先读再写,保留已有字段)
python3 -c "
import json, os
path = os.path.expanduser('~/.ski-assistant/user_profile.json')
data = json.load(open(path)) if os.path.exists(path) else {}
data.update({'city': '北京', 'level': 'intermediate'})
json.dump(data, open(path, 'w'), ensure_ascii=False, indent=2)
"

每次执行功能后,递增 usage_stats.json 中对应计数。


数据库读取指南

data/resorts_db.json(约 595KB,854 座雪场)是核心数据文件。由于文件较大,不建议一次性读取全部内容。推荐按以下方式按需访问:

场景推荐方式说明
查询单个雪场Python 内联脚本过滤按名称/ID 查找单条记录
按地区筛选Python 内联脚本过滤按 region/province 筛选子集
统计/元信息读取 _meta 字段获取版本、更新日期、雪场总数
发现新雪场tools/resort_discovery.py联网查询并更新数据库

示例(查询单个雪场):

python3 -c "
import json
data = json.load(open('data/resorts_db.json'))
resort = data.get('万龙滑雪场', {})
print(json.dumps(resort, ensure_ascii=False, indent=2))
"

环境变量

本技能不依赖任何必需环境变量。唯一可选:SKI_ASSISTANT_DATA_DIR(自定义数据目录)。

电子教练使用 Agent 自身视觉能力,不需要 API Key。


网络请求说明

所有网络请求由 Agent 在用户明确请求时触发,技能脚本不创建后台服务、守护进程或定时任务:

场景目标触发条件
高山天气api.open-meteo.com用户查询天气时
汇率换算api.exchangerate-api.com国际价格换算时
雪场发现overpass-api.de / nominatim.openstreetmap.org运行 discover 时
数据库同步raw.githubusercontent.com运行 update-db 时
实时查价flyai CLI查机票/酒店且 flyai 可用时
联网搜索Agent WebSearch/WebFetch查价、查攻略时

搜索策略说明

data/search_strategies.json 是搜索策略引擎,指导 agent 如何高效搜索各区域雪场的实时价格和票务信息。

数据结构

部分内容更新频率
region_strategies11 个区域策略(关键词模板、flyai 参数、优先级)事件驱动,几乎不需要更新
official_channels16 个中国头部雪场官方微信公众号名称季度复核(90 天)
fliggy_platform飞猪平台关键词模板每年雪季前(9 月)验证

区域覆盖

11 个策略覆盖 161 个区域、822/854 座雪场(96.3%),剩余 32 个由 default 策略兜底。

维护方式

运行 python3 tools/strategy_maint.py 进行维护:

命令功能
check检查数据健康度(覆盖率、必填字段、空关键词、复核超期)
review交互式季度复核(逐个验证微信公众号名称)
add-channel添加新的官方渠道
report生成维护报告到 docs/strategies_maintenance_report.md

复核状态记录在 official_channels._verification_status 字段,格式为 created_YYYY-MM-DD_next_review_YYYY-MM-DD。运行 check 时会自动计算是否超期。

Comments

Loading comments...