From vibe-types
Scala 3 compile-time safety techniques — opaque types, enums/ADTs/GADTs, givens, match types, inline, capture checking. Use this skill whenever the user writes Scala 3 code, mentions type safety, asks about compiler errors, discusses ADTs, opaque types, given instances, context functions, match types, extension methods, or any Scala type system feature. Also use when porting type patterns from Rust, Python, or Haskell to Scala 3.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vibe-types:scala3The summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Base path:** `${CLAUDE_PLUGIN_ROOT}/skills/scala3`
README.mdcatalog/00-overview.mdcatalog/T01-algebraic-data-types.mdcatalog/T02-union-intersection.mdcatalog/T03-newtypes-opaque.mdcatalog/T04-generics-bounds.mdcatalog/T05-type-classes.mdcatalog/T06-derivation.mdcatalog/T07-structural-typing.mdcatalog/T08-variance-subtyping.mdcatalog/T09-dependent-types.mdcatalog/T12-effect-tracking.mdcatalog/T13-null-safety.mdcatalog/T14-type-narrowing.mdcatalog/T15-const-generics.mdcatalog/T16-compile-time-ops.mdcatalog/T17-macros-metaprogramming.mdcatalog/T18-conversions-coercions.mdcatalog/T19-extension-methods.mdcatalog/T20-equality-safety.mdBase path:
${CLAUDE_PLUGIN_ROOT}/skills/scala3
Union & intersection types — express alternatives without common supertype (A | B); combine capabilities (A & B) → catalog/T02-union-intersection.md
Type lambdas — abstract over type constructors inline; partially apply binary constructors for type-class shapes → catalog/T40-type-lambdas.md
Match types — compute types from types via pattern matching; type-level conditional logic → catalog/T41-match-types.md
Givens & using clauses — principled type-class dispatch; compiler supplies evidence automatically → catalog/T05-type-classes.md
Context functions & context bounds — abstract over contextual dependencies as types; lightweight capability annotation → catalog/T42-context-functions.md
Extension methods — attach operations to types you don't own; conditional syntax via type-class evidence → catalog/T19-extension-methods.md
Type-class derivation — auto-generate instances for any ADT from compile-time structure → catalog/T06-derivation.md
Multiversal equality — restrict == so only semantically meaningful comparisons compile → catalog/T20-equality-safety.md
Conversions, by-name params, deferred givens — explicit opt-in conversions; break circular given dependencies → catalog/T18-conversions-coercions.md
Enums, ADTs, GADTs — closed variant sets with exhaustive matching; per-branch type refinement → catalog/T01-algebraic-data-types.md
Opaque types — zero-cost distinct types sharing same representation; prevent value mix-ups without boxing → catalog/T03-newtypes-opaque.md
open, export, transparent — control extensibility; delegate via composition; suppress traits from inferred types → catalog/T21-encapsulation.md
Matchable & TypeTest — prevent pattern matching from breaking type abstractions; sound runtime type tests → catalog/T14-type-narrowing.md
Structural & refined types, named tuples — statically-checked duck typing; lightweight records without case classes → catalog/T07-structural-typing.md
Kind polymorphism — type parameters ranging over any kind; universal type tags → catalog/T35-universes-kinds.md
Inline & compile-time ops — constant folding, dead-branch elimination, compile-time specialization → catalog/T16-compile-time-ops.md
Macros (quotes & splices) — type-safe compile-time code generation and AST transformation → catalog/T17-macros-metaprogramming.md
Explicit nulls — reference types never hold null unless explicitly T | Null → catalog/T13-null-safety.md
Erased definitions — compile-time-only parameters; zero-cost type-level evidence → catalog/T27-erased-phantom.md
Capture checking & CanThrow — track captured capabilities; effect tracking and purity enforcement at type level → catalog/T12-effect-tracking.md
Experimental: named type args, into, modularity — selective type parameter binding; fine-grained conversion control → catalog/T43-experimental-preview.md
Changed & dropped features — more predictable inference and resolution; removed unsound Scala 2 features → catalog/T44-changed-dropped.md
Refinement types — value-level predicates enforced at compile time via Iron or refined libraries → catalog/T26-refinement-types.md
Generics & bounded polymorphism — upper/lower bounds, context bounds, F-bounded polymorphism → catalog/T04-generics-bounds.md
Variance & subtyping — covariant +A, contravariant -A, invariant; Liskov at the type level → catalog/T08-variance-subtyping.md
Callable types & overloading — function types, SAM types, eta-expansion, method overloading → catalog/T22-callable-typing.md
Type aliases — transparent aliases, parameterized aliases, type members, path-dependent types → catalog/T23-type-aliases.md
Record types & data modeling — case classes, named tuples, product types with auto-derived methods → catalog/T31-record-types.md
Self types — self-type annotations (self: T =>), capability requirements without inheritance → catalog/T33-self-type.md
Nothing & bottom type — universal subtype, throw, ???, empty collections, covariant widening → catalog/T34-never-bottom.md
Singleton types & compile-time value parameters — literal types, constValue, compiletime.ops; encode sizes/dimensions in types → catalog/T15-const-generics.md
Literal types — every literal has a singleton type; foundation for type-level computation and value discrimination → catalog/T52-literal-types.md
Path-dependent types — type members, instance-dependent types (x.Inner), abstract type members → catalog/T53-path-dependent-types.md
Immutability markers — val, final, sealed, immutable collections; immutability is the default → catalog/T32-immutability-markers.md
Trait-based dynamic dispatch — traits + abstract classes for runtime polymorphism; JVM vtable → catalog/T36-trait-objects.md
Given/implicit resolution — Scala's trait solver: search scopes, priority, divergence detection → catalog/T37-trait-solver.md
Associated types — abstract type members in traits; alternative to type parameters → catalog/T49-associated-types.md
Annotations & compiler directives — @inline, @tailrec, @targetName, @deprecated → catalog/T39-notation-attributes.md
Dependent types (via path-dependent + match types) — approximate value-indexed patterns → catalog/T09-dependent-types.md
Coherence & instance scoping (via given import rules) — no orphan rule; import-based visibility → catalog/T25-coherence-orphan.md
Functor / Applicative / Monad — map, flatMap, pure; compositional effect chaining via cats → catalog/T54-functor-applicative-monad.md
Monad transformers — EitherT, StateT, ReaderT; compose effects in a stack → catalog/T55-monad-transformers.md
Tagless final — decouple program description from interpretation; swap runtimes → catalog/T56-tagless-final.md
Typestate pattern — phantom types track state; invalid transitions don't compile → catalog/T57-typestate.md
Witness & evidence types — =:=, <:<, given evidence; compiler proves preconditions → catalog/T58-witness-evidence.md
Existential types — abstract type members, wildcard types; hide concrete types → catalog/T59-existential-types.md
Recursive types — sealed enum/trait hierarchies defined in terms of themselves → catalog/T61-recursive-types.md
usecases/UC01-invalid-states.mdusecases/UC02-domain-modeling.mdusecases/UC10-encapsulation.mdusecases/UC11-effect-tracking.mdusecases/UC12-compile-time.mdusecases/UC13-state-machines.mdusecases/UC14-extensibility.mdusecases/UC15-equality.mdusecases/UC16-nullability.mdusecases/UC17-variance.mdusecases/UC18-type-arithmetic.mdusecases/UC19-serialization.mdusecases/UC09-builder-config.mdusecases/UC08-error-handling.mdnpx claudepluginhub jpablo/vibe-types --plugin vibe-typesExplains Scala's advanced type system including generics, variance, type bounds, implicits, type classes, higher-kinded types, path-dependent types for type-safe APIs.
Guides functional programming in Scala 3 using ZIO, Cats Effect, opaque types for domain modeling, monadic chaining, error accumulation, and hexagonal architecture on JVM.
Provides enterprise Scala expertise in functional programming (ZIO, Cats Effect), distributed systems (Pekko, Akka, Spark), reactive streams, and DDD/microservices patterns.