Публічний реєстр
Звіт про здоров'я програмного забезпеченнясхема 0.27.0 · метрики 1.13.0 · 2026-07-26 10:07 UTC

spatie / laravel-newsletter

Manage newsletters in Laravel

PHPMIT★ 1 641 зірка⑂ 235 форківз трав. 2015 р.Переглянути на GitHub ↗

spatie/laravel-newsletter має індекс здоров’я 63 зі 100, що відповідає смузі «Помірний». Найвищий показник — Community & Adoption (76/100), найнижчий — AI Readiness (29/100). Останнє оновлення було 30 днів тому. Більшість нещодавньої роботи виконує один учасник.

63
загалом / 100
Помірний

Індекс здоров'я програмного забезпечення

Метрики згруповано у зважені категорії на шкалі 1–100. Загальна оцінка починається як їхнє середнє; коли публічні дані активують Політику юрисдикцій високого ризику, рейтинг коригується й отримує верхню межу 49 («Під ризиком»). Готовність до ШІ не входить до індексу.

63
Відмінний85-100Зразковий; відповідає практично всім перевіреним критеріям
Добрий70-84Здоровий; незначні прогалини
Помірний50-69Прийнятний, але з помітними прогалинами; рекомендовано перевірку
У зоні ризику30-49Суттєві слабкі місця; впровадження потребує обережності
Критичний1-29Серйозні проблеми (покинутий, єдиний мейнтейнер, без базової гігієни)
ЖиттєздатністьСпільнота тавпровадженняСталість таврядуванняІнженернаякістьБезпекаГотовність доШІ

Профіль оцінок

Кожна вісь — окрема категорія. Форма важить більше, ніж середнє: здоровий об'єкт заповнює всю фігуру, тоді як профіль із піками та провалами означає, що сила в одному вимірі маскує ризик в іншому.

Власність

SpatieОрганізація
3 803 підписники524 публічні репозиторіїз трав. 2014 р.

За цим репозиторієм стоїть організація — спільна, підзвітна опіка, здатна пережити будь-якого окремого мейнтейнера.

Пакетні екосистеми

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
Packagistspatie/laravel-newsletter5.4.0103 3865389 днів томуmailchimpnewsletterlaravelmailerlitemailcoach

Метрики за категоріями

Життєздатність

Чи живий проєкт — чи пишеться код і чи виходять релізи?

60Помірний · 22% загального індексу

Активність розробки

44У зоні ризику
Як обчислюється оцінка
28.8/36Свіжість push — останній push 30 дн. тому
4.2/36Ритм комітів — 6/52 тижнів із комітами
9/18Обсяг комітів — 9 комітів за останній рік
2/10OpenSSF Scorecard: Maintained — 3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
Використані вхідні дані
commits_last_year9
human_commit_share0,93
days_since_last_push30
active_weeks_last_year6
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 53 релізів
36/36Свіжість релізів — останній реліз 89 дн. тому
12.6/27Ритм релізів — реліз кожні ~173,9 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count53
latest_release_tag5.4.0
releases_from_tagsні
days_since_latest_release89
mean_days_between_releases173,9
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

Спільнота та впровадження

Чи має проєкт користувачів, завантаження, увагу та влаштовані умови для контриб’юторів?

76Добрий · 18% загального індексу
Як обчислюється оцінка
52.1/60Зірки — 1 641 зірок
19.7/25Форки — 235 форків
8.7/15Спостерігачі — 37 спостерігачів
Використані вхідні дані
forks235
stars1 641
watchers37
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
22.5/22.5README
22.5/22.5Ліцензія — визнана ліцензія (MIT)
18/18Настанови CONTRIBUTING
0/13.5Кодекс поведінки
0/7.2Шаблон issue
0/6.3Шаблон PR
Використані вхідні дані
has_readmeтак
has_licenseтак
has_contributingтак
has_issue_templateні
has_code_of_conductні
has_pull_request_templateні
Як обчислюється оцінка
66.9/80Щомісячні завантаження — 103 386 завантажень/місяць у packagist
10.1/20Залежні пакети в реєстрі — залежних пакетів: 32
Використані вхідні дані
packagesspatie/laravel-newsletter
dependents32
ecosystemspackagist
total_downloads6 710 559
monthly_downloads103 386

Сталість та врядування

Чи переживе проєкт своїх людей — бас-фактор, реактивність, хто за ним стоїть і як супроводжуються пакети?

70Добрий · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
9/22.5Розподіл комітів — головний контриб’ютор — автор 60% комітів
13.5/13.5Широта контриб’юторів — 44 контриб’юторів
10/10OpenSSF Scorecard: Contributors — project has 9 contributing companies or organizations
Використані вхідні дані
bus_factor1
contributors_sampled44
top_contributor_share0,599
Як обчислюється оцінка
46.8/46.8Вирішення issue — закрито 100% issue
18.1/38.3Прийняття PR — злито 76/161 вирішених PR
3/15OpenSSF Scorecard: Code-Review — Found 4/18 approved changesets -- score normalized to 2
Використані вхідні дані
merged_prs76
open_issues0
closed_issues169
issue_closed_ratio1
closed_unmerged_prs85
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
25/25Охоплення власника — 3 803 підписників у spatie
25/25Послужний список — 524 публічних репозиторіїв, вік облікового запису ~12 р.
Використані вхідні дані
followers3 803
owner_typeOrganization
is_verified
owner_loginspatie
public_repos524
account_age_days4 460

Супровід пакетів

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у packagist
35/35Свіжість публікацій — остання публікація 89 дн. тому
20/20Історія версій — 53 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packagesspatie/laravel-newsletter
ecosystemspackagist
any_deprecatedні
min_days_since_publish89

Інженерна якість

Чи наявні базові інженерні практики та документація?

63Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 4 процес(ів) CI
24/24Наявні тести
0/16Конфігурація лінтера
0/9.6Pre-commit-хуки
6.4/6.4.editorconfig
8/20OpenSSF Scorecard: CI-Tests — 5 out of 12 merged PRs checked by a CI test -- score normalized to 4
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigтак
has_linter_configні
has_precommit_configні

Документація

65Помірний
Як обчислюється оцінка
30/30README
0/25Каталог документації
15/15Сайт документації / домашня сторінка — https://freek.dev/440-easily-integrate-mailchimp-in-laravel-5
10/10Опис репозиторію
10/10Теми — 6 тем
0/10Wiki
Використані вхідні дані
topicslaravel, php, newsletter, mailchimp, mailchimp-api, mailcoach
has_wikiні
homepagehttps://freek.dev/440-easily-integrate-mailchimp-in-laravel-5
has_readmeтак
has_docs_dirні
has_descriptionтак

Безпека

Чи міцні видимі практики безпеки й ланцюга постачання, без непослабленої пов’язаності з юрисдикціями високого ризику?

45У зоні ризику · 16% загального індексу

Стан безпеки

45У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
1/2.5CI-Tests — 5 out of 12 merged PRs checked by a CI test -- score normalized to 4
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
1.5/7.5Code-Review — Found 4/18 approved changesets -- score normalized to 2
2.5/2.5Contributors — project has 9 contributing companies or organizations
10/10Dangerous-Workflow — no dangerous workflow patterns detected
7.5/7.5Dependency-Update-Tool — update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
1.5/7.5Maintained — 3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
7.5/7.5Vulnerabilities — 0 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4,5
Виключено з оцінювання (немає даних або не застосовно): packaging, signed_releases. Залишкові ваги перенормовано.

Готовність до ШІ

Наскільки репозиторій оснащений для розробки та супроводу за участі ШІ-агентів? Незалежний, експериментальний бейдж — вага 0.0, тож він подається окремо і не впливає на загальний індекс здоров'я.

29Критичний · 0% загального індексу
Як обчислюється оцінка
0/45Інструкції для агентів — немає CLAUDE.md / AGENTS.md / правил редактора
0/15Машиночитана документація (llms.txt)
13.8/40Читабельна історія комітів — намір зазначено у 24 з 93 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,258
agent_instruction_files
agent_instruction_max_bytes
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
0/11Конфігурація лінтера / форматера
0/11Статична перевірка типів
0/10Відтворюване середовище
0/10Підтверджена практика роботи з агентами — серед останніх 100 комітів немає створених агентом
8/8Автоматизоване супроводження — 7 з останніх 100 комітів — автоматичні оновлення залежностей
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfiles
has_dockerfileні
typed_languageні
bootstrap_files
has_devcontainerні
has_linter_configні
typecheck_configs
agent_commit_share0
toolchain_manifests
dependency_bot_commit_share0,07
Як обчислюється оцінка
0/45Типізований код — PHP без конфігурації перевірки типів
55/55Керовані розміри файлів — 0/20 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languagePHP
largest_source_bytes4 662
source_files_sampled20
oversized_source_files0

Ключові факти

1 641зірок GitHub
44контриб'юторів
9комітів за останні 12 місяців
30днів від останнього пушу
53релізів
1бас-фактор
0відкритих issue
Packagistпакетних екосистем

Попередження щодо збору даних

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • No resolved dependencies carried a version and a supported ecosystem

Докладніше

Історія зірок і форків 0 ★ / 235 ⇿
0Зірки
235Форки
53Релізи

Коли додано кожну зірку й форк — зібрано з GitHub і згруповано за днями. Кумулятивне зростання розміщено просто над денними додаваннями, з яких воно складається, тож їх видно одне проти одного: рівномірне органічне накопичення виглядає зовсім інакше, ніж різкий короткочасний сплеск. Там, де цю різницю можна виміряти, її подано як автентичність росту.

0408012016020024023162015-052020-122026-07
Мажорні 5Мінорні 25Патчі 23

Кожна точка охоплює 11 днів.

OpenSSF Scorecard 4.5 / 10
4.5сукупно

