I've been using OmniFocus for years and I miss a simple functionality for repeating tasks: snooze (without changing the repeating pattern of the original task, like a one-off). Other applications does have this functionality, allowing the user to postpone and at the same time keeping the repeating pattern, so in the next occurrence the task behaves like it ever did. Unfortunately OmniFocus doesn't support this feature yet, because of the way repeating tasks are implemented, but I'm pretty sure that a workaround through an AppleScript is possible.
I just started studying AppleScript, so I have no idea how to implement it yet, though I know what must happen after the script is activated:
1. The task (or project) is duplicated;
2. The original task is marked complete, so the next occurrence will be available according to the original pattern;
3. The duplicated task has its repeating property removed, the script asks the user for a defer date (or relative date);
4. The duplicated task is then deferred.
Let's say I have a task set to start on July 5th and due on July 10th (set to start again on the next month). If, for any reason, I can't do the task on July 5th (but only this month), I change the start date to July 7th.
Without the script, OmniFocus will alert me again on July 7th, and once I check the task completed, the task will be available again on July 7th on the next month (and not on July 5th, like the original setup).
With the script, the task will be duplicated, the original task will be marked complete, so the next occurrence will be available on July 5th of the next month. The duplicated task will have its repeating property removed (to prevent it from repeating like the original and making a mess), the script will then ask the user about the next start date. The task is then deferred and that's it!