matterjs — скилл для Claude Code: 2D-физика на Matter.js
Помогает агенту собрать сцену на Matter.js: движок, рендер, тела, ограничения и перетаскивание мышью. Пригодится, когда нужна физика на canvas.
npx skills add MengTo/Skills --skill matterjs -a claude-codeЧто делает matterjs
Скилл включается, когда в проекте появляется 2D-физика на Matter.js. Агент сначала уточняет окружение: чистый HTML, React или только canvas, и как выводить картинку — через Matter.Render для отладки или своим рендерером. Дальше он выдаёт минимальную связку Engine, World, Render и Runner и добавляет тела.
Внутри описан рабочий порядок: создать движок, поднять рендер с нужными размерами, запустить цикл, положить тела через Composite.add(engine.world, [...]). Для сплошной отрисовки советует выставить render.options.wireframes = false. Если нужен свой тайминг, вместо Runner.run можно звать Engine.update в собственном цикле. Перетаскивание мышью добавляется отдельно — через Mouse и MouseConstraint.
Для одностраничных приложений есть чек-лист уборки: остановить раннер, убрать canvas из DOM, очистить движок и мир. Без этого при переходах между экранами останутся лишние циклы и висящие слушатели — это повод проверить разметку перед тем, как оставлять скилл в проекте.
Какие задачи решает
- поднять движок и мир Matter.js с нуля
- добавить тела и статические опоры в сцену
- включить перетаскивание объектов мышью
- настроить отрисовку без каркасных линий
- корректно остановить симуляцию при уходе со страницы
Примеры запросов агенту
- собери сцену на Matter.js: земля и падающий квадрат
- добавь перетаскивание тел мышью в этой сцене
- останови раннер и убери canvas, когда компонент размонтируется
Как установить matterjs
1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill matterjs -a claude-code2Вручную: положить файлы
~/.claude/skills/matterjs/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/matterjs/
1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill matterjs -a codex2Вручную: положить файлы
.agents/skills/matterjs/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill matterjs -a cursor2Вручную: положить файлы
.cursor/skills/matterjs/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install MengTo/Skills matterjs2Вручную: положить файлы
.github/skills/matterjs/SKILL.md1Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill matterjs -a gemini-cli2Командой платформы
gemini skills install https://github.com/MengTo/Skills --path agent-skills/web-design/matterjsВручную: положить файлы
.devin/skills/matterjs/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add MengTo/Skills --skill matterjs -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о matterjs
Как установить matterjs в Claude?
Выполните npx skills add MengTo/Skills --skill matterjs -a claude-code. После этого файл скилла лежит в ~/.claude/skills/matterjs/SKILL.md.
Что делает matterjs?
Проводит агента по настройке 2D-физики на Matter.js: движок и мир, рендер с раннером, добавление тел и ограничений, взаимодействие мышью.
Нужен ли Matter.js заранее?
Да, скилл описывает работу с библиотекой Matter.js в вашем проекте, а не заменяет её.
Исходный текст
SKILL.md · MIT
---
name: matterjs
description: Use when implementing 2D physics interactions with Matter.js, including Engine/World setup, Render/Runner configuration, adding bodies and constraints, and scroll/interaction-friendly canvas scenes.
---
# Matter.js Skill
## Workflow
1. Confirm environment (plain HTML, React, or canvas-only) and rendering approach (Matter.Render for debug vs custom renderer).
2. Provide a minimal Engine/World/Render/Runner setup and add bodies.
3. Add interactions (mouse constraint) or constraints only if requested.
4. Share cleanup steps for SPA or teardown scenarios.
## Minimal setup
```html
<script>
const { Engine, Render, Runner, Bodies, Composite } = Matter;
const engine = Engine.create();
const render = Render.create({
element: document.body,
engine: engine,
options: {
width: 800,
height: 600,
wireframes: false
}
});
const runner = Runner.create();
Runner.run(runner, engine);
Render.run(render);
const ground = Bodies.rectangle(400, 610, 810, 60, { isStatic: true });
const box = Bodies.rectangle(400, 200, 80, 80);
Composite.add(engine.world, [ground, box]);
</script>
```
## Common patterns
- Use `Composite.add(engine.world, [...])` to add bodies to the world.
- Use `Render.create({ element, engine })` to create a canvas automatically, or pass a `canvas` you create yourself.
- Set `render.options.wireframes = false` for solid rendering.
- Use `Runner.run(runner, engine)` for a simple loop, or call `Engine.update` in your own loop if you need custom timing.
## Mouse interaction (optional)
```js
const { Mouse, MouseConstraint } = Matter;
const mouse = Mouse.create(render.canvas);
const mouseConstraint = MouseConstraint.create(engine, { mouse });
Composite.add(engine.world, mouseConstraint);
render.mouse = mouse;
```
## Cleanup checklist (SPA)
- Stop the runner with `Runner.stop(runner)`.
- Remove the render canvas from the DOM.
- Clear engine and world if needed.
## Questions to ask when specs are missing
- What viewport size and scaling should the canvas use?
- Are we using Matter.Render or a custom renderer?
- Do you want mouse/touch drag interaction?
- Should the simulation loop be paused when offscreen?
© MengTo · MIT · MengTo/Skills