Only the first question can be asked easily with existing emacs packages (to my knowledge). I use pallet that uses cask to keep track of packages. Normally I just run M-x pallet-update , but to get a preview of pending updates I cd ~/.emacs.d and run cask outdated .

Pallet code might provide a good starting point to start writing code to answer the other two questions.

An other, more desperate, approach would be to try to parse the text that updating adds to emacs Messages buffer, but is not a good way to do anything.