Tutorial de introducción a Vibe Coding
Vibe Coding (programación ambiental) es un paradigma de programación completamente nuevo. No necesitamos escribir código línea por línea, sino que describimos en lenguaje natural lo que queremos; la IA escribe el código y nosotros nos encargamos de revisarlo y controlar la dirección.
Referencia del tutorial de Vibe Coding:https://www.example.com/vibe-coding/vibe-coding-tutorial.html
¿Qué es Vibe Coding?
Vibe CodingEl término fue propuesto por primera vez en febrero de 2025 por Andrej Karpathy, ex director de IA de Tesla y cofundador de OpenAI.
Resumió esta nueva forma de programar en una frase:
「I just vibe. I don't even touch the keyboard sometimes. I just talk to the AI, it writes the code, I review it, and we iterate.」
Traducido: solo te limitas a describir tu «sensación»; la IA escribe el código, tú lo revisas y luego iteras de un lado a otro.
En pocas palabras, Vibe Coding consiste en: le dices a la IA en lenguaje humano qué funcionalidad quieres, y la IA te escribe el código. No necesitas preocuparte por los detalles de sintaxis, ni memorizar parámetros de API, ni depurar manualmente cada error; todo eso lo maneja la IA.
Nuestro rol pasa de «persona que escribe código» a «persona que describe requisitos»; o mejor dicho, de programador a gerente de producto + arquitecto.

Vibe Coding no busca que la IA piense por ti, sino que la IA se encargue del trabajo repetitivo de bajo valor, permitiéndote centrarte en las partes más creativas: entender el problema, diseñar la arquitectura y validar los resultados.
Vibe Coding vs. programación tradicional
Entender en qué se diferencia Vibe Coding de la programación tradicional te ayudará a usarlo mejor.
| Dimensión | Programación tradicional | Vibe Coding |
|---|---|---|
| Método de entrada | Escribir código línea por línea | Describir requisitos en lenguaje natural |
| Punto de enfoque | Sintaxis, API, detalles de implementación | Requisitos, arquitectura, validación |
| Método de depuración | Depuración manual con puntos de interrupción / registros | Pasar el mensaje de error a la IA y dejar que lo arregle |
| Velocidad | Depende de la velocidad de escritura y el nivel de habilidad | Depende de la claridad con que se describan los requisitos |
| Escenarios de aplicación | Todas las tareas de programación | Desarrollo de prototipos, CRUD, herramientas de scripting, páginas de UI |
| Habilidades clave | Dominio del lenguaje de programación | Capacidad de desglosar requisitos + validar resultados |
¿Por qué ahora se puede hacer Vibe Coding?
Que Vibe Coding sea posible en 2025 se debe a la madurez de varias condiciones clave.
El salto en la capacidad de codificación de los grandes modelos
Modelos como GPT-5.5, Claude 5 y Gemini han mejorado enormemente la precisión en la generación de código.
No solo pueden escribir código sintácticamente correcto, sino que también entienden el contexto del proyecto, siguen las mejores prácticas y manejan casos límite.
Más importante aún, pueden manejar contextos muy largos: leer todo el proyecto de una sola vez y comprender la estructura de tu base de código.
La explosión de las herramientas de programación con IA
Herramientas como Cursor, Claude Code, GitHub Copilot y Windsurf han integrado profundamente las capacidades de IA en el flujo de desarrollo.
Estas herramientas no solo completan código, sino que también pueden modificar archivos directamente, ejecutar comandos de terminal y buscar en la base de código, trabajando como un desarrollador real.
La aparición del modo Agente
Las herramientas con modo Agente pueden ejecutar tareas de múltiples pasos de forma autónoma: leer archivos, escribir código, ejecutar pruebas y corregir errores según los resultados de las pruebas.
Solo necesitas dar una instrucción inicial; el Agente iterará en bucle hasta completar la tarea.
Introducción a las herramientas principales
Las siguientes son las herramientas de Vibe Coding más populares actualmente, cada una con su propio enfoque.
| Herramienta | Tipo | Características principales | Escenarios adecuados |
|---|---|---|---|
| Qoder | Agent IDE | Comprensión profunda de la base de código, tareas automáticas Quest, múltiples agentes, Repo Wiki, modo CLI/IDE dual | Proyectos medianos y grandes, mantenimiento de proyectos a largo plazo |
| Trae | IDE nativo de IA | Desarrollo impulsado por conversación, generación y modificación automática de código | Vibe Coding, configuración rápida de nuevos proyectos |
| Cursor | Editor de IA | Comprensión a nivel de proyecto, modificación de múltiples archivos, modo Agente | Desarrollo full-stack, proyectos grandes |
| Claude Code | CLI Agent | Ejecutar tareas complejas en la terminal, modificar proyectos automáticamente | Backend, desarrollo automatizado |
| GitHub Copilot | Asistente de programación con IA | Autocompletado inteligente, chat, Agente | Asistencia para el desarrollo diario |
| Windsurf | Editor de IA | Flujo de trabajo Cascade, modificación automática de múltiples archivos | Desarrollo rápido, proyectos pequeños y medianos |
| OpenAI Codex | Agente de programación con IA | Entiende la tarea y ejecuta el flujo de desarrollo completo | Desarrollo automatizado |
| Bolt.new | Plataforma de desarrollo en línea con IA | Genera una aplicación completa con una sola frase | MVP, validación de prototipos |
| v0 by Vercel | Herramienta de generación de UI | Genera páginas React automáticamente | Diseño de páginas, desarrollo de componentes |
| Replit AI | IDE en línea | Desarrollo en la nube + colaboración con IA | Enseñanza, pruebas rápidas |
| Lovable | Generador de aplicaciones con IA | Genera SaaS directamente desde una descripción | Startups, validación de productos |
| Firebase Studio | Plataforma de aplicaciones con IA | Integración de IA + servicios backend | Desarrollo de apps / web |
Si es tu primera vez en contacto con Vibe Coding, puedes empezar usando la herramienta nacionalQoderoTraePara empezar, su funcionamiento es similar a VS Code, tiene la curva de aprendizaje más suave y no cambiará el entorno de editor al que estás acostumbrado.
Inicio rápido
A continuación, tomamosClaude Code (CLI de terminal)como ejemplo para mostrar el flujo de trabajo típico de Vibe Coding.
Referencia del tutorial completo de Claude Code:https://www.example.com/claude-code/claude-code-tutorial.html
Primer proyecto: ¡Hola, Vibe World!
Objetivo:En 5 minutos, usando solo lenguaje natural, haz que Claude Code te ayude a crear una página web de tarjeta personal.
Paso 1: Crea la carpeta del proyecto
mkdir my-card && cd my-card claude

