Öffentliches Register
Software-GesundheitsberichtSchema 0.27.0 · Metriken 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 Stern⑂ 0 Forksseit März 2026ForkAuf GitHub ansehen ↗

inbox-zero/emulate erreicht einen Gesundheitsindex von 54 von 100 und liegt damit im Bereich Mittel. Am stärksten schneidet es bei Vitality (81/100) ab, am schwächsten bei Community & Adoption (26/100). Zuletzt vor 5 Tagen aktualisiert. Ein einzelner Mitwirkender trägt den Großteil der jüngsten Arbeit.

54
gesamt / 100
Mittel

Software-Gesundheitsindex

Metriken werden auf einer Skala von 1–100 in gewichtete Kategorien gruppiert. Der Gesamtwert beginnt als ihr Mittel; sobald öffentliche Evidenz die Richtlinie für Hochrisikojurisdiktionen auslöst, wird die Bewertung angepasst und erhält die Obergrenze 49 (Gefährdet). AI Readiness liegt außerhalb.

54
Exzellent85-100Vorbildlich; erfüllt im Wesentlichen alle geprüften Kriterien
Gut70-84Gesund; geringfügige Lücken
Mittel50-69Akzeptabel mit deutlichen Lücken; Überprüfung empfohlen
Gefährdet30-49Erhebliche Schwächen; eine Übernahme erfordert Vorsicht
Kritisch1-29Schwerwiegende Probleme (aufgegeben, nur ein Maintainer, keine Hygiene)
VitalitätCommunity &VerbreitungNachhaltigkeit &GovernanceEngineering-QualitätSicherheitAI Readiness

Bewertungsprofil

Jede Achse ist eine Kategorie. Die Form zählt mehr als der Durchschnitt — ein gesundes Projekt füllt die gesamte Fläche, während ein Profil aus Spitzen und Kratern bedeutet, dass Stärke in einer Dimension Risiken in einer anderen verdeckt.

Eigentümerschaft

Inbox ZeroOrganisation
18 Follower5 öffentliche Reposseit Feb. 2024

Dieses Repository wird von einer Organisation getragen — geteilte, rechenschaftspflichtige Trägerschaft, die jeden einzelnen Maintainer überdauern kann.

Paket-Ökosysteme

RegistryPaketVersionDownloads / MonatVersionenZuletzt veröffentlichtTags
npm@inbox-zero/emulate0.9.09.68010vor 5 Tagenemulatormockapivercelgithubgoogleoauthtestingcilocal-development

Metriken nach Kategorie

Vitalität

Lebt das Projekt — wird Code geschrieben und werden Releases ausgeliefert?

81Gut · 22 % des Gesamtindex
Wie die Bewertung erfolgt
36/36Push-Aktualität — letzter Push vor 5 Tagen
10.4/36Commit-Rhythmus — 15/52 Wochen mit Commits
18/18Commit-Volumen — 153 Commits im letzten Jahr
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Verwendete Eingangsdaten
commits_last_year153
human_commit_share1
days_since_last_push5
active_weeks_last_year15
Wie die Bewertung erfolgt
27/27Liefert Releases aus — 2 Releases veröffentlicht
36/36Release-Aktualität — letztes Release vor 5 Tagen
19.8/27Release-Rhythmus — ein Release etwa alle 77 Tage
0/10OpenSSF Scorecard: Signed-Releases — keine Daten
Verwendete Eingangsdaten
releases_count2
latest_release_tagv0.9.0
releases_from_tagsnein
days_since_latest_release5
mean_days_between_releases77
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: Signed-Releases. Die verbleibenden Gewichte wurden renormalisiert.

Community & Verbreitung

Hat das Projekt Nutzer, Downloads, Aufmerksamkeit und ein einladendes Umfeld für Beitragende?

26Kritisch · 18 % des Gesamtindex
Wie die Bewertung erfolgt
0/60Stars — 1 Stars
0/25Forks — 0 Forks
0/15Watcher — 0 Watcher
Verwendete Eingangsdaten
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Wie die Bewertung erfolgt
0/22.5README
22.5/22.5Lizenz — anerkannte Lizenz (Apache-2.0)
0/18CONTRIBUTING-Leitfaden
0/13.5Verhaltenskodex
0/7.2Issue-Vorlage
0/6.3PR-Vorlage
Verwendete Eingangsdaten
has_readmenein
has_licensenein
has_contributingnein
has_issue_templatenein
has_code_of_conductnein
has_pull_request_templatenein
Wie die Bewertung erfolgt
53.1/80Downloads pro Monat — 9.680 Downloads/Monat über npm
0/20Abhängige in der Registry — von diesem Ökosystem nicht ausgewiesen
Verwendete Eingangsdaten
packages@inbox-zero/emulate
dependents
ecosystemsnpm
total_downloads
monthly_downloads9.680
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Abhängige in der Registry. Die verbleibenden Gewichte wurden renormalisiert.

