| name | license-checker |
| description | Assess license compatibility for Python package redistribution using SPDX.org license database. Evaluates whether a given license allows building and distributing wheels, with real-time license information lookup. |
| allowed-tools | WebFetch |
Python Package License Compatibility Checker
This skill helps you evaluate whether a Python package license is compatible with redistribution, particularly for building and distributing wheels in enterprise environments. It uses the authoritative SPDX License List for accurate, up-to-date license information.
Assessment Instructions
When a user provides a license name and asks about compatibility for redistribution, building wheels, or licensing restrictions, follow this methodology:
Step-by-Step Process
Fetch Current SPDX Data:
Use WebFetch to query: https://raw.githubusercontent.com/spdx/license-list-data/main/json/licenses.jsonLicense Matching:
- Try exact SPDX ID match first
- Try case-insensitive SPDX ID match
- Try full name matching
- Try partial/fuzzy matching for common variations
Risk Classification:
IF (isOsiApproved AND isFsfLibre AND permissive_pattern): Risk = Low, Status = Compatible ELIF (isOsiApproved AND weak_copyleft_pattern): Risk = Medium, Status = Compatible with Requirements ELIF (strong_copyleft_pattern OR NOT isOsiApproved): Risk = High, Status = Restricted/IncompatibleGenerate Assessment:
- Include all SPDX metadata
- Provide clear compatibility guidance
- List specific requirements
- Add Red Hat context where relevant
License Assessment Framework
Input Processing
Accept various formats and normalize them:
- SPDX Identifiers: "MIT", "Apache-2.0", "GPL-3.0-only"
- Full Names: "MIT License", "Apache License 2.0", "GNU General Public License v3.0"
- Common Aliases: "Apache 2", "BSD 3-Clause", "GPLv3"
- Case Variations: Handle case-insensitive matching
SPDX Data Analysis
When processing SPDX license data, examine these key fields:
licenseId: Official SPDX identifiername: Full license nameisOsiApproved: OSI approval status (boolean)isFsfLibre: FSF Free Software status (boolean)isDeprecatedLicenseId: Whether license is deprecated (boolean)reference: URL to full license detailsseeAlso: Array of additional reference URLs
Compatibility Assessment Logic
Use SPDX flags and license patterns to determine compatibility:
✅ Highly Compatible (Low Risk)
- OSI Approved AND FSF Libre
- Permissive licenses (MIT, Apache, BSD, ISC family)
- No strong copyleft requirements
⚠️ Compatible with Requirements (Medium Risk)
- OSI Approved but specific obligations
- Weak copyleft (LGPL, MPL)
- File-level copyleft licenses
❌ Restricted/High Risk
- Strong copyleft (GPL, AGPL)
- Non-OSI approved licenses
- Proprietary or unclear terms
Output Format
Provide a structured assessment with:
SPDX Information:
- Official SPDX ID
- Full license name
- OSI Approved: Yes/No
- FSF Libre: Yes/No
- Deprecated: Yes/No (if applicable)
Compatibility Assessment:
- Status: Compatible/Restricted/Incompatible
- Redistribution: Allowed/Restricted/Prohibited
- Commercial Use: Allowed/Restricted/Prohibited
Requirements: Key compliance obligations
Risk Level: Low/Medium/High for enterprise use
Red Hat Context: Special considerations if applicable
Red Hat Vendor Agreements
Red Hat has specific licensing agreements with the following hardware vendors:
- NVIDIA: Agreement covers CUDA libraries, runtimes, and related NVIDIA proprietary components
- Intel Gaudi: Agreement covers Gaudi AI accelerator software and libraries
- IBM Spyre: Agreement covers IBM Spyre AI hardware and associated software components
When evaluating packages with dependencies on these vendor-specific components, note that Red Hat has explicit redistribution rights under these agreements.
Error Handling
SPDX Data Fetch Failures
If the SPDX license list cannot be retrieved, exit early and warn the user.
License Not Found in SPDX
When a license identifier is not found in the SPDX license list:
- Check for common typos or variations
- Suggest SPDX-compliant alternatives
- Recommend contacting package maintainer
- Provide conservative risk assessment
Deprecated Licenses
For deprecated SPDX licenses:
- Note the deprecation status
- Suggest migrating to current equivalent
- Provide assessment based on deprecated license terms
- Recommend updating package licensing
For complex licensing scenarios involving multiple packages or custom license terms, recommend consultation with legal counsel.
Integration Notes
This skill works best when combined with:
- python-packaging:license-finder - Use to find license names before compatibility assessment