Registro público
Informe de salud del softwareesquema 0.27.0 · métricas 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 estrella⑂ 0 forksdesde mar 2026forkVer en GitHub ↗

inbox-zero/emulate tiene un índice de salud de 54 sobre 100, lo que lo sitúa en la banda Moderado. Su puntuación más alta es Vitality (81/100) y la más baja, Community & Adoption (26/100). Se actualizó por última vez hace 5 días. Una sola persona concentra la mayor parte del trabajo reciente.

54
global / 100
Moderado

Índice de salud del software

Las métricas se agrupan en categorías ponderadas sobre una escala de 1 a 100. El resultado global parte de su media; cuando la evidencia pública activa la Política de Jurisdicciones de Alto Riesgo, la calificación se ajusta y recibe el límite 49 (En riesgo). Preparación para IA queda fuera.

54
Excelente85-100Ejemplar; cumple prácticamente todos los criterios evaluados
Bueno70-84Saludable; carencias menores
Moderado50-69Aceptable con carencias notables; se recomienda revisión
En riesgo30-49Debilidades significativas; su adopción exige cautela
Crítico1-29Problemas graves (proyecto abandonado, un solo mantenedor, sin higiene)
VitalidadComunidad yAdopciónSostenibilidady GobernanzaCalidad deIngenieríaSeguridadPreparaciónpara IA

Perfil de puntuación

Cada eje es una categoría. La forma importa más que la media: un proyecto sano llena toda la figura, mientras que un perfil de picos y cráteres indica que la fortaleza en una dimensión enmascara el riesgo en otra.

Titularidad

Inbox ZeroOrganización
18 seguidores5 repositorios públicosdesde feb 2024

Este repositorio está respaldado por una organización: una custodia compartida y responsable que puede sobrevivir a cualquier mantenedor individual.

Ecosistemas de paquetes

RegistroPaqueteVersiónDescargas / mesVersionesÚltima publicaciónEtiquetas
npm@inbox-zero/emulate0.9.0968010hace 5 díasemulatormockapivercelgithubgoogleoauthtestingcilocal-development

Métricas por categoría

Vitalidad

¿Está vivo el proyecto: se escribe código y se publican versiones?

81Bueno · 22% del índice global
Cómo se puntúa
36/36Recencia de push — último push hace 5 días
10.4/36Cadencia de commits — 15/52 semanas con commits
18/18Volumen de commits — 153 commits en el último año
10/10OpenSSF Scorecard: Maintained — 30 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Datos de entrada utilizados
commits_last_year153
human_commit_share1
days_since_last_push5
active_weeks_last_year15
Cómo se puntúa
27/27Publica versiones — 2 versiones publicadas
36/36Recencia de las versiones — última versión hace 5 días
19.8/27Cadencia de publicación — una versión cada ~77 días
0/10OpenSSF Scorecard: Signed-Releases — sin datos
Datos de entrada utilizados
releases_count2
latest_release_tagv0.9.0
releases_from_tagsno
days_since_latest_release5
mean_days_between_releases77
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: Signed-Releases. Los pesos restantes se han renormalizado.

Comunidad y Adopción

¿Tiene el proyecto usuarios, descargas, atención y unas condiciones acogedoras para quienes contribuyen?

26Crítico · 18% del índice global
Cómo se puntúa
0/60Estrellas — 1 estrellas
0/25Forks — 0 forks
0/15Observadores — 0 observadores
Datos de entrada utilizados
forks0
stars1
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
Cómo se puntúa
0/22.5README
22.5/22.5Licencia — licencia reconocida (Apache-2.0)
0/18Guía CONTRIBUTING
0/13.5Código de conducta
0/7.2Plantilla de issues
0/6.3Plantilla de PR
Datos de entrada utilizados
has_readmeno
has_licenseno
has_contributingno
has_issue_templateno
has_code_of_conductno
has_pull_request_templateno
Cómo se puntúa
53.1/80Descargas mensuales — 9680 descargas/mes en npm
0/20Dependientes en el registro — no lo informa este ecosistema
Datos de entrada utilizados
packages@inbox-zero/emulate
dependents
ecosystemsnpm
total_downloads
monthly_downloads9680
Excluidos de la puntuación (sin datos o no aplicable): Dependientes en el registro. Los pesos restantes se han renormalizado.

Sostenibilidad y Gobernanza

¿Sobrevivirá el proyecto a sus personas: factor bus, capacidad de respuesta, quién lo respalda y mantenimiento del paquete?

