Forums

Discuss all things Remember The Milk.

Tired of unrealistic to-do lists? I wrote an open-source MilkScript that turns RTM into a personal Agile Coach ⏱️🌡️

grant.yi says:
Hey fellow productivity nerds,

We’ve all been there: piling 50 hours of tasks into a 40-hour workweek, only to feel completely burnt out and defeated by Thursday. Remember The Milk is fantastic for capturing what needs to be done, but it doesn't inherently tell you if you actually have the time to do it.

I got tired of constantly overflowing my schedule, so I spent some time leveraging MilkScript (RTM's automation engine) to build something I’m calling the RTM Agile Coach.

It’s completely free and open-source. Basically, it transforms RTM from a passive checklist into an active, capacity-aware project manager.

Here is what it actually does behind the scenes:

⏳ Precision Scheduling Engine: You tell it your working hours (e.g., 9 AM - 6 PM, Mon-Fri). It simulates your task list minute-by-minute. If a task hits 6 PM, it automatically carries the remaining hours over to the next working day.

📅 **实时战略排期推演 (Schedule)**
• 预计完工: 2026-06-06 10:06:15 星期六
*(注:排期表展示的预计完工是“最坏情况”(Worst Case):如果你白天完全没时间做这个任务,晚上要搞到几点。)*
🟢 [06-02(二) 10:29 - 10:39] 检查****回复-0.33🍅 (10m)
🟢 [06-02(二) 10:39 - 11:39] 查询****材料?-1.00🍅 (30m)
🟢 [06-02(二) 11:39 - 13:40] 2.2.5-如何****-2.00🍅 (60m)
🟢 [06-02(二) 13:40 - 15:40] 3-2-1-在****更新****-2.00🍅 (60m)
🟢 [06-03(三) 09:00 - 09:05] 3.****验证-0.17🍅 (5m)
🟢 [06-03(三) 09:05 - 09:35] 弄清楚****是什么-1.00🍅 (30m)
🟢 [06-03(三) 09:35 - 09:40] 3.****验证-0.17🍅 (5m)
🟢 [06-03(三) 09:40 - 11:40] 准备****材料-2.00🍅 (60m)
🟢 [06-04(四) 09:00 - 09:05] 3.****验证-0.17🍅 (5m)
🟢 [06-05(五) 09:00 - 09:05] 3.****验证-0.17🍅 (5m)
➖➖➖➖➖➖ 🧨 标准容量耗尽 (转入加班推演) ➖➖➖➖➖➖
🧨 [06-06(六) 10:00 - 10:06] 3.****验证-0.17🍅 (5m) (加班)
↳ 📉 **阻塞瓶颈**: 高顺位任务占据加班通道,后续2任务被迫顺延。
🧨 [06-06(六) 10:06 - 10:06] 4.发放**** (0m) (加班)
🧨 [06-06(六) 10:06 - 10:06] 4.发放**** (0m) (加班)
• 目标死线: 2026-06-06 23:59:59 星期六

🌡️ Visual Workload Heatmaps: It generates a literal heatmap inside an RTM note. At a glance, you can see which days are 🟩 (idle/comfortable), 🟧 (saturated), or 🟥 (dangerously overloaded).

🌡️ **每日实时战略负载热力 (Load Heatmap)**
🟨 06-02(二): 69% [ 5.2/ 7.5h] 🟢空闲2.3h
🟩 06-03(三): 35% [ 3.2/ 9.0h] 🔒含日程📅(0.5h) 🟢空闲5.8h
🟩 06-04(四): 1% [ 0.1/ 9.0h] 🟢空闲8.9h
🟩 06-05(五): 1% [ 0.1/ 9.0h] 🟢空闲8.9h
🧨 06-06(六): N/A [ 0.1/ 0.0h] 🧨加班0.1h

✂️ Smart Triage & Pruning: If you overbook yourself, the script doesn't just warn you—it gives you solutions. It uses a weighted algorithm (Objective Priority + Task Priority + Urgency) to recommend exactly which tasks you should drop, delay, or move to an empty slot.

🚀 ** 行动指南(Action Plan) **
------------------------------------------------------------
⚠️【高压预警】需加班 (预测拥挤度 25%)

🤔👉 **系统研判**: 任务堆积在休息/下班时段,导致局部加班 (全局其实有盈余)。
--------------------------------------------------
💡 **诊断与建议**: 宏观总容量充裕 (仍有约 12.9h 盈余)。当前警报纯粹是因为**死线太紧**或**任务被锁定在休息日**。
👉 **建议行动:无需删除任务。只需推迟死线,或将休息日任务平移至工作日,警报即可解除。**
------------------------------------------------------------
📊 ** 核心指标速览 **:
• 排期拥挤度: 24.9%
• 预测总耗时: 8.6 h(🔒0.5h) | 可用 34.5 h
* (注: 预测耗时 = 任务加权工时 + 日程📅)*

🔋 Fatigue-Aware Overtime Advice: Thinking of pulling an all-nighter? The script calculates the "cognitive cost" (e.g., 1 hour of overtime ≈ 0.8 hours of real output). If you try to schedule work past 9 PM, it triggers a "circuit breaker" and bluntly tells you to cut your scope instead.

🧠 Adaptive Efficiency Tracking: It looks at your historical data (past 7/30/180 days) to figure out your actual completion rate, adjusting its predictions so you stop falling for the Planning Fallacy.

📊 **实时战略容量分析 (Capacity)**
• 实际📍需求: 8.1h (原始 4.6h +77%)
↳ 算式: ∑ (预估 × 效率) / 60
↳ 详情:
• 1.5-📌-****: 1.50h × 2.00🌐 = 3.00h
• 1.5-📌-1.将****准备好-7: 1.00h × 2.01🎯 = 2.01h
• 1.10-🎉-3.更新****: 1.00h × 2.00🌐 = 2.00h
• 1.4-⛳-1.****步骤-4: 1.08h × 1.00🎯 = 1.08h
• 日程📅占用: 🔒0.5h
• 可用🟢容量: 34.5h (截止 2026-06-06)

Who is this for?
If you are an RTM Pro user who uses MilkScript and loves the GTD/Agile methodology, this is for you. It does require setting up some specific tags (like 1.1-🔭 for objectives), but it is highly customizable.

Where to get it:
I’ve open-sourced the entire script and documentation on GitHub here: [ https://github.com/yxxyle/thex ]

I would absolutely love for this community to try it out, tear it apart, and tell me what you think. Let me know if you have any questions or need help setting it up!

Happy organizing! 🎯
Posted at 6:07am on June 2, 2026
mordimer86 says:
What you've built is genuinely impressive.

I keep an eye on what gets posted here, and yours stopped me, it looks like something I would have built myself a few years ago. Not just the fact that it's thousands of lines of MilkScript in an environment that was never meant to carry this kind of weight — but because behind all of it there's clearly someone who has felt the planning problem in their bones and tried to engineer their way out of it. The schedule simulation, the capacity modeling, the weighted triage, the historical correction — none of that comes from reading about productivity. It comes from getting burned.

So this isn't a view perspective from the outside. It's more like running into someone on the same road I spent years walking.

My own version was building steadily more sophisticated planning systems inside my task manager. The pattern was always the same: over-optimistic capacity, bad duration estimates, and a generous helping of ADHD procrastination on top. And because every failure looked like a forecasting error, the fix always seemed obvious — a better forecasting engine. Tighter estimates. Smarter correction factors. More math.

What actually changed things for me wasn't a better engine. It was realizing I had been doing something subtly wrong the whole time: I was planning *time* inside a tool built to manage *tasks*.

Once I named it that way, a lot fell into place. I moved time planning into the calendar, where time actually lives, and let the task manager do what it's good at — holding commitments, not schedules. The setup became GTD-flavored and context-driven: recurring vs. current, PC vs. non-PC, what's actionable right now given where I am. The calendar owns time; the list owns commitments. The moment I stopped trying to schedule my entire life inside the task list, the whole thing got resilient. A new job, shifted responsibilities, a blown-up routine — those stopped being reasons to rebuild the machinery and became just... a new context.

Which is the question your project quietly put in front of me, and I mean it as an architecture question, not a verdict:

Have you built an extraordinarily sophisticated task manager — or have you built a calendar, with a real scheduling engine inside it, and then placed that calendar inside a task manager? Because a lot of what I see — fixed working hours, day boundaries, minute-level simulation — is the kind of thing time-and-calendar tools exist to own. When that logic lives inside the task list instead, every change in your life has to be re-encoded by hand, rather than just absorbed.

A couple of smaller things pointed in the same direction for me.

One was the historical efficiency correction. That's a sound instinct — averaging over a longer window is more robust to day-to-day noise, and I'd lean the same way. But it made me wonder what happens the week after you're sick, or back from a holiday, or right after one of those rare weeks where you finally clear a mountain of backlog. A rolling average can't tell the difference between "the world changed" and "this was just a noisy week," so it keeps quietly pricing in a reality that's no longer true. That's not a tuning problem. It's a question of whether the system can recognize a change in regime at all — and that's a hard thing to express in fixed rules.

The other was the relationship to data structure. If a malformed tag can stop the system and ask the user to repair things, then some of the upkeep has quietly moved onto the person. Keeping the data clean has become *their* job. And that's the part that struck me most, because that kind of work — tolerating mess, inferring intent, keeping order without bothering you about it — is exactly the kind of thing that can now happen quietly in the background instead of surfacing as an error you have to go fix. A parser stops and demands repairs. Something that understands intent just keeps going.

And that's really what I kept circling back to — the word *coach*.

A coach doesn't just count. A coach notices the pattern you didn't encode. A coach says the uncomfortable thing — "this task has been postponed three hundred times; I don't think the problem is capacity." A coach tells avoidance apart from overload, and changes tactics when the current one clearly isn't working. An engine, however good, computes. It doesn't do any of that — not because it's badly built, but because that's not what engines are.

So I found myself wondering whether you've built a remarkable planning *engine* and then hung the word "coach" on it.

To be fair, that might be exactly what you want. Some people genuinely prefer a deterministic system they can trust to behave the same way every time, and there's nothing wrong with that. What works for me isn't automatically right for you.

But if I were carrying this work forward, I'd be tempted in a different direction. The expertise it takes to design something like this is the same expertise it takes to design an *assistant* rather than a *tool*. RTM Pro already exposes MCP access — the hook that lets AI assistants like Claude connect to it directly. The deterministic parts — the math, the scoring, the forecasting — can stay deterministic, where determinism is a virtue. But the judgment, the grooming, the pattern-spotting, the honest conversations — those never sit comfortably inside hardcoded logic, no matter how many lines you give them.

One thing I've learned, partly from doing requirements analysis for a living, is that it usually deletes more than it adds. If a chunk of a system disappears because a better architecture made it unnecessary, that isn't lost work — it's the abstraction getting sharper. The instruction can describe *what* to achieve and leave the *how* adaptive, which is the one thing rigid logic can never do.

So I'll leave it as the question I couldn't put down after reading your post: picture this system five years from now. Is it an even more capable deterministic engine — or has it grown into something that behaves more like a collaborator than a calculator?

Either way, real respect for what you've made. If you ever want to compare notes — how the context-driven setup works in practice, or where I think the deterministic / judgment line falls — I'm genuinely happy to share. I have a strong feeling that with your engineering instincts pointed at the design problem rather than the implementation, you'd build something well past anything I've managed.

(Full disclosure: I'm wired pretty technically myself, so I ran these thoughts through an AI to make them readable — the intent is mine, the phrasing had help. Felt only fair to say, given the topic.)

P.S. — small practical thing, unrelated to any of the above: a few bits in the English setup section still have the original Chinese in them (the `rtm.args` parameter labels). An English-only user copying the steps would hit a wall there. Easy fix, just easy to miss.
Posted 4 hours ago
Log in to post a reply.