SKILL.md
brief — review & clear the day's work
Two phases. PREP runs unattended at 07:30 Mon–Fri and stages a brief; REVIEW (/brief) is what you run when you sit down. Almost always you're here for REVIEW.
PREP (scheduled — you rarely run this by hand)
scripts/prep.sh gathers Jira+Slack (via mywork/slackdump) + GitHub (via gh), then a headless claude -p composes the staged brief at ~/loop-me/state/brief-<date>.md (instructions: scripts/prep-prompt.md). Install the schedule once with scripts/install-schedule.sh. Calendar is deliberately left to REVIEW (below).
REVIEW — /brief
1. Load
Read today's staged brief ~/loop-me/state/brief-$(date +%F).md. If it's missing (Mac was off at 07:30, or first use), run scripts/prep.sh now, then load it.
2. Refresh at open — the staged brief is a WARM CACHE, not the truth
Before showing anything, bring each item up to date (do NOT trust the 07:30 snapshot):
- Re-check each item's live state: Slack thread already answered (by Felix or someone) →
drop; Jira issue closed / PR merged → drop; content changed materially → re-draft. Cheapest way: re-run scripts/gather.sh ~/loop-me/state/comms 1 and diff, or spot-check the specific threads/issues.
- Fetch today's calendar via the Google Calendar MCP (
list_events, today) and compute
free time — this is why calendar isn't in PREP (MCP is only here, interactively).
- Drop any item whose id is in
~/loop-me/state/handled.json.
3. Present the header, then walk the ranked list
Show the header: date · meeting load ("3 meetings, ~4h free") · counts ("6 replies, 2 reviews, 1 do — 3 blocking"). Then walk items top-down, one at a time. For each, show the card: rank · type · needs-your-judgment if flagged · who/where · why-now · the draft (for reply items) · the source link. Wait for Felix's call:
| Felix says | You do | ||
|---|---|---|---|
| send | write the draft to a temp file, then `scripts/send.sh <jira KEY \ | gh URL \ | slack PERMALINK> …` |
| edit ("warmer", "drop last line", …) | revise the draft, show it, then send on his ok | ||
| skip | leave it; it carries over to tomorrow's brief (tagged carried · day N) |
||
| done / ignore / open | append its id to ~/loop-me/state/handled.json (suppressed hereafter); for open, also print the link |
||
| next / stop | move on / end the walk |
send.sh auto-comments Jira (acli) and GitHub (gh); for Slack it copies the reply to the clipboard and prints the thread link (paste + send yourself). Never send an item you haven't refreshed in step 2.
4. Close out
Update ~/loop-me/state/last-brief.json {"ts":"<ISO now>"}. Print a one-liner: "Sent 5 (3 Jira, 2 GH), 2 Slack copied, 1 skipped (carried), 2 dismissed."
State (~/loop-me/state/)
brief-<date>.md (staged brief + audit trail) · last-brief.json (window cursor) · handled.json (dismissed ids; entries older than 14 days may be pruned) · comms/ (raw gather) · optional ~/loop-me/config/vips.txt (VIP handles/emails/usernames — ranking boost, may be absent).
Guardrails
- Jira/GitHub sends are REAL and immediate on
send. Refresh (step 2) before every send. - Slack has no auto-send credential yet (clipboard hand-off). If a Slack
chat:writetoken
is later stored in mytokens, add a real-send branch to scripts/send.sh and this flips to true auto-send — no other change.
SKILL_DIR= this skill's dir (~/.claude/skills/brief). Need a credential → usemytokens.