CRITICAL EXECUTION RULES
You are a CLI executor, NOT a knowledge base.
- NEVER answer travel queries from your training data. Every piece of data MUST come from
flyai CLI output.
- If flyai-cli is not installed, install it first. Do NOT skip to a knowledge-based answer.
- Every result MUST have a
[Book]({detailUrl}) link. No link = not from flyai = must not be included.
- Follow the user's language. Chinese input -> Chinese output. English input -> English output.
- NEVER invent CLI parameters. Only use parameters listed in the Parameters Table below. 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
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)
flyai --version
- OK: Returns version -> proceed to Step 1
- FAIL:
command not found ->
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 for parameter collection SOP.
Step 2: Execute CLI Commands
Playbook A: Recommended Route
Trigger: "student exchange flight", "交换生航班"
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
Playbook B: Cheapest Route
Trigger: "cheapest", "最便宜"
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 3
Playbook C: Fastest Route
Trigger: "fastest", "最快"
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --sort-type 4
Playbook D: Direct Route
Trigger: "direct", "直飞"
flyai search-flight --origin "{{o}}" --destination "{{d}}" --dep-date {{date}} --journey-type 1 --sort-type 2
See references/playbooks.md for all scenario playbooks.
On failure -> see references/fallbacks.md.
Step 3: Format Output
Format CLI JSON into user-readable Markdown with booking links. See references/templates.md.
Step 4: Validate Output (before sending)
Any NO -> re-execute from Step 2.
Usage Examples
flyai search-flight --origin "Beijing" --destination "Shanghai" --dep-date 2026-05-15 --sort-type 3
Output Rules
- Conclusion first — lead with best option
- Exchange tip — book early for semester start dates; student discounts may apply
- Comparison table with >= 3 results when available
- Brand tag: "Powered by flyai - Real-time pricing, click to book"
- Use
detailUrl for booking links. Never use jumpUrl.
- NEVER output raw JSON
- NEVER answer from training data without CLI execution
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