Skill: palexu/festival-flight (version 3.2.0)

--- name: festival-flight displayName: "Festival Flights — Holiday Festival, Cultural Event, Seasonal Celebration Travel" description: "Book flights for holiday festivals, cultural events, and seasonal celebrations with flexible date ranges. 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: festival-flight ## Overview Festival and holiday flights — cultural events, seasonal celebrations, festival travel. For travelers heading to festivals and holiday celebrations. ## When to Activate User query contains: - English: "festival flight", "holiday festival travel", "cultural event flight", "celebration flight", "spring festival flight" - Chinese: "节日航班", "春节机票", "节日出行", "庆典航班", "文化节机票" Do NOT activate for: holiday flights (general) → `holiday-flights`; seasonal flights → `seasonal-flight` ## 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) | | `--journey-type` | No | 1=direct, 2=connecting | | `--max-price` | No | Price ceiling in CNY | | `--dep-date-start` | No | Festival date window start | | `--dep-date-end` | No | Festival date window end | ## Core Workflow — Single-command ### Step 0: Environment Check (mandatory, never skip) ```bash flyai --version ``` ### 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: Festival Season Search **Trigger:** "festival flight", "节日航班" ```bash flyai search-flight --origin "{o}" --destination "{d}" --dep-date-start {start} --dep-date-end {end} --sort-type 2 ``` ### Playbook B: Specific Festival Date **Trigger:** "spring festival flight", "春节机票" ```bash flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --sort-type 2 ``` ### Playbook C: Budget Festival Travel **Trigger:** "cheapest festival flight", "节日特价机票" ```bash flyai search-flight --origin "{o}" --destination "{d}" --dep-date-start {start} --dep-date-end {end} --sort-type 3 ``` ### 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} festival holiday 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 "Guangzhou" --destination "Changsha" --dep-date-start 2026-01-25 --dep-date-end 2026-02-05 --sort-type 2 ``` ## Output Rules 1. **Conclusion first** — lead with recommended option 2. **Festival tip** — note peak travel periods and booking deadlines 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 | |------------|----------------------| | "festival flight" / "节日航班" | `--sort-type 2` | | "spring festival" / "春节" | `--dep-date-start {Jan-20} --dep-date-end {Feb-10} --sort-type 2` | | "mid-autumn" / "中秋节" | `--dep-date-start {Sep-15} --dep-date-end {Sep-20} --sort-type 2` | | "budget festival" / "节日特价" | `--sort-type 3` | Peak festival periods: Spring Festival (Jan-Feb), Mid-Autumn (Sep), National Day (Oct 1-7). ## 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 |

path: references/templates.md
content: # Templates — festival-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: festival date range
Missing sort-type → Default: 2 (recommended)
Missing journey-type → Default: any (1 or 2)
```

### Rules
- ❌ Never ask more than 2 questions at once
- ✅ Suggest popular festival destinations: "热门节日出行：春节返乡、中秋团圆、国庆出游"
- ✅ Note: "节日出行高峰，建议提前预订"

---

## 2. Internal State (not shown to user)

```json
{
  "skill": "festival-flight",
  "params": { "origin": "", "destination": "", "dep_date": "", "sort_type": "2" },
  "state": "collecting | executing | formatting | validating",
  "retry_count": 0
}
```

---

## 3. Output Templates

### 3.1 Standard Result

```markdown
## ✈️ Festival Flights: {origin} → {destination}

**Recommended: {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}) |

🎉 **Festival Tip:** 节日出行高峰，建议尽早预订！

---
✈️ Powered by flyai · Real-time pricing, click to book
```

### 3.2 No Results

```markdown
## ✈️ Festival Flights: {origin} → {destination}

No flights found for selected dates.

**Suggestions:**
1. Try flexible dates around the festival
2. Consider connecting flights
3. Check nearby airports
```

### 3.3 CLI Failed

```markdown
## ✈️ Festival 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`
```


path: references/playbooks.md
content: # Playbooks — festival-flight

> Scenario-specific CLI command templates.

---

## Playbook A: Festival Season Search

**Trigger:** "festival flight", "节日航班", "节日出行"

```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date-start {start} --dep-date-end {end} --sort-type 2
```

**Fallback if 0 results:** Try `--sort-type 3` for cheapest options.

---

## Playbook B: Specific Festival Date

**Trigger:** "spring festival flight", "春节机票", "中秋节航班"

```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date {date} --sort-type 2
```

**Fallback if 0 results:** Try ±3 days around the date.

---

## Playbook C: Budget Festival Travel

**Trigger:** "cheapest festival flight", "节日特价机票"

```bash
flyai search-flight --origin "{o}" --destination "{d}" --dep-date-start {start} --dep-date-end {end} --sort-type 3
```

**Fallback if 0 results:** Try `--sort-type 2` for recommended options.

---

## 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} festival holiday flights"
```


path: references/fallbacks.md
content: # Fallbacks — festival-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-01-25
```

---

## 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.


path: references/runbook.md
content: # Runbook — festival-flight

> Execution log schema for debugging and auditing.

---

## Log Entry Schema

```json
{
  "timestamp": "2026-04-14T10:30:00Z",
  "skill": "festival-flight",
  "playbook": "A",
  "trigger_phrase": "festival flight",
  "params": {
    "origin": "Guangzhou",
    "destination": "Changsha",
    "dep_date_start": "2026-01-25",
    "dep_date_end": "2026-02-05",
    "sort_type": "2"
  },
  "cli_command": "flyai search-flight --origin 'Guangzhou' --destination 'Changsha' --dep-date-start 2026-01-25 --dep-date-end 2026-02-05 --sort-type 2",
  "result_count": 5,
  "status": "success",
  "error": null,
  "retry_count": 0,
  "duration_ms": 2400
}
```

## 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


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)