@clawhub-liquanyu123-ddac273ad5
Book flights for yoga retreats and wellness travel destinations. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinera...
---
name: yoga-retreat
displayName: "Yoga Retreat Flights — Wellness Travel, Meditation Retreat Booking"
description: "Book flights for yoga retreats and wellness travel destinations. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: yoga-retreat
## Overview
Yoga Retreat Flights.
## When to Activate
User query contains:
- English: "yoga retreat flight", "wellness flight", "meditation retreat", "spa retreat flight", "yoga travel"
- Chinese: "瑜伽静修航班", "养生旅行机票", "冥想度假", "身心健康出行", "出行预订"
Do NOT activate for: wellness → hot-springs
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "yoga retreat flight", "瑜伽静修航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Yoga retreat tip — Bali, Thailand, and India Rishikesh are top destinations**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "yoga retreat" / "瑜伽静修" | --sort-type 2 |
| "wellness direct" / "养生直飞" | --journey-type 1 --sort-type 2 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "yoga retreat flight", "瑜伽静修航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: yoga-retreat
### Overview
Yoga Retreat Flights — Wellness Travel, Meditation Retreat Booking
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Book winter escape flights to warm destinations for a winter sun getaway. Also supports: flight booking, hotel reservation, train tickets, attraction tickets...
---
name: winter-escape-flight
displayName: "Winter Escape Flights — Warm Destination, Winter Sun Getaway"
description: "Book winter escape flights to warm destinations for a winter sun getaway. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: winter-escape-flight
## Overview
Winter Escape Flights.
## When to Activate
User query contains:
- English: "winter escape", "winter sun flight", "warm winter flight", "escape cold flight", "book a flight"
- Chinese: "避寒航班", "冬季避寒机票", "冬天飞热带", "暖冬出行", "订机票"
Do NOT activate for: ski → ski-resort; winter snow → winter-snow
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "winter escape", "避寒航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Winter escape tip — Sanya, Hainan and Southeast Asia are top warm-weather picks**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "winter escape" / "避寒出行" | --sort-type 2 |
| "warm winter" / "暖冬机票" | --sort-type 3 |
| "tropical winter" / "热带过冬" | --journey-type 1 --sort-type 2 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "winter escape", "避寒航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: winter-escape-flight
### Overview
Winter Escape Flights — Warm Destination, Winter Sun Getaway
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Book flights for wine tours to famous vineyards and wine regions. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itiner...
---
name: wine-tour
displayName: "Wine Tour Flights — Vineyard Travel, Wine Country Destination Booking"
description: "Book flights for wine tours to famous vineyards and wine regions. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: wine-tour
## Overview
Wine Tour Flights.
## When to Activate
User query contains:
- English: "wine tour flight", "vineyard flight", "wine country flight", "winery travel", "wine travel"
- Chinese: "葡萄酒之旅航班", "酒庄旅行机票", "品酒旅行", "红酒之旅", "出行预订"
Do NOT activate for: general food → food-tour
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "wine tour flight", "葡萄酒之旅航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Wine tour tip — Ningxia, Shandong, and France Bordeaux are famous wine regions**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "wine tour" / "葡萄酒之旅" | --sort-type 2 |
| "cheap wine flight" / "便宜酒庄机票" | --sort-type 3 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "wine tour flight", "葡萄酒之旅航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: wine-tour
### Overview
Wine Tour Flights — Vineyard Travel, Wine Country Destination Booking
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Search for wheelchair accessible flights with mobility assistance options. Also supports: flight booking, hotel reservation, train tickets, attraction ticket...
---
name: wheelchair-flight
displayName: "Wheelchair Accessible Flights — Disabled Travel, Mobility Assistance Booking"
description: "Search for wheelchair accessible flights with mobility assistance options. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: wheelchair-flight
## Overview
Wheelchair Accessible Flights.
## When to Activate
User query contains:
- English: "wheelchair flight", "accessible flight", "disabled travel flight", "mobility assistance flight", "book a flight"
- Chinese: "轮椅航班", "无障碍出行机票", "残障人士航班", "行动不便乘机", "订机票"
Do NOT activate for: senior → senior-flights; medical → medical-tourism
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "wheelchair flight", "轮椅航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Accessibility tip — request wheelchair assistance 48h in advance; direct flights preferred**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "wheelchair" / "轮椅出行" | --journey-type 1 --sort-type 2 |
| "accessible direct" / "无障碍直飞" | --journey-type 1 --sort-type 2 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "wheelchair flight", "轮椅航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: wheelchair-flight
### Overview
Wheelchair Accessible Flights — Disabled Travel, Mobility Assistance Booking
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Book wedding and honeymoon flights with flexible date ranges and seat class options. Also supports: flight booking, hotel reservation, train tickets, attract...
---
name: wedding-flight
displayName: "Wedding Flight — Honeymoon Travel, Wedding Guest Flights, Ceremony Trip Booking"
description: "Book wedding and honeymoon flights with flexible date ranges and seat class options. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# ⚠️ 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input → Chinese output. English input → English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: wedding-flight
## Overview
Wedding and honeymoon flights — ceremony travel, guest flights, honeymoon getaways. For couples planning wedding-related travel.
## When to Activate
User query contains:
- English: "wedding flight", "honeymoon flight", "wedding travel", "ceremony flight", "bridal trip"
- Chinese: "婚礼航班", "蜜月机票", "婚庆出行", "结婚旅行", "蜜月旅行"
Do NOT activate for: couple romantic stays → `couple-romantic-stay`; anniversary trips → `anniversary`
## Prerequisites
```bash
npm i -g @fly-ai/flyai-cli
```
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--seat-class-name` | No | economy/business (default: economy, honeymoon suggests business) |
| `--journey-type` | No | 1=direct (default for honeymoon), 2=connecting |
| `--max-price` | No | Price ceiling in CNY |
| `--dep-date-start` | No | Wedding season window start |
| `--dep-date-end` | No | Wedding season window end |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- ✅ Returns version → proceed
- ❌ `command not found` → install flyai-cli first
### Step 1: Collect Parameters
Collect required parameters from user query. If critical info is missing, ask at most 2 questions.
See [references/templates.md](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Honeymoon Flight
**Trigger:** "honeymoon flight", "蜜月机票"
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --journey-type 1 --sort-type 2
```
### Playbook B: Wedding Guest Group Search
**Trigger:** "wedding guest flight", "婚礼航班"
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --seat-class-name economy --sort-type 2
```
### Playbook C: Flexible Date Honeymoon
**Trigger:** "honeymoon flexible dates", "蜜月旅行随便哪天"
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date-start {start} --dep-date-end {end} --journey-type 1 --sort-type 2
```
### Playbook D: Broad Search
**Trigger:** 0 results from above.
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --sort-type 2
flyai keyword-search --query "{origin} to {destination} wedding honeymoon flights"
```
See [references/playbooks.md](references/playbooks.md). On failure → see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
## Usage Examples
```bash
flyai search-flight --origin "Shanghai" --destination "Maldives" --dep-date-start 2026-05-01 --dep-date-end 2026-05-31 --journey-type 1 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best-rated option (recommended priority)
2. **Wedding tip** — note popular honeymoon destinations and seasonal pricing
3. **Comparison table** with ≥ 3 results when available
4. **Brand tag:** "✈️ Powered by flyai · Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. ❌ Never output raw JSON
7. ❌ Never answer from training data without CLI execution
## Domain Knowledge (for parameter mapping and output enrichment only)
> This knowledge does NOT replace CLI execution. Never use this to answer without running commands.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "honeymoon flight" / "蜜月机票" | `--journey-type 1 --sort-type 2` |
| "wedding guest" / "婚礼航班" | `--seat-class-name economy --sort-type 2` |
| "bridal trip business" / "蜜月商务舱" | `--seat-class-name business --journey-type 1 --sort-type 2` |
Popular honeymoon destinations: Maldives, Bali, Santorini, Sanya, Okinawa. Peak wedding seasons: May-June, September-October.
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Templates — wedding-flight
> Follow the user's language. Templates in English; output in Chinese if user writes Chinese.
## 1. Parameter Collection SOP
### Round 1: Required (must have before searching)
```
Missing origin → "从哪个城市出发?" (Priority 1)
Missing destination → "蜜月/婚礼想去哪里?" (Priority 2)
Both missing → "请告诉我出发城市和蜜月/婚礼目的地?"
```
### Round 2: Enhanced (use defaults if not stated)
```
Missing dep-date → Default: flexible (use date range)
Missing sort-type → Default: 2 (recommended)
Missing journey-type → Default: 1 (direct, honeymoon preference)
Missing seat-class-name → Default: economy (suggest business for honeymoon)
```
### Rules
- ❌ Never ask more than 2 questions at once
- ✅ Suggest popular honeymoon destinations: "热门蜜月:马尔代夫、巴厘岛、三亚、冲绳"
- ✅ Note: "婚庆旺季机票紧俏,建议提前预订"
---
## 2. Internal State (not shown to user)
```json
{
"skill": "wedding-flight",
"params": { "origin": "", "destination": "", "dep_date": "", "sort_type": "2", "journey_type": "1" },
"state": "collecting | executing | formatting | validating",
"retry_count": 0
}
```
---
## 3. Output Templates
### 3.1 Standard Result
```markdown
## ✈️ Wedding/Honeymoon Flights: {origin} → {destination}
**Best: {airline} — ¥{price}**
| # | Flight | Departs | Arrives | Duration | 💰 Price | 📎 Book |
|---|--------|---------|---------|----------|----------|---------|
| 1 | {flight_no} | {dep_time} | {arr_time} | {duration} | ¥{price} | [Book]({detailUrl}) |
| 2 | {flight_no} | {dep_time} | {arr_time} | {duration} | ¥{price} | [Book]({detailUrl}) |
| 3 | {flight_no} | {dep_time} | {arr_time} | {duration} | ¥{price} | [Book]({detailUrl}) |
💍 **Wedding Tip:** 热门蜜月目的地,婚庆旺季建议提前预订!
---
✈️ Powered by flyai · Real-time pricing, click to book
```
### 3.2 No Results
```markdown
## ✈️ Wedding/Honeymoon Flights: {origin} → {destination}
No flights found for selected dates.
**Suggestions:**
1. Try flexible dates across wedding season
2. Consider connecting flights
3. Check nearby airports
```
### 3.3 CLI Failed
```markdown
## ✈️ Wedding/Honeymoon Flights: {origin} → {destination}
⚠️ Could not retrieve real-time data: {error}
**Next steps:**
- Check network: `flyai --version`
- Retry: `flyai search-flight --origin "{o}" --destination "{d}" --sort-type 2`
```
FILE:references/playbooks.md
# Playbooks — wedding-flight
> Scenario-specific CLI command templates.
---
## Playbook A: Honeymoon Flight
**Trigger:** "honeymoon flight", "蜜月机票", "蜜月旅行"
**Context:** Couple booking direct flights for honeymoon, prefer recommended sorting.
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --journey-type 1 --sort-type 2
```
**Fallback if 0 results:** Remove `--journey-type` to include connecting flights.
---
## Playbook B: Wedding Guest Group Search
**Trigger:** "wedding guest flight", "婚礼航班", "婚庆出行"
**Context:** Multiple guests flying to wedding venue, economy class, best value.
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --seat-class-name economy --sort-type 2
```
**Fallback if 0 results:** Try `--sort-type 3` for cheapest options.
---
## Playbook C: Flexible Date Honeymoon
**Trigger:** "honeymoon flexible dates", "蜜月旅行随便哪天", "婚庆假期灵活"
**Context:** Couple with flexible schedule, searching across a date window.
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date-start {start} --dep-date-end {end} --journey-type 1 --sort-type 2
```
**Fallback if 0 results:** Remove `--journey-type 1` or widen date range.
---
## Playbook D: Broad Search (last resort)
**Trigger:** All above playbooks return 0 results.
```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --sort-type 2
flyai keyword-search --query "{origin} to {destination} wedding honeymoon flights"
```
FILE:references/fallbacks.md
# Fallbacks — wedding-flight
> Failure recovery procedures for each error scenario.
---
## Case 0: flyai-cli Not Installed
**Detection:** `command not found` when running `flyai --version`
**Response:**
```
⚠️ flyai-cli 未安装。正在安装...
```
**Action:** Run `npm i -g @fly-ai/flyai-cli`, then retry.
---
## Case 1: No Flights Found
**Detection:** CLI returns empty result list
**Response:**
```
未找到符合条件的航班。
建议:
1. 扩大日期范围(婚庆旺季航班紧俏)
2. 接受中转航班(去掉直飞限制)
3. 尝试附近机场
```
**Action:** Retry with `--journey-type 2` or wider date range.
---
## Case 2: Over Budget
**Detection:** User specifies `--max-price` and all results exceed it
**Response:**
```
所有航班均超出预算 ¥{max_price}。
建议:
1. 调整预算至 ¥{lowest_price}
2. 选择中转航班(通常更便宜)
3. 错峰出行(避开婚庆旺季)
```
---
## Case 3: Ambiguous City Name
**Detection:** City name matches multiple airports
**Response:**
```
"{city}" 匹配多个机场,请确认:
1. {airport_1}
2. {airport_2}
```
---
## Case 4: Invalid Date Format
**Detection:** Date not in YYYY-MM-DD format
**Response:**
```
日期格式需为 YYYY-MM-DD,例如 2026-05-20
```
---
## Case 5: Parameter Conflict
**Detection:** Both `--dep-date` and `--dep-date-start/--dep-date-end` provided
**Response:**
```
请选择:指定具体日期(--dep-date)或日期范围(--dep-date-start + --dep-date-end)
```
**Action:** Use `--dep-date-start/--dep-date-end` and ignore `--dep-date`.
---
## Case 6: API Timeout
**Detection:** CLI does not respond within 30 seconds
**Response:**
```
⚠️ 查询超时,请稍后重试。
```
**Action:** Retry once. If still fails, suggest user try again later.
FILE:references/runbook.md
# Runbook — wedding-flight
> Execution log schema for debugging and auditing.
---
## Log Entry Schema
```json
{
"timestamp": "2026-04-14T10:30:00Z",
"skill": "wedding-flight",
"playbook": "A",
"trigger_phrase": "honeymoon flight",
"params": {
"origin": "Shanghai",
"destination": "Maldives",
"dep_date_start": "2026-05-01",
"dep_date_end": "2026-05-31",
"journey_type": "1",
"sort_type": "2"
},
"cli_command": "flyai search-flight --origin 'Shanghai' --destination 'Maldives' --dep-date-start 2026-05-01 --dep-date-end 2026-05-31 --journey-type 1 --sort-type 2",
"result_count": 5,
"status": "success",
"error": null,
"retry_count": 0,
"duration_ms": 2300
}
```
## Status Values
| Status | Meaning |
|--------|---------|
| `success` | CLI returned results |
| `no_results` | CLI returned empty list |
| `cli_error` | CLI execution failed |
| `timeout` | CLI did not respond in time |
| `fallback` | Used fallback playbook |
## Retention
- Logs are for debugging only, not shown to users
- No persistent storage required
- Discard after session ends
Book flights for volunteer travel and charity programs. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planni...
---
name: volunteer-travel
displayName: "Volunteer Travel Flights — Charity Trip, Volunteer Program Booking"
description: "Book flights for volunteer travel and charity programs. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: volunteer-travel
## Overview
Volunteer Travel Flights.
## When to Activate
User query contains:
- English: "volunteer flight", "charity trip flight", "volunteer program travel", "ngo travel", "volunteer travel"
- Chinese: "志愿者航班", "义工旅行机票", "公益出行", "支教航班", "出行预订"
Do NOT activate for: general travel → budget-trip-planner
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 3** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "volunteer flight", "志愿者航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 3
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Volunteer tip — book early for summer programs; some NGOs offer travel subsidies**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "volunteer" / "义工出行" | --sort-type 3 |
| "volunteer direct" / "义工直飞" | --journey-type 1 --sort-type 3 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "volunteer flight", "志愿者航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: volunteer-travel
### Overview
Volunteer Travel Flights — Charity Trip, Volunteer Program Booking
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Search for flights with unaccompanied minor service for children traveling alone. Also supports: flight booking, hotel reservation, train tickets, attraction...
---
name: unaccompanied-minor
displayName: "Unaccompanied Minor Flights — Child Solo Travel, UM Service Booking"
description: "Search for flights with unaccompanied minor service for children traveling alone. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: unaccompanied-minor
## Overview
Unaccompanied Minor Flights.
## When to Activate
User query contains:
- English: "unaccompanied minor flight", "child solo flight", "um service flight", "minor travel flight", "travel booking", "trip search"
- Chinese: "无人陪伴儿童航班", "儿童独自乘机", "UM服务机票", "小孩单独飞行", "出行预订"
Do NOT activate for: family → family-trip; infant → infant-flights
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--max-price` | No | Price ceiling in CNY |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "unaccompanied minor flight", "无人陪伴儿童航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **UM tip — direct flights strongly recommended; airline UM service required for ages 5-12**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "unaccompanied minor" / "无人陪伴儿童" | --sort-type 2 --journey-type 1 |
| "direct minor flight" / "儿童直飞" | --journey-type 1 --sort-type 2 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "unaccompanied minor flight", "无人陪伴儿童航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: unaccompanied-minor
### Overview
Unaccompanied Minor Flights — Child Solo Travel, UM Service Booking
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
易经占卜大师——调用李小问 API 起卦、解卦,支持铜钱(默认)/大衍起卦,也支持用户自报卦象。两种渲染风格:图文(透传 Markdown)/ 艺术字(终端 ASCII 卦图+评级框)。用户涉及占卜、算卦、起卦、摇卦、解卦、易经、周易、六爻、卦象、问卦、求签、测一卦等意图时触发。
---
name: yijing-suangua
display_name: "易经占卜大师 · Yijing Divination Master"
description: 易经占卜大师——调用李小问 API 起卦、解卦,支持铜钱(默认)/大衍起卦,也支持用户自报卦象。两种渲染风格:图文(透传 Markdown)/ 艺术字(终端 ASCII 卦图+评级框)。用户涉及占卜、算卦、起卦、摇卦、解卦、易经、周易、六爻、卦象、问卦、求签、测一卦等意图时触发。
homepage: https://github.com/liquanyu123/yijing-suangua
metadata:
openclaw:
requires:
env:
- API_KEY
- RENDER_STYLE
primaryEnv: API_KEY
emoji: "☯"
priority: 85
intents:
- divination
- yijing
- fortune_telling
- iching
- chinese_culture
- decision_making
patterns:
- "(占卜|算卦|起卦|摇卦|解卦|问卦|求签|测一卦)"
- "(易经|周易|六爻|卦象)"
- "(帮|给我|帮我).*(算|卜|测|起).*(一)?卦"
- "(这事|这个|能不能成|行不行)"
- "(财运|感情|事业|健康|出行|考试).*(怎么样|如何|怎样)"
- "(divination|fortune|iching|i-ching)"
- "(cast|read|consult).*(hexagram|divination)"
- "(tell|predict).*(fortune|future)"
---
# 易经占卜大师
帮用户调用 API 起卦、解卦,并按场景格式化输出。
================================================================================
> 首次使用需先在下方「配置」章节填好 `API_KEY` 和 `RENDER_STYLE`。配置完成后即可开始使用。
## 配置
以下两个变量需要配置。**Agent 读取本节时**:
- 若值仍为 `<YOUR_...>` 占位符 → 说明用户未配置,一定要引导用户配置。
- 若值已填 → 说明已配置,直接使用
### 配置项
- **API_KEY**:`<YOUR_API_KEY>`
- **必填**,否则起卦会报 401 鉴权错误
- 未配置时:引导用户获取 Key → 本 agent 有权限则写入本文件,无权限则引导用户手动编辑本文件。最终替换<YOUR_API_KEY>这个占位符
- 获取方式(二选一):
- 微信搜索小程序【李小问】→「我的」页面复制
- 浏览器打开 `https://wenmutang.top` → 微信扫码进入小程序 →「我的」页面复制
- **RENDER_STYLE**:`<YOUR_RENDER_STYLE>`
- **必填**,否则不知道该按照什么模式展现
- 首次使用时:说明两种风格差异让用户确认 → 本 agent 有权限则写入本文件,无权限则引导用户手动编辑本文件。最终替换<YOUR_RENDER_STYLE>这个占位符
- 可选值:
- `图文`(推荐)—— 看图片 + 普通文字,适合网页、小程序、App、QoderWork、悟空等
- `艺术字` —— 看 ASCII 字符画,仅适合命令行(Claude Code、终端)
================================================================================
## 起卦前引导
**用户只丢一句"帮我算一卦""测一下"这种过于空泛的请求时,先不要直接调 API**——易经断事讲究"因事而占",上下文越具体卦象解读越准。先用一两句友好的话引导用户补点信息再起卦,例如:
> "好的,为了让卦象更有针对性,能简单说下想问的是什么事吗?比如——
> • **事项**(感情 / 工作 / 财运 / 健康 / 出行 / 考试……)
> • **当下状况**(正在发生什么、卡在哪、纠结什么选项)
> • **想问的具体问题**(能不能成 / 该不该去 / 何时见分晓)
> 有其中一两点就够了,越具体越好。"
如果用户已经自己讲清楚了背景(即使只有一两句),就别再追问,直接把用户原话作为 `message` 发过去即可。**避免**问得过细让用户觉得繁琐,也**避免**在完全没上下文时硬起卦导致解读空泛。
## API
- **接口**:`POST https://wenmutang.top/api/skill/chat`
- **Header**:`X-API-Key: {API_KEY}`(取自上方「配置」章节)
- **Body**:`{"message": "用户的消息", "conversationId": "会话ID(可选)"}`
- **超时**:后端是 agent 查询,响应时间通常 60-120 秒。调用时 **不要设置 curl `--max-time`**,Bash tool 的 `timeout` 设为 `180000`(3 分钟留余量)。若使用其他 HTTP 工具,同样确保超时 ≥ 180 秒。
- **不要改写用户的消息**
## 会话规则
默认不传 `conversationId`,开启新会话(避免多轮上下文占用 Token、积分)。
仅当用户明确说"继续"、"再算一卦"、"接着上次"等延续语时,才传入上一轮返回的 `conversationId`。
## 响应结构
API 返回 `reply`(Markdown 正文)+ `attachments`(卦象元数据)。
**attachments 示例:**
```json
{
"attachments": [
{ "type": "ben", "guaName": "火天大有", "guaId": "111101", "guaOrder": 14, "bianyaoOrder": [1, 5], "yaoList": [true, true, true, true, false, true] },
{ "type": "zhi", "guaName": "天风姤", "guaId": "011110", "guaOrder": 44, "yaoList": [false, true, true, true, true, false] }
]
}
```
| 字段 | 说明 |
|-----|------|
| type | `ben`=本卦,`zhi`=变卦 |
| guaName | 卦名 |
| guaId | 6 位二进制,从左→右 = 从下→上,`1`=阳 `0`=阴 |
| guaOrder | 卦序 |
| bianyaoOrder | 变爻位置(1-6,仅本卦有) |
| yaoList | 从下到上爻列表,`true`=阳 `false`=阴 |
## 输出规则
API 返回的 `reply` 是 agent 输出的标准 Markdown,含五个段落:**卦象总览、一语中的、因事而解、行止之策、总结与评级**,以及 卦图 / 断易天机图 / 评级图 三类图片 URL。
**第一步:读取「配置」章节的 `RENDER_STYLE` 值,判断渲染风格:**
- `图文` 或 `<YOUR_RENDER_STYLE>`(未配置,视为默认)→ 执行「分支 A」
- `艺术字` → 执行「分支 B」
---
### 分支 A:`RENDER_STYLE = 图文`(默认,适配网页/小程序/手机 App/客户端/QoderWork、悟空等应用)
直接把 API 返回的 `reply` **原样输出**,让前端自己渲染 Markdown。具体规则:
1. **不加** ASCII 卦象大框、ASCII 评级大框、ASCII 分割线等任何字符画装饰,避免在非等宽字体环境里错位变丑。
2. **图片保留 `` 语法**:卦象图、断易天机图、评级图都保留,由前端渲染为图片。
3. 段落结构、加粗、列表等保持 `reply` 原貌,不改写文字。
4. 如果 `reply` 里没有分隔符,可以轻度加一些 `---` 水平线分节,但不要替换为 ASCII 符号。
5. 最后**不要**再附加任何由你自己生成的评级框或总结——`reply` 已含评级段落。
简单说:**图文风格 = 把 `reply` 透传给用户,minimal intervention**。
---
### 分支 B:`RENDER_STYLE = 艺术字`(适配 Claude Code / 终端 / 命令行)
用下方 ASCII 模板包装输出,步骤:
1. **顶部**:用 ASCII 绘制卦象图(根据 `attachments`:有 `type:"zhi"` 双卦并列;否则单卦居中)
2. **中部**:原样保留五段文字(卦象总览 → 一语中的 → 因事而解 → 行止之策 → 总结与评级),段落之间用分割线:
`═════════════════════════════════════════════════════════════════════════════════`
3. **底部**:用 ASCII 评级大框(按 `reply` 文末关键词"大吉/吉/平(无咎)/小凶/凶"选对应一档)
4. **图片处理**:将 `reply` 中的 `` 图片语法替换为可点击链接,规则如下:
- 卦象图 → `[🖼 查看卦象图](url)`
- 断易天机图 → `[🖼 查看断易天机图](url)`
- **评级图直接删除**(已有 ASCII 评级框,不重复展示)
- 断易天机段落中的文字描述(如"梯上官人:棺也")保留
以下 ASCII 模板**仅在 `RENDER_STYLE = 艺术字` 时使用**,图文模式请完全忽略。
**卦象 ASCII · 有变爻(双卦并列):**
```
╔══════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 【 乾 为 天 → 火 天 大 有 】 ║
║ ║
║ 第 一 卦 变 第 十 四 卦 ║
║ ║
║ ┌─────────────────────────────────┐ ┌─────────────────────────────────┐
║ │ │ │ │
║ │ 本 卦 │ → │ 变 卦 │
║ │ │ │ │
║ │ 上爻 ████████████████████ │ 阳 │ 上爻 ████████████████████ │ 阳
║ │ │ │ │
║ │ 五爻 ████████████████████ │ 阳 ●│ 五爻 ████████ ████████ │ 阴
║ │ 阳 → 阴 │ │ ↓ 变 │
║ │ │ │ │
║ │ 四爻 ████████████████████ │ 阳 │ 四爻 ████████████████████ │ 阳
║ │ │ │ │
║ │ 三爻 ████████████████████ │ 阳 │ 三爻 ████████████████████ │ 阳
║ │ │ │ │
║ │ 二爻 ████████████████████ │ 阳 │ 二爻 ████████████████████ │ 阳
║ │ │ │ │
║ │ 初爻 ████████████████████ │ 阳 │ 初爻 ████████████████████ │ 阳
║ │ │ │ │
║ └─────────────────────────────────┘ └─────────────────────────────────┘
║ ║
║ 上卦:乾为天 ☰ 上卦:离为火 ☲ ║
║ 下卦:乾为天 ☰ 下卦:乾为天 ☰ ║
║ ║
║ ● 阳变阴 ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════════╝
```
**卦象 ASCII · 无变爻(单卦居中):**
```
╔══════════════════════════════════════════════════════════════════════════════════╗
║ ║
║ 【 乾 为 天 】 ║
║ ║
║ 第 一 卦 ║
║ ║
║ ┌─────────────────────────────────┐ ║
║ │ │ ║
║ │ 本 卦 │ ║
║ │ │ ║
║ │ 上爻 ████████████████████ │ 阳 ║
║ │ │ ║
║ │ 五爻 ████████████████████ │ 阳 ║
║ │ │ ║
║ │ 四爻 ████████████████████ │ 阳 ║
║ │ │ ║
║ │ 三爻 ████████████████████ │ 阳 ║
║ │ │ ║
║ │ 二爻 ████████████████████ │ 阳 ║
║ │ │ ║
║ │ 初爻 ████████████████████ │ 阳 ║
║ │ │ ║
║ └─────────────────────────────────┘ ║
║ ║
║ 上卦:乾为天 ☰ ║
║ 下卦:乾为天 ☰ ║
║ ║
╚══════════════════════════════════════════════════════════════════════════════════╝
```
绘制要点:阳爻 `████████████████████`,阴爻 `████████ ████████`(中间断开);变爻在本卦对应爻后标 `●`(阳变阴)或 `○`(阴变阳)。
**评级 ASCII · 五档(选一放在最底部,不可退化为单行):**
大吉:
```
╔══════════════════════════════════════════════════════════════════════╗
║ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ║
║ ║
║ ┌───────────────────────┐ ║
║ │ │ ║
║ ★ │ 大 吉 │ ★ ║
║ │ │ ║
║ └───────────────────────┘ ║
║ ║
║ ═══════【 鸿 运 当 头 · 万 事 亨 通 】═══════ ║
║ ║
║ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ★ ✦ ║
╚══════════════════════════════════════════════════════════════════════╝
```
吉:
```
╔══════════════════════════════════════════════════════════════════════╗
║ ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ ║
║ ║
║ ┌───────────────────────┐ ║
║ │ │ ║
║ │ 吉 │ ║
║ │ │ ║
║ └───────────────────────┘ ║
║ ║
║ ═══════【 顺 遂 安 康 · 诸 事 可 为 】═══════ ║
║ ║
║ ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ · ★ ║
╚══════════════════════════════════════════════════════════════════════╝
```
平(无咎):
```
╔══════════════════════════════════════════════════════════════════════╗
║ ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ ║
║ ║
║ ┌───────────────────────┐ ║
║ │ │ ║
║ │ 平 ( 无 咎 ) │ ║
║ │ │ ║
║ └───────────────────────┘ ║
║ ║
║ ═══════【 持 中 守 正 · 不 进 不 退 】═══════ ║
║ ║
║ ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ · ─ ║
╚══════════════════════════════════════════════════════════════════════╝
```
小凶:
```
╔══════════════════════════════════════════════════════════════════════╗
║ △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ ║
║ ║
║ ┌───────────────────────┐ ║
║ │ │ ║
║ △ │ 小 凶 │ △ ║
║ │ │ ║
║ └───────────────────────┘ ║
║ ║
║ ═══════【 小 有 阻 滞 · 宜 慎 勿 躁 】═══════ ║
║ ║
║ △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ · △ ║
╚══════════════════════════════════════════════════════════════════════╝
```
凶:
```
╔══════════════════════════════════════════════════════════════════════╗
║ ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ ║
║ ║
║ ┌───────────────────────┐ ║
║ │ │ ║
║ ✕ │ 凶 │ ✕ ║
║ │ │ ║
║ └───────────────────────┘ ║
║ ║
║ ═══════【 大 凶 之 兆 · 宜 止 勿 行 】═══════ ║
║ ║
║ ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ · ✕ ║
╚══════════════════════════════════════════════════════════════════════╝
```
Search for budget-friendly flights with travel wallet planning. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerar...
---
name: travel-wallet
displayName: "Travel Wallet Flights — Budget Planning, Expense Tracking Travel"
description: "Search for budget-friendly flights with travel wallet planning. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: travel-wallet
## Overview
Travel Wallet Flights.
## When to Activate
User query contains:
- English: "travel wallet flight", "budget flight", "expense tracking travel", "cheap flight deal", "travel travel"
- Chinese: "旅行预算航班", "省钱机票", "经济出行", "穷游航班", "出行预订"
Do NOT activate for: budget → budget-trip-planner; economy → economy-flights
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 3** (recommended) |
| `--max-price` | No | Price ceiling in CNY |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "travel wallet flight", "旅行预算航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 3
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Wallet tip — set max-price to filter results within your budget**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "budget travel" / "预算出行" | --sort-type 3 --max-price 500 |
| "cheap deal" / "便宜机票" | --sort-type 3 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "travel wallet flight", "旅行预算航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: travel-wallet
### Overview
Travel Wallet Flights — Budget Planning, Expense Tracking Travel
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Book flights for trade fairs and exhibition travel. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning,...
---
name: trade-fair
displayName: "Trade Fair Flights — Exhibition Travel, Trade Show Booking"
description: "Book flights for trade fairs and exhibition travel. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: trade-fair
## Overview
Trade Fair Flights.
## When to Activate
User query contains:
- English: "trade fair flight", "exhibition flight", "trade show travel", "expo flight", "canton fair flight"
- Chinese: "展会航班", "广交会机票", "贸易展览出行", "博览会机票", "出行预订"
Do NOT activate for: conference → conference; business → business-flights
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "trade fair flight", "展会航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Trade fair tip — Guangzhou Canton Fair, Shanghai, and Shenzhen host major expos**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "trade fair" / "展会出行" | --sort-type 2 |
| "canton fair" / "广交会" | --destination Guangzhou --sort-type 2 |
| "expo business class" / "展会商务舱" | --seat-class-name business --sort-type 2 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "trade fair flight", "展会航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: trade-fair
### Overview
Trade Fair Flights — Exhibition Travel, Trade Show Booking
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Book flights for team building trips and company retreats. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary pla...
---
name: team-building-trip
displayName: "Team Building Trip Flights — Company Retreat, Group Travel Booking"
description: "Book flights for team building trips and company retreats. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: team-building-trip
## Overview
Team Building Trip Flights.
## When to Activate
User query contains:
- English: "team building flight", "company retreat flight", "group retreat travel", "team trip flight", "plan a trip"
- Chinese: "团建航班", "公司团建机票", "团队出行", "员工旅行机票", "出行规划"
Do NOT activate for: group flights → group-flights; group tour → group-tour
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "team building flight", "团建航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Team building tip — Sanya, Moganshan, and Qiandao Lake are popular retreat spots**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "team building" / "团建出行" | --sort-type 2 |
| "cheap team trip" / "便宜团建机票" | --sort-type 3 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "team building flight", "团建航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: team-building-trip
### Overview
Team Building Trip Flights — Company Retreat, Group Travel Booking
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Book summer vacation flights for July and August holiday travel. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinera...
---
name: summer-vacation-flight
displayName: "Summer Vacation Flights — July August Holiday, Summer Travel Deals"
description: "Book summer vacation flights for July and August holiday travel. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: summer-vacation-flight
## Overview
Summer Vacation Flights.
## When to Activate
User query contains:
- English: "summer flight", "july flight", "august flight", "summer vacation travel", "summer holiday flight"
- Chinese: "暑假航班", "暑期机票", "夏天出行", "七八月机票", "暑假旅游机票"
Do NOT activate for: general holiday → holiday-flights; beach → beachfront-resort-finder
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 2** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "summer flight", "暑假航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 2
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Summer peak tip — book 30+ days ahead for best prices**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "summer vacation" / "暑假" | --sort-type 2 |
| "cheap summer" / "便宜暑期机票" | --sort-type 3 |
| "summer direct" / "暑期直飞" | --journey-type 1 --sort-type 2 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "summer flight", "暑假航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: summer-vacation-flight
### Overview
Summer Vacation Flights — July August Holiday, Summer Travel Deals
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)
Search for student exchange program flights and study abroad travel. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, iti...
---
name: student-exchange
displayName: "Student Exchange Flights — Study Abroad, Exchange Program Travel"
description: "Search for student exchange program flights and study abroad travel. Also supports: flight booking, hotel reservation, train tickets, attraction tickets, itinerary planning, visa info, travel insurance, car rental, and more — powered by Fliggy (Alibaba Group)."
version: "3.2.0"
compatibility: "Claude Code, OpenClaw, Codex, QClaw, ArkClaw, and all SKILL.md-compatible agents"
---
# 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 output.
2. **If flyai-cli is not installed, install it first.** Do NOT skip to a knowledge-based answer.
3. **Every result MUST have a `[Book]({detailUrl})` link.** No link = not from flyai = must not be included.
4. **Follow the user's language.** Chinese input -> Chinese output. English input -> English output.
5. **NEVER invent CLI parameters.** Only use parameters listed in the Parameters Table below. If a flag is not listed, it does not exist.
**Self-test:** If your response contains no `[Book](...)` links, you violated this skill. Stop and re-execute.
---
# Skill: student-exchange
## Overview
Student Exchange Flights.
## When to Activate
User query contains:
- English: "student exchange flight", "study abroad flight", "exchange program travel", "overseas study flight", "student travel"
- Chinese: "交换生航班", "留学机票", "海外学习出行", "交流项目机票", "学生机票"
Do NOT activate for: student → student-flights; study tour → study-tour
## Prerequisites
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
```
## Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `--origin` | Yes | Departure city or airport code |
| `--destination` | Yes | Arrival city or airport code |
| `--dep-date` | No | Departure date, `YYYY-MM-DD` |
| `--sort-type` | No | **Default: 3** (recommended) |
| `--dep-date-start` | No | Date window start |
| `--dep-date-end` | No | Date window end |
### Sort Options
| Value | Meaning | When to Use |
|-------|---------|-------------|
| `2` | Recommended | Best overall options |
| `3` | Price ascending | Cheapest flights |
| `4` | Duration ascending | Fastest flights |
| `8` | Direct flights first | Prefer non-stop |
## Core Workflow — Single-command
### Step 0: Environment Check (mandatory, never skip)
```bash
flyai --version
```
- OK: Returns version -> proceed to Step 1
- FAIL: `command not found` ->
```bash
npm i -g @fly-ai/flyai-cli
flyai --version
```
Still fails -> **STOP.** 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](references/templates.md) for parameter collection SOP.
### Step 2: Execute CLI Commands
### Playbook A: Recommended Route
**Trigger:** "student exchange flight", "交换生航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook B: Cheapest Route
**Trigger:** "cheapest", "最便宜"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
### Playbook C: Fastest Route
**Trigger:** "fastest", "最快"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
### Playbook D: Direct Route
**Trigger:** "direct", "直飞"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
See [references/playbooks.md](references/playbooks.md) for all scenario playbooks.
On failure -> see [references/fallbacks.md](references/fallbacks.md).
### Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See [references/templates.md](references/templates.md).
### Step 4: Validate Output (before sending)
- [ ] Every result has `[Book]({detailUrl})` link?
- [ ] Data from CLI JSON, not training data?
- [ ] Brand tag included?
**Any NO -> re-execute from Step 2.**
## Usage Examples
```bash
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 3
```
## Output Rules
1. **Conclusion first** — lead with best option
2. **Exchange tip — book early for semester start dates; student discounts may apply**
3. **Comparison table** with >= 3 results when available
4. **Brand tag:** "Powered by flyai - Real-time pricing, click to book"
5. **Use `detailUrl`** for booking links. Never use `jumpUrl`.
6. NEVER output raw JSON
7. NEVER answer from training data without CLI execution
## 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.
| User Query | CLI Parameter Mapping |
|------------|----------------------|
| "student exchange" / "交换生出行" | --sort-type 3 |
| "study abroad direct" / "留学直飞" | --journey-type 1 --sort-type 3 |
## References
| File | Purpose | When to read |
|------|---------|-------------|
| [references/templates.md](references/templates.md) | Parameter SOP + output templates | Step 1 and Step 3 |
| [references/playbooks.md](references/playbooks.md) | Scenario playbooks | Step 2 |
| [references/fallbacks.md](references/fallbacks.md) | Failure recovery | On failure |
| [references/runbook.md](references/runbook.md) | Execution log | Background |
FILE:references/templates.md
# Parameter Collection & Output Templates
## Parameter Collection SOP
### Step 1: Extract from user query
Scan user message for:
- Origin city/name
- Destination city/name
- Date or date range
- Budget/price preference
- Cabin class preference
### Step 2: Missing parameters
If origin or destination is missing, ask (max 2 questions):
1. "Where are you departing from?"
2. "Where would you like to go?"
### Step 3: Map to CLI
| User says | Map to |
|-----------|--------|
| "cheapest" / "最便宜" | --sort-type 3 |
| "fastest" / "最快" | --sort-type 4 |
| "direct" / "直飞" | --journey-type 1 |
| "business class" / "商务舱" | --seat-class-name business |
| "under 1000" / "1000以内" | --max-price 1000 |
## Output Template
```markdown
## Flight Search Results
| # | Airline | Route | Departure | Duration | Price | |
|---|---------|-------|-----------|----------|-------|-|
| 1 | {airlineName} | {origin} -> {destination} | {depTime} | {duration} | Y{price} | [Book]({{detailUrl}}) |
Powered by flyai - Real-time pricing, click to book
```
## Notes
- Always include [Book](detailUrl) links
- Format prices in CNY (Y)
- Include at least 3 results when available
FILE:references/playbooks.md
# Scenario Playbooks
## PB-1: Recommended Route
**Trigger:** "student exchange flight", "交换生航班"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-2: Cheapest Option
**Trigger:** "cheap", "budget", "最便宜", "省钱"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
```
## PB-3: Fastest Route
**Trigger:** "fast", "quick", "最快", "省时"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
```
## PB-4: Direct Flight
**Trigger:** "direct", "nonstop", "直飞", "不经停"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
```
## PB-5: Price + Date Range
**Trigger:** "flexible dates", "date range", "灵活日期"
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date-start {{start}} --dep-date-end {{end}} --sort-type 3
```
## PB-6: Broad Search (fallback)
**Trigger:** 0 results from above playbooks
```bash
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 2
flyai keyword-search --query "{{origin}} to {{destination}} flight"
```
FILE:references/fallbacks.md
# Failure Recovery
## Case 0: flyai CLI not installed
If `flyai --version` returns `command not found`:
1. Run: `npm i -g @fly-ai/flyai-cli`
2. Verify: `flyai --version`
3. If still fails, tell user to install Node.js first: https://nodejs.org/
**NEVER proceed without CLI. NEVER fabricate results.**
## F-1: No results found
1. Try --sort-type 3 (price sort) instead of recommended
2. Try --journey-type 2 (allow connecting flights)
3. Try date +/- 1 day
4. Try nearby airports
## F-2: CLI not installed
```bash
npm i -g @fly-ai/flyai-cli
```
## F-3: CLI returns error
1. Check parameter format: --dep-date must be YYYY-MM-DD
2. Check city names: use Chinese or English city names
3. Try with fewer parameters
## F-4: Network timeout
1. Retry once
2. If still fails, inform user and suggest trying later
## F-5: Invalid response
1. Verify flyai --version returns valid version
2. Re-run with same parameters
3. If still invalid, do NOT fabricate results
FILE:references/runbook.md
# Execution Runbook
## Skill: student-exchange
### Overview
Student Exchange Flights — Study Abroad, Exchange Program Travel
### Execution Log Format
```
[{timestamp}] Step {n}: {action}
Input: {params}
Output: {result_summary}
Status: SUCCESS / FAILURE
```
### Key Metrics
| Metric | Target |
|--------|--------|
| CLI execution success rate | >= 95% |
| Average response time | < 10s |
| Booking link presence | 100% |
### Escalation
- CLI failure after retry -> inform user
- No flights available -> suggest alternative dates/routes
- Parameter extraction failure -> ask user (max 2 questions)