Sends data logs, variables, and debugging info to the Ray desktop application via HTTP.

Install

mkdir -p .claude/skills/ray-skill && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/7884" && unzip -o skill.zip -d .claude/skills/ray-skill && rm skill.zip

Installs to .claude/skills/ray-skill

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Use when user says "send to Ray," "show in Ray," "debug in Ray," "log to Ray," "display in Ray," or wants to visualize data, debug output, or show diagrams in the Ray desktop application.
187 chars✓ has a “when” trigger
Beginner

Key capabilities

  • Transmit logs to local Ray server
  • Format variable debugging output
  • Render custom HTML/text payloads
  • Attach origin file metadata to logs

How it works

It generates a JSON payload containing the variable data and call-site metadata, then transmits it via HTTP POST to the local Ray listener.

Inputs & outputs

You give it
Variable or content object to be debugged
You get back
Data payload sent to Ray HTTP server

When to use ray-skill

  • Log variables to Ray
  • Visualize debugging data from PHP
  • Send error logs to Ray dashboard
  • Track execution flow in real-time

About this skill

Ray Skill

Overview

Ray is Spatie's desktop debugging application for developers. Send data directly to Ray by making HTTP requests to its local server. This is what the ray() PHP function does under the hood.

Connection Details

SettingDefaultEnvironment Variable
HostlocalhostRAY_HOST
Port23517RAY_PORT
URLhttp://localhost:23517/-

Request Format

Method: POST Content-Type: application/json User-Agent: Ray 1.0

Basic Request Structure

{
  "uuid": "unique-identifier-for-this-ray-instance",
  "payloads": [
    {
      "type": "log",
      "content": { },
      "origin": {
        "file": "/path/to/file.php",
        "line_number": 42,
        "hostname": "my-machine"
      }
    }
  ],
  "meta": {
    "ray_package_version": "1.0.0"
  }
}

Fields

FieldTypeDescription
uuidstringUnique identifier for this Ray instance. Reuse the same UUID to update an existing entry.
payloadsarrayArray of payload objects to send
metaobjectOptional metadata (ray_package_version, project_name, php_version)

Origin Object

Every payload includes origin information:

{
  "file": "/Users/dev/project/app/Controller.php",
  "line_number": 42,
  "hostname": "dev-machine"
}

Payload Types

Log (Send Values)

{
  "type": "log",
  "content": {
    "values": ["Hello World", 42, {"key": "value"}]
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Custom (HTML/Text Content)

{
  "type": "custom",
  "content": {
    "content": "<h1>HTML Content</h1><p>With formatting</p>",
    "label": "My Label"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Table

{
  "type": "table",
  "content": {
    "values": {"name": "John", "email": "[email protected]", "age": 30},
    "label": "User Data"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Color

Set the color of the preceding log entry:

{
  "type": "color",
  "content": {
    "color": "green"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Available colors: green, orange, red, purple, blue, gray

Screen Color

Set the background color of the screen:

{
  "type": "screen_color",
  "content": {
    "color": "green"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Label

Add a label to the entry:

{
  "type": "label",
  "content": {
    "label": "Important"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Size

Set the size of the entry:

{
  "type": "size",
  "content": {
    "size": "lg"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Available sizes: sm, lg

Notify (Desktop Notification)

{
  "type": "notify",
  "content": {
    "value": "Task completed!"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

New Screen

{
  "type": "new_screen",
  "content": {
    "name": "Debug Session"
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

Measure (Timing)

{
  "type": "measure",
  "content": {
    "name": "my-timer",
    "is_new_timer": true,
    "total_time": 0,
    "time_since_last_call": 0,
    "max_memory_usage_during_total_time": 0,
    "max_memory_usage_since_last_call": 0
  },
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}

For subsequent measurements, set is_new_timer: false and provide actual timing values.

Simple Payloads (No Content)

These payloads only need a type and empty content:

{
  "type": "separator",
  "content": {},
  "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
}
TypePurpose
separatorAdd visual divider
clear_allClear all entries
hideHide this entry
removeRemove this entry
confettiShow confetti animation
show_appBring Ray to foreground
hide_appHide Ray window

Combining Multiple Payloads

Send multiple payloads in one request. Use the same uuid to apply modifiers (color, label, size) to a log entry:

{
  "uuid": "abc-123",
  "payloads": [
    {
      "type": "log",
      "content": { "values": ["Important message"] },
      "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
    },
    {
      "type": "color",
      "content": { "color": "red" },
      "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
    },
    {
      "type": "label",
      "content": { "label": "ERROR" },
      "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
    },
    {
      "type": "size",
      "content": { "size": "lg" },
      "origin": { "file": "test.php", "line_number": 1, "hostname": "localhost" }
    }
  ],
  "meta": {}
}

Example: Complete Request

Send a green, labeled log message:

curl -X POST http://localhost:23517/ \
  -H "Content-Type: application/json" \
  -H "User-Agent: Ray 1.0" \
  -d '{
    "uuid": "my-unique-id-123",
    "payloads": [
      {
        "type": "log",
        "content": {
          "values": ["User logged in", {"user_id": 42, "name": "John"}]
        },
        "origin": {
          "file": "/app/AuthController.php",
          "line_number": 55,
          "hostname": "dev-server"
        }
      },
      {
        "type": "color",
        "content": { "color": "green" },
        "origin": { "file": "/app/AuthController.php", "line_number": 55, "hostname": "dev-server" }
      },
      {
        "type": "label",
        "content": { "label": "Auth" },
        "origin": { "file": "/app/AuthController.php", "line_number": 55, "hostname": "dev-server" }
      }
    ],
    "meta": {
      "project_name": "my-app"
    }
  }'

Availability Check

Before sending data, you can check if Ray is running:

GET http://localhost:23517/_availability_check

Ray responds with HTTP 404 when available (the endpoint doesn't exist, but the server is running).

Payload Type Reference

TypeContent FieldsPurpose
logvalues (array)Send values to Ray
customcontent, labelHTML or text content
tablevalues, labelDisplay as table
colorcolorSet entry color
screen_colorcolorSet screen background
labellabelAdd label to entry
sizesizeSet entry size (sm/lg)
notifyvalueDesktop notification
new_screennameCreate new screen
measurename, is_new_timer, timing fieldsPerformance timing
separator(empty)Visual divider
clear_all(empty)Clear all entries
hide(empty)Hide entry
remove(empty)Remove entry
confetti(empty)Confetti animation
show_app(empty)Show Ray window
hide_app(empty)Hide Ray window

When not to use it

  • Production debugging (security risk)
  • Environments where the Ray desktop app is not installed

Prerequisites

Ray desktop applicationHTTP transport capability

Limitations

  • Depends on local network access to port 23517
  • Requires the Ray app to be running

How it compares

Instead of raw console logs, it sends structured data to a specialized UI for visual navigation of variables.

Compared to similar skills

ray-skill side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
ray-skill (this skill)16moReviewBeginner
debug-cross-service-auth04moNo flagsIntermediate
staticphp-build-troubleshooting01moReviewIntermediate
debugging-output-and-previewing-html-using-ray26moReviewBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry