Agent skill

Elron

by joe-bell in joe-bell/skills

Look up Elron train times, fares and connections between Estonian (and cross-border Latvian) stations, see live delays and positions of running trains on a map, and check Ühiskaart farecard…

MITAuto-check passed

Install Elron

skills CLI
$ npx skills add joe-bell/skills --skill elron -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install joe-bell/skills elron --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/joe-bell/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/elron .claude/skills/elron && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
elron
GitHub stars
211
Token cost
~2.1k tokens
SKILL.md length
1,216 words
Files
4 (incl. scripts, references)
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Look up Elron train times, fares and connections between Estonian (and cross-border Latvian) stations, see live delays and positions of running trains on a map, and check Ühiskaart farecard…

  • Works in 5 steps: Home station and farecards → Answering questions → Live map → …
  • Someone asks about trains in Estonia
  • SKILL.md covers 1. Home station and farecards, 2. Answering questions, 3. Live map and 4. Limits, plus 1 more section
  • Runs Python scripts from its folder; calls python3

What it does

Elron is an agent skill from joe-bell/skills. Look up Elron train times, fares and connections between Estonian (and cross-border Latvian) stations, see live delays and positions of running trains on a map, and check Ühiskaart farecard balances, remembering the user's home station and cards. Use when someone asks about trains in Estonia, Elron departures, the next or last train to or from a station, whether a train is late or where it is, which trains will pass through a station, ticket prices, or the balance on their Elron or Ühiskaart card.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including scripts and reference files (for example `references/maintenance.md`, `references/sources.md` and `scripts/elron.py`).

The repository describes itself as: Skills for me (and you). The licence is MIT.

When your agent uses it

  • Someone asks about trains in Estonia
  • Elron departures
  • Whether a train is late
  • Which trains will pass through a station

Example prompts

  • “/elron”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Home station and farecards
  2. Answering questions
  3. Live map
  4. Limits
  5. If a request fails

What it can do on your machine

Read from SKILL.md and the folder at commit 2eb6b5d. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Elron loads about 2.1k tokens when it runs, and up to ~4.3k if it reads all its reference files. Until then it costs about 127 tokens; SKILL.md has 1,216 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~127
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from joe-bell/skills at commit 2eb6b5d, republished under its MIT licence (© joe-bell). 1,216 words, ~2,131 tokens.

Download SKILL.mdSave it as .claude/skills/elron/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
elron
description
Look up Elron train times, fares and connections between Estonian (and cross-border Latvian) stations, see live delays and positions of running trains on a map, and check Ühiskaart farecard balances, remembering the user's home station and cards. Use when someone asks about trains in Estonia, Elron departures, the next or last train to or from a station, whether a train is late or where it is, which trains will pass through a station, ticket prices, or the balance on their Elron or Ühiskaart card.
metadata.source
hand-maintained by Joe Bell; derived from the public Ridango API behind elron.ee and elron.ee's live map feed
metadata.reviewed
2026-10-03 against api.ridango.com and elron.ee/map_data.json
metadata.upstream
https://github.com/joe-bell/skills/tree/main/skills/elron
metadata.version
2026-10-02.5

Elron

Elron runs Estonia's passenger trains. Timetables, fares and farecard balances come from the public Ridango API at api.ridango.com; live running data comes from the feed behind the live map on elron.ee. Neither needs a login.

Use the bundled script rather than calling either source by hand. It resolves stop names, sends requests in the shape the API expects, remembers the user's settings and prints compact results. It needs Python 3.9+ and nothing else.

sh
python3 scripts/elron.py stops [QUERY]
python3 scripts/elron.py trips [FROM] TO [--date YYYY-MM-DD] [--all] [--connections]
python3 scripts/elron.py live [QUERY] [--map [PATH]] [--tiles] [--watch [SECONDS]]
python3 scripts/elron.py passing STATION
python3 scripts/elron.py balance [CARD_NUMBER]
python3 scripts/elron.py config [--home STOP] [--add-card N] [--remove-card N] [--clear]

Run it from this skill's directory, or pass the script's full path.

1. Home station and farecards

The skill ships with no station and no card. Learn them from the user, once.

  • Home station. When the user asks about a train without saying where from ("when's the next train to Tartu?"), run trips TO. If it reports that no home station is saved, ask which station they usually travel from, save it with config --home STOP, then answer. From then on trips TO starts there. If they name a different origin, pass both stops and leave the saved one alone unless they ask.
  • Farecards. When the user asks for their balance without giving a number, run balance. If no card is saved, ask for the number, save it with config --add-card N, then answer. balance with no argument checks every saved card. Use --remove-card when they ask you to forget one; it takes the full number or the last four characters, which is all the output shows.
  • config with no flags shows what's saved and where. Settings live in ~/.config/elron/config.json (or $ELRON_CONFIG), readable only by the user. Where the filesystem doesn't persist between conversations, as in a hosted chat's sandbox, keep the home station in the host's own memory as well and pass it explicitly.

