Skyelight

ai.skyelight由 skyelight.ai 发布官方发布者v1.1.2更新于 Nov 7, 2026

Give your AI assistant feedback pinned to the exact element, with its code, so it can fix and reply.

已验证Streamable HTTP可网页运行效率与工作流知识与记忆开发者工具

概览

AI 生成的概览

Skyelight 让编码助手读取固定在运行中应用具体元素上的反馈,并回复、指派、解决或修复这些问题。

可以做什么
  • 浏览工作区、项目和反馈条目,支持搜索与重复项检查
  • 读取单条反馈的完整讨论、页面、元素锚点、截图以及源码文件与行号
  • 在讨论中回复、新建条目、修改状态、指派人员并合并重复项
  • 查看项目自上次以来的变化、项目回顾与引用的决策记录,并保存团队规则
  • 发布代码或已部署应用地址以供评审,并获得可分享的反馈链接
适用场景
适用于团队在应用内收集反馈、并希望由编码助手处理这批待办的情况:查看未完成事项、确认问题是否已被报告、在修改文件前查看相关反馈,并把结果回复到反馈者能看到的地方。
运行要求
可使用远程端点并通过浏览器 OAuth 登录,或在本地以 npx 运行 npm 包(stdio)。本地模式需要 SKYELIGHT_API_TOKEN 中的个人令牌和 SKYELIGHT_API_URL 中的服务器地址,或使用凭据文件。需要一个在工作区中具有所有者、管理员或协作者角色的 Skyelight 账户。
安装前请注意
所有写入都记在你的账户名下:回复、新建条目、状态变更、指派、合并、保存规则和发布评审链接都以你的身份执行。服务器本身不做权限控制,由 API 按你的角色限制。免费方案对每月助手线程数有上限,达到上限后新操作会被拒绝。发布代码会托管在公开的评审链接上。请将令牌视为机密。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Skyelight,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/ai.skyelight%2Fmcp/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "skyelight": {
      "type": "http",
      "url": "https://app.skyelight.ai/mcp"
    }
  }
}

README

@skyelight/mcp

[Skyelight: feedback pinned to the element, with the source behind it, for your coding agent]

npm · source · docs

An MCP server that lets a coding agent read the feedback people left on your running app — the thread, the page, and the element they were pointing at — and report back on it when the work is done.

Full guide: skyelight.ai/docs/mcp. The REST API behind the local server is documented at skyelight.ai/docs/api.

Two ways to connect, with the same eighteen tools either way:

  • Remote, with OAuth — the default. Your agent talks to Skyelight over HTTP and you sign in once in the browser. Nothing is pasted and no key is stored on disk.
  • Local, with a token — this package runs as a stdio server on your machine and carries a personal token. For clients or machines where the browser sign-in is not an option.

Every plan includes every tool, Free included, for owners, admins and collaborators. On Free, your agent gets 25 agent threads a month; Pro and above have no limit. A reviewer reads and comments in the web app but does not get agent tools.

The short way

bash
npx @skyelight/mcp init

Finds your coding agents, registers Skyelight's remote server with them, and leaves the sign-in to OAuth — the first time the agent connects it opens a browser and you approve it there. It shows what it will change and waits; --yes skips that once you have read it.

It knows Claude Code, Cursor, Grok, Codex, Gemini CLI and Windsurf. With several installed it asks which; --client cursor or --client all answers in advance. npx @skyelight/mcp remove takes the entry out again. Point at another deployment with SKYELIGHT_URL=https://…; the deployment tells the installer its own MCP URL and OAuth client over /mcp/install-config, so this package holds no environment-specific constants.

The same setup, with a snippet per client, is in the Skyelight web app under account settings → Coding Agents.

As a Claude Code plugin

/plugin marketplace add plastrlab/skyelight-mcp/plugin install skyelight@skyelight

The plugin connects Claude Code to Skyelight's remote server (sign-in is OAuth, as above) and adds a skill for working through feedback and two commands: /skyelight:whats-new and /skyelight:fix-feedback. Its files are .claude-plugin/marketplace.json and plugin/ in this repository.

As a Gemini CLI extension

bash
gemini extensions install https://github.com/plastrlab/skyelight-mcp

Then, in Gemini CLI, sign in once:

/mcp auth skyelight

