agentsclimarketplace

R package update check

Skill NeonSalamander/r-package-update-check/R-package-update-check

Агент для автоматического сбора и описания новых пакетов CRAN за последнюю неделю. Используй этот навык когда пользователь просит: найти новые пакеты CRAN, сделать дайджест/обзор новинок CRAN, описать пакеты R за неделю, подготовить еженедельную сводку CRAN, или упоминает "hermes", "CRAN digest", "новые R-пакеты". Также триггерится при задачах мониторинга CRAN, составления бюллетеня или рассылки по новым пакетам R. Результат всегда оформляется и сохраняется как .md файл — используй этот навык всякий раз, когда нужен структурированный Markdown-дайджест пакетов CRAN.From its SKILL.md

Install
npx -y skills add NeonSalamander/r-package-update-check --skill R-package-update-check

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

9.1 KB, ~2.1k tokens by cl100k_base, as published. Nobody here has run it

R-package-update-check — Еженедельный дайджест новых пакетов CRAN

Агент собирает список пакетов, впервые опубликованных на CRAN за последние 7 дней, формирует человекочитаемые описания каждого пакета и сохраняет результат в виде .md файла.


Источники данных

  1. CRAN /web/packages/available_packages_by_date.html — страница с датами первой публикации. URL: https://cran.r-project.org/web/packages/available_packages_by_date.html
  2. crandb API (основной): https://crandb.r-pkg.org/{pkg} — JSON с полями Title, Description, Author, License, Imports и др.
  3. CRAN DESCRIPTION-файл (резервный): https://cran.r-project.org/web/packages/{pkg}/DESCRIPTION

Алгоритм выполнения

Шаг 1 — Получить список новых пакетов

Загрузи страницу с датами публикаций и отфильтруй пакеты, у которых дата первого появления попадает в диапазон [сегодня − 7 дней, сегодня].

# Пример парсинга в R
url <- "https://cran.r-project.org/web/packages/available_packages_by_date.html"
page <- rvest::read_html(url)
tbl  <- rvest::html_table(page)[[1]]
new_pkgs <- tbl[as.Date(tbl$Date) >= Sys.Date() - 7, ]

Если R недоступен — используй web_fetch + парсинг HTML напрямую.

Шаг 2 — Получить метаданные каждого пакета

Для каждого пакета из списка обратись к crandb API:

GET https://crandb.r-pkg.org/<pkg_name>

Извлеки поля: Title, Description, Author, Maintainer, License, Imports, Suggests, URL.

При ошибке 404 — пробуй DESCRIPTION-файл напрямую: https://cran.r-project.org/web/packages/<pkg>/DESCRIPTION

Шаг 3 — Сформировать Markdown-описание каждого пакета

Для каждого пакета используй строго этот шаблон:

### {Название пакета} ({версия})

**Что делает:** {1–2 предложения, суть пакета простым языком}

**Область применения:** {тег: статистика / визуализация / машинное обучение /
работа с данными / веб / биоинформатика / утилиты / другое}

**Зависимости:** {основные импорты через запятую, не более 5}

**Лицензия:** {лицензия}

**Автор/мейнтейнер:** {имя}

**Ссылка:** https://cran.r-project.org/package={pkg}

Описание «Что делает» — на языке пользователя, простым языком. Не копируй дословно поле Description из DESCRIPTION — перефразируй.

Шаг 4 — Собрать и сохранить итоговый .md файл

Структура файла

# Новые пакеты CRAN: {дата_начала} — {дата_конца}

> Дайджест сформирован автоматически агентом Hermes.
> Всего новых пакетов за период: {N}

## Содержание по категориям

- Статистика: {n}
- Визуализация: {n}
- Машинное обучение: {n}
- Работа с данными: {n}
- Биоинформатика: {n}
- Утилиты: {n}
- Другое: {n}

---

## Пакеты

{блоки пакетов, сгруппированные по категории, внутри категории — по алфавиту}

---

*Источник: [CRAN](https://cran.r-project.org) /
[crandb](https://crandb.r-pkg.org)*

Имя файла

Формат: cran-digest-{YYYY-MM-DD}.md, где дата — последний день периода (обычно сегодня).

Пример: cran-digest-2025-06-13.md

Сохранение и передача файла

  1. Определи рабочую директорию агента: используй переменную окружения $PWD или выполни os.getcwd() / getwd() — это и есть целевая папка. Никогда не используй захардкоженный путь вроде /mnt/user-data/outputs/.
  2. Запишь файл в определённую рабочую директорию: {рабочая_директория}/cran-digest-{YYYY-MM-DD}.md
  3. Вызови present_files с полным путём к файлу, чтобы пользователь мог его скачать.
  4. В чат выведи краткое резюме: количество пакетов, топ-3 категории.

Параметры запуска

Пользователь может уточнить запрос — учитывай эти параметры без переспросов:

ПараметрПо умолчаниюПример запроса
Период7 дней«за последние 14 дней»
Язык описанийЯзык запроса«описания на английском»
Фильтр по теменет«только пакеты для визуализации»
Имя файлаавто по дате«сохрани как weekly-cran.md»
Макс. пакетоввсе«топ-20 самых интересных»

Приоритеты при большом числе пакетов

Если пакетов больше 30 и пользователь не просил полный список:

  1. Предупреди о числе пакетов одной фразой.
  2. Предложи три варианта: показать все / только топ-N / отфильтровать по теме.
  3. При выборе «топ-N» — приоритизируй пакеты с наибольшим числом зависимостей (признак востребованности) или с наиболее содержательным Description.

Обработка ошибок

СитуацияДействие
crandb недоступенПереключись на DESCRIPTION-файл с CRAN
Пакет archived / исчез со страницыПропусти, упомяни в сноске файла
Пустое поле DescriptionНапиши «Описание недоступно», дай ссылку на CRAN
Сетевой таймаутПовтори 2 раза с паузой, затем пропусти пакет

Пример минимального вызова

«Покажи новые пакеты CRAN за эту неделю»

Агент без дополнительных вопросов:

  1. Определяет диапазон дат (сегодня − 7 дней).
  2. Получает список новых пакетов.
  3. Формирует описания.
  4. Сохраняет cran-digest-{сегодня}.md в outputs.
  5. Вызывает present_files — пользователь получает ссылку на скачивание.
  6. В чат выводит: «Готово. Найдено X пакетов. Файл сохранён.»

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.