Never write the user's station or card numbers into this skill's files. Installs are copied folders: anything stored here is lost on the next update and leaks if the install is shared. Don't repeat a card number back beyond what the answer needs.

2. Answering questions

Answer in a sentence or two, leading with what was asked. For "when's the next train to Tartu?":

The next one leaves at 16:21 and gets in at 18:20. After that: 17:37 and 19:02.

  • Add a train's live status when it's already on its way ("it's 3 minutes late"). Add the fare, bikes or express only when the user asks about them.
  • Relay a notice when the script shows one. It already leaves out notices that name only stations off the user's stretch, such as a change of train further down the line.
  • After saving a station or card, say so in a few words. Give the file's path only if asked, and don't describe the script, its sources or its output.
  • Stop names match case- and accent-insensitively ("polva" finds "Põlva"), and a unique partial name works too; "Riga" finds Riia. An ambiguous or unknown name lists the candidates; pick one or ask. stops QUERY helps when unsure what a station is called.
  • Today vs another day. With no --date, the script uses today in Europe/Tallinn and hides trains that have already left, saying how many it hid. --all shows the whole day; --date picks another (convert "tomorrow" or "Saturday" to a date first, in Estonian time).
  • "Next train" or "last train": run trips and read the first or last row. Rows are trains the user can still catch, allowing for a late train's delay.
  • What a row shows: departure, arrival and journey time, then tags: the single-ticket fare in euros, bikes ok when bikes are allowed, express, Elron's notices, and live: for a train that is on its way right now.
  • Changes of train. trips lists direct trains first. When none are left it adds journeys with one change automatically; --connections adds them anyway. Each says where and when to change.
  • Is my train late? Where is it? For today, trips lists trains that have left but not yet reached the user's stop under Already on the way, with their live status, allowing for delays. live lists every running train with its delay, last stop, speed and coordinates; filter it with a line or stop name (live Tartu).
  • What goes through a station? Only when the user asks what will pass through or just went through, stopping or not ("what's the next train through Kehra?", "what was that train that didn't stop?"), run passing STATION. "Next train" questions stay with trips, which lists trains that stop. passing places each running train on its line from its live position and speed, and says whether it stops there.

All times are Estonian local time; say so only if the user may be elsewhere. If no journey turns up even with one change, say there's no Elron train for that trip, not that there's no way to get there.

Show full SKILL.md (414 more words)Show less

3. Live map

live --map also writes a self-contained HTML map of the running trains: dots over an embedded outline of Estonia and its neighbours, coloured green (on time), orange (late) and red (5+ minutes late). It prints the file's path; the file goes to the system temp folder unless you pass one. The page makes no network requests, and its own security policy forbids them, so it works offline and in sandboxed previews such as Claude's artifacts, which block every outside request. If the host can show HTML to the user, show that file; otherwise give the path or open it in their browser.

--tiles draws the trains over OpenFreeMap street tiles instead. Use it only for a page the user opens in their own browser: a sandboxed preview can't load the tiles, so there it falls back to the plain map. HTML shown inside Claude must make no outside requests.

Elron's own map can't be embedded: elron.ee forbids framing. A page can't poll the feed either, because it sends no CORS headers. For a map that follows the trains, run live --map --watch in the background on the user's own machine. It prints the map's path straight away, rewrites the file every 15 seconds and the page reloads itself (with --tiles, keeping the user's pan and zoom); stop it when they're done. In a hosted chat, run live --map again when they ask for an update.

4. Limits

Live data covers only trains running right now, so passing can't see a train that hasn't set off yet. Its times are rough estimates from distance and current speed; give them as "about". A train whose stopping pattern can't be confirmed shows neither "stops" nor "doesn't stop". A train that hasn't set off has no delay forecast, so call it scheduled rather than promising it's on time; "running to schedule" is Elron's own status. If elron.ee can't be reached, the script says so and still lists the timetable. Fares are the full single-ticket price: discounts, period tickets and first class aren't covered.

5. If a request fails

"could not reach api.ridango.com", or "live running data unavailable", in a sandboxed host (claude.ai, ChatGPT, a cloud agent) almost always means the sandbox blocks the domain. Tell the user to allow api.ridango.com and elron.ee in that environment's network settings, and don't retry in a loop. A farecard Elron doesn't recognise is reported per card; ask the user to check the number.

For changing this skill, see maintenance.

© joe-bell, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (scripts, references) in skills/elron of joe-bell/skills.

  • SKILL.md
  • references/maintenance.md
  • references/sources.md
  • scripts/elron.py

Open the folder on GitHubat commit 2eb6b5d

Compare with similar skills

