New:Introducing Socket Scanning for VS Code Marketplace Extensions.Learn more →
Get Started

@buildingopen/openbird

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@buildingopen/openbird

Claude Code skills and MCP context for EU air passenger rights claims (EC 261/2004)

latest
Source
npmnpm
Version
0.1.0
Version published
Maintainers
1
Created
Source

openbird

npm version PyPI version License: MIT

EU flight cancellation compensation tool for Claude Code. Gives Claude the legal context to help you claim under EC 261/2004 — analyze airline rejection letters, draft claim letters with proper article citations, and file binding complaints with AESA or ECC-Net Germany.

Built from a real case where an airline rejected a valid €600 claim with an incorrect legal argument — and the passenger won by knowing exactly which counter-arguments to use.

Table of Contents

What this does

Airlines reject valid EC 261/2004 claims more often than they should — usually by misapplying the law. This repo gives Claude Code enough legal precision to:

  • Analyze a rejection letter and identify whether the airline's legal argument is correct or wrong
  • Draft claim letters with the right article citations (Art. 5 cancellation vs Art. 6 delay, Art. 7 compensation amounts, Art. 9 care costs)
  • File with enforcement authorities — AESA (Spain, binding ADR), ECC-Net Germany, or your national body
  • Counter bad arguments — the six most common airline rejections and how to defeat each one

Quick start

# Option 1: npx (no install)
npx openbird install
cd your-project && claude

# Option 2: Clone directly
git clone https://github.com/buildingopen/openbird
cd openbird && claude

Then use the slash commands in Claude Code:

CommandWhat it does
/analyze-rejectionPaste in a rejection letter; Claude identifies if the airline is legally wrong and why
/file-claimGuides you through drafting an EC 261/2004 claim with correct article citations
/escalateHelps you file with AESA (binding), ECC-Net Germany, or other enforcement bodies

Skills

/analyze-rejection — EC 261 airline rejection analyzer

Paste in an airline rejection letter. Claude will:

  • Classify the disruption (cancellation under Art. 5 vs. delay under Art. 6 — this distinction is usually the entire case)
  • Evaluate each airline argument against the regulation text
  • Give a clear VALID / INVALID / PARTIALLY VALID verdict
  • Recommend next steps with specific article citations

Common airline rejections this skill defeats:

  • "You arrived earlier, so no compensation" (only valid for Art. 6 delays, not Art. 5 cancellations)
  • "Extraordinary circumstances" invoked to deny Art. 9 care costs (never valid for care)
  • "File with the operating carrier" (Art. 13 puts liability on the marketing carrier)

/file-claim — EC 261/2004 claim letter drafter

Guides you through building a formal claim letter that:

  • Cites the correct articles
  • Calculates the right compensation amount (€250/€400/€600 based on route distance)
  • Itemizes Art. 9 care costs separately from Art. 7 statutory compensation
  • Sets a 14-day deadline and names the authority you'll escalate to

/escalate — AESA / ECC-Net complaint assistant

Determines the right enforcement authority and prepares the filing:

  • AESA (Spain) for Spanish carriers (LEVEL, Vueling, Iberia, Air Europa) — binding ADR02 procedure
  • ECC-Net Germany for Germany-based claimants — free cross-border mediation
  • Parallel filing strategy to maximize pressure on the airline

What you can claim

Under EC Regulation 261/2004 (cancellations and significant delays):

RouteCompensation per passenger
Flights ≤1,500 km€250
Intra-EU flights >1,500 km€400
Non-EU flights 1,500–3,500 km€400
All other flights (intercontinental, >3,500 km)€600

Plus Art. 9 care costs (hotel, meals, transport) owed regardless of the cause of disruption — including when the airline claims extraordinary circumstances.

The case this was built from

Real case:

  • Route: Berlin BER → Barcelona BCN → San Francisco SFO (marketed by LEVEL, operated by Vueling on first leg)
  • Disruption: First leg cancelled/rerouted, placed on a flight from a different airport departing 8.5 hours earlier
  • Airline's rejection: "You arrived earlier, so no compensation"
  • Why that's wrong: The "earlier arrival" exemption (Art. 5(1)(c)(iii)) only defeats Art. 6 delay claims. It does not defeat an Art. 5 cancellation claim. A rerouting that departs from a different airport 8.5 hours before the original flight is not a minor change — it is a cancellation and rebooking.
  • Amount claimed: €600 statutory compensation + documented care costs (hotel, meal, non-refundable accommodation)
  • Filed with: AESA (Spain, binding ADR), ECC-Net Germany

File structure

openbird/
├── README.md                   # This file
├── CLAUDE.md                   # Legal context for Claude Code
├── LICENSE                     # MIT
├── package.json                # npm package
├── pyproject.toml              # PyPI package
├── index.js                    # Node.js module
├── bin/
│   └── openbird.js             # CLI entry point
├── openbird/
│   ├── __init__.py             # Python package
│   └── cli.py                  # Python CLI
├── skills/
│   ├── analyze-rejection.md    # /analyze-rejection skill
│   ├── file-claim.md           # /file-claim skill
│   └── escalate.md             # /escalate skill
├── guides/
│   ├── your-rights.md          # What EC 261/2004 actually says
│   ├── aesa.md                 # How to file with Spain's AESA
│   ├── eccnet.md               # How to file with ECC-Net Germany
│   └── counter-arguments.md    # Common airline rejections and how to defeat them
└── templates/
    ├── initial-claim.md        # First letter to the airline
    ├── escalation-notice.md    # Final notice before regulatory escalation
    └── aesa-complaint.md       # AESA ADR02 complaint text

Install as npm or PyPI package

npm

# Use without installing
npx openbird install

# Or install globally
npm install -g openbird
openbird install

PyPI

pip install openbird
openbird install

Both install commands copy the skills to .claude/skills/ in your current directory so Claude Code picks them up automatically.

Disclaimer

This is not legal advice. It is practical information about a regulation that applies across the EU. The legal positions described here are drawn from the text of EC 261/2004 and from a real case — not from a lawyer. If your claim is complex or large, consult a solicitor or use a no-win-no-fee claims service.

That said: airlines routinely reject valid claims hoping passengers won't push back. The information here is accurate enough to push back effectively.

Contributing

If you've won an EC 261/2004 case with an argument or authority not covered here, open a PR. Real, won cases are the most valuable content.

Keywords

ec261

FAQs

Package last updated on 21 Apr 2026

Related posts