For work projects, I have the team take TODOs out of their code and put them into our own list in the project management system. That way, our technical debt stays in front of the engineers & project managers in an ever-growing list. Every time there's unused hours at the end of the month (and it happens), we can prioritize the items on that list and spend time on some of those items.
My personal projects are usually managed in Github so I create issues to track them.