diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,12 +1,17 @@
 # Release history for stack-all
 
+## 0.6.2 (2024-05-21)
+- `--default-resolver` to update stack.yaml resolver
+- change `--debug` short option to `-D`
+- test for `package.yaml` if no .cabal file
+
 ## 0.6.1 (2024-05-20)
-- fix --create-config and --make-lts failing if no command
+- fix `--create-config` and `--make-lts` failing if no command
 
 ## 0.6 (2024-05-19)
 - stack-all now works outside of projects too like stack does
-- error when --make-lts combined with a command args
-- also error for --create-config with versions or command args
+- error when `--make-lts` combined with a command args
+- also error for `--create-config` with versions or command args
 - bump default oldest lts from 16 to 18 (ghc-8.10)
 
 ## 0.5.2 (2024-04-18)
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -1,8 +1,9 @@
 # stack-all
 
-A CLI tool for building Haskell projects easily over Stackage major versions.
+A CLI tool for building Haskell projects easily
+over several Stackage major versions.
 
-This is how I do my Haskell build CI for projects locally with stack.
+I use this to do Haskell build CI for projects locally with stack.
 
 ## Usage
 
@@ -14,9 +15,10 @@
 
 Note that `stack` only works in a project if a `stack.yaml` file exists.
 If no `stack.yaml` file is found in a .cabal project,
-`stack-all` will create one.
+`stack-all` will create one,
+if there is a .cabal or "package.yaml" file.
 Of course it may still fail to build, but this allows for
-quickly experiments to build a package that does not include stack support.
+quick experiments to build a package that does not include stack support.
 
 Since 0.6, stack-all also works outside projects, like stack itself does.
 
