Skills.sh API: новый инструмент для анализа open-source скиллов

#api#vercel#skills#open-source

Когда в очередной раз нужно проверить актуальность библиотеки в резюме кандидата или оценить стек технологии для нового проекта, руки сами тянутся к Google и GitHub. Но теперь есть альтернатива — skills.sh API от Vercel, который агрегирует данные о более чем 600 тысячах навыков из open-source экосистемы.

Что умеет skills.sh API

API даёт доступ к трем ключевым функциям:

  1. Поиск навыков — ищет не только по названиям, но и по алиасам (например, “next” найдёт Next.js)
  2. Детальная информация — популярность, связанные технологии, дата последнего обновления
  3. Проверка безопасности — данные аудитов и уязвимостей

Пример запроса через cURL:

curl -H "Authorization: Bearer $VERCEL_OIDC_TOKEN" \
  "https://skills.sh/api/v1/skills?search=react"

В ответ получите JSON с массивом технологий, где для каждой есть:

Как работает аутентификация

Vercel использует короткоживущие OIDC-токены, привязанные к конкретному проекту и команде. Это решает две проблемы:

  1. Безопасность — не нужно хранить долгоживущие секреты
  2. Ротация — токены обновляются автоматически

Лимит — 600 запросов в минуту на команду, что более чем достаточно для большинства сценариев. Если лимит превышен, API возвращает 429 с заголовком Retry-After.

Практические сценарии использования

Проверка резюме

Вместо ручного поиска по GitHub и npm можно автоматизировать проверку технологий из резюме:

async function verifySkills(resumeSkills) {
  const results = [];
  for (const skill of resumeSkills) {
    const response = await fetch(
      `https://skills.sh/api/v1/skills?search=${encodeURIComponent(skill)}`,
      { headers: { Authorization: `Bearer ${process.env.VERCEL_OIDC_TOKEN}` } }
    );
    const data = await response.json();
    results.push({ skill, data: data[0] });
  }
  return results;
}

Анализ зависимостей проекта

Перед обновлением зависимостей можно массово проверить их безопасность:

npm ls --depth=0 | awk -F ' ' '{print $2}' | cut -d '@' -f1 | \
xargs -I {} curl -s -H "Authorization: Bearer $VERCEL_OIDC_TOKEN" \
"https://skills.sh/api/v1/skills/{}" | jq '.security_audit'

Ограничения и подводные камни

  1. Coverage — API покрывает в основном JavaScript/TypeScript экосистему. Для Python, Go или Rust данных пока меньше.
  2. Freshness — данные обновляются раз в сутки, что может быть критично для проверки только что обнаруженных уязвимостей.
  3. Rate limiting — 600 RPM звучит много, но для batch-обработки больших проектов может не хватить.

Альтернативы и когда их выбирать

Skills.sh API занимает нишу быстрого поверхностного анализа без необходимости копаться в деталях каждого инструмента.

Для интеграции с существующими пайплайнами можно использовать официальный JavaScript-клиент или работать с API напрямую. Документация достаточно подробная, но примеров для Python или Go пока нет — приходится писать обёртки самостоятельно.

Главный плюс — скорость получения ответов на типовые вопросы вроде “насколько популярен этот инструмент” или “были ли у него критические уязвимости”. Для всего остального пока придётся использовать традиционные методы.


Попробуй сам: Vercel — Edge Functions и serverless деплой.


Источник: https://vercel.com/changelog/the-skills-sh-api-is-now-available