57Moderado · 24% del índice global
Cómo se puntúa
9/54Factor bus — la mitad de los commits recae en 1 contribuyente(s)
6.3/22.5Distribución de commits — el principal contribuyente firma el 72% de los commits
13.5/13.5Amplitud de contribuyentes — 11 contribuyentes
6/10OpenSSF Scorecard: Contributors — project has 2 contributing companies or organizations -- score normalized to 6
Datos de entrada utilizados
bus_factor1
contributors_sampled11
top_contributor_share0,719
Cómo se puntúa
0/46.8Resolución de issues — sin issues o sin datos
30.1/38.3Aceptación de PR — 11/14 PR decididos fusionados
0/15OpenSSF Scorecard: Code-Review — Found 0/30 approved changesets -- score normalized to 0
Datos de entrada utilizados
merged_prs11
open_issues0
closed_issues0
issue_closed_ratio
closed_unmerged_prs3
Excluidos de la puntuación (sin datos o no aplicable): Resolución de issues. Los pesos restantes se han renormalizado.
Cómo se puntúa
30/30Respaldo de la propiedad — propiedad de una organización
0/20Dominio verificado
9.2/25Alcance del propietario — 18 seguidores de inbox-zero
10.6/25Trayectoria — 5 repos públicos, cuenta de ~2 años
Datos de entrada utilizados
followers18
owner_typeOrganization
is_verified
owner_logininbox-zero
public_repos5
account_age_days900
Cómo se puntúa
25/25Publicado y resoluble — 1 paquete(s) en npm
35/35Recencia de publicación — última publicación hace 5 días
20/20Historial de versiones — 10 versiones en el registro
20/20No obsoleto — activo, ni obsoleto ni retirado
Datos de entrada utilizados
packages@inbox-zero/emulate
ecosystemsnpm
any_deprecatedno
min_days_since_publish5

Calidad de Ingeniería

¿Existen unas prácticas mínimas de ingeniería y documentación?

54Moderado · 20% del índice global
Cómo se puntúa
24/24Flujos de trabajo de CI — 2 flujo(s) de trabajo
24/24Pruebas presentes
16/16Configuración de linter — eslint.config.mjs
0/9.6Hooks de pre-commit
0/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — sin datos
Datos de entrada utilizados
has_ci
has_tests
has_editorconfigno
has_linter_config
has_precommit_configno
Excluidos de la puntuación (sin datos o no aplicable): OpenSSF Scorecard: CI-Tests. Los pesos restantes se han renormalizado.

Documentación

15Crítico
Cómo se puntúa
0/30README
0/25Directorio de documentación
15/15Sitio de documentación / página del proyecto — https://emulate.dev
0/10Descripción del repositorio
0/10Topics
0/10Wiki
Datos de entrada utilizados
topics
has_wikino
homepagehttps://emulate.dev
has_readmeno
has_docs_dirno
has_descriptionno

Seguridad

¿Son sólidas las prácticas visibles de seguridad y de cadena de suministro, sin exposición jurisdiccional de alto riesgo sin resolver?

46En riesgo · 16% del índice global
Cómo se puntúa
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 — sin datos
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.5Licencia — 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 — sin datos
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 — sin datos
0/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 85 existing vulnerabilities detected
Datos de entrada utilizados
sourceopenssf_scorecard
checks_evaluated15
scorecard_versionv5.5.0
checks_inconclusive3
scorecard_aggregate3,2
Excluidos de la puntuación (sin datos o no aplicable): ci_tests, packaging, signed_releases. Los pesos restantes se han renormalizado.
Cómo se puntúa
35/35Dependencias directas libres de avisos conocidos — ninguna dependencia directa tiene un aviso conocido
25/25Dependencias indirectas libres de avisos conocidos — ninguna dependencia indirecta tiene un aviso conocido
0/40Sin avisos pendientes — ningún aviso tiene fecha de publicación
Datos de entrada utilizados
sourceosv
advisories0
affected_packages0
assessed_packages3
unassessed_packages0
affected_by_severitynone
direct_affected_packages0
Excluidos de la puntuación (sin datos o no aplicable): Sin avisos pendientes. Los pesos restantes se han renormalizado. Se cotejó el cierre de dependencias en tiempo de ejecución de npm:@inbox-zero/emulate@0.9.0 —lo que arrastra la instalación del paquete publicado—: 3 paquetes. No se analiza la alcanzabilidad.

Preparación para IA

¿Hasta qué punto está el repositorio preparado para desarrollarse y mantenerse con agentes de codificación de IA? Es una insignia independiente y experimental — peso 0,0, de modo que se presenta por separado y no afecta a la puntuación de salud global.

