How to trigger a plan?
Calendar Mode
Does not depend on other information — you can directly determine if it matches based on the current date.
First, recurring type:
Second, one-shot type — the trigger is removed after execution:
A shortcut for "every day":
Multiple dates can be specified using a list:
Note that when using on, such as on: [Sat, Sun], matching any one date will remove the entire trigger. If you want to remove only the matching one, you can use on as multiple independent triggers:
Trigger Examples
Recurring:
- June 12th every year:
every: 6-12 - Every Wednesday:
every: Wednesdayorevery: Wed - The 15th of every month:
every: 15 - Every day in August:
every: Augustorevery: Aug
One-shot:
- On July 15th:
on: 7-15 - On the next 5th:
on: 5 - On August 26, 2025:
on: 2025-8-26— note thatevery: 2025-8-26also only fires once, but differs in that it won't be auto-deleted
Note: if you specify the 31st but the month has no such day, it will not trigger at month-end. The mode strictly adheres to the specified date.
Lunar Calendar Dates
Compared to the Gregorian calendar, you need to prefix the date with 农历 (lunar calendar). If specifying a leap month, append 闰 at the end.
Spaces are also allowed:
Additionally, you can use the 24 solar terms after every:
Gregorian Repeating Mode
The task date is determined based on relative descriptions.
Specify dates by week and day, within a monthly or yearly cycle.
- Set a start date:
from: 2025-11-19. Must include the year. If the month is omitted, it defaults to January; if the day is also omitted, it defaults to the 1st. In some cases, this parameter can be omitted, such as for monthly or yearly cycles. - Set a cycle: every N days, weeks, months, a specific month, or years —
every: 3week,every: 2month,every: June,every: year. - Set a specific day, described by day number or weekday: 3rd day
on: 3d, last dayon: -1dayorlast: day, first Mondayon: Monday, last Fridayon: -Friorlast: Fri.
A Specific Day Each Month/Year
First Monday of every month:
Second-to-last day of every month:
Last Saturday of every month:
Second-to-last Saturday of every month:
Last Saturday of every June:
Last Saturday of every year:
Every N Days/Weeks/Months/Years
Without on or last, the from date is the first day, and the trigger fires every time the every interval passes. Examples below.
Every 16 days, fires on 2025-08-11, 2025-08-27, 2025-09-12, ...
Every 3 weeks, fires on 2025-11-21, 2025-12-12, ...
Every 2 months, fires on 2025-11-21, 2026-01-21, ...
Every 2 years, fires on 2025-11-21, 2027-11-21, ...
For once a year, you can simply use
every: 11-21.
Note: if from is the 31st of a month, and the next month has no 31st, it will fire on the last day of that month (e.g., the 30th).
A Specific Day within Every N Days/Weeks/Months/Years
Starting from November 21, 2025, on the Wednesday of the first week in every 3-week cycle. This means it fires on November 19 (already past), December 10, ...
Starting from August 2025, on the 7th-to-last day of the first month in every 2-month cycle. This means it fires on August 25, October 25, ...
Starting from 2025, runs on the 3rd day of the first year in every 2-year cycle:
The date specified by from doesn't need to be precise to the day. If the cycle is in years, year-level precision is fine; if in days, day-level precision is needed. For weekly cycles, any day within the starting week works and represents that entire week.
There is one constraint: it only looks for matches within the first unit of each cycle — the first week of every N weeks, the first month of every N months, etc. If you want it to match a later unit in the cycle, adjust the from date accordingly.
Dependency Mode
Keywords: if, after, and before. if is followed by a tag, and multiple conditions can be combined with and and or. after and before are followed by a duration in days or weeks: 2d, Sat. Both after and before can be used together.
You may want Plan B to trigger along with Plan A, or Plan B to trigger a certain number of days before or after Plan A. This relationship can be described as: Plan B's trigger depends on Plan A's trigger.
First, add a tag to Plan A:
To trigger simultaneously, simply use if with the tag:
2 days after Plan A triggers (January 13):
6 days before Plan A triggers (January 5):
The first Saturday before Plan A triggers (not counting the same day, January 4):
The second Saturday before Plan A triggers (December 28):
If a plan's timing is uncertain — for example, future support for triggering on rainy days — plans that depend on it cannot guarantee they will fire.
Compound Mode
If a plan has multiple trigger conditions, put all triggers in a list.
Fire the plan every Saturday and the last Sunday of every month:
Note that if a plan uses trigger, you cannot also place triggers at the top level. The following is illegal:
Relationships Between Triggers
The above fires when any trigger is satisfied — an "OR" relationship.
If all trigger conditions must be satisfied — an "AND" relationship — specify it as follows.
For example, "the last day of the month AND that day is a Saturday":
Except
Keyword: except, followed by tags and calendar-mode content, with list support.
When except is satisfied, the plan will not fire, even if other triggers are also satisfied.
Delayed Execution
Keyword: delay_if, followed by tags and calendar-mode content, with list support.
When a plan has been triggered but delay_if is also satisfied, the trigger is suppressed. The plan will execute immediately the next time delay_if is no longer satisfied, and a delay notice will be shown.
For example: if there's work on Saturday, postpone to the next day: