I recently came into a situation where I would publish an item and the log at the end of the publish wizard would inform me that the item was skipped for one of my environments (pub), but the web database was updated fine.
So every time I made a change to this item it would not show on pub. I tried transferring the item from master -> pub, which worked, but when a user later published the item, it was removed from pub and was no longer available.
The ‘simple’ fix for this problem is to use the Republish Everything setting, instead of ‘Smart Publish’, but that fix did not work in my situation.
By doing some digging into the item’s field sections, I found one called Publishing. In it was a field called Publishing targets. I noticed that Staging (‘web’) was selected but Production (‘pub’) was not. So I checked the box for Production, saved and published the item, and… it worked!
I’m not sure how this setting got changed. One interesting note is that if no target is checked, then Sitecore will publish to ALL targets. Check this field section out if you ever run into this problem. You can also set this on the Publish tab -> Change by clicking on the Targets tab and checking the box of a target.