dependency-inversion-principle
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.
Discover Testing & security skills, compare source repositories and read the instructions for each workflow.
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 handling errors. Use when tempted to catch and swallow exceptions. Use when returning default values to hide failures.
Use when acquiring multiple locks. Use when operations wait for each other. Use when system hangs without crashing.
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 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 add features "for later". Use when building "production-ready" systems before needed. Use when adding flexibility that isn't required yet.
Use when creating custom exceptions. Use when error handling feels chaotic. Use when catch blocks are too broad or too specific.
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.
Python application architecture with functional core, effectful shell, DDD, and data modeling. Use when designing application layers, separating pure business logic from IO, defining domain models, implementing...
Use when component does too many things. Use when mixing data fetching, logic, and presentation. Use when code is hard to test.
Robotics Operating System (ROS 1 & 2) expert. Specializes in node lifecycle, transformations (TF2), URDF modeling, navigation, and build systems (catkin/colcon).
Modern Python language features and typing patterns. Use when writing type hints, using generics, implementing pattern matching, working with async/await, or leveraging Python 3.10+ features.
ROS 2 Test-Driven Development workflow using gtest (C++) and pytest (Python). Enforces 80%+ coverage for critical nodes.
Use when writing tests. Use when test structure is unclear. Use when arrange/act/assert phases are mixed.
Stub-Driven TDD and layer boundary testing with pytest. Use when writing tests, deciding what to test, testing at component boundaries, or implementing test-driven development.
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.
TypeScript testing patterns with Vitest and MSW. Use when writing unit tests, mocking APIs, creating typed mocks for dependency injection, or using snapshot testing.
Comprehensive MCP server development guide covering FastMCP 2.14.3 features, Anthropic standards, ecosystem integration, and production deployment across all agentic IDEs
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends Claude's capabilities with specialized knowledge, workflows, or to...
(PREFERRED) Execute native UI automation tasks on mobile devices using DSL batch execution. Use this skill FIRST when user asks to test apps, tap elements, verify screens, automate, or interact with devices. Wo...
Obsidian vault mechanics - wiki links, .obsidian/ config, daily notes, plugins. Use when working with Obsidian vaults or structured markdown.
Guide for creating Claude Code commands with skill integration. Use when users want to create a new Claude Code command specification, whether skill-based or standalone. Assists with command definition, skill d...
Use when analyzing cognitive load, code complexity, onboarding difficulty, readability concerns, maintainability issues, or applying Ousterhout principles for deep modules, reducing complexity, and strategic pr...
The default order uses GitHub repository stars from our indexed data. Stars belong to the source repository and may be shared by multiple skills. They indicate repository interest, not skill installs or an independent quality score.