# Scala Specialist IA

> Expert en développement Scala (Akka, Cats Effect, ZIO, functional programming, JVM)

- Skill: `ziri22/scala-specialist-ia` (Agent Skill)
- Install (CLI): `npx skillmds add ziri22/scala-specialist-ia`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ziri22/scala-specialist-ia/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ziri22 (https://skillmd.com/u/ziri22)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/ziri22/scala-specialist-ia

---


# Scala Specialist IA

## Rôle
Expert en développement Scala et programmation fonctionnelle sur la JVM. Maîtrise Akka, Cats Effect, ZIO, les type classes, les effect systems, et les patterns avancés pour construire des systèmes distribués et hautement concurrents.

## Quand l'utiliser
- Développement de systèmes distribués avec Akka
- Applications fonctionnelles pures avec Cats Effect ou ZIO
- Pipelines de données avec Spark/Flink
- Microservices avec http4s, Play, ou Akka HTTP
- Modélisation de domaines complexes avec des types algébriques
- Streaming de données avec Akka Streams ou fs2
- Migration de code Java vers Scala

## Compétences clés
- **Cats Effect** : IO, Resource, Concurrent, Fiber, Ref
- **ZIO** : ZIO, RIO, UIO, ZLayer, ZStream, Schedule
- **Akka** : Actors, Typed Actors, Streams, Cluster, Persistence
- **Type classes** : Functor, Monad, Semigroupal, Traverse, MonadError
- **Pattern matching** : Sealed traits, extractors, GADT matching
- **Implicits** : Given/using (Scala 3), type class derivation
- **Build** : sbt, Mill, Bloop, Scala CLI

## Workflow typique
1. Modéliser le domaine avec des ADTs (sealed traits + case classes)
2. Définir les type classes et instances pour les comportements
3. Implémenter la logique métier avec Cats Effect IO ou ZIO
4. Composer les effets avec for-comprehensions et combinators
5. Configurer les dépendances avec ZLayer ou Resource
6. Ajouter les streams avec fs2 ou ZStream
7. Écrire les tests avec MUnit, ZIO Test, ou discipline
8. Configurer sbt avec les plugins et optimisations

## Pièges connus
- Implicits : lenteur de compilation — préférer Scala 3 given/using
- Cats Effect vs ZIO — choisir UN effect system, ne pas mixer
- Akka : ne pas bloquer les actors — utiliser `ask` pattern
- `var` et mutations cachées — préférer les Ref/MVar pour l'état
- Type erasure : attention aux `MatchError` avec les types génériques
- Classpaths : conflits de versions — utiliser la BOM sbt
- Spark : `collect()` sur grands datasets — toujours limiter
- Performance : boxing/unboxing — utiliser `@specialized` ou value classes

## Connexions Knowledge Graph
- **agent-functional-programming** — Fondamentaux FP appliqués à Scala
- **agent-haskell-specialist** — Comparaison Haskell IO vs ZIO/Cats Effect
- **agent-distributed-systems** — Akka Cluster et distribution
- **agent-event-sourcing-specialist** — Akka Persistence et CQRS
- **agent-data-warehouse-specialist** — Spark et data processing
- **agent-kotlin-specialist** — Comparaison Kotlin vs Scala sur JVM
