{"adoption": {"forks": 174, "observed_at": "2026-08-28T04:04:39.497979+00:00", "stars": 1413}, "canonical_url": "https://ross.abutalabs.com/products/hs-airdrop", "card": {"archived": false, "artifact_type": "cli-tool", "description": "Decentralized airdrop to open source developers", "domain": ["developer-tools", "blockchain"], "enriched": true, "function": ["cryptography", "cli", "security"], "health_score": 20, "homepage": null, "language": "JavaScript", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["handshake-org/hs-airdrop"], "name": "handshake-org/hs-airdrop", "platform": ["cli", "cross-platform"], "pushed_at": "2024-02-26T12:42:28+00:00", "repo": "handshake-org/hs-airdrop", "stars": 1413, "tags": ["handshake", "airdrop", "hns", "merkle-tree", "pgp", "ssh", "blockchain-redemption", "cryptocurrency", "nodejs"], "topics": [], "urls": [], "use_cases": ["claim Handshake HNS coins from the open source developer airdrop", "check if my GitHub SSH or PGP key is eligible for the Handshake airdrop", "generate a signed merkle proof to redeem HNS on chain", "redeem airdropped cryptocurrency without revealing private keys to third parties", "verify airdrop eligibility from PGP web-of-trust or Keybase-linked keys"], "what_it_is": "hs-airdrop is the official redemption tool for the Handshake network's decentralized airdrop of HNS coins to open source developers. It checks a user's PGP or SSH private key against a merkle tree embedded in Handshake's consensus rules and generates the signed proof needed to claim coins on chain.", "when_to_avoid": ["you registered for the Handshake faucet on handshake.org, since your coins are claimable via wallets like hsd or Bob instead", "you had no SSH or PGP key on GitHub at the time of the 2019 snapshot, making you ineligible", "you need a general-purpose Handshake wallet or full node rather than a one-time redemption tool"], "when_to_choose": ["you are an open source developer eligible for the Handshake airdrop and want the officially recommended redemption tool", "you need to create on-chain merkle proofs signed with SSH or PGP keys for Handshake consensus", "you want to avoid scam tools and phishing services targeting airdrop claimants"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/hs-airdrop", "repo": "handshake-org/hs-airdrop", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "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:39.497979+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.497979+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:38:16.379459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "b4204ba3e6fdcac55e25d3d9621d702342a65cfff7aa9163d1bc395bf21d8550", "fetched_at": "2026-08-28T04:04:39.497979+00:00", "kind": "readme", "missing": false, "url": "https://github.com/handshake-org/hs-airdrop"}, {"content_hash": "53fdae091381462432056bca185aa8d04127bbbd4a62f15eb3a45a23016c006d", "fetched_at": "2026-08-29T11:51:18.337491+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/hs-airdrop"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2898, "days_push": 919, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}