{
  "schemaVersion": "1.0",
  "item": {
    "slug": "transport-for-london-journey-disruption",
    "name": "London public transport journey planner and disruptions",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/diegopetrucci/transport-for-london-journey-disruption",
    "canonicalUrl": "https://clawhub.ai/diegopetrucci/transport-for-london-journey-disruption",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/transport-for-london-journey-disruption",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=transport-for-london-journey-disruption",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "scripts/tfl_journey_disruptions.py",
      "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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/transport-for-london-journey-disruption"
    },
    "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/transport-for-london-journey-disruption",
    "agentPageUrl": "https://openagent3.xyz/skills/transport-for-london-journey-disruption/agent",
    "manifestUrl": "https://openagent3.xyz/skills/transport-for-london-journey-disruption/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/transport-for-london-journey-disruption/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": "TfL Journey Planner + Disruption Checks",
        "body": "Use this skill when the user wants a TfL journey plan and needs disruption awareness.\n\nReference: https://tfl.gov.uk/info-for/open-data-users/api-documentation"
      },
      {
        "title": "Script helper",
        "body": "Use scripts/tfl_journey_disruptions.py for a quick journey + disruption check.\n\nExamples:\n\npython3 scripts/tfl_journey_disruptions.py \\\"940GZZLUSTD\\\" \\\"W1F 9LD\\\" --depart-at 0900\npython3 scripts/tfl_journey_disruptions.py --from \\\"Stratford\\\" --to \\\"W1F 9LD\\\" --arrive-by 1800\n\nNotes:\n\nIf the API returns disambiguation options, pick one and retry with its parameterValue.\nIf you have TfL API keys, set TFL_APP_ID and TFL_APP_KEY in the environment."
      },
      {
        "title": "Inputs to collect",
        "body": "From: postcode, stop/station name, place name, or lat,lon\nTo: postcode, stop/station name, place name, or lat,lon\nTime + intent: depart at or arrive by (and date if not explicit)\nOptional: mode or accessibility constraints if the user mentions them\n\nIf any of these are missing or ambiguous, ask the user for clarification."
      },
      {
        "title": "Resolve locations",
        "body": "Prefer postcodes when available. Otherwise, resolve place names and stations:\n\nIf input looks like a UK postcode, use it directly as {from} or {to}.\nIf input is lat,lon, use as-is.\nIf input is a stop or station name, try StopPoint/Search/{query} and choose a hub or the relevant NaPTAN ID.\nIf the search or journey result returns disambiguation, show the top options (common name + parameterValue) and ask the user to pick.\nWhen unsure, ask a clarifying question rather than guessing."
      },
      {
        "title": "Plan journeys",
        "body": "Call:\n\n/Journey/JourneyResults/{from}/to/{to}?date=YYYYMMDD&time=HHMM&timeIs=Depart|Arrive\n\nGuidelines:\n\nIf the user says \"arrive by\" use timeIs=Arrive; otherwise default to Depart.\nIf the date is not provided, ask. If the user implies \"now\", you can omit date/time."
      },
      {
        "title": "Extract candidate routes",
        "body": "From the response, take the first 1-3 journeys. For each, capture:\n\nDuration and arrival time\nPublic transport legs (mode, line name, direction)\nLine IDs for disruption checks\n\nLine IDs usually appear in leg.routeOptions[].lineIdentifier.id or leg.line.id. Ignore walking legs."
      },
      {
        "title": "Disruption checks",
        "body": "For each journey, collect unique line IDs and call:\n\n/Line/{ids}/Status\n\nTreat a route as disrupted if any line status is not \"Good Service\" or includes a reason. Summarize the severity and reason.\n\nOptionally, check station-specific issues with /StopPoint/{id}/Disruption when relevant."
      },
      {
        "title": "Response strategy",
        "body": "If the top route has no disruptions, recommend it and say no active disruptions were found.\nIf the top route is disrupted, warn first, then propose 1-2 alternative routes from other journeys.\nIf all routes are disrupted, still recommend the best option but list the disruption warnings and alternatives.\nIf the journey is for a future time (later today or another day), note that disruption statuses are current and may change by the travel time (for example: \"Minor Delays now; this may change by morning\").\nAlways invite the user to confirm a route or provide clarifications."
      }
    ],
    "body": "TfL Journey Planner + Disruption Checks\n\nUse this skill when the user wants a TfL journey plan and needs disruption awareness.\n\nReference: https://tfl.gov.uk/info-for/open-data-users/api-documentation\n\nScript helper\n\nUse scripts/tfl_journey_disruptions.py for a quick journey + disruption check.\n\nExamples:\n\npython3 scripts/tfl_journey_disruptions.py \\\"940GZZLUSTD\\\" \\\"W1F 9LD\\\" --depart-at 0900\npython3 scripts/tfl_journey_disruptions.py --from \\\"Stratford\\\" --to \\\"W1F 9LD\\\" --arrive-by 1800\n\n\nNotes:\n\nIf the API returns disambiguation options, pick one and retry with its parameterValue.\nIf you have TfL API keys, set TFL_APP_ID and TFL_APP_KEY in the environment.\nInputs to collect\nFrom: postcode, stop/station name, place name, or lat,lon\nTo: postcode, stop/station name, place name, or lat,lon\nTime + intent: depart at or arrive by (and date if not explicit)\nOptional: mode or accessibility constraints if the user mentions them\n\nIf any of these are missing or ambiguous, ask the user for clarification.\n\nResolve locations\n\nPrefer postcodes when available. Otherwise, resolve place names and stations:\n\nIf input looks like a UK postcode, use it directly as {from} or {to}.\nIf input is lat,lon, use as-is.\nIf input is a stop or station name, try StopPoint/Search/{query} and choose a hub or the relevant NaPTAN ID.\nIf the search or journey result returns disambiguation, show the top options (common name + parameterValue) and ask the user to pick.\nWhen unsure, ask a clarifying question rather than guessing.\nPlan journeys\n\nCall:\n\n/Journey/JourneyResults/{from}/to/{to}?date=YYYYMMDD&time=HHMM&timeIs=Depart|Arrive\n\nGuidelines:\n\nIf the user says \"arrive by\" use timeIs=Arrive; otherwise default to Depart.\nIf the date is not provided, ask. If the user implies \"now\", you can omit date/time.\nExtract candidate routes\n\nFrom the response, take the first 1-3 journeys. For each, capture:\n\nDuration and arrival time\nPublic transport legs (mode, line name, direction)\nLine IDs for disruption checks\n\nLine IDs usually appear in leg.routeOptions[].lineIdentifier.id or leg.line.id. Ignore walking legs.\n\nDisruption checks\n\nFor each journey, collect unique line IDs and call:\n\n/Line/{ids}/Status\n\nTreat a route as disrupted if any line status is not \"Good Service\" or includes a reason. Summarize the severity and reason.\n\nOptionally, check station-specific issues with /StopPoint/{id}/Disruption when relevant.\n\nResponse strategy\nIf the top route has no disruptions, recommend it and say no active disruptions were found.\nIf the top route is disrupted, warn first, then propose 1-2 alternative routes from other journeys.\nIf all routes are disrupted, still recommend the best option but list the disruption warnings and alternatives.\nIf the journey is for a future time (later today or another day), note that disruption statuses are current and may change by the travel time (for example: \"Minor Delays now; this may change by morning\").\nAlways invite the user to confirm a route or provide clarifications."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/diegopetrucci/transport-for-london-journey-disruption",
    "publisherUrl": "https://clawhub.ai/diegopetrucci/transport-for-london-journey-disruption",
    "owner": "diegopetrucci",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/transport-for-london-journey-disruption",
    "downloadUrl": "https://openagent3.xyz/downloads/transport-for-london-journey-disruption",
    "agentUrl": "https://openagent3.xyz/skills/transport-for-london-journey-disruption/agent",
    "manifestUrl": "https://openagent3.xyz/skills/transport-for-london-journey-disruption/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/transport-for-london-journey-disruption/agent.md"
  }
}