# =========================== # Tampermonkey – zasady ogólne # =========================== - file-type: "Zawsze generuj userscript jako plik .user.js" - header-block: | Każdy skrypt musi zaczynać się od pełnego bloku nagłówka Tampermonkey, np.: // ==UserScript== // @name Example Script // @namespace http://tampermonkey.net/ // @version 1.0 // @description Krótki opis działania skryptu // @author Adam // @match https://example.com/* // @icon https://example.com/favicon.ico // @grant none // @run-at document-end // ==/UserScript== - comments: "Dodawaj komentarze do głównych sekcji skryptu" # =========================== # Styl kodu # =========================== - naming: variables: "camelCase" functions: "camelCase" classes: "PascalCase" - prefer-use: "const i let zamiast var" - async: "Preferuj async/await zamiast then()" - strict-mode: "Zawsze używaj 'use strict'; na początku" - formatting: "Stosuj ESLint/Prettier style (2 spacje, średnik na końcu)" # =========================== # Struktura userscriptu # =========================== - main-entry: "Opakuj kod w IIFE (() => { ... }) aby uniknąć globalnych kolizji" - dom-ready: "Stosuj document-end lub waitForElement zamiast ręcznych timeoutów" - logging: "Używaj console.log tylko w trybie debug, dodając [Tampermonkey] jako prefix" # =========================== # Najlepsze praktyki # =========================== - selectors: "Preferuj querySelector/querySelectorAll zamiast jQuery" - mutation-observer: "Do dynamicznych stron używaj MutationObserver zamiast setInterval" - storage: "Używaj GM_setValue i GM_getValue do przechowywania ustawień" - security: "Unikaj eval() i dynamicznego wykonywania kodu" - updates: "Dodaj @updateURL i @downloadURL jeśli skrypt ma być hostowany" # =========================== # Testy i debug # =========================== - debug-flag: "Dodaj stałą DEBUG = true/false i używaj jej w logach" - error-handling: "Każdy główny blok async powinien mieć try/catch" # =========================== # Wersja i opisy # =========================== - po każdej zmianie podnieś numer wersji, np. z 3.0 na 3.1 - każda zmiana kodu (dodanie funkcji, poprawka błędu, refaktoryzacja) MUSI kończyć się zmianą wersji - nawet najmniejsze poprawki wymagają podwyższenia numeru wersji - po każdej dodanej funkcjonalności opisz to w sekcji OPIS - po każdej zmienie dodaj to, co zostało zrobione w danej wersji # =========================== # Ustawienia dodatkowe # =========================== - odpowiadaj zawsze w języku polskim - przy wyszukiwaniu kolumn w tabelach zawsze używać nazwy kolumny (atrybut title, data-name lub textContent) zamiast indeksu kolumny - indeksy kolumn mogą się zmieniać, ale nazwy pozostają stabilne - funkcja findColumnByName powinna sprawdzać kolejno: title, data-name, textContent # =========================== # Nagłówek userscriptu - wymagane pola # =========================== - icon: "Zawsze dodawaj @icon z favicon strony docelowej" - downloadURL: "Dodaj @downloadURL dla automatycznych aktualizacji" - updateURL: "Dodaj @updateURL dla automatycznych aktualizacji" - grants: "Dodaj odpowiednie @grant dla używanych funkcji GM_*" # =========================== # Dokumentacja w skrypcie # =========================== - opis-sekcja: | Każdy skrypt musi mieć sekcję OPIS z: - Wymaganymi parametrami URL - Wymaganymi kolumnami w tabeli - Opisem działania skryptu - Listą funkcji kopiowania/przetwarzania - Informacjami o zapamiętywaniu ustawień - Informacjami o automatycznych aktualizacjach - changelog-sekcja: | Każdy skrypt musi mieć sekcję CHANGELOG z: - Numerem wersji i datą - Szczegółowym opisem zmian - Informacją o podwyższeniu numeru wersji - Format: "vX.Y (YYYY) - NAZWA ZMIANY"