Agent skill

daily-plans

Manages a daily task planning system using Plans/ in whatever folder is currently selected — creating plans, adding new tasks, executing tasks one-by-one, logging completed work, checking status, deleting tasks, and carrying forward incomplete items. Works from any mounted folder. Seven operations: CREATE, NEW, EXECUTE (one task per invocation), LOG, STATUS, DELETE (with auto-renumbering), CARRY-FORWARD. Use whenever the user says "plan my day", "create a plan", "new task", "add a task", "add task [X]", "execute the plan", "next task", "log task", "log that", "plan status", "what's the plan", "where are we", "carry forward", "carry over", "delete task", "remove task", "drop task", or provides a numbered task list. Do NOT trigger for "set up my workday", "what did I do today?", meeting prep, email drafting, or calendar searches.

Stars 0
Forks 0

Install this agent skill to your Project

npx add-skill https://github.com/christopheryeo/claude-skills/tree/main/daily-plans

SKILL.md

Daily Plans

A unified daily task planning system with seven operations: create, new, execute, log, status, delete, and carry-forward. Plans are stored as date-stamped entries inside a journal file (Journals/YYYY-MM Plans.md), using the same structure defined by the daily-journals skill. Audit files remain in a separate Plans/ folder.


Dependency: daily-journals

This skill depends on the daily-journals skill for plan storage. Plan content is written as journal entries inside Journals/YYYY-MM Plans.md, where each day's plan sits under a ## YYYY-MM-DD date header in reverse-chronological order (newest first).

The following daily-journals sub-commands are used:

daily-plans operation Calls Which calls Purpose
CREATE daily-journals CREATE-JOURNAL Ensure Journals/YYYY-MM Plans.md exists (purpose: "Plans")
CREATE daily-journals CREATE-ENTRY Insert the full plan content under a new ## YYYY-MM-DD date header
NEW daily-journals CREATE-ENTRY Append a new task block into today's existing ## YYYY-MM-DD entry
LOG daily-plans NEW daily-journals CREATE-ENTRY (via NEW) Add an already-completed (✅) task to today's plan, then write an audit entry

All other sub-commands (EXECUTE, STATUS, DELETE, CARRY-FORWARD) read and write today's plan by locating the ## YYYY-MM-DD entry for the relevant date inside the current month's Plans journal.


Locating Files

This skill is folder-agnostic — it works from whatever folder the user has selected (mounted).

  1. Determine the mounted root. The user's selected workspace is the mount point (e.g., /sessions/.../mnt/Sentient, /sessions/.../mnt/Mary (Marketing), etc.).
  2. Journals/ folder — used for plan content. Follow the daily-journals skill's folder resolution: look for Journals/ at the mounted root; create it if missing.
  3. Plans/ folder — used only for audit files. Look for Plans/ at the mounted root; create it if missing.

Never hardcode a specific parent folder.

Detecting the Sub-Command

Trigger phrases Operation
"plan my day", "create a plan", provides a list of tasks create
"new task", "add a task", "add task [X]" new
"execute the plan", "run today's tasks", "start the plan", "next task" execute
"log task", "log that", "log the task" log
"plan status", "what's the plan?", "show plan", "where are we?" status
"delete task [X]", "remove task [X]", "drop task [X]" delete
"carry forward", "carry over", "pull yesterday's tasks" carry-forward

If the intent is ambiguous, ask which operation is intended — but usually context makes it obvious.

File Locations and Naming

  • Plans journal: Journals/YYYY-MM Plans.md — plan content lives as an entry under the ## YYYY-MM-DD date header for the relevant day.
  • Audit file: Plans/YYYY-MM-DD Audit.md — one audit file per day, stored in the Plans/ folder.

Use today's date unless the user specifies otherwise. When reading "today's plan", open Journals/YYYY-MM Plans.md and find the ## YYYY-MM-DD section matching today's date.

Status Icons

Icon Status Meaning
🆕 New Not yet started
🔄 In Progress Work underway
Done Completed and verified
Blocked Cannot proceed — blocker noted
⏭️ Deferred Pushed to a future date

