|
| 1 | +# Guía de mantenimiento |
| 2 | + |
| 3 | +> **Este fichero lo mantiene exclusivamente @GeiserX.** No se aceptan PRs que lo modifiquen. |
| 4 | +
|
| 5 | +Directrices para los mantenedores de esta lista. Esta guía es común a todas las awesome lists del ecosistema (awesome-spain + listas regionales). Seguirla garantiza que todos los repositorios mantengan la misma calidad, formato y criterios de inclusión, de modo que el conjunto funcione como una colección coherente. |
| 6 | + |
| 7 | +## Filosofía de inclusión |
| 8 | + |
| 9 | +El criterio fundamental es: **se acepta software que da soporte específico a Catalunya, no software hecho por alguien de Catalunya.** |
| 10 | + |
| 11 | +Un repositorio se incluye porque interactúa con instituciones, servicios, infraestructura, normativas o datos propios de Catalunya. No basta con que el autor resida o trabaje aquí. Un framework genérico creado por un developer de Catalunya no pertenece a esta lista. Un cliente para la API de datos abiertos del gobierno de Catalunya o una integración con servicios públicos de Catalunya sí. |
| 12 | + |
| 13 | +- **Sí:** Clientes de APIs de instituciones de Catalunya, integraciones con servicios públicos regionales, scrapers de transporte o datos abiertos de Catalunya. |
| 14 | +- **No:** Librerías genéricas creadas por equipos de Catalunya, software genérico cuyo autor simplemente reside en la comunidad. |
| 15 | + |
| 16 | +Ver `AGENTS.md` (si existe) para criterios detallados adicionales. |
| 17 | + |
| 18 | +## Revisar PRs |
| 19 | + |
| 20 | +1. Comprobar que el proyecto **da soporte específico a Catalunya** (no simplemente que el autor es de Catalunya). |
| 21 | +2. Verificar que la PR incluye la **URL del servicio o institución de Catalunya** que el proyecto soporta. |
| 22 | +3. Comprobar formato: entrada simple, orden alfabético, descripción en español que empieza en mayúscula y termina con punto. |
| 23 | +4. **CI debe estar verde** antes de mergear: awesome-lint-extra (formato y orden) + lychee (enlaces). |
| 24 | +5. Las insignias se generan automáticamente. Los contribuidores solo envían: |
| 25 | + ```markdown |
| 26 | + - [Nombre](https://github.com/owner/repo) - Descripción breve que empieza en mayúscula y termina con punto. |
| 27 | + ``` |
| 28 | +6. Tras mergear, ejecutar el pipeline de insignias (si existe) y hacer push: |
| 29 | + ```bash |
| 30 | + bash scripts/gather-metadata.sh |
| 31 | + python3 scripts/transform-readme.py |
| 32 | + ``` |
| 33 | + |
| 34 | +## Añadir entradas como mantenedor |
| 35 | + |
| 36 | +1. Añadir la entrada simple en la sección correcta, en orden alfabético. |
| 37 | +2. Ejecutar el pipeline de insignias (si el repo dispone de los scripts): |
| 38 | + ```bash |
| 39 | + bash scripts/gather-metadata.sh |
| 40 | + python3 scripts/transform-readme.py |
| 41 | + ``` |
| 42 | +3. Commit y push. Verificar que CI queda verde. |
| 43 | +4. Si el propietario del proyecto no ha sido notificado, abrir un issue de cortesía en su repo: |
| 44 | + - Título: `Incluido en awesome-catalunya` |
| 45 | + - Cuerpo: mensaje breve en español (tuteo) explicando la inclusión y ofreciendo retirarlo si lo prefiere. |
| 46 | + - **Un solo issue por propietario** — nunca abrir múltiples issues en repos del mismo usuario/organización. |
| 47 | + |
| 48 | +## Eliminar entradas |
| 49 | + |
| 50 | +Las entradas no se borran sin más. Se mueven a `DELETED.md` en la sección correspondiente: |
| 51 | + |
| 52 | +| Razón | Sección en DELETED.md | |
| 53 | +|-------|-----------------------| |
| 54 | +| Repo archivado/solo lectura | Archivados | |
| 55 | +| Repo eliminado o renombrado | Repos inexistentes o renombrados | |
| 56 | +| Autor confirmó abandono | Abandonados | |
| 57 | +| No cumple criterios de inclusión | Eliminados por no ser específicos de Catalunya | |
| 58 | +| Sustituido por otro proyecto | Reemplazados (enlazar sucesor) | |
| 59 | + |
| 60 | +Esto evita re-adiciones y preserva el historial. |
| 61 | + |
| 62 | +## Mantenimiento periódico |
| 63 | + |
| 64 | +- **Mensual:** Revisar la salida de lychee en GitHub Actions. Corregir o eliminar enlaces rotos. |
| 65 | +- **Trimestral:** Refrescar insignias (`gather-metadata.sh` + `transform-readme.py`). Comprobar si hay repos recién archivados: |
| 66 | + ```bash |
| 67 | + grep -oE 'https://github\.com/[^/)]+/[^/)]+' README.md | sort -u | while read url; do |
| 68 | + repo="${url#https://github.com/}" |
| 69 | + archived=$(gh api "repos/$repo" --jq '.archived' 2>/dev/null) |
| 70 | + [ "$archived" = "true" ] && echo "ARCHIVADO: $repo" |
| 71 | + done |
| 72 | + ``` |
| 73 | + |
| 74 | +## Herramientas |
| 75 | + |
| 76 | +- **awesome-lint-extra** — Linter propio. Valida formato, orden alfabético, insignias y descripciones. Se ejecuta como GitHub Action (`GeiserX/awesome-lint-extra@main`) y como script standalone (`python3 lint.py`). Configuración en `.awesomerc.json`. |
| 77 | +- **transform-readme.py** — Genera insignias de shields.io y etiquetas de institución/servicio a partir de `scripts/metadata.json`. |
| 78 | +- **gather-metadata.sh** — Obtiene metadatos (estrellas, lenguaje, licencia, rama) de la API de GitHub para cada repo listado. |
| 79 | +- **lychee** — Comprobador de enlaces. Se ejecuta en CI como `lycheeverse/lychee-action@v2`. No bloquea merges (`continue-on-error: true`), pero sus resultados deben revisarse periódicamente. |
| 80 | + |
| 81 | +## Reglas de formato |
| 82 | + |
| 83 | +- La descripción **no debe empezar con el nombre** del proyecto. |
| 84 | +- Una línea por entrada, sin saltos de línea. |
| 85 | +- Descripciones en **español**. |
| 86 | +- **Orden alfabético** dentro de cada sección/subsección (sin distinguir mayúsculas/minúsculas). |
| 87 | +- Evitar el anglicismo «curar/curado» — usar «selección» o «recopilación» (según FundéuRAE). |
| 88 | +- Nuevas categorías: preferiblemente con al menos 3 proyectos. |
| 89 | + |
| 90 | +## Contenido prohibido |
| 91 | + |
| 92 | +No se aceptan proyectos relacionados con: pornografía, NSFW, apuestas, loterías, religión, política partidista. |
| 93 | + |
| 94 | +## Difusión |
| 95 | + |
| 96 | +- Abrir issues de notificación en repos de proyectos incluidos (uno por propietario, en español). |
| 97 | +- Publicar en comunidades de desarrollo relevantes tras alcanzar masa crítica. |
0 commit comments