← Back to Skills Marketplace
fjrevoredo

Linz Public Transport

by fjrevoredo · GitHub ↗ · v1.0.1
cross-platform ✓ Security Clean
713
Downloads
2
Stars
0
Active Installs
1
Versions
Install in OpenClaw
/install linz-public-transport
Description
Query Linz public transport stops for IDs and fetch live upcoming departures using Linz Linien EFA endpoints.
README (SKILL.md)

Linz Public Transport

Use this skill to interact with Linz Linien EFA endpoints:

  • GET /efa/XML_STOPFINDER_REQUEST
  • GET /efa/XML_DM_REQUEST

Read endpoint details in {baseDir}/references/endpoints.md before implementation. Use {baseDir}/scripts/linz_transport.py as the default execution path.

Workflow

  1. Resolve the API base URL.
  2. Run the script subcommand that matches the task.
  3. Return a compact, user-facing summary.

Primary Tooling

  • Script path: {baseDir}/scripts/linz_transport.py
  • Runtime: Python 3, standard library only.
  • Base URL input:
    • --base-url \x3Curl> argument, or
    • LINZ_TRANSPORT_API_BASE_URL environment variable, or
    • default http://www.linzag.at/linz2.

Preferred commands:

  • Search stops:
    • python {baseDir}/scripts/linz_transport.py stops "taubenmarkt"
  • Fetch departures by stop ID:
    • python {baseDir}/scripts/linz_transport.py departures --stop-id 60501160 --limit 10
  • Resolve stop and fetch departures in one call:
    • python {baseDir}/scripts/linz_transport.py next "taubenmarkt" --limit 10 --pick-first

Step 1: Resolve Base URL

  • Use user-provided base URL first.
  • Otherwise use LINZ_TRANSPORT_API_BASE_URL if available.
  • If neither exists, use http://www.linzag.at/linz2.

Step 2: Present Output

  • Sort by countdownInMinutes ascending if needed.
  • Show the next 5-10 departures unless user asks for more.
  • Include both relative (countdownInMinutes) and absolute (time) times.
  • Keep field names stable when returning JSON.

Error Handling

  • If stop search returns empty list, suggest nearby spellings and retry with a shorter query token.
  • If multiple stop matches are returned, rerun with explicit --stop-id or use next ... --pick-first only when ambiguity is acceptable.
  • If departures response is empty, state that no upcoming departures are currently available.
  • If HTTP request fails, report status code, endpoint, and retry guidance.
  • If EFA response includes a message code, include that code in diagnostics.

Minimal Examples

python {baseDir}/scripts/linz_transport.py stops "taubenmarkt"
python {baseDir}/scripts/linz_transport.py departures --stop-id 60501160 --limit 10
python {baseDir}/scripts/linz_transport.py next "taubenmarkt" --limit 10 --pick-first
python "{baseDir}/scripts/linz_transport.py" stops "taubenmarkt"
python "{baseDir}/scripts/linz_transport.py" departures --stop-id 60501160 --limit 10
python "{baseDir}/scripts/linz_transport.py" next "taubenmarkt" --limit 10 --pick-first
Usage Guidance
This skill appears to be what it says: a small CLI that queries public Linz EFA endpoints and returns parsed results. It does not request secrets or install software. Things to consider before installing: (1) the default base URL is plain HTTP (http://www.linzag.at/linz2) — if you prefer encrypted traffic, set LINZ_TRANSPORT_API_BASE_URL to an HTTPS endpoint; (2) the skill will make outbound network requests to the transit server (ensure your environment policy allows that); (3) SKILL.md references the optional LINZ_TRANSPORT_API_BASE_URL env var but the registry metadata omitted it — this is just a metadata inconsistency, not malicious; and (4) because the agent may invoke skills autonomously (platform default), installing this skill allows the agent to make network calls to the public endpoint when relevant. If those points are acceptable, the skill is coherent and reasonable to install.
Capability Analysis
Type: OpenClaw Skill Name: linz-public-transport Version: 1.0.1 The skill is designed to query public transport data from Linz Linien EFA endpoints. The `SKILL.md` provides clear instructions for the AI agent without any prompt injection attempts. The `scripts/linz_transport.py` uses standard Python libraries (`urllib.request`, `argparse`, `json`, `os`) to make HTTP GET requests and parse JSON responses. Input parameters are properly URL-encoded, preventing injection vulnerabilities. There is no evidence of data exfiltration, unauthorized command execution, persistence mechanisms, or other malicious intent. The ability to specify a base URL via environment variables or command-line arguments is a standard and expected feature for an API client skill.
Capability Assessment
Purpose & Capability
The name/description promise (stop lookup and departures via Linz EFA) matches the included Python CLI, the referenced EFA endpoints, and the README reference material. The script only constructs EFA requests and parses responses — nothing in the package asks for unrelated services or credentials.
Instruction Scope
SKILL.md instructs the agent to run the included script, resolve a base URL (user-provided, env var, or default), and return compact summaries. The runtime steps and error handling are limited to network calls to the declared EFA endpoints and parsing their JSON payloads. There are no instructions to read unrelated files, harvest env vars, or send data to other endpoints.
Install Mechanism
No install spec is present (instruction-only with an included script). Nothing is downloaded or extracted at install time, so there is no installer-related code-execution risk.
Credentials
The skill does not require credentials or config paths. SKILL.md documents an optional LINZ_TRANSPORT_API_BASE_URL env var as an override; the registry metadata did not list required env vars, which is a minor metadata mismatch but not a security issue. No secrets are requested.
Persistence & Privilege
The skill is not forced-always; it is user-invocable and may be invoked autonomously by the agent (the platform default). The skill does not modify other skills or system settings.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install linz-public-transport
  3. After installation, invoke the skill by name or use /linz-public-transport
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.1
- Added a detailed SKILL.md with usage, workflow, preferred commands, and error handling for Linz public transport EFA endpoint queries. - Clarified step-by-step workflow for resolving the base API URL and output presentation. - Provided minimal command-line usage examples for stop search and live departure queries. - Outlined error handling strategies and response formatting expectations. - Noted environment variable and argument options for customizing the base URL.
Metadata
Slug linz-public-transport
Version 1.0.1
License
All-time Installs 0
Active Installs 0
Total Versions 1
Frequently Asked Questions

What is Linz Public Transport?

Query Linz public transport stops for IDs and fetch live upcoming departures using Linz Linien EFA endpoints. It is an AI Agent Skill for Claude Code / OpenClaw, with 713 downloads so far.

How do I install Linz Public Transport?

Run "/install linz-public-transport" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Linz Public Transport free?

Yes, Linz Public Transport is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Linz Public Transport support?

Linz Public Transport is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Linz Public Transport?

It is built and maintained by fjrevoredo (@fjrevoredo); the current version is v1.0.1.

💬 Comments