My career ambition at this point is pretty straightforward: I want to join an ambitious startup as a programmer. And I want to get to that point ASAP. My current job doesn't allow much time for programming, so I'm teaching myself Ruby at home.
My question is, what skills do startups most look for, and when will I know I'm ready to start applying?
No you don't. This may be what you think you want, but it's not what you really want.
Why do you want to join an ambitious startup rather than creating your own?
Why does the startup you join need to be ambitious?
Why does it need to be a startup?
For that matter, why do you want to join as a programmer rather than, say, a graphic designer?
If the answer to the above questions is "because this is a route to making lots of money", then what you want is to make lots of money -- and you happen to have identified "joining an ambitious startup as a programmer" as a way to pursue that goal. Similarly, your goal might be "to change the lives of millions of users", "to become a world-famous hacker", or "to work with a bunch of really cool people".
But whatever you want... well, it's almost certainly not "joining an ambitious startup as a programmer".
--------
Now that I've finished ranting about desires vs. routes towards satisfying those desires: The above is actually relevant to your question. The skills looked for vary dramatically from startup to startup -- a startup which is likely to make you a millionaire isn't necessarily going to be looking for the same skills as a startup which is full of really cool people. Once you've identified what you find attractive about startups, then you can start thinking about which startups currently exhibit those traits, and what skills they look for.