mapbox
Build map-based applications with the Mapbox GL JS SDK. Use when a user asks to create interactive maps, add custom layers, implement geocoding, build navigation features, or visualize geospatial data with Mapbox.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o mapbox.zip https://jpskill.com/download/15101.zip && unzip -o mapbox.zip && rm mapbox.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15101.zip -OutFile "$d\mapbox.zip"; Expand-Archive "$d\mapbox.zip" -DestinationPath $d -Force; ri "$d\mapbox.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
mapbox.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
mapboxフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Claude が読む原文 SKILL.md(中身を展開)
この本文は AI(Claude)が読むための原文(英語または中国語)です。日本語訳は順次追加中。
Mapbox — Custom Interactive Maps
Overview
You are an expert in Mapbox, the platform for custom interactive maps, geocoding, navigation, and geospatial data visualization. You help developers build location-aware applications with custom map styles, markers, layers, 3D terrain, route planning, and real-time location tracking using Mapbox GL JS and the Mapbox APIs.
Instructions
Basic Map
// React integration with react-map-gl
import Map, { Marker, Popup, NavigationControl, Source, Layer } from "react-map-gl";
import "mapbox-gl/dist/mapbox-gl.css";
function StoreLocator() {
const [selectedStore, setSelectedStore] = useState(null);
return (
<Map
mapboxAccessToken={process.env.NEXT_PUBLIC_MAPBOX_TOKEN}
initialViewState={{ longitude: -73.98, latitude: 40.75, zoom: 12 }}
style={{ width: "100%", height: "100vh" }}
mapStyle="mapbox://styles/mapbox/light-v11"
>
<NavigationControl position="top-right" />
{stores.map((store) => (
<Marker
key={store.id}
longitude={store.lng}
latitude={store.lat}
onClick={() => setSelectedStore(store)}
>
<div className="store-pin">📍</div>
</Marker>
))}
{selectedStore && (
<Popup
longitude={selectedStore.lng}
latitude={selectedStore.lat}
onClose={() => setSelectedStore(null)}
>
<h3>{selectedStore.name}</h3>
<p>{selectedStore.address}</p>
<p>Open: {selectedStore.hours}</p>
</Popup>
)}
</Map>
);
}
Data Layers
// Heatmap layer for density visualization
function DeliveryHeatmap({ deliveries }) {
const geojson = {
type: "FeatureCollection",
features: deliveries.map((d) => ({
type: "Feature",
geometry: { type: "Point", coordinates: [d.lng, d.lat] },
properties: { weight: d.orderCount },
})),
};
return (
<Map mapboxAccessToken={TOKEN} mapStyle="mapbox://styles/mapbox/dark-v11"
initialViewState={{ longitude: -73.98, latitude: 40.75, zoom: 11 }}>
<Source type="geojson" data={geojson}>
<Layer
type="heatmap"
paint={{
"heatmap-weight": ["get", "weight"],
"heatmap-intensity": ["interpolate", ["linear"], ["zoom"], 0, 1, 15, 3],
"heatmap-radius": ["interpolate", ["linear"], ["zoom"], 0, 5, 15, 30],
"heatmap-color": [
"interpolate", ["linear"], ["heatmap-density"],
0, "rgba(0,0,255,0)", 0.2, "blue", 0.4, "cyan",
0.6, "lime", 0.8, "yellow", 1, "red",
],
}}
/>
</Source>
</Map>
);
}
Geocoding and Directions
// Geocoding API — address to coordinates
const geocode = async (address: string) => {
const res = await fetch(
`https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(address)}.json?access_token=${TOKEN}`
);
const data = await res.json();
const [lng, lat] = data.features[0].center;
return { lng, lat, place_name: data.features[0].place_name };
};
// Directions API — route between two points
const getRoute = async (start: [number, number], end: [number, number]) => {
const res = await fetch(
`https://api.mapbox.com/directions/v5/mapbox/driving/${start.join(",")};${end.join(",")}?geometries=geojson&access_token=${TOKEN}`
);
const data = await res.json();
return {
route: data.routes[0].geometry, // GeoJSON LineString
duration: data.routes[0].duration, // seconds
distance: data.routes[0].distance, // meters
};
};
Installation
npm install mapbox-gl react-map-gl
# Get access token at https://account.mapbox.com/
Examples
Example 1: User asks to set up mapbox
User: "Help me set up mapbox for my project"
The agent should:
- Check system requirements and prerequisites
- Install or configure mapbox
- Set up initial project structure
- Verify the setup works correctly
Example 2: User asks to build a feature with mapbox
User: "Create a dashboard using mapbox"
The agent should:
- Scaffold the component or configuration
- Connect to the appropriate data source
- Implement the requested feature
- Test and validate the output
Guidelines
- Custom map styles — Use Mapbox Studio to create branded map styles; match your app's design language
- Clustering for markers — Use
clusterproperty on GeoJSON sources when displaying 100+ points; prevents visual clutter - react-map-gl for React — Use the official React wrapper; it handles lifecycle, state sync, and TypeScript types
- Lazy load maps — Maps are heavy (~200KB); lazy load the map component; show a placeholder during load
- Tile-based layers — For large datasets (10K+ points), use vector tiles instead of GeoJSON; much better performance
- Geocoding with autocomplete — Use the Geocoding API with the
autocomplete=trueparameter for search-as-you-type address input - 3D terrain — Enable terrain with
map.setTerrain({ source: "mapbox-dem" })for topographic visualizations - Rate limits — Mapbox has generous free tiers (50K loads/month for GL JS); monitor usage to avoid surprise bills