Gumroad Prod Console
antiwork/gumroad
Execute read-only Ruby/Rails commands against Gumroad's production database for debugging and investigation.
Import a Ruby core/stdlib class or refinement carrier from the CRuby reference into Rigor's catalogues.
$ npx skills add rigortype/rigor --skill rigor-builtin-import -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rigortype/rigor rigor-builtin-import --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "rigor-builtin-import" agent skill from https://github.com/rigortype/rigor/tree/master/.claude/skills/rigor-builtin-import into .claude/skills/rigor-builtin-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rigor-builtin-import", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/rigortype/rigor/tree/master/.claude/skills/rigor-builtin-importType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add rigortype/rigor --skill rigor-builtin-import -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rigortype/rigor rigor-builtin-import --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rigortype/rigor.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/rigor-builtin-import .agents/skills/rigor-builtin-import && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rigor-builtin-import" agent skill from https://github.com/rigortype/rigor/tree/master/.claude/skills/rigor-builtin-import into .agents/skills/rigor-builtin-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rigor-builtin-import", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rigortype/rigor --skill rigor-builtin-import -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rigortype/rigor rigor-builtin-import --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rigortype/rigor.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/rigor-builtin-import .cursor/skills/rigor-builtin-import && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "rigor-builtin-import" agent skill from https://github.com/rigortype/rigor/tree/master/.claude/skills/rigor-builtin-import into .cursor/skills/rigor-builtin-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rigor-builtin-import", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/rigortype/rigor.git --path .claude/skills/rigor-builtin-import--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add rigortype/rigor --skill rigor-builtin-import -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rigortype/rigor rigor-builtin-import --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rigortype/rigor.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/rigor-builtin-import .gemini/skills/rigor-builtin-import && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "rigor-builtin-import" agent skill from https://github.com/rigortype/rigor/tree/master/.claude/skills/rigor-builtin-import into .gemini/skills/rigor-builtin-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rigor-builtin-import", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install rigortype/rigor rigor-builtin-importInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add rigortype/rigor --skill rigor-builtin-import -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rigortype/rigor.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/rigor-builtin-import .github/skills/rigor-builtin-import && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "rigor-builtin-import" agent skill from https://github.com/rigortype/rigor/tree/master/.claude/skills/rigor-builtin-import into .github/skills/rigor-builtin-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rigor-builtin-import", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rigortype/rigor --skill rigor-builtin-import -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rigortype/rigor rigor-builtin-import --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rigortype/rigor.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/rigor-builtin-import .opencode/skills/rigor-builtin-import && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "rigor-builtin-import" agent skill from https://github.com/rigortype/rigor/tree/master/.claude/skills/rigor-builtin-import into .opencode/skills/rigor-builtin-import/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rigor-builtin-import", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
rigor-builtin-importImport 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. 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.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 57a67cf. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
makenixbundleFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from rigortype/rigor at commit 57a67cf, republished under its MPL-2.0 licence (© rigortype). 2,102 words, ~4,610 tokens.
.claude/skills/rigor-builtin-import/SKILL.md (or your agent's skills folder).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.
Rigor's constant-fold dispatcher consults two complementary surfaces:
lib/rigor/inference/method_dispatcher/constant_folding.rb — INTEGER_UNARY / STRING_BINARY / NIL_UNARY etc. These are the trusted floor.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:
docs/adr/3-type-representation.md — type-object layout and the OQ3 working decision (Difference + Refined).docs/adr/5-robustness-principle.md — strict-on-returns, lenient-on-parameters.docs/type-specification/imported-built-in-types.md — the canonical kebab-case refinement names.Read those before extending the catalogue if you have not already; the decision points below assume the principle's framing.
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.
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> \
--extractWhat the script writes for you:
TOPICS entry in tool/extract_builtin_catalog.rb (matching the existing two-space indentation);BASE_CLASS_VARS row when --rb-global is given;lib/rigor/inference/builtins/<topic>_catalog.rb (loader stub with a TODO(blocklist curation) marker);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);describe block in spec/integration/type_construction_spec.rb;--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):
data/builtins/ruby_core/<topic>.yml and curate the blocklist in the loader file (Stage 5).assert_type lines in the fixture with the receiver-specific projections (Stage 7).changelog.d/<section>/ (Stage 9).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).
Confirm every source the extractor needs is in references/:
ls references/ruby/<topic>.c references/ruby/<topic>.rb 2>&1
ls references/rbs/core/<class>.rbs
grep -n "^Init_<Topic>" references/ruby/<topic>.cThe <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.
Edit tool/extract_builtin_catalog.rb and append a new entry to the TOPICS table:
"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:
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_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.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:
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).
nix develop --command \
make extract-builtin-catalogsThe 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.
For an entirely new class family, add a singleton loader under lib/rigor/inference/builtins/:
# 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.
:leaf entries are actually safeThis is the first decision-heavy step. The static classifier in the extractor has known limits:
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.: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.MethodCatalog#blocked? regardless of the YAML's purity. You do not need to enumerate them in mutating_selectors.Walk the new YAML and curate:
grep -A1 "purity: leaf" data/builtins/ruby_core/<topic>.yml | lessAdd 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.
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.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:
Array#first returning T? — sometimes nil for empty arrays).File.basename etc — gated behind fold_platform_specific_paths).:dispatch).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:
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
endThe 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).
Final gate before commit:
nix develop --command make verify-changed
nix develop --command bundle exec exe/rigor check --no-cache --fail-on=warning exe binexe 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.
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).RBS::Extended directive, update docs/type-specification/imported-built-in-types.md and the matching ADR / spec doc.These are the non-mechanical judgement calls. The skill records the question and the rule of thumb; the operator picks.
Pathname mostly delegates to File), or the method count is small (<10), or the project does not vendor the upstream source.mutating_selectors blocklist entry:leaf AND the method's name implies mutation (replace, clear, <<, []=, concat, insert, prepend, freeze, …).:leaf AND a runtime probe of Constant<base>.method(args) raises FrozenError against a frozen literal carrier (a strong signal of mutation).: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.
if x > 0 actually narrows because the input is non-negative-int rather than Integer)..rbs file. Rigor never silently writes the override; the annotation is the user's authorship.imported-built-in-types.md — implement it.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.lowercase-string, numeric-string, decimal-int-string) — use Type::Refined. The carrier landed in v0.0.4. Concrete steps:predicate_id Symbol (kebab-case → snake_case, e.g. numeric-string → :numeric).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.Type::Refined::CANONICAL_NAMES keyed on [base_class_name, predicate_id] so describe prints the kebab-case spelling.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.Builtins::ImportedRefinements::REGISTRY entry mapping the kebab-case name to the new factory.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.spec/integration/fixtures/<name>/ (demo.rb + sig/) and wire it into spec/integration/type_construction_spec.rb.Enumerable[T] block parameter typing across Array / Set / Range) — that is a v0.0.4 architecture slice, not a per-class import.imported-built-in-types.md table row + ADR-5 case mention if the family stresses the strict-return / lenient-parameter asymmetry.RBS::Extended directive → docs/type-specification/rbs-extended.md grammar update + ADR-2 Extension surface note.Before declaring an import done:
tool/extract_builtin_catalog.rb TOPICS entry present.make extract-builtin-catalogs regenerated every YAML cleanly.data/builtins/ruby_core/.MethodCatalog.new(mutating_selectors: …)) curated for false-positive :leafs.MethodDispatcher::ConstantFolding#catalog_for routes the new receiver class.spec/integration/fixtures/.make verify-changed and rigor check exe bin clean locally; CI (including the self-check) green on the Draft PR.changelog.d/ fragment records the user-visible additions.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
Just SKILL.md in .claude/skills/rigor-builtin-import of rigortype/rigor.
Open the folder on GitHubat commit 57a67cf
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Rigor Builtin Import this skillrigortype/rigor | 106 | — | ~4.6k | Automated safety check: Pass | MPL-2.0 | |
| Gumroad Prod Consoleantiwork/gumroad | 9.8k | — | ~2.9k | Automated safety check: Notes | MIT | |
| Fastlane Pull Request Reviewfastlane/fastlane | 42k | — | ~550 | Automated safety check: Pass | MIT | |
| Dependency UpdaterAsvarox/allkaraoke | 261 | 4 repos | ~3.5k | Automated safety check: Pass | MIT | |
| Wise APIlineofflight/frankfurter | 2k | — | ~1.1k | Automated safety check: Pass | MIT | |
| Write RbsDataDog/dd-trace-rb | 417 | — | ~805 | Automated safety check: Pass | Custom licence |
antiwork/gumroad
Execute read-only Ruby/Rails commands against Gumroad's production database for debugging and investigation.
fastlane/fastlane
Reviews a fastlane pull request against its linked issue and the project guides, separating blocking from non-blocking findings and handling vulnerabilities privately.
Asvarox/allkaraoke
Smart dependency management for any language. An agent skill from Asvarox/allkaraoke.
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…
DataDog/dd-trace-rb
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.
ruby-git/ruby-git
Addresses unresolved pull request review threads and suppressed (low-confidence) Copilot review comments on the current branch, folds each fix into the…
rigortype/rigor
Measure Rigor's baseline drift across the tagged history of a real OSS Ruby project.
rigortype/rigor
Adjudicate a rigor unused report safely before proposing dead-code removal.
rigortype/rigor
Reduce an existing .rigor-baseline.yml rule by rule by triaging sites, fixing or intentionally suppressing them, and regenerating the baseline.
rigortype/rigor
Validate that a project's Rigor configuration, plugins, paths, and baseline are actually healthy.
rigortype/rigor
Author a new Rigor plugin, choosing plugins/ for production support or examples/ for a contract walkthrough.
rigortype/rigor
Author a Rigor plugin in an adopting project or standalone rigor- gem for a DSL, framework, or metaprogramming pattern.
Works with
Categories
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.
Rigor Builtin Import fits situations like: extending built-in folding coverage; onboarding RBS::Extended; not for app code; plugin authoring.
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.
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.
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.
Going by SKILL.md and its folder, Rigor Builtin Import needs the command-line tools its instructions call (make, nix and bundle).
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.
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.
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.
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.
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.
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.