write-unit-tests — скилл для Claude Code: тесты для tldraw SDK
Скилл для написания unit- и интеграционных тестов в репозитории tldraw: подсказывает, где размещать тесты, как работать с TestEditor и какие ловушки Vitest подстерегают.
npx skills add tldraw/tldraw --skill write-unit-tests -a claude-codeЧто делает write-unit-tests
Скилл описывает, как писать тесты в монорепозитории tldraw на Vitest. Тесты запускаются из директорий воркспейсов, а не из корня репозитория. Для packages/editor пишут тесты на примитивы, геометрию и менеджеры, для packages/tldraw — на всё, что требует стандартных фигур и инструментов.
Внутри — правила размещения файлов, список примеров для старта и разбор неочевидных мест. События колеса и пинча батчатся, поэтому после editor.dispatch() нужен editor.emit('tick', 16), иначе событие не применится. Для сравнения геометрии с плавающей точкой используется toCloselyMatchObject вместо toMatchObject, иначе тест падает на шуме округления. Анимации требуют подмены requestAnimationFrame на уровне модуля: vi.useFakeTimers() сам по себе не помогает.
У каждого пакета свой TestEditor, и они не взаимозаменяемы: в packages/editor нет стандартных фигур и инструментов. Импортировать нужно из того пакета, который тестируете. В afterEach обязателен editor?.dispose(), иначе подписки и таймеры утекают в следующие тесты того же файла. Скилл требует восстанавливать vi.spyOn через mockRestore() и глобальные состояния в finally или afterEach.
Какие задачи решает
- написать первый тест для нового компонента tldraw
- разобраться, в каком воркспейсе разместить тест
- починить падающий тест из-за шума округления геометрии
- заставить работать тесты с анимацией и requestAnimationFrame
- убрать утечки таймеров между тестами в одном файле
Примеры запросов агенту
- Напиши unit-тест для
Vec.tsрядом с файлом - Добавь интеграционный тест на SelectTool в
packages/tldraw/src/test/ - Почини падающий тест в
ArrowShapeUtil.test.ts
Как установить write-unit-tests
1Через Skills CLI (Vercel)
npx skills add tldraw/tldraw --skill write-unit-tests -a claude-code2Вручную: положить файлы
~/.claude/skills/write-unit-tests/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/write-unit-tests/
1Через Skills CLI (Vercel)
npx skills add tldraw/tldraw --skill write-unit-tests -a codex2Вручную: положить файлы
.agents/skills/write-unit-tests/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add tldraw/tldraw --skill write-unit-tests -a cursor2Вручную: положить файлы
.cursor/skills/write-unit-tests/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install tldraw/tldraw write-unit-tests2Вручную: положить файлы
.github/skills/write-unit-tests/SKILL.md1Через Skills CLI (Vercel)
npx skills add tldraw/tldraw --skill write-unit-tests -a gemini-cli2Командой платформы
gemini skills install https://github.com/tldraw/tldraw --path skills/write-unit-testsВручную: положить файлы
.devin/skills/write-unit-tests/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add tldraw/tldraw --skill write-unit-tests -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о write-unit-tests
Как установить write-unit-tests в Claude Code?
Выполните npx skills add tldraw/tldraw --skill write-unit-tests -a claude-code. Скилл появится по пути ~/.claude/skills/write-unit-tests/SKILL.md.
Что делает write-unit-tests?
Описывает, как писать unit- и интеграционные тесты на Vitest в репозитории tldraw: где размещать файлы, как использовать TestEditor и какие подводные камни есть у событий, анимаций и моков.
Почему тест с колесом мыши не срабатывает после dispatch?
События колеса и пинча батчатся. После editor.dispatch(wheelEvent) нужно вызвать editor.emit('tick', 16), чтобы событие применилось.