A browser opens on Skyelight; sign in and allow the connection. Gemini CLI lists the tools before you sign in, so it won't ask by itself. The extension connects Gemini CLI to Skyelight's remote server and adds the same skill and the same two commands as the Claude Code plugin: /skyelight:whats-new and /skyelight:fix-feedback. Its files are gemini-extension.json, GEMINI.md, commands/ and skills/ at the root of this repository.

With a token

Get a personal access token. In the Skyelight web app, go to account settings → API Keys → create one. It is shown once, belongs to the organization you create it in, and can be given an expiry.

Then add the server to your client:

json
{  "mcpServers": {    "skyelight": {      "command": "npx",      "args": ["-y", "@skyelight/mcp"],      "env": {        "SKYELIGHT_API_URL": "https://app.skyelight.ai",        "SKYELIGHT_API_TOKEN": "sky_..."      }    }  }}

Claude Code users can skip the file:

bash
claude mcp add skyelight \  --env SKYELIGHT_API_URL=https://app.skyelight.ai \  --env SKYELIGHT_API_TOKEN=sky_... \  -- npx -y @skyelight/mcp

SKYELIGHT_API_URL is https://app.skyelight.ai, the same host as the MCP URL on the Coding Agents page (https://app.skyelight.ai/mcp), without /mcp. A deployment's .convex.site host also works.

Credentials

Checked in order, so an existing setup keeps working:

  1. SKYELIGHT_API_TOKEN / SKYELIGHT_API_URL in the environment
  2. .env.local, then .env, in the working directory
  3. ~/.skyelight/credentials — {"apiUrl": "...", "token": "sky_..."}

Binding a repo to a project

With the local server, if you can reach several projects, drop a .skyelight.json at the repo root:

json
{ "projectId": "j57abc...", "projectName": "Checkout rebuild" }

Tools then default to that project and nobody has to pass an id. Without it (and always on the remote server), list_items asks for a project and the agent calls list_projects first rather than guess.

Tools

ToolWhat it is for
list_workspacesWhich workspaces this credential can reach, and who you are.
list_projectsThe projects inside them, with the ids the other tools take.
list_itemsWhat is outstanding. Filter by page, type, status, assignee, hand-off.
search_itemsFind items whose thread mentions some text, replies included.
get_itemEverything needed to work one item: thread, page, anchor, code, images.
post_updateReport back on the thread the feedback came from.
create_itemRaise a new item — an audit finding, something you noticed.
set_statusMove an item to open, deferred or resolved.
list_membersWho is in the workspace, so you can name an assignee or a mention.
assignHand an item to a person, or unassign it.
whats_newWhat changed since you last looked, from your own bookmark.
project_reviewWhere a project landed, for a wrap-up or hand-off document.
decision_logWhat the team decided in its threads, quoted, and its current rules.
save_ruleKeep an agreed rule in the project context (owners and admins).
find_by_sourceFeedback on a file or component before you edit it, or the hot spots.
find_similarCheck for an existing report before creating one.
merge_itemsFold duplicate items into one.
publish_review_linkShare something for review: code for Skyelight to host, or a deployed app's address.

Which tools change things. list_workspaces, list_projects, list_items, search_items, get_item, list_members, project_review, find_by_source, find_similar and decision_log only read. post_update, create_item, set_status, assign, save_rule, merge_items, publish_review_link and whats_new (which moves your "last looked" bookmark) make changes. Every tool carries MCP annotations saying which it is, with merge_items marked destructive, so your client can ask before a write runs.

Publishing for review. publish_review_link takes one of two things:

  • code: one HTML page, or one React component with an export default (a Claude prototype, a v0 snippet). Skyelight hosts it at its own link on skyelight.page with the review badge on it, in a project you name or a new one. Publishing again makes a new version at the same link.
  • url: an app already deployed, such as a Lovable, v0 or Bolt project on *.lovable.app or *.vercel.app. The address goes on the project's Review Links, and the answer carries a script tag for the app's <head> and the review link to share (the address with ?skyelight=1).

Code that imports the rest of its app is not hosted; the answer says to send the app's url instead. It answers to publish_prototype too, its name before 0.7.0.

list_items leads with a summary — totals, breakdown by type and by page — so an agent can tell you the shape of the work before pulling any of it. Rows are stubs; get_item is where the thread and the anchor live.

