rigortype 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +82 -20
  3. data/data/core_overlay/numeric.rbs +33 -0
  4. data/data/core_overlay/pathname.rbs +25 -0
  5. data/data/core_overlay/string_scanner.rbs +28 -0
  6. data/data/gem_overlay/activesupport/core_ext.rbs +473 -0
  7. data/data/vendored_gem_sigs/ast/ast.rbs +130 -0
  8. data/data/vendored_gem_sigs/bcrypt/bcrypt.rbs +47 -0
  9. data/data/vendored_gem_sigs/bundler/bundler.rbs +238 -0
  10. data/data/vendored_gem_sigs/cgi/cgi_extras.rbs +34 -0
  11. data/data/vendored_gem_sigs/did_you_mean/did_you_mean_extras.rbs +34 -0
  12. data/data/vendored_gem_sigs/idn-ruby/idn.rbs +54 -0
  13. data/data/vendored_gem_sigs/mysql2/client.rbs +55 -0
  14. data/data/vendored_gem_sigs/mysql2/error.rbs +5 -0
  15. data/data/vendored_gem_sigs/mysql2/result.rbs +31 -0
  16. data/data/vendored_gem_sigs/mysql2/statement.rbs +5 -0
  17. data/data/vendored_gem_sigs/nokogiri/nokogiri.rbs +2332 -0
  18. data/data/vendored_gem_sigs/nokogiri/nokogiri_html5.rbs +47 -0
  19. data/data/vendored_gem_sigs/pg/pg.rbs +212 -0
  20. data/data/vendored_gem_sigs/prism/prism_supplement.rbs +44 -0
  21. data/data/vendored_gem_sigs/redis/errors.rbs +50 -0
  22. data/data/vendored_gem_sigs/redis/future.rbs +5 -0
  23. data/data/vendored_gem_sigs/redis/redis.rbs +348 -0
  24. data/data/vendored_gem_sigs/redis/redis_extras.rbs +130 -0
  25. data/data/vendored_gem_sigs/rubygems/rubygems_extras.rbs +226 -0
  26. data/docs/handbook/01-getting-started.md +311 -0
  27. data/docs/handbook/02-everyday-types.md +337 -0
  28. data/docs/handbook/03-narrowing.md +359 -0
  29. data/docs/handbook/04-tuples-and-shapes.md +321 -0
  30. data/docs/handbook/05-methods-and-blocks.md +339 -0
  31. data/docs/handbook/06-classes.md +305 -0
  32. data/docs/handbook/07-rbs-and-extended.md +427 -0
  33. data/docs/handbook/08-understanding-errors.md +373 -0
  34. data/docs/handbook/09-plugins.md +241 -0
  35. data/docs/handbook/10-sorbet.md +347 -0
  36. data/docs/handbook/11-sig-gen.md +312 -0
  37. data/docs/handbook/12-lightweight-hkt.md +333 -0
  38. data/docs/handbook/README.md +275 -0
  39. data/docs/handbook/appendix-elixir.md +370 -0
  40. data/docs/handbook/appendix-go.md +399 -0
  41. data/docs/handbook/appendix-java-csharp.md +470 -0
  42. data/docs/handbook/appendix-liskov.md +580 -0
  43. data/docs/handbook/appendix-mypy.md +370 -0
  44. data/docs/handbook/appendix-phpstan.md +338 -0
  45. data/docs/handbook/appendix-protocols-and-structural-typing.md +292 -0
  46. data/docs/handbook/appendix-rust.md +446 -0
  47. data/docs/handbook/appendix-steep.md +336 -0
  48. data/docs/handbook/appendix-type-theory.md +1662 -0
  49. data/docs/handbook/appendix-typeprof.md +416 -0
  50. data/docs/handbook/appendix-typescript.md +332 -0
  51. data/docs/install.md +189 -0
  52. data/docs/llms.txt +72 -0
  53. data/docs/manual/01-installation.md +342 -0
  54. data/docs/manual/02-cli-reference.md +557 -0
  55. data/docs/manual/03-configuration.md +152 -0
  56. data/docs/manual/04-diagnostics.md +206 -0
  57. data/docs/manual/05-inspecting-types.md +109 -0
  58. data/docs/manual/06-baseline.md +104 -0
  59. data/docs/manual/07-plugins.md +92 -0
  60. data/docs/manual/08-skills.md +143 -0
  61. data/docs/manual/09-editor-integration.md +245 -0
  62. data/docs/manual/10-mcp-server.md +532 -0
  63. data/docs/manual/11-ci.md +274 -0
  64. data/docs/manual/12-caching.md +116 -0
  65. data/docs/manual/13-troubleshooting.md +120 -0
  66. data/docs/manual/14-rails-quickstart.md +332 -0
  67. data/docs/manual/15-type-protection-coverage.md +204 -0
  68. data/docs/manual/16-rbs-extended-annotations.md +190 -0
  69. data/docs/manual/17-driving-improvement.md +160 -0
  70. data/docs/manual/README.md +87 -0
  71. data/docs/manual/ci-templates/README.md +58 -0
  72. data/docs/manual/plugins/README.md +86 -0
  73. data/docs/manual/plugins/rigor-actioncable.md +78 -0
  74. data/docs/manual/plugins/rigor-actionmailer.md +74 -0
  75. data/docs/manual/plugins/rigor-actionpack.md +80 -0
  76. data/docs/manual/plugins/rigor-activejob.md +58 -0
  77. data/docs/manual/plugins/rigor-activerecord.md +102 -0
  78. data/docs/manual/plugins/rigor-activestorage.md +74 -0
  79. data/docs/manual/plugins/rigor-activesupport-core-ext.md +86 -0
  80. data/docs/manual/plugins/rigor-devise.md +70 -0
  81. data/docs/manual/plugins/rigor-dry-schema.md +56 -0
  82. data/docs/manual/plugins/rigor-dry-struct.md +60 -0
  83. data/docs/manual/plugins/rigor-dry-types.md +59 -0
  84. data/docs/manual/plugins/rigor-dry-validation.md +62 -0
  85. data/docs/manual/plugins/rigor-factorybot.md +76 -0
  86. data/docs/manual/plugins/rigor-graphql.md +89 -0
  87. data/docs/manual/plugins/rigor-hanami.md +83 -0
  88. data/docs/manual/plugins/rigor-mangrove.md +73 -0
  89. data/docs/manual/plugins/rigor-minitest.md +86 -0
  90. data/docs/manual/plugins/rigor-pundit.md +72 -0
  91. data/docs/manual/plugins/rigor-rails-i18n.md +92 -0
  92. data/docs/manual/plugins/rigor-rails-routes.md +94 -0
  93. data/docs/manual/plugins/rigor-rails.md +44 -0
  94. data/docs/manual/plugins/rigor-rbs-inline.md +83 -0
  95. data/docs/manual/plugins/rigor-rspec-rails.md +72 -0
  96. data/docs/manual/plugins/rigor-rspec.md +86 -0
  97. data/docs/manual/plugins/rigor-shoulda-matchers.md +78 -0
  98. data/docs/manual/plugins/rigor-sidekiq.md +78 -0
  99. data/docs/manual/plugins/rigor-sinatra.md +61 -0
  100. data/docs/manual/plugins/rigor-sorbet.md +63 -0
  101. data/docs/manual/plugins/rigor-statesman.md +75 -0
  102. data/docs/manual/plugins/rigor-typescript-utility-types.md +71 -0
  103. data/exe/rigor +1 -1
  104. data/lib/rigor/analysis/incremental_session.rb +4 -2
  105. data/lib/rigor/analysis/run_stats.rb +13 -1
  106. data/lib/rigor/analysis/runner.rb +54 -12
  107. data/lib/rigor/cli/check_command.rb +26 -3
  108. data/lib/rigor/cli/coverage_command.rb +67 -92
  109. data/lib/rigor/cli/coverage_mutation.rb +149 -0
  110. data/lib/rigor/cli/docs_command.rb +248 -0
  111. data/lib/rigor/cli/fused_protection_renderer.rb +67 -0
  112. data/lib/rigor/cli/fused_protection_report.rb +76 -0
  113. data/lib/rigor/cli/skill_command.rb +103 -41
  114. data/lib/rigor/cli/skill_describe.rb +346 -0
  115. data/lib/rigor/cli.rb +25 -3
  116. data/lib/rigor/config_audit.rb +152 -0
  117. data/lib/rigor/configuration.rb +12 -0
  118. data/lib/rigor/environment/rbs_loader.rb +27 -0
  119. data/lib/rigor/environment.rb +49 -1
  120. data/lib/rigor/inference/method_dispatcher/constant_folding.rb +140 -38
  121. data/lib/rigor/inference/method_dispatcher/shape_dispatch.rb +37 -6
  122. data/lib/rigor/inference/scope_indexer.rb +87 -89
  123. data/lib/rigor/inference/statement_evaluator.rb +27 -0
  124. data/lib/rigor/plugin/isolation.rb +5 -5
  125. data/lib/rigor/plugin/loader.rb +4 -2
  126. data/lib/rigor/protection/diagnostic_oracle.rb +51 -0
  127. data/lib/rigor/protection/mutation_scanner.rb +98 -38
  128. data/lib/rigor/protection/mutator.rb +21 -0
  129. data/lib/rigor/protection/test_suite_oracle.rb +68 -0
  130. data/lib/rigor/signature_path_audit.rb +92 -0
  131. data/lib/rigor/version.rb +1 -1
  132. data/skills/rigor-ask/SKILL.md +172 -0
  133. data/skills/rigor-doctor/SKILL.md +87 -0
  134. data/skills/rigor-editor-setup/SKILL.md +114 -0
  135. data/skills/rigor-mcp-setup/SKILL.md +117 -0
  136. data/skills/rigor-monkeypatch-resolve/SKILL.md +79 -0
  137. data/skills/rigor-next-steps/SKILL.md +113 -0
  138. data/skills/rigor-plugin-tune/SKILL.md +79 -0
  139. data/skills/rigor-protection-uplift/SKILL.md +133 -0
  140. data/skills/rigor-rbs-setup/SKILL.md +128 -0
  141. data/skills/rigor-upgrade/SKILL.md +79 -0
  142. metadata +120 -1
