Token导航 LogoToken导航TokenDH.com
研究检索敏感数据github未标认证来源可访问许可证需确认审计异常

gem-builder宝石建造者

Agent Skill

gem-builder 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

815

周安装

35

GitHub Stars

37

下载量

286
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:gem-builder(宝石建造者)
来源仓库:https://github.com/majesticlabs-dev/majestic-marketplace
仓库路径:skills/gem-builder
安装命令:
npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill gem-builder
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/majesticlabs-dev/majestic-marketplace --skill gem-builder

简介

用于查找、检索和筛选相关信息。gem-builder 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

  • 适合根据关键词、任务场景或来源线索快速定位候选结果。
  • 可结合来源仓库和原始 README 进一步核验具体用法。
  • 安装方式:通过 npx skills add 命令从指定仓库添加技能。
  • 建议确认权限范围、维护状态,以及是否会触发联网或文件读写操作。

SKILL.md

Gem Builder

Core Philosophy

  • Minimal dependencies: Only add gems you truly need
  • Single responsibility: Each class/module does one thing well
  • Semantic versioning: Follow SemVer strictly (MAJOR.MINOR.PATCH)
  • Test coverage: Every public method has tests
  • Documentation: YARD docs, README, and CHANGELOG
  • Fail fast: Validate inputs early, raise descriptive errors

Gem Structure

my_gem/
├── lib/
│   ├── my_gem.rb              # Main entry point
│   ├── my_gem/
│   │   ├── version.rb         # VERSION constant
│   │   ├── config.rb          # Configuration class
│   │   ├── errors.rb          # Error hierarchy
│   │   └── [feature].rb       # Feature modules
├── test/                      # Test suite
├── my_gem.gemspec             # Gem specification
├── Gemfile                    # Development dependencies
├── Rakefile                   # Build tasks
├── README.md                  # User documentation
├── CHANGELOG.md               # Version history
└── LICENSE.txt                # License file

Main Entry Point

# lib/my_gem.rb
require_relative "my_gem/version"
require_relative "my_gem/config"
require_relative "my_gem/errors"

module MyGem
  class << self
    def config
      @config ||= Config.new
    end

    def configure
      yield(config)
    end

    def reset_configuration!
      @config = nil
    end
  end
end

Gemspec Best Practices

# my_gem.gemspec
require_relative "lib/my_gem/version"

Gem::Specification.new do |spec|
  spec.name          = "my_gem"
  spec.version       = MyGem::VERSION
  spec.authors       = ["Your Name"]
  spec.email         = ["you@example.com"]
  spec.summary       = "One-line description"
  spec.homepage      = "https://github.com/username/my_gem"
  spec.license       = "MIT"
  spec.required_ruby_version = ">= 3.2.0"

  spec.metadata["rubygems_mfa_required"] = "true"
  spec.metadata["changelog_uri"] = "#{spec.homepage}/blob/main/CHANGELOG.md"

  # Exclude test/CI files
  spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls|
    ls.readlines("\x0", chomp: true).reject { |f| f.start_with?(*%w[bin/ test/ .github/]) }
  end
  spec.require_paths = ["lib"]
end

Gem Types

TypeKey Features
LibraryPure Ruby, no external services
API ClientHTTP wrapper with resource pattern
CLI Toolspec.executables, bindir setup
Rails IntegrationRailtie with ActiveSupport.on_load

API Client Pattern

class Client
  def initialize(api_key: nil)
    @api_key = api_key || MyGem.config.api_key
    raise ArgumentError, "API key required" if @api_key.to_s.empty?
  end

  def users = @users ||= Resources::Users.new(self)
  def posts = @posts ||= Resources::Posts.new(self)
end

Rails Integration

Never require Rails directly. Use lazy loading:

# lib/my_gem/railtie.rb
class Railtie < Rails::Railtie
  initializer "my_gem.configure" do
    ActiveSupport.on_load(:active_record) do
      extend MyGem::Model
    end
  end
end

# lib/my_gem.rb
require_relative "my_gem/railtie" if defined?(Rails)

Class Macro DSL

The pattern used by searchkick, lockbox:

