In this article, I outline the template I use to plan my weeks. By leveraging Roam’s linked references to send TODOs to a future date, and SmartBlocks’ ability to fetch overdue TODOs, I keep my days on rails.
What are SmartBlocks?
SmartBlocks are templates on steroids. In their most basic form, they’re a collection of blocks that you can paste onto the page with a single command. In their most advanced form they automatically populate blocks with dynamic content pulled from your Roam graph and even other apps (wow, that’s a mouthful).
If you’re completely unfamiliar with SmartBlocks, first read the introductory article on this blog.
The components of a weekly review
The template I show in this article is one I use myself on a weekly basis. Every Monday, I create a new page in the following format:
[[Week NUMBER, YEAR]]. For example:
[[Week 17, 2021]]. On it, I fire off the weekly planning template.
While everybody’s template will be unique, I recommend you use at least the same basic components that I use:
What are some things you need to do every week? For me, that’s processing all of my bills and income, processing my reading and thinking notes, checking up on feedback from RoamStack members, and making sure nothing from the previous week falls through the cracks.
Here’s what my weekly checklist looks like:
For convenience, I’ve made links out of the last three checklist items, taking me directly to the webpage that enables me to do the action. This makes running the checklist frictionless.
Days of the week
To leverage the linked references section of the Daily Notes pages, I add the tags of the days of the week to the template. SmartBlocks save me the trouble of having to manually link to each day of the current week:
Nested as child blocks under each individual day plus date, I add the TODOs I’m planning to do. At the end of each day, I move the unfinished TODOs to other days of the same week.
While I plan my weeks diligently and move any unfinished TODOs on to the next day, week or later, I also pick up new TODOs during the week as I go about my work. In the notes I write on my Daily Notes pages, I often add ad hoc TODO items that are easily lost. The solution is, of course, SmartBlocks.
In the weekly template, I have a command that fetches any unfinished TODOs from Daily Notes pages in the past. This is done using the
<%TODOOVERDUEDNP:20%> command; the number is the maximum amount of overdue TODOs you want to retrieve from the Daily Notes pages in the past.
Building the weekly template using SmartBlock commands
Commands are the snippets of code that make SmartBlocks dynamic. They often have a parameter, which gives you control over the data that is shown. If you’re familiar with programming, you can best compare commands to functions.
The anatomy of a SmartBlock
All SmartBlock workflows start with a parent block that contains the tag
#42SmartBlock and the name of the workflow. Nested below this block are all the action blocks, containing either static text or dynamic content (using commands).
Each command starts with
<% and ends with
%>. Between those symbols, it always contains the command name (written in UPPERCASE) and sometimes also one or several parameters coming after the colon (:).
As you can see, SmartBlocks really are smart as you can enter natural language in some parameters and it’ll then interpret what you meant. We’ll use this in the weekly planning template.
At other times, the parameter is simple and only limits how many blocks a command fetches. For example the
TODOOVERDUE command, which out-of-the-box comes with a parameter filled in that indicates that no more than 20 block references should be shown. We’ll use a version of this command in our template:
The weekly template, step-by-step
Step 1—Create the SmartBlock.
To keep things tidy, perform the following steps from the
Use the Workflow Starter by typing
jjstarter and hitting
Enter. In the prompt, give the workflow the name Weekly planning:
Step 2—Add plain text blocks.
If you like to add metadata, use the first block of the template to add things like
#[[Weekly planning]] and
Enter to create a new block and enter
Checklist as name. Nested underneath, write your own checklist of things that you want to run through every week, for example:
Step 3—Dynamically add dates of the week.
Create a new parent block titled
Days and nest 7 blocks underneath, each starting with a day of the week as an attribute (
Tuesday::, etc.). Personally, I find this handy to spot what days I’m more productive and adjust my weeks accordingly over time.
After each attribute, use the
<%DATE: %> command, giving the day as an argument:
Why the addition of This before the day of the week? Because of the way Roam42 handles dates and the fact that I always run this template on Monday, not including This fetches the wrong date on Sunday. By including This followed by the day, I ensure the dates of this week are fetched.
Step 4—Fetch overdue TODOs.
This command only works if you add TODOs to your Daily Notes page or tag them with a date. That’s another reason why I tag the dates in the weekly planning template, so that all unfinished TODOs are fetched by the following command:
In the template you’re building, simply add a parent block titled
Overdue TODOs and nest the command underneath. If you want to fetch more than 20 overdue TODOs, increase the number:
That’s it for the template! This is what it looks like:
Let’s now use the template.
Using the weekly planning template
The approach I prefer is as follows:
Step 1—Create a new page for the week.
On Monday, create a new page from the Daily Notes page using the following format:
[[Week NUMBER, YEAR]]. For example:
[[Week 17, 2021]].
Step 2—Trigger the template.
On the newly created page, write
jjweekly and hit
Enter to trigger the template:
Step 3—Plan your days.
Starting from the Overdue TODOs section, drag TODOs and nest them underneath the days of the week you’re planning to finish them. Next, add any other TODOs directly onto the page:
And that’s it! Each day you’ll see the TODOs lined up for that day in the linked references of that day’s Daily Note.
Use this basic template to look ahead at your weeks while automating as much as possible, giving you the mental space to plan.