סקיל Userscripts
develop-userscripts הוא סקיל לקלוד קוד לבנייה, דיבאג ופרסום של userscripts לדפדפן עבור Tampermonkey ו-ScriptCat. סקריפטים כאלה מאפשרים להתאים אישית כל אתר: להוסיף כפתורים, לשנות התנהגות, או להפעיל אוטומציות בדף. הסקיל מתמקד בדיוק בנקודות שבהן userscripts נשברות: בחירת ה-runtime, בלוק המטא-דאטה, וההרשאות. הוא מנחה להגדיר את ההרשאות המינימליות מראש, ולדבג בסביבה שבה הסקריפט באמת רץ. בפרויקטי הפיתוח שאני מוביל, יכולת להתאים אתרים קיימים בלי גישה לקוד שלהם היא כלי רב-עוצמה. במדריך תקבלו את זרימת העבודה המלאה, ארבעה תרחישי שימוש, וצ'קליסט לעבודה נכונה.
פקודת התקנה
npx skills add xixu-me/skills@develop-userscripts -g -y
ההתקנה מתבצעת דרך מנהל החבילות הרשמי של הסקילים בפקודה אחת. הסקיל הוא קובץ Markdown פתוח מהמאגר של xixu-me. אפשר להוריד ולבדוק את הקוד דרך הכפתורים שבראש העמוד.
מה הסקיל כולל?
הסקיל מתעד זרימת עבודה ל-userscripts: בחירת ה-runtime הנכון, הגדרת בלוק מטא-דאטה והרשאות מינימליות, דיבאג בסביבת ההרצה, ופרסום, כולל יכולות מתקדמות של ScriptCat.
קוד הסקיל המלא
---
name: develop-userscripts
description: Use when building, debugging, packaging, or publishing browser userscripts for Tampermonkey or ScriptCat, including GM APIs, metadata blocks, permission issues, @match/@grant/@connect setup, ScriptCat background or scheduled scripts, UserConfig blocks, or subscription workflows.
---
Userscript 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 `@background` or `@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
```dot
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 Scripts` or 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
1. Choose the runtime and metadata first.
2. Declare the smallest permission surface that fits the task.
3. Implement against the runtime you chose.
4. Debug where the code really runs.
- Foreground scripts: page console plus manager logs.
- ScriptCat background scripts: run log first, then `background.html` for real-environment debugging.
5. Publish with the right update model.
- Normal scripts: keep `@version` accurate and add `@updateURL` or `@downloadURL` only when needed.
- Subscription bundles: use `==UserSubscribe==`, HTTPS URLs, and subscription-level `@connect`.
## 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 `@grant` for APIs the script actually uses.
- Missing `@connect` for hosts used by `GM_xmlhttpRequest` or `GM_cookie`.
- Treating `@include` as a better default than `@match` for 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 the `group.key` name.
- Assuming Tampermonkey and ScriptCat storage, notification, or request behavior is identical.
## References
- [`references/metadata-and-api-map.md`](./references/metadata-and-api-map.md)
- [`references/scriptcat-extensions.md`](./references/scriptcat-extensions.md)
מה זה develop-userscripts ולמה הסקיל הזה שונה?
develop-userscripts פותר את התסכול המוכר בפיתוח userscripts: הם נשברים בדרך כלל לא בלוגיקה של הדף, אלא בגבול של ה-runtime וההרשאות. בלוק מטא-דאטה שגוי, הרשאה חסרה, או תזמון הזרקה לא נכון, וכל הסקריפט לא עובד. הסקיל ממקד את העבודה בדיוק בנקודות הכאב האלה.
מה שמייחד אותו הוא הגישה של runtime תחילה. במקום לקפוץ לכתוב לוגיקה, הסקיל מנחה לבחור קודם את ה-runtime הנכון, להצהיר על ההרשאות המינימליות מראש, ואז לדבג בסביבה שבה הסקריפט באמת רץ. הוא מכיר את כל הדקויות: התנהגות ה-GM APIs, בלוקי המטא-דאטה, ופתרונות ל-CSP. הוא גם תומך ביכולות המתקדמות של ScriptCat כמו סקריפטי רקע, סקריפטים מתוזמנים, ובלוקי קונפיגורציה. כך הסקריפט עובד יציב.
ההבדל מורגש בכמות התסכול שנחסכת. במקום לנחש למה הסקריפט לא רץ, מתחילים מהמקום הנכון. בשילוב עם סקיל codebase-design, גם userscript מורכב נשאר מסודר וקל לתחזוקה לאורך זמן.
מה develop-userscripts נותן לקלוד קוד?
הסקיל מוסיף לקלוד מומחיות ב-userscripts: לבנות, לדבג ולפרסם סקריפטים שמתאימים כל אתר, עם דגש על הנקודות שבאמת שוברות אותם.
בחירת runtime וברירת הרשאות
הסקיל מנחה לבחור קודם את ה-runtime הנכון, Tampermonkey או ScriptCat, ולהצהיר על ההרשאות המינימליות מראש. כך נמנעים מהבעיות הנפוצות ביותר שמונעות מסקריפט לעבוד, עוד לפני שכותבים לוגיקה.
דיבאג בסביבת ההרצה
userscripts מתנהגים אחרת בסביבה שלהם מאשר בדף רגיל. הסקיל מנחה לדבג בדיוק שם, ומכיר את בעיות התזמון, ההרשאות ו-CSP. כך תופסים את הבאג במקום הנכון במקום לנחש בדף.
יכולות ScriptCat מתקדמות
הסקיל תומך ביכולות שמעבר לסקריפט רגיל: סקריפטי רקע, סקריפטים מתוזמנים, ובלוקי קונפיגורציה. כך אפשר לבנות אוטומציות מתקדמות שרצות גם כשהדף לא פתוח, לא רק שינויי ממשק פשוטים.
פרסום ומנוי
הסקיל מכיר את תהליכי האריזה והפרסום, כולל בלוקי מנוי וחבילות תואמות. כך סקריפט שבניתם לא נשאר אצלכם בלבד, אלא יכול להתפרסם ולהתעדכן אצל משתמשים אחרים בצורה מסודרת.
ארבע היכולות הופכות את קלוד למומחה userscripts. בעבודות שלי, יכולת להתאים אתרים קיימים דרך userscript פתחה פתרונות אוטומציה שלא היו אפשריים בלי גישה לקוד של האתר.
למי הסקיל הזה מתאים?
מפתחים שמתאימים אתרים קיימים: זה הקהל המובהק. userscript מאפשר להוסיף יכולות לכל אתר בלי גישה לקוד שלו, והסקיל מבטיח שהסקריפט יעבוד יציב. השילוב עם סקיל secure-linux-web-hosting רלוונטי כשמארחים סקריפטים או כלים נלווים.
אנשי אוטומציה ופרודוקטיביות: userscripts הם דרך מצוינת לאוטומציה אישית בדפדפן: למלא טפסים, לחלץ נתונים, או להוסיף קיצורים. הסקיל הופך אותם לאמינים.
בוני כלים פנימיים: כשמערכת חיצונית חסרה פיצ'ר, userscript יכול להוסיף אותו מעליה. הסקיל מאפשר לבנות שכבת התאמה כזו במהירות ובבטחה.
חוקרים ואנליסטים: סקריפט שמחלץ או מארגן מידע מדף יכול לחסוך שעות עבודה ידנית. גם בעבודות אוטומציה שלי, התאמת דפדפן היא לעיתים החוליה שמשלימה תהליך אוטומטי.
מפתחים סקרנים: userscripts הם דרך כיפית ללמוד על איך אתרים עובדים ולשחק עם הזרקת קוד, והסקיל מנחה לעשות זאת נכון.
מי שפחות יתאים: מי שצריך תוסף דפדפן מלא עם ממשק מורכב יזדקק לפלטפורמת הרחבות, לא ל-userscript. הסקיל מבריק דווקא בהתאמות ממוקדות לדף או באוטומציות קלות עד בינוניות.
איך develop-userscripts עזר לי בפרויקטים אמיתיים
הוספת פיצ'ר לאתר שאין לי גישה לקוד שלו
אתר חיצוני חסר פיצ'ר שהייתי צריך. במקום להמתין לספק, בניתי userscript שמזריק את היכולת לדף. הסקיל הנחה אותי על ה-runtime וההרשאות הנכונות, והסקריפט עבד יציב מהפעם הראשונה, בלי הבעיות הנפוצות של תזמון והרשאות.
דיבאג בעיית הרשאות שתקעה סקריפט
סקריפט פשוט פשוט לא רץ, בלי שגיאה ברורה. הסקיל זיהה שהבעיה בגבול ההרשאות, לא בלוגיקה, והנחה לתקן את בלוק המטא-דאטה. ברגע שההרשאות היו נכונות, הסקריפט עבד. החיפוש במקום הנכון חסך שעות.
אוטומציה מתוזמנת ב-ScriptCat
רציתי משימה שתרוץ אוטומטית בלי שהדף יהיה פתוח. הסקיל הנחה להשתמש בסקריפט רקע מתוזמן של ScriptCat. קיבלתי אוטומציה שרצה לבד לפי לוח זמנים, מעבר למה ש-userscript רגיל יכול לעשות.
חילוץ נתונים שחסך עבודה ידנית
היה צריך לאסוף נתונים מדף שוב ושוב. בניתי userscript שמחלץ ומארגן אותם בלחיצה. הסקיל הבטיח שהוא רץ בתזמון הנכון ועם ההרשאות הדרושות. מה שהיה עבודה ידנית מייגעת הפך לפעולה אוטומטית.
ארבעת המקרים מראים שהסקיל הופך userscripts מפרויקט מתסכל לכלי אמין. כשמתחילים מה-runtime וההרשאות הנכונות, הסקריפט עובד יציב, ויכולת ההתאמה של אתרים קיימים פותחת פתרונות שלא היו אפשריים אחרת.
סיכום
סקיל develop-userscripts הוא כלי מצוין לכל מי שרוצה להתאים אתרים או לבנות אוטומציות בדפדפן. הוא מלווה בנייה, דיבאג ופרסום של userscripts ל-Tampermonkey ו-ScriptCat, עם דגש על ה-runtime, המטא-דאטה וההרשאות, הנקודות שבאמת שוברות סקריפטים.
אם אתם מתחילים, בקשו מקלוד לבנות userscript קטן עם הסקיל, למשל הוספת כפתור לאתר מועדף. תראו איך הוא מתחיל מה-runtime וההרשאות הנכונות, והסקריפט עובד מיד. משם, אפשר לבנות התאמות מורכבות יותר.
בפוסטים הבאים אמשיך לסקור סקילים שמשדרגים פיתוח ואוטומציה. האתר של דביר נעמן מרכז את כל הכלים, השיטות והליווי שאני מציע לעסקים שרוצים לעבוד חכם עם בינה מלאכותית.
שיתוף הסקיל
שאלות ותשובות
מה זה בעצם הסקיל develop-userscripts?
זה סקיל לקלוד קוד לבנייה, דיבאג ופרסום של userscripts לדפדפן עבור Tampermonkey ו-ScriptCat. סקריפטים כאלה מתאימים אישית כל אתר: מוסיפים כפתורים, משנים התנהגות או מפעילים אוטומציות. הסקיל מתמקד בנקודות שבהן userscripts נשברות: ה-runtime, המטא-דאטה וההרשאות.
מה זה userscript?
userscript הוא קטע קוד JavaScript שרץ בתוך דף אינטרנט קיים דרך תוסף כמו Tampermonkey, ומאפשר לשנות את הדף או להוסיף לו יכולות. זו דרך להתאים אתרים בלי גישה לקוד שלהם, מצוינת לאוטומציה אישית, קיצורים, או הוספת פיצ'רים שחסרים באתר.
איך מתקינים את הסקיל בקלוד קוד?
בפקודה אחת דרך מנהל החבילות הרשמי של הסקילים, כפי שמופיע בקופסת ההתקנה למעלה. הסקיל הוא קובץ Markdown פתוח מהמאגר של xixu-me. אחרי ההתקנה בקשו מקלוד לבנות או לדבג userscript, והוא ינחה את התהליך מה-runtime ועד הפרסום.
למה userscripts נשברים כל כך הרבה?
כי הם נשברים בדרך כלל לא בלוגיקה של הדף, אלא בגבול של ה-runtime וההרשאות: בלוק מטא-דאטה שגוי, הרשאה חסרה, או תזמון הזרקה לא נכון. הסקיל ממקד את העבודה בדיוק שם, ומנחה להגדיר את ההרשאות המינימליות מראש ולדבג בסביבת ההרצה האמיתית.
מה ההבדל בין Tampermonkey ל-ScriptCat?
שניהם מנהלי userscripts, אבל ScriptCat מציע יכולות מתקדמות יותר כמו סקריפטי רקע, סקריפטים מתוזמנים ובלוקי קונפיגורציה. הסקיל עוזר לבחור את ה-runtime הנכון לפי הצורך: סקריפט נייד ופשוט מול אוטומציה מתקדמת שרצה גם כשהדף לא פתוח.
האם הסקיל בטוח?
כן. הסקיל הוא קובץ הנחיות שעוסק בקוד userscript מקומי שרץ בדפדפן שלכם. אין בו שליחת קוד או נתונים לשרת חיצוני, אין מפתחות API ואין טלמטריה. כמובן, כמו בכל קוד שרץ בדפדפן, כדאי להבין מה הסקריפט עושה ולהעניק לו רק את ההרשאות שהוא באמת צריך.
האם userscript יכול להחליף תוסף דפדפן?
להתאמות ממוקדות לדף ולאוטומציות קלות, userscript הוא לרוב הפתרון הפשוט והמהיר יותר. לתוסף מלא עם ממשק מורכב, רקע מתמשך ואינטגרציות עמוקות, עדיף לבנות הרחבת דפדפן. הסקיל עוזר להחליט, ומבריק דווקא בהתאמות ובאוטומציות שלא דורשות תוסף מלא.
האם הסקיל מתאים גם למתחילים?
כן. הסקיל מנחה את התהליך הנכון מההתחלה: בחירת runtime, הרשאות מינימליות ודיבאג במקום הנכון. מתחיל שעובד איתו נמנע מהטעויות הנפוצות שמתסכלות, ולומד תוך כדי איך userscripts עובדים. זו דרך טובה להיכנס לעולם התאמת הדפדפן.