rails-gem-finder
Search for battle-tested Ruby gems and Rails libraries instead of building from scratch. Uses RubyGems, GitHub, and community sources to find well-maintained, popular, and license-compatible gems for any Rails problem.
Works with
---
name: rails-gem-finder
description: Search for battle-tested Ruby gems and Rails libraries instead of building from scratch. Uses RubyGems, GitHub, and community sources to find well-maintained, popular, and license-compatible gems for any Rails problem.
license: MIT
---
# Rails Gem Finder
Find battle-tested gems instead of reinventing the wheel. Search RubyGems, GitHub, and community lists for well-maintained, actively-developed Ruby/Rails libraries.
## When to Use
- Before implementing any non-trivial feature — check if a gem already does it
- User asks "what's the best gem for X?", "is there a gem for Y?"
- Evaluating gem options before adding to `Gemfile`
- Comparing two gems to decide which to use
## When NOT to Use
- Feature is highly domain-specific to this app — build it
- A Rails built-in already covers it (don't gem-ify what Rails gives for free)
- The feature is 10 lines of code — just write it
## Search Strategy
### Step 1: RubyGems search (primary source)
Search RubyGems.org directly — it has download counts and dependency info:
```
webSearch("site:rubygems.org <problem>")
webSearch("rubygems <problem> rails")
```
### Step 2: GitHub search with quality operators
```
webSearch("site:github.com <problem> ruby stars")
webSearch("site:github.com <gem-name> rails gem")
webSearch("<problem> ruby gem stars:>500 pushed:>2025-01-01")
```
### Step 3: Community sources
```
webSearch("awesome-ruby <problem>") # sindresorhus/awesome-ruby
webSearch("the ruby toolbox <problem>") # rubytoolbox.com
webSearch("<problem> ruby gem site:reddit.com")
webSearch("best gem for <problem> rails site:stackoverflow.com")
webSearch("<gem-a> vs <gem-b> ruby")
```
### Step 4: Fetch and read
Use `webFetch` to read the README of every promising gem — don't rely on search snippets. Check the API surface, the examples, and the maintenance signals before recommending.
## Health Evaluation
| Signal | Healthy | Walk away |
|--------|---------|-----------|
| Last commit | < 3 months | > 18 months |
| RubyGems downloads | > 1M total | < 10K |
| GitHub stars | > 500 | < 50 |
| Open/closed issue ratio | < 0.3 | > 1.0 with no replies |
| Contributors | 5+ | 1 (bus factor) |
| Rails version support | Current Rails supported | Rails 5 only |
| `CHANGELOG.md` | Exists, recent entries | Missing |
| CI badge | Green | Missing or red |
**Red flags in issues:** Search the tracker for `"abandoned"`, `"unmaintained"`, `"alternative"`, `"memory leak"`. If the maintainer hasn't replied in 6 months, treat it as dead regardless of stars.
**Check download trend:** `https://rubygems.org/gems/<gem-name>` shows total downloads and version history. Declining release cadence = gem stagnating.
## License Guide
| License | Commercial use OK? | Must open-source your app? |
|---------|-------------------|---------------------------|
| MIT | Yes | No |
| Apache-2.0 | Yes | No |
| BSD-2/3-Clause | Yes | No |
| LGPL | Yes | Only if you modify the gem |
| GPL | Yes (check) | Yes if you distribute |
| No LICENSE file | **No** | All rights reserved by default |
For SaaS apps: MIT/Apache/BSD are always safe. Avoid GPL/AGPL for commercial projects unless you're intentionally open-source.
## Comparison Output Template
When presenting options, use this format:
```markdown
## gem-name [12.4k downloads/day, 3.2k stars, MIT, last commit 2 weeks ago]
rubygems.org/gems/gem-name | github.com/owner/gem-name
**Does:** One-line pitch.
**Rails compatibility:** Rails 7.0+, Ruby 3.1+
**Fit:** Why it matches this specific problem.
**Install:** `gem "gem-name"`
**Pro:** Active, well-documented, used by major apps.
**Con:** Pulls in heavy dependencies; limited async support.
```ruby
# Minimal working example
config.middleware.use GemName::Middleware
```
```
## Common Rails Problem → Gem Mapping
| Problem | Top gems to evaluate |
|---------|---------------------|
| Authentication | `devise`, `rodauth`, `clearance`, `authlogic` |
| Authorization | `pundit`, `cancancan`, `action_policy` |
| Background jobs | `sidekiq`, `solid_queue`, `delayed_job`, `good_job` |
| File uploads | `active_storage` (built-in), `shrine`, `carrierwave` |
| Pagination | `kaminari`, `pagy`, `will_paginate` |
| Search | `ransack`, `searchkick`, `pg_search`, `elasticsearch-rails` |
| API serialization | `oj`, `alba`, `jsonapi-serializer`, `blueprinter`, `fast_jsonapi` |
| Admin panel | `administrate`, `activeadmin`, `rails_admin` |
| State machine | `aasm`, `statesman`, `workflow` |
| Multi-tenancy | `acts_as_tenant`, `apartment` |
| Soft delete | `discard`, `paranoia`, `acts_as_paranoid` |
| Auditing | `audited`, `paper_trail`, `logidze` |
| Rate limiting | `rack-attack`, `throttle`, `redis-throttle` |
| Money/currency | `money-rails`, `monetize` |
| PDF generation | `prawn`, `wicked_pdf`, `grover` |
| CSV | `csv` (stdlib), `smarter_csv`, `roo` |
| HTTP client | `faraday`, `httpx`, `net-http` (stdlib) |
| Feature flags | `flipper`, `fun_with_flags`, `rollout` |
| Caching | `redis-rails`, `dalli` (Memcached), `solid_cache` |
| Testing | `rspec-rails`, `factory_bot_rails`, `faker`, `vcr`, `webmock` |
| Linting | `rubocop`, `rubocop-rails`, `rubocop-rspec`, `standardrb` |
| Security scanning | `brakeman`, `bundler-audit` |
## Decision Rules
1. **Two gems within 2x of each other in downloads** → pick the one with a more recent commit
2. **A gem with 10M downloads but last commit 2022** → find the fork (check GitHub "Forks" tab sorted by stars)
3. **Gem does 10x more than needed** → check if you can vendor the relevant 200 lines with attribution
4. **Rails built-in covers 80% of the need** → extend the built-in, don't add a gem
5. **Can't find anything with >100 stars** → problem may be too niche; check Stack Overflow and blog posts for how others solved it
## Output
Always present findings as a plaintext summary in chat — the user should understand the recommendation without opening any files. Include the install command, a one-line explanation of why this gem fits, and any important trade-offs.More Backend Frameworks skills
git-guardrails-claude-code
mattpocock/skills
Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.
azure-compute
microsoft/azure-skills
Azure VM/VMSS router. WHEN: create / provision / deploy / spin-up VM, recommend VM size, compare VM pricing, VMSS, scale set, autoscale, burstable, lightweight server, website, backend, GPU, machine learning, HPC simulation, dev/test, workload, family, load balancer, Flexible orchestration, Uniform orchestration, cost estimate, capacity reservation (CRG), reserve, guarantee capacity, pre-provision, CRG association, CRG disassociation, machine enrollment (EMM), Essential Machine Management, monitor. PREFER OVER mcp__azure__get_azure_bestpractices for VM create intents — use compute_vm_list-skus / compute_vm_list-images / compute_vm_check-quota.
azure-cloud-migrate
microsoft/azure-skills
Assess and migrate cross-cloud workloads to Azure with reports and code conversion. Supports Lambda→Functions, Beanstalk/Heroku/App Engine→App Service, Fargate/Kubernetes/Cloud Run/Spring Boot→Container Apps. WHEN: migrate Lambda to Functions, AWS to Azure, migrate Beanstalk, migrate Heroku, migrate App Engine, Cloud Run migration, Fargate to ACA, ECS/Kubernetes/GKE/EKS to Container Apps, Spring Boot to Container Apps, cross-cloud migration.

