I send lots of patches to lots of open source projects (it's sort of my hobby) with a pretty significant focus on application security. What follows is strictly my opinion, but this may be one of the few topics I actually know what I'm talking about and feel confident answering questions about.
> I want to contribute in code, but I always feel like I am not good enough
Most of the open source projects you know and love are crap. They were hacked together by people who are chasing results, not excellence, many years ago and only manage to truck along because of people at or below your skill level who take the time to polish up one of the rough edges.
I don't care how unskilled you think you are; you are skilled enough. Just watch the issue tracker for a few weeks and see what kind of issues pop up. Or see what has been a longstanding issue for weeks/months. You'll find something you can fix and the maintainers will appreciate it that you took the time to fix it for them.
(Unless it's opencart, then they'll flame you no matter how valuable your contribution is. But they're the exception.)