abhayjb/buslah/SKILL.md
# 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-by-Step Workflow ### 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?search
npx skillsauth add openclaw/skills abhayjb/buslahInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Natural language bus lookup for Singapore.
bus from <source location> to <destination location>
Examples:
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.
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.
Same as Step 1 for the destination. Extract its coordinates.
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:
For each matching bus at the source stop, get from the arrivelah2 response:
next.duration_ms → minutes until next bussubsequent.duration_ms → minutes until bus after thatnext.load → seat availability: SEA = Seats Available, SDA = Standing Available, LSD = Limited Standingnext.feature → WAB = Wheelchair accessiblenext.type → DD = Double decker, SD = Single deck, BD = Bendy🚌 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.
SEA = Seats Available 🟢SDA = Standing Available 🟡LSD = Limited Standing 🔴DD = Double DeckerSD = Single DeckBD = Bendy BusWAB = Wheelchair Accessible Bushttps://www.onemap.gov.sg/api/common/elastic/searchhttps://busrouter.sg/data/2/bus-stops.jsonhttps://busrouter.sg/data/2/routes.jsonhttps://arrivelah2.busrouter.sg/?id=<stop_code>tools
Use when the user wants to connect to, test, or use the McDonalds service at mcp.mcd.cn, including checking authentication, probing MCP endpoints, listing tools, or calling McDonalds MCP tools through a reusable local CLI.
development
Web scraping platform — Twitter/X data, Vinted marketplace, and general web scraping API
development
SlowMist AI Agent Security Review — comprehensive security framework for skills, repositories, URLs, on-chain addresses, and products (Claude Code version)
data-ai
去除中文文本中的 AI 写作痕迹,使其读起来自然。基于维基百科 AI 写作特征指南,检测 24 种 AI 模式。触发词:humanizer-cn、去除 AI 痕迹、去除 AI 写作痕迹、中文文本人性化。