Skip to content
CAI
Software that uses CAICheck a score

thoughtbot/suspenders

55.9

Adequate · 28 September 2026

647

lines of production code

Ruby

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

Suspenders is a Ruby gem that generates new Rails applications based on thoughtbot's best practices. It provides a command-line interface to scaffold projects with PostgreSQL, Sidekiq, and specific development tooling, while also including a utility to consolidate and tidy Gemfile groups. The system is tested via RSpec and uses Standard for code linting.

How it got here

2010 — Initial gem release and test migration

6 changes.

This period marks the initial release of the Suspenders gem, establishing its core structure and development dependencies. The work focused on modernizing the project's infrastructure by migrating the test suite from Cucumber to RSpec and replacing legacy setup scripts with streamlined automation tools.

2011–2026 — Suspenders CLI and library foundation

7 changes.

This period established the core Suspenders library and its command-line interface, introducing features such as Ruby 3.2+ enforcement, Gemfile consolidation, and Sidekiq integration. The work focused on building the foundational module structure, adding RBS type signatures, and implementing a comprehensive RSpec test suite to verify CLI behavior and gemfile management logic.

Features

Add CLI executable with version and new app commands

The \exe/suspenders\ executable is introduced, enabling users to run \suspenders -v\ to display the current version and \suspenders new APP\_NAME\ to generate a new application. The script validates arguments, ensuring exactly one command is provided, and delegates execution to the underlying CLI logic while handling errors gracefully.

exe · high confidence

Initial Suspenders library entry point

The Suspenders library now exposes a main entry point that loads the version information, command-line interface, and gemfile consolidator components, establishing the foundational module structure for the tool.

lib · high confidence

Introduce Sidekiq background processing and development seed tasks

Generated applications now include Sidekiq for background job processing, configured with Redis support and a development-only N+1 query detection middleware (Prosopite). A new development seeder module and associated Rake tasks (\development:db:seed\ and \development:db:seed:replant\) are added to manage seed data in development, alongside Procfile templates for running web, worker, and release processes.

lib/templates · high confidence

Suspenders 20260325.0 introduces CLI, Gemfile consolidation, and Ruby 3.2+ requirement

Suspenders has been updated to version 20260325.0, which now enforces a minimum Ruby version of 3.2.0. This release introduces a new command-line interface (lib/suspenders/cli.rb) that generates new Rails applications using a PostgreSQL database, skipping test setup and Solid features, while applying a custom web template. Additionally, a new Gemfile consolidator (lib/suspenders/gemfile\_consolidator.rb) has been added to tidy and merge duplicate gem groups within Gemfiles, improving consistency in generated projects.

lib/suspenders · high confidence

Removals

Removed shell step definitions for rake task execution

The step definitions for running rake tasks and verifying their success in the shell environment have been removed from the test suite. This change eliminates the ability to execute rake tasks via the 'I run the rake task' step and check for successful responses via the 'I see a successful response in the shell' step, likely as part of a broader cleanup or migration of test infrastructure.

_features/step\definitions · high confidence

Behavioural changes

Add RBS signature for Suspenders module

A new RBS type signature file (sig/suspenders.rbs) has been added to define the Suspenders module, specifically declaring the VERSION constant as a String. This provides static type information for the Suspenders component, aiding in type checking and IDE support for Ruby code that utilizes this module.

sig · low confidence

Migrate test suite from Cucumber to RSpec and Standard

The project's test infrastructure has been updated to use RSpec and Standard instead of Cucumber. The Rakefile now invokes \rspec\ and \standard\ tasks, and a new \.rspec\ file configures RSpec to use documentation formatting, color output, and require \spec\_helper\. Additionally, \.gitignore\ has been updated to exclude RSpec status files and coverage directories, while the old \test\_project\ git submodule has been removed.

(repo-wide) · high confidence

Removal of Cucumber feature file for rake clean tests

The Cucumber feature file \features/rake\_clean.feature\, which previously verified that rake tasks like \db:create:all\, \db:migrate\, and \cucumber\ executed successfully in a suspended project, has been removed. This deletion is part of the broader migration away from the Cucumber testing framework.

features · high confidence

Removed obsolete spec/expectations require in Cucumber support

The \features/support/env.rb\ file has been deleted, removing the \require 'spec/expectations'\ line. This cleanup reflects that the spec/expectations library is no longer needed for the test suite, likely as part of the broader migration from Cucumber to RSpec.

features/support · medium confidence

Replaces legacy 'suspension' generator with new 'setup' and 'qa' scripts

The legacy \bin/suspension\ script, which previously scaffolded new projects by cloning a remote template and running manual gem installations, has been removed. It is replaced by \bin/setup\ for streamlined local environment configuration (running \bundle install\) and \bin/qa\ to automate the creation of a QA environment. A new \bin/console\ script is also added to facilitate interactive experimentation with the gem using IRB.

bin · high confidence

Test coverage

Added RSpec test suite for Suspenders CLI; Added tests for Gemfile group consolidation.

Dependencies

Initial release of Suspenders gem with development tooling

This change introduces the initial version of the Suspenders gem, a tool for generating new Rails applications based on thoughtbot's best practices. The gemspec defines the core package metadata, while the Gemfile establishes the development environment dependencies, specifically locking RSpec to version 3.13.2 for testing and Standard (via RuboCop) to version 1.31.2 for code linting.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 63 → 56 (-6.7)
  • Rubric changed (rubric-2026.09.8 → rubric-2026.09.16) — scores are not directly comparable.

Lenses

  • Code Health 98 → 98 (+0.0)
  • Architecture 69 → 66 (-3.3)
  • Maturity 59 → 59 (+0.0)
  • Readiness 55 → 41 (-13.5)
  • Security 92 → 93 (+1.6)

New (3)

  • Inconsistent arity for the same operation. Similar to CLI, the call method exists in two forms with different argument requirements, creating ambiguity about whether content is required at call time or initialization time.
  • Inconsistent arity for the same operation. The CLI class exposes two methods with the same name but different required arguments, which can be confusing regarding whether the app name is required or optional.
  • No ADRs found

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

thoughtbot/suspenders was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 28 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 99909c1fbf0bab74d9cddfd61e34a9a67c93ee41 — the exact code this score is about.
  • Scored under rubric-2026.09.16 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-2d9048c36d26.