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

inbox-zero / emulate

Local API emulation for CI and no-network sandboxes

TypeScriptApache-2.0★ 1 зірка⑂ 0 форківз бер. 2026 р.форкПереглянути на GitHub ↗

inbox-zero/emulate має індекс здоров’я 54 зі 100, що відповідає смузі «Помірний». Найвищий показник — Vitality (81/100), найнижчий — Community & Adoption (26/100). Останнє оновлення було 5 днів тому. Більшість нещодавньої роботи виконує один учасник.

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

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

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

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

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

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

Власність

Inbox ZeroОрганізація
18 підписників5 публічних репозиторіївз лют. 2024 р.

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

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

РеєстрПакетВерсіяЗавантажень / місВерсіїОстання публікаціяТеги
npm@inbox-zero/emulate0.9.09 680105 днів томуemulatormockapivercelgithubgoogleoauthtestingcilocal-development

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

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

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

81Добрий · 22% загального індексу
Як обчислюється оцінка
36/36Свіжість push — останній push 5 дн. тому
10.4/36Ритм комітів — 15/52 тижнів із комітами
18/18Обсяг комітів — 153 комітів за останній рік
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Використані вхідні дані
commits_last_year153
human_commit_share1
days_since_last_push5
active_weeks_last_year15
Як обчислюється оцінка
27/27Випускає релізи — опубліковано 2 релізів
36/36Свіжість релізів — останній реліз 5 дн. тому
19.8/27Ритм релізів — реліз кожні ~77 дн.
0/10OpenSSF Scorecard: Signed-Releases — немає даних
Використані вхідні дані
releases_count2
latest_release_tagv0.9.0
releases_from_tagsні
days_since_latest_release5
mean_days_between_releases77
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: Signed-Releases. Залишкові ваги перенормовано.

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

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

26Критичний · 18% загального індексу
Як обчислюється оцінка
0/60Зірки — 1 зірок
0/25Форки — 0 форків
0/15Спостерігачі — 0 спостерігачів
Використані вхідні дані
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Як обчислюється оцінка
0/22.5README
22.5/22.5Ліцензія — визнана ліцензія (Apache-2.0)
0/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ні
Як обчислюється оцінка
53.1/80Щомісячні завантаження — 9 680 завантажень/місяць у npm
0/20Залежні пакети в реєстрі — ця екосистема цього не повідомляє
Використані вхідні дані
packages@inbox-zero/emulate
dependents
ecosystemsnpm
total_downloads
monthly_downloads9 680
Виключено з оцінювання (немає даних або не застосовно): Залежні пакети в реєстрі. Залишкові ваги перенормовано.

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

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

57Помірний · 24% загального індексу
Як обчислюється оцінка
9/54Бас-фактор — на 1 контриб’ютор(ів) припадає половина всіх комітів
6.3/22.5Розподіл комітів — головний контриб’ютор — автор 72% комітів
13.5/13.5Широта контриб’юторів — 11 контриб’юторів
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Використані вхідні дані
bus_factor1
contributors_sampled11
top_contributor_share0,719
Як обчислюється оцінка
0/46.8Вирішення issue — немає issue або даних
30.1/38.3Прийняття PR — злито 11/14 вирішених PR
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Використані вхідні дані
merged_prs11
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs3
Виключено з оцінювання (немає даних або не застосовно): Вирішення issue. Залишкові ваги перенормовано.
Як обчислюється оцінка
30/30Підтримка власника — у власності організації
0/20Верифікований домен
9.2/25Охоплення власника — 18 підписників у inbox-zero
10.6/25Послужний список — 5 публічних репозиторіїв, вік облікового запису ~2 р.
Використані вхідні дані
followers18
owner_typeOrganization
is_verified
owner_logininbox-zero
public_repos5
account_age_days900

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

100Відмінний
Як обчислюється оцінка
25/25Опубліковано й доступно — 1 пакет(ів) у npm
35/35Свіжість публікацій — остання публікація 5 дн. тому
20/20Історія версій — 10 опублікованих версій
20/20Не застарілий — активний, не deprecated і не yanked
Використані вхідні дані
packages@inbox-zero/emulate
ecosystemsnpm
any_deprecatedні
min_days_since_publish5

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

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

54Помірний · 20% загального індексу
Як обчислюється оцінка
24/24Процеси CI — 2 процес(ів) CI
24/24Наявні тести
16/16Конфігурація лінтера — eslint.config.mjs
0/9.6Pre-commit-хуки
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — немає даних
Використані вхідні дані
has_ciтак
has_testsтак
has_editorconfigні
has_linter_configтак
has_precommit_configні
Виключено з оцінювання (немає даних або не застосовно): OpenSSF Scorecard: CI-Tests. Залишкові ваги перенормовано.

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

15Критичний
Як обчислюється оцінка
0/30README
0/25Каталог документації
15/15Сайт документації / домашня сторінка — https://emulate.dev
0/10Опис репозиторію
0/10Теми
0/10Wiki
Використані вхідні дані
topics
has_wikiні
homepagehttps://emulate.dev
has_readmeні
has_docs_dirні
has_descriptionні

Безпека

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

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

Стан безпеки

32У зоні ризику
Як обчислюється оцінка
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — branch protection not enabled on development/release branches
0/2.5CI-Tests — немає даних
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/30 approved changesets -- score normalized to 0
1.5/2.5Contributors — project has 2 contributing companies or organizations -- score normalized to 6
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5Ліцензія — license file detected
7.5/7.5Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
0/5Packaging — немає даних
0/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
0/5SAST — no SAST tool detected
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — немає даних
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 85 existing vulnerabilities detected
Використані вхідні дані
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,2
Виключено з оцінювання (немає даних або не застосовно): ci_tests, packaging, signed_releases. Залишкові ваги перенормовано.
Як обчислюється оцінка
35/35Прямі залежності без відомих сповіщень — жодна пряма залежність не має відомих сповіщень
25/25Непрямі залежності без відомих сповіщень — жодна непряма залежність не має відомих сповіщень
0/40Немає задавнених сповіщень — жодне сповіщення не має дати публікації
Використані вхідні дані
sourceosv
advisories0
affected_packages0
assessed_packages3
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Виключено з оцінювання (немає даних або не застосовно): Немає задавнених сповіщень. Залишкові ваги перенормовано. Звірено з runtime-замиканням залежностей npm:@inbox-zero/emulate@0.9.0 — тим, що тягне за собою встановлення опублікованого пакета, — 3 пакетів. Досяжність не аналізується.

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

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

70Добрий · 0% загального індексу
Як обчислюється оцінка
45/45Інструкції для агентів — AGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md
0/15Машиночитана документація (llms.txt)
40/40Читабельна історія комітів — намір зазначено у 99 з 100 людських комітів (структурований заголовок або пояснювальний текст)
Використані вхідні дані
has_llms_txtні
legible_history_share0,99
agent_instruction_filesAGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md
agent_instruction_max_bytes4 585
Як обчислюється оцінка
0/18Розгортання однією командою
22/22Автоматизовані тести
11/11Конфігурація лінтера / форматера — eslint.config.mjs
11/11Статична перевірка типів — apps/web/tsconfig.json, examples/nextjs-embedded/tsconfig.json, examples/nuxt-embedded/tsconfig.json, examples/oauth/tsconfig.json, examples/resend-magic-link/tsconfig.json, examples/stripe-checkout/tsconfig.json, examples/twilio-sms-verification/tsconfig.json, examples/vercel-blob-sharing/tsconfig.json, packages/@emulators/adapter-next/tsconfig.json, packages/@emulators/adapter-nuxt/tsconfig.json, packages/@emulators/apple/tsconfig.json, packages/@emulators/aws/tsconfig.json, packages/@emulators/clerk/tsconfig.json, packages/@emulators/core/tsconfig.json, packages/@emulators/github/tsconfig.json, packages/@emulators/google/tsconfig.json, packages/@emulators/linear/tsconfig.json, packages/@emulators/microsoft/tsconfig.json, packages/@emulators/mongoatlas/tsconfig.json, packages/@emulators/okta/tsconfig.json, packages/@emulators/resend/tsconfig.json, packages/@emulators/slack/tsconfig.json, packages/@emulators/stripe/tsconfig.json, packages/@emulators/twilio/tsconfig.json, packages/@emulators/vercel/tsconfig.json, packages/emulate/tsconfig.json, tsconfig.json
10/10Відтворюване середовище — lockfile
6/10Підтверджена практика роботи з агентами — 3 з останніх 100 комітів створено агентом або з його зазначенням
0/8Автоматизоване супроводження — автоматичних оновлень залежностей не виявлено
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Використані вхідні дані
has_nixні
has_testsтак
lockfilespnpm-lock.yaml
has_dockerfileні
typed_languageтак
bootstrap_files
has_devcontainerні
has_linter_configтак
typecheck_configsapps/web/tsconfig.json, examples/nextjs-embedded/tsconfig.json, examples/nuxt-embedded/tsconfig.json, examples/oauth/tsconfig.json, examples/resend-magic-link/tsconfig.json, examples/stripe-checkout/tsconfig.json, examples/twilio-sms-verification/tsconfig.json, examples/vercel-blob-sharing/tsconfig.json, packages/@emulators/adapter-next/tsconfig.json, packages/@emulators/adapter-nuxt/tsconfig.json, packages/@emulators/apple/tsconfig.json, packages/@emulators/aws/tsconfig.json, packages/@emulators/clerk/tsconfig.json, packages/@emulators/core/tsconfig.json, packages/@emulators/github/tsconfig.json, packages/@emulators/google/tsconfig.json, packages/@emulators/linear/tsconfig.json, packages/@emulators/microsoft/tsconfig.json, packages/@emulators/mongoatlas/tsconfig.json, packages/@emulators/okta/tsconfig.json, packages/@emulators/resend/tsconfig.json, packages/@emulators/slack/tsconfig.json, packages/@emulators/stripe/tsconfig.json, packages/@emulators/twilio/tsconfig.json, packages/@emulators/vercel/tsconfig.json, packages/emulate/tsconfig.json, tsconfig.json
agent_commit_share0,03
toolchain_manifests
dependency_bot_commit_share0
Як обчислюється оцінка
45/45Типізований код — TypeScript (статично типізована)
54.5/55Керовані розміри файлів — 4/433 файлів вихідного коду понад 60 КБ
Використані вхідні дані
primary_languageTypeScript
largest_source_bytes175 917
source_files_sampled433
oversized_source_files4
Як обчислюється оцінка
0/40Схема API (OpenAPI/GraphQL/proto)
0/20Сервер MCP
40/40Придатні до запуску приклади — examples
Використані вхідні дані
example_dirsexamples
has_mcp_signalні
api_schema_files

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

1зірок GitHub
11контриб'юторів
153комітів за останні 12 місяців
5днів від останнього пушу
2релізів
1бас-фактор
0відкритих issue
npmпакетних екосистем

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

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token
  • Community profile unavailable
  • GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Докладніше

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

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

10Binary-Artifactsno binaries found in the repo
0Branch-Protectionbranch protection not enabled on development/release branches
н/дCI-Testsno pull request found
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/30 approved changesets -- score normalized to 0
6Contributorsproject has 2 contributing companies or organizations -- score normalized to 6
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
н/дPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
н/дSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities85 existing vulnerabilities detected
Прямі залежності 27
РеєстрПакетОбмеження версіїМаніфест
npm@ai-sdk/react^3.0.118apps/web/package.json
npm@mdx-js/loader^3.1.1apps/web/package.json
npm@mdx-js/react^3.1.1apps/web/package.json
npm@next/mdx^16.2.0apps/web/package.json
npm@upstash/ratelimit^2.0.8apps/web/package.json
npm@upstash/redis^1.37.0apps/web/package.json
npmai^6.0.116apps/web/package.json
npmbash-tool^1.3.15apps/web/package.json
npmclass-variance-authority^0.7.1apps/web/package.json
npmclsx^2.1.1apps/web/package.json
npmgeist^1.7.0apps/web/package.json
npmjust-bash^2.14.0apps/web/package.json
npmlucide-react^0.577.0apps/web/package.json
npmnext16.2.0apps/web/package.json
npmnext-themes^0.4.6apps/web/package.json
npmradix-ui^1.4.3apps/web/package.json
npmreact19.2.4apps/web/package.json
npmreact-dom19.2.4apps/web/package.json
npmremark-gfm^4.0.1apps/web/package.json
npmshiki^4.0.2apps/web/package.json
npmstreamdown^2.5.0apps/web/package.json
npmtailwind-merge^3.5.0apps/web/package.json
npmtailwindcss-animate^1.0.7apps/web/package.json
npmtw-animate-css^1.4.0apps/web/package.json
npmcommander^14packages/emulate/package.json
npmpicocolors^1.1.1packages/emulate/package.json
npmyaml^2packages/emulate/package.json
Усі залежності не зібрано

Не вдалося зібрати розв'язаний набір залежностей для цього звіту: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Сповіщення про залежності 0

Встановлення npm:@inbox-zero/emulate@0.9.0 тягне 3 пакетів, прямих і транзитивних: 0 мають відомі сповіщення, з них 0 — прямі залежності.

Жодне відоме сповіщення не стосується оцінених залежностей.

Сповіщення означає, що версія, записана в графі залежностей, потрапляє в уражений діапазон. Досяжність не аналізується, а граф містить піниї розробки й тестування — знахідка може стосуватися інструментів, а не поставленого коду.

