Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

DSL for creating recurring Pivotal Tracker stories

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 spec
Octocat-spinner-32 .gitignore
Octocat-spinner-32 .rspec
Octocat-spinner-32 .travis.yml
Octocat-spinner-32 Gemfile
Octocat-spinner-32 LICENSE
Octocat-spinner-32 Rakefile
Octocat-spinner-32 cardo.gemspec


travis-ci build status

Cardo is a DSL we created at Highgroove to create recurring stories in Pivotal Tracker.

It is currently the result of a spike, and doesn't quite function exactly as you might expect. Furthermore, there are (as of yet) little to no tests.


  • Ruby >= 1.9.x (developed with MRI 1.9.2)


Given a file highgroove.rb:

require 'rubygems'
require 'cardo'

Cardo.describe do
  WEEKLY_REVIEWER = 'Charles Brian Quinn'
  DEVELOPERS      = ['Andy Lindeman', 'Chris Kelly']
  BLOGGERS        = DEVELOPERS + ['Megan Key']

  # Tracker API key required
  # Can be copied from <>
  api_key ENV['API_KEY']

  # Retrieve from the last URL path from a Tracker project URL
  # e.g.,
  project_id 123456

  every_iteration do
    feature "Weekly Review", estimate: 1,
                             labels:   'weekly-review',
                             owned_by: WEEKLY_REVIEWER

    feature "Team Lunch", estimate: 1,
                          labels:   'team-lunch'

    feature "Demo Day", estimate: 1,
                        labels:   'demo-day'

    random_pairing "Code Review of %s", DEVELOPERS, estimate: 1,
                                                    labels: 'code-review'

    random_pairing "Pair with %s", DEVELOPERS, estimate: 1,
                                               labels:   'pairings'

    random "Blog Post", BLOGGERS, estimate: 1,
                                  labels:   'blog-post'

Create the stories with:

API_KEY='abc123' ruby highgroove.rb
Something went wrong with that request. Please try again.