---
title: "Connect your editor"
description: "Use Cursor, Copilot, or Codex instead of Claude Code. One ralphy skill install wires the routing in."
---

The default path is Claude Code — clone the repo, run `claude`, and the agent reads `AGENTS.md` automatically. Nothing to wire. If you'd rather drive Ralphy from Cursor, Copilot, or Codex, run `ralphy skill install --agent <name>` once and the routing block lands in the right config file for that editor. The install is sentinel-bounded: existing content is preserved, only the Ralphy block between sentinels is touched on re-runs.

<Note>
**Skip this page if you're on Claude Code.** Opening the cloned repo with `claude` is enough — `AGENTS.md` at the repo root is loaded on every turn. Come back here only if you want to switch editors.
</Note>

## Install for your editor

<Tabs>
  <Tab title="Claude Code (default — no install needed)">
    No command to run. When you cloned `ugc-cli` and opened it with `claude`, Claude already loaded the repo's `AGENTS.md` as part of the project context — that file is the routing table. Run `claude` from the repo root and start chatting.

    If you also want global routing (so Claude routes Ralphy briefs from any directory):

    ```bash
    ralphy skill install --agent claude
    ```

    What gets written:

    - `~/.claude/skills/ralphy/` — copy of the skill bundle.
    - `~/.claude/CLAUDE.md` — sentinel-merged routing pointer that tells Claude to read `AGENTS.md` and use `ralphy` for every generation step.

    Verify by opening `~/.claude/CLAUDE.md` — look for the `<!-- ralphy:start v=1 -->` block near the bottom.
  </Tab>
  <Tab title="Cursor">
    ```bash
    ralphy skill install --agent cursor
    ```

    What gets written:

    - `~/.cursor/rules/ralphy-router.mdc` — the always-on routing rule (`alwaysApply: true`) so Cursor loads the routing table on every chat.
    - `~/.cursor/rules/ralphy-<playbook>.mdc` — one Agent-Requested rule per playbook (`intake`, `researcher`, `scenarist`, `art-director`, `editor`, `producer`, `core`). Cursor loads each when its description matches the user's request.

    Verify by opening any of those `.mdc` files and confirming the frontmatter is present.

    Project scope:

    ```bash
    ralphy skill install --agent cursor --scope project
    ```

    Writes under `./.cursor/rules/` in the repo.
  </Tab>
  <Tab title="Copilot">
    ```bash
    ralphy skill install --agent copilot
    ```

    What gets written:

    - `.github/copilot-instructions.md` — sentinel-merged routing block. Copilot loads this on every chat in the repo.
    - `.github/instructions/ralphy-<playbook>.instructions.md` — one file per playbook with `applyTo: '**'`, so Copilot loads playbook context on every file in the repo.

    Verify by opening `.github/copilot-instructions.md` — the Ralphy block sits between `<!-- ralphy:start v=1 -->` and `<!-- ralphy:end -->`. Copilot install is always project-scoped — the config lives in the repo.
  </Tab>
  <Tab title="Codex">
    ```bash
    ralphy skill install --agent codex
    ```

    What gets written:

    - `AGENTS.md` at the project root — sentinel-merged routing block. If `AGENTS.md` already exists (it does in a fresh `ugc-cli` checkout), the Ralphy section is merged into the existing file without touching other content.

    Verify by opening `AGENTS.md` in the repo root and finding the `<!-- ralphy:start v=1 -->` block. Codex is always project-scoped — `AGENTS.md` lives at the repo root.
  </Tab>
</Tabs>

<Note>
**Sentinel-bounded merges are safe to re-run.** Ralphy wraps the block it writes with `<!-- ralphy:start v=1 -->` and `<!-- ralphy:end -->`. Re-running `ralphy skill install` only replaces the content between the sentinels — anything you wrote above or below is preserved. Same for hand-edited `CLAUDE.md` / `AGENTS.md` files.
</Note>

## First-run wizard

If you run `ralphy skill install` without `--agent`, you get an interactive wizard that auto-detects which agents are installed on your machine, lets you multi-select targets, asks for scope (user vs project), and persists the choice to `~/.ralphy/config.json`. Re-running `ralphy skill install` later replays the persisted choice without prompting again. To redo the wizard:

```bash
ralphy skill install --reconfigure
```

## Confirm the agent reads it

Open a new chat in your editor and ask:

> "are you reading AGENTS.md? list the playbooks you'd route to."

A correctly-wired agent confirms it sees the routing table and lists: intake, researcher, scenarist, art-director, editor, producer, core. If it doesn't, the skill block isn't loading — reopen the editor (Cursor and Copilot pick up rule changes on reload) or re-run install with `--reconfigure`.

## Uninstall

Same flag, opposite verb:

```bash
ralphy skill uninstall --agent claude
ralphy skill uninstall --agent cursor
ralphy skill uninstall --agent copilot
ralphy skill uninstall --agent codex
```

Uninstall removes the skill bundle directory and strips the sentinel-bounded block from the config file. If stripping leaves the file empty, Ralphy deletes the file outright. Anything you wrote outside the sentinels stays.

To uninstall from every detected agent at once:

```bash
ralphy skill uninstall
```

## Symlink instead of copy

For maintainers who edit the skill bundle in-place and want the install to track changes:

```bash
ralphy skill install --agent claude --symlink
```

The skill directory becomes a symlink to `.agents/skills/ralphy/` in the repo. Edits to the bundle show up immediately in the agent's view.

## Next

With the editor wired up, head to [Your first video](/quickstart/first-video) and type your first brief in chat.

## Related

- [Your first video](/quickstart/first-video) — drive a render from chat
- [Skills &amp; playbooks reference](/cli/skills-playbooks) — every flag and the wizard internals
- [AGENTS.md routing](https://github.com/alecs5am/ralphy/blob/main/AGENTS.md) — the routing table the agent reads
- [Installer source](https://github.com/alecs5am/ralphy/blob/main/cli/lib/skill/installer.ts) — sentinel-merge implementation