@@ -0,0 +1,128 @@
1
+ ---
2
+ name: rigor-rbs-setup
3
+ description: |
4
+ Install community RBS for the project's gems with `rbs collection install`, so Rigor stops typing calls into RBS-less dependencies as `Dynamic` and gains real coverage (and real bug-catching) on them. Rigor auto-detects the resulting `rbs_collection.lock.yaml` — no Rigor config change needed. Triggers: "set up rbs collection", "my gems type as Dynamic", "rigor check says N gems have no RBS available", "reduce false positives from untyped gems". NOT for first-time Rigor setup (use rigor-project-init first) and NOT for a gem that has no entry in the community collection (that needs rigor-plugin-author or a Rigor issue).
5
+ license: MPL-2.0
6
+ metadata:
7
+ version: 0.1.0
8
+ homepage: https://github.com/rigortype/rigor
9
+ ---
10
+
11
+ # Rigor RBS Setup
12
+
13
+ Most of what Rigor cannot type on a real application is the surface of
14
+ third-party gems that ship **no RBS**: a call into such a gem returns
15
+ `Dynamic`, so every downstream method on the result is unprotected and
16
+ some genuine bugs go uncaught. The Ruby ecosystem's answer is the
17
+ community RBS collection at
18
+ [`ruby/gem_rbs_collection`](https://github.com/ruby/gem_rbs_collection);
19
+ this skill wires it into the project.
20
+
21
+ ## When to use
22
+
23
+ - `rigor check` ends with `info: N gem(s) in Gemfile.lock have no RBS
24
+ available: …` — that list is the gap this skill closes.
25
+ - A deep call chain into a gem (an HTTP client, a parser, a service
26
+ object) types as `Dynamic` and you want Rigor to see through it.
27
+
28
+ ## When NOT to use
29
+
30
+ - The project has no Rigor config yet — run `rigor-project-init` first.
31
+ - A specific gem you need is **not in** the community collection — RBS
32
+ setup will not cover it. That residue is for `rigor-plugin-author` (if
33
+ it is your own DSL) or a Rigor issue (if it is a popular gem worth
34
+ built-in support).
35
+
36
+ ## How Rigor consumes it (so you know what "done" looks like)
37
+
38
+ Rigor **auto-detects** `rbs_collection.lock.yaml` at the project root
39
+ (`rbs_collection.auto_detect` defaults to `true`) and feeds each gem's
40
+ downloaded RBS directory into its signature paths, skipping `stdlib`
41
+ entries it already bundles. **No `.rigor.yml` change is required** — the
42
+ lockfile's presence is the whole wiring. (Set `rbs_collection.lockfile:`
43
+ only if the lockfile lives somewhere other than the project root.)
44
+
45
+ ## Procedure
46
+
47
+ ### Phase 1 — see the gap
48
+
49
+ ```sh
50
+ rigor check
51
+ ```
52
+
53
+ Read the closing `info` line listing the gems with no RBS. That is your
54
+ target set.
55
+
56
+ ### Phase 2 — make the `rbs` CLI available
57
+
58
+ `rbs collection` is part of the `rbs` gem and reads the project's
59
+ `Gemfile.lock`. Check it is runnable:
60
+
61
+ ```sh
62
+ rbs --version # or: bundle exec rbs --version
63
+ ```
64
+
65
+ If it is missing, add it to the project's development group
66
+ (`bundle add rbs --group development`) or install it standalone
67
+ (`gem install rbs`). Prefer `bundle exec rbs …` when `rbs` is in the
68
+ Gemfile so it matches the project's resolved versions.
69
+
70
+ ### Phase 3 — initialise the collection config (first time only)
71
+
72
+ ```sh
73
+ rbs collection init
74
+ ```
75
+
76
+ This writes `rbs_collection.yaml` (which gems to pull, which to ignore).
77
+ Skip if the file already exists; review it either way — the default
78
+ pulls RBS for every gem in the lockfile that the collection knows.
79
+
80
+ ### Phase 4 — install
81
+
82
+ ```sh
83
+ rbs collection install # bundle exec rbs collection install when bundled
84
+ ```
85
+
86
+ This resolves against `ruby/gem_rbs_collection`, writes
87
+ `rbs_collection.lock.yaml`, and downloads the `.rbs` files into
88
+ `.gem_rbs_collection/`.
89
+
90
+ ### Phase 5 — verify (re-check; watch for new diagnostics)
91
+
92
+ ```sh
93
+ rigor check
94
+ ```
95
+
96
+ Two things to confirm:
97
+
98
+ 1. **The `info` "no RBS available" list shrank** — the gems now covered
99
+ dropped off it.
100
+ 2. **No surprising new diagnostics.** Community RBS occasionally ships a
101
+ signature stricter than the gem's real runtime behaviour, which can
102
+ surface a false positive. Treat the diff like any other:
103
+ - In **acknowledge mode**, regenerate the baseline
104
+ (`rigor baseline regenerate`) so the new envelope is recorded.
105
+ - For a **genuine** new error the sharper types caught, that is a win
106
+ — fix it.
107
+ - For a clear RBS-quality false positive, `# rigor:disable <rule>` the
108
+ site with a reason, or pin the gem out in `rbs_collection.yaml`.
109
+
110
+ ### Phase 6 — commit
111
+
112
+ Commit the **config + lockfile**, gitignore the **download dir**:
113
+
114
+ ```sh
115
+ # .gitignore
116
+ .gem_rbs_collection/
117
+ ```
118
+
119
+ Commit `rbs_collection.yaml` and `rbs_collection.lock.yaml` so every
120
+ contributor and CI resolves the same RBS. `.gem_rbs_collection/` is
121
+ regenerable from the lockfile (`rbs collection install`), so it is not
122
+ committed.
123
+
124
+ ## Next step
125
+
126
+ Re-run `rigor skill describe` — with the gem-RBS foundation in place it
127
+ will route you to the next move (CI wiring, baseline work, or protection
128
+ uplift).
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: rigor-upgrade
3
+ description: |
4
+ Adopt a new Rigor version cleanly: after upgrading the `rigortype` gem, re-run the analysis, diff the diagnostics against the committed baseline, and sort the changes into genuine new catches (sharper inference), known sig-quality false positives, and the baseline you should regenerate. Triggers: "I upgraded Rigor, what changed?", "new diagnostics after gem update rigortype", "adopt the new Rigor version", "rigor baseline drifted after upgrade". NOT for first-time setup (use rigor-project-init) or routine baseline work unrelated to an upgrade (use rigor-baseline-reduce).
5
+ license: MPL-2.0
6
+ metadata:
7
+ version: 0.1.0
8
+ homepage: https://github.com/rigortype/rigor
9
+ ---
10
+
11
+ # Rigor Upgrade
12
+
13
+ A new Rigor release sharpens inference and may add or tighten rules, so
14
+ `rigor check` can report diagnostics it did not before — most are the new
15
+ version catching more, a few are sig-quality false positives the new
16
+ sharpness exposes. This skill adopts the upgrade without either blindly
17
+ regenerating the baseline (which buries genuine new catches) or treating
18
+ every new line as a regression.
19
+
20
+ ## When to use
21
+
22
+ - You just ran `mise use gem:rigortype` / `gem update rigortype` and want
23
+ to understand what the new version changed about your project's
24
+ diagnostics.
25
+
26
+ ## Procedure
27
+
28
+ ### Phase 1 — confirm the new version
29
+
30
+ ```sh
31
+ rigor --version
32
+ ```
33
+
34
+ ### Phase 2 — see the delta against the committed baseline
35
+
36
+ ```sh
37
+ rigor check
38
+ rigor diff # compare current diagnostics to the saved baseline JSON
39
+ ```
40
+
41
+ `rigor diff` shows what is **new** relative to the baseline — that set is
42
+ what the upgrade changed.
43
+
44
+ ### Phase 3 — sort the new diagnostics
45
+
46
+ For each newly-surfaced diagnostic:
47
+
48
+ - **A genuine new catch** — the sharper inference found a real latent
49
+ issue. Fix it. (Check `evidence_tier` in `rigor check --format json`:
50
+ `high` is most likely a true positive.)
51
+ - **A sig-quality false positive** — a known class (Struct
52
+ `call.wrong-arity`, an over-nilable RBS return, a regex-capture `$1`
53
+ read). `# rigor:disable <rule>` the site with a reason, or address the
54
+ RBS. Read `rigor explain <rule>` if unsure whether the rule should fire
55
+ here.
56
+ - **Expected envelope growth** — broadly acceptable in acknowledge mode.
57
+
58
+ ### Phase 4 — regenerate the baseline (acknowledge mode)
59
+
60
+ Once you have triaged and fixed the genuine catches, record the new
61
+ envelope so the regeneration does not bury what you just fixed:
62
+
63
+ ```sh
64
+ rigor baseline regenerate
65
+ ```
66
+
67
+ Commit the updated `.rigor-baseline.yml` together with any fixes, so the
68
+ team adopts the same post-upgrade baseline.
69
+
70
+ ## Note
71
+
72
+ `rigor skill describe` cannot detect that you just upgraded — the
73
+ baseline records only its schema version, not the Rigor version that
74
+ generated it — so this skill is invoked on demand rather than
75
+ recommended automatically. Run it whenever you bump the gem.
76
+
77
+ ## Next step
78
+
79
+ Re-run `rigor skill describe` for the next move.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rigortype
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rigor contributors
@@ -281,6 +281,106 @@ files:
281
281
  - data/builtins/ruby_core/string.yml
