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

safe-refactor

/safe-refactor

Refaktoryzuje JavaScript, TypeScript lub Python bez zmiany działania: wydziela funkcje, zmienia nazwy i dodaje typy. Przydaje się przy migracji JS do TS i upraszczaniu kodu.

Repozytorium
kiln ↗
Licencja
MIT
Ostatnia zmiana repozytorium
09.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 09.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

Refaktoryzuje JavaScript, TypeScript lub Python bez zmiany działania: wydziela funkcje, zmienia nazwy i dodaje typy. Przydaje się przy migracji JS do TS i upraszczaniu kodu.

Wyzwalacze z opisu

rapikan kode
Oryginalny opis (EN)

Refactor JavaScript/TypeScript or Python code without changing behavior — extract functions, rename, split large files, remove duplication, modernize syntax, add types — with tests as a safety net. Use whenever the user asks to refactor, clean up, simplify, "rapikan kode", restructure, migrate JS to TS, add type hints, or reduce complexity.

Jak działa

  1. 1. Baseline
  2. 2. Plan
  3. 3. Small steps, green between each
  4. 4. Don't sneak in behavior changes
  5. 5. Language-specific notes
  6. 6. Finish
Sekcje z nagłówków SKILL.md, w oryginale · 42 linii, 393 słów
Podgląd SKILL.md
---
name: safe-refactor
description: Refactor JavaScript/TypeScript or Python code without changing behavior — extract functions, rename, split large files, remove duplication, modernize syntax, add types — with tests as a safety net. Use whenever the user asks to refactor, clean up, simplify, "rapikan kode", restructure, migrate JS to TS, add type hints, or reduce complexity.
---

# Safe Refactor

Refactoring = changing structure **without** changing behavior. The whole skill is about proving behavior didn't change.

## 1. Baseline
- Run the tests that cover the target code; record the result. Also run type check and lint (`tsc --noEmit`, `eslint`; `mypy`/`pyright`, `ruff`).
- If coverage of the target is weak, write **characterization tests** first: tests that pin current behavior (including weird behavior) for the main inputs. Commit or stash-point here so you can roll back.
- If tests are failing before you start, tell the user — don't refactor on a red baseline.

## 2. Plan
Write a short plan listing each transformation and the risk. Show it to the user if the refactor touches more than ~3 files or changes a public API.

Find all usages before renaming/moving anything:
```
grep -rn "functionName" --include="*.ts" --include="*.tsx" --include="*.js" --include="*.py" .
```
Watch for dynamic usages grep might miss: string-based lookups, `getattr`, re-exports in `index.ts`/`__init__.py`, templates, config files.

## 3. Small steps, green between each
Do one transformation at a time and rerun tests after each:
- Extract function / component / hook
- Rename (symbol + all usages + imports)
- Replace conditional chains with lookup tables or early returns
- Remove dead code (confirm it's truly unused first)
- Split a large module; keep a re-export at the old path if external code imports it

If tests go red, undo the last step rather than debugging forward.

## 4. Don't sneak in behavior changes
- No bug fixes, feature additions, or dependency upgrades mixed in. If you spot a bug, note it and report it separately.
- Keep public signatures stable unless the user agreed to change them.
- Preserve error types/messages that callers might rely on.

## 5. Language-specific notes
**TypeScript:** prefer narrowing over `as`; replace `any` with real types or `unknown` + guards; use discriminated unions for state; `satisfies` for config objects.
**JS → TS migration:** rename file-by-file starting from leaves (utils) to roots; enable `strict` gradually; don't block on 100% types.
**Python:** add type hints from the outside in (public functions first); `dataclasses`/`pydantic` for dict-shaped data; replace `**kwargs` passthroughs with explicit params where it clarifies; f-strings; `pathlib` over `os.path`.

## 6. Finish
Run the full test suite + type check + lint. Summarize: what changed structurally, what was verified, and any bugs/smells noticed but deliberately left alone.

Wersje

RepozytoriumWynikLicencja
Ta strona · KILN-skills/kiln100MIT
Sanit-mann/The-Insectoids100MIT
meyshad/skillforge100MIT
yeaight7/agent-powerups96Apache-2.0

Migawka bazy z 13.11.2026 · wersja paczki 006ec1703085 (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

  • 90refactor-safely
    Refaktoryzuje kod bez zmiany jego działania: zmienia nazwy, wyodrębnia, dzieli pliki, usuwa duplikaty i upraszcza funkcje.
  • 100refactor-module
    Restrukturyzuje kod na zlecenie z ticketu bez zmiany działania: wydziela funkcje, dzieli pliki, zmienia nazwy i redukuje duplikację z zachowaniem zachowania.
  • 100refactor
    Bezpiecznie refaktoryzuje kod pod ochroną testów: czyści, upraszcza, wydziela funkcje i poprawia jakość bez zmiany zachowania.
  • 100dev-refactor
    Zmienia strukturę kodu bez zmiany zachowania: wyodrębnia funkcje, zmienia nazwy, usuwa duplikaty i dzieli moduły.
  • 100refactor-safely
    Zmienia strukturę działającego kodu bez zmiany jego działania: wyodrębnia metody, zmienia nazwy, dodaje testy i pracuje z kodem odziedziczonym.
  • 100refactor
    Poprawia istniejący kod bez zmiany zachowania: dzieli duże funkcje, uzupełnia testy i upraszcza logikę, obniżając złożoność.

Uwagi i zgłoszenia

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