attester-verify-packages — правило GitHub Copilot: проверка
Проверяет имена пакетов и символов PyPI и npm через attester.dev до установки или импорта. Нужен для защиты от выдуманных зависимостей.
.github/instructions/attester-verify-packages.instructions.mdЧто делает attester-verify-packages
Правило просит GitHub Copilot проверять сторонние пакеты перед добавлением в requirements.txt, pyproject.toml или package.json, а также перед import, require и вызовом непроверенного символа. Проверка идёт через опубликованные артефакты PyPI и npm, а не через память модели. Стандартные библиотеки, локальные модули и имена, уже проверенные в этой сессии, можно пропускать.
Для пакетов используется POST-запрос к https://attester.dev/demo/v1/package/exists, для символов — к https://attester.dev/demo/v1/symbol/exists. Сервис работает без аккаунта и API-ключа, но ограничивает бесплатный доступ 25 вызовами в день на IP-клиент. При HTTP 429 или сбое сети правило сообщает причину и предлагает консервативный вариант с известным пакетом и закреплённой версией. Имя с typosquat_adjacent: true устанавливать нельзя.
Какие задачи решает
- проверить пакет PyPI перед добавлением зависимости
- подтвердить существование npm-пакета до установки
- проверить символ библиотеки перед импортом
- разобрать ошибку о пропавшем пакете или символе
- отсеять опечатку или выдуманное имя зависимости
Примеры запросов агенту
- Добавь зависимость в
requirements.txt, но сначала проверь существование пакета PyPI. - Перед импортом проверь, что символ существует в npm-пакете.
- Сборка упала на отсутствующем модуле. Проверь имя пакета и предложи реальное совпадение.
Как установить attester-verify-packages
Вручную: положить файлы
.github/instructions/attester-verify-packages.instructions.mdПоле applyTo задаёт, к каким файлам применять
Вручную: положить файлы
.claude/rules/attester-verify-packages.mdПоле paths во frontmatter ограничивает файлы: applyTo из источника → paths
AGENTS.md
Codex читает AGENTS.md: вставьте текст правила туда
Вручную: положить файлы
.cursor/rules/attester-verify-packages.mdcВо frontmatter: description, globs, alwaysApply. applyTo из источника → globs, иначе правило само не подключится
Вручную: положить файлы
.devin/rules/attester-verify-packages.mdВручную: положить файлы
.clinerules/attester-verify-packages.mdПо шагам, с командами для каждой платформы: AGENTS.md и CLAUDE.md: что это, кто читает и какой выбрать
Вопросы о attester-verify-packages
Как установить attester-verify-packages в GitHub Copilot?
Добавьте файл правила по пути .github/instructions/attester-verify-packages.instructions.md.
Что делает attester-verify-packages?
Правило проверяет пакеты и символы PyPI и npm через attester.dev до установки, импорта или вызова. При отрицательном ответе оно не даёт использовать имя и показывает ближайшие совпадения.
Нужен ли API-ключ для проверки?
Нет, endpoint работает без аккаунта и API-ключа. Бесплатный доступ ограничен 25 вызовами в день на IP-клиент.
Исходный текст
attester-verify-packages.instructions.md · MIT
---
description: 'Verify PyPI and npm package and symbol names against the attester.dev existence oracle before installing or importing, so hallucinated dependencies never reach code'
applyTo: '**'
---
# Verify packages before installing or importing
Use the attester.dev existence oracle before adding any third-party dependency or calling a library symbol you cannot confirm exists. The oracle answers from real published artifacts (PyPI wheels, npm tarballs), not from model memory.
This instruction exists because models invent plausible package names: a USENIX Security 2025 study measured 5.2% to 21.7% of suggested package names as nonexistent, depending on model and ecosystem.
## When to check
- Before adding a package to a dependency file (`requirements.txt`, `pyproject.toml`, `package.json`) or running an install command for a package you did not choose yourself.
- Before writing an `import`, `require`, or `from ... import` for a third-party package.
- Before calling a function, class, or constant you cannot confirm exists in the target package.
- When a build fails on a missing package or symbol: check the name before changing anything else.
Skip the check for standard library modules, local project modules, and names already verified this session.
## How to check
Free keyless endpoint, no account or API key. Quota: 25 calls per day per client IP, reset 00:00 UTC.
1. Package check: POST `https://attester.dev/demo/v1/package/exists` with body `{"ecosystem": "pypi" | "npm", "name": "<name>"}`. Proceed only when `exists` is `true`.
2. Symbol check: POST `https://attester.dev/demo/v1/symbol/exists` with body `{"ecosystem": "pypi" | "npm", "package": "<package>", "symbol": "<symbol>"}`. On a miss, prefer the `closest_match` suggestions over inventing variants.
On HTTP 429 (daily quota spent) or on network failure: state that the check was skipped and why, then continue with the most conservative option (prefer well-known packages and pinned versions).
## What to do with answers
- `exists: true`: proceed. When pinning, prefer the version in `latest_version`.
- `exists: false`: do not install or import. Report the negative to the user together with the oracle's closest real names (`adjacent_to`, `closest_match`) and ask which one was meant.
- `typosquat_adjacent: true`: treat as a strong signal that the name is a typo or a hallucination. Never install the flagged name.
## Higher volume
The free tier covers normal editing sessions. A paid route without the daily cap exists for high-volume use; see the service docs for details.
© github · MIT · github/awesome-copilot