Skip to content
🚫 Stop saying "you forgot to …" in code review (in Ruby)
Ruby HTML Other
Branch: master
Clone or download

Latest commit

Latest commit 057037c May 6, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Drop Ruby 2.3 as Circle CI and Travis are not supporting anymore sinc… May 6, 2020
.github Update CI.yml Apr 7, 2020
.vscode Fix trailing whitespace Mar 7, 2019
bin Make chandler run on `rake release` Apr 18, 2017
danger_plugins Ensure that the Dangerfile + plugins all support the new scoped future Jul 23, 2016
lib Preprare for release May 6, 2020
spec Fix import Dangerfile in directory from GitLab Apr 28, 2020
.editorconfig Enable trim_trailing_whitespace for all files [ci skip] (#549) Sep 15, 2016
.gitattributes Set CHANGELOG merge strategy to union Feb 13, 2016
.gitignore Remove trailing whitespace from gitignore Mar 5, 2019
.hound.yml Added hound config Jan 13, 2016
.rspec Remvoe duplicate RSpec CLI option (#598) Sep 29, 2016
.rubocop.yml Drop Ruby 2.3 as Circle CI and Travis are not supporting anymore sinc… May 6, 2020
.travis.yml Drop Ruby 2.3 as Circle CI and Travis are not supporting anymore sinc… May 6, 2020 Preprare for release May 6, 2020
Dangerfile Don't run the junit checks in the GH actions run Apr 6, 2020
Dockerfile specify Gemfile Mar 22, 2020
Gemfile Drop Ruby 2.3 as Circle CI and Travis are not supporting anymore sinc… May 6, 2020
Guardfile Start work on message aggregation proper Feb 19, 2020
LICENSE Updated license Feb 26, 2019 Secure code-of-conduct links in readme Mar 4, 2019
Rakefile Move rubocop to Rake task and autocorrect errors Aug 7, 2018 Copyedit the vision statement Aug 19, 2016
appveyor.yml Fix ruby version for appveyor May 6, 2020 When clean building locally, print danger status locally too Jul 12, 2016
danger.gemspec Drop Ruby 2.3 as Circle CI and Travis are not supporting anymore sinc… May 6, 2020

Danger 🚫

License Gem Travis CI Join the community on Spectrum

Formalize your Pull Request etiquette.

What is Danger?VisionHelping OutPlugin Development

What is Danger?

Danger runs after your CI, automating your team's conventions surrounding code review.

This provides another logical step in your process, through this Danger can help lint your rote tasks in daily code review.

You can use Danger to codify your team's norms, leaving humans to think about harder problems.

For example?

You can:

  • Enforce CHANGELOGs
  • Enforce links to Trello/JIRA in PR/MR bodies
  • Enforce using descriptive labels
  • Look out for common anti-patterns
  • Highlight interesting build artifacts
  • Give specific files extra focus

Danger provides the glue to let you build out the rules specific to your team's culture, offering useful metadata and a comprehensive plugin system to share common issues.

Getting Started

Alright. So, actually, you may be in the wrong place. From here on in, this README is going to be for people who are interested in working on and improving on Danger.

We keep all of the end-user documentation at

Some quick links: Guides Index, DSL Reference, Getting Started and What does Danger Do?.

I'm here to help out!

Brilliant. So, let's get you set up.

git clone
cd danger
bundle install
bundle exec rake spec

This sets everything up and runs all of the tests.


Danger has a file, which sums up the ideas around what Danger is. It is the lower bounds of what Danger means. Orta has written on handling and creating Danger on the Artsy blog, too.


The code you write may end up in the public part of the website — the easiest way to tell is that it is vastly overdocumented. If you are working in a space that looks over-documented, please be extra considerate to add documentation. We expect the consumers of that documentation to be non-rubyists, thus you should avoid specific jargon and try to provide duplicate overlapping examples.


So far, we've not really figured out the right way to make tests for our CLI commands. When we have done so, they've ended up being brittle. So, ideally, try to move any logic that would go into a command into separate classes, and test those. We're okay with the command not having coverage, but ideally the classes that make up what it does will.

I'd strongly recommend using bundle exec guard to run your tests as you work. Any changes you make in the lib, or specs will have corresponding tests run instantly.


Ruby is super dynamic. One of the best ways to debug Ruby code is by using pry. We include pry for developers: when you have a problem, copy these two lines just before your problem and follow the instructions from "I Want To Be A Danger Wizard."

require 'pry'

License, Contributor's Guidelines and Code of Conduct

We try to keep as much discussion as possible in GitHub issues, but also have a pretty inactive Slack --- if you'd like an invite, ping @Orta a DM on Twitter with your email. It's mostly interesting if you want to stay on top of Danger without all the emails from GitHub.

This project is open source under the MIT license, which means you have full access to the source code and can modify it to fit your own needs.

This project subscribes to the Moya Contributors Guidelines which TLDR: means we give out push access easily and often.

Contributors subscribe to the Contributor Code of Conduct based on the Contributor Covenant version 1.3.0.

You can’t perform that action at this time.