mikkelkrogsholm/skills · Archived

rejseplanen

Make sure to use this skill whenever the user asks about public transport in Denmark, train schedules, bus times, metro departures, journey planning between Danish cities, or travel routes using Danish public transport — even if they just ask how to get from one place to another in Denmark without naming Rejseplanen specifically. Also use this skill when the user asks about departures or arrivals at a Danish station, next train/bus/metro from a stop, or wants to look up a Danish transit stop or…

First seen Apr 5, 2026

Installation

$ npx skills add mikkelkrogsholm/skills --skill rejseplanen

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Also in this package

Other skills from mikkelkrogsholm/skills · top by installs.

npx skills add mikkelkrogsholm/skills

Browse all from mikkelkrogsholm/skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 64
License LICENSE
Default branch main
Open issues 32
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Version1.0.0
Allowed toolsBash(bun run skills/rejseplanen/cli/src/cli.ts *)

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 10,996 B
  • docs SUMMARY.md 1,135 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Rejseplanen Public Transport Skill

Plan journeys, check departures/arrivals, and search for stops/stations across all Danish public transport (trains, buses, metro, light rail) via the Rejseplanen API. Requires an API access ID — users must set the REJSEPLANENACCESSID environment variable.

Setup

How to obtain REJSEPLANENACCESSID

  1. Go to the Rejseplanen API access page
  2. Fill out the request form with your name, email, and a brief description of your use case
  3. Rejseplanen will email you an access ID (typically within a few business days)
  4. Set it as an environment variable:
export REJSEPLANEN_ACCESS_ID=your_access_id_here

To make it permanent, add the export line to your shell profile (~/.bashrc, ~/.zshrc, etc.).

If REJSEPLANENACCESSID is not set, the CLI will exit with a clear error message.

When to use this skill

Invoke this skill when the user wants to:

  • Plan a journey between two locations in Denmark (e.g., "How do I get from Aarhus to Copenhagen?")
  • Check ticket prices / fares for a journey (included by default in trip output)
  • Check upcoming departures from a Danish stop/station
  • Check upcoming arrivals at a Danish stop/station
  • Search for a stop or station by name
  • Look up train, bus, metro, or light rail schedules in Denmark
  • Check service disruptions, delays, or travel alerts
  • Find nearby stops/stations by coordinates
  • Check real-time delay information for departures/arrivals
  • Check bike or wheelchair accessibility for a journey

Commands

Search for stops/stations

bun run skills/rejseplanen/cli/src/cli.ts location --query <name> [flags]

Key flags:

  • --query <name> — Search string (required)
  • --max <n> — Max results (default: 10)
  • --type <S|A|P|ALL> — Filter by type: S=stop, A=address, P=POI, ALL=all (default: ALL)
  • --format json|table|plain

Plan a trip

bun run skills/rejseplanen/cli/src/cli.ts trip --origin <id-or-name> --destination <id-or-name> [flags]

Key flags:

  • --origin <id-or-name> — Origin stop ID or name (required)
  • --destination <id-or-name> — Destination stop ID or name (required)
  • --date <YYYY-MM-DD> — Travel date (default: today)
  • --time <HH:MM> — Travel time (default: now)
  • --arrive-by — Search for arrival time instead of departure
  • --results <n> — Number of trip results, 1-6 (default: 5)
  • --no-fares — Exclude fare/pricing (fares included by default)
  • --via <id-or-name> — Via stop ID or name
  • --stops — Show intermediate stops for each leg
  • --scroll <token> — Scroll token for pagination (use scrollEarlier/scrollLater from output)
  • --format json|table|plain

Check departures from a stop

bun run skills/rejseplanen/cli/src/cli.ts departures --stop <id> [flags]

Key flags:

  • --stop <id> — Stop ID from location search (required)
  • --date <YYYY-MM-DD> — Date (default: today)
  • --time <HH:MM> — Time (default: now)
  • --duration <minutes> — Time window in minutes, 0-1439 (default: 60)
  • --max <n> — Max results (default: 20)
  • --format json|table|plain

Check arrivals at a stop

bun run skills/rejseplanen/cli/src/cli.ts arrivals --stop <id> [flags]

Same flags as departures.

Find nearby stops

bun run skills/rejseplanen/cli/src/cli.ts nearby --lat <latitude> --lon <longitude> [flags]

Key flags:

  • --lat <n> — Latitude (required)
  • --lon <n> — Longitude (required)
  • --radius <meters> — Search radius (default: 1000)
  • --max <n> — Max results (default: 10)
  • --format json|table|plain

Check service disruptions

bun run skills/rejseplanen/cli/src/cli.ts disruptions [flags]

Key flags:

  • --stop <id> — Filter by stop ID
  • --line <name> — Filter by line
  • --date <YYYY-MM-DD> — Date (default: today)
  • --time <HH:MM> — Time (default: now)
  • --max <n> — Max results (default: 20)
  • --format json|table|plain

Natural workflow: location -> trip / departures / arrivals / nearby / disruptions

  1. Use location to find a stop and get its ID, or use nearby to find stops near coordinates
  2. Use trip to plan a journey between two stops (fares included by default)
  3. Use departures/arrivals to check schedules and real-time delays
  4. Use disruptions to check for service alerts before traveling
