daily-planner-prioritizer — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited daily-planner-prioritizer (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
Accept input in any format — bullet list, paragraph, voice-style dump, or structured. Extract from the input:
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.
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:
Default working window: 9:00 AM – 6:00 PM (adjust if user specifies otherwise)
Default time-blocking principles:
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):
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
Create a formatted .xlsx file with 2 sheets.
#### Sheet 1: Daily Schedule
Columns: Time | Task | Type | Priority | Duration | Status | Notes
Formatting:
#1F4E79), frozen row#DEEAF1 (blue)#E2EFDA (green)#FFF2CC (yellow)#FCE4D6 (orange/pink)#F2F2F2 (grey)#F4CCCC, 🟠 P2 = #FCE5CD, 🟡 P3 = #FFF2CC, 🟢 P4 = #D9EAD3#### Sheet 2: Task Backlog
Any tasks that didn't fit today — columns: Task | Type | Priority | Suggested Day | Notes
#### File naming: daily-plan-YYYY-MM-DD.xlsx
/mnt/user-data/outputs/daily-plan-YYYY-MM-DD.xlsxpresent_files to deliverfrom 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")~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.