282
282
  - data/builtins/ruby_core/struct.yml
283
283
  - data/builtins/ruby_core/time.yml
284
+ - data/core_overlay/numeric.rbs
285
+ - data/core_overlay/pathname.rbs
286
+ - data/core_overlay/string_scanner.rbs
287
+ - data/gem_overlay/activesupport/core_ext.rbs
288
+ - data/vendored_gem_sigs/ast/ast.rbs
289
+ - data/vendored_gem_sigs/bcrypt/bcrypt.rbs
290
+ - data/vendored_gem_sigs/bundler/bundler.rbs
291
+ - data/vendored_gem_sigs/cgi/cgi_extras.rbs
292
+ - data/vendored_gem_sigs/did_you_mean/did_you_mean_extras.rbs
293
+ - data/vendored_gem_sigs/idn-ruby/idn.rbs
294
+ - data/vendored_gem_sigs/mysql2/client.rbs
295
+ - data/vendored_gem_sigs/mysql2/error.rbs
296
+ - data/vendored_gem_sigs/mysql2/result.rbs
297
+ - data/vendored_gem_sigs/mysql2/statement.rbs
298
+ - data/vendored_gem_sigs/nokogiri/nokogiri.rbs
299
+ - data/vendored_gem_sigs/nokogiri/nokogiri_html5.rbs
300
+ - data/vendored_gem_sigs/pg/pg.rbs
301
+ - data/vendored_gem_sigs/prism/prism_supplement.rbs
302
+ - data/vendored_gem_sigs/redis/errors.rbs
303
+ - data/vendored_gem_sigs/redis/future.rbs
304
+ - data/vendored_gem_sigs/redis/redis.rbs
305
+ - data/vendored_gem_sigs/redis/redis_extras.rbs
306
+ - data/vendored_gem_sigs/rubygems/rubygems_extras.rbs
307
+ - docs/handbook/01-getting-started.md
308
+ - docs/handbook/02-everyday-types.md
309
+ - docs/handbook/03-narrowing.md
310
+ - docs/handbook/04-tuples-and-shapes.md
311
+ - docs/handbook/05-methods-and-blocks.md
312
+ - docs/handbook/06-classes.md
313
+ - docs/handbook/07-rbs-and-extended.md
314
+ - docs/handbook/08-understanding-errors.md
315
+ - docs/handbook/09-plugins.md
316
+ - docs/handbook/10-sorbet.md
317
+ - docs/handbook/11-sig-gen.md
318
+ - docs/handbook/12-lightweight-hkt.md
319
+ - docs/handbook/README.md
320
+ - docs/handbook/appendix-elixir.md
321
+ - docs/handbook/appendix-go.md
322
+ - docs/handbook/appendix-java-csharp.md
323
+ - docs/handbook/appendix-liskov.md
324
+ - docs/handbook/appendix-mypy.md
325
+ - docs/handbook/appendix-phpstan.md
326
+ - docs/handbook/appendix-protocols-and-structural-typing.md
327
+ - docs/handbook/appendix-rust.md
328
+ - docs/handbook/appendix-steep.md
329
+ - docs/handbook/appendix-type-theory.md
330
+ - docs/handbook/appendix-typeprof.md
331
+ - docs/handbook/appendix-typescript.md
332
+ - docs/install.md
333
+ - docs/llms.txt
334
+ - docs/manual/01-installation.md
335
+ - docs/manual/02-cli-reference.md
336
+ - docs/manual/03-configuration.md
337
+ - docs/manual/04-diagnostics.md
338
+ - docs/manual/05-inspecting-types.md
339
+ - docs/manual/06-baseline.md
340
+ - docs/manual/07-plugins.md
341
+ - docs/manual/08-skills.md
342
+ - docs/manual/09-editor-integration.md
343
+ - docs/manual/10-mcp-server.md
344
+ - docs/manual/11-ci.md
345
+ - docs/manual/12-caching.md
346
+ - docs/manual/13-troubleshooting.md
347
+ - docs/manual/14-rails-quickstart.md
348
+ - docs/manual/15-type-protection-coverage.md
349
+ - docs/manual/16-rbs-extended-annotations.md
350
+ - docs/manual/17-driving-improvement.md
351
+ - docs/manual/README.md
352
+ - docs/manual/ci-templates/README.md
353
+ - docs/manual/plugins/README.md
354
+ - docs/manual/plugins/rigor-actioncable.md
355
+ - docs/manual/plugins/rigor-actionmailer.md
356
+ - docs/manual/plugins/rigor-actionpack.md
357
+ - docs/manual/plugins/rigor-activejob.md
358
+ - docs/manual/plugins/rigor-activerecord.md
359
+ - docs/manual/plugins/rigor-activestorage.md
360
+ - docs/manual/plugins/rigor-activesupport-core-ext.md
361
+ - docs/manual/plugins/rigor-devise.md
362
+ - docs/manual/plugins/rigor-dry-schema.md
363
+ - docs/manual/plugins/rigor-dry-struct.md
364
+ - docs/manual/plugins/rigor-dry-types.md
365
+ - docs/manual/plugins/rigor-dry-validation.md
366
+ - docs/manual/plugins/rigor-factorybot.md
367
+ - docs/manual/plugins/rigor-graphql.md
368
+ - docs/manual/plugins/rigor-hanami.md
369
+ - docs/manual/plugins/rigor-mangrove.md
370
+ - docs/manual/plugins/rigor-minitest.md
371
+ - docs/manual/plugins/rigor-pundit.md
372
+ - docs/manual/plugins/rigor-rails-i18n.md
373
+ - docs/manual/plugins/rigor-rails-routes.md
374
+ - docs/manual/plugins/rigor-rails.md
375
+ - docs/manual/plugins/rigor-rbs-inline.md
376
+ - docs/manual/plugins/rigor-rspec-rails.md
377
+ - docs/manual/plugins/rigor-rspec.md
378
+ - docs/manual/plugins/rigor-shoulda-matchers.md
379
+ - docs/manual/plugins/rigor-sidekiq.md
380
+ - docs/manual/plugins/rigor-sinatra.md
381
+ - docs/manual/plugins/rigor-sorbet.md
382
+ - docs/manual/plugins/rigor-statesman.md
383
+ - docs/manual/plugins/rigor-typescript-utility-types.md
284
384
  - exe/rigor
285
385
  - lib/rigor.rb
286
386
  - lib/rigor/analysis/baseline.rb
@@ -343,12 +443,16 @@ files:
343
443
  - lib/rigor/cli/ci_detector.rb
344
444
  - lib/rigor/cli/command.rb
345
445
  - lib/rigor/cli/coverage_command.rb
446
+ - lib/rigor/cli/coverage_mutation.rb
346
447
  - lib/rigor/cli/coverage_renderer.rb
347
448
  - lib/rigor/cli/coverage_report.rb
348
449
  - lib/rigor/cli/coverage_scan.rb
349
450
  - lib/rigor/cli/diagnostic_formats.rb
350
451
  - lib/rigor/cli/diff_command.rb
452
+ - lib/rigor/cli/docs_command.rb
351
453
  - lib/rigor/cli/explain_command.rb
454
+ - lib/rigor/cli/fused_protection_renderer.rb
455
+ - lib/rigor/cli/fused_protection_report.rb
352
456
  - lib/rigor/cli/lsp_command.rb
353
457
  - lib/rigor/cli/mcp_command.rb
354
458
  - lib/rigor/cli/mutation_protection_renderer.rb
@@ -364,6 +468,7 @@ files:
364
468
  - lib/rigor/cli/show_bleedingedge_command.rb