Nachhaltigkeit & Governance

Überdauert das Projekt die Menschen, die es tragen — Bus-Faktor, Reaktionsfähigkeit, Trägerschaft und Paketpflege?

57Mittel · 24 % des Gesamtindex
Wie die Bewertung erfolgt
9/54Bus-Faktor — 1 Beitragende decken die Hälfte aller Commits ab
6.3/22.5Commit-Verteilung — wichtigste beitragende Person verfasste 72 % der Commits
13.5/13.5Breite der Beitragenden — 11 Beitragende
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Verwendete Eingangsdaten
bus_factor1
contributors_sampled11
top_contributor_share0,719
Wie die Bewertung erfolgt
0/46.8Issue-Lösungsquote — keine Issues oder keine Daten
30.1/38.3PR-Annahme — 11/14 entschiedene PRs gemergt
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Verwendete Eingangsdaten
merged_prs11
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs3
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Issue-Lösungsquote. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
30/30Organisatorische Trägerschaft — im Besitz einer Organisation
0/20Verifizierte Domain
9.2/25Reichweite des Inhabers — 18 Follower von inbox-zero
10.6/25Kontohistorie — 5 öffentliche Repos, Kontoalter ca. 2 Jahre
Verwendete Eingangsdaten
followers18
owner_typeOrganization
is_verified
owner_logininbox-zero
public_repos5
account_age_days900

Paketpflege

100Exzellent
Wie die Bewertung erfolgt
25/25Veröffentlicht & auflösbar — 1 Paket(e) auf npm
35/35Veröffentlichungsaktualität — letzte Veröffentlichung vor 5 Tagen
20/20Versionshistorie — 10 veröffentlichte Versionen
20/20Nicht veraltet — aktiv, nicht veraltet oder zurückgezogen
Verwendete Eingangsdaten
packages@inbox-zero/emulate
ecosystemsnpm
any_deprecatednein
min_days_since_publish5

Engineering-Qualität

Sind grundlegende Engineering- und Dokumentationspraktiken vorhanden?

54Mittel · 20 % des Gesamtindex
Wie die Bewertung erfolgt
24/24CI-Workflows — 2 Workflow(s)
24/24Tests vorhanden
16/16Linter-Konfiguration — eslint.config.mjs
0/9.6Pre-Commit-Hooks
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — keine Daten
Verwendete Eingangsdaten
has_cija
has_testsja
has_editorconfignein
has_linter_configja
has_precommit_confignein
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): OpenSSF Scorecard: CI-Tests. Die verbleibenden Gewichte wurden renormalisiert.

Dokumentation

15Kritisch
Wie die Bewertung erfolgt
0/30README
0/25Dokumentationsverzeichnis
15/15Dokumentations-/Homepage-Site — https://emulate.dev
0/10Repository-Beschreibung
0/10Topics
0/10Wiki
Verwendete Eingangsdaten
topics
has_wikinein
homepagehttps://emulate.dev
has_readmenein
has_docs_dirnein
has_descriptionnein

Sicherheit

Sind die sichtbaren Sicherheits- und Lieferkettenpraktiken belastbar, ohne ungeklärte Exposition gegenüber Hochrisikojurisdiktionen?

46Gefährdet · 16 % des Gesamtindex

Sicherheitslage

32Gefährdet
Wie die Bewertung erfolgt
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 — keine Daten
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.5Lizenz — 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 — keine Daten
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 — keine Daten
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 85 existing vulnerabilities detected
Verwendete Eingangsdaten
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,2
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): ci_tests, packaging, signed_releases. Die verbleibenden Gewichte wurden renormalisiert.
Wie die Bewertung erfolgt
35/35Direkte Abhängigkeiten ohne bekannte Advisories — keine direkte Abhängigkeit trägt ein bekanntes Advisory
25/25Indirekte Abhängigkeiten ohne bekannte Advisories — keine indirekte Abhängigkeit trägt ein bekanntes Advisory
0/40Keine offenen Advisories — kein Advisory trägt ein Veröffentlichungsdatum
Verwendete Eingangsdaten
sourceosv
advisories0
affected_packages0
assessed_packages3
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Von der Bewertung ausgeschlossen (keine Daten oder nicht anwendbar): Keine offenen Advisories. Die verbleibenden Gewichte wurden renormalisiert. Abgeglichen wurde die Laufzeit-Abhängigkeitshülle von npm:@inbox-zero/emulate@0.9.0 — das, was die Installation des veröffentlichten Pakets nach sich zieht — mit 3 Paketen. Erreichbarkeit wird nicht analysiert.

