Create a passage called "StoryInit" (if you haven't already) and put this at the top of it:
<<if def $SkipIntro>>
<<set Config.passages.start = "TitleScreen">>
<</if>>
So now it will look to see if $SkipIntro is defined when the game starts, and if it is, then it will start at the "TitleScreen" passage. See Config.passages.start for details.
Then, on the page where you're restarting the game, you would use something like this code:
<<link "Restart">>
<<remember $SkipIntro = true>>
<<run Engine.restart()>>
<</link>>
Using the <<remember>> macro causes SugarCube to remember the value, even if you or the user restart the game.
If you want to make it so that if they manually restart the game it shows the normal intro instead of the title screen, then you should add this to your "TitleScreen" passage:
<<forget $SkipIntro>>
The <<forget>> macro will remove the $SkipIntro variable, so it will be undefined again. Now if the user reloads the game it will start at your default start passage again.
Hope that helps!