Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add lh17708357536-gif/flutter-cn-overseas-app-skills --skill maps-locationgit clone --depth 1 https://github.com/lh17708357536-gif/flutter-cn-overseas-app-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/maps-location)<a href="https://agentmods.dev/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/maps-location"><img src="https://agentmods.dev/badge/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/maps-location/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/maps-location"><img src="https://agentmods.dev/badge/skills/lh17708357536-gif/flutter-cn-overseas-app-skills/maps-location.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00121 | $0.02477 |
| Opus 5 | $0.00060 | $0.01239 |
| Sonnet 5 | $0.00024 | $0.00495 |
| Haiku 4.5 | $0.00012 | $0.00248 |
Grade A, and why
maps-location scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 157 lines — stays where its author put it; the contents beside it link to each section on GitHub.
多区域地图与定位 Skill
覆盖"中国大陆用高德、其他地区用 Google/Mapbox"的双源路由。所有
<PLACEHOLDER>替换为项目实际值。核心决策依据是数据的归属地(如
hotel.country/ 业务实体的 country),不是用户 IP、不是手机系统区域——同一个 App 里,展示北京的店用高德,展示东京的店用 Google,由数据决定。
1. ★ 地图源路由矩阵
| 数据归属地 | 地图源 | 网络路径 |
|---|---|---|
中国大陆(country='CN') |
高德 Amap | 直连(国内节点快、合规) |
| 港澳台(HK/MO/TW) | Google Maps 或 Mapbox | Google 走海外中转;Mapbox 直连 |
| 海外(JP/US/EU/...) | Google Maps 或 Mapbox | 同上 |
flavor 叠加约束:
- cn_android:禁 Google(对应
cn-android-flavor§1)→ 只能用高德;若 cn 包需要显示海外地图,用高德的海外底图或静态图代理,不引入 Google Maps SDK - overseas_android / iOS:用 Google Maps 或 Mapbox;中国大陆数据仍建议走高德静态图(Google 在华不可靠)
- ★ 路由决策放后端
_resolveMapSource(entityId),前端只拿"用哪个源 + 已代理好的 URL",不自己判断
2. 后端源决策 + Google 在华中转
// map.service.ts
type MapSource = 'amap' | 'google' | 'mapbox';
resolveMapSource(country: string): MapSource {
if (country === 'CN') return 'amap';
// 港澳台 + 海外:按项目策略选 google 或 mapbox
return process.env.OVERSEAS_MAP_PROVIDER === 'mapbox' ? 'mapbox' : 'google';
}
Google Maps API 在中国大陆被墙 → 后端经海外节点中转(对应项目 nginx gemini_proxy.conf 同款思路):
.env:
GOOGLE_MAPS_KEY=<SERVER_SIDE_KEY> # ★ 服务端 key,限 IP,不下发前端
GMAPS_PROXY_BASE=https://<OVERSEAS_PROXY>/gmaps # 海外 Nginx 反代 maps.googleapis.com
AMAP_WEB_KEY=<AMAP_WEB_SERVICE_KEY> # 高德 Web 服务 key(服务端)
AMAP_JS_KEY=<AMAP_JS_KEY> # 高德 JS API key(前端/H5 用,配安全密钥)
MAPBOX_TOKEN=<MAPBOX_TOKEN>
OVERSEAS_MAP_PROVIDER=google # 或 mapbox
海外 Nginx 需代理三类端点(对应你项目已有的 /gmaps/static /gmaps/geocode/ /gplaces/):
location /gmaps/static/ { proxy_pass https://maps.googleapis.com/maps/api/staticmap; }
location /gmaps/geocode/ { proxy_pass https://maps.googleapis.com/maps/api/geocode/; }
location /gplaces/ { proxy_pass https://maps.googleapis.com/maps/api/place/; }
3. 静态地图(对客 H5 / 卡片最常用)
后端统一出静态图 URL,前端只贴 <img>,天然规避 SDK 与被墙问题:
staticMapUrl(source: MapSource, lat: number, lng: number, zoom = 15): string {
switch (source) {
case 'amap': // 高德静态图
return `https://restapi.amap.com/v3/staticmap?location=${lng},${lat}`
+ `&zoom=${zoom}&size=750*400&markers=mid,,A:${lng},${lat}&key=${process.env.AMAP_WEB_KEY}`;
case 'google': // 经海外中转
return `${process.env.GMAPS_PROXY_BASE}/static/?center=${lat},${lng}`
+ `&zoom=${zoom}&size=750x400&markers=color:red%7C${lat},${lng}&key=${process.env.GOOGLE_MAPS_KEY}`;
case 'mapbox':
return `https://api.mapbox.com/styles/v1/mapbox/streets-v12/static/`
+ `pin-s+f00(${lng},${lat})/${lng},${lat},${zoom}/750x400?access_token=${process.env.MAPBOX_TOKEN}`;
}
}
- ★ 高德坐标是
经度,纬度(lng,lat);Google 是纬度,经度(lat,lng)——顺序反了地图就飘到别的国家,这是头号 bug - ★ 高德用 GCJ-02 火星坐标,Google/Mapbox 用 WGS-84;跨源传坐标必须转换(见 §5)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 157 lines · 121 tokens per session scan A db73d569ad00
maps-location is a skill published in the GitHub repository lh17708357536-gif/flutter-cn-overseas-app-skills (20 stars, last pushed 2mo ago), licensed MIT. It adds 121 tokens to every session and 2,477 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
mobile-engineer
You are the Mobile Engineer Specialist — a cross-platform mobile development expert who builds performant, production-ready mobile applications. You specialize in React Native (Expo) and Flutter, with deep expertise in native integrations, offline-first architectures, and app store deployment.
argent-screenshot-diff
Compare saved or live app screenshots with the argent screenshot-diff tool. Use when testing visual regressions, before/after UI comparisons, screenshot diff checks, visible layout, spacing, color, typography, clipping, overflow, text rendering, or image/icon rendering changes.
truesheet-usage
Consumer-side guide for integrating @lodev09/react-native-true-sheet into a React Native app. Use this skill whenever the user wants to add, configure, control, or debug a bottom sheet using TrueSheet — including ref-based sheets, named global sheets, web support with TrueSheetProvider/useTrueSheet, React Navigation…
sceneview-web
Build 3D and WebXR (AR/VR) experiences in the browser with SceneView for Web — Filament.js (WebGL2/WASM) wrapped in a Kotlin/JS DSL and a plain-JavaScript API on window.sceneview. Use whenever the user asks for "3D in the browser", "a web model viewer", "WebXR AR/VR", or any browser 3D/AR app where the dependency is…
app-store-preflight-compliance
Pre-submission compliance scanner workflow for Apple App Store apps. Use when reviewing iOS, macOS, tvOS, watchOS, or visionOS projects (Swift, Objective-C, React Native, Expo) for App Store rejection risks, submission readiness, privacy compliance, or guideline violations.
uniwind
Uniwind — Tailwind CSS v4 styling for React Native. Use when adding, building, or debugging components in a React Native project that uses Uniwind classNames. Covers setup, Metro config, global.css, theming, className props, accent- color props, platform/data/state/responsive variants, CSS variables, custom utilities…