AI Agent tool that monitors CRAN for new R packages and generates automated concise summaries.
SaferSkills independently audited r-package-update-check (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Агент собирает список пакетов, впервые опубликованных на CRAN за последние 7 дней, формирует человекочитаемые описания каждого пакета и сохраняет результат в виде `.md` файла.
первой публикации. URL: https://cran.r-project.org/web/packages/available_packages_by_date.html
https://crandb.r-pkg.org/{pkg} — JSON с полямиTitle, Description, Author, License, Imports и др.
https://cran.r-project.org/web/packages/{pkg}/DESCRIPTION
Загрузи страницу с датами публикаций и отфильтруй пакеты, у которых дата первого появления попадает в диапазон [сегодня − 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 напрямую.
Для каждого пакета из списка обратись к 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
Для каждого пакета используй строго этот шаблон:
### {Название пакета} ({версия})
**Что делает:** {1–2 предложения, суть пакета простым языком}
**Область применения:** {тег: статистика / визуализация / машинное обучение /
работа с данными / веб / биоинформатика / утилиты / другое}
**Зависимости:** {основные импорты через запятую, не более 5}
**Лицензия:** {лицензия}
**Автор/мейнтейнер:** {имя}
**Ссылка:** https://cran.r-project.org/package={pkg}Описание «Что делает» — на языке пользователя, простым языком. Не копируй дословно поле Description из DESCRIPTION — перефразируй.
#### Структура файла
# Новые пакеты 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
#### Сохранение и передача файла
$PWDили выполни os.getcwd() / getwd() — это и есть целевая папка. Никогда не используй захардкоженный путь вроде /mnt/user-data/outputs/.
{рабочая_директория}/cran-digest-{YYYY-MM-DD}.md
present_files с полным путём к файлу, чтобы пользователь мог его скачать.Пользователь может уточнить запрос — учитывай эти параметры без переспросов:
| Параметр | По умолчанию | Пример запроса |
|---|---|---|
| Период | 7 дней | «за последние 14 дней» |
| Язык описаний | Язык запроса | «описания на английском» |
| Фильтр по теме | нет | «только пакеты для визуализации» |
| Имя файла | авто по дате | «сохрани как weekly-cran.md» |
| Макс. пакетов | все | «топ-20 самых интересных» |
Если пакетов больше 30 и пользователь не просил полный список:
(признак востребованности) или с наиболее содержательным Description.
| Ситуация | Действие |
|---|---|
| crandb недоступен | Переключись на DESCRIPTION-файл с CRAN |
| Пакет archived / исчез со страницы | Пропусти, упомяни в сноске файла |
| Пустое поле Description | Напиши «Описание недоступно», дай ссылку на CRAN |
| Сетевой таймаут | Повтори 2 раза с паузой, затем пропусти пакет |
«Покажи новые пакеты CRAN за эту неделю»
Агент без дополнительных вопросов:
cran-digest-{сегодня}.md в outputs.present_files — пользователь получает ссылку на скачивание.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.