shapely-compute — скилл для Claude Code: что делает и как установить
Выполняет вычислительную геометрию через Shapely: строит фигуры, проверяет пространственные предикаты и рассчитывает площади прямо в агенте.
npx skills add parcadei/Continuous-Claude-v3 --skill shapely-compute -a claude-codeЧто делает shapely-compute
Скилл добавляет агенту набор операций для двумерной геометрии библиотеки Shapely. С его помощью создаются точки, линии и полигоны из координат или формата WKT. Инструмент выполняет булевы операции пересечения и объединения, вычисляет площади и расстояния, а также проверяет предикаты вроде contains или within.
Все расчёты идут через CLI-команду uv run python scripts/shapely_compute.py. Для работы требуется пакетный менеджер uv и сам скрипт в структуре проекта. Без подготовленного Python-окружения вызовы завершатся ошибкой. При наличии самопересечений команда makevalid восстанавливает корректную топологию.
Какие задачи решает
- Рассчитать пересечение или объединение полигонов
- Проверить попадание точки внутрь границы через пространственный предикат
- Найти площадь, периметр или центроид геометрического объекта
- Исправить фигуру с нарушенной топологией через makevalid
Примеры запросов агенту
- Посчитай площадь полигона с координатами 0,0 1,0 1,1 0,1 через shapely-compute
- Проверь через shapely-compute, пересекаются ли два этих полигона WKT
- Исправь самопересечения в геометрии с помощью команды makevalid
Как установить shapely-compute
1Через Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill shapely-compute -a claude-code2Вручную: положить файлы
~/.claude/skills/shapely-compute/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/shapely-compute/
1Через Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill shapely-compute -a codex2Вручную: положить файлы
.agents/skills/shapely-compute/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill shapely-compute -a cursor2Вручную: положить файлы
.cursor/skills/shapely-compute/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install parcadei/Continuous-Claude-v3 shapely-compute2Вручную: положить файлы
.github/skills/shapely-compute/SKILL.md1Через Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill shapely-compute -a gemini-cli2Командой платформы
gemini skills install https://github.com/parcadei/Continuous-Claude-v3 --path .claude/skills/shapely-computeВручную: положить файлы
.devin/skills/shapely-compute/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add parcadei/Continuous-Claude-v3 --skill shapely-compute -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Из того же набора67
Похожие
Рядом в теме «Данные и базы»
Всё по теме «Данные и базы» →Вопросы о shapely-compute
Как установить shapely-compute в Claude Code?
Выполните команду npx skills add parcadei/Continuous-Claude-v3 --skill shapely-compute -a claude-code.
Что делает скилл shapely-compute?
Он предоставляет интерфейс командной строки для геометрических вычислений: создания фигур, булевых операций, поиска расстояний и трансформаций.
Что нужно для работы команд скилла?
Требуется наличие менеджера uv, рабочего окружения Python и скрипта scripts/shapely_compute.py в каталоге проекта.
Исходный текст
SKILL.md · MIT
---
name: shapely-compute
description: Computational geometry with Shapely - create geometries, boolean operations, measurements, predicates
triggers: ["geometry", "polygon", "intersection", "area", "contains", "distance between points", "buffer", "convex hull", "centroid", "WKT"]
---
# Computational Geometry with Shapely
## When to Use
- Creating geometric shapes (points, lines, polygons)
- Boolean operations (intersection, union, difference)
- Spatial predicates (contains, intersects, within)
- Measurements (area, length, distance, centroid)
- Geometry transformations (translate, rotate, scale)
- Validating and fixing invalid geometries
## Quick Reference
| I want to... | Command | Example |
|--------------|---------|---------|
| Create geometry | `create` | `create polygon --coords "0,0 1,0 1,1 0,1"` |
| Intersection | `op intersection` | `op intersection --g1 "POLYGON(...)" --g2 "POLYGON(...)"` |
| Check contains | `pred contains` | `pred contains --g1 "POLYGON(...)" --g2 "POINT(0.5 0.5)"` |
| Calculate area | `measure area` | `measure area --geom "POLYGON(...)"` |
| Distance | `distance` | `distance --g1 "POINT(0 0)" --g2 "POINT(3 4)"` |
| Transform | `transform translate` | `transform translate --geom "..." --params "1,2"` |
| Validate | `validate` | `validate --geom "POLYGON(...)"` |
## Commands
### create
Create geometric objects from coordinates.
```bash
# Point
uv run python scripts/shapely_compute.py create point --coords "1,2"
# Line (2+ points)
uv run python scripts/shapely_compute.py create line --coords "0,0 1,1 2,0"
# Polygon (3+ points, auto-closes)
uv run python scripts/shapely_compute.py create polygon --coords "0,0 1,0 1,1 0,1"
# Polygon with hole
uv run python scripts/shapely_compute.py create polygon --coords "0,0 10,0 10,10 0,10" --holes "2,2 8,2 8,8 2,8"
# MultiPoint
uv run python scripts/shapely_compute.py create multipoint --coords "0,0 1,1 2,2"
# MultiLineString (pipe-separated lines)
uv run python scripts/shapely_compute.py create multilinestring --coords "0,0 1,1|2,2 3,3"
# MultiPolygon (pipe-separated polygons)
uv run python scripts/shapely_compute.py create multipolygon --coords "0,0 1,0 1,1 0,1|2,2 3,2 3,3 2,3"
```
### op (operations)
Boolean geometry operations.
```bash
# Intersection of two polygons
uv run python scripts/shapely_compute.py op intersection \
--g1 "POLYGON((0 0,2 0,2 2,0 2,0 0))" \
--g2 "POLYGON((1 1,3 1,3 3,1 3,1 1))"
# Union
uv run python scripts/shapely_compute.py op union --g1 "POLYGON(...)" --g2 "POLYGON(...)"
# Difference (g1 - g2)
uv run python scripts/shapely_compute.py op difference --g1 "POLYGON(...)" --g2 "POLYGON(...)"
# Symmetric difference (XOR)
uv run python scripts/shapely_compute.py op symmetric_difference --g1 "..." --g2 "..."
# Buffer (expand/erode)
uv run python scripts/shapely_compute.py op buffer --g1 "POINT(0 0)" --g2 "1.5"
# Convex hull
uv run python scripts/shapely_compute.py op convex_hull --g1 "MULTIPOINT((0 0),(1 1),(0 2),(2 0))"
# Envelope (bounding box)
uv run python scripts/shapely_compute.py op envelope --g1 "POLYGON(...)"
# Simplify (reduce points)
uv run python scripts/shapely_compute.py op simplify --g1 "LINESTRING(...)" --g2 "0.5"
```
### pred (predicates)
Spatial relationship tests (returns boolean).
```bash
# Does polygon contain point?
uv run python scripts/shapely_compute.py pred contains \
--g1 "POLYGON((0 0,2 0,2 2,0 2,0 0))" \
--g2 "POINT(1 1)"
# Do geometries intersect?
uv run python scripts/shapely_compute.py pred intersects --g1 "..." --g2 "..."
# Is g1 within g2?
uv run python scripts/shapely_compute.py pred within --g1 "POINT(1 1)" --g2 "POLYGON(...)"
# Do geometries touch (share boundary)?
uv run python scripts/shapely_compute.py pred touches --g1 "..." --g2 "..."
# Do geometries cross?
uv run python scripts/shapely_compute.py pred crosses --g1 "LINESTRING(...)" --g2 "LINESTRING(...)"
# Are geometries disjoint (no intersection)?
uv run python scripts/shapely_compute.py pred disjoint --g1 "..." --g2 "..."
# Do geometries overlap?
uv run python scripts/shapely_compute.py pred overlaps --g1 "..." --g2 "..."
# Are geometries equal?
uv run python scripts/shapely_compute.py pred equals --g1 "..." --g2 "..."
# Does g1 cover g2?
uv run python scripts/shapely_compute.py pred covers --g1 "..." --g2 "..."
# Is g1 covered by g2?
uv run python scripts/shapely_compute.py pred covered_by --g1 "..." --g2 "..."
```
### measure
Geometric measurements.
```bash
# Area (polygons)
uv run python scripts/shapely_compute.py measure area --geom "POLYGON((0 0,1 0,1 1,0 1,0 0))"
# Length (lines, polygon perimeter)
uv run python scripts/shapely_compute.py measure length --geom "LINESTRING(0 0,3 4)"
# Centroid
uv run python scripts/shapely_compute.py measure centroid --geom "POLYGON((0 0,2 0,2 2,0 2,0 0))"
# Bounds (minx, miny, maxx, maxy)
uv run python scripts/shapely_compute.py measure bounds --geom "POLYGON(...)"
# Exterior ring (polygon only)
uv run python scripts/shapely_compute.py measure exterior_ring --geom "POLYGON(...)"
# All measurements at once
uv run python scripts/shapely_compute.py measure all --geom "POLYGON((0 0,2 0,2 2,0 2,0 0))"
```
### distance
Distance between geometries.
```bash
uv run python scripts/shapely_compute.py distance --g1 "POINT(0 0)" --g2 "POINT(3 4)"
# Returns: {"distance": 5.0, "g1_type": "Point", "g2_type": "Point"}
```
### transform
Affine transformations.
```bash
# Translate (move)
uv run python scripts/shapely_compute.py transform translate \
--geom "POLYGON((0 0,1 0,1 1,0 1,0 0))" --params "5,10"
# params: dx,dy or dx,dy,dz
# Rotate (degrees, around centroid by default)
uv run python scripts/shapely_compute.py transform rotate \
--geom "POLYGON((0 0,1 0,1 1,0 1,0 0))" --params "45"
# params: angle or angle,origin_x,origin_y
# Scale (from centroid by default)
uv run python scripts/shapely_compute.py transform scale \
--geom "POLYGON((0 0,1 0,1 1,0 1,0 0))" --params "2,2"
# params: sx,sy or sx,sy,origin_x,origin_y
# Skew
uv run python scripts/shapely_compute.py transform skew \
--geom "POLYGON(...)" --params "15,0"
# params: xs,ys (degrees)
```
### validate / makevalid
Check and fix geometry validity.
```bash
# Check if valid
uv run python scripts/shapely_compute.py validate --geom "POLYGON((0 0,1 0,1 1,0 1,0 0))"
# Returns: {"is_valid": true, "type": "Polygon", ...}
# Fix invalid geometry (self-intersecting, etc.)
uv run python scripts/shapely_compute.py makevalid --geom "POLYGON((0 0,2 2,2 0,0 2,0 0))"
```
### coords
Extract coordinates from geometry.
```bash
uv run python scripts/shapely_compute.py coords --geom "POLYGON((0 0,1 0,1 1,0 1,0 0))"
# Returns: {"coords": [[0,0],[1,0],[1,1],[0,1],[0,0]], "type": "Polygon"}
```
### fromwkt
Parse WKT and get geometry information.
```bash
uv run python scripts/shapely_compute.py fromwkt "POLYGON((0 0,1 0,1 1,0 1,0 0))"
# Returns: {"type": "Polygon", "bounds": [...], "area": 1.0, ...}
```
## Geometry Types
- `point` - Single coordinate (x, y) or (x, y, z)
- `line`/`linestring` - Sequence of connected points
- `polygon` - Closed shape with optional holes
- `multipoint`, `multilinestring`, `multipolygon` - Collections
## Input Formats
- **Coordinates string**: `"0,0 1,0 1,1 0,1"` (space-separated x,y pairs)
- **WKT**: `"POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))"`
## Output Format
All commands return JSON with:
- `wkt`: WKT representation of result geometry
- `type`: Geometry type (Point, LineString, Polygon, etc.)
- `bounds`: (minx, miny, maxx, maxy)
- `is_valid`, `is_empty`: Validity flags
- Measurement-specific fields (area, length, distance, etc.)
## Common Use Cases
| Use Case | Command |
|----------|---------|
| Collision detection | `pred intersects` |
| Point-in-polygon | `pred contains` |
| Area calculation | `measure area` |
| Buffer zones | `op buffer` |
| Shape combination | `op union` |
| Shape subtraction | `op difference` |
| Bounding box | `op envelope` or `measure bounds` |
| Simplify path | `op simplify` |
## Related Skills
- `/math-mode` - Full math orchestration (SymPy, Z3)
- `/math-plot` - Visualization with matplotlib
© parcadei · MIT · parcadei/Continuous-Claude-v3