AI-Skills-Collection daily-planner-prioritizer

install
source · Clone the upstream repo
git clone https://github.com/ShreyasBh02/AI-Skills-Collection
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ShreyasBh02/AI-Skills-Collection "$T" && mkdir -p ~/.claude/skills && cp -r "$T/daily-planner-prioritizer" ~/.claude/skills/shreyasbh02-ai-skills-collection-daily-planner-prioritizer && rm -rf "$T"
manifest: daily-planner-prioritizer/SKILL.md
source content

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:

PriorityCriteria
🔴 P1 — Urgent & ImportantDeadlines today, blockers, critical bugs, meetings
🟠 P2 — Important, Not UrgentDeep work, test execution, errands with soft deadlines
🟡 P3 — Useful but FlexibleReviews, reading, habit tasks, low-urgency emails
🟢 P4 — Nice to HaveOptional 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 TypeDefault Duration
Meeting / standup30–60 min (30 if "standup", 60 if "meeting")
Bug fix / investigation60 min
Test case writing45 min per feature
Test execution / regression run90 min
Bug triage30 min
PR / code review30 min
Email / Slack catch-up20 min
Deep focus / dev work90 min
Personal errand (outside)60 min
Quick personal task20 min
Exercise / workout45 min
Meal / break30–60 min
Daily wrap-up15 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.