diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,9 @@
+## 0.10.1 - 2020-05-16
+
+- Add version-info command to help debugging issues with `haskell-ci`
+- Bump default HLint version to 3.1
+- Support ShellCheck with GHC-8.8 and GHC-8.10
+
 ## 0.10 - 2020-04-14
 
 - Allow turning off email notifications
diff --git a/fixtures/cabal.project.copy-fields.all b/fixtures/cabal.project.copy-fields.all
--- a/fixtures/cabal.project.copy-fields.all
+++ b/fixtures/cabal.project.copy-fields.all
@@ -13,3 +13,8 @@
   servant-js:servant
 allow-newer:
   servant-js:servant-foreign
+
+source-repository-package
+  type: git
+  location: https://github.com/haskell-servant/servant-auth
+  tag: 4a134c3db79293d28f8b74a02863047e41fbaf56
diff --git a/fixtures/cabal.project.copy-fields.all.travis.yml b/fixtures/cabal.project.copy-fields.all.travis.yml
--- a/fixtures/cabal.project.copy-fields.all.travis.yml
+++ b/fixtures/cabal.project.copy-fields.all.travis.yml
@@ -163,12 +163,17 @@
   - if [ $HCNUMVER -ge 80200 ] ; then echo 'package servant-server' >> cabal.project ; fi
   - "if [ $HCNUMVER -ge 80200 ] ; then echo '  ghc-options: -Werror=missing-methods' >> cabal.project ; fi"
   - |
-    echo "constraints: foundation >= 0.14"         >> cabal.project
-    echo "allow-newer: servant-js:servant"         >> cabal.project
-    echo "allow-newer: servant-js:servant-foreign" >> cabal.project
-    echo ""                                        >> cabal.project
-    echo "package servant"                         >> cabal.project
-    echo "  tests: False"                          >> cabal.project
+    echo "constraints: foundation >= 0.14"                             >> cabal.project
+    echo "allow-newer: servant-js:servant"                             >> cabal.project
+    echo "allow-newer: servant-js:servant-foreign"                     >> cabal.project
+    echo ""                                                            >> cabal.project
+    echo "source-repository-package"                                   >> cabal.project
+    echo "  type:     git"                                             >> cabal.project
+    echo "  location: https://github.com/haskell-servant/servant-auth" >> cabal.project
+    echo "  tag:      4a134c3db79293d28f8b74a02863047e41fbaf56"        >> cabal.project
+    echo ""                                                            >> cabal.project
+    echo "package servant"                                             >> cabal.project
+    echo "  tests: False"                                              >> cabal.project
   - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(servant|servant-client|servant-docs|servant-server)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
   - cat cabal.project || true
   - cat cabal.project.local || true
@@ -211,12 +216,17 @@
   - if [ $HCNUMVER -ge 80200 ] ; then echo 'package servant-server' >> cabal.project ; fi
   - "if [ $HCNUMVER -ge 80200 ] ; then echo '  ghc-options: -Werror=missing-methods' >> cabal.project ; fi"
   - |
-    echo "constraints: foundation >= 0.14"         >> cabal.project
-    echo "allow-newer: servant-js:servant"         >> cabal.project
-    echo "allow-newer: servant-js:servant-foreign" >> cabal.project
-    echo ""                                        >> cabal.project
-    echo "package servant"                         >> cabal.project
-    echo "  tests: False"                          >> cabal.project
+    echo "constraints: foundation >= 0.14"                             >> cabal.project
+    echo "allow-newer: servant-js:servant"                             >> cabal.project
+    echo "allow-newer: servant-js:servant-foreign"                     >> cabal.project
+    echo ""                                                            >> cabal.project
+    echo "source-repository-package"                                   >> cabal.project
+    echo "  type:     git"                                             >> cabal.project
+    echo "  location: https://github.com/haskell-servant/servant-auth" >> cabal.project
+    echo "  tag:      4a134c3db79293d28f8b74a02863047e41fbaf56"        >> cabal.project
+    echo ""                                                            >> cabal.project
+    echo "package servant"                                             >> cabal.project
+    echo "  tests: False"                                              >> cabal.project
   - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(servant|servant-client|servant-docs|servant-server)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done"
   - cat cabal.project || true
   - cat cabal.project.local || true
diff --git a/haskell-ci.cabal b/haskell-ci.cabal
--- a/haskell-ci.cabal
+++ b/haskell-ci.cabal
@@ -1,6 +1,6 @@
 cabal-version:      2.2
 name:               haskell-ci
