I strongly disagree. It should be
immediately after you write your first
block of code :)
I have a hangup about every atomic commit needing to be a functioning version of the software. Following this logic, an initial commit that is just notes is not viable. Even if it's just some function/class prototypes that only 'raise NotImplementedError', the first commit has to do something you can execute.
I've noticed a trend of boilerplate projects on GitHub for people to use as a foundational branch, and I think that's terrific.