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