AgentSkillsCN

Ruby Bundler

Ruby Bundler

SKILL.md

Ruby Bundler Skill

Intelligent Bundler operations for managing Ruby dependencies.

When to Activate

This skill activates when:

  • User requests to install gems or dependencies
  • User mentions Gemfile or bundle commands
  • User asks about dependency management
  • Gemfile.lock conflicts detected
  • Missing gem errors occur

Core Capabilities

1. Install Dependencies

Basic Installation:

bash
bundle install

Install for specific groups:

bash
# Development and test only
bundle install --without production

# Production only
bundle install --deployment

Update Bundler first if needed:

bash
gem install bundler
bundle install

2. Add New Gems

Interactive Gem Addition:

When user requests: "Add [gem_name] gem"

  1. Check if gem exists:

    • Search RubyGems.org
    • Show latest version
    • Show brief description
  2. Suggest Gemfile entry:

ruby
# For runtime dependency
gem 'gem_name', '~> X.Y'

# For development/test
group :development, :test do
  gem 'gem_name', '~> X.Y'
end

# For test only
group :test do
  gem 'rspec', '~> 3.12'
end
  1. Add to appropriate group:

    • Runtime dependencies → main section
    • Testing tools → :test group
    • Development tools → :development group
    • Code quality → :development (rubocop, etc.)
  2. Install the gem:

bash
bundle install
  1. Verify installation:
bash
bundle list | grep gem_name

3. Update Dependencies

Update all gems:

bash
bundle update

Update specific gem:

bash
bundle update gem_name

Update conservatively (patch versions only):

bash
bundle update --patch

Update minor versions:

bash
bundle update --minor

4. Audit for Security

Check for vulnerabilities:

bash
bundle audit

Install bundler-audit if missing:

bash
gem install bundler-audit
bundle audit

Update vulnerable gems:

bash
bundle audit check --update

5. Clean Up

Remove unused gems:

bash
bundle clean

Clean with forced removal:

bash
bundle clean --force

6. Troubleshoot Issues

Common Issues & Solutions:

Issue: "Could not find gem 'X'"

bash
# Solution 1: Update bundler
gem install bundler
bundle install

# Solution 2: Clear cache
bundle clean --force
bundle install

# Solution 3: Update Gemfile.lock
rm Gemfile.lock
bundle install

Issue: Version conflicts

bash
# Show dependency tree
bundle viz --without production

# Or use bundle info
bundle info gem_name

Issue: Platform-specific gems

ruby
# In Gemfile
gem 'pg', platforms: :ruby
gem 'sqlite3', platforms: [:mingw, :mswin, :x64_mingw, :jruby]

7. Gem Information

Show gem details:

bash
bundle info gem_name

List all gems:

bash
bundle list

Show outdated gems:

bash
bundle outdated

Interactive Workflows

Workflow 1: Add New Gem

User Request: "Add pry-byebug for debugging"

Response:

code
I'll add pry-byebug to your Gemfile.

Gem: pry-byebug
Latest Version: 3.10.1
Description: Combines pry with byebug for debugging

This is a development tool, so I'll add it to the :development group.

Adding to Gemfile:
```ruby
group :development do
  gem 'pry-byebug', '~> 3.10'
end

Running bundle install... ✓ Successfully installed pry-byebug 3.10.1

You can now use it by adding binding.pry in your code.

code

### Workflow 2: Update Dependencies

**User Request:** "Update all my gems"

**Response:**

Before updating, let me check what's outdated:

Outdated gems:

  • rspec: 3.11.0 → 3.12.0 (minor update)
  • rubocop: 1.45.1 → 1.50.2 (minor update)
  • nokogiri: 1.14.2 → 1.14.3 (patch update)

Recommendation:

  1. Update patch versions first (safest): bundle update --patch
  2. Update minor versions: bundle update --minor
  3. Update all: bundle update

Would you like me to: a) Update patch versions only (safest) b) Update minor versions c) Update everything d) Update specific gems only

code

### Workflow 3: Security Audit

**User Request:** "Check for security issues"

**Response:**

Running security audit with bundler-audit...

Found 2 vulnerabilities:

  1. HIGH: CVE-2023-XXXX in nokogiri (1.14.2) Solution: Update to >= 1.14.3

  2. MEDIUM: CVE-2023-YYYY in rack (2.2.6) Solution: Update to >= 2.2.7

Recommended action: bundle update nokogiri rack

Would you like me to update these gems now?

code

## Smart Suggestions

### Suggest Missing Gems

When user writes code using common patterns, suggest relevant gems:

**Pattern: API calls**
```ruby
# User writes HTTP client code
"I notice you're making HTTP requests. Consider adding:"
gem 'faraday', '~> 2.7'  # Modern HTTP client
# or
gem 'httparty', '~> 0.21'  # Simple HTTP client

Pattern: JSON parsing

ruby
# User parses JSON
"For better JSON handling, consider:"
gem 'oj', '~> 3.14'  # Faster JSON parser

Pattern: Environment variables

ruby
# User uses ENV[]
"For environment management, you already have dotenv in common libs!"
gem 'dotenv', '~> 2.8'

Pattern: Background jobs

ruby
# User mentions async/background processing
"For background jobs, you commonly use:"
gem 'sidekiq', '~> 7.0'

Version Constraint Guidelines

Pessimistic versioning (~>):

ruby
gem 'rails', '~> 7.0.4'  # >= 7.0.4, < 7.1
gem 'rspec', '~> 3.12'   # >= 3.12, < 4.0

Exact version (avoid unless necessary):

ruby
gem 'specific_gem', '1.2.3'  # Only 1.2.3

Greater than or equal:

ruby
gem 'compatible_gem', '>= 2.0'  # Any version >= 2.0

Best Practice: Use pessimistic (~>) for stability

Gemfile Organization

Recommended Structure:

ruby
source 'https://rubygems.org'

ruby '3.2.0'  # Specify Ruby version

# Core runtime dependencies
gem 'dotenv'
gem 'pg', '~> 1.6'

# Development tools
group :development do
  gem 'pry'
  gem 'rubocop', require: false
end

# Test tools
group :test do
  gem 'rspec', '~> 3.12'
  gem 'factory_bot', '~> 6.5'
  gem 'timecop'
end

# Development & Test
group :development, :test do
  gem 'pry-byebug'
end

# Platform-specific
platforms :ruby do
  gem 'sqlite3', '~> 2.1'
end

Response Format

When performing bundle operations:

Action Taken:

  • Command executed
  • Result summary

Changes:

  • New gems added
  • Gems updated (old → new version)
  • Gems removed

Next Steps:

  • Suggested actions
  • Related configuration needed
  • Documentation references

Configuration

Users can customize behavior in .claude/settings.json:

json
{
  "plugins": {
    "rubyist": {
      "bundler": {
        "autoInstall": true,
        "suggestGems": true,
        "securityAudit": true,
        "versionStrategy": "pessimistic"
      }
    }
  }
}

Error Handling

Always wrap bundle commands with error handling:

bash
if bundle install; then
  echo "✓ Successfully installed dependencies"
else
  echo "✗ Installation failed"
  echo "Trying with bundle update..."
  bundle update
fi

Best Practices

  1. Always review Gemfile changes before committing
  2. Commit Gemfile.lock to ensure consistent environments
  3. Use bundle audit regularly for security
  4. Keep gems updated but test thoroughly
  5. Group gems appropriately (development, test, production)
  6. Use pessimistic versioning for stability
  7. Document why specific versions are pinned