hubotio/hubot
55.9
Adequate · 1 October 2026
3.6k
lines of production code
JavaScript
primary language
2
measurements over time
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.