rubocop-lts-ruby 0.1.0

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.
data/README.md ADDED
@@ -0,0 +1,533 @@
1
+ <a href="https://github.com/rubocop-lts"><img alt="rubocop-lts Logo by GitHub" src="https://github.com/rubocop-lts.png?size=192" width="14%" align="right"/></a>
2
+
3
+ # 🛡️ RuboCop::Lts::Ruby
4
+
5
+ [![Version][👽versioni]][👽version] [![Ruby Users Forum][✉️ruby-forum-top-img]][✉️ruby-forum] [![GitHub tag (latest SemVer)][⛳️tag-img]][⛳️tag] [![License: MIT][📄license-img]][📄license] [![Total downloads][👽dl-ranki]][👽dl-rank] [![CodeCov Test Coverage][🏀codecovi]][🏀codecov] [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls] [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov] [![QLTY Maintainability][🏀qlty-mnti]][🏀qlty-mnt] [![CI Heads][🚎3-hd-wfi]][🚎3-hd-wf] [![CI Runtime Dependencies @ HEAD][🚎12-crh-wfi]][🚎12-crh-wf] [![CI Current][🚎11-c-wfi]][🚎11-c-wf] [![CI Truffle Ruby][🚎9-t-wfi]][🚎9-t-wf] [![CI JRuby][🚎10-j-wfi]][🚎10-j-wf] [![Deps Locked][🚎13-🔒️-wfi]][🚎13-🔒️-wf] [![Deps Unlocked][🚎14-🔓️-wfi]][🚎14-🔓️-wf] [![CI Test Coverage][🚎2-cov-wfi]][🚎2-cov-wf] [![CI Style][🚎5-st-wfi]][🚎5-st-wf] [![Apache SkyWalking Eyes License Compatibility Check][🚎15-🪪-wfi]][🚎15-🪪-wf]
6
+
7
+ `if ci_badges.map(&:color).detect { it != "green"}` ☝️ [let me know on Discord][✉️discord-invite] or [RubyForum][✉️ruby-forum], as I may have missed the notification.
8
+
9
+ ---
10
+
11
+ `if ci_badges.map(&:color).all? { it == "green"}` 👇️ send money so I can do more of this. FLOSS maintenance is now my full-time job.
12
+
13
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate at ko-fi.com][🖇kofi-img]][🖇kofi]
14
+
15
+ <details markdown="1">
16
+ <summary>👣 How will this project approach the September 2025 hostile takeover of RubyGems? 🚑️</summary>
17
+
18
+ I've summarized my thoughts in [this blog post](https://dev.to/galtzo/hostile-takeover-of-rubygems-my-thoughts-5hlo).
19
+
20
+ </details>
21
+
22
+ ## 🌻 Synopsis <a href="https://discord.gg/3qme4XHNKN"><img alt="Galtzo FLOSS Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/galtzo-floss/avatar-128px.svg" width="8%" align="right"/></a> <a href="https://ruby-toolbox.com"><img alt="ruby-lang Logo, Yukihiro Matsumoto, Ruby Visual Identity Team, CC BY-SA 2.5" src="https://logos.galtzo.com/assets/images/ruby-lang/avatar-128px.svg" width="8%" align="right"/></a>
23
+
24
+ ## 💡 Info you can shake a stick at
25
+
26
+ | Tokens to Remember | [![Gem name][⛳️name-img]][⛳️gem-name] [![Gem namespace][⛳️namespace-img]][⛳️gem-namespace] |
27
+ |-------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
28
+ | Works with JRuby | [![JRuby 10.0 Compat][💎jruby-10.0i]][🚎jruby-10.0-wf] [![JRuby current Compat][💎jruby-c-i]][🚎10-j-wf] [![JRuby HEAD Compat][💎jruby-headi]][🚎3-hd-wf]|
29
+ | Works with Truffle Ruby | [![Truffle Ruby 24.2 Compat][💎truby-24.2i]][🚎truby-24.2-wf] [![Truffle Ruby 25.0 Compat][💎truby-25.0i]][🚎truby-25.0-wf] [![Truffle Ruby 33.0 Compat][💎truby-33.0i]][🚎truby-33.0-wf] [![Truffle Ruby current Compat][💎truby-c-i]][🚎9-t-wf] [![Truffle Ruby HEAD Compat][💎truby-headi]][🚎3-hd-wf]|
30
+ | Works with MRI Ruby 4 | [![Ruby current Compat][💎ruby-c-i]][🚎11-c-wf] [![Ruby HEAD Compat][💎ruby-headi]][🚎3-hd-wf]|
31
+ | Works with MRI Ruby 3 | [![Ruby 3.2 Compat][💎ruby-3.2i]][🚎ruby-3.2-wf] [![Ruby 3.3 Compat][💎ruby-3.3i]][🚎ruby-3.3-wf] [![Ruby 3.4 Compat][💎ruby-3.4i]][🚎ruby-3.4-wf]|
32
+ | Support & Community | [![Join Me on Daily.dev's RubyFriends][✉️ruby-friends-img]][✉️ruby-friends] [![Get help from RubyForum][✉️ruby-forum-img]][✉️ruby-forum] [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite] [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork] [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor] |
33
+ | Source | [![Source on GitLab.com][📜src-gl-img]][📜src-gl] [![Source on CodeBerg.org][📜src-cb-img]][📜src-cb] [![Source on GitHub.com][📜src-gh-img]][📜src-gh] [![The best SHA: dQw4w9WgXcQ!][🧮kloc-img]][🧮kloc] |
34
+ | Documentation | [![Current release on RubyDoc.info][📜docs-cr-rd-img]][🚎yard-current] [![YARD on Galtzo.com][📜docs-head-rd-img]][🚎yard-head] [![Maintainer Blog][🚂maint-blog-img]][🚂maint-blog] [![GitLab Wiki][📜gl-wiki-img]][📜gl-wiki] [![GitHub Wiki][📜gh-wiki-img]][📜gh-wiki] |
35
+ | Compliance | [![License: MIT][📄license-img]][📄license] [![Apache license compatibility: Category A][📄license-compat-img]][📄license-compat] [![📄ilo-declaration-img]][📄ilo-declaration] [![Security Policy][🔐security-img]][🔐security] [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct] [![SemVer 2.0.0][📌semver-img]][📌semver] |
36
+ | Style | [![Enforced Code Style Linter][💎rlts-img]][💎rlts] [![Keep-A-Changelog 1.0.0][📗keep-changelog-img]][📗keep-changelog] [![Gitmoji Commits][📌gitmoji-img]][📌gitmoji] [![Compatibility appraised by: appraisal2][💎appraisal2-img]][💎appraisal2] |
37
+ | Maintainer 🎖️ | [![Follow Me on LinkedIn][💖🖇linkedin-img]][💖🖇linkedin] [![Follow Me on Ruby.Social][💖🐘ruby-mast-img]][💖🐘ruby-mast] [![Follow Me on Bluesky][💖🦋bluesky-img]][💖🦋bluesky] [![Contact Maintainer][🚂maint-contact-img]][🚂maint-contact] [![My technical writing][💖💁🏼‍♂️devto-img]][💖💁🏼‍♂️devto] |
38
+ | `...` 💖 | [![Find Me on WellFound:][💖✌️wellfound-img]][💖✌️wellfound] [![Find Me on CrunchBase][💖💲crunchbase-img]][💖💲crunchbase] [![My LinkTree][💖🌳linktree-img]][💖🌳linktree] [![More About Me][💖💁🏼‍♂️aboutme-img]][💖💁🏼‍♂️aboutme] [🧊][💖🧊berg] [🐙][💖🐙hub] [🛖][💖🛖hut] [🧪][💖🧪lab] |
39
+
40
+ ### Compatibility
41
+
42
+ Compatible with MRI Ruby, JRuby, and TruffleRuby.
43
+ CI workflows and Appraisals are generated for MRI Ruby 3.2.0+.
44
+ This test floor is configured by `ruby.test_minimum` in `.kettle-jem.yml` and
45
+ may be higher than the gem's runtime compatibility floor when legacy Rubies are
46
+ not practical for the current toolchain.
47
+
48
+ <a href="https://github.com/kettle-dev"><img alt="kettle-dev Logo by Aboling0, CC BY-SA 4.0" src="https://logos.galtzo.com/assets/images/kettle-dev/avatar-128px.svg" width="14%" align="right"/></a>
49
+
50
+ The _amazing_ test matrix is powered by the kettle-dev stack.
51
+
52
+ <details markdown="1">
53
+ <summary>How kettle-dev manages complexity in tests</summary>
54
+
55
+ | Gem | Source | Role | Total downloads |
56
+ |-----|--------|------|---------------------|
57
+ | [appraisal2](https://clickgems.clickhouse.com/dashboard/appraisal2) | [GitHub](https://github.com/appraisal-rb/appraisal2) | multi-dependency Appraisal matrix generation | [![Total downloads for appraisal2](https://img.shields.io/gem/dt/appraisal2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2) |
58
+ | [appraisal2-rubocop](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) | [GitHub](https://github.com/appraisal-rb/appraisal2-rubocop) | RuboCop Appraisal generator integration | [![Total downloads for appraisal2-rubocop](https://img.shields.io/gem/dt/appraisal2-rubocop.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/appraisal2-rubocop) |
59
+ | [kettle-dev](https://clickgems.clickhouse.com/dashboard/kettle-dev) | [GitHub](https://github.com/kettle-dev/kettle-dev) | development, release, and CI workflow tooling | [![Total downloads for kettle-dev](https://img.shields.io/gem/dt/kettle-dev.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-dev) |
60
+ | [kettle-jem](https://clickgems.clickhouse.com/dashboard/kettle-jem) | [GitHub](https://github.com/kettle-dev/kettle-jem) | Appraisals & CI workflow templates | [![Total downloads for kettle-jem](https://img.shields.io/gem/dt/kettle-jem.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-jem) |
61
+ | [kettle-soup-cover](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) | [GitHub](https://github.com/kettle-dev/kettle-soup-cover) | SimpleCov coverage policy and reporting | [![Total downloads for kettle-soup-cover](https://img.shields.io/gem/dt/kettle-soup-cover.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-soup-cover) |
62
+ | [kettle-test](https://clickgems.clickhouse.com/dashboard/kettle-test) | [GitHub](https://github.com/kettle-dev/kettle-test) | standard test runner and coverage harness | [![Total downloads for kettle-test](https://img.shields.io/gem/dt/kettle-test.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/kettle-test) |
63
+ | [rubocop-lts](https://clickgems.clickhouse.com/dashboard/rubocop-lts) | [GitHub](https://github.com/rubocop-lts/rubocop-lts) | Ruby-version-aware linting | [![Total downloads for rubocop-lts](https://img.shields.io/gem/dt/rubocop-lts.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/rubocop-lts) |
64
+ | [turbo_tests2](https://clickgems.clickhouse.com/dashboard/turbo_tests2) | [GitHub](https://github.com/galtzo-floss/turbo_tests2) | parallel test execution | [![Total downloads for turbo_tests2](https://img.shields.io/gem/dt/turbo_tests2.svg?style=flat-square)](https://clickgems.clickhouse.com/dashboard/turbo_tests2) |
65
+
66
+ </details>
67
+
68
+ ### Federated DVCS
69
+
70
+ <details markdown="1">
71
+ <summary>Find this repo on federated forges (Coming soon!)</summary>
72
+
73
+ | Federated [DVCS][💎d-in-dvcs] Repository | Status | Issues | PRs | Wiki | CI |
74
+ |-------------------------------------------------|-------------------------------------------|-------------------|------------------|-----------------|----------------|
75
+ | 🧪 [rubocop-lts/rubocop-lts-ruby on GitLab][📜src-gl] | The Truth | [💚][🤝gl-issues] | [💚][🤝gl-pulls] | [💚][📜gl-wiki] | 🐭 Tiny Matrix |
76
+ | 🧊 [rubocop-lts/rubocop-lts-ruby on CodeBerg][📜src-cb] | An Ethical Mirror ([Donate][🤝cb-donate]) | [💚][🤝cb-issues] | [💚][🤝cb-pulls] | ➖ | ⭕️ No Matrix |
77
+ | 🐙 [rubocop-lts/rubocop-lts-ruby on GitHub][📜src-gh] | Another Mirror | [💚][🤝gh-issues] | [💚][🤝gh-pulls] | [💚][📜gh-wiki] | 💯 Full Matrix |
78
+
79
+ </details>
80
+
81
+ ### Enterprise Support [![Tidelift](https://tidelift.com/badges/package/rubygems/rubocop-lts-ruby)](https://tidelift.com/subscription/pkg/rubygems-rubocop-lts-ruby?utm_source=rubygems-rubocop-lts-ruby&utm_medium=referral&utm_campaign=readme)
82
+
83
+ Available as part of the Tidelift Subscription.
84
+
85
+ <details markdown="1">
86
+ <summary>Need enterprise-level guarantees?</summary>
87
+
88
+ The maintainers of this and thousands of other packages are working with Tidelift to deliver commercial support and maintenance for the open source packages you use to build your applications. Save time, reduce risk, and improve code health, while paying the maintainers of the exact packages you use.
89
+
90
+ [![Get help from me on Tidelift][🏙️entsup-tidelift-img]][🏙️entsup-tidelift]
91
+
92
+ - 💡Subscribe for support guarantees covering _all_ your FLOSS dependencies
93
+ - 💡Tidelift is part of [Sonar][🏙️entsup-tidelift-sonar]
94
+ - 💡Tidelift pays maintainers to maintain the software you depend on!<br/>📊`@`Pointy Haired Boss: An [enterprise support][🏙️entsup-tidelift] subscription is "[never gonna let you down][🧮kloc]", and *supports* open source maintainers
95
+
96
+ Alternatively:
97
+
98
+ - [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
99
+ - [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
100
+ - [![Get help from me on Upwork][👨🏼‍🏫expsup-upwork-img]][👨🏼‍🏫expsup-upwork]
101
+ - [![Get help from me on Codementor][👨🏼‍🏫expsup-codementor-img]][👨🏼‍🏫expsup-codementor]
102
+
103
+ </details>
104
+
105
+ ## ✨ Installation
106
+
107
+ Install the gem and add to the application's Gemfile by executing:
108
+
109
+ ```console
110
+ bundle add rubocop-lts-ruby
111
+ ```
112
+
113
+ If bundler is not being used to manage dependencies, install the gem by executing:
114
+
115
+ ```console
116
+ gem install rubocop-lts-ruby
117
+ ```
118
+
119
+ ## ⚙️ Configuration
120
+
121
+ The `Lint/LtsRuby/UnavailableMethod` cop is enabled by the plugin. It reports
122
+ explicit receiver calls for catalogued APIs that were introduced after the
123
+ target Ruby version. Since static analysis cannot prove the runtime type of
124
+ every receiver, a project can document a known-safe exception narrowly:
125
+
126
+ ```yaml
127
+ Lint/LtsRuby/UnavailableMethod:
128
+ AllowedMethods:
129
+ - Enumerable#filter_map
130
+ ```
131
+
132
+ The catalog is deliberately explicit. New entries should include the owning
133
+ core or standard-library class and the first Ruby version that provides the
134
+ method, with a spec covering the compatibility boundary.
135
+
136
+ This plugin does not set `AllCops: TargetRubyVersion`. That setting remains
137
+ owned by the consuming RuboCop configuration, such as `standard-rubocop-lts`
138
+ or a version-specific RuboCop compatibility gem. LintRoller supplies this
139
+ gem's rule configuration, and the cop reads the effective target selected by
140
+ RuboCop.
141
+
142
+ ## 🔧 Basic Usage
143
+
144
+ Run RuboCop normally after enabling the plugin:
145
+
146
+ ```bash
147
+ bundle exec rubocop
148
+ ```
149
+
150
+ For a one-off check without editing `.rubocop.yml`:
151
+
152
+ ```bash
153
+ bundle exec rubocop --plugin rubocop-lts-ruby
154
+ ```
155
+
156
+ The plugin reports compatibility issues; it does not rewrite source code.
157
+
158
+ <!-- kettle-jem:metadata:start -->
159
+ | Field | Value |
160
+ |---|---|
161
+ | Package | rubocop-lts-ruby |
162
+ | Description | RuboCop cops that detect use of Ruby core and standard library APIs that are<br>unavailable for the configured TargetRubyVersion. |
163
+ | Homepage | https://github.com/rubocop-lts/rubocop-lts-ruby |
164
+ | Source | https://github.com/rubocop-lts/rubocop-lts-ruby |
165
+ | License | `MIT` |
166
+ | Funding | https://github.com/sponsors/pboling, https://ko-fi.com/pboling, https://liberapay.com/pboling/donate, https://opencollective.com/rubocop-lts, https://thanks.dev/u/gh/pboling, https://tidelift.com/funding/github/rubygems/rubocop-lts-ruby, https://www.buymeacoffee.com/pboling |
167
+ <!-- kettle-jem:metadata:end -->
168
+ ## 🦷 FLOSS Funding
169
+
170
+ While rubocop-lts tools are free software and will always be, the project would benefit immensely from some funding.
171
+ Raising a monthly budget of... "dollars" would make the project more sustainable.
172
+
173
+ We welcome both individual and corporate sponsors! We also offer a
174
+ wide array of funding channels to account for your preferences.
175
+ Currently, [Open Collective][🖇osc] is our preferred funding platform.
176
+
177
+ **If you're working in a company that's making significant use of rubocop-lts tools we'd
178
+ appreciate it if you suggest to your company to become a rubocop-lts sponsor.**
179
+
180
+ You can support the development of rubocop-lts tools via
181
+ [GitHub Sponsors][🖇sponsor],
182
+ [Liberapay][⛳liberapay],
183
+ [PayPal][🖇paypal],
184
+ [Open Collective][🖇osc]
185
+ and [Tidelift][🏙️entsup-tidelift].
186
+
187
+ | 📍 NOTE |
188
+ |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
189
+ | If doing a sponsorship in the form of donation is problematic for your company <br/> from an accounting standpoint, we'd recommend the use of Tidelift, <br/> where you can get a support-like subscription instead. |
190
+
191
+ ### Open Collective for Individuals
192
+
193
+ Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/rubocop-lts#backer)]
194
+
195
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
196
+
197
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:START -->
198
+ No backers yet. Be the first!
199
+ <!-- OPENCOLLECTIVE-INDIVIDUALS:END -->
200
+
201
+ ### Open Collective for Organizations
202
+
203
+ Become a sponsor and get your logo on our README on GitHub with a link to your site. [[Become a sponsor](https://opencollective.com/rubocop-lts#sponsor)]
204
+
205
+ NOTE: [kettle-readme-backers][kettle-readme-backers] updates this list every day, automatically.
206
+
207
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:START -->
208
+ No sponsors yet. Be the first!
209
+ <!-- OPENCOLLECTIVE-ORGANIZATIONS:END -->
210
+
211
+ [kettle-readme-backers]: https://github.com/rubocop-lts/rubocop-lts-ruby/blob/main/bin/kettle-readme-backers
212
+
213
+ ### Another way to support open-source
214
+
215
+ I’m driven by a passion to foster a thriving open-source community – a space where people can tackle complex problems, no matter how small. Revitalizing libraries that have fallen into disrepair, and building new libraries focused on solving real-world challenges, are my passions. I was recently affected by layoffs, and the tech jobs market is unwelcoming. I’m reaching out here because your support would significantly aid my efforts to provide for my family, and my farm (11 🐔 chickens, 2 🐶 dogs, 3 🐰 rabbits, 8 🐈‍ cats).
216
+
217
+ If you work at a company that uses my work, please encourage them to support me as a corporate sponsor. My work on gems you use might show up in `bundle fund`.
218
+
219
+ I’m developing a new library, [floss_funding][🖇floss-funding-gem], designed to empower open-source developers like myself to get paid for the work we do, in a sustainable way. Please give it a look.
220
+
221
+ **[Floss-Funding.dev][🖇floss-funding.dev]: 👉️ No network calls. 👉️ No tracking. 👉️ No oversight. 👉️ Minimal crypto hashing. 💡 Easily disabled nags**
222
+
223
+ [![OpenCollective Backers][🖇osc-backers-i]][🖇osc-backers] [![OpenCollective Sponsors][🖇osc-sponsors-i]][🖇osc-sponsors] [![Sponsor Me on Github][🖇sponsor-img]][🖇sponsor] [![Liberapay Goal Progress][⛳liberapay-img]][⛳liberapay] [![Donate on PayPal][🖇paypal-img]][🖇paypal] [![Buy me a coffee][🖇buyme-small-img]][🖇buyme] [![Donate to my FLOSS efforts at ko-fi.com][🖇kofi-img]][🖇kofi]
224
+
225
+ ## 🔐 Security
226
+
227
+ See [SECURITY.md][🔐security].
228
+
229
+ ## 🤝 Contributing
230
+
231
+ If you need some ideas of where to help, you could work on adding more code coverage,
232
+ or if it is already 💯 (see [below](#code-coverage)) check [issues][🤝gh-issues] or [PRs][🤝gh-pulls],
233
+ or use the gem and think about how it could be better.
234
+
235
+ We [![Keep A Changelog][📗keep-changelog-img]][📗keep-changelog] so if you make changes, remember to update it.
236
+
237
+ See [CONTRIBUTING.md][🤝contributing] for more detailed instructions.
238
+
239
+ ### 🚀 Release Instructions
240
+
241
+ See [CONTRIBUTING.md][🤝contributing].
242
+
243
+ ### Code Coverage
244
+
245
+ <details markdown="1">
246
+ <summary>Coverage service badges</summary>
247
+
248
+ [![Coverage Graph][🏀codecov-g]][🏀codecov]
249
+
250
+ [![Coveralls Test Coverage][🏀coveralls-img]][🏀coveralls]
251
+
252
+ [![QLTY Test Coverage][🏀qlty-covi]][🏀qlty-cov]
253
+
254
+ </details>
255
+
256
+ ### 🪇 Code of Conduct
257
+
258
+ Everyone interacting with this project's codebases, issue trackers,
259
+ chat rooms and mailing lists agrees to follow the [![Contributor Covenant 2.1][🪇conduct-img]][🪇conduct].
260
+
261
+ ## 🌈 Contributors
262
+
263
+ [![Contributors][🖐contributors-img]][🖐contributors]
264
+
265
+ Made with [contributors-img][🖐contrib-rocks].
266
+
267
+ Also see GitLab Contributors: [https://gitlab.com/rubocop-lts/rubocop-lts-ruby/-/graphs/main][🚎contributors-gl]
268
+
269
+ <details markdown="1">
270
+ <summary>⭐️ Star History</summary>
271
+
272
+ <a href="https://star-history.com/rubocop-lts/rubocop-lts-ruby&Date">
273
+ <picture>
274
+ <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=rubocop-lts/rubocop-lts-ruby&type=Date&theme=dark" />
275
+ <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=rubocop-lts/rubocop-lts-ruby&type=Date" />
276
+ <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=rubocop-lts/rubocop-lts-ruby&type=Date" />
277
+ </picture>
278
+ </a>
279
+
280
+ </details>
281
+
282
+ ## 📌 Versioning
283
+
284
+ This library follows [![Semantic Versioning 2.0.0][📌semver-img]][📌semver] for its public API where practical.
285
+ For most applications, prefer the [Pessimistic Version Constraint][📌pvc] with two digits of precision.
286
+
287
+ For example:
288
+
289
+ ```ruby
290
+ spec.add_dependency("rubocop-lts-ruby", "~> 0.0")
291
+ ```
292
+
293
+ <details markdown="1">
294
+ <summary>📌 Is "Platform Support" part of the public API? More details inside.</summary>
295
+
296
+ Dropping support for a platform can be a breaking change for affected users.
297
+ If a release changes supported platforms, it should be called out clearly in the changelog and versioned with that impact in mind.
298
+
299
+ To get a better understanding of how SemVer is intended to work over a project's lifetime,
300
+ read this article from the creator of SemVer:
301
+
302
+ - ["Major Version Numbers are Not Sacred"][📌major-versions-not-sacred]
303
+
304
+ </details>
305
+
306
+ See [CHANGELOG.md][📌changelog] for a list of releases.
307
+
308
+ ## 📄 License
309
+
310
+ The gem is available as open source under the terms of
311
+ the [MIT](https://github.com/rubocop-lts/rubocop-lts-ruby/blob/main/MIT.md) [![License: MIT][📄license-img]][📄license-ref].
312
+
313
+ ### © Copyright
314
+
315
+ See [LICENSE.md][📄license] for the official copyright notice.
316
+
317
+ <details markdown="1">
318
+ <summary>Copyright holders</summary>
319
+
320
+ - Copyright (c) 2026 Peter H. Boling
321
+
322
+ </details>
323
+
324
+ ## 🤑 A request for help
325
+
326
+ Maintainers have teeth and need to pay their dentists.
327
+ After getting laid off in an RIF in March, and encountering difficulty finding a new one,
328
+ I began spending most of my time building open source tools.
329
+ I'm hoping to be able to pay for my kids' health insurance this month,
330
+ so if you value the work I am doing, I need your support.
331
+ Please consider sponsoring me or the project.
332
+
333
+ To join the community or get help, use the RubyForum or Discord.
334
+
335
+ [![Ruby Users Forum][✉️ruby-forum-img]][✉️ruby-forum]
336
+ [![Live Chat on Discord][✉️discord-invite-img-ftb]][✉️discord-invite]
337
+
338
+ To say "thanks!" ☝️ Join the community or 👇️ send money.
339
+
340
+ [![Sponsor rubocop-lts/rubocop-lts-ruby on Open Source Collective][🖇osc-all-bottom-img]][🖇osc] 💌 [![Sponsor me on GitHub Sponsors][🖇sponsor-bottom-img]][🖇sponsor] 💌 [![Sponsor me on Liberapay][⛳liberapay-bottom-img]][⛳liberapay] 💌 [![Donate on PayPal][🖇paypal-bottom-img]][🖇paypal]
341
+
342
+ ### Please give the project a star ⭐ ♥.
343
+
344
+ Many parts of this project are actively managed by a [kettle-jem](https://github.com/structuredmerge/structuredmerge-ruby/tree/main/gems/kettle-jem) smart template utilizing [StructuredMerge.org](https://structuredmerge.org) merge contracts.
345
+
346
+ Thanks for RTFM. ☺️
347
+
348
+ [⛳liberapay-img]: https://img.shields.io/liberapay/goal/pboling.svg?logo=liberapay&color=a51611&style=flat
349
+ [⛳liberapay-bottom-img]: https://img.shields.io/liberapay/goal/pboling.svg?style=for-the-badge&logo=liberapay&color=a51611
350
+ [⛳liberapay]: https://liberapay.com/pboling/donate
351
+ [🖇osc-all-img]: https://img.shields.io/opencollective/all/rubocop-lts
352
+ [🖇osc-sponsors-img]: https://img.shields.io/opencollective/sponsors/rubocop-lts
353
+ [🖇osc-backers-img]: https://img.shields.io/opencollective/backers/rubocop-lts
354
+ [🖇osc-backers]: https://opencollective.com/rubocop-lts#backer
355
+ [🖇osc-backers-i]: https://opencollective.com/rubocop-lts/backers/badge.svg?style=flat
356
+ [🖇osc-sponsors]: https://opencollective.com/rubocop-lts#sponsor
357
+ [🖇osc-sponsors-i]: https://opencollective.com/rubocop-lts/sponsors/badge.svg?style=flat
358
+ [🖇osc-all-bottom-img]: https://img.shields.io/opencollective/all/rubocop-lts?style=for-the-badge
359
+ [🖇osc-sponsors-bottom-img]: https://img.shields.io/opencollective/sponsors/rubocop-lts?style=for-the-badge
360
+ [🖇osc-backers-bottom-img]: https://img.shields.io/opencollective/backers/rubocop-lts?style=for-the-badge
361
+ [🖇osc]: https://opencollective.com/rubocop-lts
362
+ [🖇sponsor-img]: https://img.shields.io/badge/Sponsor_Me!-pboling.svg?style=social&logo=github
363
+ [🖇sponsor-bottom-img]: https://img.shields.io/badge/Sponsor_Me!-pboling-blue?style=for-the-badge&logo=github
364
+ [🖇sponsor]: https://github.com/sponsors/pboling
365
+ [🖇kofi-img]: https://img.shields.io/badge/ko--fi-%E2%9C%93-a51611.svg?style=flat
366
+ [🖇kofi]: https://ko-fi.com/pboling
367
+ [🖇buyme-small-img]: https://img.shields.io/badge/buy_me_a_coffee-%E2%9C%93-a51611.svg?style=flat
368
+ [🖇buyme-img]: https://img.buymeacoffee.com/button-api/?text=Buy%20me%20a%20latte&emoji=&slug=pboling&button_colour=FFDD00&font_colour=000000&font_family=Cookie&outline_colour=000000&coffee_colour=ffffff
369
+ [🖇buyme]: https://www.buymeacoffee.com/pboling
370
+ [🖇paypal-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=flat&logo=paypal
371
+ [🖇paypal-bottom-img]: https://img.shields.io/badge/donate-paypal-a51611.svg?style=for-the-badge&logo=paypal&color=0A0A0A
372
+ [🖇paypal]: https://www.paypal.com/paypalme/peterboling
373
+ [🖇floss-funding.dev]: https://floss-funding.dev
374
+ [🖇floss-funding-gem]: https://github.com/galtzo-floss/floss_funding
375
+ [✉️discord-invite]: https://discord.gg/3qme4XHNKN
376
+ [✉️discord-invite-img-ftb]: https://img.shields.io/discord/1373797679469170758?style=for-the-badge&logo=discord
377
+ [✉️ruby-friends-img]: https://img.shields.io/badge/daily.dev-%F0%9F%92%8E_Ruby_Friends-0A0A0A?style=for-the-badge&logo=dailydotdev&logoColor=white
378
+ [✉️ruby-friends]: https://app.daily.dev/squads/rubyfriends
379
+ [✉️ruby-forum-top-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=flat&logo=discourse&label=Ruby%20Users%20Forum
380
+ [✉️ruby-forum-img]: https://img.shields.io/discourse/topics?server=https%3A%2F%2Fwww.rubyforum.org&style=for-the-badge&logo=discourse&label=Ruby%20Users%20Forum
381
+ [✉️ruby-forum]: https://www.rubyforum.org/tag/rubocop-lts
382
+
383
+ [✇bundle-group-pattern]: https://gist.github.com/pboling/4564780
384
+ [⛳️gem-namespace]: https://github.com/rubocop-lts/rubocop-lts-ruby
385
+ [⛳️namespace-img]: https://img.shields.io/badge/namespace-RuboCop::Lts::Ruby-3C2D2D.svg?style=square&logo=ruby&logoColor=white
386
+ [⛳️gem-name]: https://clickgems.clickhouse.com/dashboard/rubocop-lts-ruby
387
+ [⛳️name-img]: https://img.shields.io/badge/name-rubocop--lts--ruby-3C2D2D.svg?style=square&logo=rubygems&logoColor=red
388
+ [⛳️tag-img]: https://img.shields.io/github/tag/rubocop-lts/rubocop-lts-ruby.svg
389
+ [⛳️tag]: https://github.com/rubocop-lts/rubocop-lts-ruby/releases
390
+ [🚂maint-blog]: http://www.railsbling.com/tags/rubocop-lts-ruby
391
+ [🚂maint-blog-img]: https://img.shields.io/badge/blog-railsbling-0093D0.svg?style=for-the-badge&logo=rubyonrails&logoColor=orange
392
+ [🚂maint-contact]: http://www.railsbling.com/contact
393
+ [🚂maint-contact-img]: https://img.shields.io/badge/Contact-Maintainer-0093D0.svg?style=flat&logo=rubyonrails&logoColor=red
394
+ [💖🖇linkedin]: http://www.linkedin.com/in/peterboling
395
+ [💖🖇linkedin-img]: https://img.shields.io/badge/LinkedIn-Profile-0B66C2?style=flat&logo=newjapanprowrestling
396
+ [💖✌️wellfound]: https://wellfound.com/u/peter-boling
397
+ [💖✌️wellfound-img]: https://img.shields.io/badge/peter--boling-orange?style=flat&logo=wellfound
398
+ [💖💲crunchbase]: https://www.crunchbase.com/person/peter-boling
399
+ [💖💲crunchbase-img]: https://img.shields.io/badge/peter--boling-purple?style=flat&logo=crunchbase
400
+ [💖🐘ruby-mast]: https://ruby.social/@galtzo
401
+ [💖🐘ruby-mast-img]: https://img.shields.io/mastodon/follow/109447111526622197?domain=https://ruby.social&style=flat&logo=mastodon&label=Ruby%20@galtzo
402
+ [💖🦋bluesky]: https://bsky.app/profile/galtzo.com
403
+ [💖🦋bluesky-img]: https://img.shields.io/badge/@galtzo.com-0285FF?style=flat&logo=bluesky&logoColor=white
404
+ [💖🌳linktree]: https://linktr.ee/galtzo
405
+ [💖🌳linktree-img]: https://img.shields.io/badge/galtzo-purple?style=flat&logo=linktree
406
+ [💖💁🏼‍♂️devto]: https://dev.to/galtzo
407
+ [💖💁🏼‍♂️devto-img]: https://img.shields.io/badge/dev.to-0A0A0A?style=flat&logo=devdotto&logoColor=white
408
+ [💖💁🏼‍♂️aboutme]: https://about.me/peter.boling
409
+ [💖💁🏼‍♂️aboutme-img]: https://img.shields.io/badge/about.me-0A0A0A?style=flat&logo=aboutme&logoColor=white
410
+ [💖🧊berg]: https://codeberg.org/pboling
411
+ [💖🐙hub]: https://github.org/pboling
412
+ [💖🛖hut]: https://sr.ht/~galtzo/
413
+ [💖🧪lab]: https://gitlab.com/pboling
414
+ [👨🏼‍🏫expsup-upwork]: https://www.upwork.com/freelancers/~014942e9b056abdf86?mp_source=share
415
+ [👨🏼‍🏫expsup-upwork-img]: https://img.shields.io/badge/UpWork-13544E?style=for-the-badge&logo=Upwork&logoColor=white
416
+ [👨🏼‍🏫expsup-codementor]: https://www.codementor.io/peterboling?utm_source=github&utm_medium=button&utm_term=peterboling&utm_campaign=github
417
+ [👨🏼‍🏫expsup-codementor-img]: https://img.shields.io/badge/CodeMentor-Get_Help-1abc9c?style=for-the-badge&logo=CodeMentor&logoColor=white
418
+ [🏙️entsup-tidelift]: https://tidelift.com/subscription/pkg/rubygems-rubocop-lts-ruby?utm_source=rubygems-rubocop-lts-ruby&utm_medium=referral&utm_campaign=readme
419
+ [🏙️entsup-tidelift-img]: https://img.shields.io/badge/Tidelift_and_Sonar-Enterprise_Support-FD3456?style=for-the-badge&logo=sonar&logoColor=white
420
+ [🏙️entsup-tidelift-sonar]: https://blog.tidelift.com/tidelift-joins-sonar
421
+ [💁🏼‍♂️peterboling]: http://www.peterboling.com
422
+ [🚂railsbling]: http://www.railsbling.com
423
+ [📜src-gl-img]: https://img.shields.io/badge/GitLab-FBA326?style=for-the-badge&logo=Gitlab&logoColor=orange
424
+ [📜src-gl]: https://gitlab.com/rubocop-lts/rubocop-lts-ruby
425
+ [📜src-cb-img]: https://img.shields.io/badge/CodeBerg-4893CC?style=for-the-badge&logo=CodeBerg&logoColor=blue
426
+ [📜src-cb]: https://codeberg.org/rubocop-lts/rubocop-lts-ruby
427
+ [📜src-gh-img]: https://img.shields.io/badge/GitHub-238636?style=for-the-badge&logo=GitHub&logoColor=green
428
+ [📜src-gh]: https://github.com/rubocop-lts/rubocop-lts-ruby
429
+ [📜docs-cr-rd-img]: https://img.shields.io/badge/RubyDoc-Current_Release-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
430
+ [📜docs-head-rd-img]: https://img.shields.io/badge/YARD_on_Galtzo.com-HEAD-943CD2?style=for-the-badge&logo=readthedocs&logoColor=white
431
+ [📜gl-wiki]: https://gitlab.com/rubocop-lts/rubocop-lts-ruby/-/wikis/home
432
+ [📜gh-wiki]: https://github.com/rubocop-lts/rubocop-lts-ruby/wiki
433
+ [📜gl-wiki-img]: https://img.shields.io/badge/wiki-gitlab-943CD2.svg?style=for-the-badge&logo=gitlab&logoColor=white
434
+ [📜gh-wiki-img]: https://img.shields.io/badge/wiki-github-943CD2.svg?style=for-the-badge&logo=github&logoColor=white
435
+ [👽dl-rank]: https://clickgems.clickhouse.com/dashboard/rubocop-lts-ruby
436
+ [👽dl-ranki]: https://img.shields.io/gem/dt/rubocop-lts-ruby.svg
437
+ [👽version]: https://clickgems.clickhouse.com/dashboard/rubocop-lts-ruby
438
+ [👽versioni]: https://img.shields.io/gem/v/rubocop-lts-ruby.svg
439
+ [🏀qlty-mnt]: https://qlty.sh/gh/rubocop-lts/projects/rubocop-lts-ruby
440
+ [🏀qlty-mnti]: https://qlty.sh/gh/rubocop-lts/projects/rubocop-lts-ruby/maintainability.svg
441
+ [🏀qlty-cov]: https://qlty.sh/gh/rubocop-lts/projects/rubocop-lts-ruby/metrics/code?sort=coverageRating
442
+ [🏀qlty-covi]: https://qlty.sh/gh/rubocop-lts/projects/rubocop-lts-ruby/coverage.svg
443
+ [🏀codecov]: https://codecov.io/gh/rubocop-lts/rubocop-lts-ruby
444
+ [🏀codecovi]: https://codecov.io/gh/rubocop-lts/rubocop-lts-ruby/graph/badge.svg
445
+ [🏀coveralls]: https://coveralls.io/github/rubocop-lts/rubocop-lts-ruby?branch=main
446
+ [🏀coveralls-img]: https://coveralls.io/repos/github/rubocop-lts/rubocop-lts-ruby/badge.svg?branch=main
447
+ [🚎ruby-3.2-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/ruby-3.2.yml
448
+ [🚎ruby-3.3-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/ruby-3.3.yml
449
+ [🚎ruby-3.4-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/ruby-3.4.yml
450
+ [🚎jruby-10.0-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/jruby-10.0.yml
451
+ [🚎truby-24.2-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/truffleruby-24.2.yml
452
+ [🚎truby-25.0-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/truffleruby-25.0.yml
453
+ [🚎truby-33.0-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/truffleruby-33.0.yml
454
+ [🚎2-cov-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/coverage.yml
455
+ [🚎2-cov-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/coverage.yml/badge.svg
456
+ [🚎3-hd-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/heads.yml
457
+ [🚎3-hd-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/heads.yml/badge.svg
458
+ [🚎5-st-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/style.yml
459
+ [🚎5-st-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/style.yml/badge.svg
460
+ [🚎9-t-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/truffle.yml
461
+ [🚎9-t-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/truffle.yml/badge.svg
462
+ [🚎10-j-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/jruby.yml
463
+ [🚎10-j-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/jruby.yml/badge.svg
464
+ [🚎11-c-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/current.yml
465
+ [🚎11-c-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/current.yml/badge.svg
466
+ [🚎12-crh-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/dep-heads.yml
467
+ [🚎12-crh-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/dep-heads.yml/badge.svg
468
+ [🚎13-🔒️-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/locked_deps.yml
469
+ [🚎13-🔒️-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/locked_deps.yml/badge.svg
470
+ [🚎14-🔓️-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/unlocked_deps.yml
471
+ [🚎14-🔓️-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/unlocked_deps.yml/badge.svg
472
+ [🚎15-🪪-wf]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/license-eye.yml
473
+ [🚎15-🪪-wfi]: https://github.com/rubocop-lts/rubocop-lts-ruby/actions/workflows/license-eye.yml/badge.svg
474
+ [💎ruby-3.2i]: https://img.shields.io/badge/Ruby-3.2-CC342D?style=for-the-badge&logo=ruby&logoColor=white
475
+ [💎ruby-3.3i]: https://img.shields.io/badge/Ruby-3.3-CC342D?style=for-the-badge&logo=ruby&logoColor=white
476
+ [💎ruby-3.4i]: https://img.shields.io/badge/Ruby-3.4-CC342D?style=for-the-badge&logo=ruby&logoColor=white
477
+ [💎ruby-c-i]: https://img.shields.io/badge/Ruby-current-CC342D?style=for-the-badge&logo=ruby&logoColor=green
478
+ [💎ruby-headi]: https://img.shields.io/badge/Ruby-HEAD-CC342D?style=for-the-badge&logo=ruby&logoColor=blue
479
+ [💎truby-24.2i]: https://img.shields.io/badge/Truffle_Ruby-24.2-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
480
+ [💎truby-25.0i]: https://img.shields.io/badge/Truffle_Ruby-25.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
481
+ [💎truby-33.0i]: https://img.shields.io/badge/Truffle_Ruby-33.0-34BCB1?style=for-the-badge&logo=ruby&logoColor=pink
482
+ [💎truby-c-i]: https://img.shields.io/badge/Truffle_Ruby-current-34BCB1?style=for-the-badge&logo=ruby&logoColor=green
483
+ [💎truby-headi]: https://img.shields.io/badge/Truffle_Ruby-HEAD-34BCB1?style=for-the-badge&logo=ruby&logoColor=blue
484
+ [💎jruby-10.0i]: https://img.shields.io/badge/JRuby-10.0-FBE742?style=for-the-badge&logo=ruby&logoColor=red
485
+ [💎jruby-c-i]: https://img.shields.io/badge/JRuby-current-FBE742?style=for-the-badge&logo=ruby&logoColor=green
486
+ [💎jruby-headi]: https://img.shields.io/badge/JRuby-HEAD-FBE742?style=for-the-badge&logo=ruby&logoColor=blue
487
+ [🤝gh-issues]: https://github.com/rubocop-lts/rubocop-lts-ruby/issues
488
+ [🤝gh-pulls]: https://github.com/rubocop-lts/rubocop-lts-ruby/pulls
489
+ [🤝gl-issues]: https://gitlab.com/rubocop-lts/rubocop-lts-ruby/-/issues
490
+ [🤝gl-pulls]: https://gitlab.com/rubocop-lts/rubocop-lts-ruby/-/merge_requests
491
+ [🤝cb-issues]: https://codeberg.org/rubocop-lts/rubocop-lts-ruby/issues
492
+ [🤝cb-pulls]: https://codeberg.org/rubocop-lts/rubocop-lts-ruby/pulls
493
+ [🤝cb-donate]: https://donate.codeberg.org/
494
+ [🤝contributing]: https://github.com/rubocop-lts/rubocop-lts-ruby/blob/main/CONTRIBUTING.md
495
+ [🏀codecov-g]: https://codecov.io/gh/rubocop-lts/rubocop-lts-ruby/graph/badge.svg
496
+ [🖐contrib-rocks]: https://contrib.rocks
497
+ [🖐contributors]: https://github.com/rubocop-lts/rubocop-lts-ruby/graphs/contributors
498
+ [🖐contributors-img]: https://contrib.rocks/image?repo=rubocop-lts/rubocop-lts-ruby
499
+ [🚎contributors-gl]: https://gitlab.com/rubocop-lts/rubocop-lts-ruby/-/graphs/main
500
+ [🪇conduct]: https://github.com/rubocop-lts/rubocop-lts-ruby/blob/main/CODE_OF_CONDUCT.md
501
+ [🪇conduct-img]: https://img.shields.io/badge/Contributor_Covenant-2.1-259D6C.svg
502
+ [📌pvc]: http://guides.rubygems.org/patterns/#pessimistic-version-constraint
503
+ [📌semver]: https://semver.org/spec/v2.0.0.html
504
+ [📌semver-img]: https://img.shields.io/badge/semver-2.0.0-259D6C.svg?style=flat
505
+ [📌semver-breaking]: https://github.com/semver/semver/issues/716#issuecomment-869336139
506
+ [📌major-versions-not-sacred]: https://tom.preston-werner.com/2022/05/23/major-version-numbers-are-not-sacred.html
507
+ [📌changelog]: https://github.com/rubocop-lts/rubocop-lts-ruby/blob/main/CHANGELOG.md
508
+ [📗keep-changelog]: https://keepachangelog.com/en/1.0.0/
509
+ [📗keep-changelog-img]: https://img.shields.io/badge/keep--a--changelog-1.0.0-34495e.svg?style=flat
510
+ [📌gitmoji]: https://gitmoji.dev
511
+ [📌gitmoji-img]: https://img.shields.io/badge/gitmoji_commits-%20%F0%9F%98%9C%20%F0%9F%98%8D-34495e.svg?style=flat-square
512
+ [🧮kloc]: https://www.youtube.com/watch?v=dQw4w9WgXcQ
513
+ [🧮kloc-img]: https://img.shields.io/badge/KLOC-0.076-FFDD67.svg?style=for-the-badge&logo=YouTube&logoColor=blue
514
+ [🔐security]: https://github.com/rubocop-lts/rubocop-lts-ruby/blob/main/SECURITY.md
515
+ [🔐security-img]: https://img.shields.io/badge/security-policy-259D6C.svg?style=flat
516
+ [📄copyright-notice-explainer]: https://opensource.stackexchange.com/questions/5778/why-do-licenses-such-as-the-mit-license-specify-a-single-year
517
+ [📄license]: LICENSE.md
518
+ [📄license-ref]: https://github.com/rubocop-lts/rubocop-lts-ruby/blob/main/MIT.md
519
+ [📄license-img]: https://img.shields.io/badge/License-MIT-259D6C.svg
520
+ [📄license-compat]: https://www.apache.org/legal/resolved.html#category-a
521
+ [📄license-compat-img]: https://img.shields.io/badge/Apache_Compatible:_Category_A-%E2%9C%93-259D6C.svg?style=flat&logo=Apache
522
+
523
+ [📄ilo-declaration]: https://www.ilo.org/declaration/lang--en/index.htm
524
+ [📄ilo-declaration-img]: https://img.shields.io/badge/ILO_Fundamental_Principles-✓-259D6C.svg?style=flat
525
+ [🚎yard-current]: http://rubydoc.info/gems/rubocop-lts-ruby
526
+ [🚎yard-head]: https://rubocop-lts-ruby.galtzo.com
527
+ [💎stone_checksums]: https://github.com/galtzo-floss/stone_checksums
528
+ [💎SHA_checksums]: https://gitlab.com/rubocop-lts/rubocop-lts-ruby/-/tree/main/checksums
529
+ [💎rlts]: https://github.com/rubocop-lts/rubocop-lts
530
+ [💎rlts-img]: https://img.shields.io/badge/code_style_&_linting-rubocop--lts-34495e.svg?plastic&logo=ruby&logoColor=white
531
+ [💎appraisal2]: https://github.com/appraisal-rb/appraisal2
532
+ [💎appraisal2-img]: https://img.shields.io/badge/appraised_by-appraisal2-34495e.svg?plastic&logo=ruby&logoColor=white
533
+ [💎d-in-dvcs]: https://railsbling.com/posts/dvcs/put_the_d_in_dvcs/