Daily Planner & Prioritizer
Turn a messy list of tasks, meetings, errands, and goals into a smart, time-blocked daily
plan — delivered as a clean chat summary + a formatted Excel (.xlsx) schedule.
What This Planner Covers
- 💼 Work tasks & meetings — deadlines, standups, reviews, client calls
- 🏠 Personal errands & habits — chores, appointments, shopping, family
- 🏃 Health & exercise — workouts, walks, meals, water reminders
- 🧪 QA-specific tasks — test runs, bug triage, test case writing, regression cycles, PR reviews
Workflow
Step 1 — Parse the Input
Accept input in any format — bullet list, paragraph, voice-style dump, or structured.
Extract from the input:
- Task name — what needs to be done
- Type — Work / Personal / Health / QA
- Duration estimate — if stated; otherwise apply defaults (see below)
- Fixed time — meetings, appointments with specific times
- Deadline or urgency — "due today", "urgent", "by EOD", "can wait"
- Energy level needed — infer from task type (deep work vs. admin vs. quick errand)
If the user doesn't provide enough detail, make smart assumptions — never ask for more
info before producing a plan. State assumptions clearly in the output.
Step 2 — Prioritize Tasks
Use this priority matrix to rank tasks before scheduling:
| Priority |
Criteria |
| 🔴 P1 — Urgent & Important |
Deadlines today, blockers, critical bugs, meetings |
| 🟠 P2 — Important, Not Urgent |
Deep work, test execution, errands with soft deadlines |
| 🟡 P3 — Useful but Flexible |
Reviews, reading, habit tasks, low-urgency emails |
| 🟢 P4 — Nice to Have |
Optional tasks, backlog, long-term prep |
QA-specific priority rules:
- Production bugs → always P1
- Regression test runs with release deadline today → P1
- Test case writing / review → P2
- Exploratory testing → P2 or P3 depending on sprint stage
- Bug triage (no severity yet) → P2
Step 3 — Build the Time-Blocked Schedule
Default working window: 9:00 AM – 6:00 PM (adjust if user specifies otherwise)
Default time-blocking principles:
- Start with fixed-time meetings/appointments first
- Place deep focus work (P1 + P2) in the morning (9–12)
- Schedule health/exercise in early morning or lunch break
- Admin, email, reviews in early afternoon (2–4 PM)
- Personal errands and flexible tasks in late afternoon or after work
- End the day with a 15-min "wrap-up + plan tomorrow" block
Default duration estimates (use when not provided):
| Task Type |
Default Duration |
| Meeting / standup |
30–60 min (30 if "standup", 60 if "meeting") |
| Bug fix / investigation |
60 min |
| Test case writing |
45 min per feature |
| Test execution / regression run |
90 min |
| Bug triage |
30 min |
| PR / code review |
30 min |
| Email / Slack catch-up |
20 min |
| Deep focus / dev work |
90 min |
| Personal errand (outside) |
60 min |
| Quick personal task |
20 min |
| Exercise / workout |
45 min |
| Meal / break |
30–60 min |
| Daily wrap-up |
15 min |
Protect these blocks always (unless user says otherwise):
- Lunch break: 1:00–2:00 PM (60 min)
- At least one 10-min break per 90-min work block
Step 4 — Output: Chat Summary
Print the plan in chat in this clean format:
📅 YOUR DAY — [Day, Date]
━━━━━━━━━━━━━━━━━━━━━━━━
🌅 MORNING
09:00 – 09:30 🧪 QA Standup (P1)
09:30 – 11:00 🧪 Regression test run – Login module (P1)
11:00 – 11:45 💼 Write test cases – Payment feature (P2)
11:45 – 12:00 ☕ Break
🌞 MIDDAY
12:00 – 13:00 🏃 Lunch + walk
13:00 – 13:30 💼 Email & Slack catch-up (P3)
🌆 AFTERNOON
13:30 – 14:30 💼 Deep work: [task] (P2)
14:30 – 15:00 🧪 Bug triage (P2)
15:00 – 16:00 🏠 [Personal errand] (P3)
16:00 – 16:30 💼 PR review (P3)
🌇 END OF DAY
16:30 – 17:00 🏃 Evening walk / exercise
17:00 – 17:15 📝 Wrap-up + plan tomorrow
━━━━━━━━━━━━━━━━━━━━━━━━
✅ Tasks scheduled: X | ⏳ Total focus time: Xh Xmin
⚠️ Deferred to tomorrow: [any tasks that didn't fit]
💡 Assumptions made: [list any guesses about timing or priority]
Emoji key: 💼 Work | 🧪 QA | 🏠 Personal | 🏃 Health
Step 5 — Output: Excel File
Create a formatted .xlsx file with 2 sheets.
Sheet 1: Daily Schedule
Columns: Time | Task | Type | Priority | Duration | Status | Notes
Formatting:
- Header: bold white on dark blue (
#1F4E79), frozen row
- Type color coding per row:
- Work →
#DEEAF1 (blue)
- QA →
#E2EFDA (green)
- Personal →
#FFF2CC (yellow)
- Health →
#FCE4D6 (orange/pink)
- Break/Meal →
#F2F2F2 (grey)
- Priority column: 🔴 P1 =
#F4CCCC, 🟠 P2 = #FCE5CD, 🟡 P3 = #FFF2CC, 🟢 P4 = #D9EAD3
- Status column: light grey, blank — user fills in (Done / In Progress / Skipped)
- Font: Arial 10pt, row height 25px, wrap text off
- Column widths: Time=14, Task=40, Type=12, Priority=10, Duration=12, Status=14, Notes=35
Sheet 2: Task Backlog
Any tasks that didn't fit today — columns: Task | Type | Priority | Suggested Day | Notes
- Same color coding as Sheet 1
- Header: same dark blue style
File naming: daily-plan-YYYY-MM-DD.xlsx
Step 6 — Save & Present
- Save to
/mnt/user-data/outputs/daily-plan-YYYY-MM-DD.xlsx
- Use
present_files to deliver
- The chat summary should appear FIRST, then mention the Excel file is ready to download
Python Code Template
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
from openpyxl.utils import get_column_letter
from datetime import date
wb = Workbook()
HEADER_FILL = PatternFill("solid", fgColor="1F4E79")
HEADER_FONT = Font(bold=True, color="FFFFFF", name="Arial", size=10)
DATA_FONT = Font(name="Arial", size=10)
THIN = Side(style="thin")
BORDER = Border(left=THIN, right=THIN, top=THIN, bottom=THIN)
TYPE_FILLS = {
"Work": "DEEAF1",
"QA": "E2EFDA",
"Personal": "FFF2CC",
"Health": "FCE4D6",
"Break": "F2F2F2",
}
PRI_FILLS = {
"P1": "F4CCCC",
"P2": "FCE5CD",
"P3": "FFF2CC",
"P4": "D9EAD3",
"": "FFFFFF",
}
def style_header(ws, headers, col_widths):
for col, (h, w) in enumerate(zip(headers, col_widths), 1):
c = ws.cell(row=1, column=col, value=h)
c.font, c.fill, c.border = HEADER_FONT, HEADER_FILL, BORDER
c.alignment = Alignment(horizontal="center", vertical="center")
ws.column_dimensions[get_column_letter(col)].width = w
ws.freeze_panes = "A2"
ws.row_dimensions[1].height = 28
# Sheet 1: Daily Schedule
ws1 = wb.active
ws1.title = "Daily Schedule"
ws1.sheet_properties.tabColor = "1F4E79"
HEADERS1 = ["Time", "Task", "Type", "Priority", "Duration", "Status", "Notes"]
WIDTHS1 = [14, 40, 12, 10, 12, 14, 35]
style_header(ws1, HEADERS1, WIDTHS1)
# schedule = list of (time_str, task, type, priority, duration, notes)
# e.g. ("09:00–09:30", "QA Standup", "QA", "P1", "30 min", "Daily sync")
schedule = [] # REPLACE WITH ACTUAL GENERATED SCHEDULE
for r, (time, task, typ, pri, dur, notes) in enumerate(schedule, 2):
row_data = [time, task, typ, pri, dur, "", notes]
ws1.row_dimensions[r].height = 25
for col, val in enumerate(row_data, 1):
c = ws1.cell(row=r, column=col, value=val)
c.font, c.border = DATA_FONT, BORDER
c.alignment = Alignment(vertical="center")
# Row background from Type
fill_color = TYPE_FILLS.get(typ, "FFFFFF")
c.fill = PatternFill("solid", fgColor=fill_color)
# Override Priority and Status cells
if col == 4:
c.fill = PatternFill("solid", fgColor=PRI_FILLS.get(pri, "FFFFFF"))
c.alignment = Alignment(horizontal="center", vertical="center")
elif col == 6:
c.fill = PatternFill("solid", fgColor="EEEEEE")
# Sheet 2: Task Backlog
ws2 = wb.create_sheet("Task Backlog")
ws2.sheet_properties.tabColor = "ED7D31"
HEADERS2 = ["Task", "Type", "Priority", "Suggested Day", "Notes"]
WIDTHS2 = [40, 12, 10, 18, 35]
style_header(ws2, HEADERS2, WIDTHS2)
# backlog = list of (task, type, priority, suggested_day, notes)
backlog = [] # REPLACE WITH ACTUAL DEFERRED TASKS
for r, (task, typ, pri, day, notes) in enumerate(backlog, 2):
row_data = [task, typ, pri, day, notes]
ws2.row_dimensions[r].height = 25
for col, val in enumerate(row_data, 1):
c = ws2.cell(row=r, column=col, value=val)
c.font, c.border = DATA_FONT, BORDER
c.alignment = Alignment(vertical="center")
c.fill = PatternFill("solid", fgColor=TYPE_FILLS.get(typ, "FFFFFF"))
if col == 3:
c.fill = PatternFill("solid", fgColor=PRI_FILLS.get(pri, "FFFFFF"))
c.alignment = Alignment(horizontal="center", vertical="center")
today = date.today().strftime("%Y-%m-%d")
wb.save(f"daily-plan-{today}.xlsx")
Tips for Best Results
- Dump everything — tasks, meetings, errands, even "I need to exercise". More input = better plan.
- Mention fixed times for any meetings or appointments (e.g. "standup at 9:30").
- Flag urgent items — say "urgent", "due today", or "must finish by 3 PM".
- Specify energy if you know it — "I'm tired today" shifts deep work to best available window.
- Multiple days? Say "plan my week" — each day gets its own schedule section and Excel sheet.
1---2name: daily-planner-prioritizer3description: Creates a smart, time-blocked daily plan from a user's task dump, meetings, errands, habits, and goals — then outputs BOTH a clean text summary in chat AND a formatted Excel (.xlsx) schedule file. Covers work tasks, meetings, personal errands, health/exercise reminders, and QA-specific tasks (test runs, bug triage, reviews). Use this skill whenever the user mentions: "plan my day", "prioritize my tasks", "make a schedule", "I have too much to do", "help me organize today", "daily planner", "time block my day", "what should I do first", "morning routine", "task list for today", or dumps a list of things to do. Always trigger even for partial inputs — a rough list of tasks is enough to generate a useful plan. The more context given, the better, but never require it.4---56# Daily Planner & Prioritizer78Turn a messy list of tasks, meetings, errands, and goals into a smart, time-blocked daily9plan — delivered as a **clean chat summary + a formatted Excel (.xlsx) schedule**.1011---1213## What This Planner Covers1415- 💼 **Work tasks & meetings** — deadlines, standups, reviews, client calls16- 🏠 **Personal errands & habits** — chores, appointments, shopping, family17- 🏃 **Health & exercise** — workouts, walks, meals, water reminders18- 🧪 **QA-specific tasks** — test runs, bug triage, test case writing, regression cycles, PR reviews1920---2122## Workflow2324### Step 1 — Parse the Input2526Accept input in any format — bullet list, paragraph, voice-style dump, or structured.27Extract from the input:28- **Task name** — what needs to be done29- **Type** — Work / Personal / Health / QA30- **Duration estimate** — if stated; otherwise apply defaults (see below)31- **Fixed time** — meetings, appointments with specific times32- **Deadline or urgency** — "due today", "urgent", "by EOD", "can wait"33- **Energy level needed** — infer from task type (deep work vs. admin vs. quick errand)3435If the user doesn't provide enough detail, make smart assumptions — never ask for more36info before producing a plan. State assumptions clearly in the output.3738### Step 2 — Prioritize Tasks3940Use this priority matrix to rank tasks before scheduling:4142| Priority | Criteria |43|---|---|44| 🔴 P1 — Urgent & Important | Deadlines today, blockers, critical bugs, meetings |45| 🟠 P2 — Important, Not Urgent | Deep work, test execution, errands with soft deadlines |46| 🟡 P3 — Useful but Flexible | Reviews, reading, habit tasks, low-urgency emails |47| 🟢 P4 — Nice to Have | Optional tasks, backlog, long-term prep |4849**QA-specific priority rules:**50- Production bugs → always P151- Regression test runs with release deadline today → P152- Test case writing / review → P253- Exploratory testing → P2 or P3 depending on sprint stage54- Bug triage (no severity yet) → P25556### Step 3 — Build the Time-Blocked Schedule5758**Default working window:** 9:00 AM – 6:00 PM (adjust if user specifies otherwise)5960**Default time-blocking principles:**61- Start with fixed-time meetings/appointments first62- Place deep focus work (P1 + P2) in the morning (9–12)63- Schedule health/exercise in early morning or lunch break64- Admin, email, reviews in early afternoon (2–4 PM)65- Personal errands and flexible tasks in late afternoon or after work66- End the day with a 15-min "wrap-up + plan tomorrow" block6768**Default duration estimates (use when not provided):**69| Task Type | Default Duration |70|---|---|71| Meeting / standup | 30–60 min (30 if "standup", 60 if "meeting") |72| Bug fix / investigation | 60 min |73| Test case writing | 45 min per feature |74| Test execution / regression run | 90 min |75| Bug triage | 30 min |76| PR / code review | 30 min |77| Email / Slack catch-up | 20 min |78| Deep focus / dev work | 90 min |79| Personal errand (outside) | 60 min |80| Quick personal task | 20 min |81| Exercise / workout | 45 min |82| Meal / break | 30–60 min |83| Daily wrap-up | 15 min |8485**Protect these blocks always (unless user says otherwise):**86- Lunch break: 1:00–2:00 PM (60 min)87- At least one 10-min break per 90-min work block8889### Step 4 — Output: Chat Summary9091Print the plan in chat in this clean format:9293```94📅 YOUR DAY — [Day, Date]95━━━━━━━━━━━━━━━━━━━━━━━━9697🌅 MORNING98 09:00 – 09:30 🧪 QA Standup (P1)99 09:30 – 11:00 🧪 Regression test run – Login module (P1)100 11:00 – 11:45 💼 Write test cases – Payment feature (P2)101 11:45 – 12:00 ☕ Break102103🌞 MIDDAY104 12:00 – 13:00 🏃 Lunch + walk105 13:00 – 13:30 💼 Email & Slack catch-up (P3)106107🌆 AFTERNOON108 13:30 – 14:30 💼 Deep work: [task] (P2)109 14:30 – 15:00 🧪 Bug triage (P2)110 15:00 – 16:00 🏠 [Personal errand] (P3)111 16:00 – 16:30 💼 PR review (P3)112113🌇 END OF DAY114 16:30 – 17:00 🏃 Evening walk / exercise115 17:00 – 17:15 📝 Wrap-up + plan tomorrow116117━━━━━━━━━━━━━━━━━━━━━━━━118✅ Tasks scheduled: X | ⏳ Total focus time: Xh Xmin119⚠️ Deferred to tomorrow: [any tasks that didn't fit]120💡 Assumptions made: [list any guesses about timing or priority]121```122123Emoji key: 💼 Work | 🧪 QA | 🏠 Personal | 🏃 Health124125### Step 5 — Output: Excel File126127Create a formatted `.xlsx` file with **2 sheets**.128129#### Sheet 1: Daily Schedule130131Columns: `Time` | `Task` | `Type` | `Priority` | `Duration` | `Status` | `Notes`132133Formatting:134- Header: bold white on dark blue (`#1F4E79`), frozen row135- Type color coding per row:136 - Work → `#DEEAF1` (blue)137 - QA → `#E2EFDA` (green)138 - Personal → `#FFF2CC` (yellow)139 - Health → `#FCE4D6` (orange/pink)140 - Break/Meal → `#F2F2F2` (grey)141- Priority column: 🔴 P1 = `#F4CCCC`, 🟠 P2 = `#FCE5CD`, 🟡 P3 = `#FFF2CC`, 🟢 P4 = `#D9EAD3`142- Status column: light grey, blank — user fills in (Done / In Progress / Skipped)143- Font: Arial 10pt, row height 25px, wrap text off144- Column widths: Time=14, Task=40, Type=12, Priority=10, Duration=12, Status=14, Notes=35145146#### Sheet 2: Task Backlog147148Any tasks that didn't fit today — columns: `Task` | `Type` | `Priority` | `Suggested Day` | `Notes`149- Same color coding as Sheet 1150- Header: same dark blue style151152#### File naming: `daily-plan-YYYY-MM-DD.xlsx`153154### Step 6 — Save & Present155- Save to `/mnt/user-data/outputs/daily-plan-YYYY-MM-DD.xlsx`156- Use `present_files` to deliver157- The chat summary should appear FIRST, then mention the Excel file is ready to download158159---160161## Python Code Template162163```python164from openpyxl import Workbook165from openpyxl.styles import Font, PatternFill, Alignment, Border, Side166from openpyxl.utils import get_column_letter167from datetime import date168169wb = Workbook()170171HEADER_FILL = PatternFill("solid", fgColor="1F4E79")172HEADER_FONT = Font(bold=True, color="FFFFFF", name="Arial", size=10)173DATA_FONT = Font(name="Arial", size=10)174THIN = Side(style="thin")175BORDER = Border(left=THIN, right=THIN, top=THIN, bottom=THIN)176177TYPE_FILLS = {178 "Work": "DEEAF1",179 "QA": "E2EFDA",180 "Personal": "FFF2CC",181 "Health": "FCE4D6",182 "Break": "F2F2F2",183}184PRI_FILLS = {185 "P1": "F4CCCC",186 "P2": "FCE5CD",187 "P3": "FFF2CC",188 "P4": "D9EAD3",189 "": "FFFFFF",190}191192def style_header(ws, headers, col_widths):193 for col, (h, w) in enumerate(zip(headers, col_widths), 1):194 c = ws.cell(row=1, column=col, value=h)195 c.font, c.fill, c.border = HEADER_FONT, HEADER_FILL, BORDER196 c.alignment = Alignment(horizontal="center", vertical="center")197 ws.column_dimensions[get_column_letter(col)].width = w198 ws.freeze_panes = "A2"199 ws.row_dimensions[1].height = 28200201# Sheet 1: Daily Schedule202ws1 = wb.active203ws1.title = "Daily Schedule"204ws1.sheet_properties.tabColor = "1F4E79"205206HEADERS1 = ["Time", "Task", "Type", "Priority", "Duration", "Status", "Notes"]207WIDTHS1 = [14, 40, 12, 10, 12, 14, 35]208style_header(ws1, HEADERS1, WIDTHS1)209210# schedule = list of (time_str, task, type, priority, duration, notes)211# e.g. ("09:00–09:30", "QA Standup", "QA", "P1", "30 min", "Daily sync")212schedule = [] # REPLACE WITH ACTUAL GENERATED SCHEDULE213214for r, (time, task, typ, pri, dur, notes) in enumerate(schedule, 2):215 row_data = [time, task, typ, pri, dur, "", notes]216 ws1.row_dimensions[r].height = 25217 for col, val in enumerate(row_data, 1):218 c = ws1.cell(row=r, column=col, value=val)219 c.font, c.border = DATA_FONT, BORDER220 c.alignment = Alignment(vertical="center")221 # Row background from Type222 fill_color = TYPE_FILLS.get(typ, "FFFFFF")223 c.fill = PatternFill("solid", fgColor=fill_color)224 # Override Priority and Status cells225 if col == 4:226 c.fill = PatternFill("solid", fgColor=PRI_FILLS.get(pri, "FFFFFF"))227 c.alignment = Alignment(horizontal="center", vertical="center")228 elif col == 6:229 c.fill = PatternFill("solid", fgColor="EEEEEE")230231# Sheet 2: Task Backlog232ws2 = wb.create_sheet("Task Backlog")233ws2.sheet_properties.tabColor = "ED7D31"234HEADERS2 = ["Task", "Type", "Priority", "Suggested Day", "Notes"]235WIDTHS2 = [40, 12, 10, 18, 35]236style_header(ws2, HEADERS2, WIDTHS2)237238# backlog = list of (task, type, priority, suggested_day, notes)239backlog = [] # REPLACE WITH ACTUAL DEFERRED TASKS240241for r, (task, typ, pri, day, notes) in enumerate(backlog, 2):242 row_data = [task, typ, pri, day, notes]243 ws2.row_dimensions[r].height = 25244 for col, val in enumerate(row_data, 1):245 c = ws2.cell(row=r, column=col, value=val)246 c.font, c.border = DATA_FONT, BORDER247 c.alignment = Alignment(vertical="center")248 c.fill = PatternFill("solid", fgColor=TYPE_FILLS.get(typ, "FFFFFF"))249 if col == 3:250 c.fill = PatternFill("solid", fgColor=PRI_FILLS.get(pri, "FFFFFF"))251 c.alignment = Alignment(horizontal="center", vertical="center")252253today = date.today().strftime("%Y-%m-%d")254wb.save(f"daily-plan-{today}.xlsx")255```256257---258259## Tips for Best Results260261- **Dump everything** — tasks, meetings, errands, even "I need to exercise". More input = better plan.262- **Mention fixed times** for any meetings or appointments (e.g. "standup at 9:30").263- **Flag urgent items** — say "urgent", "due today", or "must finish by 3 PM".264- **Specify energy** if you know it — "I'm tired today" shifts deep work to best available window.265- **Multiple days?** Say "plan my week" — each day gets its own schedule section and Excel sheet.