mcpField
D
develop-userscripts

develop-userscripts

github.com/xixu-me开发79461.4k 次安装3 天前更新
代码仓库

关于 develop-userscripts

develop-userscripts 是用于编写、修复和调试 Tampermonkey 或 ScriptCat 用户脚本的技能,面向用户脚本开发者。它从运行时和元数据配置入手,并涵盖权限、调试及发布流程。

主要功能

  1. 01选择前台、后台或定时运行方式
  2. 02配置脚本元数据与最小权限
  3. 03调试前台及 ScriptCat 后台脚本
  4. 04配置用户设置与订阅包

适用场景

  1. 01修复脚本注入时机或权限问题
  2. 02为跨域请求配置授权主机
  3. 03制作 ScriptCat 定时脚本或订阅包

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/xixu-me/skills --skill develop-userscripts

安装后在 Claude Code 中输入/develop-userscripts确认已加载。

附带文件references/metadata-and-api-map.mdreferences/scriptcat-extensions.md

详细介绍

用户脚本通常不是在页面逻辑上出问题,而是在运行时和元数据的边界上出问题。先选择运行时,提前声明最少权限,然后在脚本实际运行的环境中调试。

适用场景

在以下情况下使用此技能:

  • 编写或修复 Tampermonkey 或 ScriptCat 用户脚本
  • 调试注入时机、缺失权限、CSP 绕过方案、更新检查或 GM_* 行为
  • 在可移植的前台脚本与仅限 ScriptCat 的 @background 或 @crontab 之间做出选择
  • 使用 ==UserConfig== 添加配置界面
  • 打包 ScriptCat ==UserSubscribe== 集合,或准备与 CloudCat 兼容的脚本

浏览器扩展完整开发或用户脚本管理器之外的一般浏览器自动化,请勿使用此技能。

运行时选择

digraph userscript_runtime {
    "Need page DOM or page context?" [shape=diamond];
    "Need persistent or scheduled work?" [shape=diamond];
    "Need to install many scripts as one package?" [shape=diamond];
    "Portable foreground script" [shape=box];
    "ScriptCat background or crontab script" [shape=box];
    "ScriptCat subscription package" [shape=box];

    "Need page DOM or page context?" -> "Portable foreground script" [label="yes"];
    "Need page DOM or page context?" -> "Need persistent or scheduled work?" [label="no"];
    "Need persistent or scheduled work?" -> "ScriptCat background or crontab script" [label="yes"];
    "Need persistent or scheduled work?" -> "Need to install many scripts as one package?" [label="no"];
    "Need to install many scripts as one package?" -> "ScriptCat subscription package" [label="yes"];
    "Need to install many scripts as one package?" -> "Portable foreground script" [label="no"];
}

前期检查

  • 确认管理器和浏览器。在 Manifest V3 浏览器中,ScriptCat 可能需要先启用 Allow User Scripts 或浏览器开发者模式,脚本才能运行。
  • 编写代码前,先决定使用页面脚本还是后台脚本。ScriptCat 后台脚本无法操作 DOM。
  • 从元数据入手,而不是从实现入手:@match、@grant、@connect、@run-at 以及任何更新 URL。
  • 普通页面脚本优先采用可移植的 ==UserScript== 模式。只有当所需行为确实需要时,才切换到仅限 ScriptCat 的头部配置。

工作流

  1. 先选择运行时和元数据。
  2. 声明满足任务所需的最小权限范围。
  3. 针对所选运行时进行实现。
  4. 在代码实际运行的位置调试。
    • 前台脚本:使用页面控制台和管理器日志。
    • ScriptCat 后台脚本:先查看运行日志,再使用 background.html 进行真实环境调试。
  5. 使用合适的更新模式发布。
    • 普通脚本:保持 @version 准确,仅在需要时添加 @updateURL 或 @downloadURL。
    • 订阅集合:使用 ==UserSubscribe==、HTTPS URL 和订阅级别的 @connect。

快速参考

意图默认选择注意事项
页面 UI、DOM 抓取、页面修补可移植的 ==UserScript==@match、@grant、@run-at、对 CSP 敏感的注入
跨源 API 访问使用显式 @connect 的 GM_xmlhttpRequest缺少主机配置、Cookie 行为差异、用户授权
长时间运行的工作进程ScriptCat @background无法操作 DOM,异步工作必须返回 Promise
定时任务ScriptCat @crontab只有第一个 @crontab 生效,优先使用 5 字段 cron,避免间隔重叠
用户可编辑的设置==UserConfig== 加 GM_getValue区块位置和 group.key 命名
静默安装和更新集合==UserSubscribe==HTTPS、user.sub.js,订阅级别的 connect 会覆盖子脚本设置

常见错误

  • 脚本使用了 API,却未添加相应的 @grant。
  • GM_xmlhttpRequest 或 GM_cookie 使用的主机缺少 @connect。
  • 认为普通主机匹配时 @include 比 @match 更适合作为默认选择。
  • 在 ScriptCat 后台脚本或定时任务脚本中使用 DOM API。
  • ScriptCat 后台脚本在异步 GM 操作真正完成前就返回。
  • 混淆 ==UserScript== 与 ==UserSubscribe== 的打包概念。
  • 将 ==UserConfig== 放在错误位置,或读取配置键时未使用 group.key 名称。
  • 认为 Tampermonkey 和 ScriptCat 的存储、通知或请求行为完全相同。

References

评论

支持 Markdown