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.

Ir para a instalação

Informações da origem

Repositório
Ntizar/NtizarBrainMasterMind
Última atividade na origem
26 de junho de 2026 às 12:05
Idioma detectado do SKILL.md
espanhol
Estrelas
2
Forks
0

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Explorador de arquivos
2 arquivos

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
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
Ver no GitHub