# Usage: mygemname word_start: [:name]
module Model
  def mygemname(**options)
    unknown = options.keys - KNOWN_OPTIONS
    raise ArgumentError, "Unknown: #{unknown.join(", ")}" if unknown.any?

    mod = Module.new
    mod.module_eval { define_method(:some_method) { options[:key] } }
    include mod
    class_variable_set(:@@mygemname_options, options.dup)
  end
end

Configuration Pattern

# lib/my_gem/config.rb
class Config
  attr_accessor :api_key, :base_url, :timeout
  attr_writer :logger

  def initialize
    @api_key = ENV.fetch("MY_GEM_API_KEY", nil)
    @base_url = ENV.fetch("MY_GEM_BASE_URL", "https://api.example.com")
    @timeout = Integer(ENV.fetch("MY_GEM_TIMEOUT", 30)) rescue 30
  end

  def logger
    @logger ||= defined?(Rails) ? Rails.logger : Logger.new($stderr)
  end
end

Usage:

MyGem.configure do |config|
  config.api_key = "secret"
end

Error Handling

# lib/my_gem/errors.rb
module MyGem
  class Error < StandardError
    attr_reader :status, :body

    def initialize(message = nil, status: nil, body: nil)
      super(message)
      @status, @body = status, body
    end
  end

  class ConfigurationError < Error; end
  class AuthenticationError < Error; end  # 401
  class ClientError < Error; end          # 4xx
  class ServerError < Error; end          # 5xx
  class NetworkError < Error; end         # Connection failures
end

Testing Setup

# test/test_helper.rb
$LOAD_PATH.unshift File.expand_path("../lib", __dir__)
require "my_gem"
require "minitest/autorun"
require "webmock/minitest"

module TestConfig
  def setup_config
    WebMock.reset!
    MyGem.reset_configuration!
    MyGem.configure { |c| c.api_key = "test-key" }
  end

  def teardown_config
    WebMock.reset!
    MyGem.reset_configuration!
  end
end
class ClientTest < Minitest::Test
  include TestConfig
  def setup = setup_config
  def teardown = teardown_config

  def test_requires_api_key
    MyGem.config.api_key = nil
    assert_raises(ArgumentError) { MyGem::Client.new }
  end
end

Documentation

YARD Setup (.yardopts)

--markup markdown
--no-private
lib/**/*.rb
- README.md

README Sections

Installation, Quick Start, Configuration, Features, Development, License.

CHANGELOG (Keep a Changelog)

## [1.0.0] - 2025-01-15
### Added
- Initial release

Build & Release

Rakefile

require "bundler/gem_tasks"
require "minitest/test_task"
Minitest::TestTask.create

require "rubocop/rake_task"
RuboCop::RakeTask.new

task default: %i[test rubocop]

Release Workflow

# 1. Update lib/my_gem/version.rb
# 2. Update CHANGELOG.md
# 3. Commit and release
git commit -am "Release v1.0.0"
bundle exec rake release

Anti-Patterns

AvoidInstead
method_missingdefine_method
@@class_variablesclass << self with ivars
Requiring Rails directlyActiveSupport.on_load
Many runtime depsPrefer stdlib
Committing Gemfile.lockOnly lock in apps
Heavy DSLsExplicit Ruby
autoloadrequire_relative

Best Practices Checklist

Structure:

  • Standard directory layout
  • Version in single location
  • Frozen string literals

Gemspec:

  • All metadata populated
  • rubygems_mfa_required = true
  • Minimal runtime deps

Configuration:

  • Environment variable fallbacks
  • Block-based DSL
  • Test-friendly reset method

Error Handling:

  • Custom hierarchy
  • Descriptive messages
  • Status/body preserved

Testing:

  • Isolation between tests
  • WebMock for HTTP
  • Success and failure cases

Documentation:

  • YARD on public methods
  • README with quick start
  • CHANGELOG

Rails (if applicable):

  • Optional with if defined?(Rails)
  • Isolated namespace
  • ActiveSupport.on_load hooks

References

  • references/templates.md - Copy-paste templates (CI, gemspec, README)
  • references/advanced-patterns.md - Database adapters, multi-version testing
  • references/engine-migrations.md - Keep migrations in Rails engines

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

36.99%
按下载量换算106

Claude

33.08%
按下载量换算95

Cursor

17.46%
按下载量换算50

Gemini CLI

8.61%
按下载量换算25

安全审计

Gen Agent Trust Hub

未通过

Socket

通过

Snyk

通过

权限和风险

敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills