yanko-belov

yanko-belov

@yanko-belov

GitHub
28 Skills
308 Total Stars
February 2026 Joined

Public Skills

aaa-pattern

by yanko-belov

Use when writing tests. Use when test structure is unclear. Use when arrange/act/assert phases are mixed.

Code Gen 11 4mo ago

dont-repeat-yourself

by yanko-belov

Use when writing similar code in multiple places. Use when copy-pasting code. Use when making the same change in multiple locations.

File Ops 11 4mo ago

deadlock-prevention

by yanko-belov

Use when acquiring multiple locks. Use when operations wait for each other. Use when system hangs without crashing.

Code Gen 11 4mo ago

caching

by yanko-belov

Use when same data is fetched repeatedly. Use when database queries are slow. Use when implementing caching without invalidation strategy.

Caching 11 4mo ago

immutability

by yanko-belov

Use when modifying objects or arrays. Use when tempted to mutate function parameters. Use when state changes cause unexpected bugs.

Code Gen 11 4mo ago

interface-segregation-principle

by yanko-belov

Use when designing interfaces. Use when implementing interfaces with methods you don't need. Use when forced to implement throw/no-op for interface methods.

Debugging 11 4mo ago

encapsulation

by yanko-belov

Use when exposing internal state. Use when making fields public for convenience. Use when external code modifies object internals.

Code Gen 11 4mo ago

api-versioning

by yanko-belov

Use when designing or modifying APIs. Use when adding breaking changes. Use when clients depend on API stability.

API Dev 11 4mo ago

fail-fast

by yanko-belov

Use when handling errors. Use when tempted to catch and swallow exceptions. Use when returning default values to hide failures.

Code Gen 11 4mo ago

liskov-substitution-principle

by yanko-belov

Use when creating subclasses or implementing interfaces. Use when tempted to override methods with exceptions or no-ops. Use when inheritance hierarchy feels wrong.

Code Gen 11 4mo ago

law-of-demeter

by yanko-belov

Use when accessing nested object properties. Use when chaining method calls. Use when reaching through objects to get data.

Agents 11 4mo ago

open-closed-principle

by yanko-belov

Use when adding new functionality to existing code. Use when tempted to add if/else or switch branches. Use when extending behavior of existing classes.

Code Gen 11 4mo ago

dependency-inversion-principle

by yanko-belov

Use when a class creates its own dependencies. Use when instantiating concrete implementations inside a class. Use when told to avoid dependency injection for simplicity.

Code Gen 11 4mo ago

auth-patterns

by yanko-belov

Use when implementing authentication. Use when storing passwords. Use when asked to store credentials insecurely.

Auth 11 4mo ago

composition-over-inheritance

by yanko-belov

Use when tempted to use class inheritance. Use when creating class hierarchies. Use when subclass needs only some parent behavior.

Docker 11 4mo ago

you-aint-gonna-need-it

by yanko-belov

Use when tempted to add features "for later". Use when building "production-ready" systems before needed. Use when adding flexibility that isn't required yet.

Embeddings 11 4mo ago

secrets-handling

by yanko-belov

Use when working with API keys, passwords, or credentials. Use when asked to hardcode secrets. Use when secrets might leak.

Debugging 11 4mo ago

test-driven-development

by yanko-belov

Use when implementing any new feature or function. Use when asked to "add tests later". Use when writing code before tests.

Refactoring 11 4mo ago

error-responses

by yanko-belov

Use when returning errors from APIs. Use when exposing internal errors. Use when error responses lack structure.

Processing 11 4mo ago

single-responsibility-principle

by yanko-belov

Use when creating or modifying classes, modules, or functions. Use when feeling pressure to add functionality to existing code. Use when class has multiple reasons to change.

Auth 11 4mo ago

input-validation

by yanko-belov

Use when accepting user input. Use when handling request data. Use when trusting external data without validation.

Processing 11 4mo ago

keep-it-simple

by yanko-belov

Use when tempted to write clever code. Use when solution feels complex. Use when showing off skills instead of solving problems.

Processing 11 4mo ago

idempotency

by yanko-belov

Use when creating mutation endpoints. Use when trusting frontend to prevent duplicates. Use when payments or critical operations can be repeated.

Code Gen 11 4mo ago

n-plus-one-prevention

by yanko-belov

Use when fetching related data in loops. Use when seeing multiple queries for one request. Use when database is slow on list endpoints.

Caching 11 4mo ago

error-boundaries

by yanko-belov

Use when deciding where to catch errors. Use when errors propagate too far or not far enough. Use when designing component/service isolation.

Processing 11 4mo ago

separation-of-concerns

by yanko-belov

Use when component does too many things. Use when mixing data fetching, logic, and presentation. Use when code is hard to test.

Processing 11 4mo ago

race-conditions

by yanko-belov

Use when multiple operations access shared state. Use when order of operations matters. Use when "it works most of the time" but occasionally fails mysteriously.

Caching 11 4mo ago

lazy-loading

by yanko-belov

Use when loading all data upfront. Use when initial page load is slow. Use when fetching data that might not be needed.

Analytics 11 4mo ago