PHPackages                             chromatichq/chq-robo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. chromatichq/chq-robo

Abandoned → [chromatic/usher](/?search=chromatic%2Fusher)Library

chromatichq/chq-robo
====================

A collection of Robo commands for use on Chromatic projects.

v5.1.4(1mo ago)1340.0k6[9 issues](https://github.com/ChromaticHQ/usher/issues)[3 PRs](https://github.com/ChromaticHQ/usher/pulls)MITPHPPHP &gt;=8.1CI passing

Since Feb 22Pushed 3w ago4 watchersCompare

[ Source](https://github.com/ChromaticHQ/usher)[ Packagist](https://packagist.org/packages/chromatichq/chq-robo)[ RSS](/packages/chromatichq-chq-robo/feed)WikiDiscussions 5.x Synced 2d ago

READMEChangelog (10)Dependencies (32)Versions (82)Used By (0)

Usher
=====

[](#usher)

Usher is intended for use on Chromatic repositories to supplement the use of the [Robo](https://robo.li/) PHP task runner. It contains a number of commands to assist in development, builds, and deployments, and can be extended in downstream repos.

- ush·er *(verb)*: to show or guide (someone) somewhere.
- ush·er *(noun)*: American singer, songwriter, businessman, and dancer.

[![Usher in a tuxedo](https://user-images.githubusercontent.com/20355/146567165-6a9a6dc5-66cd-4f7c-8e39-69de09365bfd.jpg)](https://user-images.githubusercontent.com/20355/146567165-6a9a6dc5-66cd-4f7c-8e39-69de09365bfd.jpg)

Compatibility
-------------

[](#compatibility)

Usher VersionPHPDrupalNotes5.x8.1+9.5 - 11.0+**Active development**4.x8.1+9.5 - 10.1+**Minimally maintained**3.x8.1+9.5 - 10.1+**Minimally maintained**2.x7.4 - 8.17, 9.4 - 10.0**Unsupported**1.x7.47, 8**Unsupported**Installation
------------

[](#installation)

`composer require chromatic/usher`

Configuration
-------------

[](#configuration)

- Create a `robo.yml` file in the root of your codebase. `robo.drupal.example.yml`is provided as a starting point for Drupal projects.
- Create a `.sites.config.yml` file in the root of your codebase. See `.sites.config.example.yml` for reference on what can/should be configured.
- Add the following to your repo's `composer.json` "scripts" section so that you can call robo easily with `composer robo`: ```
    "scripts": {
      "robo": "robo --ansi"
    }
    ```
- If you are overriding any commands, add the following to your repo's `composer.json` file. Be sure to specify your own namespace prefix in place of `YOURPREFIX`. ```
    "autoload": {
    "psr-4": {
        "YOURPREFIXRobo\\": "robo/src"
      }
    }
    ```

    Then place the commands in `robo/src/Robo/Plugin/Commands` with the `YOURPREFIXRobo\Robo\Plugin\Commands` namespace.
- If you are using any of the commands that use the [`GitHubStatusTrait`](src/Robo/Plugin/Traits/GitHubStatusTrait.php) to set status checks on your pull requests, a personal access token must be created in GitHub.
    1. Create a [personal access token](https://github.com/settings/tokens/new) in GitHub.
    2. Create an environment variable named `GITHUB_ACCESS_TOKEN` with the token value in the environment where the checks will run.

Commands
--------

[](#commands)

### `robo dev:refresh`

[](#robo-devrefresh)

The `dev:refresh` command, often available in downstream repos as `composer robo dev:refresh -- SITENAME`, refreshes your local development environment (DDEV) which includes:

1. `composer install`
2. Theme build (`robo theme:build`).
3. Disabling front-end caches.
4. Downloading the most recent database dump.
5. Importing the database dump.
6. `drush deploy`
7. Generating a Drupal login link.

### `robo deploy:drupal`

[](#robo-deploydrupal)

The `deploy:drupal` command, often available in downstream repos as `composer robo deploy:drupal SITENAME DOCROOT`, deploys Drupal in a standardized way which includes:

1. `drush deploy`
2. `drush config:import`

### `robo drupal:status-report`

[](#robo-drupalstatus-report)

The `drupal:status-report` command, often available in downstream repos as `composer robo drupal:status-report`, checks Drupal's status report and reports warnings and errors. Specific warnings or errors can be ignored by adding the warning/error ID to the `drupal_status_report_ignore_checks` key in the downstream repository's `robo.yml` config file. For example:

```
drupal_status_report_ignore_checks:
  - update_core
```

To identify the ID's in question, run `drush status-report --format=yaml`. The output will include the ID's.

### `robo config:update-php-version`

[](#robo-configupdate-php-version)

Use the `config:update-php-version` command to update the PHP version configured for a project in files listed in the `php_version_config_paths` key of `robo.yml`:

```
php_current_version: '8.1'
php_version_config_paths:
  - composer.json
  - .tugboat/config.yml
  - .platform.app.yaml
```

#### Slack Notification Options

[](#slack-notification-options)

If you would like to have Usher send a notification to Slack, you need to [create a Slack app in your workspace](https://api.slack.com/apps), and then add an "incoming webhook" for the channel where you would like the notification sent. When you create the webhook, Slack will provide you with a unique URL for that channel. You must then set the `SLACK_WEBHOOK_URL` environment variable to the Slack webhook URL in whatever environment Usher is running in.

Sample webhook URL: `https://hooks.slack.com/services/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`

- `notify-slack` - Default to `false`. If `true`, Slack notification will be sent on build failure in Tugboat.
- `notify-slack-force` - Default to `false`. If `true`, it will force an attempt to notify Slack about the build regardless of what happened.

Extending
---------

[](#extending)

You can use this package for the basics and then build upon it. New commands that are relevant only to a single repo should be added to a top-level `/robo`directory in the project repo. Commands should live at `/robo/src/Robo/Plugin/Commands/`. Add a new autoload namespace to `composer.json` so these commands will be detected:

```
"autoload": {
    "psr-4": {
        "YOURPREFIXRobo\\": "robo/src"
    }
}
```

Contributing
------------

[](#contributing)

If you have a new command that would be useful to multiple repositories that use this package, create a new command here under `/src/Robo/Plugin/Commands` via a pull request.

###  Health Score

55

—

FairBetter than 98% of packages

Maintenance79

Regular maintenance activity

Popularity31

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~26 days

Recently: every ~88 days

Total

71

Last Release

57d ago

Major Versions

v2.24.3 → v3.1.02023-06-13

v2.24.4 → v3.3.02023-10-19

v3.3.0 → v4.0.02023-10-25

2.x-dev → v4.0.12024-01-09

v4.0.4 → v5.0.02024-10-01

PHP version history (2 changes)v2.1.0PHP &gt;=7.4

v3.0.0PHP &gt;=8.1

### Community

Maintainers

![](https://www.gravatar.com/avatar/8e7fb531f9ea53cde7edac465cdb04324ba1d620db01d01220789d677667a8ac?d=identicon)[markdorison](/maintainers/markdorison)

---

Top Contributors

[![markdorison](https://avatars.githubusercontent.com/u/20355?v=4)](https://github.com/markdorison "markdorison (105 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (51 commits)")[![renovate[bot]](https://avatars.githubusercontent.com/in/2740?v=4)](https://github.com/renovate[bot] "renovate[bot] (24 commits)")[![apotek](https://avatars.githubusercontent.com/u/279278?v=4)](https://github.com/apotek "apotek (16 commits)")[![adamzimmermann](https://avatars.githubusercontent.com/u/1349906?v=4)](https://github.com/adamzimmermann "adamzimmermann (11 commits)")[![Boegie](https://avatars.githubusercontent.com/u/18569707?v=4)](https://github.com/Boegie "Boegie (4 commits)")[![agarzola](https://avatars.githubusercontent.com/u/439649?v=4)](https://github.com/agarzola "agarzola (2 commits)")[![chrisfree](https://avatars.githubusercontent.com/u/604059?v=4)](https://github.com/chrisfree "chrisfree (1 commits)")[![mmatsoo](https://avatars.githubusercontent.com/u/6803156?v=4)](https://github.com/mmatsoo "mmatsoo (1 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisRector

Type Coverage Yes

### Embed Badge

![Health badge](/badges/chromatichq-chq-robo/health.svg)

```
[![Health](https://phpackages.com/badges/chromatichq-chq-robo/health.svg)](https://phpackages.com/packages/chromatichq-chq-robo)
```

###  Alternatives

[chromatic/usher

A collection of Robo commands for use on Chromatic projects.

13534.3k1](/packages/chromatic-usher)[drush/drush

Drush is a command line shell and scripting interface for Drupal, a veritable Swiss Army knife designed to make life easier for those of us who spend some of our working hours hacking away at the command prompt.

2.4k57.4M685](/packages/drush-drush)[craftcms/cms

Craft CMS

3.6k3.6M2.6k](/packages/craftcms-cms)[wp-cli/wp-cli-tests

WP-CLI testing framework

422.7M87](/packages/wp-cli-wp-cli-tests)[drupal/core

Drupal is an open source content management platform powering millions of websites and applications.

19462.3M1.3k](/packages/drupal-core)[drupal/coder

Coder is a library to review Drupal code.

3043.6M461](/packages/drupal-coder)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
