Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Coding Status for DiscordNew to Visual Studio Code? Get it now.
Coding Status for Discord

Coding Status for Discord

Achilleees

|
135 installs
| (1) | Free
Shows what you're working on — language, session time, and a rotating spinner word — as your Discord Rich Presence.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Coding Status for Discord

Your Discord status, now Flibbertigibbeting.

VS Marketplace Installs

Coding Status for Discord in action

A VS Code extension that turns your editor activity into Discord Rich Presence: the language you're in, the time you've been at it, and a rotating spinner word borrowed from Claude Code's loading animation. Your status reads Cogitating..., Moonwalking..., or the occasional Flibbertigibbeting... while you code.


Install

Grab it from the VS Code Marketplace, search Coding Status in the Extensions view, or run ext install Achilleees.coding-status-for-discord from Quick Open (Ctrl+P).

Features

  • Zero configuration: install and it works
  • Zero runtime dependencies: the Discord IPC client is hand-rolled; nothing third-party ships in the bundle
  • 187 spinner words from Claude Code, rotating every 15 seconds (configurable)
  • Editable word lists: merge or replace the built-ins, or fork and prune the default Claude list
  • Language detection with per-language icons for 43 languages (and growing)
  • Framework detection: your status reads Working in TypeScript · Next.js, auto-detected from your project's manifests
  • Session elapsed time shown on your Discord profile
  • Smart state: changes the status line when you're debugging, reviewing a diff, or focused on the terminal
  • Idle handling: slows down, pauses, or clears presence when VS Code loses focus for too long
  • Optional repo button: a clickable link to your git remote on your profile (opt-in, off by default)
  • Toggle command & keybinding: hide presence any time (Ctrl+Alt+D / Cmd+Alt+D)
  • Preview command: see exactly what others see, buttons included
  • Auto-reconnects if Discord is restarted
  • Silently does nothing if Discord isn't running: no errors, no noise
  • No telemetry, no network calls beyond the local Discord IPC socket

How it works

When VS Code is open and Discord is running on the same machine, the extension connects to Discord over its local IPC socket and sets your Rich Presence. Every 15 seconds it rotates to a new spinner word. No accounts, no API keys, no setup.

Commands

Command Description
Toggle Coding Status Presence Pause or resume the presence. Paused clears the presence from Discord entirely. State does not persist across VS Code restarts. Bound to Ctrl+Alt+D (Cmd+Alt+D on macOS).
Preview Current Presence Pop up the exact status line, details, and buttons your presence is sending, including the repo button, which Discord shows to others but never to you.
Edit Default Word List Open an editable copy of the built-in Claude word list (enables editDefaultWords). Your edits live in defaultWordList; the originals are never touched.
Reset Default Word List Clear defaultWordList and turn editDefaultWords off; rotation falls back to the built-in list. (The setting is emptied, not repopulated.)

All commands live under the Coding Status category in the command palette.

Settings

All settings live under the claudeSpinner.* namespace (internal ID, kept stable across renames) and live-reload on change.

All 18 settings (click to expand)
Setting Type Default What it does
claudeSpinner.enabled boolean true Master switch. Off → disconnect from Discord.
claudeSpinner.cycleSpeed number (5–120) 15 Seconds between word rotations. 5s minimum respects Discord's rate limit.
claudeSpinner.cycleWords boolean true Rotate the word. Off → pick one word on activation and keep it.
claudeSpinner.customWords string[] [] Extra words mixed into the rotation. Each entry 1–125 characters. Case-sensitive: "working" and built-in "Working" both appear.
claudeSpinner.customWordsMode merge / replace merge merge mixes your custom words into the defaults; replace uses only your custom words (falls back to the defaults when your list is empty).
claudeSpinner.editDefaultWords boolean false Use your edited copy of the default list (defaultWordList) instead of the built-in 187.
claudeSpinner.defaultWordList string[] [] Your editable copy of the default Claude words. Populated by Edit Default Word List; only consulted when editDefaultWords is on.
claudeSpinner.showLanguage boolean true Show the second status line beneath the cycling word. Working in X, the smart-state variants, and the workspace suffix all live on it; off hides that line entirely.
claudeSpinner.detectFramework boolean true Append the detected framework to the language line (Working in TypeScript · Next.js). Shown only for files in the framework's language family.
claudeSpinner.showWorkspace boolean false Append the workspace folder name to the status line. Off by default for privacy.
claudeSpinner.showRepoButton boolean false Add a button linking to the active workspace's git remote, labeled with its host. Off by default for privacy; visible to others, not to you.
claudeSpinner.showElapsedTime boolean true Show the session elapsed time on your profile. Counts from when VS Code opened, not from when the extension was last enabled; disabling and re-enabling does not reset the timer.
claudeSpinner.showLanguageIcon boolean true Use a per-language icon as the small overlay. Falls back to the Claude logo.
claudeSpinner.smartState boolean true Vary the status line when debugging, reviewing a diff, or focused on the terminal. Requires showLanguage (it varies that same line).
claudeSpinner.idleBehavior slow / pause / clear / none slow What happens when VS Code loses focus past the idle threshold.
claudeSpinner.idleThresholdMinutes number (1–60) 5 Minutes after the VS Code window loses focus before idle mode engages.
claudeSpinner.wordRarity boolean false Opt-in weighted pick: common (~70%), uncommon (~25%), rare (~5%).
claudeSpinner.timeBasedPools boolean false Opt-in bias by session length: warming-up, in-the-zone, deep-session word groups. Tier classification uses a monotonic clock that pauses during system sleep on macOS/Linux, so multi-hour sleeps may briefly desynchronize the displayed tier from Discord's wall-clock elapsed time until the session resumes ticking.

