Покрыть код обработкой ошибок (try/catch/finally) + грамотные логи без «тихих» падений (роль resilience). Use when код надо ИЗМЕНИТЬ — обернуть границы и добавить обработку; только найти дыры без правок — $resilience-audit, только логи — $resilience-logging.
Installs into .claude/skills of the current project.
Are you the author of Resilience Harden?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/vitammiin-resilience-harden)
---
name: resilience-harden
description: Покрыть код обработкой ошибок (try/catch/finally) + грамотные логи без «тихих» падений (роль resilience). Use when код надо ИЗМЕНИТЬ — обернуть границы и добавить обработку; только найти дыры без правок — $resilience-audit, только логи — $resilience-logging.
---
# Задача: покрыть код обработкой ошибок + логами (resilience)
Грамотно покрой указанный код (см. `$error-handling`).
Ставь `try/catch` **на границах** (I/O, внешние API, `JSON.parse`/zod, транзакции, cleanup) — не вокруг каждой строки; программные баги пусть всплывают до глобального обработчика. В каждом `catch` — одно из трёх: обработать + залогировать, пробросить (`throw new AppError(msg, { cause: error })`), либо преобразовать в доменную ошибку; **пустой `catch {}` недопустим**. В TS `catch (e: unknown)` — сузь тип. Ресурсы освобождай в `finally`. Транзиентные внешние вызовы — таймаут (`AbortSignal.timeout`) + идемпотентный ретрай с бэкоффом.
Логи: структурные, правильные уровни, **один раз** на границе обработки (пробрасываешь — не логируй тут), с контекстом/`requestId`, ошибку целиком (`stack`+`cause`), **без секретов/PII**. После обёртывания **докажи, что поведение не изменилось**: прогони затронутые тесты и/или запусти код и покажи вывод — те же результаты и статусы на happy-path; обработка ошибок не должна менять логику. Красный прогон — чини до зелёного, не сдавай. Опирайся на `$error-handling`, `$nodejs`, `$typescript`, `$backend-architecture`, `$react`.