{"adoption": {"forks": 92, "observed_at": "2026-08-28T04:05:28.417555+00:00", "stars": 1728}, "canonical_url": "https://ross.abutalabs.com/products/has_scope", "card": {"archived": false, "artifact_type": "library", "description": "Map incoming controller parameters to named scopes in your resources", "domain": ["web-development", "backend", "developer-tools"], "enriched": true, "function": ["middleware", "routing", "database"], "health_score": 80, "homepage": null, "language": "Ruby", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["heartcombo/has_scope"], "name": "heartcombo/has_scope", "platform": ["ruby"], "pushed_at": "2026-03-27T12:50:52+00:00", "repo": "heartcombo/has_scope", "stars": 1728, "tags": ["rails", "active-record", "named-scopes", "filtering", "query-parameters", "gem", "web-server"], "topics": [], "urls": [], "use_cases": ["filter Rails index listings by query params like ?featured=true", "map incoming controller parameters to named scopes safely", "build filterable resource endpoints without manual param parsing", "restrict which scopes a controller action may apply", "inspect currently applied scopes in controllers or views", "apply scopes to resources outside of controllers"], "what_it_is": "HasScope is a Ruby gem that dynamically applies ActiveRecord named scopes to resources based on incoming controller parameters. It is most commonly used in Rails controllers to map request query parameters to safe, whitelisted scope-based filtering of records.", "when_to_avoid": ["you don't use ActiveRecord or named scopes", "you need complex filtering logic beyond simple scope mapping", "you're not on a Ruby/Rails stack"], "when_to_choose": ["you have a Rails or Ruby app using ActiveRecord named scopes", "you want declarative, whitelisted param-to-scope filtering", "you need type coercion for boolean or hash scope parameters"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/has_scope", "repo": "heartcombo/has_scope", "role": "main", "score": 60}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "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:05:28.417555+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:28.417555+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:32:09.067685+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "c94cbd667c2bcb875c9f0028e045ddbdf9c6043aae99392ef902563248772462", "fetched_at": "2026-08-28T04:05:28.417555+00:00", "kind": "readme", "missing": false, "url": "https://github.com/heartcombo/has_scope"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 74, "longevity": 100, "rhythm": 18}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 6116, "days_push": 159, "days_rel": 334, "gap_med": null, "n_releases_24m": 1}, "score": 60, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}