Elron next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Elron compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Elron this skilljoe-bell/skills211—~2.1kAutomated safety check: PassMIT
ConnectComposioHQ/awesome-claude-skills77k3 repos~987Automated safety check: PassNone
Ito Trainingaffaan-m/ECC276k1 repos~1.5kAutomated safety check: PassMIT
Node Connectopenclaw/openclaw392k—~1.6kAutomated safety check: PassMIT
Time Trackingsickn33/agentic-awesome-skills47k1 repos~3.8kAutomated safety check: PassMIT
Time Ledgersickn33/agentic-awesome-skills47k1 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Connect

    ComposioHQ/awesome-claude-skills

    Connect Claude to any app. An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~987 tokens
    Productivity & AutomationAuto-check passed
  • Ito Training

    affaan-m/ECC

    Inspect the availability of ML training on a completed Itô compute booking and, when the canonical backend becomes available, hand off an explicitly confirmed training manifest.

    276k GitHub starsUsed in 1 repo~1.5k tokens
    AI & LLM EngineeringAuto-check passed
  • Node Connect

    openclaw/openclaw

    Diagnose OpenClaw Control UI browser and native Android, iOS, or macOS node connection failures across route, auth, pairing, QR/setup-code, and reconnect states.

    392k GitHub stars~1.6k tokensUpdated today
    MobileAuto-check passed
  • Time Tracking

    sickn33/agentic-awesome-skills

    Time entry register: employee, project, client, task, hours, billable flag, rate and amount, invoice and approver.

    47k GitHub starsUsed in 1 repo~3.8k tokens
    Productivity & AutomationAuto-check passed
  • Time Ledger

    sickn33/agentic-awesome-skills

    Natural-language time tracking: parse what the user says they did into Activity/Minutes/Date rows in their own Notion database — asking instead of guessing when unsure.

    47k GitHub starsUsed in 1 repo~1.8k tokens
    Productivity & AutomationAuto-check passed
  • Ray Train Distributed Training

    Orchestra-Research/AI-Research-SKILLs

    Scales PyTorch, TensorFlow and Hugging Face training from a single GPU to multi-node clusters with Ray Train, including Ray Tune sweeps and checkpoint recovery.

    13k GitHub starsUsed in 2 repos~2.7k tokens
    AI & LLM EngineeringAuto-check passed

More from joe-bell/skills

  • Letterboxd Diary

    joe-bell/skills

    Fetch recently watched films from a Letterboxd member's diary RSS feed and render them as a compact markdown list, with first-run setup for the username.

    211 GitHub stars~4.2k tokensUpdated 3 days ago
    Auto-check passed
  • Apple Web App

    joe-bell/skills

    A skill your agent uses when implementing, debugging, or auditing how any website or web app looks and behaves on iPhone and iPad — in Safari or added to the Home Screen — or added to the Mac Dock…

    211 GitHub stars~1.6k tokensUpdated 3 days ago
    Auto-check passed

Questions about Elron

What does Elron do?

Look up Elron train times, fares and connections between Estonian (and cross-border Latvian) stations, see live delays and positions of running trains on a map, and check Ühiskaart farecard…. Elron is an agent skill from joe-bell/skills. Look up Elron train times, fares and connections between Estonian (and cross-border Latvian) stations, see live delays and positions of running trains on a map, and check Ühiskaart farecard balances, remembering the user's home station and cards.

When should I use Elron?

Elron fits situations like: someone asks about trains in Estonia; elron departures; whether a train is late; which trains will pass through a station.

How do I install Elron in Claude Code?

Run `npx skills add joe-bell/skills --skill elron -a claude-code`. Or copy the skill folder (skills/elron in joe-bell/skills) into .claude/skills/elron in your project. Claude Code loads it when a task matches its description.

How do I install Elron in Codex?

Run `npx skills add joe-bell/skills --skill elron -a codex`. Or copy the skill folder (skills/elron in joe-bell/skills) into .agents/skills/elron in your project. Codex loads it when a task matches its description.

Can I use Elron in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add joe-bell/skills --skill elron -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/elron, .gemini/skills/elron, .github/skills/elron and .opencode/skills/elron in your project.

What does Elron need to run?

Going by SKILL.md and its folder, Elron needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.

Does Elron access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Elron safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Elron use?

Elron is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Elron use?

About 2.1k tokens (SKILL.md is roughly 8.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.2k tokens, read only when the agent opens those files.

What are the alternatives to Elron?

Skills that share tags, products or a category with Elron: Connect (ComposioHQ/awesome-claude-skills, 77k stars), Ito Training (affaan-m/ECC, 276k stars), Node Connect (openclaw/openclaw, 392k stars) and Time Tracking (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Elron?

joe-bell (a GitHub user) maintains it in joe-bell/skills, which has 211 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 7, 2026.

Source: joe-bell/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.