code-craft
code-craft contiene 32 skills recopiladas de yanko-belov, con cobertura ocupacional por repositorio y páginas de detalle dentro del sitio.
Skills en este repositorio
Use when writing tests. Use when test structure is unclear. Use when arrange/act/assert phases are mixed.
Use when designing or modifying APIs. Use when adding breaking changes. Use when clients depend on API stability.
Use when implementing authentication. Use when storing passwords. Use when asked to store credentials insecurely.
Use when same data is fetched repeatedly. Use when database queries are slow. Use when implementing caching without invalidation strategy.
Use when tempted to use class inheritance. Use when creating class hierarchies. Use when subclass needs only some parent behavior.
Use when acquiring multiple locks. Use when operations wait for each other. Use when system hangs without crashing.
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.
Use when writing similar code in multiple places. Use when copy-pasting code. Use when making the same change in multiple locations.
Use when exposing internal state. Use when making fields public for convenience. Use when external code modifies object internals.
Use when deciding where to catch errors. Use when errors propagate too far or not far enough. Use when designing component/service isolation.
Use when returning errors from APIs. Use when exposing internal errors. Use when error responses lack structure.
Use when creating custom exceptions. Use when error handling feels chaotic. Use when catch blocks are too broad or too specific.
Use when handling errors. Use when tempted to catch and swallow exceptions. Use when returning default values to hide failures.
Use when creating mutation endpoints. Use when trusting frontend to prevent duplicates. Use when payments or critical operations can be repeated.
Use when modifying objects or arrays. Use when tempted to mutate function parameters. Use when state changes cause unexpected bugs.
Use when accepting user input. Use when handling request data. Use when trusting external data without validation.
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.
Use when tempted to write clever code. Use when solution feels complex. Use when showing off skills instead of solving problems.
Use when accessing nested object properties. Use when chaining method calls. Use when reaching through objects to get data.
Use when loading all data upfront. Use when initial page load is slow. Use when fetching data that might not be needed.
Use when creating subclasses or implementing interfaces. Use when tempted to override methods with exceptions or no-ops. Use when inheritance hierarchy feels wrong.
Use when fetching related data in loops. Use when seeing multiple queries for one request. Use when database is slow on list endpoints.
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.
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.
Use when designing API endpoints. Use when using wrong HTTP methods. Use when POST is used for reads.
Use when working with API keys, passwords, or credentials. Use when asked to hardcode secrets. Use when secrets might leak.
Use when component does too many things. Use when mixing data fetching, logic, and presentation. Use when code is hard to test.
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.
Always active. Tracks usage of code-craft skills across sessions. Log skill applications to enable analytics and identify gaps.
Use when implementing any new feature or function. Use when asked to "add tests later". Use when writing code before tests.
Use when writing tests that share state. Use when tests depend on other tests. Use when test order matters.
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.