Незалежна, не прив'язана до інструментів оцінка безпеки від відкритого проєкту OpenSSF Scorecard. Кожна перевірка винагороджує практику безпеки, а не інструмент конкретного постачальника. Перевірки, які Scorecard не зміг визначити, позначено н/д і виключено з оцінки безпеки (вони ніколи не зараховуються як нуль).Scorecard v5.5.0 · 2026-07-26 10:06 UTC

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
4CI-Tests5 out of 12 merged PRs checked by a CI test -- score normalized to 4
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
2Code-ReviewFound 4/18 approved changesets -- score normalized to 2
10Contributorsproject has 9 contributing companies or organizations
10Dangerous-Workflowno dangerous workflow patterns detected
10Dependency-Update-Toolupdate tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
2Maintained3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
10Vulnerabilities0 existing vulnerabilities detected
Прямі залежності 2
РеєстрПакетОбмеження версіїМаніфест
Packagistspatie/laravel-package-tools^1.13composer.json
Packagistilluminate/log^9|^10|^11|^12|^13.0composer.json
Усі залежності 13

Повний розв'язаний набір залежностей із графа залежностей GitHub: 2 прямих і 11 непрямих (транзитивних) пакетів. Транзитивне замикання є повним, коли в репозиторії закомічено lockfile.

РеєстрПакетВерсіяЗв'язок
Packagistilluminate/logпряма
Packagistspatie/laravel-package-toolsпряма
Packagistdrewm/mailchimp-apiнепряма
Packagistguzzlehttp/guzzleнепряма
Packagistmailerlite/mailerlite-phpнепряма
Packagistmockery/mockeryнепряма
Packagistorchestra/testbenchнепряма
Packagistpestphp/pestнепряма
Packagistphpнепряма
Packagistphpstan/phpstanнепряма
Packagistphpunit/phpunitнепряма
Packagistspatie/mailcoach-sdk-phpнепряма
Packagistspatie/rayнепряма
Сповіщення про залежності не оцінено

