Przejdź do treści
Biblioteka skilli
Projektowanie i UX · Budowanie i kod

hover-state

/hover-state

Sprawdza i dodaje reakcje na najechanie w rysowanym interfejsie: uchwyty, zakładki, wiersze, klawisze i przyciski.

Repozytorium
claude-packs ↗
Licencja
MIT
Ostatnia zmiana repozytorium
11.11.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
1
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 11.11.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Sprawdza i dodaje reakcje na najechanie w rysowanym interfejsie: uchwyty, zakładki, wiersze, klawisze i przyciski.

Oryginalny opis (EN)

Use when a control, handle, tab, list row, key or button is added or changed in a drawn UI, when a user says something does not react under the mouse, or when a hover gate is written or fails.

Jak działa

  1. Add the hover to a new control
  2. Prove it: the hover walk
  3. Declare it
  4. Worked example
Sekcje z nagłówków SKILL.md, w oryginale · 30 linii, 519 słów
Podgląd SKILL.md
---
name: hover-state
description: Use when a control, handle, tab, list row, key or button is added or changed in a drawn UI, when a user says something does not react under the mouse, or when a hover gate is written or fails.
---

# Hover state (one job: every pressable thing answers the pointer, and a gate proves it)

The law is the rule `hover-every-pressable`: a cursor naming the interaction, and a small visible effect on the hovered thing itself. The hover follows the press's own hit test.

## Add the hover to a new control
1. Find the one function the press uses to find the item under the pointer (the hit test). If there is none, make one and have the press call it.
2. Have the mouse-move path call that same function and store the result (the hovered id). Do not keep a second list of hoverable things.
3. Pick the cursor from the interaction, not the look: drag up-down, drag left-right, drag both ways (a 2-D point), press (button, tab, row, key), text. Set it from the hovered id.
4. Draw the effect on the item's own pixels from the hovered id: a lift, a ring, a brighten. Ease it over about 0.1 s on the frame clock (not the wall clock, or two runs differ). A neighbour must not change.
5. Disabled looks are for what is truly disabled. If the press works, the hover shows.
6. Add the item to the hover walk (below) in the same change.

## Prove it: the hover walk
A gate that runs the real window (or the real page) and, for one item of each template and every one-off the pointer can act on (`test-the-template-once`: a template's other instances are proved by a read that they are built from it):
1. moves the pointer there through the same function a mouse move calls, and waits the glide on the virtual frame clock;
2. reads that the hover model found the item the press finds there (the two lists agree);
3. reads that the cursor is the interaction's;
4. reads the pixels of the item's box and of a ring round it, hovered against at rest: the box changes by a floor (pixels and share), the ring does not;
5. moves away and reads that the box came back to rest.
Rows a press cannot reach (another control covers every point) are listed, not judged. Run it twice and require one digest (a wall-clock hover differs between runs).

Plant its faults so the gate is seen red: hover off altogether, one kind of item with no cursor or effect, one kind drawn interactive but left off the hover list, the wall clock in place of the frame clock. A gate never seen red is not a gate.

## Declare it
`layout.json`: `"gates": { "hover": "<the command>" }`. `doctor` is red while the project has UI code and no gate is declared, or the declared command names a file that is not there. A project with truly no pointer says `"hover": "none: <reason>"`.

## Worked example
Stellix: `tools/gates/hover_gate.sh` (the runner and its `--selftest` plants), `lib/app/gates/editor_hoverwalk_read.h` (the walk that hovers every item through the mouse-move path), `tools/gates/hover_judge.py` (the judge: cursor per kind, own pixels change, ring does not, comes back). Read them for the shape; the numbers and names are that project's own.

Wersje

RepozytoriumWynikLicencja
Ta strona · TheDecipherist/claude-packs100MIT
TheDecipherist/claude-packs100MIT

Migawka bazy z 13.11.2026 · wersja paczki 2bf5a507f542 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100hover-interactions
    Dodaje efekty najechania myszką: podświetlenia przycisków, unoszenie kart, podkreślenia linków i powiększenia obrazów.
  • 90micro-interactions
    Dodaje do interfejsu małe animacje: najechanie, wciśnięcie, fokus, przełączniki, ładowanie i zmiany stanu, jako spójny system w czystym CSS.
  • 95hover-video
    Buduje w React przycisk z wideo po najechaniu, który zamienia napis w pompowane litery 3D i odtwarza wideo w tył po zjechaniu kursorem.
  • 100button-states
    Wyprowadza stany przycisku (spoczynek, hover, active, focus, disabled, loading) z koloru bazowego, przy projektowaniu przycisków, linków, pól i klikalnych komponentów.
  • 90figma-analyze-component-set
    Analizuje zestaw wariantów komponentu Figma jak maszynę stanów: osie wariantów, mapowanie na pseudoklasy CSS i różnice między stanami.
  • 90analyze-component-set-figma
    Analizuje zestaw komponentów Figma jako maszynę stanów: wyciąga osie wariantów, mapuje stany na pseudoklasy CSS i liczy różnice wizualne wariantów do generowania interaktywnych komponentów.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.