The Spot Slope can be a useful little tool out in the landscape. You can place one at any given point and immediately get the slope for that face. But they do have a few funny little quirks as well as some other limitations.
A Spot Slope can be placed on Floors, Topo, and even Ramps. On first glance, it seems like they do not read the slope of a Ramp, but (as mentioned on Revit OpEd) you can move an already existing Spot Slope onto a Ramp and it will display the slope of the Ramp. But to get this to work, the Spot Slope should be on a Floor first (and not Topo).
Once a Spot Slope is placed on Topo, it cannot be placed on anything but Topo. If you attempt to move it to a Floor or Ramp that is not within Topo, Revit will give you the option to Cancel or Delete.
You can, however, copy a Spot Slope and the copied Spot Slope will host to the nearest Floor or Ramp. In fact, as long as you are not in Wireframe, the Spot Slope seems to prefer Floors. If you are in Wireframe, copied Spot Slopes will only host to Topo.
But the best method for placing Spot Slopes is to just place them new. When placing a new Spot Slope, the selected face or surface will highlight in blue (and you can use tab to toggle through and select other faces or edges).
The Spot Slope does have some room for improvement. In addition to fixing the Ramp bug, it would be nice if Spot Slopes could also have:
The ability to turn off the units (and just be an arrow).
The ability to see what it is hosted on and also have the ability to re-host it.
And finally, my biggest issue with Spot Slope is that it is a slope from a single spot. It would be vastly more useful if there was a tool that combined the Spot Slope with the Spot Elevation so that you could draw a line (or place two points) and then get the slope between those two spots.