diff --git a/.gitignore b/.gitignore
index 6d3aa824fcaa94a9c5474334e6bd9c82c6ede267..a08e2c1dd06c663863866131582949a63e49f30e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,3 +3,4 @@ site
 .DS_Store
 
 /.envrc
+repos/*
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000000000000000000000000000000000000..a57a09ff00775979513e160fb30e06e42ccecf12
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,4 @@
+source "https://rubygems.org"
+
+gem "rspec"
+gem "heroku_hatchet"
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000000000000000000000000000000000000..ad25b4dbd2f696b9516ca558f5327a7075551215
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,66 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    activesupport (5.2.1)
+      concurrent-ruby (~> 1.0, >= 1.0.2)
+      i18n (>= 0.7, < 2)
+      minitest (~> 5.1)
+      tzinfo (~> 1.1)
+    concurrent-ruby (1.0.5)
+    diff-lcs (1.3)
+    erubis (2.7.0)
+    excon (0.62.0)
+    heroics (0.0.24)
+      erubis (~> 2.0)
+      excon
+      moneta
+      multi_json (>= 1.9.2)
+    heroku_hatchet (4.0.2)
+      excon (~> 0)
+      minitest-retry (~> 0.1.9)
+      platform-api (~> 2)
+      repl_runner (~> 0.0.3)
+      rrrretry (~> 1)
+      thor (~> 0)
+      threaded (~> 0)
+    i18n (1.1.0)
+      concurrent-ruby (~> 1.0)
+    minitest (5.11.3)
+    minitest-retry (0.1.9)
+      minitest (>= 5.0)
+    moneta (0.8.1)
+    multi_json (1.13.1)
+    platform-api (2.1.0)
+      heroics (~> 0.0.23)
+      moneta (~> 0.8.1)
+    repl_runner (0.0.3)
+      activesupport
+    rrrretry (1.0.0)
+    rspec (3.8.0)
+      rspec-core (~> 3.8.0)
+      rspec-expectations (~> 3.8.0)
+      rspec-mocks (~> 3.8.0)
+    rspec-core (3.8.0)
+      rspec-support (~> 3.8.0)
+    rspec-expectations (3.8.1)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-mocks (3.8.0)
+      diff-lcs (>= 1.2.0, < 2.0)
+      rspec-support (~> 3.8.0)
+    rspec-support (3.8.0)
+    thor (0.20.0)
+    thread_safe (0.3.6)
+    threaded (0.0.4)
+    tzinfo (1.2.5)
+      thread_safe (~> 0.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  heroku_hatchet
+  rspec
+
+BUNDLED WITH
+   1.16.2
diff --git a/hatchet.json b/hatchet.json
new file mode 100644
index 0000000000000000000000000000000000000000..20ed7dabd8c81ebee2149bef8801ed4f7d186626
--- /dev/null
+++ b/hatchet.json
@@ -0,0 +1,5 @@
+{
+  "python": [
+    "heroku/python-getting-started"
+  ]
+}
diff --git a/hatchet.lock b/hatchet.lock
new file mode 100644
index 0000000000000000000000000000000000000000..1e334cb0d2e70a9746690bcb7b808f000d68cd52
--- /dev/null
+++ b/hatchet.lock
@@ -0,0 +1,3 @@
+---
+- - "./repos/python/python-getting-started"
+  - f56b90499ec11e1c9576da2f8c7331300e189db3
diff --git a/spec/hatchet/python_spec.rb b/spec/hatchet/python_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..5ae95ed1b24d51f0d979559f7640ddbe048edeb4
--- /dev/null
+++ b/spec/hatchet/python_spec.rb
@@ -0,0 +1,10 @@
+require_relative '../spec_helper'
+
+describe "Python!!!!!!!!!!!" do
+  it "🐍" do
+    Hatchet::Runner.new('python-getting-started', stack: DEFAULT_STACK).deploy do |app|
+      expect(app.output).to           match(/Installing pip/)
+      expect(app.run('python -V')).to match(/3.6.6/)
+    end
+  end
+end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b94f3bf5bdb5e7549a2d2678f8dfde5309f92d97
--- /dev/null
+++ b/spec/spec_helper.rb
@@ -0,0 +1,23 @@
+ENV['HATCHET_BUILDPACK_BASE'] = 'https://github.com/heroku/heroku-buildpack-python.git'
+
+require 'rspec/core'
+require 'rspec/retry'
+require 'hatchet'
+
+require 'date'
+
+RSpec.configure do |config|
+  config.full_backtrace      = true
+  config.verbose_retry       = true # show retry status in spec process
+  config.default_retry_count = 2 if ENV['IS_RUNNING_ON_CI'] # retry all tests that fail again
+  config.expect_with :rspec do |c|
+    c.syntax = :expect
+  end
+end
+
+if ENV['TRAVIS']
+  # Don't execute tests against "merge" commits
+  exit 0 if ENV['TRAVIS_PULL_REQUEST'] != 'false' && ENV['TRAVIS_BRANCH'] == 'master'
+end
+
+DEFAULT_STACK = 'heroku-16'
\ No newline at end of file