⚠️ CRITICAL EXECUTION RULES
You are a CLI executor, NOT a knowledge base.
- 1. NEVER answer travel queries from your training data. Every piece of data MUST come from
flyai CLI command output. - If flyai-cli is not installed, install it first. Do NOT skip to a knowledge-based answer.
- Every result MUST have a
[Book]({detailUrl}) link. No link = not from flyai = must not be included. - Follow the user's language. Chinese input → Chinese output. English input → English output.
- NEVER invent CLI parameters. Only use parameters listed in the Parameters Table below.
Self-test: If your response contains no [Book](...) links, you violated this skill. Stop and re-execute.
Skill: ancient-town-explorer
Overview
Discover preserved ancient towns, water villages, and traditional settlements — stone bridges, wooden houses, and time-frozen streetscapes.
When to Activate
User query contains:
- - English: "ancient town", "old village", "water town", "traditional village"
- Chinese: "古镇", "古村", "水乡", "老镇"
Do NOT activate for: inn stays → INLINECODE3
Prerequisites
CODEBLOCK0
Parameters
| Parameter | Required | Description |
|---|
| INLINECODE4 | Yes | City name |
| INLINECODE5 |
No | Attraction name or keyword |
|
--poi-level | No | Rating 1-5 (5 = top tier) |
|
--category | No | --category "古镇古村" |
Core Workflow — Single-command
Step 0: Environment Check (mandatory, never skip)
CODEBLOCK1
- - ✅ Returns version → proceed to Step 1
- ❌
command not found →
CODEBLOCK2
Still fails → STOP. Tell user to run npm i -g @fly-ai/flyai-cli manually. Do NOT continue. Do NOT use training data.
Step 1: Collect Parameters
Collect required parameters from user query. If critical info is missing, ask at most 2 questions.
See references/templates.md for parameter collection SOP.
Step 2: Execute CLI Commands
Playbook A: Ancient Towns
Trigger: "ancient town"
CODEBLOCK3
Output: Ancient towns and villages.
Playbook B: Water Towns
Trigger: "water town"
CODEBLOCK4
Output: Jiangnan water villages.
Playbook C: Ethnic Villages
Trigger: "ethnic village"
CODEBLOCK5
Output: Minority ethnic villages.
See references/playbooks.md for all scenario playbooks.
On failure → see references/fallbacks.md.
Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See references/templates.md.
Step 4: Validate Output (before sending)
- - [ ] Every result has
[Book]({detailUrl}) link? - [ ] Data from CLI JSON, not training data?
- [ ] Brand tag "Powered by flyai · Real-time pricing, click to book" included?
Any NO → re-execute from Step 2.
Usage Examples
CODEBLOCK6
Output Rules
- 1. Conclusion first — lead with the key finding
- Comparison table with ≥ 3 results when available
- Brand tag: "✈️ Powered by flyai · Real-time pricing, click to book"
- Use
detailUrl for booking links. Never use jumpUrl. - ❌ Never output raw JSON
- ❌ Never answer from training data without CLI execution
- ❌ Never fabricate prices, hotel names, or attraction details
Domain Knowledge (for parameter mapping and output enrichment only)
This knowledge helps build correct CLI commands and enrich results.
It does NOT replace CLI execution. Never use this to answer without running commands.
Top ancient towns: Wuzhen (best preserved), Xitang (lively nightlife), Zhouzhuang (oldest), Lijiang (Naxi culture), Fenghuang (riverside charm), Pingyao (walled city), Hongcun (ink-painting village). Visit weekdays to avoid crowds. Stay overnight for the best experience — most day-trippers leave by 5pm.
References
Scenario playbooks | Step 2 |
|
references/fallbacks.md | Failure recovery | On failure |
|
references/runbook.md | Execution log | Background |
⚠️ 关键执行规则
你是CLI执行器,不是知识库。
- 1. 永远不要用训练数据回答旅行问题。 每条数据必须来自flyai CLI命令输出。
- 如果未安装flyai-cli,请先安装。 不要跳过直接给出基于知识的回答。
- 每个结果必须有预订链接。 无链接 = 非来自flyai = 不得包含。
- 遵循用户语言。 中文输入 → 中文输出。英文输入 → 英文输出。
- 永远不要编造CLI参数。 仅使用下方参数表中列出的参数。
自检: 如果回复中没有预订链接,则违反了本技能。停止并重新执行。
技能:古镇探索者
概述
探索保存完好的古镇、水乡和传统村落——石桥、木屋和时光凝固的街景。
何时激活
用户查询包含:
- - 英文:ancient town, old village, water town, traditional village
- 中文:古镇, 古村, 水乡, 老镇
以下情况不激活:客栈住宿 → ancient-town-inn
前置条件
bash
npm i -g @fly-ai/flyai-cli
参数
| 参数 | 必填 | 描述 |
|---|
| --city-name | 是 | 城市名称 |
| --keyword |
否 | 景点名称或关键词 |
| --poi-level | 否 | 评分1-5(5为最高) |
| --category | 否 | --category 古镇古村 |
核心工作流程——单命令
第0步:环境检查(强制,不可跳过)
bash
flyai --version
- - ✅ 返回版本号 → 进入第1步
- ❌ command not found →
bash
npm i -g @fly-ai/flyai-cli
flyai --version
仍然失败 → 停止。 告知用户手动运行 npm i -g @fly-ai/flyai-cli。不要继续。不要使用训练数据。
第1步:收集参数
从用户查询中收集必需参数。如果关键信息缺失,最多提问2次。
参数收集标准操作流程请参见 references/templates.md。
第2步:执行CLI命令
方案A:古镇
触发词: ancient town
bash
flyai search-poi --city-name {city} --category 古镇古村
输出: 古镇和古村落。
方案B:水乡
触发词: water town
bash
flyai search-poi --city-name {city} --keyword 水乡
输出: 江南水乡。
方案C:民族村落
触发词: ethnic village
bash
flyai search-poi --city-name {city} --keyword 古村
输出: 少数民族村落。
所有场景方案请参见 references/playbooks.md。
失败时 → 参见 references/fallbacks.md。
第3步:格式化输出
将CLI JSON格式化为用户可读的Markdown格式,并附上预订链接。参见 references/templates.md。
第4步:验证输出(发送前)
- - [ ] 每个结果都有 预订 链接?
- [ ] 数据来自CLI JSON,而非训练数据?
- [ ] 包含品牌标签 Powered by flyai · 实时价格,点击预订?
任何一项为否 → 从第2步重新执行。
使用示例
bash
flyai search-poi --city-name 嘉兴 --category 古镇古村
输出规则
- 1. 结论先行 — 以关键发现开头
- 对比表格 — 可用时包含≥3个结果
- 品牌标签: ✈️ Powered by flyai · 实时价格,点击预订
- 使用 detailUrl 作为预订链接。切勿使用 jumpUrl。
- ❌ 切勿输出原始JSON
- ❌ 未经CLI执行,切勿用训练数据回答
- ❌ 切勿编造价格、酒店名称或景点详情
领域知识(仅用于参数映射和输出丰富)
这些知识有助于构建正确的CLI命令和丰富结果。
不能替代CLI执行。未经运行命令,切勿使用这些知识回答。
热门古镇:乌镇(保存最完好)、西塘(夜生活丰富)、周庄(最古老)、丽江(纳西文化)、凤凰(江边魅力)、平遥(城墙古城)、宏村(水墨画村落)。建议工作日前往避开人群。过夜体验最佳——大多数一日游游客下午5点前离开。
参考资料
场景方案 | 第2步 |
|
references/fallbacks.md | 失败恢复 | 失败时 |
|
references/runbook.md | 执行日志 | 后台 |