# Step 1: find stop IDs
bun run skills/rejseplanen/cli/src/cli.ts location --query "København H"
bun run skills/rejseplanen/cli/src/cli.ts location --query "Aarhus H"

# Step 1 (alt): find nearby stops by coordinates
bun run skills/rejseplanen/cli/src/cli.ts nearby --lat 55.6727 --lon 12.5655

# Step 2: plan a trip (fares included by default)
bun run skills/rejseplanen/cli/src/cli.ts trip --origin "8600626" --destination "8600079"

# Step 3: check departures
bun run skills/rejseplanen/cli/src/cli.ts departures --stop "8600626"

# Step 4: check disruptions
bun run skills/rejseplanen/cli/src/cli.ts disruptions

Usage examples

Find a station

bun run skills/rejseplanen/cli/src/cli.ts location --query "Nørreport"

Plan a trip from Copenhagen to Aarhus

bun run skills/rejseplanen/cli/src/cli.ts trip --origin "København H" --destination "Aarhus H" --date 2026-03-20 --time 08:00

Next departures from København H

bun run skills/rejseplanen/cli/src/cli.ts departures --stop "8600626" --duration 30

Arrivals at Odense in table format

bun run skills/rejseplanen/cli/src/cli.ts arrivals --stop "8600067" --format table

Find stops near a location

bun run skills/rejseplanen/cli/src/cli.ts nearby --lat 55.6727 --lon 12.5655 --radius 500

Check current disruptions

bun run skills/rejseplanen/cli/src/cli.ts disruptions

Trip with intermediate stops via Odense

bun run skills/rejseplanen/cli/src/cli.ts trip --origin "København H" --destination "Aarhus H" --via "Odense" --stops

JSON output shapes

location output

{
  "type": "rejseplanen_location",
  "query": "København",
  "locations": [
    {
      "id": "8600626",
      "name": "København H",
      "lat": 55.672778,
      "lon": 12.564444,
      "type": "ST"
    }
  ],
  "count": 1
}

trip output

{
  "type": "rejseplanen_trip",
  "origin": "København H",
  "destination": "Aarhus H",
  "date": "2026-03-20",
  "time": "08:00",
  "via": "Odense",
  "scrollEarlier": "token...",
  "scrollLater": "token...",
  "trips": [
    {
      "origin": "København H",
      "destination": "Aarhus H",
      "departure": "08:12",
      "arrival": "11:23",
      "duration": "3:11",
      "changes": 0,
      "legs": [
        {
          "name": "IC 123",
          "type": "IC",
          "origin": "København H",
          "destination": "Aarhus H",
          "departure": "08:12",
          "arrival": "11:23",
          "track": "7",
          "direction": "Aarhus H",
          "cancelled": false,
          "rtDeparture": null,
          "rtArrival": null,
          "delayed": true,
          "delayMinutes": 5,
          "notes": [{"type": "bike", "text": "Cykel reservation påkrævet"}],
          "stops": [{"name": "Høje Taastrup St.", "arrival": "08:27", "departure": "08:28"}]
        }
      ]
    }
  ],
  "tripCount": 1
}

departures output

{
  "type": "rejseplanen_departures",
  "stop": "8600626",
  "date": "2026-03-20",
  "time": "08:00",
  "departures": [
    {
      "name": "IC 123",
      "line": "IC",
      "direction": "Aarhus H",
      "date": "2026-03-20",
      "time": "08:12",
      "rtDate": null,
      "rtTime": null,
      "track": "7",
      "cancelled": false,
      "stopId": "8600626",
      "delayed": true,
      "delayMinutes": 5,
      "notes": [{"type": "bike", "text": "Cykel reservation påkrævet"}]
    }
  ],
  "count": 1
}

arrivals output

{
  "type": "rejseplanen_arrivals",
  "stop": "8600626",
  "date": "2026-03-20",
  "time": "08:00",
  "arrivals": [
    {
      "name": "IC 456",
      "line": "IC",
      "origin": "Aarhus H",
      "date": "2026-03-20",
      "time": "11:23",
      "rtDate": null,
      "rtTime": null,
      "track": "7",
      "cancelled": false,
      "stopId": "8600626",
      "delayed": true,
      "delayMinutes": 5,
      "notes": [{"type": "bike", "text": "Cykel reservation påkrævet"}]
    }
  ],
  "count": 1
}

nearby output

{
  "type": "rejseplanen_nearby",
  "lat": 55.672736,
  "lon": 12.565558,
  "radius": 1000,
  "stops": [
    {
      "id": "8600626",
      "name": "København H",
      "lat": 55.672736,
      "lon": 12.565558,
      "dist": 120,
      "type": "ST"
    }
  ],
  "count": 1
}

disruptions output

{
  "type": "rejseplanen_disruptions",
  "date": "2026-03-18",
  "disruptions": [
    {
      "id": "HIM_123",
      "subject": "Sporarbejde København H - Ringsted",
      "message": "Full disruption text...",
      "priority": 2,
      "startDate": "2026-03-18",
      "startTime": "04:00",
      "endDate": "2026-03-20",
      "endTime": "23:59",
      "affectedStops": ["København H", "Ringsted St."],
      "affectedLines": ["IC", "Re"]
    }
  ],
  "count": 1
}

Output formats

Format Best for
json Default — programmatic use, full data
table Quick human-readable overview
plain Easy reading of individual items

All errors are written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.