diff --git a/README.md b/README.md
index 47d7c17586df58780342d5e477bc4173f223c7a6..101ff5617ef28f27374d4b87342b6622dd692b54 100644
--- a/README.md
+++ b/README.md
@@ -13,5 +13,4 @@ Build:
 
 Run:
 
-    $ clang -emit-llvm -c -o something.bc something.c
-    $ opt -load build/lib/SkeletonPass.* -skeleton something.bc
+    $ clang -Xclang -load -Xclang build/lib/SkeletonPass.* something.c
diff --git a/skeleton/Skeleton.cpp b/skeleton/Skeleton.cpp
index 02fde997287f0c80edb7342e68c13ec47d4c9545..33e98ced1bcb0ce8d7f1eb60ab2053ee77323271 100644
--- a/skeleton/Skeleton.cpp
+++ b/skeleton/Skeleton.cpp
@@ -1,6 +1,8 @@
 #include "llvm/Pass.h"
 #include "llvm/IR/Function.h"
 #include "llvm/Support/raw_ostream.h"
+#include "llvm/IR/LegacyPassManager.h"
+#include "llvm/Transforms/IPO/PassManagerBuilder.h"
 using namespace llvm;
 
 namespace {
@@ -17,4 +19,13 @@ namespace {
 }
 
 char SkeletonPass::ID = 0;
-static RegisterPass<SkeletonPass> X("skeleton", "my great code transform");
+
+// Automatically enable the pass.
+// http://adriansampson.net/blog/clangpass.html
+static void registerSkeletonPass(const PassManagerBuilder &,
+                         legacy::PassManagerBase &PM) {
+  PM.add(new SkeletonPass());
+}
+static RegisterStandardPasses
+  RegisterMyPass(PassManagerBuilder::EP_EarlyAsPossible,
+                 registerSkeletonPass);