Scan timing: clone 1.33s · analysis 8.48s · 0.3 MB · GitHub API rate-limit (preflight)
https://github.com/public-apis/public-apis.git
· scanned 2026-06-04 04:12 UTC (1 day, 9 hours ago)
· 10 languages
104 findings (56 legacy + 48 scanner) 62nd percentile · Python · tiny (<2K LoC) Scanner says 88 (lower by 18)
Last scanned 1 day, 9 hours ago · v6 · 64 findings from 2 sources. Findings combine the legacy security pipeline AND the multi-layer engine (atlas, wiring, flows, ranked) AND verified AI agent contributions.
| Component | Sub-score | Weight | Contribution |
|---|---|---|---|
structure_score |
55.0 | 0.15 | 8.25 |
security_score |
55.0 | 0.25 | 13.75 |
testing_score |
85.0 | 0.20 | 17.00 |
documentation_score |
85.0 | 0.15 | 12.75 |
practices_score |
70.0 | 0.15 | 10.50 |
code_quality |
80.0 | 0.10 | 8.00 |
| Overall | 1.00 | 70.2 |
All 87 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
test_error_message_return_and_return_type |
software | healthy | scripts/tests/test_validate_format.py:19 |
test_if_get_categories_content_return_correct_data_of_categ… |
software | healthy | scripts/tests/test_validate_format.py:42 |
test_if_check_alphabetical_order_return_correct_msg_error |
software | healthy | scripts/tests/test_validate_format.py:71 |
test_check_title_with_correct_title |
software | healthy | scripts/tests/test_validate_format.py:120 |
test_check_title_with_markdown_syntax_incorrect |
software | healthy | scripts/tests/test_validate_format.py:129 |
test_check_title_with_api_at_the_end_of_the_title |
software | healthy | scripts/tests/test_validate_format.py:142 |
test_check_description_with_correct_description |
software | healthy | scripts/tests/test_validate_format.py:155 |
test_check_description_with_first_char_is_not_capitalized |
software | healthy | scripts/tests/test_validate_format.py:164 |
test_check_description_with_punctuation_in_the_end |
software | healthy | scripts/tests/test_validate_format.py:178 |
test_check_description_that_exceeds_the_character_limit |
software | healthy | scripts/tests/test_validate_format.py:197 |
test_check_auth_with_valid_auth |
software | healthy | scripts/tests/test_validate_format.py:212 |
test_check_auth_without_backtick |
software | healthy | scripts/tests/test_validate_format.py:223 |
test_check_auth_with_invalid_auth |
software | healthy | scripts/tests/test_validate_format.py:238 |
test_check_https_with_valid_https |
software | healthy | scripts/tests/test_validate_format.py:271 |
test_check_https_with_invalid_https |
software | healthy | scripts/tests/test_validate_format.py:279 |
test_check_cors_with_valid_cors |
software | healthy | scripts/tests/test_validate_format.py:294 |
test_check_cors_with_invalid_cors |
software | healthy | scripts/tests/test_validate_format.py:302 |
test_check_entry_with_correct_segments |
software | healthy | scripts/tests/test_validate_format.py:317 |
test_check_entry_with_incorrect_segments |
software | healthy | scripts/tests/test_validate_format.py:326 |
test_check_file_format_with_correct_format |
software | healthy | scripts/tests/test_validate_format.py:347 |
test_check_file_format_with_category_header_not_added_to_in… |
software | healthy | scripts/tests/test_validate_format.py:374 |
test_check_file_format_with_category_without_min_entries |
software | healthy | scripts/tests/test_validate_format.py:394 |
test_check_file_format_entry_without_all_necessary_columns |
software | healthy | scripts/tests/test_validate_format.py:424 |
test_check_file_format_without_1_space_between_the_segments |
software | healthy | scripts/tests/test_validate_format.py:447 |
__init__ |
software | healthy | scripts/tests/test_validate_links.py:13 |
setUp |
software | healthy | scripts/tests/test_validate_links.py:21 |
test_find_link_in_text |
software | healthy | scripts/tests/test_validate_links.py:44 |
test_find_link_in_text_with_invalid_argument |
software | healthy | scripts/tests/test_validate_links.py:74 |
test_if_check_duplicate_links_has_the_correct_return |
software | healthy | scripts/tests/test_validate_links.py:80 |
test_if_fake_user_agent_has_a_str_as_return |
software | healthy | scripts/tests/test_validate_links.py:99 |
test_get_host_from_link |
software | healthy | scripts/tests/test_validate_links.py:103 |
test_has_cloudflare_protection_with_code_403_and_503_in_res… |
software | healthy | scripts/tests/test_validate_links.py:128 |
test_has_cloudflare_protection_when_there_is_no_protection |
software | healthy | scripts/tests/test_validate_links.py:147 |
find_links_in_text |
software | healthy | scripts/validate/links.py:12 |
find_links_in_file |
software | healthy | scripts/validate/links.py:26 |
check_duplicate_links |
software | healthy | scripts/validate/links.py:41 |
fake_user_agent |
software | healthy | scripts/validate/links.py:65 |
get_host_from_link |
software | healthy | scripts/validate/links.py:78 |
has_cloudflare_protection |
software | healthy | scripts/validate/links.py:95 |
check_if_link_is_working |
software | healthy | scripts/validate/links.py:152 |
check_if_list_of_links_are_working |
software | healthy | scripts/validate/links.py:201 |
start_duplicate_links_checker |
software | healthy | scripts/validate/links.py:212 |
start_links_working_checker |
software | healthy | scripts/validate/links.py:229 |
main |
software | healthy | scripts/validate/links.py:245 |
error_message |
software | healthy | scripts/validate/format.py:37 |
get_categories_content |
software | healthy | scripts/validate/format.py:42 |
check_alphabetical_order |
software | healthy | scripts/validate/format.py:70 |
check_title |
software | healthy | scripts/validate/format.py:87 |
check_description |
software | healthy | scripts/validate/format.py:107 |
check_auth |
software | healthy | scripts/validate/format.py:129 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
README.md |
software | healthy | README.md |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
README.md |
software | healthy | scripts/README.md |
github_pull_request.sh |
software | healthy | scripts/github_pull_request.sh |
requirements.txt |
software | healthy | scripts/requirements.txt |
__init__.py |
software | healthy | scripts/tests/__init__.py |
test_validate_format.py |
software | healthy | scripts/tests/test_validate_format.py |
test_validate_links.py |
software | healthy | scripts/tests/test_validate_links.py |
links.py |
software | healthy | scripts/validate/links.py |
__init__.py |
software | healthy | scripts/validate/__init__.py |
format.py |
software | healthy | scripts/validate/format.py |
ISSUE_TEMPLATE.md |
software | healthy | .github/ISSUE_TEMPLATE.md |
PULL_REQUEST_TEMPLATE.md |
software | healthy | .github/PULL_REQUEST_TEMPLATE.md |
validate_links.yml |
software | healthy | .github/workflows/validate_links.yml |
test_of_validate_package.yml |
software | healthy | .github/workflows/test_of_validate_package.yml |
test_of_push_and_pull.yml |
software | healthy | .github/workflows/test_of_push_and_pull.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
scripts |
software | healthy | scripts |
tests |
software | healthy | scripts/tests |
validate |
software | healthy | scripts/validate |
.github |
software | healthy | .github |
workflows |
software | healthy | .github/workflows |
| Label | Layer | Status | Path |
|---|---|---|---|
TestValidadeFormat |
software | healthy | scripts/tests/test_validate_format.py:17 |
FakeResponse |
software | healthy | scripts/tests/test_validate_links.py:12 |
TestValidateLinks |
software | healthy | scripts/tests/test_validate_links.py:19 |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::validate_links |
cicd | healthy | .github/workflows/validate_links.yml |
gha::test_of_validate_package |
cicd | healthy | .github/workflows/test_of_validate_package.yml |
gha::test_of_push_and_pull |
cicd | healthy | .github/workflows/test_of_push_and_pull.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
validate_links |
cicd | healthy | .github/workflows/validate_links.yml |
unittest |
cicd | healthy | .github/workflows/test_of_validate_package.yml |
tests |
cicd | healthy | .github/workflows/test_of_push_and_pull.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-ijcoy9qu |
software | healthy | /tmp/repobility-clone-ijcoy9qu |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::scripts/validate/format.py |
security | healthy | scripts/validate/format.py |
This page is publicly accessible at:
https://repobility.com/scan/8a53490f-106d-43fc-b5b7-d6909ad84ab7/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/8a53490f-106d-43fc-b5b7-d6909ad84ab7/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.