365
469
  - lib/rigor/cli/sig_gen_command.rb
366
470
  - lib/rigor/cli/skill_command.rb
471
+ - lib/rigor/cli/skill_describe.rb
367
472
  - lib/rigor/cli/trace_command.rb
368
473
  - lib/rigor/cli/trace_renderer.rb
369
474
  - lib/rigor/cli/triage_command.rb
@@ -373,6 +478,7 @@ files:
373
478
  - lib/rigor/cli/type_scan_command.rb
374
479
  - lib/rigor/cli/type_scan_renderer.rb
375
480
  - lib/rigor/cli/type_scan_report.rb
481
+ - lib/rigor/config_audit.rb
376
482
  - lib/rigor/configuration.rb
377
483
  - lib/rigor/configuration/dependencies.rb
378
484
  - lib/rigor/configuration/severity_profile.rb
@@ -519,8 +625,10 @@ files:
519
625
  - lib/rigor/plugin/source_rbs_synthesis_reporter.rb
520
626
  - lib/rigor/plugin/trust_policy.rb
521
627
  - lib/rigor/plugin/type_node_resolver.rb
628
+ - lib/rigor/protection/diagnostic_oracle.rb
522
629
  - lib/rigor/protection/mutation_scanner.rb
523
630
  - lib/rigor/protection/mutator.rb