AI Readiness

Wie gut ist das Repository dafür ausgestattet, mit KI-Coding-Agenten entwickelt und gepflegt zu werden? Ein unabhängiges, experimentelles Badge — Gewicht 0,0, es wird eigenständig ausgewiesen und verändert den Gesamt-Gesundheitswert nicht.

70Gut · 0 % des Gesamtindex
Wie die Bewertung erfolgt
45/45Agentenanweisungen — AGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md
0/15Maschinenlesbare Doku (llms.txt)
40/40Lesbare Commit-Historie — 99 von 100 menschlichen Commits benennen ihre Absicht (strukturierter Betreff oder erläuternder Text)
Verwendete Eingangsdaten
has_llms_txtnein
legible_history_share0,99
agent_instruction_filesAGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md
agent_instruction_max_bytes4.585
Wie die Bewertung erfolgt
0/18Bootstrap mit einem Befehl
22/22Automatisierte Tests
11/11Lint-/Format-Konfiguration — eslint.config.mjs
11/11Statische Typprüfung — 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/10Reproduzierbare Umgebung — lockfile
6/10Belegte Agentenpraxis — 3 der letzten 100 Commits von Agenten verfasst oder ihnen zugeschrieben
0/8Automatisierte Wartung — keine automatisierten Abhängigkeits-Updates beobachtet
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Verwendete Eingangsdaten
has_nixnein
has_testsja
lockfilespnpm-lock.yaml
has_dockerfilenein
typed_languageja
bootstrap_files
has_devcontainernein
has_linter_configja
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
Wie die Bewertung erfolgt
45/45Typprüfbarer Code — TypeScript (statisch typisiert)
54.5/55Handhabbare Dateigrößen — 4/433 Quelldateien über 60 KB
Verwendete Eingangsdaten
primary_languageTypeScript
largest_source_bytes175.917
source_files_sampled433
oversized_source_files4
Wie die Bewertung erfolgt
0/40API-Schema (OpenAPI/GraphQL/proto)
0/20MCP-Server
40/40Lauffähige Beispiele — examples
Verwendete Eingangsdaten
example_dirsexamples
has_mcp_signalnein
api_schema_files

Eckdaten

1GitHub-Sterne
11Mitwirkende
153Commits, letzte 12 Monate
5Tage seit letztem Push
2Releases
1Bus-Faktor
0offene Issues
npmPaket-Ökosysteme

Warnungen zur Datenerhebung

  • 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

Weitere Details

OpenSSF Scorecard 3.2 / 10
3.2Gesamtwert

Unabhängige, werkzeugneutrale Sicherheitsbewertung durch das quelloffene OpenSSF Scorecard. Jede Prüfung honoriert eine Sicherheits-Praxis, nicht das Werkzeug eines bestimmten Anbieters. Prüfungen, die Scorecard nicht ermitteln konnte, sind mit k. A. markiert und vom Sicherheitswert ausgeschlossen (nie als null gezählt).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
k. A.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
k. A.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
k. A.Signed-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities85 existing vulnerabilities detected
Direkte Abhängigkeiten 27
RegistryPaketVersionsvorgabeManifest
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
Alle Abhängigkeiten nicht erhoben

Der aufgelöste Abhängigkeitssatz konnte für diesen Bericht nicht erhoben werden: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Abhängigkeits-Advisories 0

Die Installation von npm:@inbox-zero/emulate@0.9.0 zieht 3 Pakete nach sich, direkt und transitiv: 0 tragen bekannte Advisories, davon 0 direkte Abhängigkeiten.

Keine bekannten Advisories betreffen die bewerteten Abhängigkeiten.

Ein Advisory bedeutet, dass die im Abhängigkeitsgraphen erfasste Version in den betroffenen Bereich eines Advisories fällt. Erreichbarkeit wird nicht analysiert, und der Graph enthält Entwicklungs- und Test-Pins — ein Fund kann das Werkzeug betreffen und nicht die ausgelieferte Software.

JSON-Rohbericht maschinenlesbar
{
  "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"
}

Bewertungen sind Signale, keine Garantien. Sie spiegeln öffentlich sichtbare Praxis auf GitHub wider — kein Code-Audit und keine Sicherheitsgarantie.

Fehlende Daten werden ausgeschlossen und die Gewichte neu normiert, nie als null bewertet. Die Methodik ist versioniert und offen: Metriken v1.13.0, Schema v0.27.0 — vollständige Methodik · Metriken-Wiki.

Wie ein einzelnes Ergebnis im Gesamtregister steht: aggregierte Statistikennpm.