Custom linter for awesome lists — format validation, alphabetical order, badge checks, and configurable URL approval
Project description
Custom linter for awesome lists. Validates entry format, alphabetical order, badge presence, and URL hosts.
Designed as a complement or replacement for awesome-lint when your list uses advanced formatting (clickable badges, custom tags, etc.) that the standard linter doesn't support.
Checks
- Entry format —
- [Name](url) ... - Description. - Description style — starts with capital letter, ends with period, doesn't repeat the project name
- Alphabetical order — entries sorted within each section/subsection
- No duplicate URLs — each project listed only once
- URL host validation — only approved git hosting domains (configurable)
- Badge presence — optionally require shields.io badges (stars, language, license, etc.)
- Custom tag badges — require colored tag badges (e.g. EU regulation, Spanish institution)
- ToC consistency — table of contents matches actual sections
Usage as GitHub Action
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: GeiserX/awesome-lint-extra@main
with:
require_badges: 'true'
badge_types: '["stars", "last-commit", "language", "license"]'
check_alphabetical: 'true'
Install from PyPI
pip install awesome-lint-extra
Then run from any directory containing a README.md:
awesome-lint-extra
Usage locally (without installing)
python3 lint.py
Configuration
Create .awesomerc.json in your repo root to configure checks. See .awesomerc.example.json for all options.
Allowed hosts
By default, the linter accepts URLs from major git hosting platforms:
- github.com, gitlab.com, codeberg.org, gitea.com, sr.ht, bitbucket.org, framagit.org, salsa.debian.org, sourceforge.net, and more
Override with the allowed_hosts config option or action input:
- uses: GeiserX/awesome-lint-extra@main
with:
allowed_hosts: '["github.com", "gitlab.com", "my-gitea.example.com"]'
Requiring badges
Set require_badges: true and specify which badge types are required:
{
"require_badges": true,
"badge_types": ["stars", "language", "license"]
}
Supported badge types: stars, last-commit, language, license.
Custom tag badges
If your list uses colored tag badges (e.g., EU regulation tags), you can require them by specifying a hex color:
- uses: GeiserX/awesome-lint-extra@main
with:
require_custom_tags: '003399'
Or in .awesomerc.json:
{
"require_custom_tags": "003399"
}
This checks that each entry has at least one shields.io badge with the specified color.
License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file awesome_lint_extra-1.0.0.tar.gz.
File metadata
- Download URL: awesome_lint_extra-1.0.0.tar.gz
- Upload date:
- Size: 20.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7712b9047f00eec87e0db9d404604a4978fc57922e9559c49cf4abd6c86a0a5d
|
|
| MD5 |
1c0b985c543505d88a6ba4be6fb083af
|
|
| BLAKE2b-256 |
dc84c80b3dcc6b00118923a6184d718bdf70d13d2d3adf5f3b54d8186e148446
|
File details
Details for the file awesome_lint_extra-1.0.0-py3-none-any.whl.
File metadata
- Download URL: awesome_lint_extra-1.0.0-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
01779844d9b23ae86e224e335abae160014710195cc0e273ae88ca62c49d43c8
|
|
| MD5 |
e3b95e0ed569b60880f71f12c55e18e4
|
|
| BLAKE2b-256 |
9460e56e760c828297a2a7d8b407e6022793e20e56b2da590817b5ad1ab304d8
|