Smart state priority

When smartState is on, the status line follows this priority:

  1. Debug session active → Debugging in {language}
  2. Most recent interaction was in the terminal (and a terminal is open) → In the terminal
  3. Active tab is a diff editor → Reviewing in {language}
  4. Otherwise → Working in {language}

Your last interaction wins overlaps: working in the terminal while a diff tab is visually active shows In the terminal, not Reviewing. Toggle showWorkspace to append — {workspace} to rules 1–4 above. The whole line is gated on showLanguage; when no language is detected and no smart trigger is active, the state line is omitted. There is no standalone workspace-only line.

Idle behaviors

When VS Code loses focus for idleThresholdMinutes:

  • slow: the cycle interval quadruples (clamped to 120s)
  • pause: cycling stops, last presence stays visible
  • clear: cycling stops, presence cleared from Discord
  • none: no change, keep cycling normally

Re-focusing pushes a fresh presence immediately and restores the normal cycle.

Customizing the word list

Three independent knobs, simplest first:

  1. Add your own words: list them in customWords. By default they're merged into the rotation alongside the built-ins.
  2. Replace instead of merge: set customWordsMode to replace and only your customWords are used (the built-ins step aside). With no custom words it falls back to the built-ins, so the rotation is never empty.
  3. Edit the defaults themselves: run Edit Default Word List to open an editable copy of the built-in 187 in defaultWordList, prune or tweak it, then turn on editDefaultWords. Reset Default Word List clears your copy and turns editDefaultWords off, so rotation falls back to the built-ins. This is separate from customWords; the originals are never mutated.

Language icons

Dedicated icons for 43 languages and frameworks; anything else falls back to the Claude logo while keeping its name in the tooltip.

Full list

TypeScript, JavaScript, React (.tsx / .jsx), Vue, Svelte, Astro, Python, Rust, Go, Java, C, C++, C#, HTML, CSS, Ruby, PHP, Swift, Kotlin, Dart, Lua, Elixir, Haskell, Scala, Shell (+ bash, zsh, fish), SQL, JSON, YAML, Markdown, R, MATLAB, Julia, OCaml, F#, Clojure, Erlang, Perl, Groovy, PowerShell, Objective-C (+ Objective-C++), GraphQL, Docker, LaTeX.

Missing one you use? Open an issue and I'll add it.

Framework detection

With detectFramework on (the default), the status line appends the framework you're working in: Working in TypeScript · Next.js. It's read straight from your project's manifests (package.json, pyproject.toml, requirements.txt, Gemfile, pubspec.yaml). No guessing, no network call.

Detected frameworks:

  • JavaScript / TypeScript: Next.js, Nuxt, SvelteKit, Remix, Astro, Gatsby, Angular, NestJS, Vue, Svelte, SolidJS, Preact, React, Electron, Express
  • Python: Django, FastAPI, Flask
  • Ruby: Rails
  • Dart: Flutter

Two things keep it honest:

  • Most-specific wins. Within a JavaScript project the more specific framework is shown: a repo with both Next.js and React reads Next.js; SvelteKit beats Svelte, Nuxt beats Vue.
  • Gated by the active file's language. The framework shows only for files in its own language family, so a Python script in a Next.js repo still reads Working in Python. A polyglot monorepo surfaces the right framework per file.

