/**
 * Known packages catalog — maps popular dependencies to categories,
 * priority levels, and trace-mcp plugin coverage.
 */

export interface PackageMeta {
  category: 'framework' | 'orm' | 'ui' | 'testing' | 'infra' | 'utility';
  priority: 'high' | 'medium' | 'low' | 'none';
  plugin: string | null; // trace-mcp plugin that covers this, or null
  /** Package is deprecated / abandoned — flag for analytics reports */
  deprecated?: boolean;
  /** Recommended replacement package name (shown in deprecation warnings) */
  successor?: string;
  /** Short tags for fuzzy/semantic matching when exact name lookup misses */
  keywords?: string[];
}

export const KNOWN_PACKAGES: Record<string, PackageMeta> = {
  // --- PHP / Composer ---
  'laravel/framework': { category: 'framework', priority: 'high', plugin: 'laravel' },
  'laravel/horizon': { category: 'infra', priority: 'high', plugin: 'laravel' },
  'laravel/nova': { category: 'ui', priority: 'high', plugin: 'nova' },
  'laravel/sanctum': { category: 'framework', priority: 'medium', plugin: 'laravel' },
  'laravel/passport': { category: 'framework', priority: 'medium', plugin: 'laravel' },
  'laravel/cashier': { category: 'infra', priority: 'medium', plugin: 'laravel' },
  'laravel/scout': { category: 'infra', priority: 'medium', plugin: 'laravel' },
  'laravel/socialite': { category: 'framework', priority: 'low', plugin: 'laravel' },
  'laravel/telescope': { category: 'infra', priority: 'low', plugin: null },
  'laravel/breeze': { category: 'framework', priority: 'medium', plugin: 'laravel' },
  'laravel/jetstream': { category: 'framework', priority: 'medium', plugin: 'laravel' },
  'laravel/dusk': { category: 'testing', priority: 'medium', plugin: 'laravel' },
  'laravel/pennant': { category: 'framework', priority: 'low', plugin: 'laravel' },
  'laravel/pulse': { category: 'infra', priority: 'medium', plugin: 'laravel' },
  'laravel/reverb': { category: 'infra', priority: 'medium', plugin: 'laravel' },
  'laravel/pint': { category: 'utility', priority: 'none', plugin: null },
  'laravel/envoy': { category: 'infra', priority: 'low', plugin: null },
  'laravel/prompts': { category: 'infra', priority: 'low', plugin: 'laravel' },
  'laravel/octane': { category: 'infra', priority: 'high', plugin: 'laravel' },
  'laravel/vapor-core': { category: 'infra', priority: 'medium', plugin: 'laravel' },
  'laravel/folio': { category: 'framework', priority: 'low', plugin: 'laravel' },
  'laravel/precognition': { category: 'framework', priority: 'low', plugin: 'laravel' },
  'livewire/livewire': { category: 'ui', priority: 'high', plugin: 'livewire' },
  'livewire/volt': { category: 'ui', priority: 'medium', plugin: 'livewire' },
  'wire-elements/modal': { category: 'ui', priority: 'low', plugin: 'livewire' },
  'wire-elements/spotlight': { category: 'ui', priority: 'low', plugin: 'livewire' },
  'rappasoft/laravel-livewire-tables': { category: 'ui', priority: 'low', plugin: 'livewire' },
  'power-components/livewire-powergrid': { category: 'ui', priority: 'low', plugin: 'livewire' },
  'inertiajs/inertia-laravel': { category: 'ui', priority: 'high', plugin: 'inertia' },
  'spatie/laravel-permission': { category: 'framework', priority: 'medium', plugin: null },
  'spatie/laravel-medialibrary': { category: 'orm', priority: 'medium', plugin: 'laravel' },
  'spatie/laravel-data': { category: 'framework', priority: 'medium', plugin: 'laravel' },
  'filament/filament': { category: 'framework', priority: 'high', plugin: 'filament' },
  'spatie/laravel-activitylog': { category: 'infra', priority: 'low', plugin: null },
  'spatie/laravel-backup': { category: 'infra', priority: 'none', plugin: null },
  'barryvdh/laravel-debugbar': { category: 'infra', priority: 'none', plugin: null },
  // Blade ecosystem
  'blade-ui-kit/blade-icons': { category: 'ui', priority: 'low', plugin: null },
  'blade-ui-kit/blade-heroicons': { category: 'ui', priority: 'low', plugin: null },
  'blade-ui-kit/blade-ui-kit': { category: 'ui', priority: 'medium', plugin: null },
  'owenvoke/blade-fontawesome': { category: 'ui', priority: 'none', plugin: null },
  'codeat3/blade-phosphor-icons': { category: 'ui', priority: 'none', plugin: null },
  // Laravel admin panels
  'backpack/crud': { category: 'framework', priority: 'high', plugin: null },
  'backpack/pro': { category: 'framework', priority: 'medium', plugin: null },
  'tcg/voyager': { category: 'framework', priority: 'medium', plugin: null },
  'orchid/platform': { category: 'framework', priority: 'medium', plugin: null },
  'area17/twill': { category: 'framework', priority: 'medium', plugin: null },
  'statamic/cms': { category: 'framework', priority: 'high', plugin: null },
  // Laravel API tools
  'saloonphp/saloon': { category: 'framework', priority: 'medium', plugin: null },
  'saloonphp/laravel-plugin': { category: 'framework', priority: 'low', plugin: null },
  'spatie/laravel-route-attributes': { category: 'framework', priority: 'low', plugin: null },
  'dedoc/scramble': { category: 'framework', priority: 'medium', plugin: null },
  'knuckleswtf/scribe': { category: 'framework', priority: 'medium', plugin: null },
  // Laravel testing
  'pestphp/pest-plugin-laravel': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'pestphp/pest-plugin-livewire': { category: 'testing', priority: 'low', plugin: 'testing' },
  'laravel/browser-kit-testing': { category: 'testing', priority: 'low', plugin: null },
  // Laravel media
  'pbmedia/laravel-ffmpeg': { category: 'infra', priority: 'low', plugin: null },
  'beyondcode/laravel-websockets': { category: 'infra', priority: 'medium', plugin: null },
  'beyondcode/laravel-query-detector': { category: 'infra', priority: 'none', plugin: null },
  'lab404/laravel-impersonate': { category: 'framework', priority: 'low', plugin: null },
  'phpunit/phpunit': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'pestphp/pest': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'symfony/console': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/http-foundation': { category: 'framework', priority: 'medium', plugin: null },
  // Laravel extended ecosystem
  'laravel/helpers': { category: 'framework', priority: 'low', plugin: 'laravel' },
  'laravel/ai': { category: 'framework', priority: 'medium', plugin: 'php-ecosystem' },
  'laravel/tinker': { category: 'infra', priority: 'low', plugin: 'laravel' },
  'laravel/ui': { category: 'ui', priority: 'low', plugin: 'laravel' },
  'laravel/fortify': { category: 'framework', priority: 'medium', plugin: 'laravel' },
  'laravel/legacy-factories': {
    category: 'testing',
    priority: 'none',
    plugin: 'laravel',
    deprecated: true,
    successor: 'built-in class-based factories (Laravel 8+)',
  },
  'laravel/nightwatch': { category: 'infra', priority: 'low', plugin: 'laravel' },
  // Spatie ecosystem
  'spatie/eloquent-sortable': { category: 'orm', priority: 'low', plugin: 'laravel' },
  'spatie/laravel-translation-loader': {
    category: 'framework',
    priority: 'low',
    plugin: 'php-ecosystem',
  },
  'spatie/laravel-sitemap': { category: 'infra', priority: 'none', plugin: null },
  'spatie/laravel-query-builder': { category: 'orm', priority: 'medium', plugin: null },
  'spatie/laravel-tags': { category: 'orm', priority: 'low', plugin: null },
  'spatie/laravel-sluggable': { category: 'orm', priority: 'low', plugin: null },
  'spatie/laravel-model-states': { category: 'framework', priority: 'low', plugin: null },
  'spatie/laravel-settings': { category: 'framework', priority: 'low', plugin: null },
  'spatie/laravel-webhook-server': { category: 'infra', priority: 'low', plugin: null },
  'spatie/laravel-webhook-client': { category: 'infra', priority: 'low', plugin: null },
  'spatie/laravel-package-tools': { category: 'infra', priority: 'none', plugin: null },
  'spatie/laravel-ray': { category: 'infra', priority: 'none', plugin: null },
  'spatie/laravel-responsecache': { category: 'infra', priority: 'low', plugin: null },
  'spatie/laravel-json-api-paginate': { category: 'framework', priority: 'low', plugin: null },
  'spatie/laravel-searchable': { category: 'orm', priority: 'low', plugin: null },
  'spatie/laravel-multitenancy': { category: 'framework', priority: 'medium', plugin: null },
  'spatie/laravel-health': { category: 'infra', priority: 'low', plugin: null },
  'spatie/laravel-login-link': { category: 'framework', priority: 'none', plugin: null },
  'spatie/laravel-markdown': { category: 'utility', priority: 'none', plugin: null },
  'spatie/image': { category: 'infra', priority: 'low', plugin: null },
  // Symfony extended
  'symfony/polyfill-mbstring': { category: 'utility', priority: 'none', plugin: null },
  'symfony/polyfill-php83': { category: 'utility', priority: 'none', plugin: null },
  'symfony/polyfill-intl-icu': { category: 'utility', priority: 'none', plugin: null },
  'symfony/mailer': { category: 'infra', priority: 'medium', plugin: null },
  'symfony/messenger': { category: 'infra', priority: 'medium', plugin: null },
  'symfony/notifier': { category: 'infra', priority: 'low', plugin: null },
  'symfony/security-core': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/security-bundle': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/validator': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/form': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/routing': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/event-dispatcher': { category: 'framework', priority: 'low', plugin: null },
  'symfony/dependency-injection': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/yaml': { category: 'utility', priority: 'none', plugin: null },
  'symfony/process': { category: 'infra', priority: 'low', plugin: null },
  'symfony/filesystem': { category: 'utility', priority: 'none', plugin: null },
  'symfony/finder': { category: 'utility', priority: 'none', plugin: null },
  'symfony/dom-crawler': { category: 'utility', priority: 'low', plugin: 'php-ecosystem' },
  'symfony/string': { category: 'utility', priority: 'none', plugin: null },
  'symfony/uid': { category: 'utility', priority: 'none', plugin: null },
  'symfony/cache': { category: 'infra', priority: 'low', plugin: null },
  'symfony/lock': { category: 'infra', priority: 'low', plugin: null },
  'symfony/serializer': { category: 'framework', priority: 'medium', plugin: null },
  'symfony/twig-bundle': { category: 'ui', priority: 'medium', plugin: null },
  'symfony/webpack-encore-bundle': { category: 'infra', priority: 'low', plugin: null },
  'symfony/ux-turbo': { category: 'ui', priority: 'medium', plugin: null },
  'symfony/ux-live-component': { category: 'ui', priority: 'medium', plugin: null },
  'symfony/mercure-bundle': { category: 'infra', priority: 'medium', plugin: null },
  // Laravel Nova ecosystem
  'outl1ne/nova-multiselect-field': { category: 'ui', priority: 'low', plugin: 'nova' },
  'advoor/nova-editor-js': { category: 'ui', priority: 'low', plugin: 'nova' },
  'kaiserkiwi/nova-queue-management': { category: 'infra', priority: 'low', plugin: 'nova' },
  'marshmallow/nova-date-range-filter': { category: 'ui', priority: 'low', plugin: 'nova' },
  'nrml-co/nova-big-filter': { category: 'ui', priority: 'low', plugin: 'nova' },
  'benjaminhirsch/nova-slug-field': { category: 'ui', priority: 'low', plugin: 'nova' },
  'bissolli/nova-phone-field': { category: 'ui', priority: 'low', plugin: 'nova' },
  'emilianotisato/nova-tinymce': { category: 'ui', priority: 'low', plugin: 'nova' },
  'eminiarts/nova-tabs': { category: 'ui', priority: 'low', plugin: 'nova' },
  'murdercode/nova4-tinymce-editor': { category: 'ui', priority: 'low', plugin: 'nova' },
  'maatwebsite/laravel-nova-excel': { category: 'infra', priority: 'low', plugin: 'nova' },
  // PHP ORM / DB
  'doctrine/dbal': { category: 'orm', priority: 'medium', plugin: 'php-ecosystem' },
  'doctrine/orm': { category: 'orm', priority: 'high', plugin: null },
  'doctrine/migrations': { category: 'orm', priority: 'medium', plugin: null },
  // PHP Core infra
  'predis/predis': { category: 'infra', priority: 'medium', plugin: null },
  'nesbot/carbon': { category: 'utility', priority: 'low', plugin: null },
  'ramsey/uuid': { category: 'utility', priority: 'low', plugin: null },
  'phpmailer/phpmailer': { category: 'infra', priority: 'low', plugin: null },
  'monolog/monolog': { category: 'infra', priority: 'low', plugin: null },
  'mockery/mockery': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'nwidart/laravel-modules': { category: 'framework', priority: 'medium', plugin: null },
  'league/oauth2-server': { category: 'framework', priority: 'medium', plugin: null },
  'league/csv': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'league/commonmark': { category: 'utility', priority: 'none', plugin: null },
  'league/glide': { category: 'infra', priority: 'low', plugin: null },
  'league/fractal': { category: 'framework', priority: 'low', plugin: null },
  'vlucas/phpdotenv': { category: 'utility', priority: 'none', plugin: null },
  'briannesbitt/carbon': { category: 'utility', priority: 'low', plugin: null },
  'nunomaduro/collision': { category: 'testing', priority: 'none', plugin: null },
  'nunomaduro/larastan': { category: 'testing', priority: 'low', plugin: null },
  'phpstan/phpstan': { category: 'testing', priority: 'medium', plugin: null },
  'rector/rector': { category: 'utility', priority: 'low', plugin: null },
  'squizlabs/php_codesniffer': { category: 'utility', priority: 'none', plugin: null },
  'friendsofphp/php-cs-fixer': { category: 'utility', priority: 'none', plugin: null },
  // PHP HTTP / API clients
  'guzzlehttp/guzzle': { category: 'infra', priority: 'medium', plugin: 'php-ecosystem' },
  'guzzlehttp/psr7': { category: 'utility', priority: 'none', plugin: null },
  'guzzlehttp/promises': { category: 'utility', priority: 'none', plugin: null },
  'symfony/http-client': { category: 'infra', priority: 'medium', plugin: null },
  'amocrm/amocrm-api-library': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'dotzero/amocrm': {
    category: 'infra',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'amocrm/amocrm-api-library',
  },
  // PHP Search
  'meilisearch/meilisearch-php': { category: 'infra', priority: 'medium', plugin: 'php-ecosystem' },
  'teamtnt/laravel-scout-tntsearch-driver': {
    category: 'infra',
    priority: 'low',
    plugin: 'laravel',
  },
  'algolia/algoliasearch-client-php': { category: 'infra', priority: 'medium', plugin: null },
  'elasticsearch/elasticsearch': { category: 'infra', priority: 'medium', plugin: null },
  'typesense/typesense-php': { category: 'infra', priority: 'low', plugin: null },
  // PHP Image processing
  'intervention/image': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'intervention/image-laravel': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'spatie/laravel-image-optimizer': { category: 'infra', priority: 'none', plugin: null },
  // PHP HTML / parsing / PDF
  'imangazaliev/didom': { category: 'utility', priority: 'none', plugin: null },
  'barryvdh/laravel-dompdf': { category: 'infra', priority: 'low', plugin: null },
  'dompdf/dompdf': { category: 'infra', priority: 'low', plugin: null },
  'mpdf/mpdf': { category: 'infra', priority: 'low', plugin: null },
  'tecnickcom/tcpdf': { category: 'infra', priority: 'low', plugin: null },
  'barryvdh/laravel-snappy': { category: 'infra', priority: 'low', plugin: null },
  'spatie/laravel-pdf': { category: 'infra', priority: 'low', plugin: null },
  'smalot/pdfparser': { category: 'utility', priority: 'none', plugin: null },
  // PHP User agent / browser
  'jenssegers/agent': { category: 'utility', priority: 'none', plugin: null },
  // PHP Excel / Spreadsheet
  'maatwebsite/excel': { category: 'infra', priority: 'medium', plugin: 'php-ecosystem' },
  'phpoffice/phpspreadsheet': { category: 'infra', priority: 'medium', plugin: null },
  'phpoffice/phpword': { category: 'infra', priority: 'low', plugin: null },
  'openspout/openspout': { category: 'infra', priority: 'low', plugin: null },
  // PHP File storage
  'league/flysystem': { category: 'infra', priority: 'medium', plugin: null },
  'league/flysystem-aws-s3-v3': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'league/flysystem-path-prefixing': { category: 'infra', priority: 'none', plugin: null },
  'league/flysystem-sftp-v3': { category: 'infra', priority: 'none', plugin: null },
  'league/flysystem-ftp': { category: 'infra', priority: 'none', plugin: null },
  'unisharp/laravel-filemanager': { category: 'infra', priority: 'low', plugin: 'laravel' },
  'spatie/laravel-media-library': { category: 'infra', priority: 'medium', plugin: null },
  // PHP Payments
  'paypal/rest-api-sdk-php': {
    category: 'infra',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'paypal/paypal-server-sdk',
  },
  'paypal/paypal-checkout-sdk': { category: 'infra', priority: 'low', plugin: null },
  'paypal/paypal-server-sdk': { category: 'infra', priority: 'low', plugin: null },
  'yandex-money/yandex-checkout-sdk-php': {
    category: 'infra',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'yoomoney/yookassa-sdk-php',
  },
  'yoomoney/yookassa-sdk-php': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'stripe/stripe-php': { category: 'infra', priority: 'medium', plugin: null },
  'mollie/mollie-api-php': { category: 'infra', priority: 'low', plugin: null },
  'braintree/braintree_php': { category: 'infra', priority: 'low', plugin: null },
  'srmklive/paypal': { category: 'infra', priority: 'low', plugin: null },
  // PHP Auth / JWT / OAuth
  'firebase/php-jwt': { category: 'framework', priority: 'none', plugin: null },
  'web-token/jwt-framework': { category: 'framework', priority: 'none', plugin: null },
  'lcobucci/jwt': { category: 'framework', priority: 'low', plugin: null },
  'league/oauth2-client': { category: 'framework', priority: 'medium', plugin: null },
  'socialiteproviders/manager': { category: 'framework', priority: 'low', plugin: null },
  'tymon/jwt-auth': { category: 'framework', priority: 'medium', plugin: null },
  // PHP Google / Cloud
  'google/analytics-data': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'google/auth': { category: 'infra', priority: 'low', plugin: 'php-ecosystem' },
  'google/cloud': { category: 'infra', priority: 'medium', plugin: null },
  'google/cloud-storage': { category: 'infra', priority: 'low', plugin: null },
  'google/apiclient': { category: 'infra', priority: 'medium', plugin: 'php-ecosystem' },
  'aws/aws-sdk-php': { category: 'infra', priority: 'medium', plugin: null },
  // PHP Notification / SMS / Push
  'twilio/sdk': { category: 'infra', priority: 'low', plugin: null },
  'laravel-notification-channels/telegram': { category: 'infra', priority: 'low', plugin: null },
  'laravel-notification-channels/slack': { category: 'infra', priority: 'none', plugin: null },
  'berkayk/onesignal-laravel': { category: 'infra', priority: 'none', plugin: null },
  // PHP CORS / Performance / Minification
  'fruitcake/laravel-cors': {
    category: 'framework',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'built-in Laravel CORS (9+)',
  },
  'renatomarinho/laravel-page-speed': { category: 'infra', priority: 'none', plugin: null },
  'htmlmin/htmlmin': { category: 'utility', priority: 'none', plugin: null },
  'tubalmartin/cssmin': { category: 'utility', priority: 'none', plugin: null },
  // PHP Queue / Event
  'php-amqplib/php-amqplib': { category: 'infra', priority: 'medium', plugin: null },
  'enqueue/enqueue': { category: 'infra', priority: 'low', plugin: null },
  'prwnr/laravel-streamer': { category: 'infra', priority: 'low', plugin: null },
  // PHP GraphQL / API
  'rebing/graphql-laravel': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'nuwave/lighthouse': { category: 'framework', priority: 'high', plugin: 'graphql' },
  'webonyx/graphql-php': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'api-platform/core': { category: 'framework', priority: 'high', plugin: null },
  // PHP Data / Serialization
  'spatie/laravel-fractal': { category: 'framework', priority: 'low', plugin: null },
  'spatie/data-transfer-object': { category: 'framework', priority: 'low', plugin: null },
  'cerbero/json-parser': { category: 'utility', priority: 'none', plugin: null },
  // PHP Caching
  'barryvdh/laravel-httpcache': { category: 'infra', priority: 'none', plugin: null },
  'spatie/laravel-model-caching': { category: 'infra', priority: 'low', plugin: null },
  // PHP Database helpers
  'staudenmeir/eloquent-has-many-deep': { category: 'orm', priority: 'low', plugin: null },
  'staudenmeir/belongs-to-through': { category: 'orm', priority: 'low', plugin: null },
  'chelout/laravel-relationship-events': { category: 'orm', priority: 'none', plugin: null },
  'tightenco/parental': { category: 'orm', priority: 'low', plugin: null },
  'spatie/laravel-schemaless-attributes': { category: 'orm', priority: 'low', plugin: null },
  'stancl/tenancy': { category: 'framework', priority: 'medium', plugin: null },
  // PHP Filament ecosystem
  'filament/tables': { category: 'ui', priority: 'medium', plugin: 'filament' },
  'filament/forms': { category: 'ui', priority: 'medium', plugin: 'filament' },
  'filament/notifications': { category: 'ui', priority: 'low', plugin: 'filament' },
  'filament/actions': { category: 'ui', priority: 'medium', plugin: 'filament' },
  'filament/infolists': { category: 'ui', priority: 'low', plugin: 'filament' },
  'filament/widgets': { category: 'ui', priority: 'low', plugin: 'filament' },
  'filament/spatie-laravel-media-library-plugin': {
    category: 'ui',
    priority: 'low',
    plugin: 'filament',
  },
  'filament/spatie-laravel-tags-plugin': { category: 'ui', priority: 'low', plugin: 'filament' },
  'filament/spatie-laravel-settings-plugin': {
    category: 'ui',
    priority: 'low',
    plugin: 'filament',
  },
  'filament/spatie-laravel-translatable-plugin': {
    category: 'ui',
    priority: 'low',
    plugin: 'filament',
  },
  // PHP Logging / Debugging
  'barryvdh/laravel-ide-helper': { category: 'utility', priority: 'none', plugin: null },
  'beyondcode/laravel-dump-server': { category: 'infra', priority: 'none', plugin: null },
  'spatie/laravel-ignition': { category: 'infra', priority: 'none', plugin: null },
  'facade/ignition': {
    category: 'infra',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'spatie/laravel-ignition',
  },
  // PHP PSR interfaces
  'psr/log': { category: 'utility', priority: 'none', plugin: null },
  'psr/container': { category: 'utility', priority: 'none', plugin: null },
  'psr/http-message': { category: 'utility', priority: 'none', plugin: null },
  'psr/http-client': { category: 'utility', priority: 'none', plugin: null },
  'psr/event-dispatcher': { category: 'utility', priority: 'none', plugin: null },
  'psr/cache': { category: 'utility', priority: 'none', plugin: null },
  'psr/simple-cache': { category: 'utility', priority: 'none', plugin: null },
  // PHP Misc
  'diglactic/laravel-breadcrumbs': { category: 'ui', priority: 'none', plugin: null },
  'davejamesmiller/laravel-breadcrumbs': {
    category: 'ui',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'diglactic/laravel-breadcrumbs',
  },
  'fideloper/proxy': {
    category: 'infra',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'built-in TrustProxies (Laravel 8+)',
  },
  'overtrue/laravel-favorite': { category: 'framework', priority: 'low', plugin: 'laravel' },
  'overtrue/laravel-follow': { category: 'framework', priority: 'low', plugin: null },
  'overtrue/laravel-like': { category: 'framework', priority: 'low', plugin: null },
  'overtrue/laravel-subscribe': { category: 'framework', priority: 'low', plugin: null },
  'webpatser/laravel-uuid': {
    category: 'utility',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'ramsey/uuid',
  },
  'dniccum/phone-number': { category: 'utility', priority: 'none', plugin: null },
  'propaganistas/laravel-phone': { category: 'utility', priority: 'low', plugin: null },
  'reinink/advanced-eloquent': { category: 'orm', priority: 'low', plugin: 'php-ecosystem' },
  'rumenx/php-sitemap': { category: 'utility', priority: 'none', plugin: null },
  'laravelium/sitemap': { category: 'infra', priority: 'none', plugin: null },
  'rpj/daterangepicker': { category: 'ui', priority: 'none', plugin: null },
  'titasgailius/search-relations': { category: 'orm', priority: 'low', plugin: 'php-ecosystem' },
  'cviebrock/eloquent-sluggable': { category: 'orm', priority: 'low', plugin: null },
  'owen-it/laravel-auditing': { category: 'infra', priority: 'low', plugin: null },
  'spatie/laravel-translatable': { category: 'framework', priority: 'low', plugin: null },
  'astrotomic/laravel-translatable': { category: 'framework', priority: 'low', plugin: null },
  'mcamara/laravel-localization': { category: 'framework', priority: 'low', plugin: null },
  'spatie/laravel-newsletter': { category: 'infra', priority: 'none', plugin: null },
  'tightenco/ziggy': { category: 'framework', priority: 'medium', plugin: null },
  'lorisleiva/laravel-actions': { category: 'framework', priority: 'medium', plugin: null },
  'spatie/laravel-event-sourcing': { category: 'framework', priority: 'medium', plugin: null },
  'spatie/laravel-csp': { category: 'infra', priority: 'low', plugin: null },
  'laravel/slack-notification-channel': { category: 'infra', priority: 'none', plugin: null },
  'barryvdh/laravel-cors': {
    category: 'framework',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'fruitcake/laravel-cors → built-in (Laravel 9+)',
  },
  'silber/bouncer': { category: 'framework', priority: 'medium', plugin: null },
  'spatie/laravel-enum': { category: 'framework', priority: 'low', plugin: null },
  'bensampo/laravel-enum': { category: 'framework', priority: 'low', plugin: null },
  'archtechx/enums': { category: 'framework', priority: 'low', plugin: null },
  'spatie/laravel-collection-macros': { category: 'utility', priority: 'none', plugin: null },
  'spatie/once': { category: 'utility', priority: 'none', plugin: null },
  'spatie/regex': { category: 'utility', priority: 'none', plugin: null },
  'tightenco/collect': { category: 'utility', priority: 'none', plugin: null },
  'laravel/serializable-closure': { category: 'utility', priority: 'none', plugin: null },

  // --- JavaScript / npm: Frameworks ---
  express: { category: 'framework', priority: 'high', plugin: 'express' },
  fastify: { category: 'framework', priority: 'high', plugin: 'fastify' },
  hono: { category: 'framework', priority: 'high', plugin: 'hono' },
  next: { category: 'framework', priority: 'high', plugin: 'nextjs' },
  nuxt: { category: 'framework', priority: 'high', plugin: 'nuxt' },
  '@nestjs/core': { category: 'framework', priority: 'high', plugin: 'nestjs' },
  '@nestjs/common': { category: 'framework', priority: 'high', plugin: 'nestjs' },
  '@nestjs/testing': { category: 'testing', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/swagger': { category: 'framework', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/config': { category: 'framework', priority: 'low', plugin: 'nestjs' },
  '@nestjs/typeorm': { category: 'orm', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/sequelize': { category: 'orm', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/mongoose': { category: 'orm', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/graphql': { category: 'framework', priority: 'high', plugin: 'nestjs' },
  '@nestjs/websockets': { category: 'infra', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/microservices': { category: 'infra', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/bull': { category: 'infra', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/schedule': { category: 'infra', priority: 'low', plugin: 'nestjs' },
  '@nestjs/passport': { category: 'framework', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/jwt': { category: 'framework', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/throttler': { category: 'infra', priority: 'low', plugin: 'nestjs' },
  '@nestjs/cache-manager': { category: 'infra', priority: 'low', plugin: 'nestjs' },
  '@nestjs/event-emitter': { category: 'infra', priority: 'low', plugin: 'nestjs' },
  '@nestjs/mapped-types': { category: 'utility', priority: 'none', plugin: null },
  '@nestjs/platform-express': { category: 'framework', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/platform-fastify': { category: 'framework', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/platform-socket.io': { category: 'infra', priority: 'medium', plugin: 'nestjs' },
  '@nestjs/platform-ws': { category: 'infra', priority: 'low', plugin: 'nestjs' },
  '@nestjs/serve-static': { category: 'infra', priority: 'none', plugin: null },
  '@nestjs/terminus': { category: 'infra', priority: 'low', plugin: 'nestjs' },
  '@nestjs/cqrs': { category: 'framework', priority: 'medium', plugin: 'nestjs' },

  // --- JavaScript / npm: UI ---
  react: { category: 'ui', priority: 'high', plugin: 'react' },
  vue: { category: 'ui', priority: 'high', plugin: 'vue-framework' },
  '@vue/compiler-sfc': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  '@vue/server-renderer': { category: 'ui', priority: 'medium', plugin: 'vue-framework' },
  svelte: { category: 'ui', priority: 'high', plugin: 'svelte' },
  angular: { category: 'ui', priority: 'high', plugin: 'angular' },
  '@angular/core': { category: 'ui', priority: 'high', plugin: 'angular' },
  'react-native': { category: 'ui', priority: 'high', plugin: 'react-native' },
  expo: { category: 'ui', priority: 'high', plugin: 'react-native' },
  'expo-router': { category: 'ui', priority: 'medium', plugin: 'react-native' },
  '@react-navigation/native': { category: 'ui', priority: 'medium', plugin: 'react-native' },
  '@react-navigation/native-stack': { category: 'ui', priority: 'low', plugin: 'react-native' },
  '@react-navigation/bottom-tabs': { category: 'ui', priority: 'low', plugin: 'react-native' },
  '@nuxt/ui': { category: 'ui', priority: 'high', plugin: 'nuxt-ui' },
  '@nuxt/ui-pro': { category: 'ui', priority: 'high', plugin: 'nuxt-ui' },
  '@nuxt/image': { category: 'ui', priority: 'medium', plugin: 'nuxt' },
  '@nuxtjs/device': { category: 'utility', priority: 'low', plugin: 'nuxt' },
  '@nuxtjs/robots': { category: 'infra', priority: 'none', plugin: 'nuxt' },
  '@nuxtjs/sitemap': { category: 'infra', priority: 'none', plugin: 'nuxt' },
  '@nuxtjs/tailwindcss': { category: 'ui', priority: 'low', plugin: 'nuxt' },
  '@kgierke/nuxt-basic-auth': { category: 'framework', priority: 'none', plugin: 'nuxt' },
  '@pinia/nuxt': { category: 'ui', priority: 'medium', plugin: 'nuxt' },
  '@unlazy/nuxt': { category: 'ui', priority: 'none', plugin: 'nuxt' },
  '@vueuse/nuxt': { category: 'utility', priority: 'low', plugin: 'nuxt' },
  '@nuxt/content': { category: 'framework', priority: 'medium', plugin: 'nuxt' },
  '@nuxt/devtools': { category: 'infra', priority: 'none', plugin: null },
  '@nuxt/test-utils': { category: 'testing', priority: 'low', plugin: 'nuxt' },
  '@nuxt/fonts': { category: 'ui', priority: 'none', plugin: 'nuxt' },
  '@nuxt/icon': { category: 'ui', priority: 'none', plugin: 'nuxt' },
  '@nuxt/scripts': { category: 'infra', priority: 'low', plugin: 'nuxt' },
  '@nuxtjs/color-mode': { category: 'ui', priority: 'low', plugin: 'nuxt' },
  '@nuxtjs/google-fonts': { category: 'ui', priority: 'none', plugin: 'nuxt' },
  '@nuxtjs/supabase': { category: 'infra', priority: 'medium', plugin: 'nuxt' },
  '@nuxtjs/apollo': { category: 'framework', priority: 'medium', plugin: 'nuxt' },
  '@nuxtjs/auth-next': { category: 'framework', priority: 'medium', plugin: 'nuxt' },
  '@sidebase/nuxt-auth': { category: 'framework', priority: 'medium', plugin: 'nuxt' },
  'nuxt-icon': { category: 'ui', priority: 'none', plugin: 'nuxt' },
  '@nuxt/eslint': { category: 'utility', priority: 'none', plugin: null },
  '@inertiajs/react': { category: 'ui', priority: 'high', plugin: 'inertia' },
  '@inertiajs/vue3': { category: 'ui', priority: 'high', plugin: 'inertia' },
  '@inertiajs/svelte': { category: 'ui', priority: 'high', plugin: 'inertia' },
  tailwindcss: { category: 'ui', priority: 'medium', plugin: 'tailwindcss' },
  // Tailwind ecosystem — class helpers
  'tailwind-merge': { category: 'ui', priority: 'medium', plugin: 'tailwindcss' },
  clsx: { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  classnames: { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  'class-variance-authority': { category: 'ui', priority: 'medium', plugin: 'tailwindcss' },
  'tailwind-variants': { category: 'ui', priority: 'medium', plugin: 'tailwindcss' },
  'twin.macro': { category: 'ui', priority: 'medium', plugin: 'tailwindcss' },
  // Tailwind ecosystem — official plugins
  '@tailwindcss/typography': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  '@tailwindcss/forms': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  '@tailwindcss/aspect-ratio': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  '@tailwindcss/line-clamp': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  '@tailwindcss/container-queries': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  '@tailwindcss/vite': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  '@tailwindcss/postcss': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  // Tailwind ecosystem — animation & other
  'tw-animate-css': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  'tailwindcss-animate': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  'tailwindcss-radix': { category: 'ui', priority: 'low', plugin: 'tailwindcss' },
  'tailwindcss-debug-screens': { category: 'ui', priority: 'none', plugin: null },
  // Tailwind tooling (no semantic plugin needed)
  'prettier-plugin-tailwindcss': { category: 'utility', priority: 'none', plugin: null },
  'eslint-plugin-tailwindcss': { category: 'utility', priority: 'none', plugin: null },
  '@mui/material': { category: 'ui', priority: 'medium', plugin: 'mui' },
  antd: { category: 'ui', priority: 'medium', plugin: 'antd' },
  '@headlessui/react': { category: 'ui', priority: 'medium', plugin: 'headless-ui' },
  '@headlessui/vue': { category: 'ui', priority: 'medium', plugin: 'headless-ui' },
  '@radix-ui/react-dialog': { category: 'ui', priority: 'low', plugin: null },
  shadcn: { category: 'ui', priority: 'medium', plugin: 'shadcn' },
  // React ecosystem
  'react-dom': { category: 'ui', priority: 'high', plugin: 'react' },
  'react-hook-form': { category: 'ui', priority: 'medium', plugin: 'js-viz' },
  formik: { category: 'ui', priority: 'medium', plugin: null },
  'react-select': { category: 'ui', priority: 'none', plugin: null },
  '@tanstack/react-table': { category: 'ui', priority: 'medium', plugin: 'react-table' },
  '@tanstack/table-core': { category: 'ui', priority: 'low', plugin: 'react-table' },
  '@tanstack/solid-table': { category: 'ui', priority: 'low', plugin: 'react-table' },
  '@tanstack/svelte-table': { category: 'ui', priority: 'low', plugin: 'react-table' },
  // Legacy v7 (predates the @tanstack scope). Some projects still ship this.
  'react-table': {
    category: 'ui',
    priority: 'low',
    plugin: 'react-table',
    keywords: ['legacy', 'v7'],
  },
  'framer-motion': { category: 'ui', priority: 'medium', plugin: 'js-viz' },
  'react-spring': { category: 'ui', priority: 'low', plugin: null },
  'react-transition-group': { category: 'ui', priority: 'low', plugin: null },
  '@dnd-kit/core': { category: 'ui', priority: 'low', plugin: null },
  '@dnd-kit/sortable': { category: 'ui', priority: 'low', plugin: null },
  'react-beautiful-dnd': {
    category: 'ui',
    priority: 'low',
    plugin: null,
    deprecated: true,
    successor: '@dnd-kit/core',
  },
  'react-dnd': { category: 'ui', priority: 'low', plugin: null },
  'react-icons': { category: 'ui', priority: 'none', plugin: null },
  'lucide-react': { category: 'ui', priority: 'none', plugin: null },
  '@heroicons/react': { category: 'ui', priority: 'none', plugin: null },
  'react-hot-toast': { category: 'ui', priority: 'low', plugin: null },
  'react-toastify': { category: 'ui', priority: 'low', plugin: null },
  sonner: { category: 'ui', priority: 'low', plugin: 'js-viz' },
  'react-helmet': {
    category: 'ui',
    priority: 'low',
    plugin: null,
    deprecated: true,
    successor: 'react-helmet-async',
  },
  'react-helmet-async': { category: 'ui', priority: 'low', plugin: null },
  'react-error-boundary': { category: 'ui', priority: 'low', plugin: null },
  'react-dropzone': { category: 'ui', priority: 'low', plugin: null },
  'react-pdf': { category: 'ui', priority: 'low', plugin: null },
  '@react-pdf/renderer': { category: 'ui', priority: 'low', plugin: null },
  recharts: { category: 'ui', priority: 'medium', plugin: 'js-viz' },
  '@nivo/core': { category: 'ui', priority: 'low', plugin: null },
  victory: { category: 'ui', priority: 'low', plugin: null },
  d3: { category: 'ui', priority: 'medium', plugin: null },
  cmdk: { category: 'ui', priority: 'low', plugin: 'js-viz' },
  '@tanstack/react-router': { category: 'ui', priority: 'medium', plugin: null },
  'react-router': { category: 'framework', priority: 'medium', plugin: 'react-router' },
  'react-router-dom': { category: 'framework', priority: 'medium', plugin: 'react-router' },
  'react-router-native': { category: 'framework', priority: 'low', plugin: 'react-router' },
  '@remix-run/react': { category: 'framework', priority: 'medium', plugin: 'react-router' },
  '@react-email/components': { category: 'ui', priority: 'low', plugin: null },
  // Radix UI primitives
  '@radix-ui/react-popover': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-select': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-dropdown-menu': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-tooltip': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-accordion': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-tabs': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-checkbox': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-slider': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-switch': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-alert-dialog': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-avatar': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-label': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-scroll-area': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-separator': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-slot': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-navigation-menu': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-context-menu': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-hover-card': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-menubar': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-progress': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-toggle': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-toggle-group': { category: 'ui', priority: 'low', plugin: null },
  '@radix-ui/react-collapsible': { category: 'ui', priority: 'low', plugin: null },

  // --- JavaScript / npm: Vue UI frameworks ---
  vuetify: { category: 'ui', priority: 'medium', plugin: null },
  primevue: { category: 'ui', priority: 'medium', plugin: null },
  quasar: { category: 'ui', priority: 'medium', plugin: null },
  'element-plus': { category: 'ui', priority: 'medium', plugin: null },
  'element-ui': {
    category: 'ui',
    priority: 'low',
    plugin: null,
    deprecated: true,
    successor: 'element-plus',
  },
  'naive-ui': { category: 'ui', priority: 'medium', plugin: null },
  vant: { category: 'ui', priority: 'medium', plugin: null },
  'ant-design-vue': { category: 'ui', priority: 'medium', plugin: null },
  '@varlet/ui': { category: 'ui', priority: 'low', plugin: null },

  // --- JavaScript / npm: Vue ecosystem ---
  vuex: {
    category: 'ui',
    priority: 'medium',
    plugin: 'vue-framework',
    deprecated: true,
    successor: 'pinia',
  },
  pinia: { category: 'ui', priority: 'medium', plugin: 'vue-framework' },
  'vue-router': { category: 'ui', priority: 'medium', plugin: 'vue-framework' },
  '@vueuse/core': { category: 'utility', priority: 'medium', plugin: 'vue-framework' },
  '@vueuse/components': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  '@vueuse/integrations': { category: 'utility', priority: 'low', plugin: 'vue-framework' },
  'radix-vue': { category: 'ui', priority: 'medium', plugin: 'vue-framework' },
  'floating-vue': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  vuedraggable: { category: 'ui', priority: 'low', plugin: 'sortable' },
  'vue-draggable-next': { category: 'ui', priority: 'low', plugin: 'sortable' },
  '@vuepic/vue-datepicker': { category: 'ui', priority: 'low', plugin: 'js-viz' },
  'vuejs-datepicker': {
    category: 'ui',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: '@vuepic/vue-datepicker',
  },
  '@tinymce/tinymce-vue': { category: 'ui', priority: 'none', plugin: null },
  'vue-cropperjs': { category: 'ui', priority: 'none', plugin: null },
  'vue-advanced-cropper': { category: 'ui', priority: 'none', plugin: null },
  'portal-vue': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  'vue-clickaway': {
    category: 'ui',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'vue3-click-away or @vueuse/core onClickOutside',
  },
  'vue-clickaway2': { category: 'ui', priority: 'none', plugin: null },
  'vue-the-mask': { category: 'ui', priority: 'none', plugin: null },
  'v-lazy-image': { category: 'ui', priority: 'none', plugin: null },
  '@formkit/auto-animate': { category: 'ui', priority: 'none', plugin: null },
  motion: { category: 'ui', priority: 'none', plugin: null },
  'sortablejs-vue3': { category: 'ui', priority: 'low', plugin: 'sortable' },
  'vue3-click-away': { category: 'ui', priority: 'none', plugin: null },
  '@vueuse/motion': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  'vue-draggable-plus': { category: 'ui', priority: 'low', plugin: null },
  'vue-toastification': { category: 'ui', priority: 'low', plugin: null },
  'vue-i18n': { category: 'framework', priority: 'medium', plugin: 'vue-framework' },
  '@intlify/nuxt3': { category: 'framework', priority: 'low', plugin: 'nuxt' },
  '@nuxtjs/i18n': { category: 'framework', priority: 'medium', plugin: 'nuxt' },
  // Vue form/validation
  'vee-validate': { category: 'ui', priority: 'medium', plugin: null },
  '@vuelidate/core': { category: 'ui', priority: 'medium', plugin: null },
  '@vuelidate/validators': { category: 'ui', priority: 'low', plugin: null },
  // Vue rich text
  tiptap: { category: 'ui', priority: 'medium', plugin: null },
  '@tiptap/vue-3': { category: 'ui', priority: 'medium', plugin: null },
  '@tiptap/react': { category: 'ui', priority: 'medium', plugin: null },
  '@tiptap/starter-kit': { category: 'ui', priority: 'low', plugin: null },
  '@tiptap/core': { category: 'ui', priority: 'low', plugin: null },
  // Vue misc
  'vue-multiselect': { category: 'ui', priority: 'low', plugin: null },
  '@vueform/multiselect': { category: 'ui', priority: 'low', plugin: null },
  '@vueform/slider': { category: 'ui', priority: 'low', plugin: null },
  'vue-final-modal': { category: 'ui', priority: 'low', plugin: null },
  'vue-sonner': { category: 'ui', priority: 'low', plugin: 'js-viz' },
  'vue-tippy': { category: 'ui', priority: 'low', plugin: null },
  'v-calendar': { category: 'ui', priority: 'low', plugin: null },
  'vue-chartjs': { category: 'ui', priority: 'low', plugin: 'js-viz' },
  'vue-echarts': { category: 'ui', priority: 'low', plugin: null },
  'vue-use-web': { category: 'utility', priority: 'none', plugin: null },
  'vue3-popper': { category: 'ui', priority: 'low', plugin: null },
  'vue-virtual-scroller': { category: 'ui', priority: 'low', plugin: null },
  '@tanstack/vue-table': { category: 'ui', priority: 'medium', plugin: 'react-table' },
  'ag-grid-vue3': { category: 'ui', priority: 'low', plugin: null },
  'pinia-plugin-persistedstate': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  // unplugin ecosystem (vue/vite/nuxt)
  'unplugin-vue-components': { category: 'infra', priority: 'low', plugin: null },
  'unplugin-auto-import': { category: 'infra', priority: 'low', plugin: null },
  'unplugin-icons': { category: 'ui', priority: 'none', plugin: null },
  'unplugin-vue-router': { category: 'infra', priority: 'low', plugin: null },
  // Vite plugins (vue-specific)
  '@vitejs/plugin-vue': { category: 'infra', priority: 'low', plugin: null },
  '@vitejs/plugin-vue-jsx': { category: 'infra', priority: 'low', plugin: null },
  '@vitejs/plugin-react': { category: 'infra', priority: 'low', plugin: null },
  'vite-plugin-pwa': { category: 'infra', priority: 'low', plugin: null },
  'vite-plugin-vue-layouts': { category: 'infra', priority: 'low', plugin: null },
  'vite-plugin-pages': { category: 'infra', priority: 'low', plugin: null },
  '@vueuse/head': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  '@unhead/vue': { category: 'ui', priority: 'low', plugin: 'vue-framework' },
  unhead: { category: 'ui', priority: 'low', plugin: null },

  // --- JavaScript / npm: State management ---
  zustand: { category: 'ui', priority: 'medium', plugin: 'zustand-redux' },
  redux: { category: 'ui', priority: 'medium', plugin: 'zustand-redux' },
  '@reduxjs/toolkit': { category: 'ui', priority: 'medium', plugin: 'zustand-redux' },
  jotai: { category: 'ui', priority: 'medium', plugin: null },
  recoil: {
    category: 'ui',
    priority: 'medium',
    plugin: null,
    deprecated: true,
    successor: 'jotai or zustand',
  },
  mobx: { category: 'ui', priority: 'medium', plugin: null },
  'mobx-react': { category: 'ui', priority: 'low', plugin: null },
  'mobx-react-lite': { category: 'ui', priority: 'low', plugin: null },
  xstate: { category: 'infra', priority: 'medium', plugin: null },
  '@xstate/react': { category: 'ui', priority: 'low', plugin: null },
  effector: { category: 'ui', priority: 'medium', plugin: null },
  'effector-react': { category: 'ui', priority: 'low', plugin: null },
  'effector-vue': { category: 'ui', priority: 'low', plugin: null },
  valtio: { category: 'ui', priority: 'low', plugin: null },
  nanostore: { category: 'ui', priority: 'low', plugin: null },
  '@nanostores/react': { category: 'ui', priority: 'low', plugin: null },
  '@nanostores/vue': { category: 'ui', priority: 'low', plugin: null },

  // --- JavaScript / npm: Next.js ecosystem ---
  'next-auth': { category: 'framework', priority: 'high', plugin: 'nextjs' },
  '@auth/core': { category: 'framework', priority: 'medium', plugin: null },
  'next-intl': { category: 'framework', priority: 'medium', plugin: 'nextjs' },
  'next-mdx-remote': { category: 'framework', priority: 'low', plugin: null },
  'next-themes': { category: 'ui', priority: 'none', plugin: null },
  nextra: { category: 'framework', priority: 'low', plugin: null },
  contentlayer: { category: 'framework', priority: 'low', plugin: null },
  '@next/font': { category: 'ui', priority: 'none', plugin: null },
  '@next/bundle-analyzer': { category: 'infra', priority: 'none', plugin: null },
  '@vercel/analytics': { category: 'infra', priority: 'low', plugin: null },
  '@vercel/speed-insights': { category: 'infra', priority: 'none', plugin: null },
  '@vercel/og': { category: 'infra', priority: 'low', plugin: null },
  '@vercel/kv': { category: 'infra', priority: 'medium', plugin: null },
  '@vercel/blob': { category: 'infra', priority: 'low', plugin: null },
  '@vercel/postgres': { category: 'orm', priority: 'medium', plugin: null },
  '@vercel/edge': { category: 'infra', priority: 'low', plugin: null },
  'next-sitemap': { category: 'infra', priority: 'none', plugin: null },
  'next-seo': { category: 'infra', priority: 'low', plugin: null },

  // --- JavaScript / npm: ORMs ---
  prisma: { category: 'orm', priority: 'high', plugin: 'prisma' },
  '@prisma/client': { category: 'orm', priority: 'high', plugin: 'prisma' },
  'drizzle-orm': { category: 'orm', priority: 'high', plugin: 'drizzle' },
  'drizzle-kit': { category: 'orm', priority: 'low', plugin: 'drizzle' },
  typeorm: { category: 'orm', priority: 'high', plugin: 'typeorm' },
  sequelize: { category: 'orm', priority: 'high', plugin: 'sequelize' },
  'sequelize-typescript': { category: 'orm', priority: 'medium', plugin: 'sequelize' },
  mongoose: { category: 'orm', priority: 'high', plugin: 'mongoose' },
  knex: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  kysely: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  'mikro-orm': { category: 'orm', priority: 'high', plugin: null },
  '@mikro-orm/core': { category: 'orm', priority: 'high', plugin: null },
  '@mikro-orm/postgresql': { category: 'orm', priority: 'medium', plugin: null },
  '@mikro-orm/mysql': { category: 'orm', priority: 'medium', plugin: null },
  '@mikro-orm/sqlite': { category: 'orm', priority: 'medium', plugin: null },
  '@mikro-orm/nestjs': { category: 'orm', priority: 'medium', plugin: null },
  objection: { category: 'orm', priority: 'medium', plugin: null },
  bookshelf: { category: 'orm', priority: 'low', plugin: null },
  waterline: { category: 'orm', priority: 'low', plugin: null },
  mongodb: { category: 'orm', priority: 'medium', plugin: null },
  '@supabase/postgrest-js': { category: 'orm', priority: 'low', plugin: null },
  '@neon/serverless': { category: 'orm', priority: 'medium', plugin: null },
  '@neondatabase/serverless': { category: 'orm', priority: 'medium', plugin: null },
  '@planetscale/database': { category: 'orm', priority: 'medium', plugin: null },
  '@libsql/client': { category: 'orm', priority: 'medium', plugin: null },
  turso: { category: 'orm', priority: 'low', plugin: null },
  d1: { category: 'orm', priority: 'low', plugin: null },

  // --- JavaScript / npm: DB drivers (raw-sql plugin) ---
  'better-sqlite3': { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  sqlite3: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  'sql.js': { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  pg: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  'pg-promise': { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  mysql2: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  mysql: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  tedious: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  oracledb: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  mssql: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },

  // --- JavaScript / npm: API ---
  '@trpc/server': { category: 'framework', priority: 'high', plugin: 'trpc' },
  '@trpc/client': { category: 'framework', priority: 'high', plugin: 'trpc' },
  '@trpc/react-query': { category: 'framework', priority: 'medium', plugin: 'trpc' },
  '@trpc/next': { category: 'framework', priority: 'medium', plugin: 'trpc' },
  graphql: { category: 'framework', priority: 'high', plugin: 'graphql' },
  '@apollo/server': { category: 'framework', priority: 'high', plugin: 'graphql' },
  '@apollo/client': { category: 'framework', priority: 'high', plugin: 'graphql' },
  urql: { category: 'framework', priority: 'medium', plugin: 'graphql' },
  '@urql/core': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  '@urql/vue': { category: 'framework', priority: 'low', plugin: 'graphql' },
  'graphql-request': { category: 'framework', priority: 'low', plugin: 'graphql' },
  'graphql-tag': { category: 'framework', priority: 'low', plugin: 'graphql' },
  '@graphql-codegen/cli': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'type-graphql': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  nexus: { category: 'framework', priority: 'medium', plugin: 'graphql' },
  '@pothos/core': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  mercurius: { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'graphql-yoga': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'graphql-ws': { category: 'infra', priority: 'low', plugin: null },
  // REST / OpenAPI
  'swagger-ui-express': { category: 'infra', priority: 'low', plugin: null },
  'swagger-jsdoc': { category: 'infra', priority: 'low', plugin: null },
  'openapi-typescript': { category: 'infra', priority: 'low', plugin: null },
  'openapi-fetch': { category: 'infra', priority: 'low', plugin: null },
  '@modelcontextprotocol/sdk': { category: 'framework', priority: 'high', plugin: 'mcp-sdk' },

  // --- JavaScript / npm: Validation ---
  zod: { category: 'framework', priority: 'medium', plugin: 'zod' },
  yup: { category: 'framework', priority: 'medium', plugin: null },
  joi: { category: 'framework', priority: 'medium', plugin: null },
  valibot: { category: 'framework', priority: 'medium', plugin: null },
  arktype: { category: 'framework', priority: 'low', plugin: null },
  typebox: { category: 'framework', priority: 'low', plugin: null },
  '@sinclair/typebox': { category: 'framework', priority: 'low', plugin: null },
  superstruct: { category: 'framework', priority: 'low', plugin: null },
  'class-validator': { category: 'framework', priority: 'medium', plugin: 'class-validator' },
  'class-transformer': { category: 'framework', priority: 'low', plugin: 'class-validator' },
  'class-validator-jsonschema': {
    category: 'framework',
    priority: 'low',
    plugin: 'class-validator',
  },
  'io-ts': { category: 'framework', priority: 'low', plugin: null },
  effect: { category: 'framework', priority: 'medium', plugin: null },
  '@effect/schema': { category: 'framework', priority: 'low', plugin: null },

  // --- JavaScript / npm: Data fetching ---
  '@tanstack/react-query': { category: 'ui', priority: 'medium', plugin: 'data-fetching' },
  '@tanstack/vue-query': { category: 'ui', priority: 'medium', plugin: 'data-fetching' },
  '@tanstack/svelte-query': { category: 'ui', priority: 'low', plugin: 'data-fetching' },
  '@tanstack/query-core': { category: 'ui', priority: 'low', plugin: 'data-fetching' },
  swr: { category: 'ui', priority: 'medium', plugin: 'data-fetching' },
  swrv: { category: 'ui', priority: 'low', plugin: 'data-fetching' },

  // --- JavaScript / npm: Internationalization ---
  i18next: { category: 'framework', priority: 'medium', plugin: null },
  'react-i18next': { category: 'framework', priority: 'medium', plugin: null },
  'i18next-http-backend': { category: 'framework', priority: 'low', plugin: null },
  'i18next-browser-languagedetector': { category: 'framework', priority: 'low', plugin: null },
  '@formatjs/intl': { category: 'framework', priority: 'low', plugin: null },
  'react-intl': { category: 'framework', priority: 'medium', plugin: null },

  // --- JavaScript / npm: Realtime ---
  'socket.io': { category: 'infra', priority: 'high', plugin: 'socketio' },
  'socket.io-client': { category: 'infra', priority: 'medium', plugin: 'socketio' },
  ws: { category: 'infra', priority: 'medium', plugin: null },
  pusher: { category: 'infra', priority: 'medium', plugin: null },
  'pusher-js': { category: 'infra', priority: 'medium', plugin: null },
  '@pusher/push-notifications-web': { category: 'infra', priority: 'low', plugin: null },
  'laravel-echo': { category: 'infra', priority: 'medium', plugin: null },
  ably: { category: 'infra', priority: 'low', plugin: null },
  '@centrifugo/centrifuge-js': { category: 'infra', priority: 'low', plugin: null },
  phoenix: { category: 'framework', priority: 'medium', plugin: null },
  'sse.js': { category: 'infra', priority: 'low', plugin: null },
  eventsource: { category: 'infra', priority: 'low', plugin: null },

  // --- JavaScript / npm: Tooling (with plugins) ---
  commander: { category: 'infra', priority: 'medium', plugin: 'commander' },
  pino: { category: 'infra', priority: 'medium', plugin: 'pino' },
  cosmiconfig: { category: 'infra', priority: 'medium', plugin: 'cosmiconfig' },
  neverthrow: { category: 'infra', priority: 'medium', plugin: 'neverthrow' },
  '@clack/prompts': { category: 'infra', priority: 'medium', plugin: 'clack' },
  '@clack/core': { category: 'infra', priority: 'medium', plugin: 'clack' },
  'tree-sitter': { category: 'infra', priority: 'medium', plugin: 'tree-sitter' },
  'web-tree-sitter': { category: 'infra', priority: 'medium', plugin: 'tree-sitter' },
  'tree-sitter-wasms': { category: 'infra', priority: 'low', plugin: 'tree-sitter' },
  'tree-sitter-typescript': { category: 'infra', priority: 'low', plugin: 'tree-sitter' },
  'n8n-workflow': { category: 'infra', priority: 'high', plugin: 'n8n' },

  // --- JavaScript / npm: Electron ---
  electron: { category: 'infra', priority: 'high', plugin: 'electron' },
  'electron-builder': { category: 'infra', priority: 'low', plugin: 'electron' },
  'electron-updater': { category: 'infra', priority: 'low', plugin: 'electron' },
  'electron-store': { category: 'infra', priority: 'low', plugin: 'electron' },
  'electron-log': { category: 'infra', priority: 'low', plugin: 'electron' },
  'electron-is-dev': { category: 'utility', priority: 'none', plugin: null },
  '@electron/rebuild': { category: 'infra', priority: 'none', plugin: null },
  '@electron-forge/cli': { category: 'infra', priority: 'low', plugin: 'electron' },
  menubar: { category: 'infra', priority: 'low', plugin: 'electron' },
  tauri: { category: 'infra', priority: 'high', plugin: null },
  '@tauri-apps/api': { category: 'infra', priority: 'high', plugin: null },
  '@tauri-apps/cli': { category: 'infra', priority: 'low', plugin: null },

  // --- JavaScript / npm: Build tools (with plugin) ---
  tsup: { category: 'infra', priority: 'low', plugin: 'build-tools' },
  esbuild: { category: 'infra', priority: 'low', plugin: 'build-tools' },
  rollup: { category: 'infra', priority: 'low', plugin: 'build-tools' },
  webpack: { category: 'infra', priority: 'low', plugin: 'build-tools' },
  '@rspack/core': { category: 'infra', priority: 'low', plugin: 'build-tools' },
  vite: { category: 'infra', priority: 'low', plugin: 'build-tools' },
  turbo: { category: 'infra', priority: 'low', plugin: 'build-tools' },
  parcel: { category: 'infra', priority: 'low', plugin: 'build-tools' },

  // --- JavaScript / npm: Testing ---
  vitest: { category: 'testing', priority: 'medium', plugin: 'testing' },
  jest: { category: 'testing', priority: 'medium', plugin: 'testing' },
  mocha: { category: 'testing', priority: 'medium', plugin: 'testing' },
  cypress: { category: 'testing', priority: 'medium', plugin: 'testing' },
  playwright: { category: 'testing', priority: 'medium', plugin: 'testing' },
  '@playwright/test': { category: 'testing', priority: 'medium', plugin: 'testing' },
  '@testing-library/react': { category: 'testing', priority: 'medium', plugin: 'testing' },

  // --- JavaScript / npm: Node.js server ---
  koa: { category: 'framework', priority: 'high', plugin: null },
  h3: { category: 'framework', priority: 'medium', plugin: null },
  nitro: { category: 'framework', priority: 'medium', plugin: null },
  passport: { category: 'framework', priority: 'medium', plugin: 'passport' },
  'passport-local': { category: 'framework', priority: 'low', plugin: 'passport' },
  'passport-jwt': { category: 'framework', priority: 'low', plugin: 'passport' },
  'passport-google-oauth20': { category: 'framework', priority: 'low', plugin: 'passport' },
  'passport-github2': { category: 'framework', priority: 'low', plugin: 'passport' },
  'passport-facebook': { category: 'framework', priority: 'low', plugin: 'passport' },
  'passport-oauth2': { category: 'framework', priority: 'low', plugin: 'passport' },
  'passport-http': { category: 'framework', priority: 'low', plugin: 'passport' },
  'passport-http-bearer': { category: 'framework', priority: 'low', plugin: 'passport' },
  jsonwebtoken: { category: 'infra', priority: 'low', plugin: 'jose' },
  jose: { category: 'infra', priority: 'low', plugin: 'jose' },
  bcrypt: { category: 'utility', priority: 'none', plugin: null },
  bcryptjs: { category: 'utility', priority: 'none', plugin: null },
  argon2: { category: 'utility', priority: 'none', plugin: null },
  multer: { category: 'infra', priority: 'low', plugin: null },
  busboy: { category: 'infra', priority: 'low', plugin: null },
  formidable: { category: 'infra', priority: 'low', plugin: null },
  cors: { category: 'infra', priority: 'low', plugin: null },
  helmet: { category: 'infra', priority: 'low', plugin: null },
  morgan: { category: 'infra', priority: 'none', plugin: null },
  compression: { category: 'infra', priority: 'none', plugin: null },
  'express-rate-limit': { category: 'infra', priority: 'low', plugin: null },
  'express-session': { category: 'infra', priority: 'low', plugin: null },
  'cookie-parser': { category: 'infra', priority: 'none', plugin: null },
  'body-parser': { category: 'infra', priority: 'none', plugin: null },
  // Redis / queues / messaging
  ioredis: { category: 'infra', priority: 'medium', plugin: 'ioredis' },
  redis: { category: 'infra', priority: 'medium', plugin: 'ioredis' },
  '@upstash/redis': { category: 'infra', priority: 'medium', plugin: 'ioredis' },
  '@upstash/ratelimit': { category: 'infra', priority: 'low', plugin: null },
  amqplib: { category: 'infra', priority: 'medium', plugin: null },
  kafkajs: { category: 'infra', priority: 'medium', plugin: null },
  // Email
  nodemailer: { category: 'infra', priority: 'low', plugin: 'nodemailer' },
  '@sendgrid/mail': { category: 'infra', priority: 'low', plugin: 'nodemailer' },
  resend: { category: 'infra', priority: 'low', plugin: 'nodemailer' },
  // Scheduling
  'node-cron': { category: 'infra', priority: 'low', plugin: null },
  cron: { category: 'infra', priority: 'low', plugin: null },
  bree: { category: 'infra', priority: 'low', plugin: null },
  // Scraping / automation
  puppeteer: { category: 'infra', priority: 'low', plugin: null },
  cheerio: { category: 'utility', priority: 'none', plugin: null },
  crawlee: { category: 'infra', priority: 'low', plugin: null },
  // IDs
  nanoid: { category: 'utility', priority: 'none', plugin: null },
  cuid: { category: 'utility', priority: 'none', plugin: null },
  cuid2: { category: 'utility', priority: 'none', plugin: null },
  ulid: { category: 'utility', priority: 'none', plugin: null },

  // --- JavaScript / npm: CSS-in-JS / Styling ---
  'styled-components': { category: 'ui', priority: 'medium', plugin: null },
  '@emotion/react': { category: 'ui', priority: 'medium', plugin: null },
  '@emotion/styled': { category: 'ui', priority: 'medium', plugin: null },
  'vanilla-extract': { category: 'ui', priority: 'low', plugin: null },
  '@vanilla-extract/css': { category: 'ui', priority: 'low', plugin: null },
  linaria: { category: 'ui', priority: 'low', plugin: null },
  less: { category: 'infra', priority: 'none', plugin: null },
  '@stitches/react': { category: 'ui', priority: 'low', plugin: null },

  // --- JavaScript / npm: Testing (extended) ---
  '@testing-library/vue': { category: 'testing', priority: 'medium', plugin: 'testing' },
  '@testing-library/jest-dom': { category: 'testing', priority: 'low', plugin: 'testing' },
  '@testing-library/user-event': { category: 'testing', priority: 'low', plugin: 'testing' },
  '@testing-library/dom': { category: 'testing', priority: 'low', plugin: 'testing' },
  msw: { category: 'testing', priority: 'medium', plugin: null },
  nock: { category: 'testing', priority: 'low', plugin: null },
  supertest: { category: 'testing', priority: 'medium', plugin: null },
  sinon: { category: 'testing', priority: 'low', plugin: null },
  chai: { category: 'testing', priority: 'low', plugin: null },
  '@faker-js/faker': { category: 'testing', priority: 'low', plugin: null },
  faker: { category: 'testing', priority: 'low', plugin: null },
  storybook: { category: 'testing', priority: 'medium', plugin: null },
  '@storybook/react': { category: 'testing', priority: 'medium', plugin: null },
  '@storybook/vue3': { category: 'testing', priority: 'medium', plugin: null },
  '@storybook/nextjs': { category: 'testing', priority: 'low', plugin: null },
  'happy-dom': { category: 'testing', priority: 'low', plugin: null },
  jsdom: { category: 'testing', priority: 'low', plugin: null },

  // --- JavaScript / npm: Auth ---
  lucia: { category: 'framework', priority: 'medium', plugin: null },
  '@clerk/nextjs': { category: 'framework', priority: 'medium', plugin: null },
  '@clerk/clerk-react': { category: 'framework', priority: 'medium', plugin: null },
  arctic: { category: 'framework', priority: 'low', plugin: null },
  '@kinde-oss/kinde-auth-nextjs': { category: 'framework', priority: 'low', plugin: null },
  '@auth0/auth0-react': { category: 'framework', priority: 'medium', plugin: null },
  '@auth0/nextjs-auth0': { category: 'framework', priority: 'medium', plugin: null },
  firebase: { category: 'infra', priority: 'medium', plugin: null },
  'firebase-admin': { category: 'infra', priority: 'medium', plugin: null },

  // --- JavaScript / npm: Monitoring / Observability ---
  '@sentry/node': { category: 'infra', priority: 'medium', plugin: null },
  '@sentry/react': { category: 'infra', priority: 'low', plugin: null },
  '@sentry/vue': { category: 'infra', priority: 'low', plugin: null },
  '@sentry/nextjs': { category: 'infra', priority: 'low', plugin: null },
  '@sentry/browser': { category: 'infra', priority: 'low', plugin: null },
  'sentry/sentry-laravel': { category: 'infra', priority: 'low', plugin: null },
  '@opentelemetry/api': { category: 'infra', priority: 'medium', plugin: null },
  '@opentelemetry/sdk-node': { category: 'infra', priority: 'medium', plugin: null },
  '@opentelemetry/auto-instrumentations-node': { category: 'infra', priority: 'low', plugin: null },
  'dd-trace': { category: 'infra', priority: 'medium', plugin: null },
  newrelic: { category: 'infra', priority: 'medium', plugin: null },

  // --- JavaScript / npm: Payments ---
  stripe: { category: 'infra', priority: 'medium', plugin: null },
  '@stripe/stripe-js': { category: 'infra', priority: 'low', plugin: null },
  '@stripe/react-stripe-js': { category: 'infra', priority: 'low', plugin: null },
  '@lemonsqueezy/lemonsqueezy.js': { category: 'infra', priority: 'low', plugin: null },
  'lemon-squeezy': { category: 'infra', priority: 'low', plugin: null },

  // --- JavaScript / npm: CMS / Headless ---
  '@sanity/client': { category: 'infra', priority: 'medium', plugin: null },
  'next-sanity': { category: 'infra', priority: 'low', plugin: null },
  '@contentful/rich-text-react-renderer': { category: 'infra', priority: 'low', plugin: null },
  contentful: { category: 'infra', priority: 'medium', plugin: null },
  strapi: { category: 'framework', priority: 'high', plugin: null },
  '@strapi/strapi': { category: 'framework', priority: 'high', plugin: null },
  payload: { category: 'framework', priority: 'high', plugin: null },
  directus: { category: 'framework', priority: 'medium', plugin: null },
  '@directus/sdk': { category: 'framework', priority: 'medium', plugin: null },

  // --- JavaScript / npm: Infra (legacy/remaining) ---
  winston: { category: 'infra', priority: 'low', plugin: null },
  bull: { category: 'infra', priority: 'medium', plugin: 'ioredis' },
  bullmq: { category: 'infra', priority: 'medium', plugin: 'ioredis' },

  // --- JavaScript / npm: jQuery ecosystem ---
  jquery: { category: 'ui', priority: 'none', plugin: null },
  'jquery-ui': { category: 'ui', priority: 'none', plugin: null },
  'jquery-bridget': { category: 'ui', priority: 'none', plugin: null },
  'jquery-mask-plugin': { category: 'ui', priority: 'none', plugin: null },
  'jquery-touch-events': { category: 'ui', priority: 'none', plugin: null },
  'jquery-ui-multidatespicker': { category: 'ui', priority: 'none', plugin: null },
  'jquery.easing': { category: 'ui', priority: 'none', plugin: null },
  'jquery.event.drag': { category: 'ui', priority: 'none', plugin: null },
  'jquery.event.ue': { category: 'ui', priority: 'none', plugin: null },
  'jquery-bar-rating': { category: 'ui', priority: 'none', plugin: null },
  jrating: { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: CSS / UI frameworks ---
  bootstrap: { category: 'ui', priority: 'low', plugin: null },
  'bootstrap-sass': { category: 'ui', priority: 'none', plugin: null },
  'bootstrap-vue': { category: 'ui', priority: 'low', plugin: null },
  'font-awesome': { category: 'ui', priority: 'none', plugin: null },
  '@fortawesome/fontawesome-free': { category: 'ui', priority: 'none', plugin: null },
  '@fortawesome/vue-fontawesome': { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: Image / Gallery / Lightbox ---
  glightbox: { category: 'ui', priority: 'none', plugin: null },
  cropperjs: { category: 'ui', priority: 'none', plugin: null },
  '@fancyapps/ui': { category: 'ui', priority: 'none', plugin: null },
  '@fancyapps/fancybox': {
    category: 'ui',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: '@fancyapps/ui',
  },
  'masonry-layout': { category: 'ui', priority: 'none', plugin: null },
  justifiedGallery: { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: Carousel / Slider ---
  'owl.carousel': { category: 'ui', priority: 'none', plugin: null },
  'owl.carousel2': { category: 'ui', priority: 'low', plugin: null },
  slick: { category: 'ui', priority: 'none', plugin: null },
  'slick-carousel': { category: 'ui', priority: 'none', plugin: null },
  swiper: { category: 'ui', priority: 'low', plugin: null },
  bxslider: { category: 'ui', priority: 'none', plugin: null },
  flexslider: { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: Lazy loading ---
  lazysizes: { category: 'ui', priority: 'none', plugin: null },
  lazyload: { category: 'ui', priority: 'none', plugin: null },
  'vanilla-lazyload': { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: Animation / Scroll ---
  animejs: { category: 'ui', priority: 'none', plugin: null },
  anime: { category: 'ui', priority: 'low', plugin: null },
  gsap: { category: 'ui', priority: 'low', plugin: null },
  skrollr: { category: 'ui', priority: 'none', plugin: null },
  nprogress: { category: 'ui', priority: 'none', plugin: null },
  hammerjs: { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: Form / Input ---
  imask: { category: 'ui', priority: 'none', plugin: null },
  inputmask: { category: 'ui', priority: 'none', plugin: null },
  maska: { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: Toast / Notification ---
  izitoast: { category: 'ui', priority: 'none', plugin: null },

  // --- JavaScript / npm: Charts / Numbers ---
  chartist: { category: 'ui', priority: 'none', plugin: null },
  'chart.js': { category: 'ui', priority: 'low', plugin: 'js-viz' },
  apexcharts: { category: 'ui', priority: 'low', plugin: null },
  numbro: { category: 'utility', priority: 'none', plugin: null },
  numeral: { category: 'utility', priority: 'none', plugin: null },

  // --- JavaScript / npm: Date / Time ---
  flatpickr: { category: 'ui', priority: 'none', plugin: null },
  moment: {
    category: 'utility',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'dayjs or date-fns',
  },
  dayjs: { category: 'utility', priority: 'none', plugin: null },

  // --- JavaScript / npm: Sortable ---
  sortablejs: { category: 'ui', priority: 'low', plugin: 'sortable' },

  // --- JavaScript / npm: Image processing ---
  sharp: { category: 'infra', priority: 'none', plugin: null },

  // --- JavaScript / npm: AWS ---
  '@aws-sdk/client-s3': { category: 'infra', priority: 'medium', plugin: 'aws-s3' },
  '@aws-sdk/lib-storage': { category: 'infra', priority: 'low', plugin: 'aws-s3' },
  '@aws-sdk/client-ses': { category: 'infra', priority: 'low', plugin: 'nodemailer' },
  '@aws-sdk/client-sqs': { category: 'infra', priority: 'low', plugin: null },
  '@aws-sdk/client-dynamodb': { category: 'infra', priority: 'low', plugin: null },
  '@aws-sdk/client-lambda': { category: 'infra', priority: 'low', plugin: null },
  'aws-sdk': {
    category: 'infra',
    priority: 'medium',
    plugin: 'aws-s3',
    deprecated: true,
    successor: '@aws-sdk/* (v3 modular)',
  },

  // --- JavaScript / npm: Supabase ---
  '@supabase/supabase-js': { category: 'infra', priority: 'medium', plugin: 'supabase' },

  // --- JavaScript / npm: HTTP / Server ---
  got: { category: 'utility', priority: 'none', plugin: null },
  'h3-compression': { category: 'infra', priority: 'none', plugin: null },

  // --- JavaScript / npm: Auth / Crypto ---
  'node-jose': { category: 'infra', priority: 'low', plugin: 'jose' },

  // --- JavaScript / npm: Build tools (extended) ---
  'laravel-mix': {
    category: 'infra',
    priority: 'low',
    plugin: 'build-tools',
    deprecated: true,
    successor: 'vite (Laravel 9+)',
  },
  sass: { category: 'infra', priority: 'none', plugin: null },
  stylus: { category: 'infra', priority: 'none', plugin: null },
  postcss: { category: 'infra', priority: 'none', plugin: null },
  '@babel/core': { category: 'infra', priority: 'none', plugin: null },
  'cross-env': { category: 'utility', priority: 'none', plugin: null },

  // --- JavaScript / npm: CSS / Responsive ---
  'include-media': { category: 'ui', priority: 'none', plugin: null },
  'tailwind-scrollbar-hide': { category: 'ui', priority: 'none', plugin: 'tailwindcss' },

  // --- JavaScript / npm: FP libraries ---
  baconjs: { category: 'utility', priority: 'none', plugin: null },
  crocks: { category: 'utility', priority: 'none', plugin: null },

  // --- JavaScript / npm: Utilities (no plugin, low signal) ---
  axios: { category: 'utility', priority: 'none', plugin: null },
  lodash: { category: 'utility', priority: 'none', plugin: null },
  'lodash.debounce': { category: 'utility', priority: 'none', plugin: null },
  'date-fns': { category: 'utility', priority: 'none', plugin: null },
  uuid: { category: 'utility', priority: 'none', plugin: null },
  uid: { category: 'utility', priority: 'none', plugin: null },
  dotenv: { category: 'utility', priority: 'none', plugin: null },
  typescript: { category: 'utility', priority: 'none', plugin: null },
  '@parcel/watcher': { category: 'utility', priority: 'none', plugin: null },
  'fast-glob': { category: 'utility', priority: 'none', plugin: null },
  'fastest-levenshtein': { category: 'utility', priority: 'none', plugin: null },
  'jsonc-parser': { category: 'utility', priority: 'none', plugin: null },
  'oxc-resolver': { category: 'utility', priority: 'none', plugin: null },
  yaml: { category: 'utility', priority: 'none', plugin: null },
  'js-cookie': { category: 'utility', priority: 'none', plugin: null },
  linkifyjs: { category: 'utility', priority: 'none', plugin: null },
  ky: { category: 'utility', priority: 'none', plugin: null },
  ofetch: { category: 'utility', priority: 'none', plugin: null },
  'node-fetch': {
    category: 'utility',
    priority: 'none',
    plugin: null,
    deprecated: true,
    successor: 'built-in fetch (Node 18+)',
  },
  undici: { category: 'utility', priority: 'none', plugin: null },
  defu: { category: 'utility', priority: 'none', plugin: null },
  destr: { category: 'utility', priority: 'none', plugin: null },
  ohash: { category: 'utility', priority: 'none', plugin: null },
  pathe: { category: 'utility', priority: 'none', plugin: null },
  ufo: { category: 'utility', priority: 'none', plugin: null },
  consola: { category: 'infra', priority: 'low', plugin: null },
  citty: { category: 'infra', priority: 'low', plugin: null },
  unplugin: { category: 'infra', priority: 'low', plugin: null },
  unjs: { category: 'utility', priority: 'none', plugin: null },
  radash: { category: 'utility', priority: 'none', plugin: null },
  remeda: { category: 'utility', priority: 'none', plugin: null },
  ramda: { category: 'utility', priority: 'none', plugin: null },
  'ts-pattern': { category: 'utility', priority: 'low', plugin: null },
  'type-fest': { category: 'utility', priority: 'none', plugin: null },
  'ts-essentials': { category: 'utility', priority: 'none', plugin: null },
  'p-limit': { category: 'utility', priority: 'none', plugin: null },
  'p-queue': { category: 'utility', priority: 'none', plugin: null },
  'p-retry': { category: 'utility', priority: 'none', plugin: null },
  'p-map': { category: 'utility', priority: 'none', plugin: null },
  execa: { category: 'utility', priority: 'none', plugin: null },
  zx: { category: 'utility', priority: 'low', plugin: null },
  chalk: { category: 'utility', priority: 'none', plugin: null },
  picocolors: { category: 'utility', priority: 'none', plugin: null },
  kleur: { category: 'utility', priority: 'none', plugin: null },
  ora: { category: 'utility', priority: 'none', plugin: null },
  inquirer: { category: 'infra', priority: 'low', plugin: null },
  prompts: { category: 'infra', priority: 'low', plugin: null },
  yargs: { category: 'infra', priority: 'low', plugin: null },
  meow: { category: 'infra', priority: 'low', plugin: null },
  cac: { category: 'infra', priority: 'low', plugin: null },
  minimist: { category: 'utility', priority: 'none', plugin: null },
  glob: { category: 'utility', priority: 'none', plugin: null },
  globby: { category: 'utility', priority: 'none', plugin: null },
  micromatch: { category: 'utility', priority: 'none', plugin: null },
  picomatch: { category: 'utility', priority: 'none', plugin: null },
  chokidar: { category: 'utility', priority: 'none', plugin: null },
  'fs-extra': { category: 'utility', priority: 'none', plugin: null },
  'graceful-fs': { category: 'utility', priority: 'none', plugin: null },
  debug: { category: 'utility', priority: 'none', plugin: null },
  ms: { category: 'utility', priority: 'none', plugin: null },
  semver: { category: 'utility', priority: 'none', plugin: null },
  mime: { category: 'utility', priority: 'none', plugin: null },
  'mime-types': { category: 'utility', priority: 'none', plugin: null },
  slugify: { category: 'utility', priority: 'none', plugin: null },
  'sanitize-html': { category: 'utility', priority: 'low', plugin: null },
  dompurify: { category: 'utility', priority: 'low', plugin: null },
  marked: { category: 'utility', priority: 'low', plugin: 'js-viz' },
  'markdown-it': { category: 'utility', priority: 'low', plugin: null },
  remark: { category: 'utility', priority: 'low', plugin: null },
  rehype: { category: 'utility', priority: 'low', plugin: null },
  unified: { category: 'utility', priority: 'low', plugin: null },
  mdx: { category: 'utility', priority: 'low', plugin: null },
  '@mdx-js/react': { category: 'ui', priority: 'low', plugin: null },
  shiki: { category: 'utility', priority: 'low', plugin: null },
  prismjs: { category: 'utility', priority: 'low', plugin: null },
  'highlight.js': { category: 'utility', priority: 'low', plugin: null },
  turndown: { category: 'utility', priority: 'none', plugin: null },

  // --- JavaScript / npm: AI / ML ---
  openai: { category: 'infra', priority: 'medium', plugin: 'openai-py' },
  '@anthropic-ai/sdk': { category: 'infra', priority: 'medium', plugin: 'anthropic-sdk' },
  '@anthropic-ai/vertex-sdk': { category: 'infra', priority: 'low', plugin: 'anthropic-sdk' },
  '@anthropic-ai/bedrock-sdk': { category: 'infra', priority: 'low', plugin: 'anthropic-sdk' },
  '@google/generative-ai': { category: 'infra', priority: 'medium', plugin: null },
  ai: { category: 'infra', priority: 'medium', plugin: null },
  '@ai-sdk/openai': { category: 'infra', priority: 'low', plugin: null },
  '@ai-sdk/anthropic': { category: 'infra', priority: 'low', plugin: null },
  '@ai-sdk/google': { category: 'infra', priority: 'low', plugin: null },
  langchain: { category: 'infra', priority: 'medium', plugin: null },
  '@langchain/core': { category: 'infra', priority: 'medium', plugin: null },
  '@langchain/openai': { category: 'infra', priority: 'low', plugin: null },
  '@langchain/anthropic': { category: 'infra', priority: 'low', plugin: null },
  llamaindex: { category: 'infra', priority: 'low', plugin: null },
  '@pinecone-database/pinecone': { category: 'infra', priority: 'low', plugin: null },
  chromadb: { category: 'infra', priority: 'low', plugin: null },
  '@qdrant/js-client-rest': { category: 'infra', priority: 'low', plugin: null },
  'weaviate-ts-client': { category: 'infra', priority: 'low', plugin: null },
  'onnxruntime-node': { category: 'infra', priority: 'low', plugin: null },
  '@xenova/transformers': { category: 'infra', priority: 'low', plugin: null },

  // --- Python / pip: Web frameworks ---
  django: { category: 'framework', priority: 'high', plugin: 'django' },
  djangorestframework: { category: 'framework', priority: 'high', plugin: 'drf' },
  'django-ninja': { category: 'framework', priority: 'high', plugin: null },
  fastapi: { category: 'framework', priority: 'high', plugin: 'fastapi' },
  flask: { category: 'framework', priority: 'high', plugin: 'flask' },
  starlette: { category: 'framework', priority: 'high', plugin: null },
  litestar: { category: 'framework', priority: 'high', plugin: null },
  sanic: { category: 'framework', priority: 'medium', plugin: null },
  tornado: { category: 'framework', priority: 'medium', plugin: null },
  aiohttp: { category: 'framework', priority: 'medium', plugin: 'python-http' },
  bottle: { category: 'framework', priority: 'low', plugin: null },
  falcon: { category: 'framework', priority: 'medium', plugin: null },
  pyramid: { category: 'framework', priority: 'low', plugin: null },
  quart: { category: 'framework', priority: 'low', plugin: null },
  blacksheep: { category: 'framework', priority: 'low', plugin: null },
  // Django ecosystem
  'django-allauth': { category: 'framework', priority: 'medium', plugin: null },
  'django-cors-headers': { category: 'framework', priority: 'low', plugin: null },
  'django-filter': { category: 'framework', priority: 'medium', plugin: null },
  'django-extensions': { category: 'utility', priority: 'none', plugin: null },
  'django-debug-toolbar': { category: 'infra', priority: 'none', plugin: null },
  'django-redis': { category: 'infra', priority: 'medium', plugin: null },
  'django-celery-beat': { category: 'infra', priority: 'medium', plugin: null },
  'django-celery-results': { category: 'infra', priority: 'low', plugin: null },
  'django-environ': { category: 'utility', priority: 'none', plugin: null },
  'django-storages': { category: 'infra', priority: 'medium', plugin: null },
  'django-crispy-forms': { category: 'ui', priority: 'low', plugin: null },
  'crispy-bootstrap5': { category: 'ui', priority: 'low', plugin: null },
  'django-import-export': { category: 'infra', priority: 'low', plugin: null },
  'django-mptt': { category: 'orm', priority: 'low', plugin: null },
  'django-treebeard': { category: 'orm', priority: 'low', plugin: null },
  'django-guardian': { category: 'framework', priority: 'medium', plugin: null },
  'django-polymorphic': { category: 'orm', priority: 'low', plugin: null },
  'djangorestframework-simplejwt': { category: 'framework', priority: 'medium', plugin: null },
  channels: { category: 'infra', priority: 'high', plugin: null },
  'django-channels': { category: 'infra', priority: 'high', plugin: null },
  daphne: { category: 'infra', priority: 'medium', plugin: null },
  'django-htmx': { category: 'ui', priority: 'medium', plugin: null },
  'django-tailwind': { category: 'ui', priority: 'low', plugin: null },
  wagtail: { category: 'framework', priority: 'high', plugin: null },
  'django-cms': { category: 'framework', priority: 'high', plugin: null },
  'django-rest-framework-gis': { category: 'framework', priority: 'low', plugin: null },
  'drf-spectacular': { category: 'framework', priority: 'medium', plugin: null },
  'drf-yasg': { category: 'framework', priority: 'low', plugin: null },
  'django-oauth-toolkit': { category: 'framework', priority: 'medium', plugin: null },
  'django-model-utils': { category: 'orm', priority: 'low', plugin: null },
  'django-rest-knox': { category: 'framework', priority: 'low', plugin: null },
  'django-silk': { category: 'infra', priority: 'none', plugin: null },
  'django-cacheops': { category: 'infra', priority: 'low', plugin: null },
  'django-health-check': { category: 'infra', priority: 'none', plugin: null },
  'django-auditlog': { category: 'infra', priority: 'low', plugin: null },
  'django-simple-history': { category: 'infra', priority: 'low', plugin: null },
  'django-tenants': { category: 'framework', priority: 'medium', plugin: null },
  'django-grappelli': { category: 'ui', priority: 'low', plugin: null },
  'django-admin-sortable2': { category: 'ui', priority: 'low', plugin: null },
  // FastAPI ecosystem
  'fastapi-users': { category: 'framework', priority: 'medium', plugin: null },
  'fastapi-jwt-auth': { category: 'framework', priority: 'low', plugin: null },
  'fastapi-pagination': { category: 'framework', priority: 'low', plugin: null },
  'fastapi-cache': { category: 'infra', priority: 'low', plugin: null },
  'fastapi-mail': { category: 'infra', priority: 'low', plugin: null },
  'fastapi-limiter': { category: 'infra', priority: 'low', plugin: null },
  'fastapi-utils': { category: 'framework', priority: 'low', plugin: null },
  slowapi: { category: 'infra', priority: 'low', plugin: null },
  // Flask ecosystem
  'flask-restful': { category: 'framework', priority: 'medium', plugin: null },
  'flask-restx': { category: 'framework', priority: 'medium', plugin: null },
  'flask-sqlalchemy': { category: 'orm', priority: 'medium', plugin: null },
  'flask-migrate': { category: 'orm', priority: 'low', plugin: null },
  'flask-login': { category: 'framework', priority: 'medium', plugin: null },
  'flask-jwt-extended': { category: 'framework', priority: 'low', plugin: null },
  'flask-cors': { category: 'framework', priority: 'low', plugin: null },
  'flask-mail': { category: 'infra', priority: 'low', plugin: null },
  'flask-socketio': { category: 'infra', priority: 'medium', plugin: null },
  'flask-wtf': { category: 'ui', priority: 'low', plugin: null },
  'flask-admin': { category: 'ui', priority: 'low', plugin: null },
  'flask-caching': { category: 'infra', priority: 'low', plugin: null },
  'flask-limiter': { category: 'infra', priority: 'low', plugin: null },
  // Python ORM / DB
  sqlalchemy: { category: 'orm', priority: 'high', plugin: 'sqlalchemy' },
  pydantic: { category: 'framework', priority: 'medium', plugin: 'pydantic' },
  'pydantic-settings': { category: 'framework', priority: 'low', plugin: 'pydantic' },
  alembic: { category: 'orm', priority: 'medium', plugin: 'sqlalchemy' },
  'tortoise-orm': { category: 'orm', priority: 'medium', plugin: 'async-db' },
  psycopg2: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  'psycopg2-binary': { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  psycopg: { category: 'orm', priority: 'medium', plugin: 'async-db' },
  pymysql: { category: 'orm', priority: 'medium', plugin: 'raw-sql' },
  asyncpg: { category: 'orm', priority: 'high', plugin: 'async-db' },
  aiosqlite: { category: 'orm', priority: 'medium', plugin: 'async-db' },
  databases: { category: 'orm', priority: 'medium', plugin: 'async-db' },
  asyncpgsa: { category: 'orm', priority: 'medium', plugin: 'async-db' },
  aiopg: { category: 'orm', priority: 'medium', plugin: 'async-db' },
  aiomysql: { category: 'orm', priority: 'medium', plugin: 'async-db' },
  piccolo: { category: 'orm', priority: 'medium', plugin: 'async-db' },
  sqlmodel: { category: 'orm', priority: 'high', plugin: null },
  peewee: { category: 'orm', priority: 'medium', plugin: null },
  mongoengine: { category: 'orm', priority: 'medium', plugin: null },
  motor: { category: 'orm', priority: 'medium', plugin: null },
  pymongo: { category: 'orm', priority: 'medium', plugin: null },
  beanie: { category: 'orm', priority: 'medium', plugin: null },
  odmantic: { category: 'orm', priority: 'low', plugin: null },
  // redis — already in npm section (same name, both ecosystems)
  aioredis: { category: 'infra', priority: 'medium', plugin: null },
  // celery — already defined above in Python web frameworks
  dramatiq: { category: 'infra', priority: 'medium', plugin: null },
  huey: { category: 'infra', priority: 'low', plugin: null },
  rq: { category: 'infra', priority: 'medium', plugin: null },
  arq: { category: 'infra', priority: 'low', plugin: null },
  // Python testing
  pytest: { category: 'testing', priority: 'medium', plugin: 'testing' },
  'pytest-asyncio': { category: 'testing', priority: 'low', plugin: 'testing' },
  'pytest-cov': { category: 'testing', priority: 'low', plugin: 'testing' },
  'pytest-mock': { category: 'testing', priority: 'low', plugin: 'testing' },
  'pytest-xdist': { category: 'testing', priority: 'low', plugin: 'testing' },
  'pytest-django': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'pytest-flask': { category: 'testing', priority: 'low', plugin: 'testing' },
  'pytest-httpx': { category: 'testing', priority: 'low', plugin: 'testing' },
  'pytest-benchmark': { category: 'testing', priority: 'none', plugin: null },
  hypothesis: { category: 'testing', priority: 'medium', plugin: null },
  'factory-boy': { category: 'testing', priority: 'medium', plugin: null },
  // faker — already in npm testing section (same name, both ecosystems)
  responses: { category: 'testing', priority: 'low', plugin: null },
  vcrpy: { category: 'testing', priority: 'low', plugin: null },
  respx: { category: 'testing', priority: 'low', plugin: null },
  freezegun: { category: 'testing', priority: 'low', plugin: null },
  'time-machine': { category: 'testing', priority: 'low', plugin: null },
  'model-bakery': { category: 'testing', priority: 'low', plugin: null },
  coverage: { category: 'testing', priority: 'low', plugin: null },
  tox: { category: 'testing', priority: 'none', plugin: null },
  nox: { category: 'testing', priority: 'none', plugin: null },
  // Python HTTP / API clients
  requests: { category: 'utility', priority: 'low', plugin: 'python-http' },
  httpx: { category: 'utility', priority: 'medium', plugin: 'python-http' },
  urllib3: { category: 'utility', priority: 'none', plugin: null },
  httpcore: { category: 'utility', priority: 'none', plugin: null },
  // Python CLI
  click: { category: 'infra', priority: 'medium', plugin: null },
  typer: { category: 'infra', priority: 'medium', plugin: null },
  rich: { category: 'ui', priority: 'medium', plugin: null },
  textual: { category: 'ui', priority: 'medium', plugin: null },
  tqdm: { category: 'utility', priority: 'low', plugin: 'tqdm-py' },
  argparse: { category: 'utility', priority: 'none', plugin: null },
  // Python config
  'python-dotenv': { category: 'utility', priority: 'none', plugin: null },
  dynaconf: { category: 'infra', priority: 'low', plugin: null },
  'hydra-core': { category: 'infra', priority: 'medium', plugin: null },
  // Python serialization / validation
  marshmallow: { category: 'framework', priority: 'medium', plugin: null },
  cattrs: { category: 'utility', priority: 'low', plugin: null },
  attrs: { category: 'utility', priority: 'low', plugin: 'attrs-py' },
  msgpack: { category: 'utility', priority: 'none', plugin: null },
  orjson: { category: 'utility', priority: 'none', plugin: null },
  ujson: { category: 'utility', priority: 'none', plugin: null },
  // Python auth / security
  'python-jose': { category: 'infra', priority: 'low', plugin: null },
  pyjwt: { category: 'infra', priority: 'low', plugin: null },
  passlib: { category: 'utility', priority: 'low', plugin: null },
  'python-social-auth': { category: 'framework', priority: 'low', plugin: null },
  authlib: { category: 'framework', priority: 'medium', plugin: null },
  oauthlib: { category: 'framework', priority: 'low', plugin: null },
  itsdangerous: { category: 'utility', priority: 'none', plugin: null },
  cryptography: { category: 'utility', priority: 'low', plugin: null },
  // Python async / server
  anyio: { category: 'infra', priority: 'medium', plugin: 'python-async' },
  trio: { category: 'infra', priority: 'low', plugin: null },
  uvloop: { category: 'infra', priority: 'medium', plugin: null },
  uvicorn: { category: 'infra', priority: 'high', plugin: 'uvicorn' },
  gunicorn: { category: 'infra', priority: 'high', plugin: 'gunicorn' },
  hypercorn: { category: 'infra', priority: 'medium', plugin: null },
  granian: { category: 'infra', priority: 'low', plugin: null },
  // Python monitoring / logging
  'sentry-sdk': { category: 'infra', priority: 'medium', plugin: null },
  'prometheus-client': { category: 'infra', priority: 'medium', plugin: null },
  'opentelemetry-api': { category: 'infra', priority: 'medium', plugin: null },
  'opentelemetry-sdk': { category: 'infra', priority: 'medium', plugin: null },
  structlog: { category: 'infra', priority: 'medium', plugin: null },
  loguru: { category: 'infra', priority: 'medium', plugin: null },
  // Python static analysis / tooling
  mypy: { category: 'testing', priority: 'medium', plugin: null },
  ruff: { category: 'utility', priority: 'none', plugin: null },
  black: { category: 'utility', priority: 'none', plugin: null },
  isort: { category: 'utility', priority: 'none', plugin: null },
  flake8: { category: 'utility', priority: 'none', plugin: null },
  pylint: { category: 'utility', priority: 'none', plugin: null },
  pyright: { category: 'testing', priority: 'low', plugin: null },
  bandit: { category: 'testing', priority: 'low', plugin: null },
  'pre-commit': { category: 'utility', priority: 'none', plugin: null },
  // Python GraphQL
  graphene: { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'graphene-django': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'strawberry-graphql': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  ariadne: { category: 'framework', priority: 'medium', plugin: 'graphql' },
  // Python gRPC
  grpcio: { category: 'framework', priority: 'medium', plugin: null },
  'grpcio-tools': { category: 'framework', priority: 'low', plugin: null },
  betterproto: { category: 'framework', priority: 'low', plugin: null },

  // --- Python / pip: AI / ML Core ---
  torch: { category: 'framework', priority: 'high', plugin: 'python-ml' },
  pytorch: { category: 'framework', priority: 'high', plugin: null },
  tensorflow: { category: 'framework', priority: 'high', plugin: null },
  keras: { category: 'framework', priority: 'high', plugin: null },
  jax: { category: 'framework', priority: 'high', plugin: null },
  jaxlib: { category: 'framework', priority: 'medium', plugin: null },
  flax: { category: 'framework', priority: 'medium', plugin: null },
  'scikit-learn': { category: 'framework', priority: 'high', plugin: 'python-ml' },
  sklearn: { category: 'framework', priority: 'high', plugin: null },
  xgboost: { category: 'framework', priority: 'medium', plugin: null },
  lightgbm: { category: 'framework', priority: 'medium', plugin: null },
  catboost: { category: 'framework', priority: 'medium', plugin: null },
  onnx: { category: 'framework', priority: 'medium', plugin: null },
  onnxruntime: { category: 'infra', priority: 'medium', plugin: null },

  // --- Python / pip: NLP ---
  spacy: { category: 'framework', priority: 'high', plugin: null },
  nltk: { category: 'framework', priority: 'medium', plugin: null },
  gensim: { category: 'framework', priority: 'medium', plugin: null },
  textblob: { category: 'utility', priority: 'low', plugin: null },
  flair: { category: 'framework', priority: 'medium', plugin: null },
  stanza: { category: 'framework', priority: 'low', plugin: null },

  // --- Python / pip: Hugging Face ecosystem ---
  transformers: { category: 'framework', priority: 'high', plugin: 'python-ml' },
  'huggingface-hub': { category: 'infra', priority: 'high', plugin: null },
  diffusers: { category: 'framework', priority: 'high', plugin: null },
  accelerate: { category: 'infra', priority: 'high', plugin: null },
  datasets: { category: 'infra', priority: 'high', plugin: null },
  tokenizers: { category: 'infra', priority: 'medium', plugin: null },
  safetensors: { category: 'utility', priority: 'medium', plugin: null },
  evaluate: { category: 'testing', priority: 'medium', plugin: null },
  peft: { category: 'framework', priority: 'high', plugin: null },
  trl: { category: 'framework', priority: 'medium', plugin: null },
  'sentence-transformers': { category: 'framework', priority: 'high', plugin: 'python-ml' },
  optimum: { category: 'infra', priority: 'medium', plugin: null },
  bitsandbytes: { category: 'infra', priority: 'medium', plugin: null },
  'auto-gptq': { category: 'infra', priority: 'low', plugin: null },

  // --- Python / pip: LLM frameworks ---
  // openai — already in npm AI section (same name, both ecosystems)
  anthropic: { category: 'infra', priority: 'high', plugin: 'anthropic-py' },
  'anthropic-bedrock': { category: 'infra', priority: 'low', plugin: 'anthropic-py' },
  'anthropic-vertex': { category: 'infra', priority: 'low', plugin: 'anthropic-py' },
  cohere: { category: 'infra', priority: 'medium', plugin: null },
  'google-generativeai': { category: 'infra', priority: 'medium', plugin: null },
  tiktoken: { category: 'utility', priority: 'medium', plugin: null },
  litellm: { category: 'infra', priority: 'medium', plugin: null },
  together: { category: 'infra', priority: 'low', plugin: null },
  groq: { category: 'infra', priority: 'low', plugin: null },
  mistralai: { category: 'infra', priority: 'low', plugin: null },
  replicate: { category: 'infra', priority: 'low', plugin: null },
  ollama: { category: 'infra', priority: 'medium', plugin: null },

  // --- Python / pip: LLM orchestration ---
  // langchain — already in npm AI section (same name, both ecosystems)
  'langchain-core': { category: 'framework', priority: 'high', plugin: null },
  'langchain-community': { category: 'framework', priority: 'medium', plugin: null },
  'langchain-openai': { category: 'framework', priority: 'medium', plugin: null },
  'langchain-anthropic': { category: 'framework', priority: 'medium', plugin: null },
  'langchain-google-genai': { category: 'framework', priority: 'low', plugin: null },
  langgraph: { category: 'framework', priority: 'high', plugin: null },
  langserve: { category: 'framework', priority: 'medium', plugin: null },
  langsmith: { category: 'infra', priority: 'medium', plugin: null },
  'llama-index': { category: 'framework', priority: 'high', plugin: null },
  'llama-index-core': { category: 'framework', priority: 'high', plugin: null },
  'llama-index-llms-openai': { category: 'framework', priority: 'medium', plugin: null },
  'llama-index-llms-anthropic': { category: 'framework', priority: 'medium', plugin: null },
  'llama-index-embeddings-openai': { category: 'framework', priority: 'medium', plugin: null },
  'dspy-ai': { category: 'framework', priority: 'medium', plugin: null },
  dspy: { category: 'framework', priority: 'medium', plugin: null },
  instructor: { category: 'framework', priority: 'medium', plugin: null },
  outlines: { category: 'framework', priority: 'medium', plugin: null },
  guidance: { category: 'framework', priority: 'medium', plugin: null },
  'guardrails-ai': { category: 'framework', priority: 'low', plugin: null },
  'semantic-kernel': { category: 'framework', priority: 'medium', plugin: null },
  autogen: { category: 'framework', priority: 'medium', plugin: null },
  crewai: { category: 'framework', priority: 'medium', plugin: null },
  phidata: { category: 'framework', priority: 'low', plugin: null },
  marvin: { category: 'framework', priority: 'low', plugin: null },
  magentic: { category: 'framework', priority: 'low', plugin: null },

  // --- Python / pip: Vector databases ---
  // chromadb — already in npm AI section (same name, both ecosystems)
  'pinecone-client': { category: 'infra', priority: 'high', plugin: null },
  pinecone: { category: 'infra', priority: 'high', plugin: null },
  'weaviate-client': { category: 'infra', priority: 'medium', plugin: null },
  'qdrant-client': { category: 'infra', priority: 'medium', plugin: null },
  pymilvus: { category: 'infra', priority: 'medium', plugin: null },
  'faiss-cpu': { category: 'infra', priority: 'medium', plugin: null },
  'faiss-gpu': { category: 'infra', priority: 'medium', plugin: null },
  pgvector: { category: 'infra', priority: 'medium', plugin: null },
  lancedb: { category: 'infra', priority: 'low', plugin: null },

  // --- Python / pip: ML experiment tracking ---
  wandb: { category: 'infra', priority: 'high', plugin: null },
  mlflow: { category: 'infra', priority: 'high', plugin: null },
  optuna: { category: 'infra', priority: 'medium', plugin: null },
  ray: { category: 'infra', priority: 'high', plugin: null },
  dvc: { category: 'infra', priority: 'medium', plugin: null },
  tensorboard: { category: 'infra', priority: 'medium', plugin: null },
  neptune: { category: 'infra', priority: 'low', plugin: null },
  'comet-ml': { category: 'infra', priority: 'low', plugin: null },
  clearml: { category: 'infra', priority: 'low', plugin: null },

  // --- Python / pip: ML deployment / serving ---
  bentoml: { category: 'infra', priority: 'medium', plugin: null },
  modal: { category: 'infra', priority: 'medium', plugin: null },
  vllm: { category: 'infra', priority: 'high', plugin: null },
  'text-generation-inference': { category: 'infra', priority: 'medium', plugin: null },
  triton: { category: 'infra', priority: 'medium', plugin: null },
  torchserve: { category: 'infra', priority: 'medium', plugin: null },
  fastchat: { category: 'infra', priority: 'low', plugin: null },
  'llama-cpp-python': { category: 'infra', priority: 'medium', plugin: null },
  ctransformers: { category: 'infra', priority: 'low', plugin: null },

  // --- Python / pip: Data science ---
  numpy: { category: 'framework', priority: 'high', plugin: 'python-scientific' },
  pandas: { category: 'framework', priority: 'high', plugin: null },
  polars: { category: 'framework', priority: 'high', plugin: null },
  scipy: { category: 'framework', priority: 'medium', plugin: 'python-scientific' },
  pyarrow: { category: 'infra', priority: 'medium', plugin: null },
  dask: { category: 'framework', priority: 'medium', plugin: null },
  vaex: { category: 'framework', priority: 'low', plugin: null },
  modin: { category: 'framework', priority: 'low', plugin: null },
  pyspark: { category: 'framework', priority: 'high', plugin: null },

  // --- Python / pip: Visualization ---
  matplotlib: { category: 'ui', priority: 'high', plugin: null },
  seaborn: { category: 'ui', priority: 'medium', plugin: null },
  plotly: { category: 'ui', priority: 'medium', plugin: null },
  bokeh: { category: 'ui', priority: 'medium', plugin: null },
  altair: { category: 'ui', priority: 'medium', plugin: null },

  // --- Python / pip: Data apps ---
  streamlit: { category: 'framework', priority: 'high', plugin: null },
  gradio: { category: 'framework', priority: 'high', plugin: null },
  panel: { category: 'framework', priority: 'medium', plugin: null },
  dash: { category: 'framework', priority: 'medium', plugin: null },
  nicegui: { category: 'framework', priority: 'low', plugin: null },
  reflex: { category: 'framework', priority: 'medium', plugin: null },
  chainlit: { category: 'framework', priority: 'medium', plugin: null },
  jupyter: { category: 'infra', priority: 'medium', plugin: null },
  ipython: { category: 'infra', priority: 'low', plugin: null },
  nbformat: { category: 'utility', priority: 'none', plugin: null },

  // --- Python / pip: Image / Video / Audio ---
  pillow: { category: 'utility', priority: 'medium', plugin: 'python-imaging' },
  'opencv-python': { category: 'framework', priority: 'high', plugin: 'python-imaging' },
  'opencv-python-headless': { category: 'framework', priority: 'high', plugin: 'python-imaging' },
  imageio: { category: 'utility', priority: 'low', plugin: 'python-imaging' },
  'scikit-image': { category: 'framework', priority: 'medium', plugin: 'python-scientific' },
  librosa: { category: 'framework', priority: 'medium', plugin: null },
  soundfile: { category: 'utility', priority: 'low', plugin: null },
  audioread: { category: 'utility', priority: 'none', plugin: null },
  whisper: { category: 'framework', priority: 'medium', plugin: null },
  'openai-whisper': { category: 'framework', priority: 'medium', plugin: null },

  // --- Python / pip: Cloud / infra ---
  boto3: { category: 'infra', priority: 'high', plugin: null },
  botocore: { category: 'infra', priority: 'medium', plugin: null },
  'google-cloud-storage': { category: 'infra', priority: 'medium', plugin: null },
  'google-cloud-bigquery': { category: 'infra', priority: 'medium', plugin: null },
  'google-auth': { category: 'infra', priority: 'low', plugin: null },
  'azure-storage-blob': { category: 'infra', priority: 'low', plugin: null },
  'azure-identity': { category: 'infra', priority: 'low', plugin: null },

  // --- Python / pip: Misc utilities ---
  'python-dateutil': { category: 'utility', priority: 'none', plugin: null },
  pytz: { category: 'utility', priority: 'none', plugin: null },
  pendulum: { category: 'utility', priority: 'low', plugin: null },
  arrow: { category: 'utility', priority: 'none', plugin: null },
  pyyaml: { category: 'utility', priority: 'none', plugin: null },
  toml: { category: 'utility', priority: 'none', plugin: null },
  tomli: { category: 'utility', priority: 'none', plugin: null },
  aiofiles: { category: 'utility', priority: 'low', plugin: 'python-async' },
  'python-multipart': { category: 'utility', priority: 'none', plugin: null },
  jinja2: { category: 'ui', priority: 'medium', plugin: 'jinja2' },
  mako: { category: 'ui', priority: 'low', plugin: null },

  // --- Ruby / Gemfile ---
  rails: { category: 'framework', priority: 'high', plugin: 'rails' },
  sidekiq: { category: 'infra', priority: 'high', plugin: null },
  devise: { category: 'framework', priority: 'medium', plugin: null },
  pundit: { category: 'framework', priority: 'medium', plugin: null },
  rspec: { category: 'testing', priority: 'medium', plugin: 'testing' },
  'rspec-rails': { category: 'testing', priority: 'medium', plugin: 'testing' },

  // --- Go ---
  'github.com/gin-gonic/gin': { category: 'framework', priority: 'high', plugin: 'gin' },
  'github.com/labstack/echo': { category: 'framework', priority: 'high', plugin: 'echo' },
  'github.com/gofiber/fiber': { category: 'framework', priority: 'high', plugin: null },
  'gorm.io/gorm': { category: 'orm', priority: 'high', plugin: null },
  'github.com/go-chi/chi': { category: 'framework', priority: 'high', plugin: null },
  'github.com/gorilla/mux': { category: 'framework', priority: 'high', plugin: null },
  'github.com/gorilla/websocket': { category: 'infra', priority: 'medium', plugin: null },
  'github.com/spf13/cobra': { category: 'infra', priority: 'medium', plugin: null },
  'github.com/spf13/viper': { category: 'infra', priority: 'medium', plugin: null },
  'go.uber.org/zap': { category: 'infra', priority: 'medium', plugin: null },
  'github.com/sirupsen/logrus': { category: 'infra', priority: 'low', plugin: null },
  'github.com/stretchr/testify': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'github.com/jackc/pgx': { category: 'orm', priority: 'high', plugin: null },
  'github.com/jmoiron/sqlx': { category: 'orm', priority: 'medium', plugin: null },
  'entgo.io/ent': { category: 'orm', priority: 'high', plugin: null },
  'github.com/go-gorm/gorm': { category: 'orm', priority: 'high', plugin: null },
  'github.com/redis/go-redis': { category: 'infra', priority: 'medium', plugin: null },
  'github.com/nats-io/nats.go': { category: 'infra', priority: 'medium', plugin: null },
  'google.golang.org/grpc': { category: 'framework', priority: 'high', plugin: null },
  'google.golang.org/protobuf': { category: 'framework', priority: 'medium', plugin: null },
  'github.com/99designs/gqlgen': { category: 'framework', priority: 'high', plugin: 'graphql' },
  'github.com/graphql-go/graphql': { category: 'framework', priority: 'medium', plugin: 'graphql' },
  'github.com/swaggo/swag': { category: 'infra', priority: 'low', plugin: null },
  'github.com/golang-jwt/jwt': { category: 'infra', priority: 'low', plugin: null },

  // --- Rust ---
  'actix-web': { category: 'framework', priority: 'high', plugin: null },
  axum: { category: 'framework', priority: 'high', plugin: null },
  rocket: { category: 'framework', priority: 'high', plugin: null },
  warp: { category: 'framework', priority: 'high', plugin: null },
  tokio: { category: 'infra', priority: 'high', plugin: null },
  serde: { category: 'framework', priority: 'medium', plugin: null },
  serde_json: { category: 'framework', priority: 'low', plugin: null },
  diesel: { category: 'orm', priority: 'high', plugin: null },
  sqlx: { category: 'orm', priority: 'high', plugin: null },
  'sea-orm': { category: 'orm', priority: 'high', plugin: null },
  reqwest: { category: 'utility', priority: 'low', plugin: null },
  tracing: { category: 'infra', priority: 'medium', plugin: null },
  tonic: { category: 'framework', priority: 'high', plugin: null },
  clap: { category: 'infra', priority: 'medium', plugin: null },
  tower: { category: 'infra', priority: 'medium', plugin: null },
  'tower-http': { category: 'infra', priority: 'low', plugin: null },
  anyhow: { category: 'utility', priority: 'none', plugin: null },
  thiserror: { category: 'utility', priority: 'none', plugin: null },

  // --- Java/Kotlin ---
  'org.springframework.boot': { category: 'framework', priority: 'high', plugin: 'spring' },
  'org.springframework': { category: 'framework', priority: 'high', plugin: 'spring' },
  'org.springframework.data': { category: 'orm', priority: 'high', plugin: 'spring' },
  'org.springframework.security': { category: 'framework', priority: 'high', plugin: 'spring' },
  'org.springframework.cloud': { category: 'infra', priority: 'high', plugin: 'spring' },
  'io.quarkus': { category: 'framework', priority: 'high', plugin: null },
  'io.micronaut': { category: 'framework', priority: 'high', plugin: null },
  'org.hibernate': { category: 'orm', priority: 'high', plugin: null },
  'org.mybatis': { category: 'orm', priority: 'medium', plugin: null },
  'org.jooq': { category: 'orm', priority: 'medium', plugin: null },
  'org.jetbrains.exposed': { category: 'orm', priority: 'medium', plugin: null },
  'io.ktor': { category: 'framework', priority: 'high', plugin: null },
  'org.junit.jupiter': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'org.mockito': { category: 'testing', priority: 'medium', plugin: 'testing' },
  'org.assertj': { category: 'testing', priority: 'low', plugin: 'testing' },
  'com.google.dagger': { category: 'framework', priority: 'medium', plugin: null },
  'io.reactivex.rxjava3': { category: 'infra', priority: 'medium', plugin: null },
  'org.apache.kafka': { category: 'infra', priority: 'high', plugin: null },
  'com.fasterxml.jackson': { category: 'utility', priority: 'low', plugin: null },
  'org.projectlombok': { category: 'utility', priority: 'none', plugin: null },
  'org.mapstruct': { category: 'utility', priority: 'low', plugin: null },

  // --- .NET / C# ---
  'Microsoft.AspNetCore': { category: 'framework', priority: 'high', plugin: null },
  'Microsoft.EntityFrameworkCore': { category: 'orm', priority: 'high', plugin: null },
  MediatR: { category: 'framework', priority: 'medium', plugin: null },
  AutoMapper: { category: 'utility', priority: 'low', plugin: null },
  FluentValidation: { category: 'framework', priority: 'medium', plugin: null },
  Serilog: { category: 'infra', priority: 'medium', plugin: null },
  xunit: { category: 'testing', priority: 'medium', plugin: 'testing' },
  NUnit: { category: 'testing', priority: 'medium', plugin: 'testing' },
  Moq: { category: 'testing', priority: 'low', plugin: 'testing' },
  Dapper: { category: 'orm', priority: 'medium', plugin: null },
  Hangfire: { category: 'infra', priority: 'medium', plugin: null },
  SignalR: { category: 'infra', priority: 'medium', plugin: null },
};
