Here’s the quick answer for right now, and every future workflow home file will have this same info as a collapsed callout at the bottom.

Where rotation lists live: Files named {workflow}-rotation-{list-name}.md in your vault. For tr1-article-select that’s tr1-article-select-rotation-mega-categories.md and tr1-article-select-rotation-angles.md. Adding items: Each item is an heading with properties below it: markdown## My New Category

description: What it covers avoids: What to steer away from notes: Extra tips How the modulo works: Same as old doySentence — (dayOfYear + delta) % itemCount. Day 48 with 20 items picks item 8. The delta prompt at instantiation shifts everything. More items = longer rotation cycle, no code change needed. Inline into YAML (between CUSTOM YAML markers): yamlmega: ’<% yamlStr((context.rotations[“mega-categories”] || {}).title) %>’ angle: ’<% yamlStr((context.rotations[“angles”] || {}).title) %>’


**Inline into body** (between SECTION markers):

<% context.rotationContext || "" %>


That dumps the full formatted block. Or cherry-pick:

<% (context.rotations[“mega-categories”] || {}).title || “N/A” %> <% (context.rotations[“angles”] || {}).description || "" %> Phrases: Add bullets under # Step 01 or # Step 02a headings in {workflow}-phrases.md. Access via <% context.phrase %>. Cross-references: In angle descriptions, write [mega-categories] and it auto-resolves to whatever mega was selected that day. The || {} guards prevent parse errors when rotation files don’t exist yet — that was the crash you hit earlier.

So I'm starting to play around with it. no loops or crashes. yay. I do not understand this particular phrase.

Phrases: Add bullets under # Step 01 or # Step 02a headings in {workflow}-phrases.md. Access via <% context.phrase %>.

I added some random hello phrases in tr1-select-articles-phrase as you can see

How do I get to them? What does the word context mean in your help? Does this default to selecting randomly, which I prefer for the non-modulo stuff, or is it rotated through? What if I'd like it to rotate through? Is there a way to do that?

Let me check how phrase-lookup actually selects so I don’t mislead you.OK here’s how it all works:

What context means: It’s a JavaScript object that gets built while the template runs. Think of it as a bag of stuff computed at instantiation time. context.phrase is one item in that bag, context.rotations is another, context.stepTitle is another. By the time the template renders, everything in context is resolved.

How you get phrases: You already have it wired. Look at your image 5 — line 156 shows > *<% context.phrase %>*. That line pulls from the phrase file automatically. Your Step 01 instances should already be picking from those bullets you added. The “Hello World” you see in image 5 is the fallback when no phrase file is found — which means the naming was probably still mismatched when you ran it. Now that you’ve renamed to tr1-select-articles-phrases.md, regenerate and it should pick one of your phrases.

Currently random, not rotated. pickRandom uses Math.random() each instantiation. Different phrase every time you create a step instance, but no guarantee of cycling through all of them before repeating.

Want rotation instead? That’s a reasonable feature. We could add a pickByDayOfYear(phrases, doy, delta) that uses the same modulo logic as rotations. Want me to build that? The options would be:

  • Random (current): good for fun/variety, phrases feel spontaneous
  • Rotating: deterministic, cycles through all phrases before repeating, same phrase for same day+delta

I could also make it configurable per-workflow — random by default, add phrase-mode: rotate to the workflow config to switch. Want me to go ahead with that?