{
  "host": "github-packages.dmitryq.com",
  "default_language": "en",
  "languages": {
    "en": "https://github-packages.dmitryq.com/",
    "ru": "https://github-packages.dmitryq.com/ru/"
  },
  "name": {
    "ru": "Ссылки на пакеты для GitHub",
    "en": "Package Links for GitHub"
  },
  "summary": {
    "ru": "Выделите импорт, зависимость или команду установки на GitHub — рядом ссылки на npm, PyPI, Go и др. Неофициальное, без сети.",
    "en": "Select an import, a dependency or an install command on GitHub to get links to npm, PyPI, Go and more. Unofficial; no network."
  },
  "also_on_chrome": false,
  "chrome": null,
  "firefox": {
    "version": "1.0.0",
    "slug": "package-links-for-github",
    "url": "https://addons.mozilla.org/firefox/addon/package-links-for-github/",
    "id": "github-packages@dmitryq",
    "data_collection": {
      "required": [
        "none"
      ]
    }
  },
  "permissions": [],
  "optional_permissions": [],
  "host_permissions": [],
  "optional_host_permissions": [],
  "content_scripts": [
    "https://github.com/*",
    "https://raw.githubusercontent.com/*"
  ],
  "description_firefox": {
    "ru": "Выделите на GitHub строку зависимости, импорт или команду установки — рядом появится маленькая панель со ссылками на страницы пакетов: npm, PyPI, pkg.go.dev, crates.io, RubyGems, Packagist, Maven Central. Неофициальное: не связано с GitHub.\n\nГДЕ РАБОТАЕТ\n• Просмотр файла, в том числе новый просмотр кода GitHub, и файлы Raw (raw.githubusercontent.com).\n• Диффы pull request и коммитов: имя файла берётся из заголовка диффа.\n• README, задачи и обсуждения pull request: блоки кода и строчный код.\n\nЧТО ПОНИМАЕТ\n• package.json и composer.json — только строки внутри dependencies, devDependencies, require и подобных. \"name\", \"version\", \"scripts\" и \"engines\" ссылками не становятся. Псевдоним \"npm:пакет\" ведёт на настоящий пакет, а \"file:\" и \"workspace:\" пропускаются.\n• requirements.txt, pyproject.toml (dependencies, optional-dependencies, dependency-groups, Poetry), Pipfile. Имена приводятся к виду PyPI: Foo_Bar → foo-bar, \"requests[socks]>=2.31\" → requests.\n• go.mod и go.sum, импорты Go: путь модуля целиком, с суффиксом /v2, без версии.\n• Cargo.toml, Gemfile и .gemspec, pom.xml, build.gradle и libs.versions.toml.\n• Импорты JavaScript/TypeScript (import, require, import()), включая @scope/pkg и подпути вроде lodash/fp. Встроенные модули Node.js (fs, node:path) ведут в справку Node.js, а не на одноимённые пакеты-заглушки npm.\n• Импорты Python. Модули стандартной библиотеки ведут в справку Python, известные расхождения имён учтены (yaml → PyYAML, cv2 → opencv-python, PIL → Pillow, sklearn → scikit-learn), относительные импорты и папки самого репозитория пропускаются.\n• Команды: pip, uv, poetry, pipx, npm, npx, npm create, yarn, pnpm, bun, go get и go install, cargo add и install, gem install, bundle add, composer require — с приглашением «$», «>>>» и переносом строки «\\».\n\nДостаточно выделить имя двойным щелчком: строка вокруг выделения учитывается целиком. Обычный текст без команды ссылок не даёт: слово «requests» в предложении — это просто слово.\n\nКЛАВИАТУРА\nВыделение с клавиатуры (Shift+стрелки) тоже работает. Пока панель открыта: Tab — к ссылкам, стрелки — между ними, Enter — открыть, Esc — закрыть и вернуться к коду с тем же выделением. Клавиши в панели не уходят в горячие клавиши GitHub.\n\nПРИВАТНО И БЕЗ СЕТИ\n• Дополнение ничего не загружает и не проверяет: ссылки собираются из выделенного текста прямо на странице. Поэтому не нужен токен GitHub и нет своего сервера, который может перестать работать.\n• Имя пакета уходит в реестр, только когда вы сами откроете ссылку; адрес страницы GitHub при этом не передаётся.\n• Нет аналитики, рекламы, хранилища и разрешений, кроме доступа к github.com и raw.githubusercontent.com.\n\nЧЕСТНО О ГРАНИЦАХ\n• Ссылки не встраиваются в код: в новом просмотре кода GitHub поверх строк лежит невидимое поле, поэтому — панель по выделению.\n• Существование пакета не проверяется (это потребовало бы запросов в реестры). Внутренний или приватный пакет даст ссылку, которая может не открыться.\n• Для импорта Python имя модуля не всегда совпадает с именем пакета; кроме известных случаев берётся имя модуля.\n• Gist, GitHub Enterprise и github.dev не поддерживаются.\n\nИнтерфейс на русском и английском, светлая и тёмная тема GitHub.",
    "en": "Select a dependency line, an import or an install command on GitHub, and a small panel next to it links to the package pages: npm, PyPI, pkg.go.dev, crates.io, RubyGems, Packagist, Maven Central. Unofficial: not affiliated with GitHub.\n\nWHERE IT WORKS\n• File view, including GitHub's new code view, and Raw files (raw.githubusercontent.com).\n• Pull request and commit diffs: the file name comes from the diff header.\n• READMEs, issues and pull request conversations: code blocks and inline code.\n\nWHAT IT READS\n• package.json and composer.json: only lines inside dependencies, devDependencies, require and the like. \"name\", \"version\", \"scripts\" and \"engines\" never become links. An \"npm:package\" alias links the real package; \"file:\" and \"workspace:\" are skipped.\n• requirements.txt, pyproject.toml (dependencies, optional-dependencies, dependency-groups, Poetry), Pipfile. Names are normalized the way PyPI does: Foo_Bar → foo-bar, \"requests[socks]>=2.31\" → requests.\n• go.mod and go.sum, Go imports: the full module path, with its /v2 suffix, without the version.\n• Cargo.toml, Gemfile and .gemspec, pom.xml, build.gradle and libs.versions.toml.\n• JavaScript/TypeScript imports (import, require, import()), including @scope/pkg and subpaths such as lodash/fp. Node.js built-ins (fs, node:path) link to the Node.js docs, not to placeholder packages of the same name on npm.\n• Python imports. Standard library modules link to the Python docs, well-known name mismatches are handled (yaml → PyYAML, cv2 → opencv-python, PIL → Pillow, sklearn → scikit-learn), relative imports and the repository's own folders are skipped.\n• Commands: pip, uv, poetry, pipx, npm, npx, npm create, yarn, pnpm, bun, go get and go install, cargo add and install, gem install, bundle add, composer require, with \"$\" or \">>>\" prompts and \"\\\" line continuations.\n\nDouble-clicking the name is enough: the whole line around the selection is taken into account. Plain text without a command gives no links: \"requests\" in a sentence is just a word.\n\nKEYBOARD\nKeyboard selection (Shift+arrows) works too. While the panel is open: Tab moves to the links, arrows between them, Enter opens one, Esc closes the panel and returns to the code with the same selection. Keys pressed in the panel don't trigger GitHub's shortcuts.\n\nPRIVATE AND OFFLINE\n• The add-on downloads and checks nothing: the links are built from the selected text right on the page. So there is no GitHub token to enter and no server of its own that could go down.\n• A package name reaches a registry only when you open its link yourself, and the GitHub page address is not sent along.\n• No analytics, no ads, no storage, and no permissions beyond access to github.com and raw.githubusercontent.com.\n\nHONEST LIMITS\n• Links are not inserted into the code: GitHub's new code view puts an invisible text field over the lines, hence the panel on selection.\n• Whether a package exists is not checked (that would need requests to the registries). An internal or private package gives a link that may not open.\n• For Python imports the module name is not always the package name; apart from the known cases, the module name is used.\n• Gist, GitHub Enterprise and github.dev are not supported.\n\nEnglish and Russian interface, GitHub's light and dark themes."
  },
  "screenshots": {
    "ru": [
      "https://github-packages.dmitryq.com/screens/ru/1-deps.png",
      "https://github-packages.dmitryq.com/screens/ru/2-issue.png",
      "https://github-packages.dmitryq.com/screens/ru/3-gomod.png",
      "https://github-packages.dmitryq.com/screens/ru/4-keyboard.png"
    ],
    "en": [
      "https://github-packages.dmitryq.com/screens/en/1-deps.png",
      "https://github-packages.dmitryq.com/screens/en/2-issue.png",
      "https://github-packages.dmitryq.com/screens/en/3-gomod.png",
      "https://github-packages.dmitryq.com/screens/en/4-keyboard.png"
    ]
  },
  "privacy": {
    "ru": "https://github-packages.dmitryq.com/ru/privacy",
    "en": "https://github-packages.dmitryq.com/privacy"
  },
  "checked": "2026-10-21",
  "texts_are_store_copy": true
}
