# hubot-estimate

Async private voting for estimation meetings

## Install

`npm install hubot-estimate`

Add the following to your `external-scripts.json`

file:

` "hubot-estimate"`

## Usage

You will get the most out of hubot estimate if you register your team. Note that to do so you will need to set HUBOT_PIVOTAL_TOKEN.

```
estimate team #channel-name, pivotal_project_id, [@team_member_1, @team_member_2, @team_member_N]
```

(The square brackets are required.)

By doing so, the bot will automatically post the score of the votes when all voters have voted in the specified channel. This reduces the overhead of having to ask the bot what the final score is or set up what the expected total number of voters is. Additionally, if you have a pivotal tracker board, the score will be automatically set and you will be linked to the ticket.

In a team channel discuss the ticket you'd like to estimate, ie. 123.

In a chat with your bot

```
estimate 123 as 3
> You've estimated story 123 as 3 points
```

Note that if you're not in a chat with your bot you will need @botname to address the bot.

In the team channel check if everyone is finished without seeing their votes

```
estimate voters for 123
> People who voted for 123: kleinjm, coworker1, coworker2
```

When everyone is done see all votes

```
estimate for 123
> Median vote of 5 by kleinjm: 3, coworker1: 5, coworker2: 7
```

To clear the estimate if needed

```
estimate remove 123
> Removed estimation for 123
```

Before voting you may also set a max number of voters to auto-print the vote when that number of voters has been reached. Again, this is better handled by setting a team but may be done ad hoc as well.

```
estimate max 2 for 123 # in a public channel
botname estimate 123 as 3 # user 1
botname estimate 123 as 3 # user 2
> Unanimous estimation of 3 points by user1, user2 # in the public channel
```

### Fibonacci Sequence

If your team uses the Fibonacci Sequence in your estimation process, you can set the `ESTIMATE_FIBONACCI_SEQUENCE`

environment variable to `true`

. This will prevent votes from being outside the sequence and round median votes to the nearest number in the sequence (rounded up).

For example:

```
estimate 123 as 4 # user 1
> 4 is an invalid estimate. Please use the Fibonacci sequence
estimate 123 as 3 # user 1
estimate 123 as 5 # user 2
estimate for 123
> Median vote of 5 by user1: 3, user2: 5 # instead of 4
```

## Test

`npm test`

## Contributing

Thanks for your intrest in contributing! Please see our contributing guidelines for details and feel free to reach out with any questions.