I work in software development and at my current company, becoming a senior developer (and beyond) is a really tough task. The process takes a lot of time and involves multiple conversations with the team manager (and his manager) in which they will present their vision of how they see you, then you present your own self-assessment and then you talk about the differences. Feedback from other employees is taken into account as well.
I have a colleague on my team who is a solid developer (currently in a mid-level position) who applied internally for a lead developer role which we are currently looking for candidates for. While I appreciate the colleague in question taking responsibility on some fronts, organizing meetings and introducing new tools/technologies, I would consider him an "upper-mid-level" developer, based on his code, his approach and some other factors. Another developer on my team I spoke with regarding this has very similar views.
The colleague in question wants to be transparent, so he informed everyone that he has applied internally for the lead role. The colleague often complained about "not coming forward despite working for Company for years" and I know it would be very demotivating for him if I say that I don't see him fit for the role. However if/when the manager asks me about my opinion, I have to be honest - and I feel bad about it because I know the colleague hopes to get this role. I also don't want to stay in the dark and try be anonymous, and the colleague definitely deserves transparency.
How can I tell him that based on his current skills I don't see him as an appropriate candidate for the position in question without ruining our team spirit?