In a social context, "Yes" is a bit abrupt. Depending on the tone of voice, it could be an unenthusiastic response showing a desire to not talk or it could be an annoyed response showing irritation. "Yes, I have" is completely natural. "Yes, I have eaten" and "Yes, I have eaten breakfast" are unnaturally long (but standard in language classes). Because these long responses uncessarily repeat the question, they would often be understood as an annoyed response (depending on tone) or as a non-native speaker repeating the pattern they had learned in their language class.