dependency-add
Evaluar y añadir una dependencia nueva (Gradle/Version Catalog) con versión exacta; no para actualizar o quitar (dependency-maintenance).
SKILL.md.claude/skills/dependency-add/SKILL.md
GitHubdependency-add
Decide si una dependencia merece entrar y, solo entonces, la añade con versión exacta y decisión registrada. Sin esta skill no se añade ninguna dependencia (CLAUDE.md § Reglas de trabajo).
Cuándo usarla
- Se propone una librería o plugin nuevo para
app/omotor/(o para un script del repo).
Cuándo NO usarla
- Actualizar, quitar o inventariar licencias de lo existente → usa
dependency-maintenance. - Herramienta ya fijada en
docs/DECISIONES.md(versiones): usar esa versión, sin repetir la evaluación completa.
Precondiciones
- Nombre de la librería y módulo destino claros (
app,motor). Si faltan, pedirlos y parar. gradle/libs.versions.tomles reservado del agente principal: un subagente propone el cambio en su respuesta.- Hito activo compatible con la dependencia (no implementar fuera del hito).
Pasos
- Necesidad: ¿lo resuelve la plataforma, la librería estándar de Kotlin o algo ya presente (
Grepengradle/libs.versions.tomly*.gradle.kts)? Si sí, no añadir. - Licencia: compatible con una app publicada en Play (MIT, Apache-2.0, BSD, ISC). Copyleft (GPL/AGPL) o sin licencia → parar, apuntar en
QUESTIONS.mdy consultar. Datos y modelos (mapas, voces) con su licencia y atribución. - Mantenimiento: último release, frecuencia, issues críticos. Datos no verificables → marcar
VERIFICAR, no afirmarlos. - Tamaño: impacto en el APK (librerías nativas por ABI) y en el arranque; evitar transitivas pesadas.
motor/debe seguir siendo Kotlin/JVM puro (sin dependencias Android). - Seguridad y offline: sin telemetría ni dependencia de servicios en línea (la app es offline por defecto, sin backend); sin Google Play Services; permisos nuevos en el manifest justificados.
- Versión exacta publicada hace ≥ 2 semanas; compatible con Kotlin, AGP y las versiones fijadas en
docs/DECISIONES.md. - Instalar: versión y alias en
gradle/libs.versions.toml([versions]y[libraries]/[plugins]) y usarlo víalibs.*; nunca coordenadas con versión enbuild.gradle.kts. Sin rangos ni+. - Registrar la decisión con
registrar-decision: investigación endocs/investigacion/si es estructural (mapas, enrutado, TTS, persistencia, red); si no, una línea endocs/DECISIONES.mdvía agente principal.
Validaciones / tests
./gradlew assembleDebug testDebugUnitTest :motor:test(la build resuelve la dependencia)../gradlew ktlintCheck detekt lintDebug.
Definition of Done
- Necesidad, licencia, mantenimiento, tamaño y seguridad evaluados y anotados.
- Versión exacta con ≥ 2 semanas de antigüedad y compatible con las versiones fijadas.
- Declarada en el Version Catalog y consumida por
libs.*. - Decisión registrada en
docs/DECISIONES.md. - Gate qa fast en verde.
Docs a actualizar
docs/investigacion/(si estructural) ·docs/DECISIONES.md(vía agente principal, reservado) · docs/ESTADO.md (skillsession-handoff)