Priority Colour Coding

Code Level Meaning
🔴 Priority 1 Must be done today, time-sensitive or blocking
🟡 Priority 2 Important but not urgent
🟢 Priority 3 Nice to have, can defer if needed
🟠 Priority 4+ Backlog / stretch goals

AI Workforce Delegation (Sentient context)

When a task belongs to a specific domain, note the delegate in the Delegate field. This is for tracking only — Claude executes all tasks directly. If working outside the Sentient root and delegation doesn't apply, omit the Delegate field.

Domain Delegate
Email, calendar, admin Vivien (PA)
Financial tasks Eddie (CFO)
Sales-related Donny (Sales)
Marketing/collateral Mary (Marketing)
Project management Cedric (Projects)
Development/technical Alex (Dev)
Cross-functional N/A (cross-functional)

Operation: CREATE

Purpose: Build a new daily plan as a journal entry inside Journals/YYYY-MM Plans.md, plus a shell audit file in Plans/.

Steps

  1. Ensure the Plans journal exists. Invoke the daily-journals CREATE-JOURNAL logic with purpose "Plans" and the current month. This checks for Journals/YYYY-MM Plans.md — if it exists, use it; if not, create it. (Do not prompt the user for the purpose — it is always "Plans".)

  2. Check for an existing plan today. Read the Plans journal and look for a ## YYYY-MM-DD header matching today's date. If an entry already exists with tasks, do not offer to append new tasks to it — that is the NEW sub-command's responsibility. Instead, let the user know a plan already exists and ask if they want to replace it entirely. If yes, remove the existing date section and rewrite it. If no, stop and suggest using new task to add individual items.

  3. Gather tasks. If the user has provided a task list, use it. If they said "plan my day" without specifics, ask what tasks they want planned.

  4. Organise by priority. Group tasks into priority levels (🔴 P1, 🟡 P2, 🟢 P3, etc.). If priorities aren't specified, suggest a grouping and ask for confirmation. Assign sequential task numbers within each group (e.g., 1.1, 1.2 for P1; 2.1, 2.2 for P2).

  5. Write the plan as a journal entry. Using the daily-journals CREATE-ENTRY insertion logic, add the plan content under a ## YYYY-MM-DD date header in the Plans journal. The entry is inserted in reverse-chronological order (newest first). The content beneath the date header uses this template:

markdown
### Daily Plan — DD Month YYYY

**Status Legend**
| Icon | Status | Meaning |
|------|--------|---------|
| 🆕 | New | Not yet started |
| 🔄 | In Progress | Work underway |
| ✅ | Done | Completed and verified |
| ❌ | Blocked | Cannot proceed |
| ⏭️ | Deferred | Pushed to future date |

---

#### Status of Previous Plans

| Item | Status | Notes |
|------|--------|-------|
| (carry-forward items or "No carry-forward items") | | |

---

#### Today's Tasks

##### 🔴 Priority 1: [Category Name]

###### 1.1 🆕 [Task title]
- **Action:** What Claude should do (be specific — tool, target, output)
- **Delegate:** [AI Workforce member name, or N/A]
- **Effort:** ~N mins

(repeat for each task)

---

#### Estimated Total Effort

| Priority | Items | Estimated Time |
|----------|-------|---------------|
| 🔴 P1 | N | ~X mins |
| 🟡 P2 | N | ~X mins |
| 🟢 P3 | N | ~X mins |
| **Total** | **N** | **~X mins** |

