develop-userscripts
작성자: xixu-me
Tampermonkey 또는 ScriptCat용 브라우저 유저스크립트를 빌드, 디버깅, 패키징, 게시할 때 사용하며, GM API, 메타데이터 블록, 권한 문제, @match/@grant/@connect 설정, ScriptCat 백그라운드 또는 예약 스크립트, UserConfig 블록, 구독 워크플로우를 포함합니다.
npx skills add https://github.com/xixu-me/skills --skill develop-userscriptsUserscript work usually breaks at the runtime and metadata boundary, not in the page logic. Choose the runtime first, declare the minimum permissions up front, then debug in the environment where the script actually runs.
When to Use
Use this skill for:
- writing or fixing a Tampermonkey or ScriptCat userscript
- debugging injection timing, missing permissions, CSP workarounds, update checks, or
GM_*behavior - deciding between a portable foreground script and ScriptCat-only
@backgroundor@crontab - adding config UI with
==UserConfig== - packaging a ScriptCat
==UserSubscribe==bundle or preparing a CloudCat-compatible script
Do not use this skill for full browser extension development or general browser automation outside userscript managers.
Runtime Selection
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"];
}
Preflight
- Confirm the manager and browser. On Manifest V3 browsers, ScriptCat may require
Allow User Scriptsor browser developer mode before scripts run. - Decide page script versus background script before writing code. ScriptCat background scripts cannot touch the DOM.
- Start with metadata, not implementation:
@match,@grant,@connect,@run-at, and any update URLs. - Prefer portable
==UserScript==patterns for ordinary page scripts. Only switch to ScriptCat-only headers when the requested behavior actually needs them.
Workflow
- Choose the runtime and metadata first.
- Declare the smallest permission surface that fits the task.
- Implement against the runtime you chose.
- Debug where the code really runs.
- Foreground scripts: page console plus manager logs.
- ScriptCat background scripts: run log first, then
background.htmlfor real-environment debugging.
- Publish with the right update model.
- Normal scripts: keep
@versionaccurate and add@updateURLor@downloadURLonly when needed. - Subscription bundles: use
==UserSubscribe==, HTTPS URLs, and subscription-level@connect.
- Normal scripts: keep
Quick Reference
| Intent | Default choice | Watch for |
|---|---|---|
| Page UI, DOM scraping, page patching | Portable ==UserScript== | @match, @grant, @run-at, CSP-sensitive injection |
| Cross-origin API access | GM_xmlhttpRequest with explicit @connect | Missing hosts, cookie behavior differences, user authorization |
| Long-running worker | ScriptCat @background | No DOM, must return Promise for async work |
| Scheduled task | ScriptCat @crontab | Only first @crontab counts, prefer 5-field cron, avoid interval overlap |
| User-editable settings | ==UserConfig== plus GM_getValue | Block placement and group.key naming |
| Silent bundle install and updates | ==UserSubscribe== | HTTPS, user.sub.js, subscription connect overrides child scripts |
Common Mistakes
- Missing
@grantfor APIs the script actually uses. - Missing
@connectfor hosts used byGM_xmlhttpRequestorGM_cookie. - Treating
@includeas a better default than@matchfor ordinary host targeting. - Using DOM APIs inside ScriptCat background or cron scripts.
- Returning from a ScriptCat background script before async GM work is truly finished.
- Mixing
==UserScript==and==UserSubscribe==packaging concepts. - Putting
==UserConfig==in the wrong place or reading config keys without thegroup.keyname. - Assuming Tampermonkey and ScriptCat storage, notification, or request behavior is identical.
References
xixu-me의 다른 스킬
github-actions-docs
xixu-me
사용자가 GitHub Actions 워크플로우, 워크플로우 구문, 트리거, 매트릭스, 러너, 재사용 가능한 워크플로우, 아티팩트, 캐싱, 시크릿, OIDC, 배포, 사용자 정의 액션 또는 Actions Runner Controller를 작성, 설명, 사용자 정의, 마이그레이션, 보안 설정 또는 문제 해결하는 방법을 묻고, 특히 공식 GitHub 문서, 정확한 링크 또는 문서 기반 YAML 지침이 필요할 때 사용합니다.
developmentdevopsdocument
use-my-browser
xixu-me
사용자의 실시간 브라우저 세션이나 정적 가져오기보다는 보이는 렌더링 상태에 의존하는 작업에 사용하며, 특히 브라우저 디버깅 맥락이나 DevTools에서 선택한 요소 또는 요청, 로그인된 대시보드나 CMS 흐름, localhost 앱, 양식, 업로드, 다운로드, 미디어 검사, DOM 또는 iframe 검사, Shadow DOM, 또는 소프트 404, 인증 장벽, 봇 방지 검사, 속도 제한처럼 보이는 브라우저 오류에 사용합니다.
browser-automationweb-scrapingtesting
readme-i18n
xixu-me
사용자가 저장소 README를 번역하거나, 저장소를 다국어로 만들고, 문서를 현지화하고, 언어 전환기를 추가하고, README를 국제화하거나, GitHub 스타일 저장소에서 현지화된 README 변형을 업데이트하려고 할 때 사용합니다.
documentdevelopmentapi
openclaw-secure-linux-cloud
xixu-me
클라우드 서버에서 OpenClaw를 자체 호스팅하거나, 원격 OpenClaw 게이트웨이를 강화하거나, SSH 터널링, Tailscale, 리버스 프록시 노출 중에서 선택하거나, Podman, 페어링, 샌드박싱, 토큰 인증, 도구 권한 기본값을 검토하여 안전한 개인 배포를 구성할 때 사용합니다.
devopssecurity
secure-linux-web-hosting
xixu-me
셀프 호스팅을 위한 클라우드 서버 설정, 강화 또는 검토 시 사용하며, DNS, SSH, 방화벽, Nginx, 정적 사이트 호스팅, 앱 리버스 프록시, Let's Encrypt 또는 ACME 클라이언트를 통한 HTTPS, 안전한 HTTP-to-HTTPS 리디렉션, 또는 BBR과 같은 선택적 출시 후 네트워크 튜닝을 포함합니다.
devopssecurityaws
opensource-guide-coach
xixu-me
사용자가 오픈소스 프로젝트를 시작, 기여, 성장, 운영, 자금 조달, 보안 유지 또는 지속하는 방법에 대한 안내를 원하거나, 기여자 온보딩, 커뮤니티 건강, 메인테이너 소진, 행동 강령, 지표, 법적 기본 사항 또는 오픈소스 프로젝트 채택에 대해 질문할 때 사용합니다.
developmentresearch
running-claude-code-via-litellm-copilot
xixu-me
로컬 LiteLLM 프록시를 통해 Claude Code를 GitHub Copilot으로 라우팅하여 직접적인 Anthropic 비용을 줄이거나, ANTHROPIC_BASE_URL 또는 ANTHROPIC_MODEL 재정의를 구성하거나, 모델을 찾을 수 없음, 로컬호스트 트래픽 없음, GitHub 401/403 인증 오류와 같은 Copilot 프록시 설정 실패를 해결할 때 사용합니다.
developmentapidevops
skills-cli
xixu-me
Use when users ask to discover, install, list, check, update, remove, back up, restore, sync, or initialize Agent Skills, mention `bunx skills`, `npx skills`, `skills.sh`, or `skills-lock.json`, ask "find a skill for X", or want help extending agent capabilities with installable skills.
developmentapiproductivity