"What is assigned to me." list_workspaces returns your own user id, and list_items takes assignee: "me", so the most ordinary question anyone asks an agent needs no id looked up by hand.

"What was I asked to fix." A person can hand a thread to an agent in the app (Hand off: Investigate, Plan or Fix). list_items takes task with one of those, or "none", and each row names its hand-off. With assignee: "me" it is your own queue of fixes.

Merged duplicates do not appear twice. When somebody merges five reports of one problem in the web app, the duplicates leave the list and the item they were merged into says 5 reports. A list that shows all five reads as five bugs.

What the agent sees

Alpha: 21 items total — 15 open, 3 deferred, 3 resolved, 19 unassigned.By type: bug (7), idea (4), feedback (10).Busiest pages: /checkout (8), /settings (4).
2 matches:- The pay button does nothing on the second click  bug · open · /checkout · unassigned · 2 replies · 5 reports — id i1

Deliberately prose rather than JSON. A tool that returns a bare array invites a model to read the array out; this one invites it to summarise.

A row's line is the one-sentence summary Skyelight's classifier wrote, where there is one, rather than the first 140 characters of whatever somebody typed — four truncated paragraphs are not something you can choose between.

One call reads the 2,000 most recent items in a project. Past that the result says so, in words, rather than presenting a slice as the total.

The pictures

get_item returns the screenshot taken when the pin was left, and any images people attached to the thread, as image content blocks — things a model can actually look at, not links it cannot open.

Screenshot of the page when this was pinned: attached below.2 images attached to this thread: also below.

Capped at four per call. Anything too large to inline comes back as its link with the reason, so a picture never disappears silently.

What somebody else already did

get_item also names the Linear issue a thread was handed to, and who it was delegated to, so an agent does not start work a Linear-hosted agent is finishing. Reactions come back counted by emoji — a thread with one comment and nine thumbs up is not a thread with one comment.

Where the code is

If the app was built with @skyelight/build, get_item ends with the line that changes what an agent does next:

Written by components/Card.tsx, line 88, in build a1b2c3d on branch feat/checkout.

The file saves a grep. The commit and branch are how an agent tells "still broken" from "already fixed, this pin is stale" — and, on a preview deployment, which branch the code it wants is actually on.

Who a write belongs to

Every write is a person's. Your sign-in or token carries your access, so a reply the agent posts is yours. Over the remote server, the editor it came through is shown as a mark beside the timestamp rather than as the author.

There is no service-account mode, and workspace API keys (sk_live_...) no longer work. The API accepts two credentials, both of which are you: an OAuth sign-in and a personal token (sky_...).

Permissions

The server enforces nothing; the API does. The agent can do what your account can do in that workspace, and nothing more:

  • Agent tools work on every plan, Free included, for owners, admins and collaborators. A reviewer is refused with the reason — the workspace is listed and marked rather than hidden, so you are told which gate closed instead of being told it does not exist.
  • On Free, your agent gets 25 agent threads a month. Two things count: each conversation, once, on its first call of any tool, listing included; and each thread the first time in the month get_item, post_update, set_status, assign or merge_items touches it. So "what feedback do I have?" then "fix that one" is 2. Nothing counted is given back. list_workspaces says how many are left, and at the limit anything new is refused with the reset date. Free hosts one prototype.
  • Adding a deployed app's address to Review Links is for owners and admins.
  • Owners, admins and collaborators read, reply, raise items and change any thread's status.
  • A token only reaches workspaces in the organization it was created in.

License

MIT, from 1.1.2. See LICENSE. The license covers this package and the plugins in this repository; using them needs a Skyelight account, under the Skyelight terms of service. The Skyelight name and logo are not covered by the license.

来源:README.md,提交 19ac365

工具

18

list_workspaces

List workspaces

Workspaces you can reach, with the role you hold in each, and who you are. Use when you do not know what exists yet, to find which workspace a project belongs to, or to learn your own user id.

无需输入参数。

list_projects

List projects

Projects you can reach, newest activity first, across every workspace unless one is named. Start here when no project is bound — `list_items` needs a project id and this is where one comes from.

输入参数workspaceId

list_items

List feedback

List feedback items (bugs, ideas, comments) people left on a Skyelight project. Returns a summary of the project plus matching items. Start here to see what is outstanding. An item's hand-off (investigate, plan, fix) is set by the team and binding: on investigate or plan, reply on the thread and change no code.