70Bueno · 0% del índice global
Cómo se puntúa
45/45Instrucciones para agentes — AGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md
0/15Documentación legible por máquinas (llms.txt)
40/40Historial de commits legible — 99 de 100 commits humanos declaran su intención (asunto estructurado o cuerpo explicativo)
Datos de entrada utilizados
has_llms_txtno
legible_history_share0,99
agent_instruction_filesAGENTS.md, apps/web/AGENTS.md, apps/web/CLAUDE.md
agent_instruction_max_bytes4585
Cómo se puntúa
0/18Arranque con un solo comando
22/22Pruebas automatizadas
11/11Configuración de lint / formato — eslint.config.mjs
11/11Verificación estática de tipos — 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/10Entorno reproducible — lockfile
6/10Práctica demostrada con agentes — 3 de los últimos 100 commits con autoría o crédito de agente
0/8Mantenimiento automatizado — no se observan actualizaciones automáticas de dependencias
0/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 0
Datos de entrada utilizados
has_nixno
has_tests
lockfilespnpm-lock.yaml
has_dockerfileno
typed_language
bootstrap_files
has_devcontainerno
has_linter_config
typecheck_configsapps/web/tsconfig.json, examples/nextjs-embedded/tsconfig.json, examples/nuxt-embedded/tsconfig.json, examples/oauth/tsconfig.json, examples/resend-magic-link/tsconfig.json, examples/stripe-checkout/tsconfig.json, examples/twilio-sms-verification/tsconfig.json, examples/vercel-blob-sharing/tsconfig.json, packages/@emulators/adapter-next/tsconfig.json, packages/@emulators/adapter-nuxt/tsconfig.json, packages/@emulators/apple/tsconfig.json, packages/@emulators/aws/tsconfig.json, packages/@emulators/clerk/tsconfig.json, packages/@emulators/core/tsconfig.json, packages/@emulators/github/tsconfig.json, packages/@emulators/google/tsconfig.json, packages/@emulators/linear/tsconfig.json, packages/@emulators/microsoft/tsconfig.json, packages/@emulators/mongoatlas/tsconfig.json, packages/@emulators/okta/tsconfig.json, packages/@emulators/resend/tsconfig.json, packages/@emulators/slack/tsconfig.json, packages/@emulators/stripe/tsconfig.json, packages/@emulators/twilio/tsconfig.json, packages/@emulators/vercel/tsconfig.json, packages/emulate/tsconfig.json, tsconfig.json
agent_commit_share0,03
toolchain_manifests
dependency_bot_commit_share0
Cómo se puntúa
45/45Código verificable por tipos — TypeScript (tipado estático)
54.5/55Tamaños de archivo manejables — 4/433 archivos fuente de más de 60 KB
Datos de entrada utilizados
primary_languageTypeScript
largest_source_bytes175.917
source_files_sampled433
oversized_source_files4
Cómo se puntúa
0/40Esquema de API (OpenAPI/GraphQL/proto)
0/20Servidor MCP
40/40Ejemplos ejecutables — examples
Datos de entrada utilizados
example_dirsexamples
has_mcp_signalno
api_schema_files

Datos clave

1estrellas de GitHub
11contribuidores
153commits en los últimos 12 meses
5días desde el último push
2versiones publicadas
1factor bus
0issues abiertas
npmecosistemas de paquetes

Advertencias de recopilación de datos

  • 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

Más detalle

OpenSSF Scorecard 3.2 / 10
3.2agregado

Evaluación de seguridad independiente y agnóstica en cuanto a herramientas, procedente del proyecto de código abierto OpenSSF Scorecard. Cada comprobación premia una práctica de seguridad, no la herramienta de un proveedor concreto. Las comprobaciones que Scorecard no pudo determinar se marcan como n/d y se excluyen de la puntuación de seguridad (nunca se cuentan como cero).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
n/dCI-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
n/dPackagingpackaging workflow not detected
0Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 0
0SASTno SAST tool detected
0Security-Policysecurity policy file not detected
n/dSigned-Releasesno releases found
0Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities85 existing vulnerabilities detected
Dependencias directas 27
RegistroPaqueteRestricción de versiónManifiesto
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
Todas las dependencias no recopilado

No fue posible recopilar el conjunto de dependencias resuelto para este informe: GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository

Avisos de dependencias 0

Instalar npm:@inbox-zero/emulate@0.9.0 arrastra 3 paquetes, directos y transitivos: 0 tienen avisos conocidos, de los cuales 0 son dependencias directas.

Ningún aviso conocido afecta a las dependencias evaluadas.

Un aviso significa que la versión registrada en el grafo de dependencias cae dentro del rango afectado de un aviso. No se analiza la alcanzabilidad, y el grafo incluye fijaciones de desarrollo y prueba: un hallazgo puede referirse al utillaje y no al software distribuido.

Informe JSON sin procesar legible por máquina
{
  "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"
}

Las puntuaciones son señales, no garantías. Reflejan prácticas públicamente visibles en GitHub; no son una auditoría de código ni una garantía de seguridad.

Los datos ausentes se excluyen y los pesos se renormalizan; nunca se puntúan como cero. La metodología es versionada y abierta: métricas v1.13.0, esquema v0.27.0 — metodología completa · wiki de métricas.

Cómo se sitúa un resultado dentro del registro general: estadísticas agregadasnpm.