{"slug": "show-hn-slashi-one-popup-for-files-settings-git-and-scripts-in-vs-code", "title": "Show HN: Slashi – one / popup for files, settings, Git and scripts in VS Code", "summary": "Developer Meness released Slashi, a VS Code extension that puts roughly 170 VS Code commands, extension commands and settings, project files, Git branches and AI actions behind a single keyboard-first popup opened with Cmd / on macOS or Ctrl / on Windows and Linux. Slashi requires VS Code 1.90 or newer, is distributed through the VS Code Marketplace, Open VSX and a VSIX file, and routes AI requests to GitHub Copilot, Claude Code, Codex, Claude, OpenAI, Ollama or any OpenAI-compatible server while remaining usable without AI. The extension detects project manifests to offer commands such as /test, /dev, /prisma-migrate and /compose-up for npm, pnpm, yarn, bun, Next.js, Vite, Vitest, Jest, ESLint, Prettier, Prisma, Playwright, Docker, Make, Python, Rust, Go, .NET, Java and Terraform, and turns plain-English requests like \"/do make the font bigger and turn on word wrap\" into a plan of actions shown before it runs.", "body_md": "One keyboard-first popup for your files, settings, extensions, Git, terminal, project scripts and AI, plus the commands you build yourself.\n\n| Where | How | \n|---|---|\n| **VS Code Marketplace** | [Install from the Marketplace](https://marketplace.visualstudio.com/items?itemName=meness.slashi) , or search**Slashi** in the Extensions view | \n| **Open VSX** (VSCodium and other editors that use Open VSX) | [Install from Open VSX](https://open-vsx.org/extension/meness/slashi) | \n| **Command line** | `code --install-extension meness.slashi` | \n| **VSIX file** | Download `slashi-<version>.vsix` from the[latest release](https://github.com/meness/slashi/releases/latest) , then**Extensions** →`…` →**Install from VSIX…** | \n\nSlashi needs VS Code 1.90 or newer. On first launch, a short onboarding sets up the shortcut, your providers and AI.\n\nPress `Cmd /` on macOS or `Ctrl /` on Windows and Linux, then type.\n\n- **One list for everything.** About 170 VS Code commands with slash names, every extension command and setting, your files, open tabs, symbols, problems, Git branches and themes.\n- **Commands for your project.** Slashi reads your manifests and offers`/test` ,`/dev` ,`/prisma-migrate` or`/compose-up` for npm, pnpm, yarn, bun, Next.js, Vite, Vitest, Jest, ESLint, Prettier, Prisma, Playwright, Docker, Make, Python, Rust, Go, .NET, Java, Terraform and more.\n- **Files from the keyboard.**`/new` ,`/mkdir` ,`/rename` ,`/move` ,`/dup` ,`/delete` (to the trash), copy paths, reveal.\n- **AI where you work.**`/ask` ,`/explain` ,`/fix` ,`/edit` ,`/tests` ,`/review` and`/commit-msg` , with GitHub Copilot, Claude Code, Codex, Claude, OpenAI, Ollama or any OpenAI-compatible server. Slashi works fine without AI too.\n- **Plain English.**`/do make the font bigger and turn on word wrap` becomes a plan of real actions, which you see before it runs.\n- **Your own commands.** Build them with a wizard, share them with your team in the repo, or install action packs from the marketplace.\n- **Every theme.** Light, dark, high contrast and custom themes, with[Phosphor](https://phosphoricons.com) icons.\n\n| Do this | Keys | \n|---|---|\n| Open Slashi | `Cmd /` (macOS) ·`Ctrl /` (Windows/Linux) | \n| Move | `↑``↓` (or`Ctrl N` /`Ctrl P` ) | \n| Run | `Enter` | \n| Complete a command, then type its arguments | `Tab` , e.g.`/run` →`Tab` →`npm test` | \n| Run the last command again, with the same arguments | `/again` | \n| Actions menu (rename, delete, copy path, hide, bind a key…) | `Shift Enter` or`→` | \n| First action (e.g. open a file to the side) | `Alt Enter` | \n| Hand what you typed to AI | `Cmd Enter` /`Ctrl Enter` | \n| Clear, then close | `Esc` | \n| Do with AI from anywhere | `Ctrl Cmd /` (macOS) ·`Ctrl Shift Alt /` | \n\nType `/` plus a **scope** and a space to search one area only:\n\n`/f` files · `/p` project · `/npm` scripts · `/set` settings · `/ext` extensions · `/git` · `/term` · `/ai` · `/do` · `/tx` text · `/tab` open tabs · `/@` symbols · `/err` problems · `/theme` · `/web` · `/my` your commands · `/market`\n\nIn Markdown, plain text and the Git commit box, typing `/` at the start of a line suggests slash commands inline.\n\n| <sub>Files and folders, with `Shift Enter` for actions</sub> | <sub>Your project’s scripts and tools, detected automatically</sub> | \n| <sub>Toggle or edit any setting in place</sub> | <sub>Streaming AI answers with Apply, Insert and Copy</sub> | \n\nEverything in the list comes from a **provider**. You can turn off a whole provider, or single **features** inside one: for example, keep Marketplace search but hide installed extensions. Use the **Studio** (`/studio`), the picker (`/providers`) or settings.\n\n| Provider | Scope | Features (each can be turned off) | \n|---|---|---|\n| **Files & Folders** | `/f` | search · create ( `/new` ,`/mkdir` ) · rename & move · duplicate · delete (to trash) · copy paths · reveal | \n| **Navigate** | `/go``/tab``/@``/err` | open tabs · symbols in file · problems · go to line ( `/line 42:7` ) | \n| **Project** | `/p``/npm` | scripts (package.json, Makefile, justfile, deno, composer; package.json scripts take extra arguments, e.g. `/test --watch` ) · package manager · frameworks & tools (JS, Python, Go, Rust, .NET, Java, PHP, Ruby, Elixir, Flutter/Dart with FVM and Melos, Firebase, Supabase, Docker…) | \n| **Commands** | `/cmd` | about 170 VS Code commands with slash names · every extension command | \n| **Settings** | `/set` | every VS Code setting · every extension setting. Booleans toggle, enums pick, numbers and strings edit; set any value for the workspace or the current language | \n| **Extensions** | `/ext` | installed extensions · Marketplace search & install · updates & uninstall | \n| **AI** | `/ai` | ask/explain/summarize · fix/edit/doc/tests/review/convert · review your Git changes · commit messages · regex & shell generators · models | \n| **Natural language** | `/do` | a sentence becomes a checked plan of actions | \n| **Text tools** | `/tx` | case conversion · lines · encode & hash · JSON · inserts (UUID, dates, lorem) · stats | \n| **Terminal & Tasks** | `/term` | `/run <cmd>` · VS Code tasks · terminal management | \n| **Git** | `/git` | commit/push/pull/sync/stage/undo/diff… · branch switching · stash | \n| **Themes** | `/theme` | color themes · icon themes · light/dark toggle | \n| **Web** | `/web` | Google, Stack Overflow, GitHub, MDN, npm, PyPI, crates.io, DevDocs, Can I Use, YouTube, plus your own engines | \n| **My Commands** | `/my` | your commands · team commands · installed packs · commands from other extensions | \n| **Marketplace** | `/market` | browse registries · install from URL or file | \n\nOther extensions can add providers of their own (for example `/jira`). They show up in Studio with the extension's name and turn off the same way.\n\nWith `slashi.ai.provider` set to `auto` (the default), Slashi uses the first of these it finds:\n\n1. **VS Code language models** : GitHub Copilot, or any extension that provides chat models. Nothing to set up.\n2. **Claude** :`/ai-key` → Anthropic. Uses the official SDK; the default model is`claude-opus-5-5` , and`slashi.ai.anthropicEffort` sets the effort level.\n3. **OpenAI** :`/ai-key` → OpenAI.\n4. **Claude Code or Codex CLI** : no key needed. Slashi reuses your sign-in from the Claude Code extension (or`claude` on your PATH) or the`codex` CLI.\n5. **Ollama** : local and free, found at`http://localhost:11434` .\n6. **Any OpenAI-compatible server** (LM Studio, Groq, OpenRouter, Together, vLLM): set`slashi.ai.provider` to`openaiCompatible` and set`slashi.ai.baseUrl` .\n\nSwitch models with `/models`, and test the connection in **Studio → AI & Models**. Standing instructions go in `slashi.ai.customInstructions`.\n\n| Command | What it does | \n|---|---|\n| `/ask <question>` | Answers with your selection (or the current file) as context | \n| `/explain` ,`/summarize` ,`/review` | Explains, summarizes or reviews the selection or file | \n| `/fix [hint]` ,`/edit <instruction>` ,`/doc` | Rewrites code. **Apply** (`Cmd/Ctrl Enter` ) replaces the original, and`Cmd/Ctrl Z` undoes it. Code too large to send in full must be selected in parts, so Apply never cuts a file short | \n| `/tests` ,`/convert <target>` ,`/name` | Writes tests, translates code, suggests names | \n| `/review-changes` | Reviews your staged (or unstaged) Git changes before you commit | \n| `/commit-msg` | Writes a Conventional Commits message from staged (or unstaged) changes into the Source Control box | \n| `/regex <description>` | Writes a regex and inserts it | \n| `/shell <description>` | Writes a shell command, which you review before it runs | \n| `/do <task>` | Sends your request and a shortlist of matching actions to the model, drops any step that names an unknown action or setting, then shows the plan and runs it when you confirm | \n\n`/new-command` asks for a name and steps, then saves the command to your settings or to the team file. No JSON needed.\n\nAdd commands to `slashi.customCommands` (user settings), or to **`.vscode/slashi.json`** to share them with everyone on the repo. The bundled [JSON schema](https://github.com/meness/slashi/blob/main/schemas/slashi.schema.json) gives you autocomplete and validation.\n\n```\n// .vscode/slashi.json\n{\n  \"$schema\": \"https://raw.githubusercontent.com/meness/slashi/main/schemas/slashi.schema.json\",\n  \"commands\": [\n    {\n      \"name\": \"ship\",\n      \"title\": \"Ship It\",\n      \"icon\": \"rocket-launch\",\n      \"args\": \"commit message\",\n      \"steps\": [\n        { \"command\": \"workbench.action.files.saveAll\" },\n        { \"slash\": \"/test\" },\n        { \"terminal\": \"git add -A && git commit -m ${q:args} && git push\" },\n        { \"notify\": \"Shipped 🚀\" }\n      ]\n    }\n  ]\n}\n```\n\n| Step | Example | \n|---|---|\n| `command` | `{ \"command\": \"editor.action.formatDocument\" }` (optional`args` ) | \n| `slash` | `{ \"slash\": \"/run npm test\" }` | \n| `terminal` | `{ \"terminal\": \"npm run build\", \"cwd\": \"packages/web\" }` | \n| `setting` | `{ \"setting\": \"editor.fontSize\", \"value\": 18, \"target\": \"user\" }` | \n| `insert` | `{ \"insert\": \"// TODO(${env:USER}): \" }` | \n| `open` | `{ \"open\": \"https://github.com/${input:repo}\" }` or a workspace path | \n| `ai` | `{ \"ai\": \"Translate to German: ${selection}\", \"output\": \"replace\" }` (`panel` ·`replace` ·`insert` ) | \n| `notify` | `{ \"notify\": \"Done\" }` | \n| `input` /`pick` | `{ \"input\": \"Ticket?\", \"var\": \"ticket\" }` →`${input:ticket}` ;`{ \"pick\": [\"patch\",\"minor\"], \"var\": \"bump\" }` | \n| `wait` | `{ \"wait\": 500 }` | \n\n**Variables:** `${args}`, `${selection}`, `${file}`, `${fileBasename}`, `${fileBasenameNoExtension}`, `${fileDirname}`, `${fileExtname}`, `${relativeFile}`, `${workspaceFolder}`, `${lineNumber}`, `${language}`, `${date}`, `${time}`, `${datetime}`, `${uuid}`, `${clipboard}`, `${env:NAME}`, `${config:setting.key}`, `${input:var}`. Add a default with `${args:3000}`. Prefix with `q:` for shell-safe quoting, e.g. `${q:selection}`.\n\n**Team files and packs ask first.** When a team or pack command would run terminal, VS Code or slash commands, change settings or open links, Slashi shows those steps and asks. **Always Allow** skips the question until the steps change. In them, `${env:NAME}`, `${config:…}` and `${clipboard}` expand only in `insert` and `notify` steps, so secrets stay in the editor. In [untrusted workspaces](https://code.visualstudio.com/docs/editor/workspace-trust), workspace-defined commands are ignored.\n\n`/market` lists **action packs**: Git Power Moves, AI Writing Tools, Focus & Present, Web Dev Toolkit, Handy Inserts and more. Packs built by Slashi carry a verified seal, and every download is checked against its registry listing before it installs. Before you install a pack, Slashi shows every step in it and marks the ones that can run commands. `/export-pack` turns your commands into a pack.\n\n| Action | macOS | Windows / Linux | \n|---|---|---|\n| Open Slashi | `Cmd /` | `Ctrl /` | \n| Do with AI | `Ctrl Cmd /` | `Ctrl Shift Alt /` | \n| Toggle line comment (moved by Slashi) | `Cmd Alt /` | `Ctrl Alt /` | \n\nTo keep VS Code’s default comment shortcut, turn off `slashi.shortcut.useSlashKey`. Slashi then opens with `Cmd Shift ;` (macOS) or `Ctrl Shift /`. You can rebind everything in **Keyboard Shortcuts** (`/shortcuts`), separately per OS, and give any slash command its own key:\n\n```\n// keybindings.json\n{ \"key\": \"cmd+alt+u\", \"command\": \"slashi.run\",  \"args\": \"/upper\" },\n{ \"key\": \"cmd+alt+g\", \"command\": \"slashi.open\", \"args\": \"/git \" },\n{ \"key\": \"cmd+alt+t\", \"command\": \"slashi.run\",  \"args\": \"/run npm test\" }\n```\n\nScoped entry points such as `slashi.openFiles`, `slashi.openGit`, `slashi.openProject`, `slashi.openAI` and `slashi.doWithAI` can be bound too. Every result’s actions menu also has **Assign a keyboard shortcut…**.\n\n| Setting | Default |  | \n|---|---|---|\n| `slashi.popup.style` | `spotlight` | `spotlight` (custom design) or`native` (VS Code Quick Pick, follows every accessibility setting) | \n| `slashi.shortcut.useSlashKey` | `true` | `Cmd/Ctrl /` opens Slashi; the comment toggle moves to`Cmd/Ctrl Alt /` | \n| `slashi.providers.*` | `true` | Turn each provider on or off | \n| `slashi.disabledProviders` | `[]` | Providers from other extensions that are turned off | \n| `slashi.disabledFeatures` | `[]` | Turn off single features, e.g. `extensions.installed` | \n| `slashi.hiddenCommands` | `[]` | Hide single results (supports a trailing `*` ) | \n| `slashi.inlineTrigger.languages` | markdown, plaintext, scminput | Where `/` at line start suggests commands (`*` = everywhere) | \n| `slashi.ai.provider` /`model` /`baseUrl` | `auto` | AI backend | \n| `slashi.ai.confirmBeforeRun` | `true` | Confirm Do-with-AI plans. Steps that can reach a shell always ask | \n| `slashi.ai.customInstructions` | `\"\"` | Extra instructions for every AI request | \n| `slashi.customCommands` | `[]` | Your commands | \n| `slashi.marketplace.registries` | this repo | Registry index URLs (HTTPS) | \n| `slashi.files.maxIndexed` | `20000` | File index size | \n\nThe AI backend, model, URL, effort, custom instructions, plan confirmation, web search engines and registry settings are machine-scoped: only your user settings can change them, never a repository’s workspace settings. Search **@ext:meness.slashi** in Settings for the rest.\n\n- **No telemetry.** Slashi collects nothing.\n- **API keys** live only in VS Code Secret Storage. A repository can’t change your AI backend, its URL, your instructions or your confirmation setting, so it can’t send your key or code to another server.\n- **AI requests** go only to the backend you chose. Do-with-AI plans can use only real commands and settings. With`slashi.ai.confirmBeforeRun` off, a plan still asks before any step that can reach a shell: terminal commands, project scripts, custom commands, and settings that change what runs or what is trusted (Slashi, terminal, task, tool path, workspace trust, proxy and agent auto-approve settings).\n- **Action packs** are fetched only over HTTPS, previewed step by step before installing, and checked against their registry listing. Only packs built by Slashi carry the verified seal.\n- **Webviews** use a strict nonce-based Content Security Policy and load only bundled files. Raw HTML in model output is escaped, never rendered.\n- **Untrusted workspaces:** workspace-defined commands are ignored. Team commands (in`.vscode/slashi.json` or the workspace's`slashi.customCommands` ) and packs ask before running anything that can reach a shell.\n\nSee [SECURITY.md](https://github.com/meness/slashi/blob/main/SECURITY.md) to report a vulnerability.\n\nThe popup ranks local results itself, so typing doesn't wait on the extension host. Only big catalogues, such as workspace files, are ranked in the host. The index is lowercased up front, a subsequence check skips non-matches early, and highlights are computed only for visible rows. esbuild bundles the extension, and the Anthropic SDK loads only when you first use Claude.\n\n`npm run bench` on an Apple M2 Pro:\n\n| Items | Average rank | p95 | \n|---|---|---|\n| 1,000 | 0.3 ms | 0.5 ms | \n| 5,000 | 1.0 ms | 1.9 ms | \n| 20,000 | 4.2 ms | 7.7 ms | \n\nFor extension authors, teams and pack publishers. The full guide is [docs/BUILDING_ACTIONS.md](https://github.com/meness/slashi/blob/main/docs/BUILDING_ACTIONS.md).\n\n- **Publish a pack:** add it to[`marketplace/packs`](https://github.com/meness/slashi/blob/main/marketplace/packs) in a pull request, or host a private registry for your team and add it to`slashi.marketplace.registries` .\n- **Add commands from your extension** with`registerCommand` :\n\n``` js\nconst slashi = await vscode.extensions.getExtension('meness.slashi')?.activate();\nslashi?.registerCommand({\n  extensionId: 'acme.deploy',\n  name: 'deploy',\n  title: 'Deploy to Staging',\n  icon: 'rocket-launch',\n  args: 'service',\n  run: (service) => deploy(service),\n});\n```\n\n- **Add a whole provider** with`registerProvider` (Slashi 0.5.0+): your own results under your own scope, such as`/jira` listing your tickets. See[Providers](https://github.com/meness/slashi/blob/main/docs/BUILDING_ACTIONS.md#providers) .\n\nBug reports, ideas, action packs and pull requests are welcome. You need **Node 20+** and **VS Code 1.90+**:\n\n```\ngit clone https://github.com/meness/slashi && cd slashi\nnpm ci\nnpm run check       # what CI runs: typecheck, lint, format, unit and smoke tests, pack validation\n```\n\nPress **F5** (*Run Slashi*) to start an Extension Development Host with your build. [CONTRIBUTING.md](https://github.com/meness/slashi/blob/main/CONTRIBUTING.md) has the project layout, every script, the testing guide and how releases work.\n\nSlashi is free and open source. If it saves you time, you can support its development with a crypto donation (ETH, Polygon, BTC or SOL). The addresses are in [DONATE.md](https://github.com/meness/slashi/blob/main/DONATE.md). Stars, reviews and bug reports help a lot too.\n\nInside VS Code, **Studio → Help & Support** (`/help-center`) collects the docs, troubleshooting, feedback links and `/support`. When you report a bug, run `/diagnostics` and paste the result. It copies versions and setup only, never keys, file names or code.\n\n[MIT](https://github.com/meness/slashi/blob/main/LICENSE) © meness and Slashi contributors. Icons by [Phosphor Icons](https://phosphoricons.com) (MIT). See [THIRD_PARTY_NOTICES.md](https://github.com/meness/slashi/blob/main/THIRD_PARTY_NOTICES.md).", "url": "https://wpnews.pro/news/show-hn-slashi-one-popup-for-files-settings-git-and-scripts-in-vs-code", "canonical_source": "https://github.com/meness/slashi", "published_at": "2026-10-21 14:17:31+00:00", "updated_at": "2026-10-21 14:43:25.156329+00:00", "lang": "en", "topics": ["developer-tools", "ai-tools", "ai-products"], "entities": ["Slashi", "Meness", "Visual Studio Code", "GitHub Copilot", "Claude Code", "OpenAI", "Ollama", "Open VSX"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/show-hn-slashi-one-popup-for-files-settings-git-and-scripts-in-vs-code", "markdown": "https://wpnews.pro/news/show-hn-slashi-one-popup-for-files-settings-git-and-scripts-in-vs-code.md", "text": "https://wpnews.pro/news/show-hn-slashi-one-popup-for-files-settings-git-and-scripts-in-vs-code.txt", "jsonld": "https://wpnews.pro/news/show-hn-slashi-one-popup-for-files-settings-git-and-scripts-in-vs-code.jsonld"}}