-version:            0.10
+version:            0.10.1
 synopsis:           Cabal package script generator for Travis-CI
 description:
   Script generator (@haskell-ci@) for [Travis-CI](https://travis-ci.org/) for continuous-integration testing of Haskell Cabal packages.
@@ -114,6 +114,7 @@
     HaskellCI.Tools
     HaskellCI.Travis
     HaskellCI.Travis.Yaml
+    HaskellCI.VersionInfo
     HaskellCI.YamlSyntax
 
   default-extensions:
@@ -137,7 +138,7 @@
   build-depends:
     , base          >=4.10     && <4.15
     , bytestring    ^>=0.10.8.1
-    , Cabal         ^>= 3.2
+    , Cabal         ^>=3.2
     , containers    ^>=0.5.7.1 || ^>=0.6.0.1
     , deepseq       ^>=1.4.2.0
     , directory     ^>=1.3.0.0
@@ -167,8 +168,8 @@
     , unordered-containers   ^>=0.2.10.0
 
   -- ShellCheck. Would need newer transformers for older GHC
-  if (flag(shellcheck) && impl(ghc >=7.10 && <8.7))
-    build-depends: ShellCheck ==0.7.0
+  if (flag(shellcheck) && impl(ghc >=7.10 && <8.11))
+    build-depends: ShellCheck ==0.7.0 || ==0.7.1
 
 executable haskell-ci
   main-is:          Main.hs
diff --git a/src/HaskellCI.hs b/src/HaskellCI.hs
--- a/src/HaskellCI.hs
+++ b/src/HaskellCI.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE CPP                 #-}
 {-# LANGUAGE DataKinds           #-}
 {-# LANGUAGE MultiWayIf          #-}
 {-# LANGUAGE OverloadedStrings   #-}
@@ -36,6 +35,7 @@
 import Distribution.Version
 
 import qualified Data.ByteString       as BS
+import qualified Data.Map as Map
 import qualified Data.List.NonEmpty    as NE
 import qualified Data.Set              as S
 import qualified Data.Traversable      as T
@@ -55,6 +55,7 @@
 import HaskellCI.TestedWith
 import HaskellCI.Travis
 import HaskellCI.YamlSyntax
+import HaskellCI.VersionInfo
 
 -------------------------------------------------------------------------------
 -- Main
@@ -99,6 +100,10 @@
                     (f, opts') <- parseTravis argv
                     doTravis argv f (optionsWithOutputFile newFp <> opts' <> opts)
         CommandTravis f -> doTravis argv0 f opts
+        CommandVersionInfo -> do
+            putStrLn $ "haskell-ci " ++ haskellCIVerStr ++ " with dependencies"
+            ifor_ dependencies $ \p v -> do
+                putStrLn $ "  " ++ p ++ "-" ++ v
   where
     findArgv :: [String] -> Maybe (Maybe Version, [String])
     findArgv ls = do
@@ -114,6 +119,9 @@
     prettyMajVersion :: Version -> String
     prettyMajVersion v = case ghcMajVer v of
         (x, y) -> show x ++ "." ++ show y
+
+    ifor_ :: Map.Map k v -> (k -> v -> IO a) -> IO ()
+    ifor_ xs f = Map.foldlWithKey' (\m k a -> m >> void (f k a)) (return ()) xs
 
 defaultTravisPath :: FilePath
 defaultTravisPath = ".travis.yml"
diff --git a/src/HaskellCI/Cli.hs b/src/HaskellCI/Cli.hs
--- a/src/HaskellCI/Cli.hs
+++ b/src/HaskellCI/Cli.hs
@@ -12,10 +12,7 @@
 
 import HaskellCI.Config
 import HaskellCI.OptparseGrammar
-
-#ifndef CURRENT_PACKAGE_VERSION
-#define CURRENT_PACKAGE_VERSION "???"
-#endif
+import HaskellCI.VersionInfo
 
 -------------------------------------------------------------------------------
 -- Command
@@ -26,6 +23,7 @@
     | CommandRegenerate
     | CommandListGHC
     | CommandDumpConfig
+    | CommandVersionInfo
   deriving Show
 
 -------------------------------------------------------------------------------
@@ -78,9 +76,6 @@
     , O.help "Print version information"
     ]
 
-haskellCIVerStr :: String
-haskellCIVerStr = CURRENT_PACKAGE_VERSION
-
 cliParserInfo :: O.ParserInfo (Command, Options)
 cliParserInfo = O.info ((,) <$> cmdP <*> optionsP O.<**> versionP O.<**> O.helper) $ mconcat
     [ O.fullDesc
@@ -88,10 +83,11 @@
     ]
   where
     cmdP = O.subparser (mconcat
-        [ O.command "regenerate"  $ O.info (pure CommandRegenerate) $ O.progDesc "Regenerate .travis.yml"
-        , O.command "travis"      $ O.info travisP                  $ O.progDesc "Generate travis-ci config"
-        , O.command "list-ghc"    $ O.info (pure CommandListGHC)    $ O.progDesc "List known GHC versions"
-        , O.command "dump-config" $ O.info (pure CommandDumpConfig) $ O.progDesc "Dump cabal.haskell-ci config with default values"
+        [ O.command "regenerate"   $ O.info (pure CommandRegenerate)  $ O.progDesc "Regenerate .travis.yml"
+        , O.command "travis"       $ O.info travisP                   $ O.progDesc "Generate travis-ci config"
+        , O.command "list-ghc"     $ O.info (pure CommandListGHC)     $ O.progDesc "List known GHC versions"
+        , O.command "dump-config"  $ O.info (pure CommandDumpConfig)  $ O.progDesc "Dump cabal.haskell-ci config with default values"
+        , O.command "version-info" $ O.info (pure CommandVersionInfo) $ O.progDesc "Print versions info haskell-ci was compiled with"
         ]) <|> travisP
 
     travisP = CommandTravis
diff --git a/src/HaskellCI/Config/HLint.hs b/src/HaskellCI/Config/HLint.hs
--- a/src/HaskellCI/Config/HLint.hs
+++ b/src/HaskellCI/Config/HLint.hs
@@ -27,7 +27,7 @@
   deriving (Show, Generic)
 
 defaultHLintVersion :: VersionRange
-defaultHLintVersion = withinVersion (mkVersion [2,2])
+defaultHLintVersion = withinVersion (mkVersion [3,1])
 
 -------------------------------------------------------------------------------
 -- HLintJob
diff --git a/src/HaskellCI/Travis.hs b/src/HaskellCI/Travis.hs
--- a/src/HaskellCI/Travis.hs
+++ b/src/HaskellCI/Travis.hs
@@ -54,6 +54,7 @@
 import HaskellCI.ShVersionRange
 import HaskellCI.Tools
 import HaskellCI.Travis.Yaml
+import HaskellCI.VersionInfo
 
 -------------------------------------------------------------------------------
 -- Travis header
@@ -603,7 +604,7 @@
         for_ uris $ \uri ->
             item $ C.PrettyField () "packages" $ PP.text $ uriToString id uri ""
 
-        -- copy files from original cabal.project
+        -- copy fields from original cabal.project
         case cfgCopyFields of
             CopyFieldsNone -> pure ()
             CopyFieldsSome -> copyFieldsSome
diff --git a/src/HaskellCI/VersionInfo.hs b/src/HaskellCI/VersionInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/HaskellCI/VersionInfo.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE CPP #-}
+module HaskellCI.VersionInfo (
+    haskellCIVerStr,
+    dependencies,
+) where
+
+import HaskellCI.Prelude
+
+import Data.Map          (Map)
+
+import qualified Data.Map as Map
+
+haskellCIVerStr :: String
+haskellCIVerStr = VERSION_haskell_ci
+
+dependencies :: Map String String
+dependencies = Map.fromList
+    [ ("aeson",                  VERSION_aeson)
+    , ("base",                   VERSION_base)
+    , ("base-compat",            VERSION_base_compat)
+    , ("bytestring",             VERSION_bytestring)
+    , ("Cabal",                  VERSION_Cabal)
+    , ("cabal-install-parsers",  VERSION_cabal_install_parsers)
+    , ("containers",             VERSION_containers)
+    , ("deepseq",                VERSION_deepseq)
+    , ("directory",              VERSION_directory)
+    , ("exceptions",             VERSION_exceptions)
+    , ("filepath",               VERSION_filepath)
+    , ("generic-lens-lite",      VERSION_generic_lens_lite)
+    , ("HsYAML",                 VERSION_HsYAML)
+    , ("lattices",               VERSION_lattices)
+    , ("mtl",                    VERSION_mtl)
+    , ("network-uri",            VERSION_network_uri)
+    , ("optparse-applicative",   VERSION_optparse_applicative)
+    , ("parsec",                 VERSION_parsec)
+    , ("pretty",                 VERSION_pretty)
+    , ("process",                VERSION_process)
+#ifdef VERSION_ShellCheck
+    , ("ShellCheck",             VERSION_ShellCheck)
+#endif
+    , ("temporary",              VERSION_temporary)
+    , ("text",                   VERSION_text)
+    , ("transformers",           VERSION_transformers)
+    , ("unordered-containers",   VERSION_unordered_containers)
+    ]
