К основному содержанию
скилл CX Codex

mapbox-search-patterns — скилл для Claude Code: поиск и геокодинг

Подсказывает агенту, какой инструмент поиска Mapbox выбрать и какие параметры выставить для геокодинга, поиска POI и адресов.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add mapbox/mapbox-agent-skills --skill mapbox-search-patterns -a claude-code
Открыть на GitHub

Что делает mapbox-search-patterns

Скилл разбирает три инструмента Mapbox и объясняет, когда каждый уместен. search_and_geocode_tool берёт конкретные названия, бренды и адреса: «Empire State Building», «McDonald's», «123 Main St, Boston, MA». category_search_tool — для общих категорий и множественного числа: «coffee shops», «hotels», «electric vehicle chargers». reverse_geocode_tool переводит координаты в адрес, город или почтовый индекс. Внутри есть таблица выбора инструмента: запрос слева, инструмент и причина справа.

Отдельный блок про пространственные фильтры. proximity смещает выдачу к точке, но не отсекает далёкие совпадения — его советуют ставить всегда, когда есть опорная локация, иначе результаты привяжутся к IP или пойдут по всему миру. bbox работает как жёсткая рамка: слишком маленькая даст пустой ответ, слишком большая — мусор. country ограничивает страной по коду ISO 3166 alpha-2, поэтому «Paris» с ["FR"] найдёт Париж во Франции, а не в Техасе. Фильтры можно комбинировать.

Для category_search_tool описан параметр limit от 1 до 25 со значением по умолчанию 10: меньше значений — быстрее ответ. У search_and_geocode_tool есть types для отсечения по типу объекта — poi, address, place, street, postcode, district, locality, country. Скилл пригодится, если вы пишете поиск по карте и не хотите каждый раз вспоминать, чем proximity отличается от bbox.

Какие задачи решает

  • выбрать между поиском по названию и поиском по категории
  • задать proximity, чтобы выдача шла от точки пользователя
  • ограничить результаты рамкой bbox или страной
  • подобрать limit под автокомплит или карту
  • перевести координаты GPS в читаемый адрес

Примеры запросов агенту

  • Найди кофейни рядом со мной через category_search_tool
  • Что находится по координатам 37.7749, -122.4194?
  • Найди отели в центре Сиэтла, ограничь bbox и поставь proximity

Как установить mapbox-search-patterns

1Через Skills CLI (Vercel)

npx skills add mapbox/mapbox-agent-skills --skill mapbox-search-patterns -a claude-code

2Вручную: положить файлы

~/.claude/skills/mapbox-search-patterns/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/mapbox-search-patterns/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора18

mapbox-data-visualization-patterns Готовые шаблоны визуализации данных на картах Mapbox для Claude Code: картограммы, тепловые слои и 3D-модели. Пригодится при отрисовке статистики и плотности точек. CX Codex +1 2 100установок mapbox-style-quality Скилл проверяет стили Mapbox перед релизом: валидирует выражения и GeoJSON, считает контраст текста по WCAG, оптимизирует файл стиля. CX Codex +1 2 000установок mapbox-search-integration Проводит агента через весь цикл внедрения поиска Mapbox: от вопросов о задаче до готового кода с нужным API и параметрами. CX Codex +1 1 900установок mapbox-token-security Набор правил безопасности для токенов Mapbox: разграничение публичных и секретных ключей, ограничение по URL и защита от тихих падений карты. CX Codex +1 1 900установок mapbox-store-locator-patterns Паттерны для поиска заведений на карте через Mapbox GL JS. Скилл учит агента выводить маркеры через WebGL, фильтровать точки и считать расстояния с @turf/turf. CX Codex +1 1 700установок mapbox-ios-patterns Официальные шаблоны интеграции Mapbox Maps SDK v11 в iOS-приложения на Swift, SwiftUI и UIKit. Пригодится, когда нужно добавить карту, маркеры или геоданные. CX Codex +1 1 500установок mapbox-mcp-devkit-patterns Скилл описывает, как подключить Mapbox MCP DevKit Server к ИИ-ассистенту и работать со стилями, токенами и валидацией прямо в чате. CX Codex +1 1 500установок mapbox-maplibre-migration Ведёт миграцию с MapLibre GL JS на Mapbox GL JS: замена пакета, импортов, стилей и токена. Пригодится, если упираетесь в свои тайлы или нужна официальная поддержка. CX Codex +1 1 400установок

Похожие

