{
  "schemaVersion": "1.0",
  "item": {
    "slug": "tcl-lyon",
    "name": "TCL (Lyon public transport network)",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/eaudaim/tcl-lyon",
    "canonicalUrl": "https://clawhub.ai/eaudaim/tcl-lyon",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/tcl-lyon",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=tcl-lyon",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "tcl_tool.py"
    ],
    "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/tcl-lyon"
    },
    "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/tcl-lyon",
    "agentPageUrl": "https://openagent3.xyz/skills/tcl-lyon/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tcl-lyon/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tcl-lyon/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": "RUNTIME CHEAT SHEET (LLM ONLY – PRIORITY SECTION)",
        "body": "Purpose: Interroger les horaires des transports en commun TCL de Lyon."
      },
      {
        "title": "Premier passage de la journée",
        "body": "python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\" \"direction\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\" \"direction\" --line \"NumLigne\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\" --line \"NumLigne\"\n\nUtiliser TOUJOURS cette commande pour les questions du type \"premier bus/métro ce matin\", \"à quelle heure ça ouvre\", \"premier passage de la journée\".\n\nExemples :\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Valmy\" --line D\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Valmy\" \"Gare de Vénissieux\" --line D\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Bellecour\" --line A"
      },
      {
        "title": "Dernier passage de la soirée",
        "body": "python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\" \"direction\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\" \"direction\" --line \"NumLigne\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\" --line \"NumLigne\"\n\nUtiliser TOUJOURS cette commande pour les questions du type \"dernier bus/métro ce soir\", \"à quelle heure ça ferme\", \"est-ce qu'il y a encore des passages\".\nLe filtre direction est optionnel mais recommandé. Le filtre --line réduit le bruit quand la ligne est connue.\n\nExemples :\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Vieux Lyon Cat. St-Jean\" \"Vaise\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Gare de Vaise\" \"Cité Edouard Herriot\" --line 31\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Bellecour\" --line D"
      },
      {
        "title": "Prochains départs à un arrêt",
        "body": "python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Nom de l'arrêt\" [limit] [--line \"NumLigne\"]\n\nLe paramètre limit est optionnel (défaut : 5). Le filtre --line réduit le bruit quand la ligne est connue.\n\nExemples :\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Bellecour\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Part-Dieu\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Perrache\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Bellecour\" 1    # prochain départ uniquement\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Bellecour\" 20         # pour trouver le dernier passage\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"St-Rambert\" 5 --line 31  # filtré ligne 31"
      },
      {
        "title": "Infos sur une ligne",
        "body": "python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"NomLigne\"\n\nExemples :\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"A\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"C3\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"T2\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"31\""
      },
      {
        "title": "Recherche d'arrêts",
        "body": "python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py stops \"MotClé\"\n\nExemples :\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py stops \"Vaise\"\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py stops \"Hôtel de Ville\""
      },
      {
        "title": "Rules",
        "body": "La recherche d'arrêt est partielle et insensible à la casse.\nSi plusieurs arrêts correspondent, tous sont affichés avec leurs prochains départs.\nLes horaires sont théoriques (pas de retards temps réel).\nEn cas de doute sur le nom d'un arrêt, utiliser stops avant departures."
      },
      {
        "title": "TCL Lyon — Transports en Commun Lyonnais",
        "body": "Base de données GTFS locale couvrant l'ensemble du réseau TCL unifié (bus, métro, tram, funiculaire, trolleybus). Données fournies par Google Maps / Sytral, mises à jour quotidiennement."
      },
      {
        "title": "Couverture",
        "body": "653 lignes\n8863 arrêts\nHoraires sur 60 jours glissants\nGestion des exceptions (jours fériés, services spéciaux)"
      }
    ],
    "body": "RUNTIME CHEAT SHEET (LLM ONLY – PRIORITY SECTION)\n\nPurpose: Interroger les horaires des transports en commun TCL de Lyon.\n\nPremier passage de la journée\n\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\" \"direction\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\" \"direction\" --line \"NumLigne\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Nom de l'arrêt\" --line \"NumLigne\"\n\nUtiliser TOUJOURS cette commande pour les questions du type \"premier bus/métro ce matin\", \"à quelle heure ça ouvre\", \"premier passage de la journée\".\n\nExemples : python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Valmy\" --line D python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Valmy\" \"Gare de Vénissieux\" --line D python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py first \"Bellecour\" --line A\n\nDernier passage de la soirée\n\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\" \"direction\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\" \"direction\" --line \"NumLigne\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Nom de l'arrêt\" --line \"NumLigne\"\n\nUtiliser TOUJOURS cette commande pour les questions du type \"dernier bus/métro ce soir\", \"à quelle heure ça ferme\", \"est-ce qu'il y a encore des passages\". Le filtre direction est optionnel mais recommandé. Le filtre --line réduit le bruit quand la ligne est connue.\n\nExemples : python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Vieux Lyon Cat. St-Jean\" \"Vaise\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Gare de Vaise\" \"Cité Edouard Herriot\" --line 31 python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py last \"Bellecour\" --line D\n\nProchains départs à un arrêt\n\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Nom de l'arrêt\" [limit] [--line \"NumLigne\"]\n\nLe paramètre limit est optionnel (défaut : 5). Le filtre --line réduit le bruit quand la ligne est connue.\n\nExemples : python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Bellecour\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Part-Dieu\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Perrache\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Bellecour\" 1 # prochain départ uniquement python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"Bellecour\" 20 # pour trouver le dernier passage python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py departures \"St-Rambert\" 5 --line 31 # filtré ligne 31\n\nInfos sur une ligne\n\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"NomLigne\"\n\nExemples : python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"A\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"C3\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"T2\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py line \"31\"\n\nRecherche d'arrêts\n\npython3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py stops \"MotClé\"\n\nExemples : python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py stops \"Vaise\" python3 ~/.openclaw/skills/tcl-lyon/tcl_tool.py stops \"Hôtel de Ville\"\n\nRules\nLa recherche d'arrêt est partielle et insensible à la casse.\nSi plusieurs arrêts correspondent, tous sont affichés avec leurs prochains départs.\nLes horaires sont théoriques (pas de retards temps réel).\nEn cas de doute sur le nom d'un arrêt, utiliser stops avant departures.\nTCL Lyon — Transports en Commun Lyonnais\n\nBase de données GTFS locale couvrant l'ensemble du réseau TCL unifié (bus, métro, tram, funiculaire, trolleybus). Données fournies par Google Maps / Sytral, mises à jour quotidiennement.\n\nCouverture\n653 lignes\n8863 arrêts\nHoraires sur 60 jours glissants\nGestion des exceptions (jours fériés, services spéciaux)"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/eaudaim/tcl-lyon",
    "publisherUrl": "https://clawhub.ai/eaudaim/tcl-lyon",
    "owner": "eaudaim",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/tcl-lyon",
    "downloadUrl": "https://openagent3.xyz/downloads/tcl-lyon",
    "agentUrl": "https://openagent3.xyz/skills/tcl-lyon/agent",
    "manifestUrl": "https://openagent3.xyz/skills/tcl-lyon/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/tcl-lyon/agent.md"
  }
}