Here's my procedure - not fully automatic, but shorter:
- M-x
sly
- M-x
sly-asdf-load-system
- Select the system name (with name completion)
I don't bother switching to a package before I actually need it. Which is typically when I am in a Lisp file, and then M-x sly-mrepl-sync (C-c ~) does it efficiently. Some packages I always need are loaded from my ~/.sbclrc anyway.
If you use Quicklisp, the above procedure works only after you have done ql:quickload once. But I think I have seen a Sly extension for Quicklisp as well. I hardly use Quicklisp, so I have no experience to share.
As for further automation, I could easily combine the first two steps into a new Emacs command. I haven't felt the need so far.
Another possibility is defining additional Lisps for Sly (customize sly-lisp-implementations). You can specify a complex command line for starting your Lisp, so you can preload systems etc. For example, my configuration entry for starting ECL is
(ecl ("guix" "shell" "-L" "/home/hinsen/src/guix-kh/" "ecl" "ecl-slynk" "--" "ecl") :coding-system utf-8-unix)