输入参数pagetasktypelimitstatusassigneeprojectId

search_items

Search feedback

Find items whose thread mentions some text. Searches replies as well as the original message, so an item someone already diagnosed in a reply still turns up.

输入参数limitquery必填statusprojectId

post_update

Post an update

Report back on an item: what you found, what you changed, a link to the PR. Posts as a reply on the thread the feedback was left on, so the person who reported it sees the answer where they asked. Use this when you finish work on an item, and when you get stuck.

输入参数body必填linksitemId必填mentions

create_item

Create feedback

Open a new thread on a page, as the person whose connection you are using. Only available on a person's own connection — an agent reporting what it found or changed uses post_update on the thread it was working, so the answer lands where the question was asked.

输入参数url必填body必填assigneementionsselectorpageTitleprojectId

list_members

List members

The people in a workspace: name, email, role and id. Call it when you are asked to tell, ask or hand something to someone by name, then pass their name or id to assign, or in mentions on create_item or post_update.

输入参数projectIdworkspaceId

assign

Assign

Hand an item to a person, who is notified the way an assignment in the app notifies them. Pass null as the assignee to unassign it. Only owners, admins and collaborators can assign; a resolved item has to be reopened first.

输入参数itemId必填assignee必填

set_status

Set status

Move an item to open, deferred or resolved. Use it to close the loop after you have fixed something and said so — post_update first, so the person who reported it reads what changed, then set_status. "deferred" is for work that is real but not now.

输入参数itemId必填status必填

get_item

Get feedback item

Everything needed to work one item: the whole thread in order, the page and URL it is on, the anchor identifying the element the person pointed at, and the pictures — what the page looked like when it was pinned, plus anything people attached — returned as images you can look at rather than links you cannot.

输入参数itemId必填

project_review

Review project

Everything needed to write an accurate project review or hand-off document: the shape of the work, every resolved thread and how it ended, what was deferred and why, what is still open, and the longest conversations quoted in full, which is where decisions were made. Every entry carries its item id, so each claim in your document can be traced back to its thread. Quote; do not invent outcomes the threads do not state.

输入参数offsetsectionprojectId

whats_new

What's new

What changed on a project since you last looked: new threads, new replies grouped by thread, what was resolved or deferred, and what was assigned to you or mentioned you. Use when the user asks what has changed on a project since they last checked. Without `since` it reads from their bookmark and moves it forward; with `since` it reads that window and leaves the bookmark alone.

输入参数sinceprojectId

find_by_source

Find feedback by source file

Feedback by the code that rendered it, from the file and line the Skyelight build plugin stamps on each element. Pass a file (a path or just its name) or a component to see every thread about it before you edit it; pass neither to get the hot spots, every stamped file ranked by outstanding feedback.

输入参数filelinelimitstatuscomponentprojectId

find_similar

Find similar feedback

Has this already been reported? Pass the text you are about to report (and the page, if you know it) before create_item, or an itemId to find what an existing thread duplicates. Returns likely matches with why each matched: shared words, same page, same element, same source file. If two are the same problem, merge_items folds one into the other.

输入参数pagetextlimititemIdselectorprojectIdincludeResolved

merge_items

Merge duplicates

Fold duplicate items into one, the way merging works in the app: the duplicates leave the list and count as extra reports on the item they were merged into. Use it only when find_similar and the threads themselves show they are the same problem. Owners, admins and collaborators can merge.

输入参数itemId必填duplicateIds必填

decision_log

Decision log

The decisions a project made in its threads, quoted: every thread resolved or deferred after a discussion, with the conversation, plus types people corrected and where outcomes keep recurring. Also returns the project's existing rules, so you can tell what is new. Use it to write a decision log, or to find rules worth keeping with save_rule.

输入参数limitsinceoffsetprojectId

save_rule

Save a rule

Keep a rule the team agreed on ("sentence case in every button", "the brand gray stays, do not raise contrast bugs on it") in the project's context, under Rules learned. The classifier reads that context, and every agent reads it through decision_log, so it shapes future threads. Cite the threads it came from. Workspace owners and admins only; confirm with the person before saving.

输入参数rule必填projectIdsourceItemIds

版本历史

3
  1. v1.1.2最新Nov 7, 2026
  2. v1.1.1Nov 5, 2026
  3. v1.1.0Nov 5, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Skyelight 集成