Turn it off to keep the bare language line.

Repo button

Opt in with showRepoButton and your presence gains a button linking to the active workspace's git remote, labeled with its host (e.g. github.com). The URL is read from .git/config, normalized to a clean https:// link with any embedded credentials stripped.

It's off by default for privacy, and, like every Discord button, it's visible to other people viewing your profile, never to you. Use Preview Current Presence to see exactly what it looks like.

Note that the extension makes no network calls, so it can't tell public repos from private ones: the button appears for any workspace with a git remote, and for a private repo viewers still see the host and repo path (the link just won't open for them). Leave it off for projects you'd rather not advertise.

The Word List

All 187 words (click to expand)
Accomplishing       Actioning           Actualizing
Architecting        Baking              Beaming
Beboppin'           Befuddling          Billowing
Blanching           Bloviating          Boogieing
Boondoggling        Booping             Bootstrapping
Brewing             Bunning             Burrowing
Calculating         Canoodling          Caramelizing
Cascading           Catapulting         Cerebrating
Channeling          Channelling         Choreographing
Churning            Clauding            Coalescing
Cogitating          Combobulating       Composing
Computing           Concocting          Considering
Contemplating       Cooking             Crafting
Creating            Crunching           Crystallizing
Cultivating         Deciphering         Deliberating
Determining         Dilly-dallying      Discombobulating
Doing               Doodling            Drizzling
Ebbing              Effecting           Elucidating
Embellishing        Enchanting          Envisioning
Evaporating         Fermenting          Fiddle-faddling
Finagling           Flambéing           Flibbertigibbeting
Flowing             Flummoxing          Fluttering
Forging             Forming             Frolicking
Frosting            Gallivanting        Galloping
Garnishing          Generating          Gesticulating
Germinating         Gitifying           Grooving
Gusting             Harmonizing         Hashing
Hatching            Herding             Honking
Hullaballooing      Hyperspacing        Ideating
Imagining           Improvising         Incubating
Inferring           Infusing            Ionizing
Jitterbugging       Julienning          Kneading
Leavening           Levitating          Lollygagging
Manifesting         Marinating          Meandering
Metamorphosing      Misting             Moonwalking
Moseying            Mulling             Mustering
Musing              Nebulizing          Nesting
Newspapering        Noodling            Nucleating
Orbiting            Orchestrating       Osmosing
Perambulating       Percolating         Perusing
Philosophising      Photosynthesizing   Pollinating
Pondering           Pontificating       Pouncing
Precipitating       Prestidigitating    Processing
Proofing            Propagating         Puttering
Puzzling            Quantumizing        Razzle-dazzling
Razzmatazzing       Recombobulating     Reticulating
Roosting            Ruminating          Sautéing
Scampering          Schlepping          Scurrying
Seasoning           Shenaniganing       Shimmying
Simmering           Skedaddling         Sketching
Slithering          Smooshing           Sock-hopping
Spelunking          Spinning            Sprouting
Stewing             Sublimating         Swirling
Swooping            Symbioting          Synthesizing
Tempering           Thinking            Thundering
Tinkering           Tomfoolering        Topsy-turvying
Transfiguring       Transmuting         Twisting
Undulating          Unfurling           Unravelling
Vibing              Waddling            Wandering
Warping             Whatchamacalliting  Whirlpooling
Whirring            Whisking            Wibbling
Working             Wrangling           Zesting
Zigzagging

Requirements

  • Discord desktop app running on the same machine as VS Code
  • That's it

Privacy

  • No telemetry, ever
  • No network calls beyond the local Discord IPC socket
  • showWorkspace is off by default, so your folder name never leaves your machine unless you turn it on
  • showRepoButton is off by default, so your repo URL is only shown if you opt in (and it broadcasts the remote's host and path whether the repo is public or private)

Thanks

Thanks for installing! If you enjoy it, a star on GitHub goes a long way - it's honestly how I decide what to keep polishing. Bugs, feature requests, and new-language suggestions are all welcome in issues.

Credits

The spinner word list comes from Claude Code by Anthropic. Most language icons are from Devicon; a few data-format icons (JSON, YAML, SQL) come from the Material Icon Theme, both MIT-licensed. The Anthropic logomark is from Simple Icons (CC0), and the VS Code logo is from Devicon. The hand-rolled Discord IPC client was modeled on the protocol implementation in @xhayper/discord-rpc - no longer a dependency, but it lit the way.

Huge thanks to every maintainer of those projects.

License

MIT

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft