cobejs — скилл для Claude Code: интерактивный глобус на cobe
Скилл помогает агенту собрать лёгкий вращающийся глобус с метками на cobe, без полного three.js. Пригодится для hero-блока или страницы «о нас».
npx skills add MengTo/Skills --skill cobejs -a claude-codeЧто делает cobejs
Скилл описывает работу с библиотекой cobe: создание канваса, настройку параметров, метки и жизненный цикл инстанса. Агент получает готовые шаблоны вызовов — createGlobe(canvas, {...}), опции phi, theta, scale, dark, diffuse, цвета baseColor, markerColor, glowColor, массив markers с координатами. Для остановки анимации есть globe.toggle(), для удаления — globe.destroy().
Внутри лежит разбор частых ошибок. Канвасу нужно задать CSS-размер и отдельно width/height с учётом DPR, иначе картинка расплывается. При ресайзе окна параметры пересчитывают заново. На мобильных DPR советует ограничить значением от 1 до 2 — иначе кадры проседают.
Есть готовый рецепт адаптивного глобуса с метками: расчёт размеров через getBoundingClientRect, подписка на resize с пересозданием инстанса. Скилл также задаёт агенту вопросы перед работой — размер и место глобуса, координаты и цвета меток, нужен ли drag для вращения или хватит фонового. Это повод сразу договориться о деталях, а не переделывать потом.
Какие задачи решает
- поставить вращающийся глобус в hero-блок
- добавить метки городов с координатами
- сделать глобус адаптивным под ресайз окна
- ограничить DPR на мобильных, чтобы не терять кадры
- встроить cobe в React или Next.js
Примеры запросов агенту
- сделай интерактивный глобус на cobe в hero-секции
- добавь метку на Сингапур и задай цвет маркера
- глобус должен вращаться сам, без drag
Как установить cobejs
1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill cobejs -a claude-code2Вручную: положить файлы
~/.claude/skills/cobejs/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/cobejs/
1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill cobejs -a codex2Вручную: положить файлы
.agents/skills/cobejs/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill cobejs -a cursor2Вручную: положить файлы
.cursor/skills/cobejs/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install MengTo/Skills cobejs2Вручную: положить файлы
.github/skills/cobejs/SKILL.md1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill cobejs -a gemini-cli2Командой платформы
gemini skills install https://github.com/MengTo/Skills --path agent-skills/web-design/cobejsВручную: положить файлы
.devin/skills/cobejs/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill cobejs -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о cobejs
Как установить cobejs в Claude?
Выполните npx skills add MengTo/Skills --skill cobejs -a claude-code. После этого файл скилла окажется в ~/.claude/skills/cobejs/SKILL.md.
Что делает cobejs?
Помогает агенту собрать лёгкий WebGL-глобус на библиотеке cobe: настроить канвас, метки, вращение и производительность. Отдельно разбирает интеграцию с React и Next.js.
Какие ошибки разбирает скилл?
Несовпадение размеров канваса, отсутствие пересчёта при ресайзе и слишком высокий DPR на мобильных. Для последнего советует ограничиться значением от 1 до 2.
Исходный текст
SKILL.md · MIT
---
name: cobejs
description: Use when adding a lightweight interactive globe with cobe (canvas setup, markers, interaction, performance, integration with React/Next.js).
---
# cobe.js — Lightweight WebGL Globe Skill
## When to use
- A “spinning globe” / location markers in hero or about pages
- You want a small, focused globe lib (not full three.js)
- Decorative + interactive (markers, rotation) with minimal setup
## Key APIs/patterns
- Core:
- `import createGlobe from "cobe"`
- `const globe = createGlobe(canvas, { ...options, onRender(state) { ... } })`
- Important options (common):
- `devicePixelRatio`, `width`, `height`
- `phi`, `theta` (rotation angles)
- `scale`, `dark`, `diffuse`
- `baseColor`, `markerColor`, `glowColor`
- `markers: [{ location: [lat, lon], size, color? }]`
- Lifecycle:
- `globe.toggle()` pauses RAF
- `globe.destroy()` removes instance
## Common pitfalls
- Canvas sizing mismatch
- Set CSS size AND set canvas `width/height` scaled for DPR.
- Not updating on resize
- Recompute width/height and recreate or update params.
- Too high DPR on mobile
- Clamp DPR to 1–2.
## Quick recipe: responsive globe with markers
```js
import createGlobe from "cobe";
const canvas = document.getElementById("cobe");
let phi = 0;
function setup() {
const rect = canvas.getBoundingClientRect();
const dpr = Math.min(window.devicePixelRatio, 2);
canvas.width = Math.round(rect.width * dpr);
canvas.height = Math.round(rect.height * dpr);
const globe = createGlobe(canvas, {
devicePixelRatio: dpr,
width: canvas.width,
height: canvas.height,
phi: 0,
theta: 0.2,
dark: 0,
diffuse: 1.2,
scale: 1,
mapSamples: 16000,
mapBrightness: 6,
baseColor: [0.2, 0.2, 0.25],
glowColor: [1, 1, 1],
markerColor: [0.8, 0.5, 1],
markers: [{ location: [1.3521, 103.8198], size: 0.08 }],
onRender: (state) => {
state.phi = phi;
phi += 0.01;
},
});
return globe;
}
let globe = setup();
window.addEventListener("resize", () => {
globe.destroy();
globe = setup();
});
```
## What to ask the user
- Globe size and placement (hero, section, card)?
- Marker locations + colors (brand-aligned)?
- Interaction needs (drag to rotate vs. ambient spin)?
© MengTo · MIT · MengTo/Skills