What problem does it solve? Business code often becomes tightly coupled to specific vendor SDKs (Redis, Kafka, Datadog, Oracle), making technology swaps expensive and risky. This Skill enforces a hexagonal architecture where every external integration sits behind a project-owned port interface, so providers can be replaced or combined purely through configuration. ## Core Features & Use Cases - Three-Layer Structure: Generates a vendor-free port under spi/, vendor-specific adapters under adapter/<vendor>/, and conditional wiring under config/ for every capability. - Config-Driven Selection: Uses @ConditionalOnProperty, @ConditionalOnClass, and @ConditionalOnMissingBean so swapping a cache or metrics backend requires only a one-line property change. - Multi-Provider Composition: Supports broadcast, failover, priority, and weighted modes via a composite adapter with per-provider failure isolation. - Mechanical Enforcement: Provides ArchUnit rules that fail the build if vendor types leak into spi/ or domain code depends on adapters. - Use Case: When adding a cache to a Spring Boot service, apply this Skill to create a CachePort interface, Redis and NoOp adapters, and a platform.cache.provider property — then switch providers later without touching business logic. ## Quick Start Apply the pluggable-architecture skill to refactor this service so its Redis cache access goes through a vendor-free port interface with configuration-driven adapter selection.