today

The user's daily job-search plan. Use when they ask what to do today, open a session without a specific task, say "what's next", or want a status check.

SKILL.md

GitHub

/today: what to do today

  1. If jobs/tracker.csv has a practice row with source = tour (left from the tour), ask the user once whether to remove it.
  2. Read jobs/tracker.csv, jobs/leads.csv, contacts/contacts.csv, profile/preferences.md, jobs/layoff-plan.md, jobs/work-search-log.csv, history/routines.md, history/posting-watch.md and profile/life-design.md (if they exist), drafts in outbox/ (files whose header has status: draft), and the last 10 lines of history/activity.md (mention in one line anything the other app changed since this session started). Today is the session date. The due-alerts pop-up may already have shown the user up to 3 urgent items when the session opened; give the full plan anyway, and don't treat those as already handled.
  3. If Gmail/Calendar connectors are available, also check whether any outbox/ drafts marked in-gmail-drafts now appear in their Sent mail (match and mark them exactly as sync-inbox step 4b does, then update follow-ups from the sent date), and quickly check (read-only) for: replies from companies or contacts since the last check, interview invites, and upcoming interviews in the next 7 days. Don't open unrelated mail. If not connected, skip silently.
  4. Reply in this shape, short:

Today, <weekday Mon D>

  • Due now: each open job or contact whose next date is today or past, with the action. Urgent first (offers, interviews, take-homes, deadlines), then oldest first. Show up to 5; if more are due, say "N more due; say show all due for the full list" (and show them all if asked).
  • Dates: read dates as AGENTS.md says ("Reading dates someone else wrote"). A date that is still unclear is listed as "date unclear" with its row, never as due or overdue; ask the user which they meant before changing anything.
  • Deadlines: any interested job whose application deadline is within 7 days, and any offer whose answer-by date (deadline) is within 7 days; say how many days and flag ≤ 3 as urgent. Passed deadlines: an offer whose answer-by date has passed goes first, as urgent ("the answer-by date was <date>; ask them today whether the offer still stands"); an interested job whose deadline has passed goes under "Deadline passed" with a suggestion: check the posting is still open, otherwise mark it skipped (ask first). So does an interested job whose latest line in history/posting-watch.md (from the posting watch) says closed: "the posting looks closed (checked <date>: <reason>)", with the offer to mark it skipped with the reason posting closed (ask first). Also any READY.md packages waiting for the user's review, and any unchecked line in jobs/layoff-plan.md (if it exists) dated within 3 days or overdue (when the user says one is done, mark it [x] and move it under "Done" with the date). A row whose next_action starts with Take-home due is listed with its due date; on or after its next_action_date, suggest starting the time-boxed work. A row whose notes start with Also: Interview YYYY-MM-DD or Also: Take-home due YYYY-MM-DD has a second commitment: list it too, by its own date. A row with next_action Send withdrawal note stays listed until the user says it went out. So does any To try: experiment or Next step: line in profile/life-design.md dated today or past (lines marked Tried:, Done: or Dropped: are finished) (from /explore and /coach-prep); once they've done it, offer /explore reflect. If an energy log there was started within the last 7 days and has no line for today, a one-line reminder.
  • Benefits and visa (only lines that apply; skip silently when the benefits_ and visa_ lines in preferences are blank or missing):
    • If today matches benefits_cert_day: "Today is your certification day." First name the period being certified: the benefit week(s) that ended since the last certification (by default the last benefits_cert_covers full weeks, 1 if that line is blank; weeks run from benefits_week_starts), never the week that just started. Skip weeks before the work search starts (benefits_claim_start plus the reference's start rule, e.g. Pennsylvania from the 3rd week claimed). For each week, count the way /work-search-log does (records only, no drafts, thank-yous or scheduled interviews that haven't happened, each event once), reporting applications and other activities separately against the agency's number (.claude/skills/work-search-log/references/requirements.md), and offer "say work search log and I'll get those weeks ready to copy in". On other days, mention it only if the current benefit week ends within 2 days and its count is short.
    • If visa_clock_start is set: use the days-left figure the session's startup note already gives (it uses the one formula in .claude/skills/evaluate-job/references/visa-checks.md, "Visa clock"; read that only if the note has no figure). "About N days left on your visa unemployment clock (by your own count; the official counter, your school's international student adviser (DSO) or your immigration lawyer has the real number)." Flag 30 or fewer as urgent and put it first. Never advise on status.
  • Interviews coming up: date, company, and whether prep exists in the job folder
  • Waiting in your Outbox: count, with subjects
  • New leads: if jobs/leads.csv has rows with status new, the count and "sort them in /job-inbox"; leads marked saved still need /add-job
  • New in your inbox: anything job-related (if checked). Anything from a new sender, or asking for money, personal details, a download, or a move to text/WhatsApp, gets the scam check in .claude/skills/sync-inbox/references/scam-check.md before you suggest replying
  • This week: progress vs weekly goals (applications sent, conversations, mock interviews, counted from tracker dates and interview logs)
  • Routines: if the session's startup note flagged a routine that seems to have stopped running, one line: "Your <name> hasn't run since <date>; say health and I'll help find out why." Then follow the routines skill ("When a routine stops running") if they want to look.
  • Automatic checks (offer once): only when setup is done, the search is active (not paused or closed), the tracker or jobs/leads.csv has at least one row, and history/routines.md is missing or has no dated lines. End the reply with one line: "I can also run some checks for you automatically, like a job scan every weekday morning; say set up automatic checks whenever you want them." Then log routines · offered as the routines skill says ("The routine log"), so it's offered only once. On yes, follow the routines skill.

My suggestion for the next hour: three concrete actions, most valuable first, each startable with one reply (e.g., "Draft the follow-up to Acme's recruiter (say 'go 1')"). In anything the user reads, use words and commas rather than arrows or symbols, which screen readers read aloud. Usual order: anything time-bound (interview, offer, deadline), then replies and follow-ups to real people, then one tailored application, then practice. Warm contacts before cold applications. Each action should fit inside the hour.

Pacing and wellbeing: never shame a slow day or week. After a rejection, give one line of perspective plus one concrete lesson if there is one. If the user sounds burned out, suggest a lighter day (one small task). If they express hopelessness or thoughts of self-harm, respond with care first and point them to local crisis resources (US: call or text 988; UK and Ireland: Samaritans, 116 123; anywhere else: findahelpline.com lists free local helplines by country) before anything job-related.

  1. When the user picks one, do it. Update the tracker and next dates in the same turn. When it's done, say in one line what it moved ("That's 3 of 4 applications this week"): seeing progress helps people keep a long search going.
  2. Nothing tracked yet → suggest /start (if setup isn't done), naming 3 employers (for students and new grads, new-grad programs) from knowledge/field/target-employers.md and offering /find-jobs to check which are hiring now (don't claim a role is open without checking), and emailing the user's former managers (for students, co-op or internship managers).