Habilidad de Pipeline Open-Source
Publica cualquier proyecto de forma segura como open-source mediante un pipeline de 3 etapas: Bifurcar (eliminar secretos) → Sanitizar (verificar limpieza) → Empaquetar (CLAUDE.md + setup.sh + README).
Cuándo activarla
- El usuario dice "abre este proyecto como open-source" o "hazlo público"
- El usuario quiere preparar un repositorio privado para su publicación pública
- El usuario necesita eliminar secretos antes de subir a GitHub
- El usuario invoca
/opensource fork,/opensource verifyo/opensource package
Comandos
| Comando | Acción |
|---|---|
/opensource fork PROYECTO | Pipeline completo: bifurcar + sanitizar + empaquetar |
/opensource verify PROYECTO | Ejecutar sanitizador en el repositorio existente |
/opensource package PROYECTO | Generar CLAUDE.md + setup.sh + README |
/opensource list | Mostrar todos los proyectos en staging |
/opensource status PROYECTO | Mostrar informes de un proyecto en staging |
Protocolo
/opensource fork PROYECTO
Pipeline completo — el flujo de trabajo principal.
Paso 1: Recopilar parámetros
Resuelve la ruta del proyecto. Si PROYECTO contiene /, trátalo como una ruta (absoluta o relativa). De lo contrario, comprueba: directorio de trabajo actual, $HOME/PROYECTO, luego pregunta al usuario.
SOURCE_PATH="<ruta absoluta resuelta>"
STAGING_PATH="$HOME/opensource-staging/${NOMBRE_PROYECTO}"
Pregunta al usuario:
- "¿Qué proyecto?" (si no se encuentra)
- "¿Licencia? (MIT / Apache-2.0 / GPL-3.0 / BSD-3-Clause)"
- "¿Organización o nombre de usuario de GitHub?" (por defecto: detectar mediante
gh api user -q .login) - "¿Nombre del repositorio en GitHub?" (por defecto: nombre del proyecto)
- "¿Descripción para el README?" (analizar el proyecto para sugerir)
Paso 2: Crear directorio de staging
mkdir -p $HOME/opensource-staging/
Paso 3: Ejecutar agente Forker
Lanza el agente opensource-forker:
Agent(
description="Bifurcar {PROYECTO} para open-source",
subagent_type="opensource-forker",
prompt="""
Bifurca el proyecto para su publicación open-source.
Origen: {SOURCE_PATH}
Destino: {STAGING_PATH}
Licencia: {licencia_elegida}
Sigue el protocolo completo de bifurcación:
1. Copiar archivos (excluir .git, node_modules, __pycache__, .venv)
2. Eliminar todos los secretos y credenciales
3. Reemplazar referencias internas con marcadores de posición
4. Generar .env.example
5. Limpiar el historial de git
6. Generar FORK_REPORT.md en {STAGING_PATH}/FORK_REPORT.md
"""
)
Espera a que termine. Lee {STAGING_PATH}/FORK_REPORT.md.
Paso 4: Ejecutar agente Sanitizer
Lanza el agente opensource-sanitizer:
Agent(
description="Verificar sanitización de {PROYECTO}",
subagent_type="opensource-sanitizer",
prompt="""
Verifica la sanitización de la bifurcación open-source.
Proyecto: {STAGING_PATH}
Origen (para referencia): {SOURCE_PATH}
Ejecuta TODAS las categorías de escaneo:
1. Escaneo de secretos (CRÍTICO)
2. Escaneo de PII (CRÍTICO)
3. Escaneo de referencias internas (CRÍTICO)
4. Verificación de archivos peligrosos (CRÍTICO)
5. Integridad de configuración (ADVERTENCIA)
6. Auditoría de historial git
Genera SANITIZATION_REPORT.md dentro de {STAGING_PATH}/ con veredicto PASS/FAIL.
"""
)
Espera a que termine. Lee {STAGING_PATH}/SANITIZATION_REPORT.md.
Si FAIL: Muestra los hallazgos al usuario. Pregunta: "¿Corregir estos problemas y volver a escanear, o cancelar?"
- Si corregir: Aplica las correcciones, vuelve a ejecutar el sanitizador (máximo 3 intentos — después de 3 FAILs, presenta todos los hallazgos y pide al usuario que corrija manualmente)
- Si cancelar: Limpia el directorio de staging
Si PASS o PASS CON ADVERTENCIAS: Continúa al Paso 5.
Paso 5: Ejecutar agente Packager
Lanza el agente opensource-packager:
Agent(
description="Empaquetar {PROYECTO} para open-source",
subagent_type="opensource-packager",
prompt="""
Genera el empaquetado open-source para el proyecto.
Proyecto: {STAGING_PATH}
Licencia: {licencia_elegida}
Nombre del proyecto: {NOMBRE_PROYECTO}
Descripción: {descripcion}
Repositorio GitHub: {github_repo}
Genera:
1. CLAUDE.md (comandos, arquitectura, archivos clave)
2. setup.sh (bootstrap con un solo comando, hazlo ejecutable)
3. README.md (o mejora el existente)
4. LICENSE
5. CONTRIBUTING.md
6. .github/ISSUE_TEMPLATE/ (bug_report.md, feature_request.md)
"""
)
Paso 6: Revisión final
Presenta al usuario:
Bifurcación Open-Source lista: {NOMBRE_PROYECTO}
Ubicación: {STAGING_PATH}
Licencia: {licencia}
Archivos generados:
- CLAUDE.md
- setup.sh (ejecutable)
- README.md
- LICENSE
- CONTRIBUTING.md
- .env.example ({N} variables)
Sanitización: {veredicto_sanitizacion}
Próximos pasos:
1. Revisar: cd {STAGING_PATH}
2. Crear repositorio: gh repo create {github_org}/{github_repo} --public
3. Subir: git remote add origin ... && git push -u origin main
¿Proceder con la creación en GitHub? (sí/no/revisar primero)
Paso 7: Publicar en GitHub (con aprobación del usuario)
cd "{STAGING_PATH}"
gh repo create "{github_org}/{github_repo}" --public --source=. --push --description "{descripcion}"
/opensource verify PROYECTO
Ejecuta el sanitizador de forma independiente. Resuelve la ruta: si PROYECTO contiene /, trátalo como una ruta. De lo contrario, comprueba $HOME/opensource-staging/PROYECTO, luego $HOME/PROYECTO, luego el directorio actual.
Agent(
subagent_type="opensource-sanitizer",
prompt="Verifica la sanitización de: {ruta_resuelta}. Ejecuta las 6 categorías de escaneo y genera SANITIZATION_REPORT.md."
)
/opensource package PROYECTO
Ejecuta el empaquetador de forma independiente. Pregunta "¿Licencia?" y "¿Descripción?", luego:
Agent(
subagent_type="opensource-packager",
prompt="Empaquetar: {ruta_resuelta} ..."
)
/opensource list
ls -d $HOME/opensource-staging/*/
Muestra cada proyecto con su progreso en el pipeline (presencia de FORK_REPORT.md, SANITIZATION_REPORT.md, CLAUDE.md).
/opensource status PROYECTO
cat $HOME/opensource-staging/${PROYECTO}/SANITIZATION_REPORT.md
cat $HOME/opensource-staging/${PROYECTO}/FORK_REPORT.md
Estructura de staging
$HOME/opensource-staging/
mi-proyecto/
FORK_REPORT.md # Del agente forker
SANITIZATION_REPORT.md # Del agente sanitizer
CLAUDE.md # Del agente packager
setup.sh # Del agente packager
README.md # Del agente packager
.env.example # Del agente forker
... # Archivos del proyecto sanitizados
Anti-patrones
- Nunca subir a GitHub sin la aprobación del usuario
- Nunca saltarse el sanitizador: es la puerta de seguridad
- Nunca continuar después de un FAIL del sanitizador sin corregir todos los hallazgos críticos
- Nunca dejar
.env,*.pemocredentials.jsonen el directorio de staging
Mejores prácticas
- Ejecuta siempre el pipeline completo (bifurcar → sanitizar → empaquetar) para nuevas versiones
- El directorio de staging persiste hasta que se limpie explícitamente: úsalo para revisión
- Vuelve a ejecutar el sanitizador después de cualquier corrección manual antes de publicar
- Parametriza los secretos en lugar de eliminarlos: preserva la funcionalidad del proyecto
Habilidades relacionadas
Consulta security-review para conocer los patrones de detección de secretos utilizados por el sanitizador.