maplibre-mapbox-migration maplibre Помогает перевести веб-приложение с Mapbox GL JS на открытую библиотеку MapLibre GL JS. Пригодится при отказе от коммерческой лицензии и смене источников тайлов. CX Codex +1 464установок reddit-search-api lignertys Скилл даёт модели точную документацию по API сервиса reddapi.dev. Помогает собирать запросы для векторного поиска по Reddit, отслеживать тренды и проверять схемы ответов. CX Codex +1 10 600установок upstash-search-js Upstash Скилл ведёт агента по TypeScript SDK @upstash/search: индексы, документы, keyword, semantic и hybrid-запросы. Пригодится, когда в проект нужно добавить поиск. CX Codex +1 1 200установок elasticsearch-search-relevance elastic Скилл для настройки релевантности в Elasticsearch: закрепляет документы через query rules и правит органический ранкинг через multi_match. CX Codex +1 1 000установок tavily-search tavily-ai Ищет данные в сети через утилиту tvly и выдаёт выжимки с оценкой релевантности для нейросети. Пригодится, когда агенту нужны свежие новости или факты без готовой ссылки. CX Codex +1 36 100установок search brightdata Ищет информацию в вебе через Bright Data CLI. Запускает классический сбор поисковой выдачи Google, Bing и Yandex или семантический поиск страниц с учётом интента. CX Codex +1 7 500установок

Рядом в теме «Настройка агента: память, контекст, субагенты»

Все скиллы по теме «Настройка агента: память, контекст, субагенты» →

Вопросы о mapbox-search-patterns

Как установить mapbox-search-patterns в Claude?

Выполните npx skills add mapbox/mapbox-agent-skills --skill mapbox-search-patterns -a claude-code. Скилл окажется в ~/.claude/skills/mapbox-search-patterns/SKILL.md.

Что делает mapbox-search-patterns?

Помогает агенту выбрать инструмент поиска Mapbox под конкретный запрос и выставить параметры: proximity, bbox, country, limit, types. Работает с геокодингом, поиском POI и адресов.

Чем proximity отличается от bbox?

proximity только смещает выдачу к точке и может вернуть далёкое, но релевантное совпадение. bbox — жёсткая граница: всё, что за ней, в ответ не попадёт.

Исходный текст

SKILL.md · MIT
---
name: mapbox-search-patterns
description: Expert guidance on choosing the right Mapbox search tool and parameters for geocoding, POI search, and location discovery
---

# Mapbox Search Patterns Skill

Expert guidance for AI assistants on using Mapbox search tools effectively. Covers tool selection, parameter optimization, and best practices for geocoding, POI search, and location discovery.

## Available Search Tools

### 1. search_and_geocode_tool

**Best for:** Specific places, addresses, brands, named locations

**Use when query contains:**

- Specific names: "Starbucks on 5th Avenue", "Empire State Building"
- Brand names: "McDonald's", "Whole Foods"
- Addresses: "123 Main Street, Seattle", "1 Times Square"
- Chain stores: "Target"
- Cities/places: "San Francisco", "Portland"

**Don't use for:** Generic categories ("coffee shops", "museums")

### 2. category_search_tool

**Best for:** Generic place types, categories, plural queries

**Use when query contains:**

- Generic types: "coffee shops", "restaurants", "gas stations"
- Plural forms: "museums", "hotels", "parks"
- Is-a phrases: "any coffee shop", "all restaurants", "nearby pharmacies"
- Industry terms: "electric vehicle chargers", "ATMs"

**Don't use for:** Specific names or brands

### 3. reverse_geocode_tool

**Best for:** Converting coordinates to addresses, cities, towns, postcodes

**Use when:**

- Have GPS coordinates, need human-readable address
- Need to identify what's at a specific location
- Converting user location to address

## Tool Selection Decision Matrix

| User Query                      | Tool                    | Reasoning                |
| ------------------------------- | ----------------------- | ------------------------ |
| "Find Starbucks on Main Street" | search_and_geocode_tool | Specific brand name      |
| "Find coffee shops nearby"      | category_search_tool    | Generic category, plural |
| "What's at 37.7749, -122.4194?" | reverse_geocode_tool    | Coordinates to address   |
| "Empire State Building"         | search_and_geocode_tool | Specific named POI       |
| "hotels in downtown Seattle"    | category_search_tool    | Generic type + location  |
| "Target store locations"        | search_and_geocode_tool | Brand name (even plural) |
| "any restaurant near me"        | category_search_tool    | Generic + "any" phrase   |
| "123 Main St, Boston, MA"       | search_and_geocode_tool | Specific address         |
| "electric vehicle chargers"     | category_search_tool    | Industry category        |
| "McDonald's"                    | search_and_geocode_tool | Brand name               |

## Parameter Guidance

### Proximity vs Bbox vs Country

**Three ways to spatially constrain search results:**

