{"adoption": {"forks": 178, "observed_at": "2026-08-28T04:04:06.228451+00:00", "stars": 1240}, "canonical_url": "https://ross.abutalabs.com/products/shortkeys", "card": {"archived": false, "artifact_type": "plugin", "description": "A browser extension for custom keyboard shortcuts ", "domain": ["browser-extensions", "developer-tools", "web-development"], "enriched": true, "function": ["browser-extension", "developer-tools", "workflow-automation"], "health_score": 97, "homepage": "https://www.shortkeys.app/", "language": "TypeScript", "license": "NOASSERTION", "license_family": "other", "maturity": "active", "member_repos": ["crittermike/shortkeys"], "name": "crittermike/shortkeys", "platform": ["browser-extension", "browser", "cross-platform"], "pushed_at": "2026-08-22T01:26:33+00:00", "repo": "crittermike/shortkeys", "stars": 1240, "tags": ["keyboard-shortcuts", "chrome-extension", "firefox-extension", "userscripts", "vim-keybindings", "macro-chaining", "command-palette", "automation"], "topics": ["chrome", "javascript", "webextension"], "urls": [], "use_cases": ["create custom keyboard shortcuts in chrome", "run javascript on a page with a hotkey", "vim keybindings for the browser", "control youtube playback with keyboard shortcuts", "chain multiple browser actions into one shortcut", "disable shortcuts on specific websites", "sync browser shortcuts across devices"], "what_it_is": "Shortkeys is a cross-browser extension (Chrome, Firefox, Edge, Opera) for creating custom keyboard shortcuts with 125+ built-in actions like tab management, scrolling, and running custom JavaScript. It supports multi-key sequences, macro chaining, site filtering, shortcut packs, cloud sync, and a command palette.", "when_to_avoid": ["you need OS-wide shortcuts outside the browser", "you need deep automation like full browser automation frameworks (Playwright/Puppeteer)", "you only need the few shortcuts your browser already supports natively"], "when_to_choose": ["you want keyboard-driven browser navigation without leaving the browser", "you need per-site shortcut allowlists or blocklists", "you want to run custom JS or userscripts from a keypress", "you use multiple Chromium/Firefox browsers and want synced shortcuts"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/shortkeys", "repo": "crittermike/shortkeys", "role": "main", "score": 90}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "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:04:06.228451+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:06.228451+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:09:51.975908+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "661c3a86ac2015daec98fe664a9211be341a2605bad35cc657d81759db3b9f39", "fetched_at": "2026-08-28T04:04:06.228451+00:00", "kind": "readme", "missing": false, "url": "https://github.com/crittermike/shortkeys"}, {"content_hash": "5867b6ac1aa6940795715eb6e712cf1d614360843579966e7ee69d72028d5d83", "fetched_at": "2026-08-29T12:20:31.770052+00:00", "kind": "homepage", "missing": false, "url": "https://www.shortkeys.app/"}, {"content_hash": "946ff3437618d645f208b15376bc81b177e0e5163cfd036df1902585033c3788", "fetched_at": "2026-08-29T12:20:31.779228+00:00", "kind": "site_page", "missing": false, "url": "https://www.shortkeys.app/docs"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 98, "longevity": 100, "rhythm": 75}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 5243, "days_push": 12, "days_rel": 170, "gap_med": 11.5, "n_releases_24m": 3}, "score": 90, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}