Agent skill

Rigor Builtin Import

by rigortype in rigortype/rigor

Import a Ruby core/stdlib class or refinement carrier from the CRuby reference into Rigor's catalogues.

MPL-2.0Auto-check passedDevelopment

Install Rigor Builtin Import

skills CLI
$ npx skills add rigortype/rigor --skill rigor-builtin-import -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rigortype/rigor rigor-builtin-import --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rigortype/rigor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/rigor-builtin-import .claude/skills/rigor-builtin-import && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
rigor-builtin-import
GitHub stars
106
Token cost
~4.6k tokens
SKILL.md length
2,102 words
Files
1
Skills in repo
36
Repo updated
First seen
Licence
MPL-2.0

At a glance

Import a Ruby core/stdlib class or refinement carrier from the CRuby reference into Rigor's catalogues.

  • Works in 10 steps: Run the scaffold script (recommended) → Locate the upstream sources → Add the topic to the extractor → …
  • Extending built-in folding coverage
  • SKILL.md covers Background, Workflow, Decision Points (where the… and Quick Checklist, plus 1 more section
  • Calls make, nix and bundle

What it does

Rigor Builtin Import is an agent skill from rigortype/rigor. Import a Ruby core/stdlib class or refinement carrier from the CRuby reference into Rigor's catalogues. Use when extending built-in folding coverage or onboarding RBS::Extended; not for app code or plugin authoring.

Its SKILL.md is about 4.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. It works with Ruby. The repository describes itself as: Inference-first static analysis for Ruby. The licence is MPL-2.0.

When your agent uses it

  • Extending built-in folding coverage
  • Onboarding RBS::Extended
  • Not for app code
  • Plugin authoring

Example prompts

  • “/rigor-builtin-import”

Workflow steps

10 steps, taken from the step headings in SKILL.md.

  1. Run the scaffold script (recommended)
  2. Locate the upstream sources
  3. Add the topic to the extractor
  4. Regenerate the catalogue + commit the YAML
  5. Wire the runtime loader (when introducing a new catalog file)
  6. Decide which catalog :leaf entries are actually safe
  7. Decide which RBS-side returns deserve a refinement override
  8. Self-asserting fixture + spec
  9. Verify, lint, self-check
  10. Document and changelog

What it can do on your machine

Read from SKILL.md and the folder at commit 57a67cf. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • make
    • nix
    • bundle

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Rigor Builtin Import loads about 4.6k tokens when it runs. Until then it costs about 60 tokens; SKILL.md has 2,102 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~60
When it runs · the whole SKILL.md, loaded when a task matches
~4.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rigortype/rigor at commit 57a67cf, republished under its MPL-2.0 licence (© rigortype). 2,102 words, ~4,610 tokens.

Download SKILL.mdSave it as .claude/skills/rigor-builtin-import/SKILL.md (or your agent's skills folder).
name
rigor-builtin-import
description
Import a Ruby core/stdlib class or refinement carrier from the CRuby reference into Rigor's catalogues. Use when extending built-in folding coverage or onboarding `RBS::Extended`; not for app code or plugin authoring.
metadata.internal
true

Rigor Built-in Type Import

Use this skill to fold a new core / stdlib class (or a new family of refinement names) into Rigor's catalog-driven inference pipeline. The flow is the same whether you are importing Hash, Range, Set, Pathname, Time, Date, Enumerable-aware projections, or a brand-new Refined-tier predicate.

Background

Rigor's constant-fold dispatcher consults two complementary surfaces:

  • Hand-rolled allow lists in lib/rigor/inference/method_dispatcher/constant_folding.rb — INTEGER_UNARY / STRING_BINARY / NIL_UNARY etc. These are the trusted floor.
  • Generated catalogues under data/builtins/ruby_core/<topic>.yml — produced offline from the CRuby reference checkout by tool/extract_builtin_catalog.rb and consumed by lib/rigor/inference/builtins/method_catalog.rb plus the per-topic singletons (STRING_CATALOG, ARRAY_CATALOG, …).

The catalog tier is the additive superset; the hand-rolled tier remains the safety net. Adding a new class means deciding for each method whether the catalog's static classification is correct and, when it is not, how to express the override (blocklist, hand-rolled add, RBS-tier rule).

The principled background lives in:

Read those before extending the catalogue if you have not already; the decision points below assume the principle's framing.

Workflow

The flow has six stages. The first four are mechanical; the last two are decision-heavy.

tool/scaffold_builtin_catalog.rb automates the mechanical 70 % of stages 1–4 and 7. Run it once and the manual work that remains is just the per-class judgement calls — blocklist curation, fixture body, and the changelog fragment.

sh
nix develop --command \
  bundle exec ruby tool/scaffold_builtin_catalog.rb <topic> <ClassName> \
    --c-path references/ruby/<topic>.c \
    --rb-prelude references/ruby/<topic>.rb \
    --rb-global rb_c<ClassName> \
    --extract

What the script writes for you:

  • a TOPICS entry in tool/extract_builtin_catalog.rb (matching the existing two-space indentation);
  • a BASE_CLASS_VARS row when --rb-global is given;
  • lib/rigor/inference/builtins/<topic>_catalog.rb (loader stub with a TODO(blocklist curation) marker);
  • a CATALOG_BY_CLASS row plus the require_relative line in constant_folding.rb;
  • spec/integration/fixtures/<topic>_catalog.rb (fixture stub with a TODO(scaffold) marker);
  • a describe block in spec/integration/type_construction_spec.rb;
  • with --extract, runs bundle exec ruby tool/extract_builtin_catalog.rb <topic> so the YAML is in place by the time you start curating.

What you still do by hand (the script prints this checklist on exit):

  1. Read data/builtins/ruby_core/<topic>.yml and curate the blocklist in the loader file (Stage 5).
  2. Replace the placeholder assert_type lines in the fixture with the receiver-specific projections (Stage 7).
  3. Add a changelog fragment under changelog.d/<section>/ (Stage 9).
  4. Run make verify-changed, commit, and push a Draft PR for CI (Stage 8).

Pass --dry-run to preview the planned edits without writing. Pass --init-fn / --rbs to override the defaults when the upstream layout differs (e.g. Init_DateCore instead of Init_Date, or a multi-class RBS).

The remaining stages below describe the underlying procedure for cases the script cannot handle (modules with rb_m* mixins, multi-class topics like Numeric where Init_Numeric defines Integer + Float + Numeric simultaneously, prelude paths whose name does not match the topic — like Time's timev.rb).

Stage 1 — Locate the upstream sources

Confirm every source the extractor needs is in references/:

sh
ls references/ruby/<topic>.c references/ruby/<topic>.rb 2>&1
ls references/rbs/core/<class>.rbs
grep -n "^Init_<Topic>" references/ruby/<topic>.c

The <topic>.rb prelude is OPTIONAL — many classes do not have one (string.c, file.c, …). If the C file lacks an Init_<Topic>(void) block at module scope, the extractor cannot find it; either point to the actual init function (e.g. Init_HashImpl) or fall back to a hand-rolled catalogue.

If references/ruby or references/rbs is not the version the user expects, run make pull-submodules before continuing.

Stage 2 — Add the topic to the extractor

Edit tool/extract_builtin_catalog.rb and append a new entry to the TOPICS table:

ruby
"hash" => {
  init_function: "Init_Hash",
  ruby_c_path: "references/ruby/hash.c",
  ruby_prelude_path: "references/ruby/hash.rb",  # nil if absent
  rbs_paths: { "Hash" => "references/rbs/core/hash.rbs" },
  c_index_paths: %w[references/ruby/hash.c],
  output_path: "data/builtins/ruby_core/hash.yml"
}

Common decisions at this stage:

  • RBS for multi-class topics: when one Init function defines several classes (e.g. Init_String defines both String and Symbol), list every RBS file you want resolved. The extractor's RbsCatalog takes a class_name => path map.
  • C body indexing across files: c_index_paths is the search list for cfunc bodies. Adding references/ruby/bignum.c to the Numeric topic recovered rb_int_powm for example. If the topic's methods delegate into siblings (rb_str_* helpers in string.c only, but rb_ary_* helpers split across array.c + internal/array.h), include every .c file the cfunc bodies might live in.
  • Class-var aliases: BASE_CLASS_VARS already maps rb_cArray, rb_cHash, rb_cIO, rb_cFile, rb_eIndexError, etc. If your topic's Init block references a global the table does not know, add it once and every future topic benefits.

Run the extractor:

sh
nix develop --command \
  bundle exec ruby tool/extract_builtin_catalog.rb <topic>

The output prints a per-purity histogram; treat it as the first sanity check (e.g. mutates_self: 0 on a class that obviously mutates means the classifier missed something).

Stage 3 — Regenerate the catalogue + commit the YAML
sh
nix develop --command \
  make extract-builtin-catalogs

The Make target regenerates every topic in TOPICS so the YAMLs stay coherent. Commit data/builtins/ruby_core/<topic>.yml alongside the extractor change so downstream readers see the same view.

The YAML is documentation-grade: humans MAY read it. Skim the instance_methods map for surprises before moving on.

Stage 4 — Wire the runtime loader (when introducing a new catalog file)

For an entirely new class family, add a singleton loader under lib/rigor/inference/builtins/:

ruby
# lib/rigor/inference/builtins/hash_catalog.rb
HASH_CATALOG = MethodCatalog.new(
  path: File.expand_path("../../../../data/builtins/ruby_core/hash.yml", __dir__),
  mutating_selectors: { "Hash" => Set[…] }
)

Then route the new singleton from MethodDispatcher::ConstantFolding#catalog_for(receiver_value). For a class that already has a loader (e.g. you're extending STRING_CATALOG because you added string.rb extraction), no Ruby code change is required — re-running the extractor is enough.

Stage 5 — Decide which catalog :leaf entries are actually safe

This is the first decision-heavy step. The static classifier in the extractor has known limits:

  • Indirect mutators slip through. rb_str_replace calls str_modifiable (a helper not in the regex's mutator list), so it lands as :leaf even though it mutates. The String catalog's mutating_selectors blocklist exists exactly to catch these.
  • Block-dependent methods may classify as :leaf when the C body does not call rb_yield directly but routes through a helper. Cross-check block_dependent count against the obvious iteration methods (each, map, select, reduce, …) — if your gut says "this should be block-dependent" and the YAML says :leaf, blocklist it.
  • Bang-suffixed methods are universally blocked by MethodCatalog#blocked? regardless of the YAML's purity. You do not need to enumerate them in mutating_selectors.

Walk the new YAML and curate:

sh
grep -A1 "purity: leaf" data/builtins/ruby_core/<topic>.yml | less

Add any false-positive :leafs to the topic's blocklist. Conservatism wins: a blocked-but-safe method is a missed fold opportunity (small loss); an allowed-but-mutating method is a soundness bug (large loss).

When in doubt, write a one-line probe (bundle exec exe/rigor check /tmp/probe.rb) that exercises the suspect method on a Constant literal and check whether the result is plausible.

Stage 6 — Decide which RBS-side returns deserve a refinement override

The robustness principle (ADR-5) directs you to tighten returns where you can prove a precise carrier. Common candidates:

  • #size / #length / #count / #bytesize on a container always return non-negative-int. MethodDispatcher::ShapeDispatch already handles this for Array / String / Hash / Set / Range. Extend SIZE_RETURNING_NOMINALS if you import a new container.
  • #empty? / #any? / #none? on a non-empty refinement (Difference[Array, Tuple[]]) collapses to Constant[false] / Constant[true]. The empty-removal projection in ShapeDispatch#dispatch_difference already covers Array / Hash / Set / String.
  • Methods that the RBS sig declares as String but that always return a non-empty string. Tighten via %a{rigor:v1:return: non-empty-string} directly in the project's .rbs (the user opts in).

Do NOT tighten:

  • Methods whose signature is "for all callers, all values" (e.g. Array#first returning T? — sometimes nil for empty arrays).
  • Methods whose return depends on platform (File.basename etc — gated behind fold_platform_specific_paths).
  • Methods that delegate into user-redefinable code (everything classified :dispatch).
Stage 7 — Self-asserting fixture + spec

Every new topic gets a fixture under spec/integration/fixtures/<topic>_catalog.rb (or sister directory for refinement-bearing fixtures) and a one-line entry in spec/integration/type_construction_spec.rb:

ruby
describe "fixtures/<topic>_catalog.rb — <topic> catalog-driven folding" do
  let(:harness) { harness_for("<topic>_catalog") }

  it "self-asserts the new <topic> fold coverage" do
    mismatches = harness.errors.select { |d| d.message.start_with?("assert_type ") }
    expect(mismatches).to be_empty
  end
end

The fixture's assert_type calls double as documentation; readers see the behaviour without cross-referencing the spec body. Demonstrate at least one folded leaf method, one composite operation (catalog + narrowing), and one mutator that intentionally does NOT fold (so the blocklist is exercised end-to-end).

Stage 8 — Verify, lint, self-check

Final gate before commit:

sh
nix develop --command make verify-changed
nix develop --command bundle exec exe/rigor check --no-cache --fail-on=warning exe bin

exe and bin are outside both make check and CI's self-check, so the second line is theirs. A catalog change can move folding anywhere in lib, which a changed-files gate does not see; the CI self-check over the whole of lib is the gate for that, so push the Draft PR and read it.

Self-check on the project's own lib MUST stay clean. If your changes introduce false positives in Rigor's own code, fix them before committing — usually by extending the catalog blocklist or by adding a # rigor:disable <rule> comment with a load-bearing reason.

Show full SKILL.md (792 more words)Show less
Stage 9 — Document and changelog
  • Add a one-sentence fragment at changelog.d/added/<branch-slug>.md (docs/agents/contribution-flow.md § "Release Cadence") describing the new topic in user-visible terms (which methods now fold, which refinements are now available through RBS::Extended).
  • If the topic introduces a new refinement carrier or a new RBS::Extended directive, update docs/type-specification/imported-built-in-types.md and the matching ADR / spec doc.

Decision Points (where the procedure is NOT mechanical)

These are the non-mechanical judgement calls. The skill records the question and the rule of thumb; the operator picks.

When to import a class vs. expand the hand-rolled allow list
  • Catalog (preferred): the class has a stable Init function in CRuby, the method count is large (>15), and the catalogue can be regenerated without per-method curation.
  • Hand-rolled: the class is a thin wrapper (e.g. Pathname mostly delegates to File), or the method count is small (<10), or the project does not vendor the upstream source.
When to add a mutating_selectors blocklist entry
  • The catalog says :leaf AND the method's name implies mutation (replace, clear, <<, []=, concat, insert, prepend, freeze, …).
  • The catalog says :leaf AND a runtime probe of Constant<base>.method(args) raises FrozenError against a frozen literal carrier (a strong signal of mutation).
  • The catalog says :leaf AND the method's docstring or RBS sig describes mutation in language even if the C-body classifier missed the indirect mutator.

When in doubt, blocklist. The cost of a missed fold is one method's loss; the cost of a wrong fold is downstream type rot.

When to tighten a return type via RBS::Extended
  • The method's value is always non-empty / always positive / always within a known range across the API contract — not "happens to be in the test suite".
  • The tightening would observably help a call-site narrowing tier (e.g. the next if x > 0 actually narrows because the input is non-negative-int rather than Integer).
  • The user has opted in by writing the annotation in their .rbs file. Rigor never silently writes the override; the annotation is the user's authorship.
When to introduce a new refinement carrier
  • The new shape is already in imported-built-in-types.md — implement it.
  • The new shape is a point-removal (e.g. non-empty-string, non-zero-int) — use Type::Difference and add a Combinator.<name> factory plus a Builtins::ImportedRefinements registry entry. The carrier landed in v0.0.3.
  • The new shape is a predicate-subset (e.g. lowercase-string, numeric-string, decimal-int-string) — use Type::Refined. The carrier landed in v0.0.4. Concrete steps:
    1. Pick a predicate_id Symbol (kebab-case → snake_case, e.g. numeric-string → :numeric).
    2. Add an entry to Type::Refined::PREDICATES whose recogniser MUST be total over arbitrary input (return false rather than raise on non-base values). The recogniser is invoked at constant-fold and acceptance time over Constant<base> values.
    3. Add an entry to Type::Refined::CANONICAL_NAMES keyed on [base_class_name, predicate_id] so describe prints the kebab-case spelling.
    4. Add a Combinator.<snake_case_name> factory that returns Refined.new(nominal_of(base), predicate_id), plus the matching sig/rigor/type.rbs entry under the Combinator module so the self-check accepts call sites.
    5. Add a Builtins::ImportedRefinements::REGISTRY entry mapping the kebab-case name to the new factory.
    6. Add catalog-tier projections in MethodDispatcher::ShapeDispatch#dispatch_refined for any methods whose answer is determined by the refinement (e.g. case-fold idempotence). Methods without a specific projection delegate to the base nominal so size-tier projections still apply.
    7. Add a self-asserting fixture under spec/integration/fixtures/<name>/ (demo.rb + sig/) and wire it into spec/integration/type_construction_spec.rb.
  • The new shape is an Enumerable-aware projection (e.g. Enumerable[T] block parameter typing across Array / Set / Range) — that is a v0.0.4 architecture slice, not a per-class import.
When to update ADR-3 / ADR-5 / spec docs
  • Adding a new carrier class → ADR-3 Class Catalogue Draft entry.
  • Adding a new refinement family → imported-built-in-types.md table row + ADR-5 case mention if the family stresses the strict-return / lenient-parameter asymmetry.
  • Adding a new RBS::Extended directive → docs/type-specification/rbs-extended.md grammar update + ADR-2 Extension surface note.

Quick Checklist

Before declaring an import done:

  • tool/extract_builtin_catalog.rb TOPICS entry present.
  • make extract-builtin-catalogs regenerated every YAML cleanly.
  • The new YAML committed under data/builtins/ruby_core/.
  • Per-topic blocklist (MethodCatalog.new(mutating_selectors: …)) curated for false-positive :leafs.
  • MethodDispatcher::ConstantFolding#catalog_for routes the new receiver class.
  • At least one self-asserting fixture under spec/integration/fixtures/.
  • make verify-changed and rigor check exe bin clean locally; CI (including the self-check) green on the Draft PR.
  • A changelog.d/ fragment records the user-visible additions.
  • If a new refinement / directive lands, the matching ADR / spec doc is updated.

RBS-overlay gotcha (cost a CI-only env collapse)

When adding a data/core_overlay/*.rbs reopen of a core/stdlib constant, match the upstream class/module KIND: ERB and CSV are classes in rbs, not modules — a module ERB reopen raises RBS::DuplicatedDeclarationError that collapses the whole env to RBS classes available: 0, and this repo does not load erb/csv, so self-check cannot catch it (a project that does, like GitLab, can). Wrap a nested class in its explicit parent (class CSV; class MalformedCSVError) — a flat class CSV::MalformedCSVError makes RBS synthesize the namespace and fails the synthesized_namespaces spec as an order-dependent, binpacker-masked flake. Validate against a stdlib-loading corpus project, and run the affected spec in isolation.

© rigortype, MPL-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/rigor-builtin-import of rigortype/rigor.

Open the folder on GitHubat commit 57a67cf

Compare with similar skills

Rigor Builtin Import next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Rigor Builtin Import compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Rigor Builtin Import this skillrigortype/rigor106—~4.6kAutomated safety check: PassMPL-2.0
Gumroad Prod Consoleantiwork/gumroad9.8k—~2.9kAutomated safety check: NotesMIT
Fastlane Pull Request Reviewfastlane/fastlane42k—~550Automated safety check: PassMIT
Dependency UpdaterAsvarox/allkaraoke2614 repos~3.5kAutomated safety check: PassMIT
Wise APIlineofflight/frankfurter2k—~1.1kAutomated safety check: PassMIT
Write RbsDataDog/dd-trace-rb417—~805Automated safety check: PassCustom licence

Similar skills

  • Gumroad Prod Console

    antiwork/gumroad

    Execute read-only Ruby/Rails commands against Gumroad's production database for debugging and investigation.

    9.8k GitHub stars~2.9k tokensUpdated today
    DevelopmentAuto-check: notes
  • Reviews a fastlane pull request against its linked issue and the project guides, separating blocking from non-blocking findings and handling vulnerabilities privately.

    42k GitHub stars~550 tokensUpdated today
    DevelopmentAuto-check passed
  • Dependency Updater

    Asvarox/allkaraoke

    Smart dependency management for any language. An agent skill from Asvarox/allkaraoke.

    261 GitHub starsUsed in 4 repos~3.5k tokens
    DevelopmentAuto-check passed
  • Wise API

    lineofflight/frankfurter

    A skill your agent uses when querying Wise for exchange rates (real-time or historical), validating Frankfurter rates against Wise mid-market, debugging rate discrepancies, or when the user mentions…

    2k GitHub stars~1.1k tokensUpdated 7 days ago
    DevelopmentAuto-check passed
  • Write Rbs

    DataDog/dd-trace-rb

    Official

    A skill your agent uses when writing, reviewing, or modifying RBS type signatures (sig//.rbs, vendor/rbs//.rbs, or inline : annotations) or running Steep – e.g.

    417 GitHub stars~805 tokensUpdated today
    DevelopmentAuto-check passed
  • Addresses unresolved pull request review threads and suppressed (low-confidence) Copilot review comments on the current branch, folds each fix into the…

    1.8k GitHub stars~657 tokensUpdated 7 days ago
    DevelopmentAuto-check passed

More from rigortype/rigor

All 36 skills in this repo
  • Rigor Regression Sweep

    rigortype/rigor

    Measure Rigor's baseline drift across the tagged history of a real OSS Ruby project.

    106 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check passed
  • Adjudicate a rigor unused report safely before proposing dead-code removal.

    106 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check passed
  • Rigor Baseline Reduce

    rigortype/rigor

    Reduce an existing .rigor-baseline.yml rule by rule by triaging sites, fixing or intentionally suppressing them, and regenerating the baseline.

    106 GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Rigor Doctor

    rigortype/rigor

    Validate that a project's Rigor configuration, plugins, paths, and baseline are actually healthy.

    106 GitHub stars~767 tokensUpdated yesterday
    Auto-check passed
  • Rigor Plugin Author

    rigortype/rigor

    Author a new Rigor plugin, choosing plugins/ for production support or examples/ for a contract walkthrough.

    106 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check: notes
  • Rigor Plugin Author

    rigortype/rigor

    Author a Rigor plugin in an adopting project or standalone rigor- gem for a DSL, framework, or metaprogramming pattern.

    106 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Rigor Builtin Import

What does Rigor Builtin Import do?

Import a Ruby core/stdlib class or refinement carrier from the CRuby reference into Rigor's catalogues. Rigor Builtin Import is an agent skill from rigortype/rigor. Import a Ruby core/stdlib class or refinement carrier from the CRuby reference into Rigor's catalogues.

When should I use Rigor Builtin Import?

Rigor Builtin Import fits situations like: extending built-in folding coverage; onboarding RBS::Extended; not for app code; plugin authoring.

How do I install Rigor Builtin Import in Claude Code?

Run `npx skills add rigortype/rigor --skill rigor-builtin-import -a claude-code`. Or copy the skill folder (.claude/skills/rigor-builtin-import in rigortype/rigor) into .claude/skills/rigor-builtin-import in your project. Claude Code loads it when a task matches its description.

How do I install Rigor Builtin Import in Codex?

Run `npx skills add rigortype/rigor --skill rigor-builtin-import -a codex`. Or copy the skill folder (.claude/skills/rigor-builtin-import in rigortype/rigor) into .agents/skills/rigor-builtin-import in your project. Codex loads it when a task matches its description.

Can I use Rigor Builtin Import in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rigortype/rigor --skill rigor-builtin-import -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/rigor-builtin-import, .gemini/skills/rigor-builtin-import, .github/skills/rigor-builtin-import and .opencode/skills/rigor-builtin-import in your project.

What does Rigor Builtin Import need to run?

Going by SKILL.md and its folder, Rigor Builtin Import needs the command-line tools its instructions call (make, nix and bundle).

Does Rigor Builtin Import access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Rigor Builtin Import safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Rigor Builtin Import use?

Rigor Builtin Import is published under the MPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Rigor Builtin Import use?

About 4.6k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Rigor Builtin Import?

Skills that share tags, products or a category with Rigor Builtin Import: Gumroad Prod Console (antiwork/gumroad, 9.8k stars), Fastlane Pull Request Review (fastlane/fastlane, 42k stars), Dependency Updater (Asvarox/allkaraoke, 261 stars) and Wise API (lineofflight/frankfurter, 2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Rigor Builtin Import?

rigortype (a GitHub organization) maintains it in rigortype/rigor, which has 106 GitHub stars. The repository holds 36 skills in this directory. The repository was last updated on October 8, 2026.

Source: rigortype/rigor on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.