Skip to content
CAI
Software that uses CAICheck a score

hubotio/hubot

55.9

Adequate · 1 October 2026

3.6k

lines of production code

JavaScript

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is a chat bot framework that provides a core platform for creating and managing automated agents. It features a modernized architecture with a deterministic command bus, middleware support, and persistent storage capabilities. The framework includes a CLI for scaffolding and execution, along with adapters for interacting with chat platforms and a shell interface.

How it got here

2011 — ESM migration and core rewrite

6 changes.

This period focused on migrating Hubot from CoffeeScript to ES Modules, rewriting the core platform and CLI in JavaScript. The update introduced a new CommandBus and middleware architecture while removing legacy adapters and scripts to modernize the codebase.

2014–2025 — core infrastructure and tooling expansion

6 changes.

This period focused on establishing robust development workflows through helper scripts and comprehensive test coverage for core components. It also expanded platform support by adding adapters for Windows, Linux, and Campfire, while introducing configuration management and GitHub Pages deployment hooks.

Features

Add development and release helper scripts

The project now includes a set of shell scripts in the \script/\ directory to streamline common development tasks. \script/bootstrap\ installs dependencies, \script/test\ and \script/smoke-test\ wrap the corresponding npm commands, \script/server\ starts the application, and \script/simple-lint.mjs\ provides a custom linter for JavaScript/ES modules. Additionally, \script/release\ automates the release process by validating the changelog, ensuring the correct branch is used, and publishing the package with a git tag.

script · high confidence

Added SfabHook to configure GitHub Pages virtual path

A new SfabHook module has been introduced to support GitHub Pages deployments that use a virtual path. This hook returns a configuration object specifying a base href of '/hubot/', ensuring that relative links and assets resolve correctly when the application is served from a subdirectory rather than the root.

sfab-hooks · high confidence

Added example scripts for running Hubot on Windows and Linux

New example files have been added to the examples directory to help users deploy Hubot. A PowerShell script (hubot-start.ps1) is provided for Windows, featuring a loop to restart the Hubot process. A systemd service unit file (hubot.service) is also included for Linux, demonstrating how to configure the service with environment variables and automatic restarts.

examples · high confidence

Initialize robot configuration object

A new configuration module has been added to initialize an empty configuration object on the robot instance, making it available for use throughout the program.

configuration · high confidence

Removals

Removal of legacy Campfire and Shell adapters

The legacy Campfire and Shell adapter implementations have been removed from the codebase. This eliminates the direct HTTP streaming logic for Campfire rooms and the stdin-based shell interface, reflecting a shift away from these specific integration methods in favor of newer adapter mechanisms.

src/hubot · high confidence

Removal of legacy Hubot scripts

The following Hubot scripts have been removed from the system: google-images, maps, mustache, ping, translate, and youtube. Users will no longer be able to interact with the bot using commands associated with these scripts, such as searching for images, retrieving maps, mustachifying images, pinging for time/echo, translating text, or searching YouTube.

src/hubot/scripts · high confidence

Behavioural changes

Core platform rewritten in JavaScript with new CommandBus and middleware architecture

The core \src\ directory has been migrated from CoffeeScript to JavaScript (ES Modules), replacing the legacy \robot.coffee\ with a modernized architecture. This change introduces a \CommandBus\ for deterministic command registration and handling, a \Middleware\ system allowing interception of listener matches and responses, and a new \Adapter\ base class with deprecation warnings for legacy user lookup methods. The \Brain\ and \DataStore\ classes have been refactored to support persistent storage via an abstract interface, and the \Robot\ class now integrates these components, including a built-in help command and structured logging via Pino.

src · high confidence

Hubot CLI rewritten in JavaScript (ESM) with updated script loading behavior

The \bin/hubot\ entry point has been migrated from CoffeeScript to JavaScript (ESM), replacing the old \bin/hubot\ script with a new \bin/Hubot.mjs\ module. This change updates the command-line interface to use \--require\ for specifying script paths instead of the previous \--scripts\ option, and modifies script loading to resolve paths relative to the current working directory (\.\) rather than the module's \\_\_dirname\. The new CLI also introduces an \--execute\ flag for running single commands and an \--alias\ flag for customizing the robot's trigger character, while maintaining support for \--adapter\, \--create\, and \--config-check\. An end-to-end test script (\bin/e2e-test.sh\) has been added to verify the new deployment and execution flow.

bin · high confidence

Hubot v11: ESM conversion, CoffeeScript removal, and CommandBus introduction

This release upgrades Hubot to an ES Module (ESM) codebase and removes support for CoffeeScript, meaning .coffee files will no longer load and users must use .mjs scripts. It introduces a new deterministic CommandBus subsystem (robot.commands) for slash-style commands with argument validation, custom type resolvers, and permission controls, alongside a new CLI generator (npx hubot --create) to scaffold bot instances. The project also adds a Code of Conduct, standardized editor settings via .editorconfig, and updated documentation.

(repo-wide) · high confidence

Fixes

Shell adapter history and logging fixes, plus new Campfire adapter

The Shell adapter now correctly persists command history to disk and respects the HUBOT\_LOG\_LEVEL environment variable for console output, resolving issues where history was lost or up-arrow navigation failed. It also no longer requires messages to start with the robot's name or alias. Additionally, a new Campfire adapter has been added to support Hubot integration with the Campfire chat platform.

src/adapters · high confidence

Test coverage

Added comprehensive test suite for core Hubot components

Added new test files covering the Adapter, Brain, CommandBus, Configuration, DataStore, Hubot CLI, Listener, Message, Middleware, OptParse, Robot, Shell, and User modules, along with a DummyAdapter fixture for script testing, ensuring these core areas are validated by the test runner.

test · high confidence

Dependencies

Upgrade to Express 5 and Pino logging

The project has upgraded its core dependencies to Express 5.2.1 and pino 10.3.1, replacing the previous Express 4 and log module stack. This change requires Node.js 18 or higher and npm 9 or higher, as reflected in the updated engine constraints. The entry point has also shifted from the legacy CoffeeScript-based './src/hubot' to the new ESM './index.mjs'.

(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 55 → 56 (+0.9)
  • Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 54 → 54 (+0.0)
  • Architecture 92 → 94 (+1.2)
  • Maturity 54 → 52 (-2.6)
  • Readiness 50 → 49 (-0.8)
  • Security 68 → 79 (+10.8)
  • Performance 100 (new)

Resolved (5)

  • Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
  • Documentation: no installation or build instructions (docs/deploying/bluemix.md)
  • Documentation: no installation or build instructions (docs/deploying/unix.md)
  • Medium CVE: [GHSA redacted] (package-lock.json)
  • Off-boarding risk: anonymized user #1

New (2)

  • Off-boarding risk: anonymized user #1
  • Orphaned knowledge (src/CommandBus.mjs)

Changes since last survey

  • 1 commits — 1 feature/other, 0 fixes

By area

  • (root) — 1 commit

Notable commits

  • change: chore(deps): bump qs from 6.15.2 to 6.16.0 (#1837)

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

Survey your own repository

hubotio/hubot 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 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 628ec6c75d0762deea68c899125137ef7ad4ac00 — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.