I've built this small package which registers a todo type link: [[todo:~/projects.org::#my-todo][My todo]] And it is displayed like this: My todo Where DONE is the actual todo keyword on the target heading. The keyword on the link and target stay in sync, so setting a different todo keyword either on the link or the target will update both. The link does not show up in the agenda and can be placed anywhere an org link is valid. I'm using this to create a list of todos I want done today from a larger list of all my todos. Is this something that would be appropriate for org-contrib? --- When I tried to register a :store function which is valid for org buffers backed by a file, the desired behavior was that I could choose between storing a file link and a todo link, but instead, it simply stores a todo link without confirmation. Is this a known problem?