ce-polish

启动开发服务器,在浏览器中打开该功能,然后一起迭代 - 你说感觉不对,修复就会发生。

ce-polish会话式用户体验优化技能。它会自动检测您的开发服务器设置(或读取 .claude/launch.json),在后台启动服务器,通过 IDE 的首选机制在浏览器中打开该功能,然后进入紧密的迭代循环:您描述要修复的内容,更改落地,热重载拾取它,重复直到您满意为止。没有清单,没有信封——只是与正在运行的浏览器配对的对话。

此技能仅限手动调用 (disable-model-invocation: true)。它仅在您通过斜杠命令显式调用它时才会触发 - 从不自动触发。 Polish 启动一个开发服务器并运行分支的代码,因此它仍然是一个经过深思熟虑的用户选择。框架自动检测范围很广(Rails / Next / Vite / Nuxt / Astro / Remix / SvelteKit / Procfile),但抛光循环故意最小化。


TL;DR

问题 回答
它有什么作用? 启动开发服务器,在浏览器中打开该功能,通过对话迭代 UX/视觉打磨
何时使用它 对已经可用的功能进行后期用户体验改进;难以提前指定的视觉或交互细化
它生产什么 当前分支上已提交的修复(默认情况下无 PR — 之后使用 /ce-commit-push-pr
状态 稳定 - 仅手动调用

## 问题

后期用户体验优化不太适合其他技能:

  • 实施前审查不适用 - 该功能已经可以使用,您正在完善感觉
  • 代码审查是错误的角度——你不需要静态分析,你需要使用这个东西
  • 聊天中的静态屏幕截图是不够的 - 交互、悬停状态、转换、边缘情况数据都需要真实的会话
  • 写一个抛光计划是过度设计的——当你列出问题时,你可能已经解决了其中的三个问题
  • 手动循环 - 启动开发服务器,打开浏览器,将屏幕截图粘贴回聊天中,描述问题,观看修复,刷新 - 太多的切换

解决方案

ce-polish 折叠循环:

  • 阶段 0 选择正确的分支(PR 编号、分支名称或当前分支)
  • 阶段 1 启动开发服务器(自动检测框架或读取 .claude/launch.json)并在 IDE 的首选浏览器界面中打开该功能
  • 阶段 2 是一个对话:您描述要修复的内容,代理进行更改,热重载启动,您继续前进

没有决策树,没有信封,没有评分标准——只是运行迭代。该技能会完成无聊的部分(解析端口、选择包管理器、路由到框架的启动命令、打开正确的浏览器),因此您可以将时间花在润色上,而不是管道上。


是什么让它如此新颖

1. 跨 8 个框架的自动开发服务器检测

该技能通过 scripts/detect-project-type.sh 检测项目类型(Rails、Next.js、Vite、Nuxt、Astro、Remix、SvelteKit、Procfile-based)并路由到匹配的配方(references/dev-server-<framework>.md)。每个配方都包含框架的典型启动命令、端口默认值和怪癖。对于未知的项目,技能会询问如何开始。

2. .claude/launch.json 覆盖

如果项目具有 .claude/launch.json,则技能将使用该配置而不是自动检测 - 您已经告诉技能如何启动项目,因此它不需要猜测。架构记录在 references/launch-json-schema.md 中。

3. IDE 感知的浏览器切换

该技能通过 env-var 探针 (references/ide-detection.md) 检测主机 IDE(Claude Code、Cursor、VS Code),并使用匹配机制打开开发服务器 URL:Claude Code 的 open、Cursor 的内置浏览器、VS Code 的简单浏览器。适合合适环境的合适表面,无需手动操作。

4. 对话式迭代 — 无清单

第 2 阶段是抛光循环。用户描述了需要修复的问题;代理人进行变更;开发服务器热重载;用户查看结果并说出下一步。安装 agent-browser 后,代理可以根据请求截取屏幕截图或检查页面。当用户说他们已经完成时,修复就会被提交。

没有清单。没有信封。只是谈话。

这不是懒惰——这是后期抛光的正确形状。固定的清单让工作感觉就像是审计;对话让人感觉像是协作改进。

5.带有运行状况探测的后台开发服务器

开发服务器在后台启动,输出记录到临时文件中。该技能探测 http://localhost:<port> 长达 30 秒。如果服务器没有启动,它会显示日志的最后 20 行并询问该怎么做,而不是默默等待或继续访问无效的 URL。

6. 仅限手动调用

前面的 disable-model-invocation: true 可以防止技能自动触发。波兰语是一个经过深思熟虑的用户选择 - 该技能仅在您直接键入 /ce-polish 时才会触发。这可以避免用户在只想查看页面时感到惊讶。


简单示例

您刚刚完成了通知设置页面。它可以工作,但间距感觉不对,切换状态不太正确,并且空状态副本很干燥。您调用 /ce-polish

该技能验证您位于功能分支(不是主分支),检查 .claude/launch.json (无),运行 detect-project-type.sh (检测 next),读取 references/dev-server-next.md 作为启动命令,通过 resolve-package-manager.sh 解析包管理器(pnpm),选择端口3000,并在后台启动 pnpm dev。 4 秒后,localhost:3000 做出响应。该技能会在 Cursor 的内置浏览器中打开它。

您浏览至 /settings/notifications。您说“切换行之间的间距感觉太紧”。代理找到组件,调整间距,启动热重载。您说“现在切换状态需要更清晰的可供性 - 让关闭状态看起来更明显关闭。”代理更新组件。你浏览空状态并说“这个副本是无菌的,让它变暖。”代理重写副本。

你很高兴。代理提交修复。您继续使用 /ce-commit-push-pr


何时去实现它

在以下情况下使用 ce-polish

  • 该功能已经可以使用,并且您正在完善用户体验/视觉感觉
  • 您可以通过“看到”问题来阐明问题,而不是通过预先写下来
  • 热重载+浏览器端迭代将击败替代方案(聊天→屏幕截图→描述→修复→重复)
  • 变化集是视觉的:间距、复制、过渡、可供性、空状态、微交互

在以下情况下跳过 ce-polish

  • 该功能尚未构建 → 使用 /ce-work
  • 抛光需要设计规范(Figma 比较、品牌系统对齐)→ 使用 /ce-frontend-design 或专用的设计同步技能
  • 这项工作是非前端的(API 行为、后端逻辑)——没有什么可浏览的

用作工作流程的一部分

ce-polish 在功能完成后稍后调用:

/ce-work or /ce-debug → feature works → /ce-polish → /ce-commit-push-pr

它在链中没有直接的调用者——当工作需要视觉细化时,抛光是一个有意的用户调用。抛光循环结束后,标准运输交接是 /ce-commit-push-pr 以打开 PR。


使用独立版

该技能始终独立调用:

  • 当前分支/ce-polish
  • 具体 PR/ce-polish 1234 (查看 PR)
  • 特定分支/ce-polish feat/notification-settings

当自动检测器未知框架时,技能会询问如何启动项目。将 .claude/launch.json 添加到存储库可以保留下次的答案。


## 参考

论证 效果
(空) 使用当前分支
<PR number> <PR number>查看 PR(首先探测现有工作树)
<branch name> 查看分行

支持文件:

  • .claude/launch.json(项目本地覆盖)— references/launch-json-schema.md 中的架构
  • 框架配方 — references/dev-server-<rails|next|vite|nuxt|astro|remix|sveltekit|procfile>.md
  • IDE 检测 — references/ide-detection.md
  • 脚本 — scripts/detect-project-type.shscripts/read-launch-json.shscripts/resolve-package-manager.shscripts/resolve-port.sh

## 常问问题

为什么只能手动调用? Polish 启动一个开发服务器并运行已签出分支的代码 - 这是一个副作用操作,应该是经过深思熟虑的选择,而不是当您只是查看页面时模型自动触发的操作。 disable-model-invocation: true 会阻止它触发,除非您显式调用它。当需要时输入 /ce-polish

如果我的框架不在检测列表中怎么办? 该技能询问如何开始项目。您可以添加 .claude/launch.json 来保留未来运行的答案。

没有 agent-browser 是否可以工作? 是的 - 第 2 阶段仍然以对话方式进行,代理只是无法根据请求截取屏幕截图或检查页面。热重载+你的眼睛仍然工作正常。如果您希望代理在不描述状态的情况下捕获状态,请安装 agent-browser

非 Claude-Code IDE 怎么样? 该技能通过 env-var 探针检测 Cursor 和 VS Code,并使用每个 IDE 的首选浏览器界面。在这些之外,它会回退到 open。框架检测和开发服务器启动与 IDE 无关。

为什么最后没有创建公关? 波兰语通常需要多个会话,并且每次都强制执行 PR 会造成混乱。提交和 PR 是用户通过 /ce-commit-push-pr 进行的单独选择。


另请参阅

  • ce-work — 首先构建功能;波兰第二
  • ce-commit-push-pr — 完善后打开 PR
  • ce-frontend-design — 用于从头开始的高质量前端设计(不同范围)
  • ce-debug — 当根本原因调查很重要时,用于修复您在抛光过程中发现的错误