🤝 Contribuir a ShFlow

Gracias por tu interés en colaborar con ShFlow. Este proyecto está abierto a contribuciones técnicas, documentales y comunitarias. Aquí encontrarás las pautas para participar de forma efectiva.


🧭 Flujo de trabajo con Git

  1. Haz un fork del repositorio
  2. Crea una rama descriptiva: feature/modulo-nuevo o fix/limpieza-labels
  3. Realiza tus cambios con commits claros y concisos
  4. Actualiza la documentación si aplica
  5. Abre un Pull Request explicando el propósito y alcance

✍️ Estilo de código y documentación

  • Usa Shell estricto (set -euo pipefail)
  • Prefiere funciones con nombres claros: ntp_task, vaultTask
  • Documenta cada módulo en docs/modules/
  • Incluye ejemplos de uso y argumentos esperados
  • Mantén consistencia en los changelogs (docs/changelog/)

⚙️ Crear nuevos módulos

ShFlow permite la creación de módulos personalizados para ampliar su funcionalidad. Sin embargo, existe una distinción clara entre los módulos core y los módulos community:

🔧 Módulos core (core/modules/)

  • Son módulos oficiales del proyecto
  • Deben seguir estándares estrictos de calidad, trazabilidad y documentación
  • Su inclusión está sujeta a revisión y aprobación por la autoridad responsable del proyecto (Luis GuLo)
  • Se documentan en docs/modules/ y se registran en docs/changelog/

🌐 Módulos comunitarios (community_modules/)

  • Son contribuciones abiertas de la comunidad
  • Pueden agruparse por bloques temáticos (ej. windows/, networking/, security/)
  • No afectan al núcleo del sistema, pero pueden ser invocados desde playbooks
  • Se documentan en docs/community/ y pueden tener su propio changelog

🧩 Pasos para crear un módulo

  1. Crea el archivo en la ruta correspondiente (core/modules/ o community_modules/)

  2. Define una función principal: <nombre>_task()

  3. Usa argumentos en formato clave=valor

  4. Añade trazas si se usa --debug

  5. Documenta en docs/modules/<nombre>.md o docs/community/<bloque>/<nombre>.md con:

    • Descripción
    • Argumentos
    • Ejemplo de uso
    • Changelog

🔍 Revisión y mejora

  • Todo PR será revisado por el mantenedor principal
  • Se valoran propuestas con documentación clara y trazabilidad
  • Se aceptan mejoras en estructura, rendimiento, seguridad y estilo

🌐 Comunidad

  • Puedes proponer ideas en issues
  • Se agradecen traducciones, ejemplos y validaciones cruzadas
  • El proyecto busca crecer con aportes abiertos y trazables