Best use case
Leaflet — Lightweight Open-Source Maps is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
## Overview
Teams using Leaflet — Lightweight Open-Source Maps should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/leaflet/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Leaflet — Lightweight Open-Source Maps Compares
| Feature / Agent | Leaflet — Lightweight Open-Source Maps | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
## Overview
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Leaflet — Lightweight Open-Source Maps
## Overview
You are an expert in Leaflet, the lightweight open-source JavaScript library for interactive maps. You help developers build map-based applications using OpenStreetMap tiles (free, no API key), custom markers, GeoJSON layers, clustering, and React integration via react-leaflet.
## Instructions
### React Integration
```tsx
import { MapContainer, TileLayer, Marker, Popup, GeoJSON, useMap } from "react-leaflet";
import MarkerClusterGroup from "react-leaflet-cluster";
import "leaflet/dist/leaflet.css";
function StoreMap({ stores }) {
return (
<MapContainer center={[40.75, -73.98]} zoom={12}
style={{ height: "100vh", width: "100%" }}>
<TileLayer
url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
attribution='© OpenStreetMap contributors'
/>
{/* Cluster markers when zoomed out */}
<MarkerClusterGroup>
{stores.map((store) => (
<Marker key={store.id} position={[store.lat, store.lng]}>
<Popup>
<h3>{store.name}</h3>
<p>{store.address}</p>
<p>Hours: {store.hours}</p>
</Popup>
</Marker>
))}
</MarkerClusterGroup>
</MapContainer>
);
}
// GeoJSON boundaries (neighborhoods, delivery zones)
function DeliveryZones({ zones }) {
return (
<MapContainer center={[40.75, -73.98]} zoom={11}>
<TileLayer url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png" />
<GeoJSON
data={zones}
style={(feature) => ({
fillColor: feature.properties.active ? "#22c55e" : "#ef4444",
weight: 2,
opacity: 0.8,
fillOpacity: 0.3,
})}
onEachFeature={(feature, layer) => {
layer.bindPopup(`
<b>${feature.properties.name}</b><br/>
Orders: ${feature.properties.orderCount}<br/>
Avg delivery: ${feature.properties.avgDeliveryMin} min
`);
}}
/>
</MapContainer>
);
}
```
### Custom Icons and Controls
```tsx
import L from "leaflet";
// Custom marker icon
const storeIcon = new L.Icon({
iconUrl: "/icons/store-pin.png",
iconSize: [32, 32],
iconAnchor: [16, 32],
popupAnchor: [0, -32],
});
// Custom map control (e.g., "Locate Me" button)
function LocateControl() {
const map = useMap();
return (
<button
className="leaflet-control"
onClick={() => map.locate({ setView: true, maxZoom: 16 })}
>
📍 My Location
</button>
);
}
```
## Installation
```bash
npm install leaflet react-leaflet
npm install react-leaflet-cluster # Marker clustering
npm install @types/leaflet # TypeScript types
```
## Examples
**Example 1: User asks to set up leaflet**
User: "Help me set up leaflet for my project"
The agent should:
1. Check system requirements and prerequisites
2. Install or configure leaflet
3. Set up initial project structure
4. Verify the setup works correctly
**Example 2: User asks to build a feature with leaflet**
User: "Create a dashboard using leaflet"
The agent should:
1. Scaffold the component or configuration
2. Connect to the appropriate data source
3. Implement the requested feature
4. Test and validate the output
## Guidelines
1. **Free tiles** — Use OpenStreetMap tiles (no API key, no cost); switch to Mapbox/Stadia for custom styling
2. **Marker clustering** — Use `react-leaflet-cluster` for 100+ markers; prevents visual clutter and improves performance
3. **GeoJSON for regions** — Use GeoJSON layers for boundaries, zones, and polygons; style dynamically based on data
4. **Lazy load** — Leaflet CSS and JS are ~40KB; lazy load the map component for better initial page load
5. **SSR compatibility** — Leaflet requires `window`; use `dynamic(() => import("./Map"), { ssr: false })` in Next.js
6. **Tile caching** — Use service workers to cache map tiles for offline support in PWAs
7. **Event handling** — Use `useMapEvents` hook for click, zoom, move events; build interactive experiences
8. **Lightweight alternative** — At 42KB (gzipped), Leaflet is 5x smaller than Mapbox GL JS; choose Leaflet when you don't need 3D or custom stylesRelated Skills
tracking-resource-usage
Track and optimize resource usage across application stack including CPU, memory, disk, and network I/O. Use when identifying bottlenecks or optimizing costs. Trigger with phrases like "track resource usage", "monitor CPU and memory", or "optimize resource allocation".
openapi-spec-generator
Openapi Spec Generator - Auto-activating skill for API Development. Triggers on: openapi spec generator, openapi spec generator Part of the API Development skill category.
open-graph-creator
Open Graph Creator - Auto-activating skill for Frontend Development. Triggers on: open graph creator, open graph creator Part of the Frontend Development skill category.
gpu-resource-optimizer
Gpu Resource Optimizer - Auto-activating skill for ML Deployment. Triggers on: gpu resource optimizer, gpu resource optimizer Part of the ML Deployment skill category.
provider-resources
Implement Terraform Provider resources and data sources using the Plugin Framework. Use when developing CRUD operations, schema design, state management, and acceptance testing for provider resources.
openapi-to-application-code
Generate a complete, production-ready application from an OpenAPI specification
azure-resource-health-diagnose
Analyze Azure resource health, diagnose issues from logs and telemetry, and create a remediation plan for identified problems.
aspnet-minimal-api-openapi
Create ASP.NET Minimal API endpoints with proper OpenAPI documentation
opencode-learn
Extracts actionable knowledge from external sources and enhances existing skills using a 4-tier novelty framework. Use PROACTIVELY when a user says "/learn <source>", provides documentation URLs, code examples, or explicitly asks to extract patterns from a repository or marketplace.
OpenAI Whisper API (curl)
Transcribe an audio file via OpenAI’s `/v1/audio/transcriptions` endpoint.
OpenAI Image Gen
Generate a handful of “random but structured” prompts and render them via the OpenAI Images API.
opensource-guide-coach
Use when a user wants guidance on starting, contributing to, growing, governing, funding, securing, or sustaining an open source project, or asks about contributor onboarding, community health, maintainer burnout, code of conduct, metrics, legal basics, or open source project adoption.