631
+ - lib/rigor/protection/test_suite_oracle.rb
524
632
  - lib/rigor/rbs_extended.rb
525
633
  - lib/rigor/rbs_extended/conformance_checker.rb
526
634
  - lib/rigor/rbs_extended/hkt_directives.rb
@@ -540,6 +648,7 @@ files:
540
648
  - lib/rigor/sig_gen/type_elaborator.rb
541
649
  - lib/rigor/sig_gen/write_result.rb
542
650
  - lib/rigor/sig_gen/writer.rb
651
+ - lib/rigor/signature_path_audit.rb
543
652
  - lib/rigor/source.rb
544
653
  - lib/rigor/source/constant_path.rb
545
654
  - lib/rigor/source/literals.rb
@@ -747,19 +856,29 @@ files:
747
856
  - sig/rigor/testing.rbs
748
857
  - sig/rigor/trinary.rbs
749
858
  - sig/rigor/type.rbs
859
+ - skills/rigor-ask/SKILL.md
750
860
  - skills/rigor-baseline-reduce/SKILL.md
751
861
  - skills/rigor-baseline-reduce/references/01-classify.md
752
862
  - skills/rigor-baseline-reduce/references/02-fix-or-suppress.md
753
863
  - skills/rigor-ci-setup/SKILL.md