Heading levels: Because the plan sits inside a journal entry (under a ## YYYY-MM-DD header), all internal headings are shifted down by two levels compared to the old standalone format: ####, ######, ########, ##########.

  1. Create the audit shell in Plans/YYYY-MM-DD Audit.md:
markdown
# Daily Plan Audit — DD Month YYYY

---
  1. Present the plan summary — a compact table showing task numbers, titles, priorities, and effort estimates. Ask for approval before considering the plan final.

Scope boundary: CREATE is only for initialising a brand-new plan. It does not add tasks to an existing plan. Use the NEW sub-command for that.


Operation: NEW

Purpose: Add a single new task to today's existing plan entry in the Plans journal, using the daily-journals CREATE-ENTRY sub-command to write the task content.

Steps

  1. Read today's plan entry. Open Journals/YYYY-MM Plans.md and locate the ## YYYY-MM-DD section for today. If no entry exists for today, offer to create one with CREATE instead.

  2. Gather task details. The user may supply the full task inline (e.g., "add task: Review pitch deck — P1, ~10 mins") or just a title. If any required field is missing, ask:

    • Task title (required)
    • Action description — what Claude should actually do (required)
    • Priority level — 🔴 P1 / 🟡 P2 / 🟢 P3 / 🟠 P4+ (default: 🟡 P2 if not specified)
    • Delegate — AI Workforce member or N/A (optional; omit if not in Sentient context)
    • Effort estimate, e.g. ~10 mins (optional; omit if unknown)
  3. Determine the task number. Find the highest existing task number in the chosen priority group and increment by 1. If the priority group does not yet exist, create it with task number X.1 (e.g., new P2 group starts at 2.1).

  4. Add the task using CREATE-ENTRY. Invoke the daily-journals CREATE-ENTRY sub-command to insert the new task block into today's ## YYYY-MM-DD entry in Journals/YYYY-MM Plans.md. CREATE-ENTRY handles locating the correct date header and appending content beneath it. The task block to insert uses this format:

markdown
###### N.N 🆕 [Task title]
- **Action:** [What Claude should do]
- **Delegate:** [Name or N/A]
- **Effort:** ~N mins

Placement within the entry: Unlike a standard journal entry where CREATE-ENTRY appends below existing content under the date header, the task block must be inserted into the correct priority group within today's plan entry. Locate the matching ##### 🔴/🟡/🟢/🟠 Priority N heading inside the date section and append the task block after the last existing task in that group. If the priority group does not yet exist, create the heading and task block before the #### Estimated Total Effort section.

  1. Update the Estimated Total Effort table within today's entry — increment the item count and time for the affected priority level and the totals row.

  2. Present a confirmation — show the newly added task and the updated effort summary.


Operation: EXECUTE

Purpose: Execute exactly one uncompleted task from today's plan, update its status to done, then stop. Only one task is executed per invocation — never more.

Constraint: One Task Per Invocation

This skill executes a single task per call and then stops. It never loops through multiple tasks, never auto-advances to the next task, and never batches work. The user controls the pace and decides when to trigger the next task by saying "next task", "continue", or "execute" again.

Steps

  1. Open the Plans journal and find today's entry. Read Journals/YYYY-MM Plans.md and locate the ## YYYY-MM-DD section matching today's date. If no entry exists for today, tell the user and offer to create one via the CREATE operation. If the journal file itself does not exist, report that and stop.

  2. Scan today's entry for the first uncompleted task. Starting from the highest-priority group (🔴 P1) and working down (🟡 P2 → 🟢 P3 → 🟠 P4+), read each task heading (###### N.N) in order and check its status icon:

    • 🆕 (New) or 🔄 (In Progress) → this is the task to execute. Stop scanning.
    • ✅ (Done) → skip, already completed.
    • ❌ (Blocked) → skip, cannot proceed.
    • ⏭️ (Deferred) → skip, pushed to a future date.

    If every task in today's entry is ✅, ❌, or ⏭️ (i.e., no uncompleted tasks remain), report that all tasks are complete, show a completion summary, and stop. Do not execute anything.

  3. First invocation only — show the full task summary. If this is the first EXECUTE call of the session (all actionable tasks are still 🆕), present a compact status table of all tasks grouped by priority before executing, so the user can see the full plan at a glance.

  4. Execute that single task. Perform whatever the task's Action field specifies — email, calendar, Drive, document creation, web search, or any available tool. Complete the work fully before proceeding to the next step.

  5. Update the task's status in the Plans journal. Re-open Journals/YYYY-MM Plans.md, locate today's ## YYYY-MM-DD entry, find the specific ###### N.N heading for the task just executed, and change its status icon:

    • 🆕 → ✅ if the task completed successfully
    • 🆕 → ❌ if a blocker was encountered (note the blocker)
    • 🆕 → ⏭️ if the user said "skip" (note "Skipped by user")

    Then check whether all tasks in that priority group are now ✅ — if so, append ✅ Done to the priority group heading (##### 🔴/🟡/🟢/🟠 Priority N).

  6. Write the audit entry in Plans/YYYY-MM-DD Audit.md:

markdown
## [Task Number] [Task Name]
**Status:** ✅ Done
**Action Taken:** One sentence describing what was executed.
**Output:** Link to file, summary of result, or confirmation of action taken.
**Verification:**
- [x] Specific thing that was verified
- [x] Another verification item

Each task gets its own ## heading — never group multiple tasks. The Output field must include a concrete deliverable. Verification items should be specific and checked.

  1. Report and stop. Tell the user:

    • What task was executed (number and title)
    • What the output/result was
    • What the next uncompleted task is (number, title, and priority), or confirm that all tasks are now done

    Then stop. Do not proceed to the next task. Wait for an explicit "next task", "continue", or "execute" trigger from the user before running EXECUTE again.


Operation: LOG

Purpose: Record a just-completed task in today's plan entry and audit file retroactively — for tasks completed conversationally outside the formal plan execution flow. LOG delegates to the NEW sub-command to create the task entry, but with ✅ Done status instead of 🆕 New.

Steps

  1. Identify the task. Look at the conversation history for the most recent task that was completed. If ambiguous, ask which task to log.

  2. Derive task details from the conversation. Extract the following from what was just completed:

    • Task title (required) — a concise name for what was done
    • Action description (required) — what was actually performed
    • Priority level — default to 🟡 P2 if unclear from context
    • Delegate — infer from the domain if in Sentient context, otherwise omit
    • Effort estimate — estimate based on conversation duration/complexity, or omit if unknown
  3. Invoke the NEW sub-command to add the task to today's plan entry. NEW handles all journal interaction: ensuring today's ## YYYY-MM-DD entry exists in Journals/YYYY-MM Plans.md (falling back to CREATE if needed), determining the next task number, inserting the task block into the correct priority group via CREATE-ENTRY, and updating the Estimated Total Effort table. The only difference from a normal NEW invocation is:

    • The task icon is (Done) instead of 🆕 (New)
    • The task block is written as:
markdown
###### N.N ✅ [Task title]
- **Action:** [What was done]
- **Delegate:** [Name or N/A]
- **Effort:** ~N mins
  1. Write the audit entry in Plans/YYYY-MM-DD Audit.md (create the audit file if needed):
markdown
## [N.N] [Task Name]
**Status:** ✅ Done
**Action Taken:** One sentence describing what was executed.
**Output:** Link to deliverable, summary of result, or confirmation.
**Verification:**
- [x] Specific thing that was verified
- [x] Another verification item
  1. Confirm that the task has been logged in both the Plans journal entry and the audit file.

Operation: STATUS

Purpose: Show a quick summary of today's plan progress, with an optional filter to show only tasks of a specific status.

Optional Status Filter

The user may request a filtered view by specifying a status in their trigger phrase. Recognised filter phrases and their mappings:

Trigger phrase Filter applied
"show new tasks", "what's new", "show pending" 🆕 New only
"show in progress", "what's in progress", "what's underway" 🔄 In Progress only
"show done", "what's done", "what's completed" ✅ Done only
"show blocked", "what's blocked", "any blockers" ❌ Blocked only
"show deferred", "what's deferred", "what's postponed" ⏭️ Deferred only
"plan status", "what's the plan", "show plan", "where are we" (no qualifier) All tasks (no filter)

If a filter is detected, note it at the top of the response (e.g., Showing: 🆕 New tasks only).

Steps

  1. Read today's plan entry. Open Journals/YYYY-MM Plans.md and locate the ## YYYY-MM-DD section for today. If no entry exists, report that and offer to create one.

  2. Apply the filter (if any). If the user specified a status filter, restrict the displayed tasks to only those matching that status. If no filter was given, include all tasks regardless of status.

  3. Present a summary table grouped by priority (omit priority groups with no matching tasks when a filter is active):

# Task Status Effort
1.1 Task title ✅ Done ~5 mins
1.2 Task title 🆕 New ~10 mins
2.1 Task title 🔄 In Progress ~15 mins

If no tasks match the active filter, report: "No tasks found with status [filter] in today's plan."

  1. Include totals (always based on the full plan, not the filtered view — label clearly):
Completed Remaining Blocked/Deferred
Count X Y Z
Effort ~N mins ~N mins ~N mins
  1. If there are blocked or deferred tasks (in the full plan), briefly note the reason for each.

Operation: DELETE

Purpose: Remove a specified task from today's plan and renumber the remaining tasks so there are no gaps.

Steps

  1. Read today's plan entry. Open Journals/YYYY-MM Plans.md and locate the ## YYYY-MM-DD section for today. If no entry exists, report there's no plan to edit.

  2. Identify the task to delete. The user will reference it by number (e.g., "delete task 2.1"), by name, or by description. If ambiguous, show a numbered list and ask which to remove.

  3. Confirm before deleting. Show the task that will be removed and ask for confirmation.

  4. Remove the task entirely — the full ###### N.N block including Action, Delegate, and Effort lines.

  5. Renumber remaining tasks within the same priority group. Tasks must stay sequential with no gaps. Tasks in other priority groups are unaffected.

  6. Handle empty priority groups. If the deletion leaves a priority group with zero tasks, remove the entire priority heading.

  7. Update the Estimated Total Effort table — adjust item count and time for the affected priority level and the totals row.

  8. Present the updated plan — a compact summary table of remaining tasks for verification.

Renumbering example

Before deleting task 1.2:

###### 1.1 🆕 Draft BeeNext reply
###### 1.2 🆕 Review pitch deck        ← deleted
###### 1.3 🆕 Send Cap Vista pack

After:

###### 1.1 🆕 Draft BeeNext reply
###### 1.2 🆕 Send Cap Vista pack      ← was 1.3, now 1.2

Cross-priority numbering stays independent — deleting a P1 task does not affect P2 or P3 numbering.


Operation: CARRY-FORWARD

Purpose: Pull incomplete tasks from yesterday's plan entry into today's plan.

Steps

  1. Find yesterday's plan entry. Calculate yesterday's date and open Journals/YYYY-MM Plans.md. Locate the ## YYYY-MM-DD entry matching yesterday's date. If no entry exists for yesterday, inform the user that there is no previous day's plan to carry forward and stop.

  2. Extract incomplete tasks. From yesterday's entry only, collect all tasks marked ❌ (Blocked) or ⏭️ (Deferred). Ignore ✅ (Done). If no incomplete tasks are found, inform the user and stop.

  3. Check if today's plan entry exists:

    • If yes, add carried-forward items to the "Status of Previous Plans" table within today's entry
    • If no, create today's plan entry using the CREATE operation, with those items in the status section
  4. Present what was carried forward — a table with original status and any notes about why they were blocked/deferred.

  5. Ask the user whether to re-add them as active tasks in today's plan or just track them in the status section.


Edge Cases

  • No plan entry exists for today and user says "execute": Report there's no plan yet and offer to create one.
  • No Plans journal exists at all: Invoke CREATE-JOURNAL logic to create Journals/YYYY-MM Plans.md before proceeding.
  • All tasks already done and user says "execute": Confirm everything is complete. Offer to add more tasks.
  • Yesterday has no plan entry: CARRY-FORWARD reports that no previous day's plan was found and stops — it does not search further back.
  • Yesterday falls in a different month (e.g., 1st of the month): Open the prior month's Plans journal (e.g., Journals/2026-02 Plans.md) to find yesterday's entry. Only yesterday's date is checked — no broader scan.
  • User says "skip" during execution: Mark the task as ⏭️ Deferred with a note "Skipped by user" and report back.
  • User says "block" or identifies a blocker: Mark the task as ❌ Blocked, note the blocker, and report back.
  • Task takes longer than expected: Complete it and report the actual outcome. Don't update effort estimates retroactively.
  • Deleting a completed task: Allow it but warn that the audit entry will remain (audit entries are never deleted).
  • Editing another day's plan: If the user asks to modify a past day's plan, locate the correct ## YYYY-MM-DD entry in the Plans journal. This is supported but uncommon — confirm the date with the user before editing.

Expand your agent's capabilities with these related and highly-rated skills.

christopheryeo/claude-skills

daily-journals

Manages markdown journal files in a Journals/ folder — creating new journal files, adding date-stamped entries, and deleting entries. A journal is a markdown file named with reverse-month and purpose (e.g., "2026-03 Activities.md") containing chronological entries grouped under reverse-date headers. Three operations: CREATE-JOURNAL, CREATE-ENTRY, DELETE-ENTRY. Use whenever the user says "create a journal", "new journal", "journal entry", "add to journal", "delete journal entry", "remove entry", "show journals", or mentions logging thoughts, activities, notes, or reflections into a dated journal format.

0 0
Explore
christopheryeo/claude-skills

daily-work

Full workday lifecycle with three sub-commands: START (morning enablement — email triage, calendar audit, Drive activity, news snapshot, workspace prep, executive brief; replaces set-up-workday), RECAP (end-of-day cross-reference of Calendar, Gmail, Drive, and all AI workforce Plans task logs into a comprehensive activity report in the work-day folder), and MINUTES (given a meeting title, find it in Calendar, search the work-day Drive folder for minutes, fall back to Gmail for transcript, then return a direct link). Use for "set up my workday", "start my day", "kick off today", "morning brief", "daily recap", "end of day", "wrap up the day", "what did I do today", "what happened today", "find the minutes", "meeting minutes for [title]", "where are the minutes", "get me the notes from [meeting]", "meeting transcript", or any workday activity review.

0 0
Explore
christopheryeo/claude-skills

news-articles-rename

OCR and rename news article files (PDFs and images) by extracting the article headline from the content and using it as the filename. Targets the Vivien (PA)/News/ folder. Use this skill whenever the user asks to rename news articles, organise news clippings, process newspaper PDFs, extract article titles from scanned pages, or tidy up the News folder. Also trigger when the user mentions "rename articles", "news folder", "article titles", or "news clippings".

0 0
Explore
christopheryeo/claude-skills

daily-calendars

Unified Google Calendar skill. Includes sub-commands: search (natural-language calendar search by day/date/week, title keywords, attendees, and attendee emails/domains); available (check if a specific date/time works respecting 10am-6pm weekday availability, lunch hours 12pm-2pm, 30-minute gaps between meetings, and a maximum of 3 meetings per day); and meeting (returns/validates the default definition of a typical meeting). Use when users ask to check their calendar, find meetings, search by participant, locate events by title, retrieve calendar briefings, verify availability for a specific time slot, or check whether a meeting matches the default meeting profile.

0 0
Explore
christopheryeo/claude-skills

daily-calendars

Unified Google Calendar skill. Includes sub-commands: search (natural-language calendar search by day/date/week, title keywords, attendees, and attendee emails/domains); available (check if a specific date/time works respecting 10am-6pm weekday availability, lunch hours 12pm-2pm, 30-minute gaps between meetings, and a maximum of 3 meetings per day); and meeting (returns/validates the default definition of a typical meeting). Use when users ask to check their calendar, find meetings, search by participant, locate events by title, retrieve calendar briefings, verify availability for a specific time slot, or check whether a meeting matches the default meeting profile.

0 0
Explore
christopheryeo/claude-skills

project-pulse-brief

Curate stakeholder-ready pulse briefs that summarize project portfolio updates, risks, and next steps.

0 0
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results