Finally, FINALLY, after 18 months of the worst kind of procrastination, I am synchronising my Personal Kanban board with OmniFocus. Cue polite golf clap.

The code is shoddy and needs a serious review and improvement but it works. Running this from the command line:

./of-kanban -fc


  • search for all flagged, non-deferred tasks in OmniFocus (that's the 'f' switch)
  • create 1 card per task in my Personal Kanban Backlog column (and ignores any already present)
  • looks for cards in the Dropped or Done column and closes any corresponding task in OmniFocus (the 'c' switch)

I've made a number of false starts with this script. But, now that it works, I'm seeing these benefits:

  • reduced the overhead of dealing with so many contexts (I had more than 50). I have just 10 and each one is represented by a different card type in LeanKit.
  • I can see my work in a way that actually makes sense to me
  • I'm finishing existing work as opposed to starting new (like this blog post for instance.)

Next up, I want to:

  • fix some fundamental problems (the script fails - badly - if it finds a task without a defined context for example).
  • make the code more robust so that it works for anyone else

This is an example of my current board:

  • card types correspond to OmniFocus contexts (e.g. white is @Waiting For, yellow is @Email, etc.).
  • due dates are shown as Lean Kit end dates (see the 2nd card in the Dropped column).