# Send buslah to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- 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.
## Suggested prompts
### New install

```text
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.
```
### Upgrade existing

```text
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.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "buslah",
    "name": "buslah",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/abhayjb/buslah",
    "canonicalUrl": "https://clawhub.ai/abhayjb/buslah",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/buslah",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=buslah",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "bus-arrival.sh",
      "config.json"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "buslah",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T22:35:25.133Z",
      "expiresAt": "2026-05-08T22:35:25.133Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=buslah",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=buslah",
        "contentDisposition": "attachment; filename=\"buslah-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "buslah"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/buslah"
    },
    "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."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/buslah",
    "downloadUrl": "https://openagent3.xyz/downloads/buslah",
    "agentUrl": "https://openagent3.xyz/skills/buslah/agent",
    "manifestUrl": "https://openagent3.xyz/skills/buslah/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/buslah/agent.md"
  }
}
```
## Documentation

### ArriveLah - Singapore Bus Arrivals

Natural language bus lookup for Singapore.

### Trigger Format

bus from <source location> to <destination location>

Examples:

"bus from Silat Road Sikh Temple to Queens condo"
"bus from Tanjong Pagar MRT to VivoCity"
"bus from my office to home"

### Step 1: Geocode source location

Use web_fetch to resolve the source location to coordinates via OneMap API:

https://www.onemap.gov.sg/api/common/elastic/search?searchVal=<source>&returnGeom=Y&getAddrDetails=Y&pageNum=1

Extract LATITUDE and LONGITUDE from the first result.

### Step 2: Find nearest bus stops to source

Fetch the full Singapore bus stop list and find stops closest to source coordinates:

https://busrouter.sg/data/2/bus-stops.json

This returns a JSON object where each key is a bus stop code, with fields: description, road, lat, lng.

Compute distance using: sqrt((lat2-lat1)^2 + (lng2-lng1)^2) (approximate is fine for short distances).
Pick the 3 nearest stops within ~300m.

### Step 3: Geocode destination location

Same as Step 1 for the destination. Extract its coordinates.

### Step 4: Find which buses go from source stops toward destination

For each of the 3 nearest source stops, fetch arrivals:

https://arrivelah2.busrouter.sg/?id=<stop_code>

Then for each bus service at those stops, check if it passes near the destination using:

https://busrouter.sg/data/2/routes.json

This maps bus service numbers to arrays of stop codes in order. Cross-reference with bus-stops.json to get coordinates of each stop on the route, and check if any stop is within ~400m of the destination coordinates.

Keep only buses that:

Have the source stop before the destination stop in their route (correct direction)
Pass within ~400m of the destination

### Step 5: Fetch live arrival times

For each matching bus at the source stop, get from the arrivelah2 response:

next.duration_ms → minutes until next bus
subsequent.duration_ms → minutes until bus after that
next.load → seat availability: SEA = Seats Available, SDA = Standing Available, LSD = Limited Standing
next.feature → WAB = Wheelchair accessible
next.type → DD = Double decker, SD = Single deck, BD = Bendy

### Step 6: Format and return

🚌 Buses from [Source Stop Name] → [Destination]

Bus [XX]
  ⏰ Next: X min | Then: Y min
  💺 [Seats Available / Standing / Limited Standing]
  🚌 [Double Decker / Single Deck]

Bus [YY]
  ⏰ Next: X min | Then: Y min
  💺 [Seats Available / Standing / Limited Standing]

📍 Stop: [Stop Description], [Road Name] (Stop code: XXXXX)

If no direct bus found, say so and suggest nearest MRT or alternative.

### Load Code Reference

SEA = Seats Available 🟢
SDA = Standing Available 🟡
LSD = Limited Standing 🔴

### Bus Type Reference

DD = Double Decker
SD = Single Deck
BD = Bendy Bus
WAB = Wheelchair Accessible Bus

### API Endpoints (no auth needed)

OneMap geocode: https://www.onemap.gov.sg/api/common/elastic/search
Bus stops: https://busrouter.sg/data/2/bus-stops.json
Routes: https://busrouter.sg/data/2/routes.json
Live arrivals: https://arrivelah2.busrouter.sg/?id=<stop_code>
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: abhayjb
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-01T22:35:25.133Z
- Expires at: 2026-05-08T22:35:25.133Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/buslah)
- [Send to Agent page](https://openagent3.xyz/skills/buslah/agent)
- [JSON manifest](https://openagent3.xyz/skills/buslah/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/buslah/agent.md)
- [Download page](https://openagent3.xyz/downloads/buslah)