# Brief

> Felix's daily-work-brief cockpit. Opens the morning's staged brief and walks him through everything that needs him across Jira, Slack, GitHub, and today's calendar — ranked blocking-first — approving and SENDING replies as he goes (Jira + GitHub auto-comment; Slack copied to clipboard with the thread link). Refreshes against live state on open so nothing stale is sent. Use when Felix runs /brief, or says "what needs me today", "my daily brief / morning brief", "run my brief", "what's on my plate". NOT for summarizing a document or writing a short "brief" of something — this is the personal work-triage loop.

- Skill: `sunfmin/brief` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add sunfmin/brief`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sunfmin/brief/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: sunfmin (https://skillmd.com/u/sunfmin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/sunfmin/brief

---


# 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:write` token
  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 → use `mytokens`.

