I am currently testing with CharacterAdded. I put a LocalScript in StarterCharacterScripts. The code reads:
local Players = game:GetService("Players")
local Player = Players.LocalPlayer
print("run")
local function OnCharacterAdded(character)
print("works")
end
Player.CharacterAdded:Connect(OnCharacterAdded)
local function OnPlayerAdded(player)
OnCharacterAdded()
end
Players.PlayerAdded:Connect(OnPlayerAdded)
It appears that the CharacterAdded event doesn't fire.

1 comment
It doesn't fire because LocalScripts inside StarterCharacterScripts get replicated into the character as soon after the character is added, and you are making that event connection after it's been already added.
You might want to place that script inside StarterPlayerScripts instead, in that case it'll work.
Please, remember to accept the answer if is it helpful for you! I'm glad to help :)