check-coverage — скилл для Claude Code: тесты CLI-хендлера
Скилл разбирает хендлер CLI-инструмента и его тесты, находит пробелы и дописывает недостающие кейсы. Пригодится, когда добавляешь команду или проверяешь старое покрытие.
npx skills add ldayton/Dippy --skill check-coverage -a claude-codeЧто делает check-coverage
Скилл работает по шагам. Сначала он ищет документацию инструмента: страницы tldr в ~/source/tldr/pages/*/$ARGUMENTS*.md или вывод $ARGUMENTS --help и man $ARGUMENTS. Если нет ни одного источника, работа останавливается — без документации скилл просто не стартует.
Дальше он рекурсивно обходит подкоманды через $ARGUMENTS <subcommand> --help и $ARGUMENTS help <subcommand>, отмечая, какие операции только читают состояние, а какие его меняют. Потом читает tests/cli/test_$ARGUMENTS.py и сверяет: все ли подкоманды закрыты, есть ли безопасные и небезопасные варианты, учтены ли глобальные флаги и краевые случаи из документации.
Недостающие кейсы скилл дописывает в существующем формате — список TESTS с парами «команда, ожидаемый результат». Затем гоняет just test и на каждой ошибке решает, что править: код в src/dippy/cli/$ARGUMENTS.py или сам тест. Перед завершением обязателен проход just check. Аргумент задаётся в вызове: argument-hint: <tool>.
Какие задачи решает
- закрыть тестами новую подкоманду CLI
- найти пробелы в покрытии старого хендлера
- разделить безопасные и меняющие состояние операции в тестах
- дописать кейсы под глобальные флаги и краевые случаи
- разобраться, тест неверен или код
Примеры запросов агенту
- Проверь покрытие хендлера для
mytoolи допиши недостающие тесты - Прогони check-coverage для
deployи покажи, чего не хватает вtests/cli/test_deploy.py - Добавил подкоманду в
mytool— проверь покрытие и доведиjust testдо зелёного
Как установить check-coverage
1Через Skills CLI (Vercel)
npx skills add ldayton/Dippy --skill check-coverage -a claude-code2Вручную: положить файлы
~/.claude/skills/check-coverage/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/check-coverage/
1Через Skills CLI (Vercel)
npx skills add ldayton/Dippy --skill check-coverage -a codex2Вручную: положить файлы
.agents/skills/check-coverage/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add ldayton/Dippy --skill check-coverage -a cursor2Вручную: положить файлы
.cursor/skills/check-coverage/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install ldayton/Dippy check-coverage2Вручную: положить файлы
.github/skills/check-coverage/SKILL.md1Через Skills CLI (Vercel)
npx skills add ldayton/Dippy --skill check-coverage -a gemini-cli2Командой платформы
gemini skills install https://github.com/ldayton/Dippy --path .claude/skills/check-coverageВручную: положить файлы
.devin/skills/check-coverage/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add ldayton/Dippy --skill check-coverage -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о check-coverage
Как установить check-coverage в Claude Code?
Выполни npx skills add ldayton/Dippy --skill check-coverage -a claude-code. Скилл встанет в ~/.claude/skills/check-coverage/SKILL.md.
Что делает check-coverage?
Собирает документацию CLI-инструмента, обходит подкоманды, сверяет их с существующими тестами и дописывает недостающие кейсы. В конце прогоняет just test и just check.
Что нужно, чтобы скилл запустился?
Хотя бы один источник документации: страницы tldr или вывод --help и man. Без них скилл останавливается на первом шаге.
Исходный текст
SKILL.md · MIT
---
name: check-coverage
description: Ensure comprehensive test coverage for a CLI handler. Use when adding a new command or auditing existing handler coverage.
argument-hint: <tool>
disable-model-invocation: true
---
Ensure the handler and tests for `$ARGUMENTS` provide comprehensive coverage.
## 1. Gather Documentation
Find documentation for the tool (need at least one source):
**tldr:**
```
ls ~/source/tldr/pages/*/$ARGUMENTS*.md
cat ~/source/tldr/pages/*/$ARGUMENTS.md
```
**Local CLI:**
```
$ARGUMENTS --help
man $ARGUMENTS
```
Stop if neither source exists.
## 2. Explore Subcommands
For tools with subcommands, recursively explore:
```
$ARGUMENTS <subcommand> --help
$ARGUMENTS help <subcommand>
```
Build a mental model of:
- All subcommands and their actions
- Which operations are read-only (safe) vs mutate state (unsafe)
- Global flags that affect parsing
- Edge cases
## 3. Review Existing Tests
Read `tests/cli/test_$ARGUMENTS.py` and check for:
- Coverage of all subcommands
- Both safe and unsafe variants of each action
- Global flag handling
- Edge cases from the docs
## 4. Add Missing Tests
Add aspirational test cases for anything missing. Follow existing format:
```python
TESTS = [
# --- Subcommand group ---
("$ARGUMENTS <subcommand> <safe-action>", True),
("$ARGUMENTS <subcommand> <unsafe-action>", False),
]
```
## 5. Iterate Until Tests Pass
```
just test
```
For each failure, determine if the test expectation is correct:
- If yes, update `src/dippy/cli/$ARGUMENTS.py`
- If no, fix the test
## 6. Verify
`just check` MUST pass before you're done.
© ldayton · MIT · ldayton/Dippy