@agent-samuraii The skeleton ship battles are on a thirty minute timer. If no one enters the area, it will disappear. Starting the battle and having the skeleton ships spawn will end this timer.
What I'm not 100% sure about is if the timer starts again between waves when no skeleton ships have spawned. I've seen a single skeleton ship circle for hours without any players in the area, eventually I went to go sink it and realized it was the final captain ship, but if the next wave doesn't spawn during a battle, I don't know if the timer starts again or not. I would assume not, so essentially when the cloud appears, it will either disappear in 30 minutes or in the case someone starts the battle, it will stay until completed.
The skull forts might have a longer time before despawning. It's harder to tell since it's possible that pirates will sail close enough to it to activate it, but not stop to complete it. I feel this might stop the timer completely or even just restart the timer. Either causing the fort to stay until completed, or possibly just postponing its despawn.
The only way to tell if someone is there, is to just go and see.
I think there may be a second timer in place that starts when a ship battle is completed, and needs to run out before the next ship battle can spawn. Typically you will see three skull forts for every ship battle. My friend and I completed three forts so quickly that a fourth spawned before the ship battle. About a week later, he did five forts in a row with a galleon crew. I feel like until enough time has passed since the last ship battle, the next won't spawn.
Another thing to note, when a cloud disappears, and the next cloud is going to be a ship battle, all roaming skelleons in the world will dive back into the depths. The next time you're fighting a ship and it just suddenly dives under, check to see if the fort that was active disappeared. I can almost guarantee that's what happened.