sferik/x-cli
65.5
Adequate · 26 September 2026
12.3k
lines of production code
Rust
with Ruby
4
measurements over time
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.