Paso 2: Describe a Claude lo que quieres
En la interfaz interactiva de Claude Code, escribe:
帮我创建一个个人名片网页,要求: - 显示我的名字(张三)和职业(前端开发者) - 有一个简短的个人简介区域 - 列出3个技能标签(React、Python、设计) - 设计风格:简洁现代,深色背景,有轻微的渐变效果 - 单个 HTML 文件,不需要外部依赖
Paso 3: Observa a Claude trabajar
Verás que Claude Code automáticamente:
分析你的需求 创建 index.html 文件 写入完整的 HTML、CSS 和少量 JavaScript
Paso 4: Revisa el resultado
open index.html # macOS # o xdg-open index.html # Linux
Paso 5: Modificaciones iterativas
Si no estás satisfecho, continúa la conversación:
把背景色改成深蓝色渐变,字体换成更现代的 sans-serif, 技能标签加上悬停动画效果
Claude Code modificará los archivos directamente, sin que tengas que tocar ningún código.
Flujo de trabajo central de Vibe Coding
El flujo de trabajo central de Vibe Coding se puede resumir en cuatro pasos: describir, revisar, iterar y entregar.
Diagrama del flujo de trabajo completo
描述需求
↓
AI 生成代码
↓
你审查 Diff
↓
┌─ 不满意 → 描述修改意见 → AI 重新生成
│
└─ 满意 → 运行测试
↓
┌─ 测试失败 → 把报错贴给 AI → 修复
│
└─ 测试通过 → 提交代码
Paso 1: Describe los requisitos
Dile a Claude Code en lenguaje natural lo que quieres.
No necesitas escribir código, no necesitas mencionar detalles técnicos, solo tienes que dejar claro «qué hacer».
Un ejemplo sencillo de descripción de requisitos:
帮我创建一个 Python Flask 项目,有一个 /api/tasks 接口, 支持 GET 获取任务列表和 POST 创建新任务, 任务数据用 JSON 文件存储。
Claude Code, al recibirlo, planificará la estructura de archivos, generará código, instalará dependencias y ejecutará pruebas por sí mismo.
Paso 2: Revisa el Diff
Después de que Claude Code genere el código, mostrará todos los cambios (Diff) para que los revises.
Esta es la parte más importante de Vibe Coding: debes comprender qué ha cambiado la IA.
Al revisar, céntrate en:
| Elemento de revisión | En qué fijarse específicamente |
|---|---|
| Corrección lógica | Si las condiciones son razonables y se manejan los casos límite. |
| Seguridad | Si hay vulnerabilidades de seguridad como inyección SQL, XSS, etc. |
| Flujo de datos | Si la entrada, el procesamiento y la salida de los datos se ajustan a lo esperado. |
| Convenciones de nomenclatura | Si los nombres de variables y funciones son claros y fáciles de entender. |
| Código redundante | Si hay duplicaciones innecesarias o importaciones no utilizadas. |
Revisar no es para buscarle defectos, sino para asegurarte de que entiendes qué hace cada línea de código. Si no entiendes algún fragmento, pregúntale directamente a Claude Code: «¿Qué significa este código? ¿Por qué está escrito así?»
Paso 3: Modificaciones iterativas
Después de detectar problemas en la revisión, describe en lenguaje natural los cambios que deseas.
Ejemplos de instrucciones de iteración habituales:
把 JSON 文件存储改成 SQLite,用 SQLAlchemy 做 ORM.
给 POST 接口加个验证:title 必填,不能为空字符串。
报错了,看一下:
Traceback (most recent call last):
File "app.py", line 42, in create_task
db.session.add(task)
AttributeError: 'NoneType' object has no attribute 'session'
Tras cada iteración, Claude Code regenerará el código y mostrará el Diff, y tú lo revisarás de nuevo hasta que quedes satisfecho.
Paso 4: Entrega
Cuando todas las funciones cumplan lo esperado y las pruebas pasen, haz el commit del código.
Claude Code redactará el mensaje de commit por ti y hará el commit:
$ git log --oneline a1b2c3d feat: add task CRUD API with SQLite storage
Demostración práctica: Construye una aplicación Todo desde cero con Claude Code
A continuación, mediante un caso práctico completo, se muestra todo el flujo de Vibe Coding.
Vamos a crear desde cero con Claude Code una aplicación Todo que incluya una interfaz frontend y una API backend.
Objetivo del proyecto
| Funcionalidad | Descripción |
|---|---|
| Añadir tarea | Introducir el título de la tarea y añadirla a la lista. |
| Completar tarea | Hacer clic en la casilla para marcar la tarea como completada. |
| Eliminar tarea | Eliminar las tareas que no sean necesarias. |
| Filtrar | Filtrar por todas / en curso / completadas. |
| Persistencia | Los datos se guardan en SQLite y no se pierden al actualizar. |
Paso 1: Inicializa el proyecto
En la terminal, crea el directorio del proyecto e inicia Claude Code:
$ mkdir vibe-todo && cd vibe-todo $ claude
A continuación, describe tus requisitos a Claude Code:
帮我创建一个 Todo 应用,要求: 1. 后端用 Python Flask + SQLAlchemy + SQLite 2. 前端用纯 HTML/CSS/JS,风格简约现代 3. 支持添加、完成、删除、筛选任务 4. 所有 API 返回 JSON,前端用 fetch 调用 5. 代码注释用中文
Paso 2: ¿Qué hizo Claude Code?
Tras recibir los requisitos, Claude Code completó automáticamente los siguientes pasos:
Primero creó la estructura del proyecto:
vibe-todo/
├── app.py # Flask 主应用
├── models.py # 数据库模型
├── requirements.txt # 依赖清单
├── static/
│ ├── style.css # 样式文件
│ └── script.js # 前端逻辑
└── templates/
└── index.html # 页面模板
Luego generó el código backend. A continuación se muestra el contenido principal de app.py:
Ejemplo
# Aplicación principal de Flask, define las rutas de la API y el punto de entrada de la página.
from flask import Flask, render_template, request, jsonify
from models import db, Task
app = Flask(__name__)
# Configura la ruta de la base de datos SQLite
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
# Inicializa la extensión de la base de datos
db.init_app(app)
# Crea automáticamente la estructura de las tablas al iniciar la aplicación
with app.app_context():
db.create_all()
@app.route('/')
def index():
"""Devuelve la página principal"""
return render_template('index.html')
@app.route('/api/tasks', methods=['GET'])
def get_tasks():
"""Obtiene la lista de todas las tareas, con soporte para filtrar por estado"""
# Obtiene el filtro de los parámetros de consulta, por defecto 'all'
status = request.args.get('status', 'all')
# Filtra las tareas según el estado
if status == 'completed':
tasks = Task.query.filter_by(completed=True).all()
elif status == 'active':
tasks = Task.query.filter_by(completed=False).all()
else:
tasks = Task.query.all()
# Convierte los objetos de tarea en una lista de diccionarios para facilitar la serialización JSON
return jsonify([t.to_dict() for t in tasks])
@app.route('/api/tasks', methods=['POST'])
def create_task():
"""Crea una nueva tarea"""
data = request.get_json()
# Valida el campo obligatorio title
title = data.get('title', '').strip()
if not title:
return jsonify({'error': 'El título de la tarea no puede estar vacío'}), 400
# Crea el objeto de tarea y lo guarda en la base de datos
task = Task(title=title)
db.session.add(task)
db.session.commit()
return jsonify(task.to_dict()), 201
@app.route('/api/tasks/<int:task_id>', methods=['PUT'])
def update_task(task_id):
"""Actualiza el estado de la tarea (completada / no completada)"""
task = Task.query.get_or_404(task_id)
data = request.get_json()
# Si la solicitud incluye el campo completed, actualiza el estado
if 'completed' in data:
task.completed = data['completed']
db.session.commit()
return jsonify(task.to_dict())
@app.route('/api/tasks/<int:task_id>', methods=['DELETE'])
def delete_task(task_id):
"""Elimina la tarea especificada"""
task = Task.query.get_or_404(task_id)
db.session.delete(task)
db.session.commit()
return jsonify({'message': 'Eliminado correctamente'}), 200
if __name__ == '__main__':
app.run(debug=True)
También está el modelo de base de datos models.py:
Ejemplo
# Definición del modelo de base de datos, usando SQLAlchemy ORM
from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
# Crea la instancia de la base de datos, que se inicializará más adelante en app.py
db = SQLAlchemy()
class Task(db.Model):
"""Modelo de tarea, corresponde a la tabla tasks en la base de datos"""
__tablename__ = 'tasks'
# Clave primaria, entero autoincremental
id = db.Column(db.Integer, primary_key=True)
# Título de la tarea, obligatorio, no puede estar vacío
title = db.Column(db.String(200), nullable=False)
# Estado de completado, por defecto False
completed = db.Column(db.Boolean, default=False)
# Fecha de creación, registrada automáticamente
created_at = db.Column(db.DateTime, default=datetime.utcnow)
def to_dict(self):
"""Convierte el objeto de tarea en un diccionario para facilitar la serialización JSON"""
return {
'id': self.id,
'title': self.title,
'completed': self.completed,
'created_at': self.created_at.isoformat()
}
Paso 3: Revisa el código
Después de que Claude Code muestre el Diff, revísalo línea por línea.
Es posible que encuentres algunos problemas y propongas modificaciones.
Por ejemplo, notas que las rutas de la API no tienen un prefijo común, y propones un cambio:
把所有 API 路由加上 /api/v1 前缀,方便以后版本管理。
Claude Code modificará automáticamente todas las rutas, y tú las revisarás y aprobarás de nuevo.
Paso 4: Ejecuta las pruebas
Después de aprobar la revisión, haz que Claude Code inicie la aplicación y ejecute las pruebas:
$ python app.py * Running on http://127.0.0.1:5000
Abre el navegador y accede a http://127.0.0.1:5000 para ver la interfaz completa de la aplicación Todo.
Prueba la función de añadir tareas:
$ curl -X POST http://127.0.0.1:5000/api/v1/tasks \
-H "Content-Type: application/json" \
-d '{"title": "学习 Vibe Coding"}'
Resultado devuelto:
{
"completed": false,
"created_at": "2026-06-24T10:30:00",
"id": 1,
"title": "学习 Vibe Coding"
}
Paso 5: Haz commit del código
Una vez que todas las funciones hayan sido verificadas, haz el commit del código:
$ git add . $ git commit -m "feat: 完成 Todo 应用基础功能"
En todo el proceso práctico, no has escrito ni una sola línea de código manualmente. Lo que haces es: describir los requisitos, revisar el Diff, describir las modificaciones, ejecutar las pruebas y hacer el commit del código. Esa es la experiencia central de Vibe Coding.
Consejos para escribir buenos prompts
El resultado de Vibe Coding depende en gran medida de cómo describes los requisitos.
Un buen prompt permite que la IA genere código cercano a lo esperado a la primera, reduciendo el número de iteraciones.
El modelo de cuatro elementos
Un prompt de alta calidad debe incluir cuatro elementos:
| Elemento | Descripción | Ejemplo |
|---|---|---|
| Qué hacer | Describe claramente la funcionalidad que se quiere implementar. | «Crea una interfaz de registro de usuarios» |
| Con qué | Especifica el stack tecnológico y las herramientas. | «Usa Flask + SQLAlchemy + SQLite» |
| Cómo restringir | Da condiciones limitantes y casos límite. | «El correo electrónico es obligatorio y debe tener validación de formato» |
| Formato esperado | Indica las preferencias de salida. | «Comentarios de código en chino; añade un docstring a cada función» |
Buen prompt vs. mal prompt
| Mal prompt | Buen prompt |
|---|---|
| Ayúdame a hacer una función de inicio de sesión. | Ayúdame a implementar con Flask una interfaz de inicio de sesión que reciba correo electrónico y contraseña, cifre la contraseña con bcrypt, devuelva un token con JWT, con una validez de 24 horas. Si el inicio de sesión falla, devuelve un mensaje de error específico. |
| Este botón es muy feo. | Cambia este botón de envío a esquinas redondeadas de 8px, fondo azul #2563eb, texto blanco, oscurece el color un 10% al hacer hover, y añade una animación de transición de 0.2s. |
| Hay un error, ayúdame a arreglarlo. | Al ejecutar python app.py aparece el error: AttributeError: 'NoneType' object has no attribute 'session'. Parece ser un problema de inicialización de la base de datos, ayúdame a diagnosticarlo y arreglarlo. |
El principio clave de los prompts: cuanto más específico, mejores resultados. Una necesidad vaga solo produce código vago.
Errores comunes y precauciones
Error 1: La IA puede reemplazar todo el conocimiento de programación
Vibe Coding reduce la barrera de entrada a la programación, pero no la elimina.
Todavía necesitamos entender conceptos básicos: variables, funciones, API, bases de datos, HTTP, asincronía, etc.; de lo contrario, no podremos juzgar si el código generado por la IA es correcto, ni describir los requisitos de manera eficaz.
Error 2: Describir todas las funciones de una sola vez
No copies el documento PRD completo del producto a la IA esperando que genere código perfecto de una sola vez.
La atención de la IA tiene un límite; cuantos más requisitos, más fácil es cometer errores.
La forma más eficaz es: funcionalidad principal → verificación → añadir funcionalidad → verificación → seguir iterando.
Error 3: No leer el código escrito por la IA
Algunos desarrolladores integran directamente el código generado por la IA sin revisarlo, lo cual es muy peligroso.
La IA puede introducir vulnerabilidades de seguridad, problemas de rendimiento o arquitecturas completamente inadecuadas.
Como mínimo, debemos revisar rápidamente la lógica clave para asegurarnos de que no haya problemas evidentes.
Precauciones
- La información sensible (claves de API, contraseñas de bases de datos) no la escribas directamente en la conversación: primero usa variables de entorno como marcadores de posición en el código y luego complétalas manualmente.
- Haz commit en Git después de cada cambio importante, para poder revertir fácilmente si surgen problemas.
- El código generado por IA puede no cumplir con los estándares de codificación de tu equipo, por lo que requiere ajustes manuales.
- Para código que requiere alta fiabilidad (pagos, autenticación, procesamiento de datos), asegúrate de realizar una revisión manual después de que la IA lo genere.
Escenarios adecuados para Vibe Coding
Vibe Coding no es una solución universal; saber en qué escenarios es adecuado te ayuda a distribuir mejor tu esfuerzo.
| Escenario | Nivel de idoneidad | Descripción |
|---|---|---|
| Desarrollo de prototipos/MVP | Muy alto | Validar ideas rápidamente, obtener un demo funcional en unas horas. |
| Interfaces CRUD | Muy alto | Los patrones repetitivos son claros, la IA los completa con gran precisión. |
| Páginas/componentes frontend | Muy alto | Componentes HTML/CSS/React, la IA es muy competente en ellos. |
| Scripts/herramientas de automatización | Muy alto | Scripts desechables, procesamiento de datos, operaciones con archivos. |
| Escritura de pruebas unitarias | Muy alto | Generar casos de prueba basados en las firmas de las funciones. |
| Implementación de algoritmos complejos | Medio | Requiere una descripción clara del algoritmo y verificación manual de su corrección. |
| Optimización de sistemas de bajo nivel | Bajo | Involucra distribución de memoria, líneas de caché y características de hardware; la IA es propensa a cometer errores sutiles. |
| Código con altos requisitos de seguridad | Con precaución | Código de cifrado, autenticación y pagos; después de que la IA lo genere, debe ser revisado por expertos. |