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

turbo-frames-patterns

/turbo-frames-patterns

Zawęża nawigację do wybranego obszaru strony przez Turbo Frames i wykrywa błędy połączeń, które cicho nie działają.

Licencja
MIT
Ostatnia zmiana repozytorium
02.07.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
3
Skrypty
1
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 02.07.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ą
  • 1 skrypt w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: scripts/lint_turbo_frames.sh

Co robi i kiedy

Zawęża nawigację do wybranego obszaru strony przez Turbo Frames i wykrywa błędy połączeń, które cicho nie działają.

Oryginalny opis (EN)

Scope navigation to a region with Turbo Frames correctly, and catch the wiring mistakes that fail silently. Use when adding a turbo_frame_tag (a turbo-frame element), driving a frame from an outside link/form, lazy-loading a panel (src + loading: :lazy), inline-editing a row, or debugging a frame that does nothing / a click that navigates nowhere / a filter form that loses focus / duplicate frame ids from a collection. The region-scoped complement to targeted streams (turbo-streams-patterns) and morph refreshes (turbo-morphing).

Jak działa

  1. When to use
  2. The patterns (and their footguns)
  3. Lint an app
Sekcje z nagłówków SKILL.md, w oryginale · 54 linii, 415 słów
Podgląd SKILL.md
---
name: turbo-frames-patterns
description: Scope navigation to a region with Turbo Frames correctly, and catch the wiring mistakes that fail silently. Use when adding a turbo_frame_tag (a turbo-frame element), driving a frame from an outside link/form, lazy-loading a panel (src + loading: :lazy), inline-editing a row, or debugging a frame that does nothing / a click that navigates nowhere / a filter form that loses focus / duplicate frame ids from a collection. The region-scoped complement to targeted streams (turbo-streams-patterns) and morph refreshes (turbo-morphing).
---

# Turbo Frames

Frames scope navigation to a region: a click or form submit inside a `<turbo-frame>` is
captured by Turbo and only that frame updates. The failures are quiet — a mistargeted or
missing frame produces no error, just navigation that goes nowhere. Full patterns:
[`references/turbo-frames-guide.md`](references/turbo-frames-guide.md).

## When to use

- Adding a frame (`turbo_frame_tag "id"` / `<turbo-frame id="id">`).
- Driving a frame from **outside** (`data: { turbo_frame: "id" }`) — e.g. a filter bar
  above a list.
- Lazy-loading a panel (`src:` + `loading: :lazy`).
- Inline-editing one record (a per-row `turbo_frame_tag dom_id(record)`).
- Debugging: a frame that does nothing, a click that navigates nowhere, a filter form
  that loses focus on each keystroke, or duplicate ids from a collection partial.

## The patterns (and their footguns)

1. **Target must resolve** — a link targeting `turbo_frame: "x"` needs a
   `turbo_frame_tag "x"` in the response (and your views), or the click silently does
   nothing. Use `_top` to break out to a full-page navigation (the common case for row
   links). *(linted)*
2. **Collection partials use `dom_id(record)`** — a literal `turbo_frame_tag "card"` in a
   per-row partial stamps the same id on every row → duplicate DOM ids, only the first
   updates. *(linted)*
3. **Frame request variant** — render the lean `show.html+turbo_frame.erb` for frame
   requests (`turbo_frame_request?`) instead of re-rendering the whole layout.
4. **`turbo_action: "advance"`** — frame navigations don't change the URL by default;
   promote tab/list/filter frames so reload/back/forward work.
5. **Filter/search forms go OUTSIDE the frame they target** — a form inside the frame
   replaces itself (and the focused input) on every submit.
6. **Lazy frames** — `src:` + `loading: :lazy` defer content; the `src` response must
   contain a matching `<turbo-frame id>` or the frame stays empty.

Patterns 3–6 aren't checker-able with low false positives — see the reference.

## Lint an app

```bash
scripts/lint_turbo_frames.sh path/to/rails-app
```

Flags (HIGH confidence, literal ids only): a **dangling frame target** — a link/form
targets a frame id with no `turbo_frame_tag` / `<turbo-frame id>` defined in any view
(navigation goes nowhere); a **literal frame id inside a collection partial** — duplicate
DOM ids (use `dom_id`). Reserved targets (`_top`/`_self`) and dynamic ids
(`dom_id(...)`, interpolation, `<%= %>`) are never flagged — when either side is dynamic
it can't be resolved statically, so it's skipped and reported as such. Heuristic regex
scan (needs `ruby`), not an ERB/HTML parser — names its ceiling. Verified: clean on
miela_app (6 real frames, all targets resolve, collection partials use `dom_id`), flags a
synthetic dangling-target + duplicate-id app.
Pliki w paczce (3)
  • SKILL.md 3 KB
  • references/turbo-frames-guide.md 6 KB
  • scripts/lint_turbo_frames.sh 6 KB

Wersje

W bazie nie ma innych skilli o nazwie turbo-frames-patterns.

Migawka bazy z 28.10.2026 · wersja paczki f8900b5e6b69 (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

  • 100developing-with-turbo-frames
    Pomaga pracować z Turbo Frames w Laravel dla nawigacji w zakresie ramki i leniwego ładowania: komponent x-turbo::frame, data-turbo-frame, atrybut src, data-turbo-action, wasFromTurboFrame() i morphing ramek.
  • 100turbo-morphing
    Stosuje odświeżanie stron Turbo 8 z morfowaniem i transmisję odświeżeń, unikając pułapek, takich jak utrata stanu przeglądarki.
  • 100turbo-patterns
    Tworzy Turbo Streams, Turbo Frames i wzorce morfowania do aktualizacji interfejsu w czasie rzeczywistym i renderowania częściowego.
  • 100turbo-streams-patterns
    Buduje precyzyjne Turbo Streams: transmisje modeli przez Action Cable, własne akcje, autoryzację subskrybentów i obecność Kredis.
  • 100rails-hotwire
    Podpowiada dobre praktyki Hotwire w Rails: Turbo Drive, Frames, Streams, morphing w Turbo 8 i kontrolery Stimulus, w tym obsługę błędów i progresywne ulepszanie.
  • 100hotwire-patterns
    Wyjaśnia modele myślowe i wzorce decyzyjne Hotwire (Turbo, Stimulus, Hotwire Native) w aplikacjach Rails oraz pomaga debugować Turbo Frames, Streams, ActionCable, cache i kontrolery Stimulus.

Uwagi i zgłoszenia

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