Звірка сповіщень не відбулася для цього звіту: No resolved dependencies carried a version and a supported ecosystem

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [
        "laravel",
        "php",
        "newsletter",
        "mailchimp",
        "mailchimp-api",
        "mailcoach"
      ],
      "is_fork": false,
      "size_kb": 278,
      "has_wiki": false,
      "homepage": "https://freek.dev/440-easily-integrate-mailchimp-in-laravel-5",
      "languages": {
        "PHP": 23688
      },
      "pushed_at": "2026-06-26T09:46:05Z",
      "created_at": "2015-05-04T13:19:53Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-11T09:11:05Z",
      "description": "Manage newsletters in Laravel ",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "MIT",
      "default_branch": "main",
      "license_spdx_raw": "MIT",
      "primary_language": "PHP",
      "significant_languages": [
        "PHP"
      ]
    },
    "owner": {
      "blog": "https://spatie.be/open-source",
      "name": "Spatie",
      "type": "Organization",
      "login": "spatie",
      "company": null,
      "location": "Antwerp, Belgium",
      "followers": 3803,
      "avatar_url": "https://avatars.githubusercontent.com/u/7535935?v=4",
      "created_at": "2014-05-09T16:26:39Z",
      "is_verified": null,
      "public_repos": 524,
      "account_age_days": 4460
    },
    "license": {
      "state": "standard",
      "spdx_id": "MIT",
      "raw_spdx": "MIT",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": true
    },
    "activity": {
      "releases": [
        {
          "tag": "5.4.0",
          "kind": "minor",
          "published_at": "2026-04-28T06:59:14Z"
        },
        {
          "tag": "5.3.2",
          "kind": "patch",
          "published_at": "2026-02-21T21:10:44Z"
        },
        {
          "tag": "5.3.1",
          "kind": "patch",
          "published_at": "2025-03-26T08:06:53Z"
        },
        {
          "tag": "5.3.0",
          "kind": "minor",
          "published_at": "2025-03-26T08:05:40Z"
        },
        {
          "tag": "5.2.1",
          "kind": "patch",
          "published_at": "2025-01-31T15:05:09Z"
        },
        {
          "tag": "5.2.0",
          "kind": "minor",
          "published_at": "2024-07-18T15:02:43Z"
        },
        {
          "tag": "5.1.1",
          "kind": "patch",
          "published_at": "2023-02-09T13:52:26Z"
        },
        {
          "tag": "5.1.0",
          "kind": "minor",
          "published_at": "2023-01-14T21:01:04Z"
        },
        {
          "tag": "5.0.0",
          "kind": "major",
          "published_at": "2022-11-10T17:09:05Z"
        },
        {
          "tag": "4.11.0",
          "kind": "minor",
          "published_at": "2022-01-14T07:41:20Z"
        },
        {
          "tag": "4.10.0",
          "kind": "minor",
          "published_at": "2021-05-18T11:29:00Z"
        },
        {
          "tag": "4.9.0",
          "kind": "minor",
          "published_at": "2020-11-25T14:15:33Z"
        },
        {
          "tag": "4.8.2",
          "kind": "patch",
          "published_at": "2020-09-30T22:15:37Z"
        },
        {
          "tag": "4.8.1",
          "kind": "patch",
          "published_at": "2020-09-09T09:34:16Z"
        },
        {
          "tag": "4.8.0",
          "kind": "minor",
          "published_at": "2020-03-03T12:49:55Z"
        },
        {
          "tag": "4.7.1",
          "kind": "patch",
          "published_at": "2019-09-16T09:35:47Z"
        },
        {
          "tag": "4.7.0",
          "kind": "minor",
          "published_at": "2019-09-13T09:27:34Z"
        },
        {
          "tag": "4.6.0",
          "kind": "minor",
          "published_at": "2019-09-04T11:17:25Z"
        },
        {
          "tag": "4.5.0",
          "kind": "minor",
          "published_at": "2019-05-21T07:27:43Z"
        },
        {
          "tag": "4.4.1",
          "kind": "patch",
          "published_at": "2019-04-28T16:51:43Z"
        },
        {
          "tag": "4.4.0",
          "kind": "minor",
          "published_at": "2019-04-24T13:54:29Z"
        },
        {
          "tag": "4.3.0",
          "kind": "minor",
          "published_at": "2019-02-28T08:25:48Z"
        },
        {
          "tag": "4.2.3",
          "kind": "patch",
          "published_at": "2019-02-28T08:18:51Z"
        },
        {
          "tag": "4.2.2",
          "kind": "patch",
          "published_at": "2018-09-04T08:30:15Z"
        },
        {
          "tag": "4.2.1",
          "kind": "patch",
          "published_at": "2018-03-10T07:54:37Z"
        },
        {
          "tag": "4.2.0",
          "kind": "minor",
          "published_at": "2018-02-08T10:32:14Z"
        },
        {
          "tag": "4.1.0",
          "kind": "minor",
          "published_at": "2017-08-30T23:11:39Z"
        },
        {
          "tag": "4.0.0",
          "kind": "major",
          "published_at": "2017-08-30T15:27:18Z"
        },
        {
          "tag": "3.7.0",
          "kind": "minor",
          "published_at": "2017-07-12T19:27:25Z"
        },
        {
          "tag": "3.6.1",
          "kind": "patch",
          "published_at": "2017-07-11T19:30:47Z"
        },
        {
          "tag": "3.6.0",
          "kind": "minor",
          "published_at": "2017-06-29T19:52:06Z"
        },
        {
          "tag": "3.5.0",
          "kind": "minor",
          "published_at": "2017-06-23T18:16:08Z"
        },
        {
          "tag": "3.4.0",
          "kind": "minor",
          "published_at": "2017-01-23T15:56:23Z"
        },
        {
          "tag": "3.3.0",
          "kind": "minor",
          "published_at": "2016-11-24T08:56:32Z"
        },
        {
          "tag": "3.2.0",
          "kind": "minor",
          "published_at": "2016-11-08T17:35:52Z"
        },
        {
          "tag": "3.1.0",
          "kind": "minor",
          "published_at": "2016-10-16T23:27:41Z"
        },
        {
          "tag": "3.0.6",
          "kind": "patch",
          "published_at": "2016-10-13T07:33:01Z"
        },
        {
          "tag": "3.0.5",
          "kind": "patch",
          "published_at": "2016-09-20T06:46:59Z"
        },
        {
          "tag": "3.0.4",
          "kind": "patch",
          "published_at": "2016-08-24T05:54:41Z"
        },
        {
          "tag": "3.0.3",
          "kind": "patch",
          "published_at": "2016-07-11T13:54:23Z"
        },
        {
          "tag": "3.0.2",
          "kind": "patch",
          "published_at": "2016-04-22T10:59:34Z"
        },
        {
          "tag": "3.0.1",
          "kind": "patch",
          "published_at": "2016-04-22T10:46:54Z"
        },
        {
          "tag": "3.0.0",
          "kind": "major",
          "published_at": "2016-04-22T09:53:52Z"
        },
        {
          "tag": "2.2.0",
          "kind": "minor",
          "published_at": "2015-12-21T22:49:07Z"
        },
        {
          "tag": "2.1.0",
          "kind": "minor",
          "published_at": "2015-12-15T20:08:05Z"
        },
        {
          "tag": "2.0.0",
          "kind": "major",
          "published_at": "2015-06-24T21:03:16Z"
        },
        {
          "tag": "1.1.0",
          "kind": "minor",
          "published_at": "2015-06-06T21:09:43Z"
        },
        {
          "tag": "1.0.4",
          "kind": "patch",
          "published_at": "2015-05-22T20:49:34Z"
        },
        {
          "tag": "1.0.3",
          "kind": "patch",
          "published_at": "2015-05-08T10:35:16Z"
        },
        {
          "tag": "1.0.2",
          "kind": "patch",
          "published_at": "2015-05-08T09:44:04Z"
        },
        {
          "tag": "1.0.1",
          "kind": "patch",
          "published_at": "2015-05-08T09:39:19Z"
        },
        {
          "tag": "1.0.0",
          "kind": "major",
          "published_at": "2015-05-07T15:53:53Z"
        },
        {
          "tag": "0.0.1",
          "kind": "patch",
          "published_at": "2015-05-07T15:24:52Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "5877e95172d072f3726696e64064d3c8ec24c16b",
          "body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v2...v7)\n\n---\nupdated-dependenc\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump actions/checkout from 2 to 7 (#349)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-06-26T09:46:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b2cb103bcc5bd0ceadf173c0c7595977e7a70ce0",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2026-04-28T06:59:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "594906e86f29d1a1105858964ff33c216cdb4796",
          "body": "* Add MailerLite driver with configuration and README documentation\n\n* update composer.json\n\n* Add error tracking and clean up MailerLite driver\n\nAdds getLastError()/lastActionSucceeded() parity with the MailChimp\ndriver, removes the non-interface unsubscribe parameter, stops sending\nstatus=null on subscribe, and tightens the README.\n\n* Fix styling\n\n---------\n\nCo-authored-by: Gaurang Sharma <gaurang@mailerlite.com>\nCo-authored-by: freekmurze <483853+freekmurze@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Add MailerLite driver support (#348)",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2026-04-28T06:59:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "725d06f2cdf2de451f2340d1e4b029a67812ff5e",
          "body": "Bumps [ramsey/composer-install](https://github.com/ramsey/composer-install) from 3 to 4.\n- [Release notes](https://github.com/ramsey/composer-install/releases)\n- [Commits](https://github.com/ramsey/composer-install/compare/v3...v4)\n\n---\nupdated-dependencies:\n- dependency-name: ramsey/composer-instal\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump ramsey/composer-install from 3 to 4 (#347)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-03-19T07:50:18Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bebdc01eeeb83b433de76c6a7e0771960b96191a",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2026-02-21T21:12:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f8966bb4d2ad2324b8c2eb0128fca622c9da23e9",
          "body": "* Bump dependencies for Laravel 13\n\n* Update GitHub Actions for Laravel 13\n\n* Add Pest 4 support\n\n* Add PHP 8.5 support, fix coverage warnings, ensure Pest 4/PHPUnit 12\n\n---------\n\nCo-authored-by: Shift <shift@laravelshift.com>",
          "is_bot": false,
          "headline": "Add Laravel 13 support (#345)",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2026-02-21T21:10:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "041fc97f728d6db2ebeb6bc916a583da385a2e3d",
          "body": "Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 4 to 7.\n- [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases)\n- [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md)\n- [Co\n[…]\nirect:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump stefanzweifel/git-auto-commit-action from 4 to 7 (#341)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2026-01-31T09:45:43Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "13453d0ee2df4862ad0e7a1f8b863d73cd819a50",
          "body": "Update issue template",
          "is_bot": false,
          "headline": "Merge pull request #340 from spatie/fix-issue-template",
          "author_name": "Alex Vanderbist",
          "author_login": "AlexVanderbist",
          "committed_at": "2025-09-08T07:23:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3142854060fd8e0c9e3e6fb99f73938056dc866",
          "body": null,
          "is_bot": false,
          "headline": "Update issue template",
          "author_name": "Alex Vanderbist",
          "author_login": "AlexVanderbist",
          "committed_at": "2025-09-08T06:51:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "521ee859a41c45ddd820073dde59959bd5a93a43",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Jimi Robaer",
          "author_login": "jimirobaer",
          "committed_at": "2025-06-05T11:22:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ef705267291ee2b380ba4a772f7b7f3944952d5c",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Jimi Robaer",
          "author_login": "jimirobaer",
          "committed_at": "2025-04-15T16:15:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4fbddfa98db73c693fcd5a5920c6c77350fc4b7b",
          "body": null,
          "is_bot": false,
          "headline": "fix docblock for phpstan",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2025-03-26T08:09:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "15b805ab6cc1a11c04707839724b1212ea693f3a",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "Nielsvanpach",
          "author_login": "Nielsvanpach",
          "committed_at": "2025-03-26T08:07:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "34e8338a5f328c4d7dac176761ab57ee9feb3c28",
          "body": "Update facade docblock",
          "is_bot": false,
          "headline": "Merge pull request #334 from duncanmcclean/patch-1",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2025-03-26T08:06:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "68db660ece655ce7f605f7a64a5275376aa45307",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "Nielsvanpach",
          "author_login": "Nielsvanpach",
          "committed_at": "2025-03-26T08:05:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1048fb6300c54293833f1e3d416b16dfc79f934b",
          "body": null,
          "is_bot": false,
          "headline": "run tests only on 8.3 and 8.4",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2025-03-26T07:58:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b0eb8f68cef5795669ca6eb781c0b2688e02e82c",
          "body": "Laravel 12",
          "is_bot": false,
          "headline": "Merge pull request #332 from celcius-digital-agency/main",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2025-03-26T07:56:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3db664c38e2f0ab133be944e7c56f573ef0a4bc",
          "body": null,
          "is_bot": false,
          "headline": "Fix workflows",
          "author_name": "Jochen Sengier",
          "author_login": "jochensengier",
          "committed_at": "2025-03-25T10:55:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "81dae606232c38a38dc5484c2ba90dfc0d74796c",
          "body": null,
          "is_bot": false,
          "headline": "Fix workflows",
          "author_name": "Jochen Sengier",
          "author_login": "jochensengier",
          "committed_at": "2025-03-25T10:18:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e34f4e29171a8b996ce207554e5262b4d6c6eaf1",
          "body": null,
          "is_bot": false,
          "headline": "Fix NullDriver test",
          "author_name": "Jochen Sengier",
          "author_login": "jochensengier",
          "committed_at": "2025-03-24T11:17:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "29c26ed6bb46fa6b691541175fdb28d5dd80e2af",
          "body": null,
          "is_bot": false,
          "headline": "Update facade docblock",
          "author_name": "Duncan McClean",
          "author_login": "duncanmcclean",
          "committed_at": "2025-03-03T19:43:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "414081fc0c0d6ae8383f81daffc61da672a7ca87",
          "body": null,
          "is_bot": false,
          "headline": "Laravel 12",
          "author_name": "Jochen Sengier",
          "author_login": "jochensengier",
          "committed_at": "2025-02-26T11:22:51Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f645d68ef4248f487ac12b064b71a3e7314728f",
          "body": null,
          "is_bot": false,
          "headline": "Laravel 12",
          "author_name": "Jochen Sengier",
          "author_login": "jochensengier",
          "committed_at": "2025-02-26T11:15:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "de843f45f50d048f202e7f1b6e289f53d03d7650",
          "body": "Bumps [aglipanci/laravel-pint-action](https://github.com/aglipanci/laravel-pint-action) from 2.4 to 2.5.\r\n- [Release notes](https://github.com/aglipanci/laravel-pint-action/releases)\r\n- [Commits](https://github.com/aglipanci/laravel-pint-action/compare/2.4...2.5)\r\n\r\n---\r\nupdated-dependencies:\r\n- dep\n[…]\n:production\r\n  update-type: version-update:semver-minor\r\n...\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump aglipanci/laravel-pint-action from 2.4 to 2.5 (#331)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2025-02-10T15:39:00Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b56bdf05780f30ff9977c67612b59d97f8c57e2a",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2025-01-31T15:06:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5dd1a1d237e5e532679ff9a8322b1d95a762f0a7",
          "body": null,
          "is_bot": false,
          "headline": "Fix styling",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2025-01-31T15:05:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7eda1452c490b0a38d4e59ec8a7f82a98b2cdb68",
          "body": null,
          "is_bot": false,
          "headline": "Add method chaining support to NullDriver (#328)",
          "author_name": "Christian Taylor",
          "author_login": "imacrayon",
          "committed_at": "2025-01-31T15:04:47Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1a4b851af498562a395414142707e91c4b21b595",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2024-07-18T15:02:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d3575c79b37edcd6613886d8ad58d60c4c7f1417",
          "body": "Bumps [aglipanci/laravel-pint-action](https://github.com/aglipanci/laravel-pint-action) from 2.3.1 to 2.4.\r\n- [Release notes](https://github.com/aglipanci/laravel-pint-action/releases)\r\n- [Commits](https://github.com/aglipanci/laravel-pint-action/compare/2.3.1...2.4)\r\n\r\n---\r\nupdated-dependencies:\r\n-\n[…]\n:production\r\n  update-type: version-update:semver-minor\r\n...\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
          "is_bot": true,
          "headline": "Bump aglipanci/laravel-pint-action from 2.3.1 to 2.4 (#320)",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2024-07-18T15:02:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0507ee59ab0887d5af7c427081ecfdc9a815bd29",
          "body": "* Reintroduce NullDriver From v4\r\n\r\n* Update composer.json\r\n\r\n---------\r\n\r\nCo-authored-by: Keller Martin <kellerm@schwebdesign.com>\r\nCo-authored-by: Freek Van der Herten <freek@spatie.be>",
          "is_bot": false,
          "headline": "Reintroduce NullDriver From v4 (#323)",
          "author_name": "Keller Martin",
          "author_login": "kellerjmrtn",
          "committed_at": "2024-07-18T15:01:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "da64b53ac8ecd9a5be72d9ce52d87fe6f3413fe7",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2024-03-05T08:47:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "04911e1692adb53b8c1fbdeca32e8e6b8b6e4091",
          "body": "…ci/laravel-pint-action-2.3.1\n\nBump aglipanci/laravel-pint-action from 1.0.0 to 2.3.1",
          "is_bot": false,
          "headline": "Merge pull request #316 from spatie/dependabot/github_actions/aglipan…",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2024-03-05T08:46:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1940ab957b724b845e891250d8e1cadb6aa9c18",
          "body": "Fix typos",
          "is_bot": false,
          "headline": "Merge pull request #317 from imanghafoori1/patch-1",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2024-03-05T08:46:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8f29943b5c5c6ac022bc11f9d1838b126fb24354",
          "body": "…composer-install-3\n\nBump ramsey/composer-install from 1 to 3",
          "is_bot": false,
          "headline": "Merge pull request #319 from spatie/dependabot/github_actions/ramsey/…",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2024-03-05T08:45:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7d778bf16ad1b82139fecbed0b448ae851e48623",
          "body": "Bumps [ramsey/composer-install](https://github.com/ramsey/composer-install) from 1 to 3.\n- [Release notes](https://github.com/ramsey/composer-install/releases)\n- [Commits](https://github.com/ramsey/composer-install/compare/v1...v3)\n\n---\nupdated-dependencies:\n- dependency-name: ramsey/composer-install\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump ramsey/composer-install from 1 to 3",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2024-03-04T23:16:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ec6829ee284765a27c4ca7ca71d831d220477523",
          "body": null,
          "is_bot": false,
          "headline": "Fix typos",
          "author_name": "Iman",
          "author_login": "imanghafoori1",
          "committed_at": "2024-01-04T12:14:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4d3167be7b5f5d34a8350460377382461cdc7d23",
          "body": "Bumps [aglipanci/laravel-pint-action](https://github.com/aglipanci/laravel-pint-action) from 1.0.0 to 2.3.1.\n- [Release notes](https://github.com/aglipanci/laravel-pint-action/releases)\n- [Commits](https://github.com/aglipanci/laravel-pint-action/compare/1.0.0...2.3.1)\n\n---\nupdated-dependencies:\n- dependency-name: aglipanci/laravel-pint-action\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
          "is_bot": true,
          "headline": "Bump aglipanci/laravel-pint-action from 1.0.0 to 2.3.1",
          "author_name": "dependabot[bot]",
          "author_login": "dependabot[bot]",
          "committed_at": "2023-12-25T23:06:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6f242da89f049ea5f8d2eb6bb8d9dbab2be4d184",
          "body": "While using your package, I followed the instructions, but I was always getting empty responses and I couldn't get any information from getLastError() or getLastResponse(). I ran the code step by step and found that if NEWSLETTER_ENDPOINT is set to an empty string as the documentation states, the Mailchimp endpoint isn't built correctly. The solution is to set that value to null instead.",
          "is_bot": false,
          "headline": "Update 'Using mailchimp' readme section (#293)",
          "author_name": "jose-bittacora",
          "author_login": "jose-bittacora",
          "committed_at": "2023-08-17T07:22:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7c67f13d09b320a9118fc2b0ad951e291114b697",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2023-02-09T13:53:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "825fb94ded624934eaaf2a0707e4ae2417f11a6c",
          "body": null,
          "is_bot": false,
          "headline": "fix facade",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2023-02-09T13:52:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9b6cabfca3e3a23775757896b97457608d1af462",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2023-01-14T21:01:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5538a4f714aa07c7a06813f5ff944cd8a038f250",
          "body": "* Bump dependencies for Laravel 10\r\n\r\n* Update GitHub Actions for Laravel 10",
          "is_bot": false,
          "headline": "Laravel 10.x Compatibility (#292)",
          "author_name": "Laravel Shift",
          "author_login": "laravel-shift",
          "committed_at": "2023-01-14T21:00:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "22930fc204435ed50014ded3e4bf5d2045ca5b5c",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2022-11-10T22:42:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c850fd90474ec22b8c03ef94762ee1f994c349dc",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2022-11-10T22:41:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89e72c008106a1cd759483377233d4e30a69e3ec",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2022-11-10T22:40:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "70d9d978997505d4a08e9943149bc84dc821a61b",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2022-11-10T17:09:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d1c3a9239f9ac43fb7b9e548d23b97d41098a31a",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2022-11-10T17:06:40Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89e527c5eb821a3c9519b794f8142c721df7b6de",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2022-11-10T17:06:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adfa7544aa9713401c30a26283f942f78a5a65f2",
          "body": null,
          "is_bot": false,
          "headline": "v5 (#287)",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2022-11-10T17:05:52Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7f157f9eaf0993bacb69831db40481131f557c0c",
          "body": "* Add doc-blocks\r\n\r\n* Add doc-block for facade",
          "is_bot": false,
          "headline": "Improve documentation (#283)",
          "author_name": "Alin Eugen Deac",
          "author_login": "aedart",
          "committed_at": "2022-11-10T13:35:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "89c0f85f0cffbee5dc04e8be23aecf6f1338f1b1",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2022-11-08T19:19:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "d528b1f805b84eb7609cf48819da53a54916b2de",
          "body": null,
          "is_bot": false,
          "headline": "Change copy",
          "author_name": "Adriaan Marain",
          "author_login": "AdrianMrn",
          "committed_at": "2022-03-21T15:18:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5077ff195f703df5f4b069c447f749e16a17942e",
          "body": null,
          "is_bot": false,
          "headline": "Use organisation-wide community health files",
          "author_name": "Adriaan Marain",
          "author_login": "AdrianMrn",
          "committed_at": "2022-03-21T12:51:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3a4bff12d02c9e772bce005b0ff3d49de07894b3",
          "body": null,
          "is_bot": false,
          "headline": "Change copy",
          "author_name": "Adriaan Marain",
          "author_login": "AdrianMrn",
          "committed_at": "2022-03-21T12:33:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "8b6499b9e618775d6860a94faaf626d35fcd1b4e",
          "body": null,
          "is_bot": false,
          "headline": "Add banner",
          "author_name": "Adriaan Marain",
          "author_login": "AdrianMrn",
          "committed_at": "2022-03-09T16:19:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dd20f934f184c4a819b61b2d4c7c8a01f17a4eea",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG",
          "author_name": "freekmurze",
          "author_login": "freekmurze",
          "committed_at": "2022-01-14T07:42:12Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "25e456abecaba25e20d1c11e934bdc3f89601245",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "freek",
          "author_login": "freekmurze",
          "committed_at": "2022-01-14T07:31:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3860bba15d7da71526b623f09ffe06d80b3e2b8f",
          "body": null,
          "is_bot": false,
          "headline": "Add changelog workflow (automated commit)",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2021-11-17T15:34:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cadd15ab47c7435d73abc830ee6e45a1a03707fb",
          "body": null,
          "is_bot": false,
          "headline": "Update run-tests.yml",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2021-11-17T14:16:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0f6fd4f232944c5de6c33115e7ff9cfb51c93b59",
          "body": null,
          "is_bot": false,
          "headline": "Update composer.json",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2021-11-17T14:15:45Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fc2e1e5ce914e90b78ba9a335941307856ce5b2d",
          "body": null,
          "is_bot": false,
          "headline": "Update .php-cs-fixer.dist.php",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2021-09-07T08:03:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b6faaca330a907924c14407bcf767faefcbd6c81",
          "body": "Migrate to PHP-CS-Fixer 3.x",
          "is_bot": false,
          "headline": "Merge pull request #264 from shuvroroy/patch-1",
          "author_name": "Rias",
          "author_login": "riasvdv",
          "committed_at": "2021-06-24T12:51:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "868b23538ebfcb36d0388d68cba6be2a75116bd7",
          "body": null,
          "is_bot": false,
          "headline": "Fix styling",
          "author_name": "shuvroroy",
          "author_login": "shuvroroy",
          "committed_at": "2021-06-04T16:46:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bc640bdd218e3391aa51e7a4ed84ddf3f7cf78cb",
          "body": null,
          "is_bot": false,
          "headline": "Migrate to PHP-CS-Fixer 3.x",
          "author_name": "Shuvro Roy",
          "author_login": "shuvroroy",
          "committed_at": "2021-06-04T16:46:06Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5668e17142ba8d43e1902a4c652f1ef69578dd2b",
          "body": "Add marketing permissions documentation",
          "is_bot": false,
          "headline": "Merge pull request #263 from aerni/master",
          "author_name": "Rias",
          "author_login": "riasvdv",
          "committed_at": "2021-05-19T08:26:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c7f1f39671078d1faf9a628eb7e0fa6ad41a5a2",
          "body": null,
          "is_bot": false,
          "headline": "Add marketing permissions documentation",
          "author_name": "Michael Aerni",
          "author_login": "aerni",
          "committed_at": "2021-05-19T08:21:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "adc5b30fe6d02be456c0aa8bb3713e0e2ae0326f",
          "body": null,
          "is_bot": false,
          "headline": "Add marketing permissions documentation",
          "author_name": "Michael Aerni",
          "author_login": "aerni",
          "committed_at": "2021-05-19T08:17:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c3b9061a8410650aeab1416ed76e1afb57adc685",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG.md",
          "author_name": "Rias",
          "author_login": "riasvdv",
          "committed_at": "2021-05-18T11:28:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5930b02fa131f03a8b70d447285a50b78e46fb25",
          "body": "GDPR Marketing Permissions",
          "is_bot": false,
          "headline": "Merge pull request #262 from aerni/features/marketing-permissions",
          "author_name": "Rias",
          "author_login": "riasvdv",
          "committed_at": "2021-05-18T11:28:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f25836b65536c87f1deb74be3c06fdd64e300db1",
          "body": null,
          "is_bot": false,
          "headline": "Add tests",
          "author_name": "Michael Aerni",
          "author_login": "aerni",
          "committed_at": "2021-05-17T13:40:11Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "99769cbc145183845a838b721cb6f85ccde2da34",
          "body": null,
          "is_bot": false,
          "headline": "Typehint would throw an exception",
          "author_name": "Michael Aerni",
          "author_login": "aerni",
          "committed_at": "2021-05-17T08:43:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1325ece0330bcab6c93413c431d3a93b360a9f11",
          "body": null,
          "is_bot": false,
          "headline": "Add command to get a list’s marketing permissions",
          "author_name": "Michael Aerni",
          "author_login": "aerni",
          "committed_at": "2021-04-23T12:58:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1640b57e7c8bc5fbfdcd895e58b019296e55dbe2",
          "body": null,
          "is_bot": false,
          "headline": "Add method to get a list’s marketing permissions",
          "author_name": "Michael Aerni",
          "author_login": "aerni",
          "committed_at": "2021-04-23T12:57:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "634f90cea19478cb1af0569bd9902a4cfdf61e08",
          "body": null,
          "is_bot": false,
          "headline": "Make it possible to change marketing permissions",
          "author_name": "Michael Aerni",
          "author_login": "aerni",
          "committed_at": "2021-04-23T12:57:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "659893001e73b5ea5b9b6dd73a06a8574ea735a7",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG.md",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2020-11-25T14:14:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e6dd01b171b447b65a85c4237bcb6902467d372",
          "body": "Support php8",
          "is_bot": false,
          "headline": "Merge pull request #253 from spatie/support-php8",
          "author_name": "Niels Vanpachtenbeke",
          "author_login": "Nielsvanpach",
          "committed_at": "2020-11-25T14:13:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ba26dfa2209c76b6c739612fba2a723fb52d046c",
          "body": null,
          "is_bot": false,
          "headline": "drop support for Laravel 5.8",
          "author_name": "Niels",
          "author_login": "Nielsvanpach",
          "committed_at": "2020-11-25T13:36:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0b309f34b1ae0c30d1d3b51acf84f3b5092263cf",
          "body": null,
          "is_bot": false,
          "headline": "add support on php 8",
          "author_name": "Niels",
          "author_login": "Nielsvanpach",
          "committed_at": "2020-11-25T12:46:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1287c93de6bc5c88328fa91801f8226bf4324eab",
          "body": null,
          "is_bot": false,
          "headline": "Update README img tag",
          "author_name": "Adriaan Marain",
          "author_login": "AdrianMrn",
          "committed_at": "2020-10-12T08:57:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "73f2c3c9b9ab878a09394ac90cd9507c4a70e555",
          "body": null,
          "is_bot": false,
          "headline": "Update README with new \"Support us\" section",
          "author_name": "Adriaan Marain",
          "author_login": "AdrianMrn",
          "committed_at": "2020-10-07T08:49:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "246fc1bbfd17cfa1eb6808fcfe7632e8ad05545b",
          "body": null,
          "is_bot": false,
          "headline": "Update CHANGELOG.md",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2020-09-30T22:15:21Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e1e0164fdafb1b40d962122a37969e35b17da80a",
          "body": "The `getMember` action returns an `array` or `false`, so checking if it is not `isset` always evaluates to `false`.\r\nThen we are checking if the `$response['status']` is equal to `subscribed`, which raises an error if the response is `false`.\r\n\r\nThis fixes #233 .",
          "is_bot": false,
          "headline": "Ensure the last action succeeded on `isSubscribed` (#244)",
          "author_name": "Sébastien Nikolaou",
          "author_login": null,
          "committed_at": "2020-09-30T22:14:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "996aefb353a43eb30c09bbbbc967921d01639d56",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "Ruben Van Assche",
          "author_login": "rubenvanassche",
          "committed_at": "2020-09-09T09:31:58Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4097f8a8ebe7048064fe1adb6c7768ba55c1b099",
          "body": null,
          "is_bot": false,
          "headline": "Fix styling",
          "author_name": "rubenvanassche",
          "author_login": "rubenvanassche",
          "committed_at": "2020-09-09T09:30:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "c9baedfa96b4ad18fc22ccde6a2dc7e5df96bf0b",
          "body": null,
          "is_bot": false,
          "headline": "Add Laravel 8 support",
          "author_name": "Ruben Van Assche",
          "author_login": "rubenvanassche",
          "committed_at": "2020-09-09T09:29:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "85454a3cc77630d55283179c02b3aa98fcb63936",
          "body": null,
          "is_bot": false,
          "headline": "Fix styling",
          "author_name": "rubenvanassche",
          "author_login": "rubenvanassche",
          "committed_at": "2020-09-09T09:20:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e7970c7d28ccbb9505a4b9bb86304b6a962b974f",
          "body": null,
          "is_bot": false,
          "headline": "YMerge branch 'laravel-shift-l8-compatibility'",
          "author_name": "Ruben Van Assche",
          "author_login": "rubenvanassche",
          "committed_at": "2020-09-09T09:20:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "eefa271206437d7dd5adad365c172a2e14d71306",
          "body": null,
          "is_bot": false,
          "headline": "Add support for Laravel 8",
          "author_name": "Ruben Van Assche",
          "author_login": "rubenvanassche",
          "committed_at": "2020-09-09T09:20:25Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "062b31c24a6a11c5e12045a21173d63a293304b6",
          "body": null,
          "is_bot": false,
          "headline": "Bump dependencies for Laravel 8",
          "author_name": "Laravel Shift",
          "author_login": "laravel-shift",
          "committed_at": "2020-09-01T15:09:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4075f679dde367d677329fd1434a6364b9c6a13f",
          "body": null,
          "is_bot": false,
          "headline": "Update README with new \"Support us\" section",
          "author_name": "Adriaan Marain",
          "author_login": "AdrianMrn",
          "committed_at": "2020-05-27T13:12:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4df637fa6ceca5d686affbe3a1d82a12f6a859fd",
          "body": null,
          "is_bot": false,
          "headline": "Update README.md",
          "author_name": "Freek Van der Herten",
          "author_login": "freekmurze",
          "committed_at": "2020-04-08T08:54:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac00cbe4662e64bde4f2f732935047e917919215",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "freek",
          "author_login": "freekmurze",
          "committed_at": "2020-03-03T12:49:27Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "5d4fae5ad73e3254d341673a160696b8183c65da",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "freek",
          "author_login": "freekmurze",
          "committed_at": "2020-03-03T12:48:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a54bc7a414e30c060b728a5d393f6b6bcb3d53cb",
          "body": null,
          "is_bot": false,
          "headline": "wip",
          "author_name": "freek",
          "author_login": "freekmurze",
          "committed_at": "2020-03-03T12:45:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "18a862807204c4c7fc402f27e051e3a459574d22",
          "body": "Tiny consistency spell fix",
          "is_bot": false,
          "headline": "Merge pull request #224 from fridzema/patch-1",
          "author_name": "Rias",
          "author_login": null,
          "committed_at": "2020-01-27T07:55:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9f61bf231cfdf0c453e3218dca3b94f1af6c074d",
          "body": "Show in readme package is Laravel 6 compatible",
          "is_bot": false,
          "headline": "Merge pull request #225 from haakym/patch-1",
          "author_name": "Rias",
          "author_login": null,
          "committed_at": "2020-01-27T07:55:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9668d49ad44da99411f60321228610c9d53a49bc",
          "body": "Documentation Update",
          "is_bot": false,
          "headline": "Merge pull request #227 from EsTharian/patch-1",
          "author_name": "Rias",
          "author_login": null,
          "committed_at": "2020-01-27T07:54:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b8a5f8d2f5e3df4eee881de89a5ddb9fee097e6b",
          "body": "Apply fixes from StyleCI",
          "is_bot": false,
          "headline": "Merge pull request #230 from spatie/analysis-YjOlWd",
          "author_name": "Rias",
          "author_login": null,
          "committed_at": "2020-01-27T07:53:42Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "854587efe979592e32e1675bb1b7102898a14ca2",
          "body": null,
          "is_bot": false,
          "headline": "Apply fixes from StyleCI",
          "author_name": "Rias",
          "author_login": null,
          "committed_at": "2020-01-27T07:53:26Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "95c8fc105665c6bb8e5f1ab1c012fbb71bdd0d40",
          "body": "Fix return type for getLastError",
          "is_bot": false,
          "headline": "Merge pull request #229 from sebdesign/master",
          "author_name": "Rias",
          "author_login": null,
          "committed_at": "2020-01-27T07:53:13Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 53,
      "commits_last_year": 9,
      "latest_release_at": "2026-04-28T06:59:14Z",
      "latest_release_tag": "5.4.0",
      "releases_from_tags": false,
      "days_since_last_push": 30,
      "active_weeks_last_year": 6,
      "days_since_latest_release": 89,
      "mean_days_between_releases": 173.9
    },
    "community": {
      "has_readme": true,
      "has_license": true,
      "has_description": true,
      "has_contributing": true,
      "health_percentage": 50,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "spatie/laravel-newsletter",
          "exists": true,
          "license": "MIT",
          "keywords": [
            "mailchimp",
            "newsletter",
            "laravel",
            "mailerlite",
            "mailcoach"
          ],
          "ecosystem": "packagist",
          "matches_repo": true,
          "registry_url": "https://packagist.org/packages/spatie/laravel-newsletter",
          "is_deprecated": false,
          "latest_version": "5.4.0",
          "repository_url": "https://github.com/spatie/laravel-newsletter",
          "versions_count": 53,
          "total_downloads": 6710559,
          "dependents_count": 32,
          "deprecation_note": null,
          "maintainers_count": null,
          "monthly_downloads": 103386,
          "first_published_at": null,
          "latest_published_at": "2026-04-28T06:59:04Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 89
        }
      ]
    },
    "popularity": {
      "forks": 235,
      "stars": 1641,
      "watchers": 37,
      "fork_history": {
        "days": [
          {
            "date": "2015-05-04",
            "count": 1
          },
          {
            "date": "2015-05-27",
            "count": 1
          },
          {
            "date": "2015-07-02",
            "count": 1
          },
          {
            "date": "2015-07-29",
            "count": 1
          },
          {
            "date": "2015-08-01",
            "count": 1
          },
          {
            "date": "2015-10-31",
            "count": 1
          },
          {
            "date": "2015-11-05",
            "count": 1
          },
          {
            "date": "2015-11-18",
            "count": 1
          },
          {
            "date": "2016-01-14",
            "count": 1
          },
          {
            "date": "2016-02-14",
            "count": 1
          },
          {
            "date": "2016-02-24",
            "count": 1
          },
          {
            "date": "2016-03-13",
            "count": 1
          },
          {
            "date": "2016-03-22",
            "count": 1
          },
          {
            "date": "2016-04-26",
            "count": 1
          },
          {
            "date": "2016-04-28",
            "count": 1
          },
          {
            "date": "2016-05-16",
            "count": 1
          },
          {
            "date": "2016-05-31",
            "count": 1
          },
          {
            "date": "2016-06-05",
            "count": 1
          },
          {
            "date": "2016-07-26",
            "count": 1
          },
          {
            "date": "2016-08-01",
            "count": 1
          },
          {
            "date": "2016-08-08",
            "count": 1
          },
          {
            "date": "2016-09-16",
            "count": 2
          },
          {
            "date": "2016-09-19",
            "count": 1
          },
          {
            "date": "2016-10-06",
            "count": 1
          },
          {
            "date": "2016-11-08",
            "count": 1
          },
          {
            "date": "2016-11-11",
            "count": 1
          },
          {
            "date": "2016-11-16",
            "count": 1
          },
          {
            "date": "2016-12-01",
            "count": 1
          },
          {
            "date": "2017-01-25",
            "count": 1
          },
          {
            "date": "2017-01-30",
            "count": 1
          },
          {
            "date": "2017-02-13",
            "count": 1
          },
          {
            "date": "2017-03-23",
            "count": 1
          },
          {
            "date": "2017-03-28",
            "count": 1
          },
          {
            "date": "2017-03-31",
            "count": 1
          },
          {
            "date": "2017-04-19",
            "count": 1
          },
          {
            "date": "2017-05-28",
            "count": 2
          },
          {
            "date": "2017-06-01",
            "count": 1
          },
          {
            "date": "2017-06-09",
            "count": 1
          },
          {
            "date": "2017-06-22",
            "count": 1
          },
          {
            "date": "2017-07-09",
            "count": 2
          },
          {
            "date": "2017-07-10",
            "count": 2
          },
          {
            "date": "2017-07-15",
            "count": 1
          },
          {
            "date": "2017-07-23",
            "count": 1
          },
          {
            "date": "2017-07-26",
            "count": 1
          },
          {
            "date": "2017-08-10",
            "count": 1
          },
          {
            "date": "2017-08-13",
            "count": 1
          },
          {
            "date": "2017-08-15",
            "count": 1
          },
          {
            "date": "2017-08-31",
            "count": 1
          },
          {
            "date": "2017-09-04",
            "count": 1
          },
          {
            "date": "2017-09-07",
            "count": 1
          },
          {
            "date": "2017-09-16",
            "count": 1
          },
          {
            "date": "2017-09-26",
            "count": 1
          },
          {
            "date": "2017-10-02",
            "count": 1
          },
          {
            "date": "2017-10-15",
            "count": 1
          },
          {
            "date": "2017-10-24",
            "count": 1
          },
          {
            "date": "2017-11-07",
            "count": 1
          },
          {
            "date": "2017-12-13",
            "count": 2
          },
          {
            "date": "2017-12-23",
            "count": 1
          },
          {
            "date": "2017-12-29",
            "count": 1
          },
          {
            "date": "2018-01-02",
            "count": 1
          },
          {
            "date": "2018-01-11",
            "count": 1
          },
          {
            "date": "2018-02-08",
            "count": 1
          },
          {
            "date": "2018-02-12",
            "count": 1
          },
          {
            "date": "2018-03-07",
            "count": 1
          },
          {
            "date": "2018-03-09",
            "count": 1
          },
          {
            "date": "2018-03-20",
            "count": 1
          },
          {
            "date": "2018-03-27",
            "count": 1
          },
          {
            "date": "2018-04-19",
            "count": 1
          },
          {
            "date": "2018-04-22",
            "count": 1
          },
          {
            "date": "2018-04-24",
            "count": 1
          },
          {
            "date": "2018-04-28",
            "count": 1
          },
          {
            "date": "2018-05-01",
            "count": 1
          },
          {
            "date": "2018-05-08",
            "count": 1
          },
          {
            "date": "2018-05-23",
            "count": 1
          },
          {
            "date": "2018-05-27",
            "count": 1
          },
          {
            "date": "2018-06-12",
            "count": 1
          },
          {
            "date": "2018-06-17",
            "count": 1
          },
          {
            "date": "2018-07-15",
            "count": 1
          },
          {
            "date": "2018-07-30",
            "count": 1
          },
          {
            "date": "2018-08-21",
            "count": 1
          },
          {
            "date": "2018-08-27",
            "count": 1
          },
          {
            "date": "2018-08-30",
            "count": 1
          },
          {
            "date": "2018-09-02",
            "count": 1
          },
          {
            "date": "2018-09-12",
            "count": 1
          },
          {
            "date": "2018-09-17",
            "count": 1
          },
          {
            "date": "2018-09-24",
            "count": 1
          },
          {
            "date": "2018-10-05",
            "count": 2
          },
          {
            "date": "2018-10-08",
            "count": 1
          },
          {
            "date": "2018-10-09",
            "count": 1
          },
          {
            "date": "2018-10-13",
            "count": 1
          },
          {
            "date": "2018-10-15",
            "count": 1
          },
          {
            "date": "2018-10-23",
            "count": 1
          },
          {
            "date": "2018-11-10",
            "count": 1
          },
          {
            "date": "2018-11-20",
            "count": 1
          },
          {
            "date": "2018-11-22",
            "count": 1
          },
          {
            "date": "2018-12-11",
            "count": 1
          },
          {
            "date": "2018-12-12",
            "count": 1
          },
          {
            "date": "2018-12-14",
            "count": 1
          },
          {
            "date": "2018-12-21",
            "count": 1
          },
          {
            "date": "2018-12-29",
            "count": 2
          },
          {
            "date": "2019-01-14",
            "count": 1
          },
          {
            "date": "2019-01-15",
            "count": 2
          },
          {
            "date": "2019-01-19",
            "count": 1
          },
          {
            "date": "2019-02-01",
            "count": 2
          },
          {
            "date": "2019-02-16",
            "count": 1
          },
          {
            "date": "2019-04-18",
            "count": 1
          },
          {
            "date": "2019-04-22",
            "count": 2
          },
          {
            "date": "2019-04-24",
            "count": 1
          },
          {
            "date": "2019-06-02",
            "count": 1
          },
          {
            "date": "2019-06-14",
            "count": 1
          },
          {
            "date": "2019-07-18",
            "count": 1
          },
          {
            "date": "2019-07-25",
            "count": 1
          },
          {
            "date": "2019-08-06",
            "count": 1
          },
          {
            "date": "2019-08-07",
            "count": 1
          },
          {
            "date": "2019-08-08",
            "count": 1
          },
          {
            "date": "2019-08-22",
            "count": 1
          },
          {
            "date": "2019-08-29",
            "count": 1
          },
          {
            "date": "2019-09-03",
            "count": 1
          },
          {
            "date": "2019-09-11",
            "count": 1
          },
          {
            "date": "2019-09-21",
            "count": 1
          },
          {
            "date": "2019-09-25",
            "count": 1
          },
          {
            "date": "2019-10-07",
            "count": 1
          },
          {
            "date": "2019-10-09",
            "count": 1
          },
          {
            "date": "2019-10-14",
            "count": 1
          },
          {
            "date": "2019-10-15",
            "count": 1
          },
          {
            "date": "2019-10-16",
            "count": 1
          },
          {
            "date": "2019-10-17",
            "count": 1
          },
          {
            "date": "2019-10-31",
            "count": 1
          },
          {
            "date": "2019-11-23",
            "count": 1
          },
          {
            "date": "2019-12-16",
            "count": 1
          },
          {
            "date": "2020-01-07",
            "count": 1
          },
          {
            "date": "2020-01-14",
            "count": 1
          },
          {
            "date": "2020-01-26",
            "count": 1
          },
          {
            "date": "2020-02-01",
            "count": 1
          },
          {
            "date": "2020-03-12",
            "count": 1
          },
          {
            "date": "2020-03-17",
            "count": 1
          },
          {
            "date": "2020-03-23",
            "count": 1
          },
          {
            "date": "2020-03-27",
            "count": 1
          },
          {
            "date": "2020-03-30",
            "count": 1
          },
          {
            "date": "2020-04-01",
            "count": 1
          },
          {
            "date": "2020-04-05",
            "count": 1
          },
          {
            "date": "2020-04-18",
            "count": 1
          },
          {
            "date": "2020-05-12",
            "count": 1
          },
          {
            "date": "2020-05-24",
            "count": 1
          },
          {
            "date": "2020-06-11",
            "count": 1
          },
          {
            "date": "2020-06-18",
            "count": 1
          },
          {
            "date": "2020-07-19",
            "count": 1
          },
          {
            "date": "2020-07-26",
            "count": 1
          },
          {
            "date": "2020-08-04",
            "count": 1
          },
          {
            "date": "2020-09-01",
            "count": 1
          },
          {
            "date": "2020-09-03",
            "count": 1
          },
          {
            "date": "2020-10-01",
            "count": 1
          },
          {
            "date": "2020-10-11",
            "count": 1
          },
          {
            "date": "2020-10-16",
            "count": 1
          },
          {
            "date": "2020-11-08",
            "count": 1
          },
          {
            "date": "2020-12-12",
            "count": 1
          },
          {
            "date": "2021-02-10",
            "count": 1
          },
          {
            "date": "2021-03-04",
            "count": 1
          },
          {
            "date": "2021-03-08",
            "count": 1
          },
          {
            "date": "2021-04-13",
            "count": 1
          },
          {
            "date": "2021-04-23",
            "count": 1
          },
          {
            "date": "2021-05-17",
            "count": 1
          },
          {
            "date": "2021-06-02",
            "count": 1
          },
          {
            "date": "2021-06-04",
            "count": 1
          },
          {
            "date": "2021-06-26",
            "count": 1
          },
          {
            "date": "2021-07-10",
            "count": 1
          },
          {
            "date": "2021-07-21",
            "count": 1
          },
          {
            "date": "2021-07-30",
            "count": 1
          },
          {
            "date": "2021-08-03",
            "count": 1
          },
          {
            "date": "2021-08-05",
            "count": 1
          },
          {
            "date": "2021-08-18",
            "count": 1
          },
          {
            "date": "2021-08-26",
            "count": 1
          },
          {
            "date": "2021-08-31",
            "count": 2
          },
          {
            "date": "2021-09-13",
            "count": 1
          },
          {
            "date": "2021-11-03",
            "count": 1
          },
          {
            "date": "2021-11-10",
            "count": 1
          },
          {
            "date": "2021-11-12",
            "count": 1
          },
          {
            "date": "2021-11-25",
            "count": 1
          },
          {
            "date": "2022-01-14",
            "count": 1
          },
          {
            "date": "2022-02-02",
            "count": 1
          },
          {
            "date": "2022-02-08",
            "count": 1
          },
          {
            "date": "2022-03-14",
            "count": 1
          },
          {
            "date": "2022-07-11",
            "count": 1
          },
          {
            "date": "2022-07-28",
            "count": 1
          },
          {
            "date": "2022-08-16",
            "count": 1
          },
          {
            "date": "2022-10-06",
            "count": 1
          },
          {
            "date": "2022-10-16",
            "count": 1
          },
          {
            "date": "2022-11-20",
            "count": 1
          },
          {
            "date": "2022-12-05",
            "count": 1
          },
          {
            "date": "2023-01-06",
            "count": 1
          },
          {
            "date": "2023-03-25",
            "count": 1
          },
          {
            "date": "2023-04-05",
            "count": 1
          },
          {
            "date": "2023-04-26",
            "count": 1
          },
          {
            "date": "2023-05-23",
            "count": 1
          },
          {
            "date": "2023-08-25",
            "count": 1
          },
          {
            "date": "2023-08-26",
            "count": 1
          },
          {
            "date": "2023-10-02",
            "count": 1
          },
          {
            "date": "2023-10-19",
            "count": 1
          },
          {
            "date": "2023-11-20",
            "count": 1
          },
          {
            "date": "2024-01-03",
            "count": 1
          },
          {
            "date": "2024-02-22",
            "count": 1
          },
          {
            "date": "2024-06-09",
            "count": 1
          },
          {
            "date": "2024-06-21",
            "count": 1
          },
          {
            "date": "2024-09-11",
            "count": 1
          },
          {
            "date": "2024-10-16",
            "count": 1
          },
          {
            "date": "2024-11-15",
            "count": 1
          },
          {
            "date": "2025-03-05",
            "count": 1
          },
          {
            "date": "2025-03-06",
            "count": 1
          },
          {
            "date": "2025-03-10",
            "count": 2
          },
          {
            "date": "2025-03-18",
            "count": 1
          },
          {
            "date": "2025-03-20",
            "count": 1
          },
          {
            "date": "2025-07-22",
            "count": 1
          },
          {
            "date": "2025-08-05",
            "count": 1
          },
          {
            "date": "2025-08-18",
            "count": 1
          },
          {
            "date": "2025-11-15",
            "count": 1
          },
          {
            "date": "2026-01-04",
            "count": 1
          },
          {
            "date": "2026-02-07",
            "count": 1
          },
          {
            "date": "2026-07-08",
            "count": 1
          },
          {
            "date": "2026-07-12",
            "count": 1
          }
        ],
        "complete": true,
        "collected": 231,
        "total_forks": 235
      },
      "star_history": null,
      "open_issues_and_prs": 2
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [],
      "toolchain_manifests": [],
      "largest_source_bytes": 4662,
      "source_files_sampled": 20,
      "oversized_source_files": 0,
      "agent_instruction_files": [],
      "agent_instruction_max_bytes": null
    },
    "dependencies": {
      "manifests": [
        "composer.json"
      ],
      "advisories": {
        "error": "No resolved dependencies carried a version and a supported ecosystem",
        "scope": "repository_graph",
        "source": null,
        "findings": [],
        "collected": false,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 0,
        "malicious_count": 0,
        "assessed_package": null,
        "unassessed_count": 13,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "packagist"
      ],
      "dependencies": [
        {
          "name": "spatie/laravel-package-tools",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^1.13"
        },
        {
          "name": "illuminate/log",
          "manifest": "composer.json",
          "ecosystem": "packagist",
          "version_constraint": "^9|^10|^11|^12|^13.0"
        }
      ],
      "all_dependencies": {
        "error": null,
        "source": "github-sbom",
        "packages": [
          {
            "name": "illuminate/log",
            "direct": true,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "spatie/laravel-package-tools",
            "direct": true,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "drewm/mailchimp-api",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "guzzlehttp/guzzle",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "mailerlite/mailerlite-php",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "mockery/mockery",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "orchestra/testbench",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "pestphp/pest",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "php",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "phpstan/phpstan",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "phpunit/phpunit",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "spatie/mailcoach-sdk-php",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          },
          {
            "name": "spatie/ray",
            "direct": false,
            "version": null,
            "ecosystem": "packagist"
          }
        ],
        "collected": true,
        "truncated": false,
        "total_count": 13,
        "direct_count": 2,
        "indirect_count": 11
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 2,
        "merged_prs": 76,
        "open_issues": 0,
        "closed_ratio": 1,
        "closed_issues": 169,
        "closed_unmerged_prs": 85
      },
      "bus_factor": 1,
      "bot_contributors": 1,
      "top_contributors": [
        {
          "type": "User",
          "login": "freekmurze",
          "commits": 166,
          "avatar_url": "https://avatars.githubusercontent.com/u/483853?v=4"
        },
        {
          "type": "User",
          "login": "Nielsvanpach",
          "commits": 15,
          "avatar_url": "https://avatars.githubusercontent.com/u/10651054?v=4"
        },
        {
          "type": "User",
          "login": "rubenvanassche",
          "commits": 13,
          "avatar_url": "https://avatars.githubusercontent.com/u/619804?v=4"
        },
        {
          "type": "User",
          "login": "sebastiandedeyne",
          "commits": 9,
          "avatar_url": "https://avatars.githubusercontent.com/u/1561079?v=4"
        },
        {
          "type": "User",
          "login": "AdrianMrn",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/12762044?v=4"
        },
        {
          "type": "User",
          "login": "aerni",
          "commits": 7,
          "avatar_url": "https://avatars.githubusercontent.com/u/23167701?v=4"
        },
        {
          "type": "User",
          "login": "jochensengier",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/10118729?v=4"
        },
        {
          "type": "User",
          "login": "lartisan",
          "commits": 5,
          "avatar_url": "https://avatars.githubusercontent.com/u/7920412?v=4"
        },
        {
          "type": "User",
          "login": "riasvdv",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/3626559?v=4"
        },
        {
          "type": "User",
          "login": "drbyte",
          "commits": 3,
          "avatar_url": "https://avatars.githubusercontent.com/u/404472?v=4"
        }
      ],
      "contributors_sampled": 44,
      "top_contributor_share": 0.599
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "fix-php-code-style-issues.yml",
        "phpstan.yml",
        "run-tests.yml",
        "update-changelog.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [],
      "has_editorconfig": true,
      "has_linter_config": false,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [],
      "scorecard": {
        "checks": [
          {
            "name": "Binary-Artifacts",
            "score": 10,
            "reason": "no binaries found in the repo",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
          },
          {
            "name": "Branch-Protection",
            "score": 0,
            "reason": "branch protection not enabled on development/release branches",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
          },
          {
            "name": "CI-Tests",
            "score": 4,
            "reason": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
          },
          {
            "name": "CII-Best-Practices",
            "score": 0,
            "reason": "no effort to earn an OpenSSF best practices badge detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
          },
          {
            "name": "Code-Review",
            "score": 2,
            "reason": "Found 4/18 approved changesets -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 10,
            "reason": "project has 9 contributing companies or organizations",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
          },
          {
            "name": "Dangerous-Workflow",
            "score": 10,
            "reason": "no dangerous workflow patterns detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
          },
          {
            "name": "Dependency-Update-Tool",
            "score": 10,
            "reason": "update tool detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
          },
          {
            "name": "Fuzzing",
            "score": 0,
            "reason": "project is not fuzzed",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
          },
          {
            "name": "License",
            "score": 10,
            "reason": "license file detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
          },
          {
            "name": "Maintained",
            "score": 2,
            "reason": "3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
          },
          {
            "name": "Packaging",
            "score": null,
            "reason": "packaging workflow not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
          },
          {
            "name": "Pinned-Dependencies",
            "score": 0,
            "reason": "dependency not pinned by hash detected -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
          },
          {
            "name": "SAST",
            "score": 0,
            "reason": "SAST tool is not run on all commits -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
          },
          {
            "name": "Security-Policy",
            "score": 0,
            "reason": "security policy file not detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
          },
          {
            "name": "Signed-Releases",
            "score": null,
            "reason": "no releases found",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
          },
          {
            "name": "Token-Permissions",
            "score": 0,
            "reason": "detected GitHub workflow tokens with excessive permissions",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
          },
          {
            "name": "Vulnerabilities",
            "score": 10,
            "reason": "0 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "5877e95172d072f3726696e64064d3c8ec24c16b",
        "ran_at": "2026-07-26T10:06:44Z",
        "aggregate_score": 4.5,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": true
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-20T23:42:34Z",
      "oldest_open_prs": [
        {
          "number": 350,
          "created_at": "2026-07-08T11:33:46Z",
          "last_comment_at": null,
          "last_comment_author": null
        },
        {
          "number": 352,
          "created_at": "2026-07-12T18:37:34Z",
          "last_comment_at": null,
          "last_comment_author": null
        }
      ],
      "last_merged_pr_at": "2026-06-26T09:46:04Z",
      "ci_last_conclusion": "SUCCESS",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/spatie/laravel-newsletter",
    "host": "github.com",
    "name": "laravel-newsletter",
    "owner": "spatie"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 63,
      "inputs": {
        "security": 45,
        "vitality": 60,
        "community": 76,
        "governance": 70,
        "engineering": 63
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "moderate",
        "name": "Vitality",
        "value": 60,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "at_risk",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 44,
            "inputs": {
              "commits_last_year": 9,
              "human_commit_share": 0.93,
              "days_since_last_push": 30,
              "active_weeks_last_year": 6
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 30 days ago",
                "points": 28.8,
                "status": "partial",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 30
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "6/52 weeks with commits",
                "points": 4.2,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 6
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "9 commits in the last year",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 9
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2",
                "points": 2,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "good",
            "name": "Release discipline",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 84,
            "inputs": {
              "releases_count": 53,
              "latest_release_tag": "5.4.0",
              "releases_from_tags": false,
              "days_since_latest_release": 89,
              "mean_days_between_releases": 173.9
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "53 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 53
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 89 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 89
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~173.9 days",
                "points": 12.6,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 173.9
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "openssf_scorecard_signed_releases",
                "name": "OpenSSF Scorecard: Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 10
              }
            ]
          },
          {
            "key": "abandonment",
            "band": "excellent",
            "name": "Abandonment",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "cap": null,
              "state": "maintained",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": null,
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": 89,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "last human commit 89 days ago",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_maintained",
                    "params": {
                      "days": 89
                    }
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "good",
        "name": "Community & Adoption",
        "value": 76,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "good",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "forks": 235,
              "stars": 1641,
              "watchers": 37,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1,641 stars",
                "points": 52.1,
                "status": "partial",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1641
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "235 forks",
                "points": 19.7,
                "status": "partial",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 235
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "37 watchers",
                "points": 8.7,
                "status": "partial",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 37
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "good",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 70,
            "inputs": {
              "has_readme": true,
              "has_license": true,
              "has_contributing": true,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 22.5,
                "status": "met",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (MIT)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "MIT"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 18,
                "status": "met",
                "details": [],
                "max_points": 18
              },
              {
                "key": "code_of_conduct",
                "name": "Code of conduct",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 13.5
              },
              {
                "key": "issue_template",
                "name": "Issue template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.2
              },
              {
                "key": "pr_template",
                "name": "PR template",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.3
              }
            ]
          },
          {
            "key": "ecosystem_adoption",
            "band": "good",
            "name": "Ecosystem adoption (downloads)",
            "note": null,
            "notes": [],
            "value": 77,
            "inputs": {
              "packages": [
                "spatie/laravel-newsletter"
              ],
              "dependents": 32,
              "ecosystems": "packagist",
              "total_downloads": 6710559,
              "monthly_downloads": 103386
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "103,386 downloads/month across packagist",
                "points": 66.9,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 103386,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "32 packages depend on it",
                "points": 10.1,
                "status": "partial",
                "details": [
                  {
                    "code": "registry_dependents",
                    "params": {
                      "count": 32
                    }
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "good",
        "name": "Sustainability & Governance",
        "value": 70,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 42,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 44,
              "top_contributor_share": 0.599
            },
            "components": [
              {
                "key": "bus_factor",
                "name": "Bus factor",
                "detail": "1 contributor(s) cover half of all commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "bus_factor",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 54
              },
              {
                "key": "commit_distribution",
                "name": "Commit distribution",
                "detail": "top contributor authored 60% of commits",
                "points": 9,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 60
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "44 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 44
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 9 contributing companies or organizations",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": null,
            "notes": [],
            "value": 68,
            "inputs": {
              "merged_prs": 76,
              "open_issues": 0,
              "closed_issues": 169,
              "issue_closed_ratio": 1,
              "closed_unmerged_prs": 85
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "100% of issues closed",
                "points": 46.8,
                "status": "met",
                "details": [
                  {
                    "code": "issues_closed_share",
                    "params": {
                      "share": 100
                    }
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "76/161 decided PRs merged",
                "points": 18.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 76,
                      "decided": 161
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 4/18 approved changesets -- score normalized to 2",
                "points": 3,
                "status": "partial",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "good",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 80,
            "inputs": {
              "followers": 3803,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "spatie",
              "public_repos": 524,
              "account_age_days": 4460
            },
            "components": [
              {
                "key": "ownership_backing",
                "name": "Ownership backing",
                "detail": "organization-owned",
                "points": 30,
                "status": "met",
                "details": [
                  {
                    "code": "owner_organization",
                    "params": {}
                  }
                ],
                "max_points": 30
              },
              {
                "key": "verified_domain",
                "name": "Verified domain",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "owner_reach",
                "name": "Owner reach",
                "detail": "3,803 followers of spatie",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 3803,
                      "login": "spatie"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "524 public repos, account ~12 yr old",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 524
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 12
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "spatie/laravel-newsletter"
              ],
              "ecosystems": "packagist",
              "any_deprecated": false,
              "min_days_since_publish": 89
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on packagist",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "packagist"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 89 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 89
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "53 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 53
                    }
                  }
                ],
                "max_points": 20
              },
              {
                "key": "not_deprecated",
                "name": "Not deprecated",
                "detail": "active, not deprecated or yanked",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "package_not_deprecated",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
      },
      {
        "key": "engineering",
        "band": "moderate",
        "name": "Engineering Quality",
        "value": 63,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "moderate",
            "name": "Engineering practices",
            "note": null,
            "notes": [],
            "value": 62,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": true,
              "has_linter_config": false,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "4 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 4
                    }
                  }
                ],
                "max_points": 24
              },
              {
                "key": "tests_present",
                "name": "Tests present",
                "detail": null,
                "points": 24,
                "status": "met",
                "details": [],
                "max_points": 24
              },
              {
                "key": "linter_config",
                "name": "Linter config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 16
              },
              {
                "key": "pre_commit_hooks",
                "name": "Pre-commit hooks",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 9.6
              },
              {
                "key": "editorconfig",
                "name": ".editorconfig",
                "detail": null,
                "points": 6.4,
                "status": "met",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
                "points": 8,
                "status": "partial",
                "details": [],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "moderate",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 65,
            "inputs": {
              "topics": [
                "laravel",
                "php",
                "newsletter",
                "mailchimp",
                "mailchimp-api",
                "mailcoach"
              ],
              "has_wiki": false,
              "homepage": "https://freek.dev/440-easily-integrate-mailchimp-in-laravel-5",
              "has_readme": true,
              "has_docs_dir": false,
              "has_description": true
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 30,
                "status": "met",
                "details": [],
                "max_points": 30
              },
              {
                "key": "documentation_directory",
                "name": "Documentation directory",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 25
              },
              {
                "key": "documentation_homepage_site",
                "name": "Documentation / homepage site",
                "detail": "https://freek.dev/440-easily-integrate-mailchimp-in-laravel-5",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": "6 topics",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "topics_count",
                    "params": {
                      "count": 6
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "wiki",
                "name": "Wiki",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          }
        ],
        "description": "Are baseline engineering and documentation practices in place?"
      },
      {
        "key": "security",
        "band": "at_risk",
        "name": "Security",
        "value": 45,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 45,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 16,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 2,
              "scorecard_aggregate": 4.5
            },
            "components": [
              {
                "key": "binary_artifacts",
                "name": "Binary-Artifacts",
                "detail": "no binaries found in the repo",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "branch_protection",
                "name": "Branch-Protection",
                "detail": "branch protection not enabled on development/release branches",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "ci_tests",
                "name": "CI-Tests",
                "detail": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
                "points": 1,
                "status": "partial",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "cii_best_practices",
                "name": "CII-Best-Practices",
                "detail": "no effort to earn an OpenSSF best practices badge detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "code_review",
                "name": "Code-Review",
                "detail": "Found 4/18 approved changesets -- score normalized to 2",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 9 contributing companies or organizations",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "dangerous_workflow",
                "name": "Dangerous-Workflow",
                "detail": "no dangerous workflow patterns detected",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              },
              {
                "key": "dependency_update_tool",
                "name": "Dependency-Update-Tool",
                "detail": "update tool detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "fuzzing",
                "name": "Fuzzing",
                "detail": "project is not fuzzed",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "license file detected",
                "points": 2.5,
                "status": "met",
                "details": [],
                "max_points": 2.5
              },
              {
                "key": "maintained",
                "name": "Maintained",
                "detail": "3 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 2",
                "points": 1.5,
                "status": "partial",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "packaging",
                "name": "Packaging",
                "detail": "packaging workflow not detected",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 5
              },
              {
                "key": "pinned_dependencies",
                "name": "Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "sast",
                "name": "SAST",
                "detail": "SAST tool is not run on all commits -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "security_policy",
                "name": "Security-Policy",
                "detail": "security policy file not detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 5
              },
              {
                "key": "signed_releases",
                "name": "Signed-Releases",
                "detail": "no releases found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 7.5
              },
              {
                "key": "token_permissions",
                "name": "Token-Permissions",
                "detail": "detected GitHub workflow tokens with excessive permissions",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "vulnerabilities",
                "name": "Vulnerabilities",
                "detail": "0 existing vulnerabilities detected",
                "points": 7.5,
                "status": "met",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "high_risk_jurisdiction_exposure",
            "band": "excellent",
            "name": "High-Risk Jurisdiction Exposure",
            "note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
            "notes": [
              {
                "code": "jurisdiction_evidence_limits",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "meaning": "self-published location evidence; not nationality or citizenship",
              "red_flag": false,
              "exposures": [],
              "policy_countries": [
                "Russia",
                "Iran",
                "North Korea"
              ],
              "review_only_matches": 0,
              "assessed_self_published_locations": 16
            },
            "components": [
              {
                "key": "policy_exposure_multiplier",
                "name": "Policy exposure multiplier",
                "detail": "no confirmed policy-scope location match",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "jurisdiction_no_match",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
      },
      {
        "key": "ai_readiness",
        "band": "critical",
        "name": "AI Readiness",
        "value": 29,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "critical",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 14,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.258,
              "agent_instruction_files": [],
              "agent_instruction_max_bytes": null
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "no CLAUDE.md / AGENTS.md / editor rules",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_instructions",
                    "params": {}
                  }
                ],
                "max_points": 45
              },
              {
                "key": "machine_readable_docs_llms_txt",
                "name": "Machine-readable docs (llms.txt)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              },
              {
                "key": "legible_commit_history",
                "name": "Legible commit history",
                "detail": "24 of 93 human commits state their intent (structured subject or explanatory body)",
                "points": 13.8,
                "status": "partial",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 24,
                      "sampled": 93
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "at_risk",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 30,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [],
              "has_dockerfile": false,
              "typed_language": false,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": false,
              "typecheck_configs": [],
              "agent_commit_share": 0,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0.07
            },
            "components": [
              {
                "key": "one_command_bootstrap",
                "name": "One-command bootstrap",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 18
              },
              {
                "key": "automated_tests",
                "name": "Automated tests",
                "detail": null,
                "points": 22,
                "status": "met",
                "details": [],
                "max_points": 22
              },
              {
                "key": "lint_format_config",
                "name": "Lint / format config",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "no agent-authored commits among the last 100",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_agent_authored_commits",
                    "params": {
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "7 of the last 100 commits are automated dependency updates",
                "points": 8,
                "status": "met",
                "details": [
                  {
                    "code": "dependency_bot_commits",
                    "params": {
                      "count": 7,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 8
              },
              {
                "key": "openssf_scorecard_pinned_dependencies",
                "name": "OpenSSF Scorecard: Pinned-Dependencies",
                "detail": "dependency not pinned by hash detected -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "ai_code_legibility",
            "band": "moderate",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 55,
            "inputs": {
              "primary_language": "PHP",
              "largest_source_bytes": 4662,
              "source_files_sampled": 20,
              "oversized_source_files": 0
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "PHP without a type-check config",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_typecheck_config_language",
                    "params": {
                      "language": "PHP"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "0/20 source files over 60KB",
                "points": 55,
                "status": "met",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 20,
                      "oversized": 0
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          }
        ],
        "description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
      }
    ],
    "metrics_version": "1.13.0"
  },
  "warnings": [
    "Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
    "No resolved dependencies carried a version and a supported ecosystem"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-26T10:07:06.656296Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/spatie/laravel-newsletter.svg",
  "full_name": "spatie/laravel-newsletter",
  "license_state": "standard",
  "license_spdx": "MIT"
}

Оцінки — це сигнали, а не гарантії. Вони відображають публічно видимі практики на GitHub — це не аудит коду й не гарантія безпеки.

Відсутні дані виключаються, а ваги перенормовуються — нуль за відсутність ніколи не ставиться. Методологія версіонована й відкрита: метрики v1.13.0, схема v0.27.0 — повна методологія · вікі метрик.

Як окремий результат виглядає на тлі всього реєстру: сукупна статистикаPackagist.