Treat slash commands as a managed workflow surface, not prompt clutter.
Polystro gives slash commands structure. You can keep reusable prompt files in the app, import them from markdown, choose whether a command should stay inside Polystro or pass through to the active CLI, and route different command types to different models.
Command Surface
Polystro distinguishes between two command styles. /foo runs a Polystro-managed command. //foo forwards the same command text directly to the active CLI.
That split matters because some workflows should stay inside the desktop shell with structured inputs and managed routing, while others should remain raw CLI-native commands.
Custom Commands
Custom commands are markdown-backed prompt files stored in a commands folder. The manager lets you create commands from scratch, import one or many markdown files, open the commands folder, refresh commands from source, open a command in your editor, and delete commands you no longer need.
Create in-app
Draft a new command directly in the settings surface when you want a reusable prompt without leaving Polystro.
Import from markdown
Bring in one or more existing prompt files and review name conflicts before they become slash commands.
Use variables
Custom commands can interpolate variables so one command file can drive many similar workflows.
Refresh from source
If you edit a command file outside the app, refresh it from source instead of recreating it manually.

Model Routing Matrix
Model routing lets you override which model a command uses per CLI. The matrix includes a default row plus per-command rows, so you can keep most commands on the CLI default while routing heavier or cheaper command types somewhere else.
This is useful when the same slash command should behave differently depending on whether it runs on Claude, Codex, Cursor, Gemini, or OpenCode.
Routing Policies
For more advanced setups, the routing policy editor supports ordered rules with explicit priority, exact or wildcard or regex matching, provider and model targets, a fallback route, conflict detection, pattern testing, full route resolution testing, and a recent decision log.
When to use policies
Create a Custom Slash Command
Open Slash Commands in Settings
Start in the commands manager so the new command lives in the same managed folder as the rest of your reusable prompts.
Choose create or import
Create a fresh command in-app or import one or more markdown files if you already keep prompt files elsewhere.
Name it for the slash picker
Use a short lowercase name so it reads cleanly as /your-command inside the composer.
Test it from the active workstream
Run the command in a real session, then refresh from source later if you edit the backing markdown file outside the app.
Set Up a Routing Policy
Start with the model routing matrix
If only one or two commands need a different model, prefer command-level overrides before introducing a rule system.
Create a named rule
When a broader pattern exists, add a routing rule with explicit priority and the right pattern type.
Test the pattern and resolution
Use pattern testing and route resolution testing before assuming the rule will match the names you expect.
Review the decision log
Once the rule is active, inspect recent routing decisions to confirm real commands are landing on the intended provider and model.
Which Surface to Use
Use custom commands
When the main need is reusable prompt scaffolding, shared variables, and a clean slash-command picker.
Use the model routing matrix
When a small set of commands should use different models for one CLI without introducing global policy rules.
Use routing policies
When you need ordered rules, explicit fallback behavior, testing, and a decision log across many command types.
Use raw CLI passthrough
When the active CLI should own the command entirely and Polystro should stay out of the way.
Compare execution surfaces
See where commands fit relative to shell scripts and scheduled automations.
See the wider settings model
Learn where command routing sits relative to CLIs, MCP, notifications, keybindings, and editor settings.
Debug by symptom
Use the troubleshooting index if a command is missing, stale, or handled by the wrong model and you are not sure which layer broke.