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.claude/skills/today/SKILL.md
GitHub/today: what to do today
- If
jobs/tracker.csvhas a practice row withsource=tour(left from the tour), ask the user once whether to remove it. - 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.mdandprofile/life-design.md(if they exist), drafts inoutbox/(files whose header hasstatus: draft), and the last 10 lines ofhistory/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. - If Gmail/Calendar connectors are available, also check whether any
outbox/drafts markedin-gmail-draftsnow appear in their Sent mail (match and mark them exactly assync-inboxstep 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. - 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
interestedjob whose applicationdeadlineis within 7 days, and anyofferwhose answer-by date (deadline) is within 7 days; say how many days and flag ≤ 3 as urgent. Passed deadlines: anofferwhose answer-by date has passed goes first, as urgent ("the answer-by date was <date>; ask them today whether the offer still stands"); aninterestedjob whose deadline has passed goes under "Deadline passed" with a suggestion: check the posting is still open, otherwise mark itskipped(ask first). So does aninterestedjob whose latest line inhistory/posting-watch.md(from the posting watch) saysclosed: "the posting looks closed (checked <date>: <reason>)", with the offer to mark itskippedwith the reasonposting closed(ask first). Also anyREADY.mdpackages waiting for the user's review, and any unchecked line injobs/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 whosenext_actionstarts withTake-home dueis listed with its due date; on or after itsnext_action_date, suggest starting the time-boxed work. A row whosenotesstart withAlso: Interview YYYY-MM-DDorAlso: Take-home due YYYY-MM-DDhas a second commitment: list it too, by its own date. A row withnext_actionSend withdrawal notestays listed until the user says it went out. So does anyTo try:experiment orNext step:line inprofile/life-design.mddated today or past (lines markedTried:,Done:orDropped:are finished) (from/exploreand/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_andvisa_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 lastbenefits_cert_coversfull weeks, 1 if that line is blank; weeks run frombenefits_week_starts), never the week that just started. Skip weeks before the work search starts (benefits_claim_startplus the reference's start rule, e.g. Pennsylvania from the 3rd week claimed). For each week, count the way/work-search-logdoes (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_startis 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.
- If today matches
- 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.csvhas rows with statusnew, the count and "sort them in/job-inbox"; leads markedsavedstill 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.mdbefore 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.csvhas at least one row, andhistory/routines.mdis 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 logroutines · offeredas 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.
- 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.
- Nothing tracked yet → suggest
/start(if setup isn't done), naming 3 employers (for students and new grads, new-grad programs) fromknowledge/field/target-employers.mdand offering/find-jobsto 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).