К основному содержанию
скилл CX Codex

r-package-development — скилл для Claude Code: разработка R-пакетов

Скилл ведёт агента по работе с R-пакетом: тесты через testthat, документация roxygen2, проверка R CMD check и запись в NEWS.md.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add posit-dev/skills --skill r-package-development -a claude-code
Открыть на GitHub

Что делает r-package-development

Скилл задаёт агенту правила разработки R-пакета на devtools, testthat и roxygen2. Внутри — набор команд, которые агент запускает через Rscript -e: загрузка кода из пакета, прогон всех тестов, тесты по фильтру имён файлов, тесты одного файла и одной проверки по описанию, пересборка документации, проверка pkgdown и devtools::check().

Отдельные разделы описывают код, тесты, документацию и NEWS.md. После генерации кода агент обязан выполнить air format .. В коде используется базовый пайп |> вместо %>%, а для однострочных анонимных функций — \() .... Тесты для R/{name}.R кладутся в tests/testthat/test-{name}.R, и новый код без теста не остаётся. Ошибки и предупреждения проверяются через expect_snapshot(error = TRUE) и expect_snapshot(), а не через expect_error() и expect_warning().

Для работы нужен установленный R с пакетами devtools, testthat, roxygen2 и pkgdown, а форматирование завязано на внешнюю утилиту air — без неё шаг форматирования не пройдёт. Документация пишется roxygen2 с переносом строк на 80 символов, каждая новая тема добавляется в _pkgdown.yml, а после правки комментария пакет документируется заново.

Какие задачи решает

  • прогнать тесты одного файла пакета и разобрать падение
  • пересобрать roxygen2-документацию после правки комментариев
  • добавить тест к новой функции в нужный файл tests/testthat
  • проверить пакет через R CMD check перед релизом
  • записать пользовательское изменение пунктом в NEWS.md

Примеры запросов агенту

  • прогони тесты для R/utils.R и покажи, что упало
  • добавь roxygen2-документацию к новой экспортируемой функции
  • внеси изменение в NEWS.md и пересобери документацию

Как установить r-package-development

1Через Skills CLI (Vercel)

npx skills add posit-dev/skills --skill r-package-development -a claude-code

2Вручную: положить файлы

~/.claude/skills/r-package-development/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/r-package-development/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора18

quarto-authoring Скилл для работы с Quarto: .qmd, _quarto.yml, перекрёстные ссылки, выноски, цитаты, диаграммы Mermaid и миграция с R Markdown. CX Codex +1 1 400установок critical-code-reviewer Разбирает код и пул-реквесты по правильности, безопасности, доступности и тестам. Пригодится, когда нужен строгий разбор перед мержем. CX Codex +1 1 000установок brand-yml Скилл собирает и правит файлы _brand.yml, чтобы цвета, шрифты и логотипы совпадали в Shiny-приложениях и документах Quarto. CX Codex +1 912установок shiny-bslib Скилл для сборки дашбордов на Shiny с bslib и Bootstrap 5. Пригодится, когда переносите старое приложение на новые компоненты. CX Codex +1 797установок describe-design Скилл исследует кодовую базу и пишет markdown-документ о том, как устроена фича или система. Пригодится для онбординга и передачи знаний. CX Codex +1 785установок shiny-bslib-theming Скилл для оформления Shiny-приложений через bslib и Bootstrap 5: пресеты, цвета, шрифты, тёмный режим и живую подстройку темы. CX Codex +1 746установок create-release-checklist Скилл формирует чеклист подготовки релиза для R-пакета и заводит под него issue в GitHub. Пригодится мейнтейнерам перед публикацией новой версии. CX Codex +1 704установок release-post Пишет блог-пост о выпуске R или Python пакета по правилам блогов Tidyverse и Shiny. Пригодится, когда NEWS.md уже есть, а текста для сайта нет. CX Codex +1 684установок

Похожие

