cursor:setup - Cursor Backend Setup

SkillAI & models

This skill lets your agent set up Cursor as the local default implementation backend for Claude Code Harness and confirm it is ready to use. Once added, your agent can configure Cursor on your machine and check its readiness whenever you ask. Changes stay limited to your local settings and only happen when you explicitly request them.

Available today. Use it from your connected AI after setup.

After adding it, tell your agent to run cursor:setup or to make Cursor your local default backend. It will apply the settings and confirm that Cursor is ready.

Then ask your AI: use the cursor:setup - Cursor Backend Setup skill

What your AI can do with it

  • Set Cursor as the local default backend for Claude Code Harness
  • Check whether Cursor is ready to run as your backend
  • Respond to cursor:setup when you want Cursor configured
  • Change only your local environment and user settings, and only when you explicitly ask

What this skill tells your AI

The instructions your AI receives, as published by chachamaru127/claude-code-harness in skills/cursor-setup/SKILL.md and read by ahel’s review.

Cursor backend の setup / verification 用 skill。配布 plugin の fallback は claude のままにし、現在の repo / user 環境だけ cursor default にする時に使う。

Quick Reference

cursor:setup --check
cursor:setup --user-default
cursor:setup --project-default
cursor:setup --unset

Rules

  • Do not change distribution defaults or plugin manifests to make Cursor the shipped fallback.
  • Use scripts/resolve-impl-backend.sh / scripts/set-impl-backend.sh; do not infer from HARNESS_IMPL_BACKEND alone.
  • Treat ~/.cursor/permissions.json, .cursorignore, and Claude sandbox allowlists as manual/user-owned setup surfaces unless the user explicitly asks to edit a local file.

Flow

First resolve the Harness helper root. Keep the current working directory as the target project so project-scoped env.local writes still land in the user's repo:

HARNESS_PLUGIN_ROOT="${HARNESS_PLUGIN_ROOT:-${CLAUDE_PLUGIN_ROOT:-}}"
if [ -z "$HARNESS_PLUGIN_ROOT" ] && [ -n "${CLAUDE_SKILL_DIR:-}" ]; then
  probe="$(cd "${CLAUDE_SKILL_DIR}" && pwd)"
  while [ "$probe" != "/" ] && [ ! -d "$probe/scripts" ]; do
    probe="$(cd "$probe/.." && pwd)"
  done
  [ -d "$probe/scripts" ] && HARNESS_PLUGIN_ROOT="$probe"
fi
if [ -z "$HARNESS_PLUGIN_ROOT" ]; then
  echo "ERROR: HARNESS_PLUGIN_ROOT is not set and could not be derived from CLAUDE_PLUGIN_ROOT or CLAUDE_SKILL_DIR" >&2
  exit 2
fi
  1. For --check, run:

    bash "${HARNESS_PLUGIN_ROOT}/scripts/setup-cursor.sh" --check
    bash "${HARNESS_PLUGIN_ROOT}/scripts/set-impl-backend.sh" --show
    bash "${HARNESS_PLUGIN_ROOT}/scripts/resolve-impl-backend.sh" --role worker
    CURSOR_AGENT_BIN="${CURSOR_AGENT_BIN:-}"
    if [ -z "$CURSOR_AGENT_BIN" ]; then
      # `agent`(公式の新表記)→ `cursor-agent`(legacy alias)の順に探す。
      # `agent` は汎用的な名前なので、symlink 解決後の実パスの「成分」に
      # cursor-agent が完全一致で現れる場合だけ採用する(部分文字列一致だと
      # /x/cursor-agent-not-really/agent のようなディレクトリ名で突破される)。
      for _c in agent cursor-agent; do
        _p="$(command -v "$_c" 2>/dev/null)" || continue
        [ -n "$_p" ] || continue
        _r="$(realpath "$_p" 2>/dev/null || readlink -f "$_p" 2>/dev/null || echo "$_p")"
        case "/$_r/" in */cursor-agent/*) CURSOR_AGENT_BIN="$_p"; break ;; esac
      done
      if [ -z "$CURSOR_AGENT_BIN" ] && [ -x "$HOME/.local/bin/cursor-agent" ]; then
        CURSOR_AGENT_BIN="$HOME/.local/bin/cursor-agent"
      fi
    fi
    if [ -z "$CURSOR_AGENT_BIN" ]; then
      echo "ERROR: cursor-agent not found in PATH or $HOME/.local/bin" >&2
      exit 3
    fi
    "$CURSOR_AGENT_BIN" --version
    
  2. For --user-default, run:

    bash "${HARNESS_PLUGIN_ROOT}/scripts/set-impl-backend.sh" --user cursor
    bash "${HARNESS_PLUGIN_ROOT}/scripts/set-impl-backend.sh" --show
    
  3. For --project-default, run:

    bash "${HARNESS_PLUGIN_ROOT}/scripts/set-impl-backend.sh" cursor
    bash "${HARNESS_PLUGIN_ROOT}/scripts/set-impl-backend.sh" --show
    
  4. For --unset, ask whether the target is user or project scope if not clear from the request, then run exactly one matching unset command:

    Project scope:

    bash "${HARNESS_PLUGIN_ROOT}/scripts/set-impl-backend.sh" --unset
    

    User scope:

    bash "${HARNESS_PLUGIN_ROOT}/scripts/set-impl-backend.sh" --unset --user
    

Output

Report three facts only:

  • resolved backend (claude / codex / cursor)
  • Cursor package readiness (setup-cursor.sh --check)
  • next manual step if Cursor is not ready

Signals

GitHub stars
3k
Forks
299
Last commit
Sep 2026
Advanced
Catalog kind
skill
Gateway key
cursor-setup
Source
github.com/chachamaru127/claude-code-harness