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

unhappy

/unhappy

Inwentaryzuje i implementuje wszystkie stany niepomyślne (ładowanie, pusty, błąd, częściowy, konflikt, offline) przed ścieżką pomyślną i zamienia niemożliwe stany boolean na maszyny stanów.

Repozytorium
ui-craft ↗
Licencja
MIT
Ostatnia zmiana repozytorium
19.10.2026

Ocena i bezpieczeństwo

92/ 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ść27 / 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
1
Adresy URL w SKILL.md
0
Przestarzałość

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

Licencja

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

Co sprawdzić przed instalacją
  • SKILL.md zawiera komentarze HTML (1). Nie widać ich w podglądzie Markdown, a model je czyta.

Co robi i kiedy

Inwentaryzuje i implementuje wszystkie stany niepomyślne (ładowanie, pusty, błąd, częściowy, konflikt, offline) przed ścieżką pomyślną i zamienia niemożliwe stany boolean na maszyny stanów.

Wyzwalacze z opisu

handle the error state\add loading states\what happens when data is missing\unhappy
Oryginalny opis (EN)

State-first design pass — inventories and implements all non-happy states (loading, empty, error, partial, conflict, offline) before the happy path, and refactors impossible boolean state to proper state machines. Use when starting a new screen, reviewing an existing one for edge-case gaps, or when the user says \"handle the error state\" / \"add loading states\" / \"what happens when data is missing\". Invoke when the user asks for unhappy on their UI, or mentions 'unhappy' alongside design / UI / frontend work.

Jak działa

SKILL.md bez nagłówków drugiego poziomu · 47 linii, 472 słów

Podgląd SKILL.md
---
name: unhappy
description: "State-first design pass — inventories and implements all non-happy states (loading, empty, error, partial, conflict, offline) before the happy path, and refactors impossible boolean state to proper state machines. Use when starting a new screen, reviewing an existing one for edge-case gaps, or when the user says \"handle the error state\" / \"add loading states\" / \"what happens when data is missing\". Invoke when the user asks for unhappy on their UI, or mentions 'unhappy' alongside design / UI / frontend work."
---

<!-- HARNESS MIRROR — do not edit here. Canonical source: skills/ or commands/. After editing source, copy into cli/assets/<harness>/ and repo-root harness mirrors. -->

**Context:** this sub-skill is one lens of the broader `ui-craft` skill. If the `ui-craft` skill is also installed, read its SKILL.md first for Discovery + Anti-Slop + Craft Test, then apply the specific lens below.

Design every non-happy state for the UI at `$ARGUMENTS`. Load the `ui-craft` skill and read `references/state-design.md`.

**Step 1 — Inventory.** List every data source and interactive surface in the target. For each, enumerate its states:

| Surface | idle | loading | empty | error | partial | conflict | offline |
|---------|------|---------|-------|-------|---------|----------|---------|

Mark each cell as **designed** (exists in code), **missing** (must add), or **N/A** (not applicable — e.g., a read-only view has no conflict state).

**Step 2 — Fill the missing states.** For each missing state, either stub it inline or add a follow-up task comment. Use `references/state-design.md` for:
- Skeleton sizing (match final layout, 200ms delay, 5s upper bound)
- Empty-state copy (why empty + next action + visual)
- Error-state contract (specific cause + one-click recovery + support ID)
- Offline handling (queue writes + reconcile on reconnect)

**Step 3 — Audit the happy path.** Flag every spot where the happy path assumes resource presence without checking. Fix with early-returns, state guards, or discriminated-union state handling. Booleans like `isLoading && !error && data` that allow impossible states are findings — refactor to a proper state machine or reducer.

**Step 4 — Optimistic UI + reconciliation.** For offline-likely actions (saves, sends, edits, toggles), implement optimistic UI with reconciliation on reconnect. Queue writes locally. Surface any rejected writes — never swallow them.

**Knob gating (CRAFT_LEVEL):**

| CRAFT_LEVEL | Required states to stub |
|-------------|-------------------------|
| ≤ 4 | idle, loading, error |
| 5-7 | idle, loading, empty, error, success |
| 8+ | all six — add partial, conflict, offline |

If `CRAFT_LEVEL` is unknown, default to 7.

**Convergence note:** To iterate until all required states are present, load `skills/ui-craft/references/loops.md` and run preset `state-coverage` (budget = the default loop budget defined in loops.md): after stubbing the highest-priority missing required state, re-inventory until all knob-required states are present or budget exhausted. Emit the pre-flight cost notice before iteration 1.

**Output:** edit the code directly. After each file, print the Review Format table from SKILL.md:

| Before | After | Why |
| --- | --- | --- |
| no loading state on `<ProjectList>` | skeleton rows matching final layout, 200ms delay | prevents "is it broken?" perception; avoids CLS |
| generic "Error" toast | inline error with specific cause + retry + support ID | recoverability (heuristic 9) |

One row per state added. No full diffs.

**Next step:** `/harden` — implement the states you just designed (rung 1).

Wersje

W bazie nie ma innych skilli o nazwie unhappy.

Identyczna treść występuje jeszcze w 6 innych folderach na GitHubie. Tu pokazujemy jedną, najlepiej ocenioną kopię.

Migawka bazy z 28.10.2026 · wersja paczki d30ae27a01bb (skrót SHA-256 całej paczki)

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

Podobne skille

  • 100audit-ui-states
    Wykonuje audyt stanów interfejsu na nieszczęśliwej ścieżce tylko do odczytu: pusty, ładowanie, błąd, offline, brak wyników, brak uprawnień i przepełnienie, po czym układa plan poprawek.
  • 90frontend-build
    Implementuje pracę nad interfejsem stan po stanie: pusty, ładowanie, błąd, częściowy i zdegenerowany, z natywnymi elementami, stanem pochodnym i obsługą klawiatury, tak by zmiana działała poza szczęśliwą ścieżką.
  • 100balise-ui-states
    Audytuje, projektuje, implementuje i weryfikuje brakujące stany interfejsów: idealny, pusty, częściowy, ładowanie, sukces, błąd, offline, uprawnienia, nieaktualny i optymistyczny.
  • 82harden
    Przygotowuje interfejs do produkcji: stany ładowania, błędów, braku danych, uprawnień i pierwszego uruchomienia.
  • 100interface-states
    Wylicza i projektuje każdy stan powierzchni UI (początkowy, ładowanie, pusty, wypełniony, częściowy, błąd, nieaktualny, offline, wyłączony, brak uprawnień) i tworzy macierz stanów przed implementacją lub razem z nią.
  • 90ui-state-machines
    Modeluje interfejs jako jawne skończone stany, aby niemożliwe kombinacje nie mogły się wyrenderować, gdy komponent żongluje powiązanymi flagami boolean.

Uwagi i zgłoszenia

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