Marvin Bot¶
Marvin is a GitHub Application that can help to automate certain aspects of our work on and beyond GitHub. Currently it offers the following functions:
- Kata Issue Handling
- Reminders
These functions are explained below.
1. Kata Issue Handling¶
The bot automatically parses any new issue created for an expected structure. This structure consists of a divider ---
followed by two fields **due**: YYYY-MM-DD
and **supervisor**: @supervisor
. The two fields might appear in any order, there might be any number of empty lines in between and additional, unrelated dividers are also accepted. A concise example looks like this:
This is a target condition. We want to reach the following state:
- [ ] something is running
- [ ] something else finally broke as expected
---
**due**: YYYY-MM-DD
**supervisor**: @supervisor
Once a valid target condition has been detected, the bot will post a timeline-comment. This is usually the first post. It will visualise the timeline of changes. When a due date has expired, the bot will post a friendly reminder asking the author to adjust the due date in the first post. This can be done by editing the first issue and changing the due date. Finally, when the target condition is closed the bot will post a summary.
2. Reminders¶
Sometimes it is useful to get back to issues in after a certain time to re-evaluate. This can be achieved by leveraging marvins command syntax. Each marvin command starts with /marvin
followed by a specific sub-command, in this case remind
. When a command has been parsed correctly, marvin will set a "eyes" reaction to indicate that the reminder has been set. On the early morning of the reminder date (UTC), marvin will post a comment and mention the attributed user.
Examples
First lets look at some examples, they should be fairly self-explanatory:
/marvin remind me in 2 days
/marvin remind me in 3 weeks
/marvin remind me in 4 months
/marvin remind me on 2023-01-18
/marvin remind @plihub in 1d
/marvin remind @plihub in 2w
/marvin remind @plihub in 3m
Syntax
The more formal syntax is:
/marvin remind <attribution> <date>
where:
attribution
is either "me" or any github user handle starting with an "@"date
is either the word "on" followed by an<absolute date>
or the word "in" followed by a<relative date>
absolute date
is a date in the form of YYYY-MM-DDrelative date
is a number followed by either a<day>
,<week>
or<month>
identifierday
is either "day", "days" or "d"week
is either "week", "weeks" or "w"month
is either "month", "months" or "m"