A native Raycast extension that sets a funny work status on Slack, GitLab and GitHub at once — pick which services to update, roll a random status, or generate one from your own notes with Raycast AI.
.env); any service left without a token is skippedTo run the latest version from source:
git clone https://github.com/jnwrnr/status-nerd.git
cd status-nerd
npm install
npm run dev
npm run dev imports the extension into Raycast (the commands appear immediately, with hot-reload). Once you run:
npm run build
the extension stays installed permanently — no terminal or npm run dev needed to use it.
Open the extension's preferences in Raycast and add the tokens for the services you want (all optional):
xoxp- token with the users.profile:write scope. Create at api.slack.com/apps → OAuth & Permissions.api scope. Create at GitLab → Access Tokens.user scope (needed for changeUserStatus). Create at github.com/settings/tokens. Fine-grained tokens don't reliably support status changes — use a classic token. Classic PATs are broadly scoped and grant wide access to your GitHub account, so create one deliberately and store it securely.Then pick your Default Services in preferences — these are preselected in Set Status and used by Random Status.
Add a Calendar ICS URL in preferences to enable Meeting Status:
The correct URL starts with https://calendar.google.com/calendar/ical/, contains /private-…, and ends in /basic.ics. A 404 almost always means the "Public address" was used on a non-public calendar, or part of the URL is missing.
It grants read access to that calendar, so treat it like a secret — it's stored as a password preference. See Google's guide: Sync your calendar with computer programs.
Emoji and text stay editable, so you can tweak any suggestion before setting it. The Duration dropdown overrides your default duration for this run.

Run Meeting Status — it reads your current meeting (or the next one within 24h) from the calendar ICS feed and generates status suggestions from the meeting's title + agenda, in your tone. ⌘R to shuffle, ⌘G to regenerate, Enter to set. All-day and cancelled events are skipped.
Privacy: the prompt is instructed to never include names, companies, or confidential details — statuses only hint at the kind of meeting, so they're safe on a public profile. You review every status before it's set.
Run Select Status for a searchable list in three sections:
Enter sets the selected status on your default services. Other actions: Save to Saved (⌘S), Remove (⌘⌫ for saved/recent), and Create New Status… (⌘N) to add your own.
Run Random Status for a one-click random status on your default services (no form).
Run Clear Status to remove your status on all configured services at once (one click, no form).
:shortcode:. GitLab drops the colons, GitHub keeps them — the extension handles the conversion, and only emoji valid on all three services are used.The built-in list (used by Random Status and by the ⌘R shuffle fallback when AI isn't available) lives in src/lib/statuses.ts. Add or edit entries in the STATUSES array:
{ emoji: ":fire:", text: "Putting out fires since 9am", gitlab_emoji: "🔥" },
emoji — Slack-style shortcode. Use a standard emoji that exists on Slack (e.g. :rocket:), otherwise Slack falls back to a generic icon.text — the status message.gitlab_emoji — the actual emoji character, shown in the Raycast confirmation.The AI suggestions (⌘G) don't use this list — they're generated from your notes and restricted to a curated set of safe emoji in src/lib/emoji.ts.
After editing, run npm run dev (hot-reload) or npm run build to pick up the change.
MIT