Звіт у форматі JSON машиночитний
{
  "data": {
    "repo": {
      "topics": [],
      "is_fork": true,
      "size_kb": 1600,
      "has_wiki": false,
      "homepage": "https://emulate.dev",
      "languages": {
        "CSS": 3813,
        "MDX": 77308,
        "JavaScript": 3358,
        "TypeScript": 2609756
      },
      "pushed_at": "2026-07-19T15:57:04Z",
      "created_at": "2026-03-24T09:34:49Z",
      "owner_type": "Organization",
      "updated_at": "2026-07-19T15:23:15Z",
      "description": "Local API emulation for CI and no-network sandboxes",
      "is_archived": false,
      "is_disabled": false,
      "license_spdx": "Apache-2.0",
      "default_branch": "main",
      "license_spdx_raw": "Apache-2.0",
      "primary_language": "TypeScript",
      "significant_languages": [
        "TypeScript"
      ]
    },
    "owner": {
      "blog": "https://getinboxzero.com",
      "name": "Inbox Zero",
      "type": "Organization",
      "login": "inbox-zero",
      "company": null,
      "location": null,
      "followers": 18,
      "avatar_url": "https://avatars.githubusercontent.com/u/159093745?v=4",
      "created_at": "2024-02-06T01:47:10Z",
      "is_verified": null,
      "public_repos": 5,
      "account_age_days": 900
    },
    "license": {
      "state": "standard",
      "spdx_id": "Apache-2.0",
      "raw_spdx": "Apache-2.0",
      "file_present": true,
      "scorecard_found": true,
      "profile_has_license": false
    },
    "activity": {
      "releases": [
        {
          "tag": "v0.9.0",
          "kind": "minor",
          "published_at": "2026-07-19T15:57:04Z"
        },
        {
          "tag": "v0.5.0",
          "kind": "minor",
          "published_at": "2026-05-03T14:59:06Z"
        }
      ],
      "recent_commits": [
        {
          "oid": "527d648924944dfc6fd1fab57274907304b53ac4",
          "body": null,
          "is_bot": false,
          "headline": "Publish only scoped fork package",
          "author_name": "Eliezer Steinbock",
          "author_login": "elie222",
          "committed_at": "2026-07-19T15:23:09Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e08918c00b6d830bf0940a5c1993cd5191c44ae6",
          "body": "Upstream's custom Hono-replacement router only special-cased routes\nwhose pattern was exactly \"*\" or \"/*\". A pattern like\n\"/v1.0/me/drive/items/*\" fell through to the generic compiler, which\nescaped the \"*\" as a literal character instead of matching any path\nsuffix — breaking the Microsoft Graph Dri\n[…]\n\nthat rely on this pattern, a regression surfaced by the upstream merge.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_01KC8GhYbkrP3wjK7mAHGtV4",
          "is_bot": false,
          "headline": "Fix trailing wildcard route matching in core's HTTP router",
          "author_name": "Eliezer Steinbock",
          "author_login": "elie222",
          "committed_at": "2026-07-06T11:33:44Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "721c5e9fa92213d74a0b37b0d6ed3ddd30fb5c1d",
          "body": "# Conflicts:\n#\t.github/workflows/release.yml\n#\t.prettierignore\n#\tCHANGELOG.md\n#\tREADME.md\n#\tapps/web/app/api/docs-chat/route.ts\n#\tapps/web/app/docs/architecture/page.mdx\n#\tapps/web/app/docs/configuration/page.mdx\n#\tapps/web/app/docs/nextjs/page.mdx\n#\tapps/web/app/docs/page.mdx\n#\tapps/web/app/docs/pr\n[…]\n\n#\tskills/github/SKILL.md\n#\tskills/google/SKILL.md\n#\tskills/microsoft/SKILL.md\n#\tskills/next/SKILL.md\n#\tskills/resend/SKILL.md\n#\tskills/slack/SKILL.md\n#\tskills/stripe/SKILL.md\n#\tskills/vercel/SKILL.md",
          "is_bot": false,
          "headline": "Merge remote-tracking branch 'upstream/main'",
          "author_name": "Eliezer Steinbock",
          "author_login": "elie222",
          "committed_at": "2026-07-06T11:28:01Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "1e4b71a1da6e8c937318958bebf03bcb87d61dd5",
          "body": "* Bump emulate packages to 0.9.0\n\n* Add 0.9.0 changelog entry for Nuxt adapter release\n\n* Add adapter-nuxt, linear, and twilio to release publish list\n\nEMULATOR_PACKAGES in the release workflow was not updated when new\npackages were added, so @emulators/adapter-nuxt (new in 0.9.0) would\nnot be publi\n[…]\nrs/linear and @emulators/twilio were\nnever published for 0.7.0/0.8.0. The list now matches\npackages/@emulators/* exactly.\n\n---------\n\nCo-authored-by: Chris Tate <366502+ctate@users.noreply.github.com>",
          "is_bot": false,
          "headline": "Release 0.9.0 (#189)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-07-03T15:40:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7ae88296e945ccf13a62ca95da947424c845acb9",
          "body": "* Add Nuxt emulator adapter\n\n* Add @emulators/adapter-nuxt with Nuxt server route handling, persistence, response rewriting, and Nitro tracing support.\n\n* Document Nuxt setup across README, docs site, and agent skills.\n\n* Add Nuxt embedded example\n\n* Add examples/nuxt-embedded demonstrating embedded\n[…]\n so pnpm install exits cleanly.\n\n* Fix Nuxt example install in CI\n\n* Ignore generated Nuxt files in Prettier\n\n* Fix Nuxt adapter persistence and forwarded hosts\n\n* Address Nuxt adapter review feedback",
          "is_bot": false,
          "headline": "Add Nuxt emulator adapter (#188)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-07-03T15:18:36Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "830fbd7f7eb6f6b23e714b29df9d533957b13bc8",
          "body": "* Bump emulate packages to 0.8.0\n\n* Add 0.8.0 changelog entry for Twilio release",
          "is_bot": false,
          "headline": "Prepare v0.8.0 release (#187)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-24T20:11:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9e7cdba0f062becc424cd53df071b46003581f84",
          "body": "* Add Twilio SMS verification example\n\n- Next.js OTP flow (enter phone -> verify code -> dashboard) using the official Twilio SDK against the embedded Twilio Verify emulator\n- Custom SDK request client rewrites Twilio product hosts (api/verify/messaging) onto the emulator's path prefixes via TWILIO_\n[…]\neal SMS sent; uses seeded account/Verify Service defaults (code 123456) with a link to the Twilio inspector\n\n* Fix Twilio example programmatic verification\n\n* Fix Twilio example URL query preservation",
          "is_bot": false,
          "headline": "Add Twilio SMS verification example (#186)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-24T19:54:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "b622f60074aad1d4d0796d7bad038e58a79c34c1",
          "body": "* Add Twilio emulator support\n\n- Add Twilio REST emulator package with Messaging, Verify, Voice, Conversations, simulator, and inspector surfaces.\n- Register Twilio in the service registry with seeded local account, key, number, messaging, and verify resources.\n- Document Twilio usage across README,\n[…]\nnbound URLs.\n- Document and test the common outbound, inbound, callback, and Verify SMS flows.\n\n* Fix Twilio seed and webhook regressions\n\n* Fix Twilio review regressions\n\n* Fix Twilio review feedback",
          "is_bot": false,
          "headline": "Add Twilio emulator support (#185)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-24T17:31:59Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "0ad076d18c55e490066f05908e64ae7b007400c8",
          "body": "- Bump emulate and @emulators packages to 0.7.0\n- Add Linear-focused 0.7.0 changelog notes with release markers",
          "is_bot": false,
          "headline": "Prepare v0.7.0 release (#181)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-18T20:51:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d371bdec375eb18204d13de63af4abdcde42081",
          "body": "* Add Linear emulator\n\n- Add a stateful Linear service with GraphQL, OAuth, webhooks, inspector, and seed support.\n\n- Register Linear in the CLI package and default service config.\n\n- Document the supported surface and cover it with Linear SDK conformance tests.\n\n* Reject Linear refresh tokens for A\n[…]\nility\n\n* Fix Linear issue mutation validation\n\n* Fix Linear SDK mutation compatibility\n\n* Fix Linear OAuth Basic auth parsing\n\n* Fix Linear GraphQL validation edge cases\n\n* Fix Linear docs site wiring",
          "is_bot": false,
          "headline": "Add Linear emulator (#180)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-18T20:34:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "025ee33ced8f8a75754ad098ba4fe36f1d5390f7",
          "body": "* Add Vercel Blob sharing example\n\n* Add a Next.js file-sharing example wired to the embedded Vercel Blob emulator.\n\n* Resolve prefixed Blob URLs for head, copy, and delete operations.\n\n* Cover prefixed Blob URL resolution with Vercel emulator tests.\n\n* Fix Vercel Blob sharing URL handling\n\n* Prepare v0.6.1 release",
          "is_bot": false,
          "headline": "Prepare v0.6.1 (#177)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-11T23:06:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "50f931520bf0710423af8f10d3b8130ba1b8b238",
          "body": "* Add Vercel Blob sharing example\n\n* Add a Next.js file-sharing example wired to the embedded Vercel Blob emulator.\n\n* Resolve prefixed Blob URLs for head, copy, and delete operations.\n\n* Cover prefixed Blob URL resolution with Vercel emulator tests.\n\n* Fix Vercel Blob sharing URL handling",
          "is_bot": false,
          "headline": "Add Vercel Blob sharing example (#176)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-11T22:52:39Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "787041add4e5448673b146a5bcf20df0076d598d",
          "body": "* Add Vercel Blob emulator support\n\n- Add stateful Vercel Blob emulation for put, head, list, delete, and public object serving\n\n- Cover Blob SDK behavior with @vercel/blob tests and register blob storage in service metadata\n\n- Document Blob configuration and make seeded Vercel user IDs stable\n\n* Fix Vercel Blob OIDC store resolution\n\n* Fix Vercel Blob copy and store scoping",
          "is_bot": false,
          "headline": "Add Vercel Blob emulator support (#175)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-06-11T19:56:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4045e54ad364675ecbc97ca949fa760c27373d32",
          "body": "- Bump emulate and @emulators packages to 0.6.0.\n\n- Add the v0.6.0 changelog entry for expanded Slack emulator support.\n\n- Move release markers from v0.5.0 to v0.6.0.",
          "is_bot": false,
          "headline": "Prepare v0.6.0 release (#165)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-24T17:43:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "55a4a189ba50f5eaaac0e2dc7d1dfa3fee487354",
          "body": "- Align public Slack docs and skill with the implemented supported surface, strict scopes, and OAuth callback route.\n\n- Update CLI service metadata and generated Slack seed scopes for current parity coverage.\n\n- Record deferred Slack families in the coverage matrix and public docs.",
          "is_bot": false,
          "headline": "Audit Slack parity docs (#164)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-24T17:31:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2b287f71428768db3f82f11221b3f25d1af3c8e2",
          "body": "* Expand Slack inspector audit\n\n- Add tabbed inspector views for Slack conversations, files, views, auth state, and events.\n\n- Cover expanded inspector state with route tests and coverage notes.\n\n- Update Slack docs and skill guidance for the local inspector.\n\n* Fix Slack inspector review findings\n\n* Restore Slack inspector reactions",
          "is_bot": false,
          "headline": "Expand Slack inspector audit (#163)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-24T17:09:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a5a375e8f3a1b9c31f5756051ffd2abc40049a50",
          "body": "* Add Slack views parity\n\n- Add stateful Slack views storage and Web API routes for App Home and modals.\n\n- Surface views in the inspector and coverage matrix.\n\n- Update Slack docs, registry, and skill guidance.\n\n* Fix Slack view trigger parity\n\n* Scope Slack view ownership\n\n* Fix Slack views parity gaps",
          "is_bot": false,
          "headline": "Add Slack views parity (#162)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-24T14:04:16Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "408adcd19a00260aa97541031c78567a89aa753a",
          "body": "* Add Slack pins and bookmarks parity\n\n- Add stateful pins and link bookmark APIs with scope checks and inspector visibility\n\n- Cover route, SDK, event, coverage matrix, docs, and skill updates\n\n* Fix Slack orphaned pins\n\n* Fix Slack bookmark ordering\n\nSort bookmarks by rank with stable fallbacks and avoid rank reuse after deletion.\n\n* Fix Slack seeded token identity handling",
          "is_bot": false,
          "headline": "Add Slack pins and bookmarks parity (#161)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-24T04:06:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dac8fb6f3b32ad1c92a8fe1733d3f15e6cbbd50",
          "body": "* Add Slack modern file upload parity\n\n- Add stateful Slack external upload sessions, file records, reads, lists, and deletes.\n\n- Share uploaded files as Slack file_share messages with file events and inspector visibility.\n\n- Cover SDK uploadV2, binary upload, routes, docs, and coverage matrix updat\n[…]\ne cases\n\n* Fix Slack file visibility in history\n\n* Fix Slack deleted file share history\n\n* Fix Slack file upload review issues\n\n* Fix Slack file upload review issues\n\n* Format Slack file upload routes",
          "is_bot": false,
          "headline": "Add Slack modern file upload parity (#160)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-24T02:46:44Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f47d7163de51a13345a646e597f9dbeb05b9b64",
          "body": "* Add Slack user profile and presence parity\n\n- Add stateful Slack profile get/set and presence get/set APIs.\n\n- Expand seeded profile and presence data with OAuth bot defaults.\n\n- Cover route, SDK, event, docs, and coverage surfaces.\n\n* Format Slack coverage matrix",
          "is_bot": false,
          "headline": "Add Slack user profile and presence parity (#159)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T22:41:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6c5b8bd6dde324f4df057b6fe3209062a760808",
          "body": "* Add Slack OAuth install and scope parity\n\n- Model app installs, bot users, and Slack token records for OAuth and seeded apps.\n- Add relaxed and strict scope checks across Slack Web API routes.\n- Cover OAuth-generated tokens with route, SDK, docs, and init config updates.\n\n* Address Slack scope review findings\n\n* Fix Slack strict scope parity\n\n* Fix Slack email lookup strict scope\n\n* Fix Slack user scope token issuance\n\n* Fix Slack OAuth formatting",
          "is_bot": false,
          "headline": "Add Slack OAuth install and scope parity (#158)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T22:09:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1c23db3402ed84d35f7485b57b5937579f8ee8af",
          "body": "* Add Slack membership and DM writes\n\n- Implement invite, kick, open, close, mark, and conversation type filtering.\n\n- Model IM and MPIM conversations and support DM posting by user ID.\n\n- Cover routes, Slack SDK calls, events, docs, and coverage matrix.\n\n* Address Slack DM review findings\n\n* Fix Sl\n[…]\nrds\n\n* Fix Slack membership review issues\n\n* Fix Slack scheduled and legacy membership guards\n\n* Fix Slack skill DM examples\n\n* Fix Slack reaction access guards\n\n* Fix Slack DM events and leave guards",
          "is_bot": false,
          "headline": "Add Slack membership and DM writes (#157)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T20:46:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a815676ac41ed7fec83fb4335897db311c2da46c",
          "body": "* Add Slack conversation lifecycle writes\n\n- Implement archive, unarchive, rename, topic, and purpose mutations.\n\n- Dispatch lifecycle events and message subtype events for supported writes.\n\n- Cover routes, Slack SDK calls, docs, and coverage matrix.\n\n* Fix Slack conversation lifecycle review issues\n\n* Fix private Slack lifecycle events",
          "is_bot": false,
          "headline": "Add Slack conversation lifecycle writes (#156)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T17:29:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3815e3dd28ae083cd8c1689b057bd17a58391549",
          "body": "* Add Slack ephemeral and scheduled messages\n\n- Store ephemeral messages outside channel history and surface them in the inspector.\n\n- Add scheduled message create, list, and delete APIs with SDK coverage.\n\n- Update Slack docs, skill examples, and coverage notes for the new chat surface.\n\n* Fix Slack scheduled message review issues\n\n* Fix Slack ephemeral membership check\n\n* Fix Slack scheduled cursor handling\n\n* Fix Slack scheduled message review issues\n\n* Fix Slack scheduled message formatting",
          "is_bot": false,
          "headline": "Add Slack ephemeral and scheduled messages (#155)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T16:34:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e6d024165851e005a20a3c2a17c3a411783622f3",
          "body": "* Add Slack message event parity\n\n- Add deterministic chat permalinks for posted messages and threaded replies.\n\n- Dispatch Slack-shaped message_changed and message_deleted events.\n\n- Cover permalink and event flows across route, SDK, and docs.\n\n* Add Slack event timestamps\n\n* Format Slack chat route\n\n* Fix Slack coverage note",
          "is_bot": false,
          "headline": "Add Slack message event parity (#154)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T15:22:34Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6de44e1c5ed99abc7a2807009dfec81edddc5f41",
          "body": "* Add Slack rich message parity\n\n- Preserve rich chat and webhook payloads through storage and reads.\n\n- Add route, event, and Slack SDK coverage for rich message round trips.\n\n- Update Slack docs and coverage notes for the supported surface.\n\n* Fix Slack rich message review issues",
          "is_bot": false,
          "headline": "Add Slack rich message parity (#153)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T05:49:28Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "cf4b54407df63c3eee2d0e4b98b8544538fd73e8",
          "body": "* Add Slack parity baseline tests\n\n- Add shared Slack test helpers and a baseline coverage matrix.\n\n- Add Slack WebClient conformance and event dispatch baseline tests.\n\n- Alias Slack Vitest runs to the TypeScript core runtime.\n\n* Cover Slack OAuth callback route\n\n* Make Slack SDK tests bind loopback",
          "is_bot": false,
          "headline": "Add Slack parity baseline tests (#152)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T05:21:20Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1be3f8a609002b01b57de0586d67e05fab9353c4",
          "body": "- Add pnpm minimumReleaseAge of 2880 minutes and deny reviewed dependency build scripts by default.\n\n- Require Node 24 and pnpm 11 in project metadata, version files, and CI.\n\n- Let GitHub Actions read the pnpm version from packageManager to avoid setup conflicts.",
          "is_bot": false,
          "headline": "Require minimum release age and Node 24 (#151)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T02:19:05Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7566f80fdfcdfca6a651676f405f0cf6cad33d35",
          "body": null,
          "is_bot": false,
          "headline": "Remove Hono dependency (#150)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T02:00:53Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f350d87d5b3268ea2353de1a5aa1a409e21fc0e7",
          "body": null,
          "is_bot": false,
          "headline": "prepare v0.6.0 release (#148)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T01:07:22Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "66afdc61757248c45056e9cb65e24980dc19bb09",
          "body": "* Add API Gateway v2 Lambda proxy foundation\n\nAdds native Go API Gateway v2 HTTP API, integration, route, and stage metadata handling with SDK-compatible REST JSON responses.\n\nAdds local HTTP API invoke URLs that route AWS_PROXY integrations through the Lambda engine, including proxy event and respo\n[…]\neway Lambda proxy edge cases\n\n* Fix API Gateway v2 Lambda proxy edge cases\n\n* Fix API Gateway v2 Lambda proxy review issues\n\n* Fix API Gateway v2 proxy event shape\n\n* Fix API Gateway v2 route matching",
          "is_bot": false,
          "headline": "Add API Gateway v2 Lambda proxy foundation (#147)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-23T00:57:50Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "8f17343aa7a31917012e133b3c62cff2adda971d",
          "body": "* Add EventBridge Lambda target delivery\n\n- Routes EventBridge Lambda targets through the Go Lambda invocation path with CloudWatch Logs recording.\n\n- Keeps local Node.js handler execution behind the existing signed localhost allow-local gate.\n\n- Adds Go and AWS SDK coverage plus docs for EventBridge-to-Lambda delivery.\n\n* Update AWS skill EventBridge Lambda docs\n\n* Document EventBridge Lambda known key gate\n\n* Format AWS EventBridge e2e test",
          "is_bot": false,
          "headline": "Add EventBridge Lambda target delivery (#146)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T21:20:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e145848e8926508834b5dd3e7362b6617608df33",
          "body": "* Add local Node.js Lambda runner\n\n- Persists inline Lambda zip payloads and runs valid nodejs runtimes locally with env, context, timeouts, logs, and function errors.\n\n- Keeps invoke_payload as the compatibility fallback and adds code_zip_base64 seed support.\n\n- Adds Go tests, official AWS SDK cove\n[…]\nution\n\n* Address local Lambda runner review findings\n\n* Fix local Lambda runner edge cases\n\n* fix: harden local lambda runner\n\n* Fix local Lambda runner lifecycle\n\n* Harden local Lambda node execution",
          "is_bot": false,
          "headline": "Add local Node.js Lambda runner (#145)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T19:43:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ea354f6bc598a80fe1affb204c75e026444fef9b",
          "body": "* Add Lambda API-only control plane\n\n- Adds native Go Lambda REST JSON routing with API-only function lifecycle, invoke stubs, versions, aliases, tags, and resource policy storage.\n\n- Wires Lambda seed config, inspector state, runtime registry metadata, and @emulators/aws compatibility collections.\n\n[…]\nix Lambda qualified ARN behavior\n\n* Address Lambda docs and types\n\n* Fix Lambda scope and alias version behavior\n\n* fix: format aws lambda e2e test\n\n* fix: disable preview comments during vercel build",
          "is_bot": false,
          "headline": "Add Lambda API-only control plane (#144)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T16:46:09Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "943470f9c81a59fe20ae6d498a14b1e181504015",
          "body": "* Harden IAM policies and STS sessions\n\n* Adds native IAM Query support for inline user/role policies, managed policy storage, policy versions, and user/role managed policy attachments.\n\n* Extends STS AssumeRole with duration, expiration, session tag metadata, and packed policy size compatibility.\n\n\n[…]\n lifecycle review fixes\n\n* Fix IAM managed policy lifecycle filters\n\n* Fix IAM policy filters and STS assumed role ARNs\n\n* Address IAM policy and STS session review fixes\n\n* Fix AWS SDK e2e formatting",
          "is_bot": false,
          "headline": "Harden IAM policies and STS sessions (#143)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T14:40:27Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "a19cb7e9fd04f9e2501e386ac084c804b485f4a3",
          "body": "* Harden native SQS batch APIs\n\n* Adds Query and JSON RPC support for SQS batch send/delete, message visibility changes, queue attribute updates, and queue tags.\n\n* Covers the new SQS APIs in Go service tests and official JS SDK e2e coverage.\n\n* Updates AWS docs and skill operation lists.\n\n* Validate SQS batch request envelopes\n\n* Format SQS SDK e2e test",
          "is_bot": false,
          "headline": "Harden native SQS batch APIs (#142)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T07:37:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ab4fa96141fefc2a3e22d79da152fc266201321b",
          "body": "* Harden S3 range and conditional reads\n\n- Adds S3 bucket location handling with CreateBucket LocationConstraint parsing.\n\n- Supports Range requests and conditional object reads for GetObject and HeadObject.\n\n- Covers the behavior with Go tests, official S3 SDK E2E coverage, docs, and AWS skill updates.\n\n* Fix S3 conditional read precedence\n\n* Fix S3 range and conditional edge cases\n\n* Fix AWS SDK E2E formatting",
          "is_bot": false,
          "headline": "Harden S3 range and conditional reads (#141)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T07:02:32Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4e419c83a380e4d3cd70ae0e4e2195a469b45b72",
          "body": "* Add native KMS stub foundation\n\n- Adds dependency-free Go KMS JSON RPC handling for key metadata, aliases, Encrypt, Decrypt, and GenerateDataKey.\n\n- Seeds a default local KMS key and preserves S3 SSE-KMS metadata for local key reference tests.\n\n- Covers KMS with Go unit tests, official JS SDK E2E coverage, docs, skills, and compatibility types.\n\n* Fix KMS data key bounds and starter alias\n\n* Fix AWS SDK E2E formatting",
          "is_bot": false,
          "headline": "Add native KMS stub foundation (#140)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T06:22:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "59788257db51f810c7531e68de9d2b711a61f108",
          "body": "- Add pnpm minimumReleaseAge enforcement for workspace installs\n\n- Require Node 24+ and pnpm 11 through package engines",
          "is_bot": false,
          "headline": "Require minimum dependency release age (#137)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T05:37:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "001e5f65434955a11d619e2f9d00af545f7a17a3",
          "body": "* Add native SSM Parameter Store foundation\n\n- Adds dependency-free Go SSM Parameter Store support with parameter versions, hierarchical path queries, tags, seed config, inspector state, and AWS service routing.\n\n- Extends @emulators/aws compatibility metadata and documentation for SSM seed config, endpoints, scopes, and SDK usage.\n\n- Covers native handler behavior and official @aws-sdk/client-ssm E2E parity without package version bumps.\n\n* Fix SSM canonical overwrite versions",
          "is_bot": false,
          "headline": "Add native SSM Parameter Store foundation (#139)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T05:14:38Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "58df27dce934161cd83f52e3b6d3ddcba628954c",
          "body": "* Add native Secrets Manager foundation\n\n- Adds a native Go Secrets Manager JSON RPC handler with secret values, version ids, staging labels, delete/restore metadata, tags, and KMS key id metadata.\n\n- Wires Secrets Manager into AWS routing, state collections, seed config, inspector, docs, skills, an\n[…]\nta.\n\n- Covers representative handler behavior and official JS SDK e2e flows with @aws-sdk/client-secrets-manager.\n\n* Fix Secrets Manager review issues\n\n* Fix Secrets Manager idempotent version retries",
          "is_bot": false,
          "headline": "Add native Secrets Manager foundation (#138)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T04:46:53Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "d1d1122acc712a9db331f6553a78df31bc6378bc",
          "body": "* Add native CloudWatch Logs foundation\n\n- Adds dependency-free Go CloudWatch Logs handling for groups, streams, events, retention, and tags behind AWS JSON RPC.\n\n- Wires Logs state through AWS store, routing, inspector, package compatibility exports, and docs.\n\n- Covers native behavior and official\n[…]\ngs.\n\n* Fix CloudWatch Logs API semantics\n\n* Fix CloudWatch Logs API edge semantics\n\n* Fix CloudWatch Logs review issues\n\n* Fix CloudWatch Logs API validation\n\n* Fix CloudWatch Logs SDK test formatting",
          "is_bot": false,
          "headline": "Add native CloudWatch Logs foundation (#136)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T03:29:19Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4f33b982672ccc056e859c948d37fe616c6d02a4",
          "body": "* Add native compatibility facades\n\n- Restores documented 0.5.0 adapter and package-root imports as native-backed compatibility facades.\n\n- Adds native runtime proxying for legacy Next.js handler configs while keeping explicit proxy support.\n\n- Updates docs and skills to describe the compatibility path for the Go engine migration.\n\n* Address native facade review issues\n\n* Restore core compatibility facade contracts\n\n* Format core compatibility facade",
          "is_bot": false,
          "headline": "Add native compatibility facades (#135)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-22T01:46:43Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "69a94d22bdb0c6284009952617d48913f024285b",
          "body": "* Remove Node service engine implementations\n\n* Fix native runtime proxy regressions\n\n* Address native runtime review findings\n\n* Address native runtime review findings\n\n* Fix native runtime follow-ups",
          "is_bot": false,
          "headline": "Remove Node service engine implementations (#134)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T22:56:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "3da3b1d26736b2812ceabafeb90f6243907975a6",
          "body": "* Use native Go engine for npm CLI distribution\n\nAdds platform native binary packages and release wiring for npm distribution.\n\nSwitches npx emulate to a signal-forwarding Go engine launcher while preserving package imports and JS/TS SDK tests.\n\nCloses native CLI gaps for YAML seeds, AWS seed config, portless, and Vercel Go Function scaffolding.\n\n* Fix native seed config resolution\n\n* Guard native package publish order",
          "is_bot": false,
          "headline": "Use native Go engine for npm CLI distribution (#133)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T21:06:01Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "763e0b1b07aeafe816293cd69d4494d02435df0f",
          "body": "* Add Go EventBridge foundation\n\n- Adds native EventBridge JSON RPC handling for buses, rules, targets, deliveries, default bus seeding, and SQS/SNS target delivery.\n\n- Adds Go coverage and AWS SDK v3 EventBridge e2e coverage for rule matching, tags, targets, and PutEvents delivery.\n\n- Updates docs,\n[…]\ndge surface.\n\n* Fix EventBridge timestamp and target scoping\n\n* Fix EventBridge review issues\n\n* Fix EventBridge default bus scoping\n\n* Fix EventBridge API contract gaps\n\n* Fix EventBridge ARN scoping",
          "is_bot": false,
          "headline": "Add Go EventBridge foundation (#132)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T19:39:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9f9dcb1c346e5b1a1e94c3fd768f2daf60aea927",
          "body": "* Add Go MongoDB Atlas foundation\n\n- Adds native Atlas Admin API and Data API handlers with in-memory project, cluster, user, database, collection, and document state.\n\n- Wires mongoatlas into native CLI seed parsing, runtime registration, and Vercel Go Function scaffolding.\n\n- Updates docs, skills, and tests for native MongoDB Atlas support.\n\n* Fix MongoDB Atlas review findings\n\n* Fix MongoDB Atlas Data API matching",
          "is_bot": false,
          "headline": "Add Go MongoDB Atlas foundation (#131)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T17:59:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6d58fbb876572ccdea8716f58fdbb371880b4fc5",
          "body": "* Add Go Clerk foundation\n\n- Adds a dependency-free native Clerk service with OIDC, JWKS, OAuth token/userinfo, management resources, session JWTs, and seedable state.\n\n- Wires Clerk into the native runtime, CLI seed parsing, Vercel Go Function defaults, and scaffold service lists.\n\n- Updates docs, \n[…]\nt coverage for native Clerk support.\n\n* Fix Clerk redirect and token templates\n\n* Fix Clerk count filters and nonce claims\n\n* Fix Clerk OAuth routing with Vercel\n\n* Fix Vercel scaffold test formatting",
          "is_bot": false,
          "headline": "Add Go Clerk foundation (#130)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T17:11:48Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "f4729417b4836db919ee8eec84f1577fcb35deab",
          "body": "* Add Go Okta foundation\n\n- Adds native Okta OIDC, token, userinfo, introspection, revocation, and management API foundations in the Go runtime.\n\n- Wires Okta into CLI seed loading, runtime routing, Vercel Go Function previews, docs, and skills.\n\n- Covers OAuth, management APIs, native startup, and Vercel scaffold behavior with focused tests.\n\n* Harden Okta OAuth state checks\n\n* Fix Okta OAuth validation edge cases",
          "is_bot": false,
          "headline": "Add Go Okta foundation (#129)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T16:02:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "b5a1a37dd284418a278cd306b798e2b0a54273c5",
          "body": "* Add Go Stripe payments foundation\n\n- Adds dependency-free native Stripe state, request parsing, route handlers, hosted checkout rendering, and seed support.\n\n- Wires Stripe into the native runtime, CLI seed loading, and Vercel Go Function scaffolding.\n\n- Updates docs and tests for native Stripe support while keeping webhook delivery documented as embedded JavaScript mode only.\n\n* Fix Stripe seed docs sample\n\n* Fix native Stripe confirm race\n\n* Support indexed Stripe expand params",
          "is_bot": false,
          "headline": "Add Go Stripe payments foundation (#128)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T14:48:41Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "30ce7c8160ab144a45819b0e7fbbc8387293341c",
          "body": "* Add Go Slack foundation\n\n- Adds a dependency-free native Slack service with OAuth v2, auth/team/users, chat, conversations, reactions, incoming webhooks, seed handling, and inspector routes.\n\n- Wires Slack into the Go runtime, native CLI seed parsing, and Vercel Go Function scaffold.\n\n- Updates do\n[…]\nace.\n\n* Fix native Slack webhook and OAuth validation\n\n* Address native Slack review fixes\n\n* Fix Slack inspector route collision\n\n* Fix Slack webhook thread metadata\n\n* Fix Slack thread reply cleanup",
          "is_bot": false,
          "headline": "Add Go Slack foundation (#127)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-21T01:05:40Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4967e71b743d5de712c63ab4eb1d8b388c1ecb05",
          "body": "* Add Go Google foundation\n\n- Adds a dependency-free native Google OAuth/OIDC, Gmail, Calendar, and Drive service foundation behind the Go runtime.\n\n- Wires Google seed parsing, runtime registration, and Vercel Go Function preview support through the existing npm and docs surfaces.\n\n- Covers OAuth r\n[…]\nues\n\n* Fix Google Gmail edge cases\n\n* Fix native Google review issues\n\n* Fix Google JWT drafts and threading\n\n* Fix native Google OAuth and label queries\n\n* Fix Google watch and Drive update semantics",
          "is_bot": false,
          "headline": "Add Go Google foundation (#126)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-20T22:53:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "658c3dafb05b484d4ff35ea63406daecb895fb55",
          "body": "* Add Go Microsoft Entra foundation\n\n- Adds a native Microsoft OAuth/OIDC service with JWKS, RS256 ID tokens, token grants, Graph profile routes, logout, revoke, and JSON seed support.\n\n- Wires Microsoft into the Go runtime, CLI seed loading, Vercel preview handler, scaffold defaults, docs, and agen\n[…]\ncode, PKCE, refresh rotation, client credentials, v1 resource translation, runtime, CLI, and Vercel forwarding behavior in tests.\n\n* Bind Microsoft refresh tokens to clients\n\n* Format CLI index for CI",
          "is_bot": false,
          "headline": "Add Go Microsoft Entra foundation (#125)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-20T19:12:46Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "9410c4050efbf472b446e941276c55a267ea000e",
          "body": "* Add Go Apple Sign In foundation\n\n- Adds a native Go Apple OIDC service with discovery, JWKS, authorization, token, refresh, revoke, seed handling, and RS256 id_token signing.\n\n- Wires Apple into the native runtime, JSON seed loading, and Vercel Go Function preview scaffolding.\n\n- Updates docs, skills, and help text to frame Go as the emulator engine path.\n\n* Fix Apple OAuth response mode handling\n\n* Fix Apple OAuth PKCE and relay email parity",
          "is_bot": false,
          "headline": "Add Go Apple Sign In foundation (#124)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-20T18:41:24Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4c7563c7cedfce3a00d7b48a2f327831204e80c3",
          "body": "* Add Go SNS AWS foundation\n\n- Adds a native SNS Query handler with topic, subscription, delivery, tag, and permission state.\n\n- Wires SNS into the Go AWS gateway and delivers published notifications to SQS subscriptions.\n\n- Adds Go tests, JS SDK E2E coverage, CI coverage, and docs/skill updates for the native SNS surface.\n\n* Address SNS review findings\n\n* Fix SNS review findings\n\n* Fix SNS SQS attribute delivery\n\n* Fix SNS SQS delivery semantics",
          "is_bot": false,
          "headline": "Add Go SNS AWS foundation (#123)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-20T17:06:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2159a45e6f00822406e688d5f71db88c5a3737ad",
          "body": "* Add Go DynamoDB AWS foundation\n\n- Adds a native DynamoDB JSON RPC handler with table state, item storage, AttributeValue normalization, and modeled AWS errors.\n\n- Wires DynamoDB into the Go AWS service and store with lifecycle, CRUD, query, batch, and tagging coverage.\n\n- Adds Go tests, skipped JS\n[…]\n* Reject unsupported DynamoDB expressions\n\n* docs: include DynamoDB in AWS docs\n\n* Fix DynamoDB numeric key handling\n\n* Clarify DynamoDB native runtime docs\n\n* Fix DynamoDB validation and batch writes",
          "is_bot": false,
          "headline": "Add Go DynamoDB AWS foundation (#122)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-20T15:54:42Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "58bb01e1d711959bdbcb9d265b9156dc3b00a7eb",
          "body": "* Add Go GitHub API parity foundation\n\n- Adds a dependency-free native GitHub REST and OAuth service covering users, orgs, repos, issues, comments, pull requests, git data, rate limit, meta, and seed data.\n\n- Mounts GitHub in the native runtime and CLI seed parser while keeping npm distribution and \n[…]\nnative GitHub parity regressions\n\n* Fix native GitHub parity review issues\n\n* Fix native GitHub PR merge regressions\n\n* Fix native GitHub issue parity gaps\n\n* Fix GitHub collaborator write permissions",
          "is_bot": false,
          "headline": "Add Go GitHub API parity foundation (#120)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-20T14:04:16Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "51bc7b88beff9376ec883e0ece0edfb262d0fbc5",
          "body": "* Add Go Vercel API parity foundation\n\n- Ports the current Vercel REST emulator surface to a dependency-free Go service while leaving npm packages and TypeScript tests in place.\n\n- Wires native Vercel seeding, runtime mounting, and Vercel Go Function preview routing.\n\n- Adds Go coverage for user aut\n[…]\nel auth scope and OAuth persistence\n\n* Fix native Vercel OAuth redirect matching\n\n* Fix Vercel scaffold test formatting\n\n* Fix native Vercel OAuth and file uploads\n\n* Fix native Vercel review findings",
          "is_bot": false,
          "headline": "Add Go Vercel API parity foundation (#119)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-20T01:03:39Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "4e51210901cd7b48ebbc7184fb0274c9adcd079c",
          "body": "- Ensures existing go.mod files meet the Go version required by generated Vercel Go Functions while preserving existing module dependencies.\n\n- Validates vercel.json rewrites before writing scaffold files so failed runs do not leave partial output.\n\n- Adds focused scaffold tests for existing module files and validation failures.",
          "is_bot": false,
          "headline": "Harden Vercel scaffold updates (#118)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T23:13:46Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "bd8f8eea54435fedd74415c254076af8d88856a4",
          "body": "* Add Vercel Go Function scaffold\n\n- Adds a public Go Vercel handler that adapts /emulate/{service} preview routes to native AWS and Resend handlers with warm-memory state and optional snapshot persistence.\n\n- Adds npx emulate vercel init to generate api/emulate.go, vercel.json rewrites, and go.mod \n[…]\npreview state behavior and covers the scaffold and handler with Go and TypeScript tests.\n\n* Fix Vercel scaffold edge cases\n\n* Fix Vercel scaffold review issues\n\n* Preserve Vercel rewrite path suffixes",
          "is_bot": false,
          "headline": "Add Vercel Go Function scaffold (#117)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T23:10:22Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "7e6796e688ad16b6e194b8bf3784e88186212c44",
          "body": "* Add Next proxy adapter foundation\n\n- Adds createEmulateProxy with single-target and service-target forwarding, prefix handling, forwarded headers, and response rewriting for native runtimes.\n\n- Keeps embedded Next adapter behavior intact while adding focused proxy tests and adapter test wiring.\n\n- Updates docs and skills to distinguish embedded mode from native runtime proxy mode.\n\n* Fix Next proxy redirect handling\n\n* Fix Next proxy prefix rewriting\n\n* Harden Next proxy response rewriting",
          "is_bot": false,
          "headline": "Add Next proxy adapter foundation (#116)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T22:04:23Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2c707a6db403f60ea0fae6f7dfac7847fd6a4fd1",
          "body": "- Pins the workspace package manager to pnpm 11 and enables strict Node engine enforcement.\n\n- Adds fnm/nvm Node 24 version files and points CI/release workflows at the shared version file.\n\n- Uses Corepack in CI to activate pnpm 11 under the configured Node runtime.\n\n- Tolerates Node 24 socket reset behavior in the SDK conformance timeout fixture.",
          "is_bot": false,
          "headline": "Use pnpm 11 and Node 24 (#115)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T21:00:55Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6137703e7b6e1acdee29a71ff5dbd474b83c316a",
          "body": "* Add native Go Resend current parity\n\n- Implements native Resend emails, domains, API keys, audiences, contacts, inbox UI, and explicit JSON seed handling in the Go runtime.\n\n- Adds official Resend SDK external E2E coverage plus CI wiring for the native Go service.\n\n- Updates Resend docs, skills, and service listings for native runtime support.\n\n* Reject unsupported native seed configs",
          "is_bot": false,
          "headline": "Add native Go Resend current parity (#114)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T20:30:04Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "359da5439fc95bd923aa8b1581a96c4e36ce59c2",
          "body": "- Implements native IAM users, roles, access keys, and STS caller identity and assume role with credential mapping.\n\n- Seeds default admin IAM credentials and routes IAM and STS Query requests through the Go AWS service.\n\n- Adds JS SDK v3 IAM and STS conformance coverage plus docs for native SDK endpoints.",
          "is_bot": false,
          "headline": "Add native Go IAM and STS current parity (#113)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T17:03:15Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a98f51ee5507d5a77b397291433e77c95cf1793d",
          "body": "* Add native Go SQS current parity\n\n- Implements native Go SQS queue and message operations for Query and current JSON SDK protocols.\n\n- Seeds the default SQS queue and routes SQS through the AWS service with queue attributes, visibility, purge, and delete behavior.\n\n- Adds Go coverage and JS SDK v3\n[…]\ne Go runtime.\n\n* Fix native SQS delay and message attributes\n\n* Fix native SQS receive races\n\n* Fix native SQS receive metadata parity\n\n* Document SQS SDK JSON protocol\n\n* Clarify native SQS JSON docs",
          "is_bot": false,
          "headline": "Add native Go SQS current parity (#112)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T16:24:52Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6b511d50f6f0c2215cff7a98dacd8be4754a2d34",
          "body": "* Add native Go S3 current parity\n\n- Implements S3 bucket and object operations in the native AWS service with binary-safe asset storage.\n\n- Supports list pagination, copy object, metadata, ETags, last-modified headers, and presigned POST uploads.\n\n- Extends Go service and runtime tests and validates against the AWS SDK v3 S3 E2E suite.\n\n* Fix native S3 edge cases",
          "is_bot": false,
          "headline": "Add native Go S3 current parity (#111)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T14:33:08Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "2be04c747a555c8bca153ac40309add533cb5b28",
          "body": "* Add Go AWS service shell\n\n- Mounts the native AWS service through the Go runtime when the aws service is enabled.\n\n- Adds protocol-shaped not-implemented responses for S3 REST XML, AWS Query, and JSON RPC requests.\n\n- Adds an AWS inspector shell backed by shared UI helpers and empty native AWS sto\n[…]\nuting\n\n* Fix AWS fallback routing\n\n* Tighten AWS S3 fallback detection\n\n* Fix AWS service fallback classification\n\n* Fix AWS fallback service path classification\n\n* Fix AWS fallback routing edge cases",
          "is_bot": false,
          "headline": "Add Go AWS service shell (#110)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T13:59:34Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "3ebbd7e300d2e0d45e6696e73a444eab52127856",
          "body": "* Add Go binary asset store foundation\n\n- Adds a dependency-free in-memory asset store with binary-safe byte storage, streaming helpers, metadata, checksums, ETags, and snapshot references.\n\n- Adds stable AWS asset identifiers for S3 objects, Lambda packages, Lambda layers, and CloudFormation templates.\n\n- Covers binary round trips, metadata cloning, defaults, stable snapshots, and AWS asset id behavior in Go tests.\n\n* Fix AWS asset purpose constants",
          "is_bot": false,
          "headline": "Add Go binary asset store foundation (#109)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T06:29:02Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e9b2e8d0b2e0761a970447cddbbfd890ad6cf735",
          "body": "* Add AWS auth and error foundations\n\n- Adds dependency-free SigV4 parsing, known-key auth modes, explicit missing and unknown auth states, and gateway identity context.\n\n- Adds AWS XML, S3 REST XML, and JSON error serializers for SDK-compatible service failures.\n\n- Covers header, presigned, relaxed, known-key, strict, gateway, and error serialization behavior in Go tests.\n\n* Harden AWS auth resolution\n\n* Fix AWS auth and error defaults",
          "is_bot": false,
          "headline": "Add AWS auth and error foundations (#108)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T06:14:30Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "9a4ca15f7b6346e4edb94df7bf40b5b2634667ce",
          "body": "* Add Go AWS gateway parsing foundation\n\n- Adds a normalized AWS request context with request ids, region/account defaults, credential-scope parsing, and service/action detection across host, path, query, and target metadata.\n\n- Adds dependency-free AWS Query, JSON RPC, and S3 REST route parsers for future native service handlers.\n\n- Covers representative S3, SQS, IAM, STS, and JSON RPC requests in Go unit tests.\n\n* Fix S3 multipart upload action detection",
          "is_bot": false,
          "headline": "Add Go AWS gateway parsing foundation (#107)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T05:47:31Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "926239190b10d6be1c60337bb98105f6c56a05cc",
          "body": "* Add JS SDK conformance harness skeleton\n\n- Adds a dependency-free Node harness for TypeScript, Go, and external runtime targets with random ports, readiness polling, and captured logs.\n\n- Adds lifecycle smoke coverage that starts the TypeScript CLI and verifies GitHub rate-limit readiness.\n\n- Keeps SDK conformance isolated under tests/sdk-js so future official SDK suites can be added as dev-only test dependencies.\n\n* Fix SDK conformance harness wiring\n\n* Fix SDK conformance harness scheduling",
          "is_bot": false,
          "headline": "Add JS SDK conformance harness skeleton (#106)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-19T00:09:50Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "a864d0857b6fb36f81ee923252279bd769233f24",
          "body": "- Add shared Go UI renderers with embedded placeholder assets and asset routes.\n\n- Add config discovery and JSON loading with explicit YAML handling.\n\n- Reuse shared config discovery in the native CLI and serve UI assets from the runtime handler.",
          "is_bot": false,
          "headline": "Add Go UI and config foundation (#105)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-18T23:39:17Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6b0615d3d2eb5042844b4d64bdddf6a00ad9ae06",
          "body": "* Add Go HTTP and store foundation\n\n- Add a dependency-free Go router with response helpers and prefix mounting.\n\n- Add an in-memory store with indexed collections, snapshots, restore, and reset.\n\n- Wire native start to the reusable runtime handler and health endpoint.\n\n* Fix Go router matching parity\n\n* Fix Go router and store edge cases",
          "is_bot": false,
          "headline": "Add Go HTTP and store foundation (#104)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-18T23:21:44Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "776b27e1c665191636e2ae74247ca42b3266b6fa",
          "body": "* Add native Go CLI foundation\n\n- Add an experimental Go CLI shell with list, init, and start validation.\n\n- Seed the Go service registry from the current TypeScript runtime contract.\n\n- Cover the initial CLI and registry behavior with Go tests.\n\n* Fix native Go foundation review issues\n\n* Fix Go subcommand help exit codes\n\n* Reject unexpected Go CLI arguments\n\n* Fix native list service formatting\n\n* Fix native Go CLI review issues\n\n* Fix native Go CLI help output",
          "is_bot": false,
          "headline": "Add native Go CLI foundation (#103)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-18T22:47:35Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7bc8bf7b670087a2c79481b0ac8bf7712491cdb4",
          "body": "* Remove Hono dependency\n\n* docs: remove stale hono references\n\n* Fix HEAD route precedence",
          "is_bot": false,
          "headline": "Remove Hono dependency (#102)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-05-18T20:44:18Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "e0afba3141ce27d377f58e50b60360d0c9fad454",
          "body": null,
          "is_bot": false,
          "headline": "Fix scoped npm release (#14)",
          "author_name": "Elie Steinbock",
          "author_login": "elie222",
          "committed_at": "2026-05-03T12:48:36Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "4dfd1625047c561f5f0ef6aeeed0bc133643bdeb",
          "body": "Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>\nCo-authored-by: Amoroso David <amorosodavid@yarooms.com>\nCo-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>\nCo-authored-by: Matt Van Horn <455140+mvanhorn@users.noreply.github.com>\nCo-authored-by: Claude Op\n[…]\nr.co>\nCo-authored-by: Railly Hugo <51397083+Railly@users.noreply.github.com>\nCo-authored-by: João Lucas <55464917+jlucaso1@users.noreply.github.com>\nCo-authored-by: Georges Haidar <ghaidar0@gmail.com>",
          "is_bot": false,
          "headline": "Merge upstream v0.5.0 updates (#13)",
          "author_name": "Elie Steinbock",
          "author_login": "elie222",
          "committed_at": "2026-05-03T12:43:10Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "6f1175cca3b40200af3ba94df1b9447f690940e1",
          "body": "`emulate` is a zsh built-in command, so bare `emulate` invokes the\nshell built-in instead of the npm binary. Update all user-facing CLI\nexamples, help output, and system prompts to use `npx emulate`. Add\nan AGENTS.md rule to prevent regressions.",
          "is_bot": false,
          "headline": "docs: standardize CLI references to npx emulate (#87)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T06:07:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7628ca8bdcaab5d17de5827be1ba3c9aed3179be",
          "body": "…ing (#86)\n\nTrusted publishing requires npm 11.5.1+ (Node 24). The registry-url\nconfig in setup-node injects a NODE_AUTH_TOKEN that overrides the OIDC\nflow, causing 404 errors on every package.",
          "is_bot": false,
          "headline": "fix(release): use Node 24 and remove registry-url for trusted publish…",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T05:45:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f3a26ff6ea3dfaf77dd33903bf429d98de7f600a",
          "body": "pnpm publish does not pass the OIDC token needed for npm trusted\npublishers, causing 404 errors on every package. Switch to pnpm pack\n(to resolve workspace:* protocols) followed by npm publish (which\nsupports OIDC auth via --provenance).",
          "is_bot": false,
          "headline": "fix(release): use npm publish for OIDC trusted-publisher auth (#85)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T05:36:33Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "74fd586f26d0dffa8e8c27b2879bb7f8681272a0",
          "body": "* fix(stripe-checkout): resolve lint errors breaking CI\n\nReplace <a> tags with next/link <Link> for internal navigation and\nremove unnecessary `as any` cast in the Stripe proxy route.\n\n* prepare v0.5.0 release\n\nBump all packages to 0.5.0 and add changelog entry.",
          "is_bot": false,
          "headline": "prepare v0.5.0 release (#84)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T05:15:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "dc6fbf52dd345d6cd4187b2f78f09f88c12c9bd7",
          "body": "Replace <a> tags with next/link <Link> for internal navigation and\nremove unnecessary `as any` cast in the Stripe proxy route.",
          "is_bot": false,
          "headline": "fix(stripe-checkout): resolve lint errors breaking CI (#83)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T05:01:49Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "6801eddcded4eba441a2ff43c8057206fae562ed",
          "body": "* feat: add Stripe Checkout example with enriched API coverage\n\nAdd a full Stripe Checkout example (Next.js App Router, embedded emulator)\nthat exercises 7 SDK methods and handles 4 webhook event types: customer\ncreation before checkout, wildcard webhook subscription, multi-event webhook\nhandler, an\n[…]\ned support in\nthe adapter-next and CLI flows, and {CHECKOUT_SESSION_ID} template variable\nsubstitution in checkout session redirects.\n\n* fixes\n\n* fixes\n\n* fix: format 6 files to pass CI prettier check",
          "is_bot": false,
          "headline": "feat: add Stripe Checkout example (#82)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T04:49:29Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "343b061f858c54a086bb72af0587b01c7890bf96",
          "body": "* feat(web): add landing page, move docs to /docs\n\n* style: format landing page files",
          "is_bot": false,
          "headline": "feat(web): add landing page, move docs to /docs (#81)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T02:23:19Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "7fa8930d27372413deeb77050f1a21d76e961740",
          "body": "The email preview iframe used sandbox=\"\" which blocked all navigation,\nmaking buttons and links unclickable. Add allow-popups and\nallow-popups-to-escape-sandbox so links open in new tabs, and inject\n<base target=\"_blank\"> so links without an explicit target also work.",
          "is_bot": false,
          "headline": "fix(resend): make links clickable in email inbox preview (#68) (#80)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T01:54:14Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "1dc88b67f69ea2bf038254b8c0703478871c2a44",
          "body": "* feat(emulate): add portless integration and base URL override\n\nAdd --portless flag that auto-registers portless aliases for each\nservice, giving every emulator a trusted HTTPS URL\n(e.g. https://github.emulate.localhost) with no cert management.\nIf portless is not installed, the user is prompted to\n[…]\nh\nredirects, webhook URLs, and OIDC discovery to use the wrong origin\nwhen behind a proxy.\n\n* fix(portless): clean up registered aliases on partial failure\n\n* fixes\n\n* fixes\n\n* fixes\n\n* fixes\n\n* fixes",
          "is_bot": false,
          "headline": "feat(emulate): add portless integration and base URL override (#78)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-29T01:00:31Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "ffaa4852c20a212fd074181ee667dc35f450395e",
          "body": "Follow-up to #73. Adds the hd field to Google seed config\nexamples and explains the auto-derivation behavior for\nWorkspace vs consumer domains.",
          "is_bot": false,
          "headline": "docs(google): document hd claim in seed config (#79)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-28T23:43:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "499ba4f516f70a1c679c841a5c941215ebe3772b",
          "body": "Adds support for the Google Workspace `hd` (hosted domain) claim on\nissued ID tokens and the `/oauth2/v2/userinfo` response, and advertises\nit in the OIDC discovery document.\n\nBy default the claim is derived from the user's email domain, matching\nreal Google behavior for Workspace accounts. Consumer\n[…]\npace and omit\nthe claim. Configs can override the derived value by setting `hd` on a\nseeded user, or disable the claim by setting it to an empty string.\n\nCo-authored-by: Claude <noreply@anthropic.com>",
          "is_bot": false,
          "headline": "feat(google): add hd claim to ID tokens and userinfo (#73)",
          "author_name": "Georges Haidar",
          "author_login": "disintegrator",
          "committed_at": "2026-04-28T23:29:39Z",
          "body_truncated": true,
          "is_coding_agent": true
        },
        {
          "oid": "0740ba7fefbcfe7a6597ee6f703342fbc9b1ec08",
          "body": "`npm publish` leaves `workspace:*` literals in the published tarball,\nwhich npm consumers cannot resolve. Switch to `pnpm publish` so the\nprotocol is rewritten to the resolved version. Also pass\n`--no-git-checks` (publish runs from a built tree) and `--access public`\ndefensively (already in publishConfig but explicit on the CLI is safer).",
          "is_bot": false,
          "headline": "ci(release): use pnpm publish to resolve workspace protocol (#77)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-27T05:10:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "f1027340a4301506049562024fdf5f33f42c11aa",
          "body": "* Add release workflow with npm trusted publisher and provenance\n\nSingle-PR release process: bump version in packages/emulate, run\npnpm sync-versions, write changelog with release markers, merge to\nmain. CI compares versions to npm, publishes with --provenance\n(id-token: write), and creates a GitHub release from the changelog.\n\n* Deduplicate package list, fix concurrency syntax, add version sync check to CI",
          "is_bot": false,
          "headline": "Add release workflow with npm trusted publisher and provenance (#76)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-27T04:41:57Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fd685dbb009c6e42ec3b802072e517777a208233",
          "body": "* fix(aws): harden S3 emulator for official AWS SDK\n\nAdds a real-SDK E2E test suite (boots a loopback server, drives every\nS3 op through @aws-sdk/client-s3 with forcePathStyle, supports\nAWS_EMULATOR_E2E_URL to target any running emulator). The suite caught\nthree issues this PR also fixes:\n\n- Bucket-\n[…]\nmove `as never` cast in test helpers by typing app as Hono<AppEnv>\n- Add Last-Modified HTTP header (RFC 7231) to CopyObject response\n- Parallelize PutObject calls in pagination test with Promise.all()",
          "is_bot": false,
          "headline": "fix(aws): harden S3 emulator for official AWS SDK (#69)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-27T03:16:57Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "6aaa54fb0b41f37c4499059bbbb253b3133206f7",
          "body": "…at (#65)\n\nS3 routes now use root paths (GET /, PUT /:bucket, GET /:bucket/:key)\nmatching the real S3 wire protocol, so @aws-sdk/client-s3 works out of\nthe box with forcePathStyle. Legacy /s3/ prefixed paths are preserved as\nbackward-compatible aliases.\n\nAlso adds presigned POST uploads (POST /:bucket) with policy validation,\nListObjectsV2 pagination via continuation-token/start-after, and moves\nthe inspector UI to /_inspector so GET / is free for ListBuckets.",
          "is_bot": false,
          "headline": "fix(aws): make S3 emulator compatible with official AWS SDK wire form…",
          "author_name": "João Lucas",
          "author_login": "jlucaso1",
          "committed_at": "2026-04-17T13:43:59Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "93f3cee9e3c14fd1109a0ee0c0ca3c8ecc2f2dd3",
          "body": "* Add dynamic GitHub star count to docs header\n\nFetch stargazers_count from the GitHub API with 24h ISR revalidation\nand display it next to the GitHub icon in the site header.\n\n* Fix prettier formatting in github.ts\n\n* Fix prettier formatting across repo\n\n* Fix lint: use next/link for internal navigation in resend example",
          "is_bot": false,
          "headline": "Add dynamic GitHub star count to docs header (#64)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-09T07:23:10Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "0c0ef3fc8b890fddb4a290badf0745a8d62c52d9",
          "body": "* magic link example\n\n* update resend skill",
          "is_bot": false,
          "headline": "Add Resend magic link example and Resend skill (#51)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-07T22:59:48Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "df8eea3024cfffbd18de7cb249d7b946309880a5",
          "body": "* unify emulator UI design system, add type-check and format scripts\n\n- Migrate the AWS inspector UI from a standalone light theme to the shared\n  emulate design system (black/green terminal aesthetic, Geist fonts, emu-bar,\n  powered-by footer)\n- Add renderInspectorPage and renderFormPostPage helper\n[…]\nd design system\n- Add pnpm type-check (turbo-orchestrated tsc --noEmit across all packages)\n- Add pnpm format / pnpm format:check (prettier, ts/tsx files only)\n\n* fix types\n\n* update actions\n\n* format",
          "is_bot": false,
          "headline": "Unify emulator UI design system, add CI quality checks (#50)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-07T22:37:03Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "26301ebb7b36936227a1cc3dc6ecb914632e80b2",
          "body": "Add a Clerk authentication and user management emulator with OIDC/OAuth\nendpoints and Backend API so local and CI flows can test user, organization,\nmembership, and session integrations without real Clerk API keys.\n\nEndpoints:\n- OIDC discovery, JWKS (RS256), OAuth authorize/token/userinfo with PKCE\n\n[…]\nn with org claims\n\nJWT tokens include Clerk-specific claims: sub, sid, org_id, org_role,\norg_slug, org_permissions. All 55 tests passing.\n\nCo-authored-by: ctate <366502+ctate@users.noreply.github.com>",
          "is_bot": false,
          "headline": "feat: add Clerk emulator service package (#38)",
          "author_name": "Railly Hugo",
          "author_login": "Railly",
          "committed_at": "2026-04-07T22:28:47Z",
          "body_truncated": true,
          "is_coding_agent": false
        },
        {
          "oid": "bad02938b5d14834d6ed39a41bcb716c2ee5df6c",
          "body": "* feat(stripe): adds customer sessions\n\n* feat(stripe): add payment methods route\n\n* chore(stripe): keep docs changes scoped",
          "is_bot": false,
          "headline": "feat(stripe): add customer sessions and payment methods (#47)",
          "author_name": "tmm",
          "author_login": "tmm",
          "committed_at": "2026-04-07T22:09:29Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "ac358a0e28c673625db7f9096ff0fb8e09793010",
          "body": null,
          "is_bot": false,
          "headline": "upgrade turbo, add portless for examples (#49)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-07T21:55:03Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "fa167eeca55880877a8e529c7f272af0354f15c1",
          "body": "* fix: add dedicated README to each @emulators/* package\n\n* update docs",
          "is_bot": false,
          "headline": "fix: add dedicated README to each @emulators/* package (#45)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-02T19:24:07Z",
          "body_truncated": false,
          "is_coding_agent": false
        },
        {
          "oid": "51f455a503d18702b45f3d6f82cb17d1c973bc63",
          "body": null,
          "is_bot": false,
          "headline": "v0.4.0 (#44)",
          "author_name": "Chris Tate",
          "author_login": "ctate",
          "committed_at": "2026-04-02T17:31:56Z",
          "body_truncated": false,
          "is_coding_agent": false
        }
      ],
      "releases_count": 2,
      "commits_last_year": 153,
      "latest_release_at": "2026-07-19T15:57:04Z",
      "latest_release_tag": "v0.9.0",
      "releases_from_tags": false,
      "days_since_last_push": 5,
      "active_weeks_last_year": 15,
      "days_since_latest_release": 5,
      "mean_days_between_releases": 77
    },
    "community": {
      "has_readme": false,
      "has_license": false,
      "has_description": false,
      "has_contributing": false,
      "health_percentage": null,
      "has_issue_template": false,
      "has_code_of_conduct": false,
      "has_pull_request_template": false
    },
    "ecosystem": {
      "packages": [
        {
          "name": "@inbox-zero/emulate",
          "exists": true,
          "license": "Apache-2.0",
          "keywords": [
            "emulator",
            "mock",
            "api",
            "vercel",
            "github",
            "google",
            "oauth",
            "testing",
            "ci",
            "local-development"
          ],
          "ecosystem": "npm",
          "matches_repo": true,
          "registry_url": "https://www.npmjs.com/package/@inbox-zero/emulate",
          "is_deprecated": false,
          "latest_version": "0.9.0",
          "repository_url": "https://github.com/inbox-zero/emulate",
          "versions_count": 10,
          "total_downloads": null,
          "dependents_count": null,
          "deprecation_note": null,
          "maintainers_count": 1,
          "monthly_downloads": 9680,
          "first_published_at": "2026-03-24T20:54:20.605000Z",
          "latest_published_at": "2026-07-19T15:56:45.141000Z",
          "latest_version_yanked": null,
          "days_since_latest_publish": 5
        }
      ]
    },
    "popularity": {
      "forks": 0,
      "stars": 1,
      "watchers": 0,
      "fork_history": {
        "days": [],
        "complete": true,
        "collected": 0,
        "total_forks": 0
      },
      "star_history": null,
      "open_issues_and_prs": 0
    },
    "ai_readiness": {
      "has_nix": false,
      "example_dirs": [
        "examples"
      ],
      "has_llms_txt": false,
      "has_dockerfile": false,
      "has_mcp_signal": false,
      "bootstrap_files": [],
      "api_schema_files": [],
      "has_devcontainer": false,
      "typecheck_configs": [
        "apps/web/tsconfig.json",
        "examples/nextjs-embedded/tsconfig.json",
        "examples/nuxt-embedded/tsconfig.json",
        "examples/oauth/tsconfig.json",
        "examples/resend-magic-link/tsconfig.json",
        "examples/stripe-checkout/tsconfig.json",
        "examples/twilio-sms-verification/tsconfig.json",
        "examples/vercel-blob-sharing/tsconfig.json",
        "packages/@emulators/adapter-next/tsconfig.json",
        "packages/@emulators/adapter-nuxt/tsconfig.json",
        "packages/@emulators/apple/tsconfig.json",
        "packages/@emulators/aws/tsconfig.json",
        "packages/@emulators/clerk/tsconfig.json",
        "packages/@emulators/core/tsconfig.json",
        "packages/@emulators/github/tsconfig.json",
        "packages/@emulators/google/tsconfig.json",
        "packages/@emulators/linear/tsconfig.json",
        "packages/@emulators/microsoft/tsconfig.json",
        "packages/@emulators/mongoatlas/tsconfig.json",
        "packages/@emulators/okta/tsconfig.json",
        "packages/@emulators/resend/tsconfig.json",
        "packages/@emulators/slack/tsconfig.json",
        "packages/@emulators/stripe/tsconfig.json",
        "packages/@emulators/twilio/tsconfig.json",
        "packages/@emulators/vercel/tsconfig.json",
        "packages/emulate/tsconfig.json",
        "tsconfig.json"
      ],
      "toolchain_manifests": [],
      "largest_source_bytes": 175917,
      "source_files_sampled": 433,
      "oversized_source_files": 4,
      "agent_instruction_files": [
        "AGENTS.md",
        "apps/web/AGENTS.md",
        "apps/web/CLAUDE.md"
      ],
      "agent_instruction_max_bytes": 4585
    },
    "dependencies": {
      "manifests": [
        "package.json"
      ],
      "advisories": {
        "error": null,
        "scope": "published_package",
        "source": "osv",
        "findings": [],
        "collected": true,
        "malicious": [],
        "truncated": false,
        "by_severity": {},
        "advisory_count": 0,
        "affected_count": 0,
        "assessed_count": 3,
        "malicious_count": 0,
        "assessed_package": "npm:@inbox-zero/emulate@0.9.0",
        "unassessed_count": 0,
        "direct_affected_count": 0
      },
      "ecosystems": [
        "npm"
      ],
      "dependencies": [
        {
          "name": "@ai-sdk/react",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.0.118"
        },
        {
          "name": "@mdx-js/loader",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.1"
        },
        {
          "name": "@mdx-js/react",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.1.1"
        },
        {
          "name": "@next/mdx",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^16.2.0"
        },
        {
          "name": "@upstash/ratelimit",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.0.8"
        },
        {
          "name": "@upstash/redis",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.37.0"
        },
        {
          "name": "ai",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^6.0.116"
        },
        {
          "name": "bash-tool",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.3.15"
        },
        {
          "name": "class-variance-authority",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.7.1"
        },
        {
          "name": "clsx",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.1.1"
        },
        {
          "name": "geist",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.7.0"
        },
        {
          "name": "just-bash",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.14.0"
        },
        {
          "name": "lucide-react",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.577.0"
        },
        {
          "name": "next",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "16.2.0"
        },
        {
          "name": "next-themes",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^0.4.6"
        },
        {
          "name": "radix-ui",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.3"
        },
        {
          "name": "react",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.4"
        },
        {
          "name": "react-dom",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "19.2.4"
        },
        {
          "name": "remark-gfm",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.1"
        },
        {
          "name": "shiki",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^4.0.2"
        },
        {
          "name": "streamdown",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2.5.0"
        },
        {
          "name": "tailwind-merge",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^3.5.0"
        },
        {
          "name": "tailwindcss-animate",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.0.7"
        },
        {
          "name": "tw-animate-css",
          "manifest": "apps/web/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.4.0"
        },
        {
          "name": "commander",
          "manifest": "packages/emulate/package.json",
          "ecosystem": "npm",
          "version_constraint": "^14"
        },
        {
          "name": "picocolors",
          "manifest": "packages/emulate/package.json",
          "ecosystem": "npm",
          "version_constraint": "^1.1.1"
        },
        {
          "name": "yaml",
          "manifest": "packages/emulate/package.json",
          "ecosystem": "npm",
          "version_constraint": "^2"
        }
      ],
      "all_dependencies": {
        "error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
        "source": null,
        "packages": [],
        "collected": false,
        "truncated": false,
        "total_count": null,
        "direct_count": null,
        "indirect_count": null
      }
    },
    "maintainership": {
      "issues": {
        "open_prs": 0,
        "merged_prs": 11,
        "open_issues": 0,
        "closed_ratio": null,
        "closed_issues": 0,
        "closed_unmerged_prs": 3
      },
      "bus_factor": 1,
      "bot_contributors": 0,
      "top_contributors": [
        {
          "type": "User",
          "login": "ctate",
          "commits": 110,
          "avatar_url": "https://avatars.githubusercontent.com/u/366502?v=4"
        },
        {
          "type": "User",
          "login": "elie222",
          "commits": 31,
          "avatar_url": "https://avatars.githubusercontent.com/u/3090527?v=4"
        },
        {
          "type": "User",
          "login": "mvanhorn",
          "commits": 4,
          "avatar_url": "https://avatars.githubusercontent.com/u/455140?v=4"
        },
        {
          "type": "User",
          "login": "AmorosoDavid12",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/128603638?v=4"
        },
        {
          "type": "User",
          "login": "emersonlaurentino",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/10627086?v=4"
        },
        {
          "type": "User",
          "login": "disintegrator",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/678548?v=4"
        },
        {
          "type": "User",
          "login": "jonmumm",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/718391?v=4"
        },
        {
          "type": "User",
          "login": "jlucaso1",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/55464917?v=4"
        },
        {
          "type": "User",
          "login": "jk4235",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/18319040?v=4"
        },
        {
          "type": "User",
          "login": "Railly",
          "commits": 1,
          "avatar_url": "https://avatars.githubusercontent.com/u/51397083?v=4"
        }
      ],
      "contributors_sampled": 11,
      "top_contributor_share": 0.719
    },
    "quality_signals": {
      "has_ci": true,
      "has_tests": true,
      "ci_workflows": [
        "ci.yml",
        "release.yml"
      ],
      "has_docs_dir": false,
      "linter_configs": [
        "eslint.config.mjs"
      ],
      "has_editorconfig": false,
      "has_linter_config": true,
      "has_precommit_config": false
    },
    "security_signals": {
      "lockfiles": [
        "pnpm-lock.yaml"
      ],
      "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": null,
            "reason": "no pull request found",
            "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": 0,
            "reason": "Found 0/30 approved changesets -- score normalized to 0",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
          },
          {
            "name": "Contributors",
            "score": 6,
            "reason": "project has 2 contributing companies or organizations -- score normalized to 6",
            "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": 0,
            "reason": "no 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": 10,
            "reason": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
            "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": "no SAST tool detected",
            "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": 0,
            "reason": "85 existing vulnerabilities detected",
            "documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
          }
        ],
        "commit": "527d648924944dfc6fd1fab57274907304b53ac4",
        "ran_at": "2026-07-25T13:59:15Z",
        "aggregate_score": 3.2,
        "scorecard_version": "v5.5.0"
      },
      "has_codeql_workflow": false,
      "has_security_policy": false,
      "has_dependabot_config": false
    },
    "contribution_flow": {
      "collected": true,
      "ci_last_run_at": "2026-07-19T15:25:11Z",
      "oldest_open_prs": [],
      "last_merged_pr_at": "2026-05-03T12:48:36Z",
      "ci_last_conclusion": "FAILURE",
      "oldest_open_issues": []
    }
  },
  "config": {
    "disabled_metrics": [],
    "disabled_categories": [],
    "disabled_components": {}
  },
  "source": {
    "url": "https://github.com/inbox-zero/emulate",
    "host": "github.com",
    "name": "emulate",
    "owner": "inbox-zero"
  },
  "metrics": {
    "overall": {
      "key": "overall",
      "band": "moderate",
      "name": "Overall health",
      "note": null,
      "notes": [],
      "value": 54,
      "inputs": {
        "security": 46,
        "vitality": 81,
        "community": 26,
        "governance": 57,
        "engineering": 54
      },
      "components": []
    },
    "categories": [
      {
        "key": "vitality",
        "band": "good",
        "name": "Vitality",
        "value": 81,
        "weight": 0.22,
        "metrics": [
          {
            "key": "development_activity",
            "band": "good",
            "name": "Development activity",
            "note": null,
            "notes": [],
            "value": 74,
            "inputs": {
              "commits_last_year": 153,
              "human_commit_share": 1,
              "days_since_last_push": 5,
              "active_weeks_last_year": 15
            },
            "components": [
              {
                "key": "push_recency",
                "name": "Push recency",
                "detail": "last push 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "push_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_cadence",
                "name": "Commit cadence",
                "detail": "15/52 weeks with commits",
                "points": 10.4,
                "status": "partial",
                "details": [
                  {
                    "code": "commit_cadence_weeks",
                    "params": {
                      "weeks": 15
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "commit_volume",
                "name": "Commit volume",
                "detail": "153 commits in the last year",
                "points": 18,
                "status": "met",
                "details": [
                  {
                    "code": "commits_last_year",
                    "params": {
                      "count": 153
                    }
                  }
                ],
                "max_points": 18
              },
              {
                "key": "openssf_scorecard_maintained",
                "name": "OpenSSF Scorecard: Maintained",
                "detail": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 10,
                "status": "met",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "release_discipline",
            "band": "excellent",
            "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": 92,
            "inputs": {
              "releases_count": 2,
              "latest_release_tag": "v0.9.0",
              "releases_from_tags": false,
              "days_since_latest_release": 5,
              "mean_days_between_releases": 77
            },
            "components": [
              {
                "key": "ships_releases",
                "name": "Ships releases",
                "detail": "2 releases published",
                "points": 27,
                "status": "met",
                "details": [
                  {
                    "code": "releases_published",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "max_points": 27
              },
              {
                "key": "release_recency",
                "name": "Release recency",
                "detail": "latest release 5 days ago",
                "points": 36,
                "status": "met",
                "details": [
                  {
                    "code": "release_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 36
              },
              {
                "key": "release_cadence",
                "name": "Release cadence",
                "detail": "a release every ~77 days",
                "points": 19.8,
                "status": "partial",
                "details": [
                  {
                    "code": "release_cadence",
                    "params": {
                      "gap": 77
                    }
                  }
                ],
                "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": "unverified",
              "guards": [],
              "signals": [],
              "red_flag": false,
              "multiplier_pct": 100,
              "declared_reason": null,
              "unverified_reason": "repository_too_young",
              "unanswered_open_prs": null,
              "unanswered_open_issues": null,
              "days_since_last_merged_pr": null,
              "days_since_last_human_commit": null,
              "days_since_last_human_commit_is_floor": false
            },
            "components": [
              {
                "key": "project_is_still_maintained",
                "name": "Project is still maintained",
                "detail": "maintenance record not established from the collected data",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "abandonment_unverified",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          }
        ],
        "description": "Is the project alive — is code being written and are releases shipping?"
      },
      {
        "key": "community",
        "band": "critical",
        "name": "Community & Adoption",
        "value": 26,
        "weight": 0.18,
        "metrics": [
          {
            "key": "popularity",
            "band": "critical",
            "name": "Popularity & adoption",
            "note": null,
            "notes": [],
            "value": 1,
            "inputs": {
              "forks": 0,
              "stars": 1,
              "watchers": 0,
              "growth_state": "unverified",
              "growth_factor_pct": 100,
              "growth_unverified_reason": "no_history"
            },
            "components": [
              {
                "key": "stars",
                "name": "Stars",
                "detail": "1 stars",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "stars",
                    "params": {
                      "count": 1
                    }
                  }
                ],
                "max_points": 60
              },
              {
                "key": "forks",
                "name": "Forks",
                "detail": "0 forks",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "forks",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "watchers",
                "name": "Watchers",
                "detail": "0 watchers",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "watchers",
                    "params": {
                      "count": 0
                    }
                  }
                ],
                "max_points": 15
              }
            ]
          },
          {
            "key": "community_health",
            "band": "critical",
            "name": "Community health",
            "note": null,
            "notes": [],
            "value": 25,
            "inputs": {
              "has_readme": false,
              "has_license": false,
              "has_contributing": false,
              "has_issue_template": false,
              "has_code_of_conduct": false,
              "has_pull_request_template": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 22.5
              },
              {
                "key": "license",
                "name": "License",
                "detail": "recognized license (Apache-2.0)",
                "points": 22.5,
                "status": "met",
                "details": [
                  {
                    "code": "license_standard",
                    "params": {}
                  },
                  {
                    "code": "license_spdx",
                    "params": {
                      "spdx": "Apache-2.0"
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributing_guide",
                "name": "CONTRIBUTING guide",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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": "moderate",
            "name": "Ecosystem adoption (downloads)",
            "note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "registry_dependents"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 66,
            "inputs": {
              "packages": [
                "@inbox-zero/emulate"
              ],
              "dependents": null,
              "ecosystems": "npm",
              "total_downloads": null,
              "monthly_downloads": 9680
            },
            "components": [
              {
                "key": "monthly_downloads",
                "name": "Monthly downloads",
                "detail": "9,680 downloads/month across npm",
                "points": 53.1,
                "status": "partial",
                "details": [
                  {
                    "code": "downloads_monthly",
                    "params": {
                      "count": 9680,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 80
              },
              {
                "key": "registry_dependents",
                "name": "Registry dependents",
                "detail": "not reported by this ecosystem",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "not_reported_by_this_ecosystem",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          }
        ],
        "description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
      },
      {
        "key": "governance",
        "band": "moderate",
        "name": "Sustainability & Governance",
        "value": 57,
        "weight": 0.24,
        "metrics": [
          {
            "key": "maintainer_resilience",
            "band": "at_risk",
            "name": "Maintainer resilience (bus factor)",
            "note": null,
            "notes": [],
            "value": 35,
            "inputs": {
              "bus_factor": 1,
              "contributors_sampled": 11,
              "top_contributor_share": 0.719
            },
            "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 72% of commits",
                "points": 6.3,
                "status": "partial",
                "details": [
                  {
                    "code": "top_contributor_share",
                    "params": {
                      "share": 72
                    }
                  }
                ],
                "max_points": 22.5
              },
              {
                "key": "contributor_breadth",
                "name": "Contributor breadth",
                "detail": "11 contributors",
                "points": 13.5,
                "status": "met",
                "details": [
                  {
                    "code": "contributors_sampled",
                    "params": {
                      "count": 11
                    }
                  }
                ],
                "max_points": 13.5
              },
              {
                "key": "openssf_scorecard_contributors",
                "name": "OpenSSF Scorecard: Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 6,
                "status": "partial",
                "details": [],
                "max_points": 10
              }
            ]
          },
          {
            "key": "responsiveness",
            "band": "moderate",
            "name": "Issue & PR responsiveness",
            "note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "issue_resolution"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 57,
            "inputs": {
              "merged_prs": 11,
              "open_issues": 0,
              "closed_issues": 0,
              "issue_closed_ratio": null,
              "closed_unmerged_prs": 3
            },
            "components": [
              {
                "key": "issue_resolution",
                "name": "Issue resolution",
                "detail": "no issues or no data",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_issues_or_data",
                    "params": {}
                  }
                ],
                "max_points": 46.75
              },
              {
                "key": "pr_acceptance",
                "name": "PR acceptance",
                "detail": "11/14 decided PRs merged",
                "points": 30.1,
                "status": "partial",
                "details": [
                  {
                    "code": "decided_prs_merged",
                    "params": {
                      "merged": 11,
                      "decided": 14
                    }
                  }
                ],
                "max_points": 38.25
              },
              {
                "key": "openssf_scorecard_code_review",
                "name": "OpenSSF Scorecard: Code-Review",
                "detail": "Found 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 15
              }
            ]
          },
          {
            "key": "stewardship",
            "band": "moderate",
            "name": "Ownership & stewardship",
            "note": null,
            "notes": [],
            "value": 50,
            "inputs": {
              "followers": 18,
              "owner_type": "Organization",
              "is_verified": null,
              "owner_login": "inbox-zero",
              "public_repos": 5,
              "account_age_days": 900
            },
            "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": "18 followers of inbox-zero",
                "points": 9.2,
                "status": "partial",
                "details": [
                  {
                    "code": "owner_followers",
                    "params": {
                      "count": 18,
                      "login": "inbox-zero"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "track_record",
                "name": "Track record",
                "detail": "5 public repos, account ~2 yr old",
                "points": 10.6,
                "status": "partial",
                "details": [
                  {
                    "code": "public_repos",
                    "params": {
                      "count": 5
                    }
                  },
                  {
                    "code": "account_age_years",
                    "params": {
                      "years": 2
                    }
                  }
                ],
                "max_points": 25
              }
            ]
          },
          {
            "key": "package_maintenance",
            "band": "excellent",
            "name": "Package maintenance",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "packages": [
                "@inbox-zero/emulate"
              ],
              "ecosystems": "npm",
              "any_deprecated": false,
              "min_days_since_publish": 5
            },
            "components": [
              {
                "key": "published_resolvable",
                "name": "Published & resolvable",
                "detail": "1 package(s) on npm",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "packages_published",
                    "params": {
                      "count": 1,
                      "ecosystems": "npm"
                    }
                  }
                ],
                "max_points": 25
              },
              {
                "key": "publish_recency",
                "name": "Publish recency",
                "detail": "latest publish 5 days ago",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "publish_recency",
                    "params": {
                      "days": 5
                    }
                  }
                ],
                "max_points": 35
              },
              {
                "key": "version_history",
                "name": "Version history",
                "detail": "10 published versions",
                "points": 20,
                "status": "met",
                "details": [
                  {
                    "code": "published_versions",
                    "params": {
                      "count": 10
                    }
                  }
                ],
                "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": 54,
        "weight": 0.2,
        "metrics": [
          {
            "key": "engineering_practices",
            "band": "good",
            "name": "Engineering practices",
            "note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "openssf_scorecard_ci_tests"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 80,
            "inputs": {
              "has_ci": true,
              "has_tests": true,
              "has_editorconfig": false,
              "has_linter_config": true,
              "has_precommit_config": false
            },
            "components": [
              {
                "key": "ci_workflows",
                "name": "CI workflows",
                "detail": "2 workflow(s)",
                "points": 24,
                "status": "met",
                "details": [
                  {
                    "code": "ci_workflows",
                    "params": {
                      "count": 2
                    }
                  }
                ],
                "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": "eslint.config.mjs",
                "points": 16,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "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": 0,
                "status": "missed",
                "details": [],
                "max_points": 6.4
              },
              {
                "key": "openssf_scorecard_ci_tests",
                "name": "OpenSSF Scorecard: CI-Tests",
                "detail": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "max_points": 20
              }
            ]
          },
          {
            "key": "documentation",
            "band": "critical",
            "name": "Documentation",
            "note": null,
            "notes": [],
            "value": 15,
            "inputs": {
              "topics": [],
              "has_wiki": false,
              "homepage": "https://emulate.dev",
              "has_readme": false,
              "has_docs_dir": false,
              "has_description": false
            },
            "components": [
              {
                "key": "readme",
                "name": "README",
                "detail": null,
                "points": 0,
                "status": "missed",
                "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://emulate.dev",
                "points": 15,
                "status": "met",
                "details": [],
                "max_points": 15
              },
              {
                "key": "repository_description",
                "name": "Repository description",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 10
              },
              {
                "key": "topics",
                "name": "Topics",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "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": 46,
        "weight": 0.16,
        "metrics": [
          {
            "key": "security_posture",
            "band": "at_risk",
            "name": "Security posture",
            "note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "ci_tests",
                    "packaging",
                    "signed_releases"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              }
            ],
            "value": 32,
            "inputs": {
              "source": "openssf_scorecard",
              "checks_evaluated": 15,
              "scorecard_version": "v5.5.0",
              "checks_inconclusive": 3,
              "scorecard_aggregate": 3.2
            },
            "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": "no pull request found",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "no_data",
                    "params": {}
                  }
                ],
                "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 0/30 approved changesets -- score normalized to 0",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              },
              {
                "key": "contributors",
                "name": "Contributors",
                "detail": "project has 2 contributing companies or organizations -- score normalized to 6",
                "points": 1.5,
                "status": "partial",
                "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": "no update tool detected",
                "points": 0,
                "status": "missed",
                "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": "30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
                "points": 7.5,
                "status": "met",
                "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": "no SAST tool detected",
                "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": "85 existing vulnerabilities detected",
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 7.5
              }
            ]
          },
          {
            "key": "dependency_advisories",
            "band": "excellent",
            "name": "Dependency advisories",
            "note": "Excluded from scoring (no data or not applicable): No advisories left outstanding. Remaining weights renormalized. Matched the npm:@inbox-zero/emulate@0.9.0 runtime dependency closure — what installing the published package pulls in — 3 packages. Reachability is not analyzed.",
            "notes": [
              {
                "code": "excluded_no_data",
                "params": {
                  "components": [
                    "no_advisories_left_outstanding"
                  ]
                }
              },
              {
                "code": "weights_renormalized",
                "params": {}
              },
              {
                "code": "advisories_scope_published",
                "params": {
                  "package": "npm:@inbox-zero/emulate@0.9.0",
                  "assessed": 3
                }
              },
              {
                "code": "advisories_reachability",
                "params": {}
              }
            ],
            "value": 100,
            "inputs": {
              "source": "osv",
              "advisories": 0,
              "affected_packages": 0,
              "assessed_packages": 3,
              "unassessed_packages": 0,
              "affected_by_severity": "none",
              "direct_affected_packages": 0
            },
            "components": [
              {
                "key": "direct_dependencies_free_of_known_advisories",
                "name": "Direct dependencies free of known advisories",
                "detail": "no direct dependency carries a known advisory",
                "points": 35,
                "status": "met",
                "details": [
                  {
                    "code": "no_direct_advisories",
                    "params": {}
                  }
                ],
                "max_points": 35
              },
              {
                "key": "indirect_dependencies_free_of_known_advisories",
                "name": "Indirect dependencies free of known advisories",
                "detail": "no indirect dependency carries a known advisory",
                "points": 25,
                "status": "met",
                "details": [
                  {
                    "code": "no_indirect_advisories",
                    "params": {}
                  }
                ],
                "max_points": 25
              },
              {
                "key": "no_advisories_left_outstanding",
                "name": "No advisories left outstanding",
                "detail": "no advisory carries a publication date",
                "points": 0,
                "status": "excluded",
                "details": [
                  {
                    "code": "advisories_no_publication_date",
                    "params": {}
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "malicious_dependencies",
            "band": "excellent",
            "name": "Malicious dependencies",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "source": "osv",
              "meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
              "packages": [],
              "red_flag": false,
              "assessed_packages": 3,
              "malicious_packages": 0,
              "direct_malicious_packages": 0,
              "withdrawn_malicious_packages": 0,
              "installable_malicious_packages": 0
            },
            "components": [
              {
                "key": "no_dependency_reported_as_a_malicious_package",
                "name": "No dependency reported as a malicious package",
                "detail": "no dependency is reported as a malicious package",
                "points": 100,
                "status": "met",
                "details": [
                  {
                    "code": "no_malicious_dependencies",
                    "params": {}
                  }
                ],
                "max_points": 100
              }
            ]
          },
          {
            "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": 12
            },
            "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": "good",
        "name": "AI Readiness",
        "value": 70,
        "weight": 0,
        "metrics": [
          {
            "key": "ai_agent_context",
            "band": "excellent",
            "name": "Agent context & guidance",
            "note": null,
            "notes": [],
            "value": 85,
            "inputs": {
              "has_llms_txt": false,
              "legible_history_share": 0.99,
              "agent_instruction_files": [
                "AGENTS.md",
                "apps/web/AGENTS.md",
                "apps/web/CLAUDE.md"
              ],
              "agent_instruction_max_bytes": 4585
            },
            "components": [
              {
                "key": "agent_instructions",
                "name": "Agent instructions",
                "detail": "AGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "AGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md"
                    }
                  }
                ],
                "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": "99 of 100 human commits state their intent (structured subject or explanatory body)",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "legible_history",
                    "params": {
                      "legible": 99,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          },
          {
            "key": "ai_verify_loop",
            "band": "moderate",
            "name": "Verify loop (build / test / typecheck)",
            "note": null,
            "notes": [],
            "value": 60,
            "inputs": {
              "has_nix": false,
              "has_tests": true,
              "lockfiles": [
                "pnpm-lock.yaml"
              ],
              "has_dockerfile": false,
              "typed_language": true,
              "bootstrap_files": [],
              "has_devcontainer": false,
              "has_linter_config": true,
              "typecheck_configs": [
                "apps/web/tsconfig.json",
                "examples/nextjs-embedded/tsconfig.json",
                "examples/nuxt-embedded/tsconfig.json",
                "examples/oauth/tsconfig.json",
                "examples/resend-magic-link/tsconfig.json",
                "examples/stripe-checkout/tsconfig.json",
                "examples/twilio-sms-verification/tsconfig.json",
                "examples/vercel-blob-sharing/tsconfig.json",
                "packages/@emulators/adapter-next/tsconfig.json",
                "packages/@emulators/adapter-nuxt/tsconfig.json",
                "packages/@emulators/apple/tsconfig.json",
                "packages/@emulators/aws/tsconfig.json",
                "packages/@emulators/clerk/tsconfig.json",
                "packages/@emulators/core/tsconfig.json",
                "packages/@emulators/github/tsconfig.json",
                "packages/@emulators/google/tsconfig.json",
                "packages/@emulators/linear/tsconfig.json",
                "packages/@emulators/microsoft/tsconfig.json",
                "packages/@emulators/mongoatlas/tsconfig.json",
                "packages/@emulators/okta/tsconfig.json",
                "packages/@emulators/resend/tsconfig.json",
                "packages/@emulators/slack/tsconfig.json",
                "packages/@emulators/stripe/tsconfig.json",
                "packages/@emulators/twilio/tsconfig.json",
                "packages/@emulators/vercel/tsconfig.json",
                "packages/emulate/tsconfig.json",
                "tsconfig.json"
              ],
              "agent_commit_share": 0.03,
              "toolchain_manifests": [],
              "dependency_bot_commit_share": 0
            },
            "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": "eslint.config.mjs",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "eslint.config.mjs"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "static_type_checking",
                "name": "Static type checking",
                "detail": "apps/web/tsconfig.json, examples/nextjs-embedded/tsconfig.json, examples/nuxt-embedded/tsconfig.json, examples/oauth/tsconfig.json, examples/resend-magic-link/tsconfig.json, examples/stripe-checkout/tsconfig.json, examples/twilio-sms-verification/tsconfig.json, examples/vercel-blob-sharing/tsconfig.json, packages/@emulators/adapter-next/tsconfig.json, packages/@emulators/adapter-nuxt/tsconfig.json, packages/@emulators/apple/tsconfig.json, packages/@emulators/aws/tsconfig.json, packages/@emulators/clerk/tsconfig.json, packages/@emulators/core/tsconfig.json, packages/@emulators/github/tsconfig.json, packages/@emulators/google/tsconfig.json, packages/@emulators/linear/tsconfig.json, packages/@emulators/microsoft/tsconfig.json, packages/@emulators/mongoatlas/tsconfig.json, packages/@emulators/okta/tsconfig.json, packages/@emulators/resend/tsconfig.json, packages/@emulators/slack/tsconfig.json, packages/@emulators/stripe/tsconfig.json, packages/@emulators/twilio/tsconfig.json, packages/@emulators/vercel/tsconfig.json, packages/emulate/tsconfig.json, tsconfig.json",
                "points": 11,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "apps/web/tsconfig.json, examples/nextjs-embedded/tsconfig.json, examples/nuxt-embedded/tsconfig.json, examples/oauth/tsconfig.json, examples/resend-magic-link/tsconfig.json, examples/stripe-checkout/tsconfig.json, examples/twilio-sms-verification/tsconfig.json, examples/vercel-blob-sharing/tsconfig.json, packages/@emulators/adapter-next/tsconfig.json, packages/@emulators/adapter-nuxt/tsconfig.json, packages/@emulators/apple/tsconfig.json, packages/@emulators/aws/tsconfig.json, packages/@emulators/clerk/tsconfig.json, packages/@emulators/core/tsconfig.json, packages/@emulators/github/tsconfig.json, packages/@emulators/google/tsconfig.json, packages/@emulators/linear/tsconfig.json, packages/@emulators/microsoft/tsconfig.json, packages/@emulators/mongoatlas/tsconfig.json, packages/@emulators/okta/tsconfig.json, packages/@emulators/resend/tsconfig.json, packages/@emulators/slack/tsconfig.json, packages/@emulators/stripe/tsconfig.json, packages/@emulators/twilio/tsconfig.json, packages/@emulators/vercel/tsconfig.json, packages/emulate/tsconfig.json, tsconfig.json"
                    }
                  }
                ],
                "max_points": 11
              },
              {
                "key": "reproducible_environment",
                "name": "Reproducible environment",
                "detail": "lockfile",
                "points": 10,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "lockfile"
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "demonstrated_agent_practice",
                "name": "Demonstrated agent practice",
                "detail": "3 of the last 100 commits agent-authored or agent-credited",
                "points": 6,
                "status": "partial",
                "details": [
                  {
                    "code": "agent_authored_commits",
                    "params": {
                      "count": 3,
                      "sampled": 100
                    }
                  }
                ],
                "max_points": 10
              },
              {
                "key": "automated_maintenance",
                "name": "Automated maintenance",
                "detail": "no automated dependency updates observed",
                "points": 0,
                "status": "missed",
                "details": [
                  {
                    "code": "no_dependency_automation",
                    "params": {}
                  }
                ],
                "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": "excellent",
            "name": "Code legibility for models",
            "note": null,
            "notes": [],
            "value": 100,
            "inputs": {
              "primary_language": "TypeScript",
              "largest_source_bytes": 175917,
              "source_files_sampled": 433,
              "oversized_source_files": 4
            },
            "components": [
              {
                "key": "type_checkable_code",
                "name": "Type-checkable code",
                "detail": "TypeScript (statically typed)",
                "points": 45,
                "status": "met",
                "details": [
                  {
                    "code": "statically_typed_language",
                    "params": {
                      "language": "TypeScript"
                    }
                  }
                ],
                "max_points": 45
              },
              {
                "key": "manageable_file_sizes",
                "name": "Manageable file sizes",
                "detail": "4/433 source files over 60KB",
                "points": 54.5,
                "status": "partial",
                "details": [
                  {
                    "code": "oversized_source_files",
                    "params": {
                      "kb": 60,
                      "sampled": 433,
                      "oversized": 4
                    }
                  }
                ],
                "max_points": 55
              }
            ]
          },
          {
            "key": "ai_interfaces",
            "band": "at_risk",
            "name": "Machine-readable interfaces",
            "note": null,
            "notes": [],
            "value": 40,
            "inputs": {
              "example_dirs": [
                "examples"
              ],
              "has_mcp_signal": false,
              "api_schema_files": []
            },
            "components": [
              {
                "key": "api_schema_openapi_graphql_proto",
                "name": "API schema (OpenAPI/GraphQL/proto)",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 40
              },
              {
                "key": "mcp_server",
                "name": "MCP server",
                "detail": null,
                "points": 0,
                "status": "missed",
                "details": [],
                "max_points": 20
              },
              {
                "key": "runnable_examples",
                "name": "Runnable examples",
                "detail": "examples",
                "points": 40,
                "status": "met",
                "details": [
                  {
                    "code": "file_list",
                    "params": {
                      "files": "examples"
                    }
                  }
                ],
                "max_points": 40
              }
            ]
          }
        ],
        "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",
    "Community profile unavailable",
    "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
  ],
  "report_type": "repository",
  "generated_at": "2026-07-25T13:59:23.856200Z",
  "schema_version": "0.27.0",
  "badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/i/inbox-zero/emulate.svg",
  "full_name": "inbox-zero/emulate",
  "license_state": "standard",
  "license_spdx": "Apache-2.0"
}

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

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

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