Skip to main content

open-source-release

Procedimiento para preparar un proyecto personal para publicación open-source — sanitizar datos personales, limpiar referencias, crear template genérico, y generar guía de instalación.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
Ntizar/NtizarBrainMasterMind
آخر نشاط في المصدر
٢٦ يونيو ٢٠٢٦ في ١٢:٠٥
لغة SKILL.md المكتشفة
الإسبانية
النجوم
٢
التفرعات
٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
open-source-release
version
1.0.0
description
Procedimiento para preparar un proyecto personal para publicación open-source — sanitizar datos personales, limpiar referencias, crear template genérico, y generar guía de instalación.
tags
["open-source","template","sanitization","privacy","release","public-repo"]
# Open Source Release — Preparar Proyecto para Público ## Resumen Procedimiento sistemático para tomar un proyecto personal con datos reales y convertirlo en un template público seguro, sin fugas de datos personales ni credentials. ## Cuándo usar - Usuario quiere compartir un proyecto personal como template open-source - Convertir un proyecto privado en público sin exponer datos personales - Crear un "fork template" de un proyecto propio - Generar guía de instalación para la comunidad ## Flujo de Trabajo (7 pasos) ### Paso 1: Inventario del proyecto Identificar TODOS los archivos que pueden contener datos sensibles: - `.env` — API keys, tokens, passwords - `database.json` / `.sqlite` / `.db` — datos personales del usuario - `README.md` — puede contener nombres, datos personales, URLs privadas - `server.js` / backend — referencias a repos privados, endpoints internos - `dashboard.html` / frontend — nombres hardcodeados, datos en HTML - Archivos de config — `config.yaml`, `settings.json` ### Paso 2: Crear directorio template ```bash mkdir -p /root/workspace/NOMBRE-template/data /root/workspace/NOMBRE-template/scripts ``` **NUNCA modificar el proyecto original** — trabajar siempre en copia. ### Paso 3: Sanitizar datos personales #### 3a. Base de datos → estructura vacía Crear `database.json` con la misma estructura pero: - Campos vacíos o valores placeholder (`"Tu Nombre"`, `90`, `80`) - Arrays vacíos (`"peso": []`, `"comidas": []`) - Mantener la misma forma JSON para que el frontend funcione #### 3b. Backend (server.js) Reemplazar: - Referencias a repos privados → genéricos o configurables - Nombres de personas → genéricos ("Usuario", "Coach IA") - Endpoints internos → eliminar o hacer opcionales - Nombres de proyecto → genéricos ("FitTrack" en vez de "KoldoFit") #### 3c. Frontend (dashboard.html) Reemplazar: - Nombres de personas → genéricos - Referencias a APIs privadas → genéricas - Textos personalizados → placeholders - Footer de atribución → genérico #### 3d. Documentación (README.md) Reescribir completamente: - Título genérico - Descripción del proyecto sin datos personales - Guía de instalación paso a paso - Instrucciones de configuración - Ejemplos con valores placeholder ### Paso 4: Verificación de seguridad (CRÍTICO) Escaneo automático con regex para detectar fugas: ```python import os, re checks = { 'Nombres personales': [r'David', r'Ntizar', r'Antizar', r'Amadeo'], 'API Keys reales': [r'sk-[a-zA-Z0-9]{20,}'], 'Emails': [r'[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}'], } for root, dirs, files in os.walk(template_dir): if 'node_modules' in root: continue for fname in files: fpath = os.path.join(root, fname) with open(fpath, 'r', errors='ignore') as f: content = f.read() for category, patterns in checks.items(): for pat in patterns: matches = re.findall(pat, content, re.IGNORECASE) for m in matches: # Filtrar falsos positivos (CDN público, .env.example) if 'Ntizar/Aurora' in str(m): continue if '.env.example' in fpath: continue print(f"🔴 {category}: {m} en {fpath}") ``` ### Falsos positivos aceptados: - CDN de Aurora (`Ntizar/Aurora`) — es público, no es dato personal - `NTIZAR_API` como nombre de variable de entorno — no contiene el token - Referencias al autor original en créditos del README — es atribución, no fuga ## 6. Platform Migration — Migración entre Plataformas Procedimiento para migrar un proyecto de una plataforma a otra (Obsidian→GitHub, OpenCode→Hermes, etc.): limpiar referencias legacy, actualizar documentación, verificar funcionalidad. ### Flujo de migración (6 pasos) 1. **Inventario**: identificar TODAS las referencias a la plataforma antigua 2. **Clasificar**: contexto histórico (mantener), instrucciones activas (reescribir), landing pages (reescribir), scripts (actualizar), config (migrar) 3. **Ejecutar cambios**: landing pages, docs contribución, CHANGELOG, scripts, workflows CI, SOUL.md 4. **Escaneo post-cambios**: `search_files` por todos los nombres de la plataforma antigua 5. **Verificación funcional**: confirmar que funciona con el nuevo stack 6. **Commit y push** ### Reglas 1. **NUNCA borrar el repo antiguo** — mover a `legacy/` con contexto 2. **SIEMPRE mantener contexto de migración** — tablas comparativas en SOUL.md 3. **Escaneo post-migración obligatorio** — `search_files` por residuales 4. **Documentación en castellano** — TODO en castellano, NUNCA inglés ### Pitfalls - Las referencias residuales son silenciosas — un `grep` simple no basta - Los scripts de verificación son los que más se olvidan - Landing pages y CONTRIBUTING son los que más daño hacen ## 4b. Sanitización Avanzada — Escaneo Completo Procedimiento extendido para sanitización profunda (absorbido de `open-source-sanitization`). ### Escaneo de datos sensibles ```bash # Referencias personales grep -rni -E '(nombre_real|apellidos|email|teléfono|dirección|DNI)' --include='*.js' --include='*.py' --include='*.md' --include='*.json' --include='*.html' --include='*.css' . # API keys y tokens grep -rni -E '(sk-[a-zA-Z0-9]{20,}|Bearer|api_key|token|secret)' --include='*.js' --include='*.py' --include='*.json' --include='*.html' . # Credenciales hardcodeadas grep -rni -E '(password|passwd|pwd|auth)' --include='*.js' --include='*.py' --include='*.json' . # URLs privadas grep -rni -E '(apps\.nan\.builders|internal\.|private\.|localhost:\d+)' --include='*.js' --include='*.html' . ``` ### Archivos críticos a revisar uno por uno | Archivo | Qué limpiar | |---------|-------------| | `data/database.json` | **CRÍTICO**: eliminar TODOS los datos personales. Dejar solo estructura vacía con valores placeholder | | `server.js` / backend | Quitar nombres propios, referencias a personas, repos privados, endpoints hardcodeados | | `dashboard.html` / frontend | Quitar nombres, fotos, datos personales, mensajes personalizados | | `README.md` | Reescribir como guía de instalación genérica, no como diario personal | | `.env` | **NUNCA** incluir. Crear `.env.example` con instrucciones | | `package.json` | Verificar que no hay autores/personal | | `Dockerfile` | Genérico, sin rutas absolutas | ### Patrón de limpieza por tipo de dato #### Datos personales en JSON ```json // ANTES (personal): {"meta": {"nombre": "David Antizar", "altura_cm": 174, "peso_inicial_kg": 98.6}} // DESPUÉS (template): {"meta": {"nombre": "Tu Nombre", "altura_cm": 174, "peso_inicial_kg": 90}} ``` #### Endpoints hardcodeados ```javascript // ANTES: const getRes = await fetch('https://api.github.com/repos/Ntizar/dieta/contents/data/database.json', ...); // DESPUÉS: const repoOwner = process.env.GITHUB_REPO_OWNER || 'TU_USUARIO'; ``` ### CRÍTICO: Verificar historial de git Si hay commits previos con datos personales en el historial, hacer `git filter-branch` o crear repo desde cero. ### Archivos que SIEMPRE incluir | Archivo | Propósito | |---------|-----------| | `.gitignore` | Excluye `.env`, `node_modules/`, archivos de build | | `.env.example` | Plantilla con instrucciones, **sin tokens reales** | | `README.md` | Guía de instalación paso a paso, NO diario personal | | `LICENSE` | Licencia del proyecto (MIT recomendado) | ### Archivos que NUNCA incluir | Archivo | Por qué | |---------|---------| | `.env` | Contiene tokens/API keys reales | | `data/database.json` (con datos) | Datos personales del usuario | | `node_modules/` | Se regenera con `npm install` | ### Paso 5: Crear archivos de configuración #### `.gitignore` robusto ``` node_modules/ npm-debug.log* package-lock.json # Variables de entorno — NUNCA subir a git .env ``` #### `.env.example` con instrucciones ``` NAN_API=tu_token_aqui GITHUB_REPO_OWNER=tu_usuario_github GITHUB_REPO_NAME=tu_repo ``` **NUNCA incluir tokens reales en `.env.example`**. #### `Dockerfile` genérico Mismo que el original pero sin referencias a nombres específicos. ### Paso 6: Crear repositorio público ```bash # Crear repo vía API GitHub curl -X POST https://api.github.com/user/repos \ -H "Authorization: token $TOKEN" \ -H "Accept: application/vnd.github+json" \ -d '{"name":"NOMBRE","description":"Descripción genérica","public":true}' # Clonar y subir archivos git clone https://TOKEN@github.com/OWNER/NOMBRE.git cd NOMBRE # Copiar archivos del template git add -A git commit -m "Initial commit: NOMBRE template" git push origin main ``` **Opcional:** Hacer squash de commits individuales: ```bash git reset --soft $(git rev-list --max-parents=0 HEAD) git commit -m "mensaje descriptivo" git push --force origin main ``` ### Paso 7: Generar guía de presentación Crear texto para compartir con: - Descripción del proyecto - Lista de features - Guía rápida de instalación (paso a paso) - Link al repo - Imagen/screenshot del dashboard --- ## Reglas de Seguridad 1. **NUNCA modificar el proyecto original** — siempre trabajar en copia 2. **NUNCA incluir API keys reales** en ningún archivo público 3. **`.env` SIEMPRE en `.gitignore`** — verificar antes de subir 4. **Base de datos vacía** — estructura pero sin datos 5. **Escaneo post-sanitización obligatorio** — regex por nombres, tokens, emails 6. **Atribución permitida** — referencias al autor original en créditos son OK 7. **CDN públicos OK** — referencias a `Ntizar/Aurora` en CSS/JS son OK (público) ## Pitfalls - **Los nombres en el HTML son invisibles en el snapshot** — hay que buscar con regex, no confiar en la vista textual - **El dashboard puede hardcodear datos en el `<script>`** — buscar JSON inline, no solo en `database.json` - **`.env.example` no debe contener tokens** — solo el formato con `tu_token_aqui` - **Las variables de entorno alternativas (`NTIZAR_API`) no son fugas** — son nombres de variable, no valores - **Los commits individuales crean ruido** — hacer squash a un commit limpio antes de push - **Los directorios `data/` y `scripts/` no se crean con la API de repos** — hay que subir los archivos con sus rutas completas (`data/database.json`, `scripts/registro.py`) ## Linked Files - `references/open-source-release-dietan.md` — Caso real: sanitización de DietaNan para comunidad NaN.builders (checklist de datos sensibles, falsos positivos, comandos clave) ## 5. Plantilla Proyecto Público — Landing Page y Screenshot Extensión de open-source-release: crear una landing page de presentación y screenshot del dashboard para la página del template. ### Flujo adicional 1. **Crear landing page** (`index.html`) con hero, feature cards, screenshot, CTA 2. **Generar screenshot**: levantar servidor local, capturar con `browser_vision` 3. **README como guía de instalación** con 10+ pasos, estructura del proyecto, solución de problemas ### Archivos mínimos del template | Archivo | Propósito | |---------|-----------| | `index.html` | Landing page de presentación | | `screenshot.png` | Captura del dashboard | | `dashboard.html` | Dashboard principal | | `server.js` | Backend genérico | | `data/database.json` | Estructura vacía con placeholders | | `.gitignore` | Protege .env | | `.env.example` | Plantilla de config | | `README.md` | Guía de instalación completa | ### Pitfalls - Landing page con screenshot mejora la percepción de calidad enormemente - El README debe ser autocontenido — alguien sin contexto debe poder instalarlo solo - NO olvidar sanitizar prompts IA y dashboard.html (placeholders de texto) - Verificar DOS VECES antes de subir: grep por nombre, email, API keys
عرض على GitHub