chief-of-staff

SKILL.md

Chief of Staff

A lean daily briefing scannable in 30 seconds. Focuses on what matters: schedule, week priorities, and yesterday's agent work.

Morning briefing workflow

Step 1: Load context

Gather information from these sources:

Source Location What to extract
Week plan /Users/ph/Documents/Projects/plans-and-reviews/work/week-plans/2026-WXX-plan.md Key results, day-by-day
Calendar Both calendars (see Fetching calendar events) Today's events
Day tracker /Users/ph/Documents/day-tracker/data/daily/YYYY-MM-DD.json Yesterday's activity
Claude Code summaries data/claude-code-summaries/YYYY-MM-DD.json Yesterday's Claude Code + Codex work

No Slack mentions or email. Peter checks those at lunchtime. Urgent items reach him via Signal/push.

Week number calculation: Use ISO week format (2026-WXX).

Day tracker summary generation:

Before reading day-tracker data, ensure yesterday's summary exists:

  1. Check if yesterday's JSON has a summary object: cat /Users/ph/Documents/day-tracker/data/daily/YYYY-MM-DD.json | python3 -c "import json,sys; print('Has summary:', 'summary' in json.load(sys.stdin))"
  2. If missing, generate it:
    cd /Users/ph/.claude/skills/day-tracker && python3 cli.py summary YYYY-MM-DD
    
  3. Then read the summary from the JSON file

Claude Code + Codex digest generation:

  1. Run the script to collect sessions and create/update the digest file:
    python3 /Users/ph/.agents/skills/chief-of-staff/generate_digest.py
    
  2. Read the digest from data/claude-code-summaries/YYYY-MM-DD.json

Step 2: Present briefing

Display the briefing in chat, save it to data/briefings/YYYY-MM-DD.md, and update Day.md with today's schedule via update-day-schedule.py (see Fetching calendar events).

Structure the briefing as follows:

# Good morning

**[Day] [Date] [Month] [Year] · W[XX]**

## Today's schedule

| Time | Event | Notes |
|------|-------|-------|
| HH:MM | Event name | Contextual insight from week plan / project knowledge |

[If no events before afternoon: "No morning commitments—deep work day."]

## Week priorities

| Priority | Status | Notes |
|----------|--------|-------|
| [Key result from week plan] | [Done / X/Y done / In progress / Not started] | [Concrete progress indicator, what's next] |

## Yesterday

| Project | Sessions | What happened |
|---------|----------|---------------|
| [project-name] | N | One-line summary of work done |

[Day tracker: Xh tracked—breakdown by category]
[Or: "No day tracker data for yesterday."]

## What can I help with?

1. **[Action]** — grounded in today's situation (calendar, week plan, yesterday's unfinished work)
2. **[Action]**
3. **[Action]**
4. **[Action]**
5. **[Action]**

Key rules for content:

  • Schedule notes must be contextual and insightful, drawing on week plan and project knowledge—not just restating calendar entries.
  • Week priorities are extracted from the current week plan's key results, with concrete progress indicators (e.g. "2/5 done", "Drafted, needs review").
  • Yesterday comes from the Claude Code + Codex digest. Concise: project, session count (noting source if mixed), one-line summary.
  • "What can I help with?" must be grounded in today's actual situation. Each option should be something Claude can actually do right now. Not generic.

Day note update (standalone)

Triggered by /cos schedule, /gm schedule, or "update day note".

Use case: Refresh today's schedule in Day.md mid-day.

Steps:

  1. Fetch events from both calendars (see Fetching calendar events)
  2. Update Day.md via update-day-schedule.py
  3. Print today's schedule in the chat in HHMM Event name format
  4. Confirm: "Day.md updated — N events written"

No briefing file saved, no digest generated, no week priorities or yesterday section.

Data paths reference

/Users/ph/Documents/Projects/
├── plans-and-reviews/
│   ├── MEMORY.md
│   └── work/
│       └── week-plans/2026-WXX-plan.md
└── [project folders]/MEMORY.md

/Users/ph/Documents/day-tracker/data/
└── daily/YYYY-MM-DD.json

/Users/ph/.agents/skills/chief-of-staff/
└── data/
    ├── briefings/YYYY-MM-DD.md
    ├── claude-code-summaries/YYYY-MM-DD.json
    └── overnight-results/

Integration with existing skills

Skill When to use
week-plan Trigger weekly planning
week-review Trigger weekly review
call-prep Prep for upcoming calls
schedule-task Schedule overnight automation

Weekly rhythm

Day Prompt
Friday–Sunday "It's time for your weekly review. Run /week-review?"
Sunday–Monday "Ready to plan next week? Run /week-plan?"

Fetching calendar events

Fetch from both calendars:

gog cal events primary --from today --to today --account pete.hartree@gmail.com
gog cal events jno364pp9c545r5s1n99k3q39s@group.calendar.google.com --from today --to today --account pete.hartree@gmail.com

The Meetings calendar returns times in UTC—add 1h for CET (or 2h for CEST). Merge both calendars, sort by time, format each event as HHMM Event name.

Update Day.md by passing each event as an argument:

python3 /Users/ph/.agents/skills/chief-of-staff/scripts/update-day-schedule.py "0800 Standup" "1400 Call with Alice"

No arguments → inserts "No events scheduled."

Weekly Installs
5
First Seen
Feb 11, 2026
Installed on
opencode5
gemini-cli5
continue4
cursor4
codebuddy4
github-copilot4