should have done

You should have done something = you didn't do it, but it would have been the right thing to do:

  • You missed a great party last night. You should have come. Why didn't you? (= you didn't come, but it would have been good to come)

You shouldn't have done something = you did it, it was the wrong thing to do:

  • I'm feeling sick. I shouldn't have eaten so much. (= I ate too much)