864
+ - skills/rigor-doctor/SKILL.md
865
+ - skills/rigor-editor-setup/SKILL.md
866
+ - skills/rigor-mcp-setup/SKILL.md
867
+ - skills/rigor-monkeypatch-resolve/SKILL.md
868
+ - skills/rigor-next-steps/SKILL.md
754
869
  - skills/rigor-plugin-author/SKILL.md
755
870
  - skills/rigor-plugin-author/references/01-plan-and-scaffold.md
756
871
  - skills/rigor-plugin-author/references/02-walker-and-types.md
757
872
  - skills/rigor-plugin-author/references/03-test-and-ship.md
873
+ - skills/rigor-plugin-tune/SKILL.md
758
874
  - skills/rigor-project-init/SKILL.md
759
875
  - skills/rigor-project-init/references/01-detect.md
760
876
  - skills/rigor-project-init/references/02-configure.md
761
877
  - skills/rigor-project-init/references/03-baseline-and-bugs.md
762
878
  - skills/rigor-project-init/references/04-sig-uplift.md
879
+ - skills/rigor-protection-uplift/SKILL.md
880
+ - skills/rigor-rbs-setup/SKILL.md
881
+ - skills/rigor-upgrade/SKILL.md
763
882
  homepage: https://github.com/rigortype/rigor
764
883
  licenses:
765
884
  - MPL-2.0