Skip to content
CAI
Software that uses CAICheck a score

sferik/x-cli

65.5

Adequate · 26 September 2026

12.3k

lines of production code

Rust

with Ruby

4

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a command-line interface for interacting with the X (formerly Twitter) API, originally implemented in Ruby and recently rewritten in Rust. It provides a suite of subcommands for managing user accounts, timelines, direct messages, and social interactions, while maintaining backward compatibility with legacy command structures. The tool handles authentication via OAuth 1.0a and 2.0, manages local configuration profiles, and includes shell completions and documentation for various Unix shells.

Features

Add man page for the x command

A new manual page (man/x.1) has been added for the x command, documenting its command-line options (such as --color, --profile, --version, and --help) and listing all available subcommands including accounts, authorize, block, direct messages, follow, retweet, timeline, trends, and various user and place management features.

man · high confidence

Added Fish shell completions for the t CLI

Users of the Fish shell can now enable tab-completion for the \t\ command-line tool. A new \etc/t-completion.fish\ script has been added, providing completions for global options (such as \--host\, \--color\, \--no-ssl\, and \--profile\) and subcommands (including \accounts\, \authorize\, \block\, \direct\_messages\, \dm\, \favorite\, \follow\, \mentions\, \reply\, and others), along with their specific flags. To activate this feature, users must source the new file from their Fish configuration.

etc · high confidence

Legacy Ruby CLI project scaffolding and configuration

This change introduces the foundational structure for the legacy Ruby-based Twitter CLI, including the RuboCop configuration (targeting Ruby 3.2), the main executable entry point, the core CLI command definitions, and shell completion scripts for Bash and Zsh. It also adds the project's changelog, contributing guidelines, license, and README documentation to establish the development workflow and user onboarding process.

legacy · high confidence

Removals

Removal of Ruby-based CLI entry point

The Ruby-based command-line interface entry point (\bin/t\) has been removed from the repository. This file previously served as the executable wrapper to launch the \T::CLI\ application, handling argument passing and basic interrupt management. Its deletion indicates that the CLI functionality has been migrated to a different implementation or location, likely the Rust-based \x\ command mentioned in the commit history, rendering this specific Ruby script obsolete.

bin · high confidence

Removal of lib/t.rb entry point

The lib/t.rb file, which previously served as the library's entry point by requiring t/cli, has been deleted. This change removes the top-level require statement that loaded the CLI component, altering how the library is initialized or accessed from this specific path.

lib · high confidence

Removed legacy library source files

Deleted the core implementation files for the \lib/t\ library, including the CLI definition (\cli.rb\), configuration file handler (\rcfile.rb\), account management set (\set.rb\), and version constants (\version.rb\).

lib/t · high confidence

Behavioural changes

Port CLI from Ruby to Rust and rename from \`t\` to \`x\`

The command-line interface has been rewritten in Rust and renamed from \t\ to \x\. This change introduces a new binary entry point (\src/main.rs\) and a library interface (\src/lib.rs\) that drives the CLI via a new runner (\src/runner.rs\). Command definitions are now generated from a manifest (\src/manifest.rs\) that parses legacy Ruby source files to preserve existing command structures and options. Profile management has been moved to a new Rust module (\src/rcfile.rs\) that handles loading, saving, and migrating the \\~/.xrc\ configuration file, including fallback support for the legacy \.trc\ file.

(repo-wide), src · high confidence

Rewrote X API client from Ruby to Rust with inline OAuth 1.0a

The x-api library has been rewritten in Rust, replacing the previous Ruby implementation and the external oauth-client crate with an inline OAuth 1.0a signing module. This change introduces new HTTP backend abstractions, including support for both OAuth 1.0a user-context signing and OAuth 2 bearer tokens, along with retry logic for transient 5xx and 429 errors. Error messages from the API are now formatted to match the previous Ruby gem's behavior, ensuring consistent user-facing error reporting.

x-api · high confidence

Test coverage

Added integration and compatibility tests for the Rust CLI port; Removed legacy RSpec test infrastructure and RCFile specs.

Housekeeping

Added empty tmp directory placeholder

An empty .gitkeep file was added to the tmp directory to ensure the folder is tracked by version control.

tmp · 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

This is the PUBLIC form of this artifact. Findings are listed in full, but the details of SECURITY findings — which rule fired, in which file, on which line, and how to fix it — are deliberately withheld, and any secret-scanner results are excluded entirely. Where detail is absent here it was REMOVED FOR PUBLICATION; it is not missing from the analysis. The complete artifact is available from the repository owner.

Score

  • CAI 41 → 65 (+24.5)
  • Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.

Lenses

  • Code Health 100 → 87 (-13.4)
  • Architecture 94 → 100 (+5.4)
  • Maturity 57 → 57 (+0.0)
  • Readiness 32 → 78 (+45.9)
  • Security 27 → 61 (+34.6)

Resolved (47)

  • Coverage not measured — test suite did not build
  • Dimension evaluation failed
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • High: security finding (details withheld)
  • …and 27 more

New (123)

  • Duplicated block (10 lines × 2) (src/runner.rs)
  • Duplicated block (10 lines × 2) (src/runner.rs)
  • Duplicated block (10 lines × 2) (src/runner.rs)
  • Duplicated block (10 lines × 2) (src/runner.rs)
  • Duplicated block (10 lines × 2) (src/runner.rs)
  • Duplicated block (11 lines × 2) (src/runner.rs)
  • Duplicated block (11 lines × 2) (x-api/src/backend.rs)
  • Duplicated block (11 lines × 3) (src/runner.rs)
  • Duplicated block (12 lines × 2) (src/runner.rs)
  • Duplicated block (12 lines × 2) (src/runner.rs)
  • Duplicated block (12 lines × 2) (src/runner.rs)
  • Duplicated block (12 lines × 2) (src/runner.rs)
  • Duplicated block (12 lines × 2) (src/runner.rs)
  • Duplicated block (12 lines × 2) (src/runner.rs)
  • Duplicated block (12 lines × 4) (src/runner.rs)
  • Duplicated block (13 lines × 2) (src/runner.rs)
  • Duplicated block (13 lines × 2) (src/runner.rs)
  • Duplicated block (13–14 lines × 2) (src/runner.rs)
  • Duplicated block (14 lines × 2) (src/manifest.rs)
  • Duplicated block (15 lines × 3) (src/runner.rs)
  • …and 103 more

Changes since last survey

  • 10 commits — 10 feature/other, 0 fixes

By area

  • (root) — 9 commits
  • .github/workflows — 1 commit

Notable commits

  • change: ci: bump actions-rust-lang/setup-rust-toolchain from 1 to 2
  • change: deps: bump base64 from 0.23.0 to 0.23.1
  • change: deps: bump clap from 4.6.6 to 4.6.7
  • change: deps: bump clap_mangen from 0.3.0 to 0.3.2
  • change: deps: bump clap_mangen from 0.3.2 to 0.3.3
  • change: deps: bump dirs from 6.0.0 to 7.0.0
  • change: deps: bump reqwest from 0.13.4 to 0.13.5
  • change: deps: bump rust-toolchain from 1.97.1 to 1.98.0
  • change: deps: bump rust-toolchain from 1.98.0 to 1.98.1
  • change: deps: bump thiserror from 2.0.19 to 2.0.20

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

Survey your own repository

sferik/x-cli 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 26 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 4a3273bd245728cbcb674d0131ba236820d91ee3 — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-7c1cb6328e11.