For heat to transfer reversibly, the temperature difference through which it flows must be infinitesimal. For work to be done reversibly by a piston there must be no friction between the piston and the cylinder in which it is moving (if we're considering the work as being done on something external to the cylinder and piston). These are necessary conditions, not sufficient conditions. I don't think that either of them is implied by the term 'quasi-static' which I'd class as another necessary condition – but I stand to be corrected.
I've always thought that a useful criterion for thermodynamic reversibility is that the process will run backwards if only infinitesimal changes are made to conditions (e.g. heat will go in the other direction if an infinitesimal change is made to a system's temperature or work would be done on, rather than by, the system if the system' pressure were lowered infinitesimally).