Ruby gem is just a piece of code wrapped into a package, isn’t it? Yes. Technically.
From the other hand, we should think of gem as a code written for others to use. And that’s what makes writing gems more than just a mechanical process.
I’d like to share my personal checklist on how to write code for humans, including such aspects as API design, architecture, and documentation (because any code is useless without docs).