{"adoption": {"forks": 131, "observed_at": "2026-08-28T04:09:09.299618+00:00", "stars": 5069}, "canonical_url": "https://ross.abutalabs.com/products/extensionjs", "card": {"archived": false, "artifact_type": "framework", "description": "The cross-browser extension framework.", "domain": ["browser-extensions", "web-development", "developer-tools", "cross-platform"], "enriched": true, "function": ["build-tool", "cli", "browser-extension", "developer-tools", "scheduling"], "health_score": 100, "homepage": "https://extension.js.org", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["extension-js/extension.js"], "name": "extension-js/extension.js", "platform": ["browser", "browser-extension", "cli", "cross-platform"], "pushed_at": "2026-08-24T10:16:00+00:00", "repo": "extension-js/extension.js", "stars": 5069, "tags": ["manifest-v3", "hot-module-replacement", "zero-config", "webextension", "chrome-extension", "firefox-extension", "safari-web-extension", "scaffolding", "typescript", "react", "vue", "svelte", "preact", "cross-browser", "nodejs"], "topics": ["webextension", "browser-extension", "cli", "chrome-extension", "cross-browser", "edge-extension", "manifest-v3", "playwright", "preact", "react", "scaffold", "starter-template", "svelte", "typescript", "vue", "zero-config", "safari-web-extension", "extension-js", "firefox-extension", "content-script"], "urls": [], "use_cases": ["build a chrome extension with react and typescript", "ship one extension to chrome edge and firefox from a single codebase", "scaffold a browser extension project from a template", "get hot reload for content scripts and background service workers", "package an extension as a zip for the chrome web store", "run a github extension sample without cloning or configuring", "handle manifest v3 differences between chromium and firefox"], "what_it_is": "Extension.js is a zero-config framework and CLI for building cross-browser extensions for Chrome, Edge, Firefox, and Safari from a single codebase. It handles manifest compilation with browser-prefixed fields, hot module replacement for extension scripts, per-browser build outputs, and store-ready packaging.", "when_to_avoid": ["you need an all-in-one platform with store publishing and updates built in", "your project is already deeply invested in another bundler like webpack or Vite plugins", "you need to support browsers or engines outside the Chromium and Gecko families", "your environment cannot run Node.js 22.12 or newer"], "when_to_choose": ["you want zero build configuration for a new browser extension", "you need to target multiple browsers from one manifest.json", "you want HMR for popup, options, content, and background scripts", "you prefer first-class TypeScript, React, Vue, Svelte, or Preact support", "you want to prototype by running GitHub extension samples directly"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/extensionjs", "repo": "extension-js/extension.js", "role": "main", "score": 95}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:09.299618+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:02:49.646170+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "59af279a3bd03e0fc0df3ba520e9518d5545cdc1db0361fefc9c2c0bf4d7c341", "fetched_at": "2026-08-28T04:09:09.299618+00:00", "kind": "readme", "missing": false, "url": "https://github.com/extension-js/extension.js"}, {"content_hash": "a97234523067b51b8cf0a869532f25846e45d0ea957bfb0944b7d7a406ea0371", "fetched_at": "2026-08-29T08:58:04.437800+00:00", "kind": "homepage", "missing": false, "url": "https://extension.js.org"}, {"content_hash": "c0765367093d96e2fb0de4dfa735171e8f3aae90e454fe18b106161ebe80c87a", "fetched_at": "2026-08-29T08:58:04.441105+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs"}, {"content_hash": "922ebaca3ea817e1f260595457365f2a3df3a50365418f97d36329478a323036", "fetched_at": "2026-08-29T08:58:04.443334+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/templates"}, {"content_hash": "add27b29f7861caa1205b7b09986010dcbf1b88cc29724866eaf7f7336f2b687", "fetched_at": "2026-08-29T08:58:04.445380+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/ai-access"}, {"content_hash": "b906a998045171bfd75d0cccbd4b28c7f395def709a8bf67113d1ea0271e9c47", "fetched_at": "2026-08-29T08:58:04.447314+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started/immediately"}, {"content_hash": "a220c1c9781cd825051da2b56ff62cab72ea8c45882964844bc4843ac0e5840a", "fetched_at": "2026-08-29T08:58:04.449298+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/browser-specific-fields"}, {"content_hash": "470eb0318504760c37745ef4fe18920e8af9c0cb9e8a8de78a3f5be951e677b3", "fetched_at": "2026-08-29T08:58:04.451335+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/getting-started"}, {"content_hash": "877f888ea3743aa58fb4a9ab9d83026af0b4a7f3f507231e0307fd83af5b7851", "fetched_at": "2026-08-29T08:58:04.453900+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/features/cross-browser-compatibility"}, {"content_hash": "2535938d5d1126c7d7aaffbff6698359f76c2d455ca7a9bc9703ee5d8ed5422d", "fetched_at": "2026-08-29T08:58:04.456117+00:00", "kind": "site_page", "missing": false, "url": "https://extension.js.org/docs/implementation-guide/manifest-json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 87}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2141, "days_push": 9, "days_rel": 11, "gap_med": 0, "n_releases_24m": 108}, "score": 95, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}