dart-migrate-to-checks-package dart-lang Переводит тесты Dart с устаревшего пакета package:matcher на package:checks. Пригодится для перехода на строгую типизацию утверждений и улучшение диагностики ошибок. CX Codex +1 18 100установок uv-package-manager Seth Hobson Скилл помогает агенту вести Python-проекты через uv: ставить зависимости, создавать окружения и управлять версиями Python. Подойдёт для новых проектов и миграции с pip. CX Codex 15 210установок dart-use-path-package flutter Учит агента работать с путями файлов в Dart через package:path, избегая строковых операций, которые ломаются на Windows. CX Codex +1 6 000установок aube-package-manager reason-machines Скилл подсказывает, как работать с пакетным менеджером aube в Node.js-проектах. Пригодится для зависимостей, workspaces, CI и миграции с pnpm. CX Codex +1 392установок npm-package jwynia Скилл ведёт агента через создание npm-библиотеки на Bun: скаффолдинг, строгий TypeScript, тесты, сборка и публикация. CX Codex +1 331установок python-pypi-package-builder официальный github Скилл помогает собрать Python-пакет, проверить его, настроить версию и опубликовать в PyPI. Подойдёт для библиотек, SDK, CLI и плагинов. 943установок

Рядом в теме «Языки программирования»

Все скиллы по теме «Языки программирования» →

Вопросы о r-package-development

Как установить r-package-development в Claude?

Выполните npx skills add posit-dev/skills --skill r-package-development -a claude-code. Скилл окажется в ~/.claude/skills/r-package-development/SKILL.md.

Что делает r-package-development?

Описывает агенту, как вести разработку R-пакета: запускать тесты testthat, собирать документацию roxygen2, проверять пакет и обновлять NEWS.md.

Что нужно для работы скилла?

Установленный R и пакеты devtools, testthat, roxygen2 и pkgdown. Форматирование кода идёт через утилиту air format ., поэтому она должна быть доступна в системе.

Исходный текст

SKILL.md · MIT
---
name: r-package-development
description: R package development with devtools, testthat, and roxygen2. Use when the user is working on an R package, running tests, writing documentation, or building package infrastructure.
metadata:
  author: Simon P. Couch (@simonpcouch)
  version: "1.2"
---

# R package development

## Key commands

```
# Run code in the package
Rscript -e "devtools::load_all(); code"

# Run all tests
Rscript -e "devtools::test()"

# Run all tests for files starting with {name}
Rscript -e "devtools::test(filter = '^{name}')"

# Run all tests for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R')"

# Run a single test "blah" for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R', desc = 'blah')"

# Redocument the package
Rscript -e "devtools::document()"

# Check pkgdown documentation
Rscript -e "pkgdown::check_pkgdown()"

# Check the package with R CMD check
Rscript -e "devtools::check()"

# Format code
air format .
```

## Coding

* Always run `air format .` after generating code.
* Use the base pipe operator (`|>`) not the magrittr pipe (`%>%`).
* Use `\() ...` for single-line anonymous functions. For all other cases, use `function() {...}`.

## Testing

- Tests for `R/{name}.R` go in `tests/testthat/test-{name}.R`.
- All new code should have an accompanying test.
- If there are existing tests, place new tests next to similar existing tests.
- Strive to keep tests minimal with few comments.
- Avoid `expect_true()` and `expect_false()` in favour of a specific expectation which will give a better failure message.
- When testing errors and warnings, don't use `expect_error()` or `expect_warning()`. Instead, use `expect_snapshot(error = TRUE)` for errors and `expect_snapshot()` for warnings because these allow the user to review the full text of the output.

## Documentation

- Every user-facing function should be exported and have roxygen2 documentation.
- Wrap roxygen comments at 80 characters.
- Internal functions should not have roxygen documentation.
- Whenever you add a new (non-internal) documentation topic, also add the topic to `_pkgdown.yml`.
- Always re-document the package after changing a roxygen2 comment.
- Use `pkgdown::check_pkgdown()` to check that all topics are included in the reference index.

## `NEWS.md`

- Every user-facing change should be given a bullet in `NEWS.md`. Do not add bullets for small documentation changes or internal refactorings.
- Each bullet should briefly describe the change to the end user.
- If the change is related to a function, put the name of the function early in the bullet.
- If the bullet is related to a GitHub issue or pull request, reference it by number in parentheses before the final period: `(#123).`.
- Order bullets alphabetically by function name. Put all bullets that don't mention function names at the beginning.

© Simon P. Couch (@simonpcouch) · MIT · posit-dev/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой