> ## Documentation Index
> Fetch the complete documentation index at: https://docs.randomlabs.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# The Basics

> A simple guide to working with Slate

Understanding how Slate works will help you use it more effectively.

To get the most out of Slate, you'll need to set up your environment and know how to prompt it well:

-> [Workspace Setup](/en/using-slate/workspace_setup)

-> [Prompting Guide](/en/using-slate/prompting_guide)

## Frequently Used Features

### Switching Sessions

Use `/sessions` to switch between existing sessions:

<Card title="Session Selection Process">
  1. Type `/sessions` and press **Enter**
  2. Use **↑/↓** arrows to navigate available sessions
</Card>

### Cancellation

<Card title="Esc">
  **Cancels** the current *agent* step, current input or closes dialogs.
</Card>

<Card title="Ctrl+C">
  **Hard interrupt** - Stops the cli.
</Card>

### Message Queue

When Slate is busy and you submit a message, behavior depends on **queue mode**:

* In **queue mode** (default), your message is queued and sent after the current run completes.
* In **interrupt mode**, your message interrupts the current run and is sent next.

<Card title="Follow-up messages">
  Queued messages appear **above the input box** as *"follow-up message(s)"* with a count badge **\[n]** showing how many are waiting. Messages drain automatically (with a short 50ms delay) once the session goes idle.
</Card>

<CardGroup cols={2}>
  <Card title="⌥ + ↑  (Alt+Up)" icon="arrow-up">
    Pops the **latest queued message** back into the composer so you can edit it before it's sent.
  </Card>

  <Card title="Ctrl+X then Q" icon="pen-to-square">
    Opens all queued messages as `---`-separated markdown blocks in your external editor so you can review and reorder them. Use `/queue-edit` for the same behavior.
  </Card>

  <Card title="Esc on empty input" icon="circle-xmark">
    While the agent is busy, pressing **Esc** on an empty input **aborts the session** and restores all queued messages into the composer.
  </Card>
</CardGroup>

Use `/queue-mode` to toggle between queue mode and interrupt mode while the agent is busy.

You can also pre-load a queue from the command line with `--queue` (`-q`), passing a markdown file whose messages are separated by a line containing `---`:

```bash theme={null}
slate --queue plan.md
```

<Info>
  The queue persists across navigation — queued messages are stored in draft state and won't be lost if you switch sessions and come back.
</Info>

### Multi-line Messages

Use **Ctrl+L** to focus the input box from elsewhere in the UI.

Use **Ctrl+Enter** or **Option/Alt+Enter** to insert newlines:

```text theme={null}
> Please help me with:
  1. Parsing this JSON file    [Ctrl+Enter]
  2. Validating the schema     [Ctrl+Enter]
  3. Handling errors properly   [Enter to send]
```

Use **Ctrl+A** or **Ctrl+E** to jump to the beginning or end of the input context.

### Shell Command Input

Execute shell commands directly with `!`:

<CodeGroup>
  ```bash Quick Commands theme={null}
  !ls              # List files
  !pwd             # Show directory
  !git status      # Check git status
  ```

  ```bash Development theme={null}
  !npm test        # Run tests
  !npm run build   # Build project
  !python app.py   # Run Python script
  ```
</CodeGroup>

This will send the command output to Slate directly.

### Context Management

<AccordionGroup>
  <Accordion title="Adding Context">
    Use `@filename` references:

    ```text theme={null}
    > Please review @src/main.ts and suggest improvements
    ```
  </Accordion>

  <Accordion title="Workspace Directories">
    Add directories to expand agent's context:

    ```bash theme={null}
    /workspace add ./src
    /workspace add ./tests
    /workspace list
    ```
  </Accordion>

  <Accordion title="Clearing Context">
    Start fresh when switching tasks:

    ```bash theme={null}
    /workspace clear    # Clear workspace directories
    ```
  </Accordion>
</AccordionGroup>

### Long Prompts

Press **Ctrl+X then E** to open your external editor for composing complex prompts:

<Steps>
  <Step title="Press Ctrl+X then E">
    Opens your system's default editor
  </Step>

  <Step title="Write your prompt">
    Compose your detailed message in the editor
  </Step>

  <Step title="Save and close">
    The content automatically returns to Slate
  </Step>
</Steps>

<Danger>
  This will not work if your permissions do not allow access to `tmp` or `var` as this command uses a temp file for your default text editor
</Danger>

<CardGroup cols={2}>
  <Card title="Hotkey reference" icon="code" href="/en/using-slate/hotkey_reference">
    Explore Slate's complete set of commands.
  </Card>
</CardGroup>