#### 1. proximity (STRONGLY RECOMMENDED)

**What it does:** Biases results toward a location, but doesn't exclude distant matches

**Use when:**

- User says "near me", "nearby", "close to"
- Have a reference point but want some flexibility
- Want results sorted by relevance to a point

**Example:**

```json
{
  "q": "pizza",
  "proximity": {
    "longitude": -122.4194,
    "latitude": 37.7749
  }
}
```

**Why this works:** API returns SF pizza places first, but might include famous NYC pizzerias if highly relevant

**Critical:** Always set proximity when you have a reference location! Without it, results are IP-based or global.

#### 2. bbox (Bounding Box)

**What it does:** Hard constraint - ONLY returns results within the box

**Use when:**

- User specifies an area: "in downtown", "within this neighborhood"
- Have a defined service area
- Need to guarantee results are within bounds

**Example:**

```json
{
  "q": "hotel",
  "bbox": [-122.51, 37.7, -122.35, 37.83] // [minLon, minLat, maxLon, maxLat]
}
```

**Why this works:** Guarantees all hotels are within SF's downtown area

**Watch out:** Too small = no results; too large = irrelevant results

#### 3. country

**What it does:** Limits results to specific countries

**Use when:**

- User specifies country: "restaurants in France"
- Building country-specific features
- Need to respect regional boundaries
- Or it is otherwise clear they want results within a specific country

**Example:**

```json
{
  "q": "Paris",
  "country": ["FR"] // ISO 3166 alpha-2 codes
}
```

**Why this works:** Finds Paris, France (not Paris, Texas)

**Can combine:** `proximity` + `country` + `bbox` or any combination of the three

### Decision Matrix: Spatial Filters

| Scenario                           | Use                                 | Why                               |
| ---------------------------------- | ----------------------------------- | --------------------------------- |
| "Find coffee near me"              | proximity                           | Bias toward user location         |
| "Coffee shops in downtown Seattle" | proximity + bbox                    | Center on downtown, limit to area |
| "Hotels in France"                 | country                             | Hard country boundary             |
| "Best pizza in San Francisco"      | proximity + country ["US"]          | Bias to SF, limit to US           |
| "Gas stations along this route"    | bbox around route                   | Hard constraint to route corridor |
| "Restaurants within 5 miles"       | proximity (then filter by distance) | Bias nearby, filter results       |

### Setting limit Parameter

**category_search_tool only** (1-25, default 10)

| Use Case              | Limit | Reasoning               |
| --------------------- | ----- | ----------------------- |
| Quick suggestions     | 5     | Fast, focused results   |
| Standard list         | 10    | Default, good balance   |
| Comprehensive search  | 25    | Maximum allowed         |
| Map visualization     | 25    | Show all nearby options |
| Dropdown/autocomplete | 5     | Don't overwhelm UI      |

**Performance tip:** Lower limits = faster responses

### types Parameter (search_and_geocode_tool)

**Filter by feature type:**

| Type       | What It Includes                           | Use When                          |
| ---------- | ------------------------------------------ | --------------------------------- |
| `poi`      | Points of interest (businesses, landmarks) | Looking for POIs, not addresses   |
| `address`  | Street addresses                           | Need specific address             |
| `place`    | Cities, neighborhoods, regions             | Looking for area/region           |
| `street`   | Street names without numbers               | Need street, not specific address |
| `postcode` | Postal codes                               | Searching by ZIP/postal code      |
| `district` | Districts, neighborhoods                   | Area-based search                 |
| `locality` | Towns, villages                            | Municipality search               |
| `country`  | Country names                              | Country-level search              |

**Example combinations:**

```json
// Only POIs and addresses, no cities
{"q": "Paris", "types": ["poi", "address"]}
// Returns Paris Hotel, Paris Street, not Paris, France

// Only places (cities)
{"q": "Paris", "types": ["place"]}
// Returns Paris, France; Paris, Texas; etc.
```

**Default behavior:** All types included (usually what you want)

### auto_complete Parameter (search_and_geocode_tool)

**What it does:** Enables partial/fuzzy matching

| Setting           | Behavior                     | Use When                      |
| ----------------- | ---------------------------- | ----------------------------- |
| `true`            | Matches partial words, typos | User typing in real-time      |
| `false` (default) | Exact matching               | Final query, not autocomplete |

**Example:**

<!-- cspell:disable -->

```json
// User types "starb"
{ "q": "starb", "auto_complete": true }
// Returns: Starbucks, Starboard Tavern, etc.
```

**Use for:**

