diff --git a/hi.cabal b/hi.cabal
--- a/hi.cabal
+++ b/hi.cabal
@@ -1,5 +1,5 @@
 name: hi
-version: 1.0.0.0
+version: 1.1.0.0
 cabal-version: >=1.8
 build-type: Simple
 license: BSD3
@@ -57,7 +57,7 @@
         filepath -any,
         optparse-applicative >=0.10.0,
         parsec -any,
-        process -any,
+        process >=1.2.0.0,
         split -any,
         template ==0.2.*,
         temporary >=1.2.0.3,
diff --git a/src/Hi.hs b/src/Hi.hs
--- a/src/Hi.hs
+++ b/src/Hi.hs
@@ -79,11 +79,8 @@
 context opts x = T.pack . fromJust $ lookup (T.unpack x) opts
 
 postProcess :: Option -> IO ()
-postProcess Option {initializeGitRepository, packageName} = do
-    when initializeGitRepository $
-      inDirectory packageName $
-        void $ system "git init && git add . && git commit -m \"Initial commit\""
-    return ()
+postProcess Option {packageName, afterCommands} = do
+    void $ inDirectory packageName $ forM_ afterCommands (void . system)
 
 -- | Drop 'RegularFile's if there is a 'TemplateFile' which has same name
 dropExtraRegularFiles :: Files -> Files
diff --git a/src/Hi/CommandLineOption.hs b/src/Hi/CommandLineOption.hs
--- a/src/Hi/CommandLineOption.hs
+++ b/src/Hi/CommandLineOption.hs
@@ -13,7 +13,8 @@
                        , email                   :: Maybe String
                        , repository              :: String
                        , configFilePath          :: Maybe String
-                       , initializeGitRepository :: Maybe Bool
+                       , initializeGitRepository :: Bool
+                       , afterCommand            :: Maybe String
                        } deriving (Eq, Ord, Show)
 
 commandLineOption :: Parser CommandLineOption
@@ -24,7 +25,8 @@
    <*> optional (strOption (short 'e' <> long "email"        <> help "Email address of the maintainer"))
    <*>           strOption (short 'r' <> long "repository"   <> help "Template repository" <> value defaultRepo)
    <*> optional (strOption (long "configuration-file"        <> help "Use specified configuration file"))
-   <*> optional (switch    (long "initialize-git-repository" <> help "Initialize with git repository"))
+   <*>          (switch    (long "initialize-git-repository" <> help "Initialize with git repository"))
+   <*> optional (strOption (long "after-command"             <> help "The command to be run after generation"))
 
 defaultRepo :: String
 defaultRepo = "git://github.com/fujimura/hi-hspec.git"
diff --git a/src/Hi/Option.hs b/src/Hi/Option.hs
--- a/src/Hi/Option.hs
+++ b/src/Hi/Option.hs
@@ -15,7 +15,7 @@
 import           Control.Applicative
 import           Control.Monad
 import           Data.Char            (toUpper)
-import           Data.Maybe           (fromMaybe)
+import           Data.Maybe           (catMaybes, fromMaybe)
 import           Data.Time.Calendar   (toGregorian)
 import           Data.Time.Clock      (getCurrentTime, utctDay)
 
@@ -25,13 +25,19 @@
     year <- getCurrentYear
     author <- guessAuthor
     email <- guessEmail
-    return Option { initializeGitRepository = fromMaybe False $ CommandLineOption.initializeGitRepository copt
-                  , moduleName     = fromMaybe moduleName $ CommandLineOption.moduleName copt
+    let mGitInit = if CommandLineOption.initializeGitRepository copt
+                     then Just "git init && git add . && git commit -m \"Initial commit\""
+                     else Nothing
+        afterCommands = catMaybes [ mGitInit
+                                  , CommandLineOption.afterCommand copt
+                                  ]
+    return Option { moduleName     = fromMaybe moduleName $ CommandLineOption.moduleName copt
                   , packageName    = CommandLineOption.packageName copt
                   , author         = author
                   , email          = email
                   , templateSource = FromRepo $ CommandLineOption.repository copt
                   , year           = year
+                  , afterCommands  = afterCommands
                   }
   where
     lookupConfig :: String -> IO (Maybe String)
diff --git a/src/Hi/Types.hs b/src/Hi/Types.hs
--- a/src/Hi/Types.hs
+++ b/src/Hi/Types.hs
@@ -17,11 +17,11 @@
 type Files = [File]
 
 data Option = Option
-             { initializeGitRepository :: Bool
-             , moduleName :: String
+             { moduleName :: String
              , packageName :: String
              , author :: String
              , email :: String
              , year :: String
              , templateSource :: TemplateSource
+             , afterCommands :: [String]
              } deriving (Eq,Ord,Show)