@@ -24,16 +26,18 @@
 `$ stack-all --version`
 
 ```
-0.6.1
+0.6.2
 ```
 `$ stack-all --help`
 
 ```
 Build over Stackage versions
 
-Usage: stack-all [--version] [(-c|--create-config) | (-s|--make-lts)] 
-                 [-k|--keep-going] [-d|--debug] [--refresh-cache] 
-                 [-n|--newest MAJOR] [(-o|--oldest MAJOR) | (-a|--all-lts)] 
+Usage: stack-all [--version] 
+                 [(-c|--create-config) | (-d|--default-resolver) | 
+                   (-s|--make-lts)] [-k|--keep-going] [-D|--debug] 
+                 [--refresh-cache] [-n|--newest MAJOR] 
+                 [(-o|--oldest MAJOR) | (-a|--all-lts)] 
                  [MAJORVER... [COMMAND...]]
 
   stack-all builds projects easily across different Stackage versions
@@ -42,9 +46,10 @@
   -h,--help                Show this help text
   --version                Show version
   -c,--create-config       Create a project .stack-all file
+  -d,--default-resolver    Update stack.yaml resolver
   -s,--make-lts            Create a stack-ltsXX.yaml file
   -k,--keep-going          Keep going even if an LTS fails
-  -d,--debug               Verbose stack build output on error
+  -D,--debug               Verbose stack build output on error
   --refresh-cache          Force refresh of stackage snapshots.json cache
   -n,--newest MAJOR        Newest LTS release to build from
   -o,--oldest MAJOR        Oldest compatible LTS release
diff --git a/src/Main.hs b/src/Main.hs
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -24,52 +24,68 @@
 
 data VersionLimit = DefaultLimit | Oldest MajorVer | AllVersions
 
-data Command = CreateConfig | MakeStackLTS | DefaultRun
+data CommandOpt = CreateConfig | DefaultResolver | MakeStackLTS
+  deriving Eq
 
+showOpt :: CommandOpt -> String
+showOpt c =
+  "--" ++
+  case c of
+    CreateConfig -> "create-config"
+    DefaultResolver -> "default-resolver"
+    MakeStackLTS -> "make-lts"
+
 main :: IO ()
 main = do
   hSetBuffering stdout NoBuffering
   simpleCmdArgs' (Just version) "Build over Stackage versions"
     "stack-all builds projects easily across different Stackage versions" $
     run <$>
+    optional
     (flagWith' CreateConfig 'c' "create-config" "Create a project .stack-all file" <|>
-     flagWith DefaultRun MakeStackLTS 's' "make-lts" "Create a stack-ltsXX.yaml file") <*>
+     flagWith' DefaultResolver 'd' "default-resolver" ("Update" +-+ stackYaml +-+ "resolver") <|>
+     flagWith' MakeStackLTS 's' "make-lts" "Create a stack-ltsXX.yaml file") <*>
     switchWith 'k' "keep-going" "Keep going even if an LTS fails" <*>
-    switchWith 'd' "debug" "Verbose stack build output on error" <*>
+    switchWith 'D' "debug" "Verbose stack build output on error" <*>
     switchLongWith "refresh-cache" "Force refresh of stackage snapshots.json cache" <*>
     optional (readMajor <$> strOptionWith 'n' "newest" "MAJOR" "Newest LTS release to build from") <*>
     (Oldest . readMajor <$> strOptionWith 'o' "oldest" "MAJOR" "Oldest compatible LTS release" <|>
      flagWith DefaultLimit AllVersions 'a' "all-lts" "Try to build back to LTS 1 even") <*>
     many (strArg "MAJORVER... [COMMAND...]")
 
-run :: Command -> Bool ->Bool -> Bool -> Maybe MajorVer
+stackYaml :: FilePath
+stackYaml = "stack.yaml"
+
+run :: Maybe CommandOpt -> Bool ->Bool -> Bool -> Maybe MajorVer
     -> VersionLimit -> [String] -> IO ()
-run command keepgoing debug refresh mnewest verlimit verscmd = do
+run mcommand keepgoing debug refresh mnewest verlimit verscmd = do
   whenJustM findStackProjectDir setCurrentDirectory
   (versions, cargs) <- getVersionsCmd
-  case command of
-    CreateConfig -> do
-      unless (null cargs) $
-        error' $ "cannot combine --create-config with stack commands:" +-+ unwords cargs
-      unless (null versions) $
-        error' "cannot combine --create-config with major versions"
-      case verlimit of
-        Oldest oldest -> createStackAll (Just oldest) mnewest
-        _ -> createStackAll Nothing mnewest
-    MakeStackLTS -> do
+  case mcommand of
+    Just command -> do
       unless (null cargs) $
-        error' $ "cannot combine --make-lts with stack commands:" +-+ unwords cargs
-      if null versions
-        then error' "--make-lts needs an LTS major version"
-        else makeStackLTS refresh versions
-    DefaultRun -> do
+        error' $ "cannot combine" +-+ showOpt command +-+ "with stack commands:" +-+ unwords cargs
+      case command of
+        CreateConfig -> do
+          unless (null versions) $
+            error' "cannot combine --create-config with major versions"
+          case verlimit of
+            Oldest oldest -> createStackAll (Just oldest) mnewest
+            _ -> createStackAll Nothing mnewest
+        DefaultResolver ->
+          stackDefaultResolver versions
+        MakeStackLTS ->
+          if null versions
+            then error' "--make-lts needs an LTS major version"
+            else makeStackLTS refresh versions
+    Nothing -> do
       configs <- readStackConfigs
       let newestFilter = maybe id (filter . (>=)) mnewest
       mapM_ (runStack configs keepgoing debug refresh $ if null cargs then ["build"] else cargs) (newestFilter versions)
   where
     findStackProjectDir :: IO (Maybe FilePath)
     findStackProjectDir = do
-      haveStackYaml <- doesFileExist "stack.yaml"
+      haveStackYaml <- doesFileExist stackYaml
       mcwdir <- Just <$> getCurrentDirectory
       if haveStackYaml
         then return mcwdir
@@ -77,15 +93,17 @@
         if mcwdir /= Just "/"
           then withCurrentDirectory ".." findStackProjectDir
           else do
-          putStrLn "stack.yaml not found"
-          haveCabalFile <- doesFileExistWithExtension "." ".cabal"
-          if haveCabalFile
+          putStrLn $ stackYaml +-+ "not found"
+          haveCabalPackageFile <-
+            doesFileExistWithExtension "." ".cabal" ||^
+            doesFileExist "package.yaml"
+          if haveCabalPackageFile
             then do
             -- FIXME take suggested extra-deps into stack.yaml
             -- FIXME stack init content too verbose
             unlessM (cmdBool "stack" ["init"]) $ do
               snap <- latestLtsSnapshot refresh
-              writeFile "stack.yaml" $ "resolver: " ++ snap ++ "\n"
+              writeFile stackYaml $ "resolver: " ++ snap ++ "\n"
             return mcwdir
             else do
             putStrLn "no package/project found"
@@ -124,6 +142,22 @@
    readStackConf f =
      stripPrefix "stack-" f >>= stripSuffix ".yaml" >>= readCompactMajor
 
+readNewestOldestLTS :: IO (MajorVer,MajorVer)
+readNewestOldestLTS = do
+  haveConfig <- doesFileExist stackAllFile
+  if haveConfig then
+    readIniConfig stackAllFile $
+    section "versions" $ do
+    mnewest <- fmap readMajor <$> fieldMbOf "newest" string
+    moldest <- fmap readMajor <$> fieldMbOf "oldest" string
+    return (fromMaybe Nightly mnewest, fromMaybe defaultOldestLTS moldest)
+    else return (Nightly, defaultOldestLTS)
+  where
+    readIniConfig :: FilePath -> IniParser a -> IO a
+    readIniConfig inifile iniparser = do
+      ini <- T.readFile inifile
+      return $ either error id $ parseIniFile ini iniparser
+
 stackAllFile :: FilePath
 stackAllFile = ".stack-all"
 
@@ -150,21 +184,15 @@
                 in maybe "" (\s -> showMajor s ++ " too old") molder
           in "# " ++ older ++ "\noldest = " ++ showMajor oldest ++ "\n"
 
-readNewestOldestLTS :: IO (MajorVer,MajorVer)
-readNewestOldestLTS = do
-  haveConfig <- doesFileExist stackAllFile
-  if haveConfig then
-    readIniConfig stackAllFile $
-    section "versions" $ do
-    mnewest <- fmap readMajor <$> fieldMbOf "newest" string
-    moldest <- fmap readMajor <$> fieldMbOf "oldest" string
-    return (fromMaybe Nightly mnewest, fromMaybe defaultOldestLTS moldest)
-    else return (Nightly, defaultOldestLTS)
-  where
-    readIniConfig :: FilePath -> IniParser a -> IO a
-    readIniConfig inifile iniparser = do
-      ini <- T.readFile inifile
-      return $ either error id $ parseIniFile ini iniparser
+stackDefaultResolver :: [MajorVer] -> IO ()
+stackDefaultResolver vers = do
+  unlessM (doesFileExist stackYaml) $
+    error' $ "no" +-+ stackYaml +-+ "present"
+  case vers of
+    [ver] ->
+      whenJustM (latestMajorSnapshot False ver) $ \latest ->
+      cmd_ "sed" ["-i", "-e", "s/\\(resolver:\\) .*/\\1 " ++ latest ++ "/", stackYaml]
+    _ -> error' "only specify one major version for default resolver"
 
 makeStackLTS :: Bool -> [MajorVer] -> IO ()
 makeStackLTS refresh vers = do
@@ -177,7 +205,7 @@
       else do
       let mcurrentconfig = find (ver <=) (delete Nightly configs)
       case mcurrentconfig of
-        Nothing -> copyFile "stack.yaml" newfile
+        Nothing -> copyFile stackYaml newfile
         Just conf -> do
           let origfile = configFile conf
           copyFile origfile newfile
diff --git a/stack-all.cabal b/stack-all.cabal
--- a/stack-all.cabal
+++ b/stack-all.cabal
@@ -1,5 +1,5 @@
 name:                stack-all
-version:             0.6.1
+version:             0.6.2
 synopsis:            CLI tool for building over Stackage major versions
 description:
         Build a Haskell project over one or many Stackage major LTS versions.