- Search-as-you-type interfaces
- Handling typos ("mcdonalds" -> McDonald's)
<!-- cspell:enable -->
- Incomplete queries

**Don't use for:**

- Final/submitted queries (less precise)
- When you need exact matches

## Anti-Patterns to Avoid

### Don't: Use category_search for brands

```javascript
// BAD
category_search_tool({ category: 'starbucks' });
// "starbucks" is not a category, returns error

// GOOD
search_and_geocode_tool({ q: 'Starbucks' });
```

### Don't: Use search_and_geocode for generic categories

```javascript
// BAD
search_and_geocode_tool({ q: 'coffee shops' });
// Less precise, may return unrelated results

// GOOD
category_search_tool({ category: 'coffee_shop' });
```

### Don't: Forget proximity for local searches

```javascript
// BAD - Results may be anywhere globally
category_search_tool({ category: 'restaurant' });

// GOOD - Biased to user location
category_search_tool({
  category: 'restaurant',
  proximity: { longitude: -122.4194, latitude: 37.7749 }
});
```

### Don't: Geocode ambiguous place names without proximity (REST too)

This applies to Mapbox Geocoding API v5 / Search Box in browser apps — not only MCP tools.

```javascript
// BAD — limit=1 without proximity can resolve "Lincoln Memorial" to Illinois
fetch(`https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(q)}.json?access_token=${token}&limit=1`);

// GOOD — bias to map center (and optional bbox)
fetch(
  `https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(q)}.json` +
    `?access_token=${token}&proximity=-77.0369,38.9072&bbox=-77.15,38.79,-76.90,38.99&limit=1`
);
```

Also debounce search inputs (`clearTimeout` + `setTimeout`) so every keystroke does not fire a geocode.

### Don't: Use bbox when you mean proximity

```javascript
// BAD - Hard boundary may exclude good nearby results
search_and_geocode_tool({
  q: 'pizza',
  bbox: [-122.42, 37.77, -122.41, 37.78] // Tiny box
});

// GOOD - Bias toward point, but flexible
search_and_geocode_tool({
  q: 'pizza',
  proximity: { longitude: -122.4194, latitude: 37.7749 }
});
```

### Don't: Request ETA unnecessarily

```javascript
// BAD - Costs API quota for routing calculations
search_and_geocode_tool({
  q: 'museums',
  eta_type: 'navigation',
  navigation_profile: 'driving'
});
// User didn't ask for travel time!

// GOOD - Only add ETA when needed
search_and_geocode_tool({ q: 'museums' });
// If user asks "how long to get there?", then add ETA
```

### Don't: Set limit too high for UI display

```javascript
// BAD - Overwhelming for simple dropdown
category_search_tool({
  category: 'restaurant',
  limit: 25
});
// Returns 25 restaurants for a 5-item dropdown

// GOOD - Match UI needs
category_search_tool({
  category: 'restaurant',
  limit: 5
});
```

## Quick Reference

### Tool Selection Flowchart

```
User query contains...

-> Specific name/brand (Starbucks, Empire State Building)
  -> search_and_geocode_tool

-> Generic category/plural (coffee shops, museums, any restaurant)
  -> category_search_tool

-> Coordinates -> Address
  -> reverse_geocode_tool

-> Address -> Coordinates
  -> search_and_geocode_tool with types: ["address"]
```

### Essential Parameters Checklist

**For local searches, ALWAYS set:**

- `proximity` (or bbox if strict boundary needed)

**For category searches, consider:**

- `limit` (match UI needs)
- `format` (json_string if plotting on map)

**For disambiguation, use:**

- `country` (when geographic context matters)
- `types` (when feature type matters)

**For travel-time ranking:**

- `eta_type`, `navigation_profile`, `origin` (costs API quota)

## Common Mistakes

1. **Forgetting proximity** -> Results are global/IP-based (or wrong state for ambiguous memorial/park names)
2. **Using wrong tool** -> category_search for "Starbucks" (use search_and_geocode)
3. **Invalid category** -> Check category_list first
4. **Bbox too small** -> No results; use proximity instead
5. **Requesting ETA unnecessarily** -> Adds API cost
6. **Limit too high for UI** -> Overwhelming user
7. **Not filtering types** -> Get cities when you want POIs
8. **No debounce on typeahead** -> Quota burn and racy UI

## Reference Files

Load these for deeper guidance on specific topics:

- **`references/advanced-params.md`** — poi_category, ETA, format, and language parameters
- **`references/workflows.md`** — Common patterns: Near Me, Branded, Geocoding, Category+Area, Reverse, Route-Based, Multilingual
- **`references/optimization-combining.md`** — Performance optimization, combining tools, handling no results, category list resource

© mapbox · MIT · mapbox/mapbox-agent-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой