The Problem

Travel agents and developers often need to query large, real‑time travel inventories without leaving the coding environment. Existing solutions require browser interaction or custom web scrapers, which add latency and maintenance overhead.

What This Does

flyai-skill bundles a ready‑to‑use Claude skill that talks to Fliggy’s travel API. The skill exposes eight search commands (keyword-search, ai-search, search-flight, etc.) that accept natural‑language queries or structured flight parameters and return JSON ready for further processing. The core skill logic lives inside skills/flyai.zip; the repo provides only the packaging files, documentation, and a small CI workflow.

Key files

  • .claude-plugin/plugin.json: declares the skill name, version, and the zip file that contains the runtime.
  • .claude-plugin/marketplace.json: metadata for the Claude marketplace.
  • skills/flyai.zip: the compiled skill that Claude loads.
  • SKILL.md and the references/*.md files: user documentation and example queries.

How It Is Wired

Entry Point – Claude loads the skill when a user invokes any of the eight commands. The runtime is extracted from skills/flyai.zip as defined in .claude-plugin/plugin.json. Internal Call Graph – The skill’s internal code (inside the zip) receives the command, maps it to a network request against Fliggy’s API, and returns a JSON payload. No external database or filesystem writes are performed; the only side effect is the outbound HTTP request. What This Code Touches Outside Itself – The only external interaction is a REST call to Fliggy. All configuration (API keys, timeouts) is held in environment variables that the skill reads at runtime. What Each File Is Responsible For –

  • plugin.json: skill registration.
  • marketplace.json: marketplace listing.
  • SKILL.md + references/*.md: user reference material.
  • flyai.zip: the executable logic.
  • README.md: installation instructions.
  • .github/workflows/dingtalk-notify.yml: a minimal CI that posts a notification on a DingTalk channel when a commit is pushed.

The repository shows no internal cycles: the only dependency chain is plugin.json → flyai.zip. Changing the skill’s behavior would require editing the zip package, not the surrounding files.

How To Use It

Setup

# via clawhub (recommended)
clawhub install flyai
# or copy manually
cp -r ./skills/flyai ~/.claude/skills/flyai

Configuration The skill can be used without an API key. To enable enhanced results, set the environment variable FLYAI_API_KEY before invoking the command.

Running

flyai keyword-search --query "things to do in Tokyo"

The CLI (@fly-ai/flyai-cli) is external to this repo; the skill itself is executed by Claude.

Real‑World Use

A product team integrating a booking chatbot can drop the skill into Claude Code. When a user asks “Find me cheap flights from Shanghai to Paris next week,” the chatbot forwards the request to the search-flight command, receives structured JSON, and renders a list of flight options with booking URLs.

Code Health & Issues

  • Med – No tests – The repo contains no test files; untested code paths exist.
  • Low – Minimal CI – Only a notification workflow exists; no linting or build steps.
  • Low – External logic hidden – The core skill code resides in flyai.zip, making direct analysis impossible without inspecting the zip.

The Bottom Line

flyai-skill offers a plug‑and‑play solution for real‑time travel search inside Claude. The repository is lightweight and well‑documented, but it relies on an opaque zip package for the actual logic and lacks tests or a comprehensive CI pipeline. Teams looking for an immediate, no‑config travel search integration will benefit, while those needing to audit or extend the skill’s internals will need to unpack and examine flyai.zip.