{
  "schemaVersion": "1.0",
  "item": {
    "slug": "irail",
    "name": "Irail",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/dedene/irail",
    "canonicalUrl": "https://clawhub.ai/dedene/irail",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/irail",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=irail",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/irail"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/irail",
    "agentPageUrl": "https://openagent3.xyz/skills/irail/agent",
    "manifestUrl": "https://openagent3.xyz/skills/irail/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/irail/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "irail-cli",
        "body": "CLI for Belgian railways (NMBS/SNCB) via iRail API. No authentication required."
      },
      {
        "title": "Quick Start",
        "body": "# Station departures\nirail liveboard Brugge\n\n# Find connections\nirail connections Brugge Leuven\n\n# Check disruptions\nirail disturbances"
      },
      {
        "title": "Authentication",
        "body": "None required. iRail API is public and free to use."
      },
      {
        "title": "Core Rules",
        "body": "Always use --json when parsing output programmatically\nStation names are flexible - accepts partial matches, quotes for multi-word\nTime format - HH:MM (24-hour), date format YYYY-MM-DD\nLanguage options - nl, fr, en, de (default: nl)"
      },
      {
        "title": "Output Formats",
        "body": "FlagFormatUse case(default)TableUser-facing with colors--jsonJSONAgent parsing, scripting\n\nColors indicate: red = delays, yellow = platform changes."
      },
      {
        "title": "Liveboard (Departures/Arrivals)",
        "body": "# Departures from station\nirail liveboard Brugge\nirail liveboard \"Brussel-Centraal\"\n\n# Arrivals instead of departures\nirail liveboard Brugge --arrivals\n\n# Specific date/time\nirail liveboard Brugge --time 09:00 --date 2025-02-15\n\n# JSON for scripting\nirail liveboard Brugge --json\n\n# Different language\nirail liveboard Brugge --lang en"
      },
      {
        "title": "Connections (Route Planning)",
        "body": "# Find routes\nirail connections Brugge Leuven\n\n# Specific departure time\nirail connections Brugge Leuven --time 09:00\n\n# Arrive by time (instead of depart at)\nirail connections Brugge Leuven --time 14:00 --arrive-by\n\n# More results\nirail connections Brugge Leuven --results 10\n\n# JSON for parsing\nirail connections Brugge Leuven --json"
      },
      {
        "title": "Stations",
        "body": "# List all stations\nirail stations\n\n# Search stations\nirail stations --search bruss\nirail stations --search gent\n\n# JSON for scripting\nirail stations --json"
      },
      {
        "title": "Vehicle (Train Info)",
        "body": "# Show train information\nirail vehicle IC1832\n\n# Include all stops\nirail vehicle IC1832 --stops\n\n# JSON output\nirail vehicle IC1832 --json"
      },
      {
        "title": "Composition (Train Cars)",
        "body": "# Show train composition (seats, amenities)\nirail composition S51507\nirail composition IC1832\n\n# JSON for parsing\nirail composition S51507 --json"
      },
      {
        "title": "Disturbances",
        "body": "# All current disruptions\nirail disturbances\n\n# Only planned works\nirail disturbances --type planned\n\n# Only unplanned disruptions\nirail disturbances --type disturbance\n\n# JSON for scripting\nirail disturbances --json"
      },
      {
        "title": "Scripting Examples",
        "body": "# Get next train to destination\nirail connections Brugge Leuven --json | jq -r '.[0].departure'\n\n# Find station ID\nirail stations --search \"brussel\" --json | jq -r '.[0].id'\n\n# Check if delays exist on liveboard\nirail liveboard Brugge --json | jq '[.[] | select(.delay > 0)] | length'\n\n# Get platform for next departure\nirail liveboard Brugge --json | jq -r '.[0].platform'\n\n# List all disruptions\nirail disturbances --json | jq -r '.[].title'"
      },
      {
        "title": "Environment Variables",
        "body": "VariableDescriptionIRAIL_LANGDefault language (nl, fr, en, de)IRAIL_JSONDefault to JSON outputNO_COLORDisable colored output"
      },
      {
        "title": "Language Options",
        "body": "CodeLanguagenlDutch (default)frFrenchenEnglishdeGerman\n\nirail liveboard Brugge --lang fr\nirail connections Brugge Leuven --lang en"
      },
      {
        "title": "Command Reference",
        "body": "CommandDescriptionliveboardStation departures/arrivalsconnectionsRoute planning between stationsstationsList/search stationsvehicleTrain information and stopscompositionTrain car compositiondisturbancesService disruptionscompletionShell completions"
      },
      {
        "title": "Check if train is delayed",
        "body": "irail vehicle IC1832 --json | jq '.delay // 0'"
      },
      {
        "title": "Get connection with transfers",
        "body": "irail connections Brugge Leuven --json | jq '.[0].vias | length'"
      },
      {
        "title": "Find direct trains only",
        "body": "irail connections Brugge Leuven --json | jq '[.[] | select(.vias == null or (.vias | length) == 0)]'"
      },
      {
        "title": "Guidelines",
        "body": "No authentication needed - API is public\nBe mindful of API usage in loops - add delays between requests\nStation names are case-insensitive and support partial matching\nDelay values are in seconds (divide by 60 for minutes)"
      },
      {
        "title": "Installation",
        "body": "brew install dedene/tap/irail"
      }
    ],
    "body": "irail-cli\n\nCLI for Belgian railways (NMBS/SNCB) via iRail API. No authentication required.\n\nQuick Start\n# Station departures\nirail liveboard Brugge\n\n# Find connections\nirail connections Brugge Leuven\n\n# Check disruptions\nirail disturbances\n\nAuthentication\n\nNone required. iRail API is public and free to use.\n\nCore Rules\nAlways use --json when parsing output programmatically\nStation names are flexible - accepts partial matches, quotes for multi-word\nTime format - HH:MM (24-hour), date format YYYY-MM-DD\nLanguage options - nl, fr, en, de (default: nl)\nOutput Formats\nFlag\tFormat\tUse case\n(default)\tTable\tUser-facing with colors\n--json\tJSON\tAgent parsing, scripting\n\nColors indicate: red = delays, yellow = platform changes.\n\nWorkflows\nLiveboard (Departures/Arrivals)\n# Departures from station\nirail liveboard Brugge\nirail liveboard \"Brussel-Centraal\"\n\n# Arrivals instead of departures\nirail liveboard Brugge --arrivals\n\n# Specific date/time\nirail liveboard Brugge --time 09:00 --date 2025-02-15\n\n# JSON for scripting\nirail liveboard Brugge --json\n\n# Different language\nirail liveboard Brugge --lang en\n\nConnections (Route Planning)\n# Find routes\nirail connections Brugge Leuven\n\n# Specific departure time\nirail connections Brugge Leuven --time 09:00\n\n# Arrive by time (instead of depart at)\nirail connections Brugge Leuven --time 14:00 --arrive-by\n\n# More results\nirail connections Brugge Leuven --results 10\n\n# JSON for parsing\nirail connections Brugge Leuven --json\n\nStations\n# List all stations\nirail stations\n\n# Search stations\nirail stations --search bruss\nirail stations --search gent\n\n# JSON for scripting\nirail stations --json\n\nVehicle (Train Info)\n# Show train information\nirail vehicle IC1832\n\n# Include all stops\nirail vehicle IC1832 --stops\n\n# JSON output\nirail vehicle IC1832 --json\n\nComposition (Train Cars)\n# Show train composition (seats, amenities)\nirail composition S51507\nirail composition IC1832\n\n# JSON for parsing\nirail composition S51507 --json\n\nDisturbances\n# All current disruptions\nirail disturbances\n\n# Only planned works\nirail disturbances --type planned\n\n# Only unplanned disruptions\nirail disturbances --type disturbance\n\n# JSON for scripting\nirail disturbances --json\n\nScripting Examples\n# Get next train to destination\nirail connections Brugge Leuven --json | jq -r '.[0].departure'\n\n# Find station ID\nirail stations --search \"brussel\" --json | jq -r '.[0].id'\n\n# Check if delays exist on liveboard\nirail liveboard Brugge --json | jq '[.[] | select(.delay > 0)] | length'\n\n# Get platform for next departure\nirail liveboard Brugge --json | jq -r '.[0].platform'\n\n# List all disruptions\nirail disturbances --json | jq -r '.[].title'\n\nEnvironment Variables\nVariable\tDescription\nIRAIL_LANG\tDefault language (nl, fr, en, de)\nIRAIL_JSON\tDefault to JSON output\nNO_COLOR\tDisable colored output\nLanguage Options\nCode\tLanguage\nnl\tDutch (default)\nfr\tFrench\nen\tEnglish\nde\tGerman\nirail liveboard Brugge --lang fr\nirail connections Brugge Leuven --lang en\n\nCommand Reference\nCommand\tDescription\nliveboard\tStation departures/arrivals\nconnections\tRoute planning between stations\nstations\tList/search stations\nvehicle\tTrain information and stops\ncomposition\tTrain car composition\ndisturbances\tService disruptions\ncompletion\tShell completions\nCommon Patterns\nCheck if train is delayed\nirail vehicle IC1832 --json | jq '.delay // 0'\n\nGet connection with transfers\nirail connections Brugge Leuven --json | jq '.[0].vias | length'\n\nFind direct trains only\nirail connections Brugge Leuven --json | jq '[.[] | select(.vias == null or (.vias | length) == 0)]'\n\nGuidelines\nNo authentication needed - API is public\nBe mindful of API usage in loops - add delays between requests\nStation names are case-insensitive and support partial matching\nDelay values are in seconds (divide by 60 for minutes)\nInstallation\nbrew install dedene/tap/irail"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/dedene/irail",
    "publisherUrl": "https://clawhub.ai/dedene/irail",
    "owner": "dedene",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/irail",
    "downloadUrl": "https://openagent3.xyz/downloads/irail",
    "agentUrl": "https://openagent3.xyz/skills/irail/agent",
    "manifestUrl": "https://openagent3.xyz/skills/irail/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/irail/agent.md"
  }
}