Aprende · la habilidad que le da memoria a Claude Code

Todos los que usamos Claude tenemos el mismo problema: se le olvida todo entre sesiones. Le corriges hoy, mañana lo vuelve a hacer. Construimos aprende para que eso termine. Una sola línea — /aprende — al final de la sesión y tu agente recuerda lo que aprendiste con él.

Open-source · MIT · Claude Code 2.0+ · Compatible con Codex

/aprende al final de la sesión → 4 categorías de memoria → tu agente deja de repetir errores

Aprende es un plugin para Claude Code que escribimos junto a @Hainrixz bajo la marca tododeia. Al final de una sesión escribes /aprende y la habilidad escanea la conversación en cinco pases (A escanea → B genera → C deduplica → D te pide confirmación → E escribe), saca a la luz lo que valió la pena aprender, te lo muestra como lista numerada con etiquetas de confidence (alta / media / baja), y solo entonces escribe a disco lo que tú aprobaste.

Cuatro categorías cubren todo lo que normalmente se pierde entre sesiones: memoria (preferencias que no cambian), lección estilo Reflexion (qué pasó, por qué, cómo evitar, señal de detección), skill stub auto-armada cuando un patrón se repite, y project-doc con escritura dual a CLAUDE.md + AGENTS.md para que también jale en Codex.

Aprende es intencionalmente más simple que claude-mem o claude-reflect: sin SQLite, sin embeddings, sin servidor MCP. Solo Markdown plano y workflow bilingüe. Se enchufa a la convención de memoria que ya tienes en ~/.claude/projects/ en vez de levantar un sistema paralelo. La idea de fondo viene del paper de Reflexion (Shinn et al., 2023): capturar el por qué de cada error vale más que loguear solo el qué.

Open-source · MITClaude Code 2.0+Compatible con Codex5 pases A → E4 categorías de memoria7 comandos · 2 hooks opcionalesHecho por tododeia

01 · Vistazo

Cómo funciona /aprende · los 5 pases A → E

Cuando escribes /aprende, la habilidad corre cinco pases siempre en el mismo orden. Tú nada más confirmas en el paso D — los otros cuatro son silenciosos.

  1. A

    Escanea

    Pass A · Scan

    Lee la conversación entera en silencio y marca cinco señales: correcciones explícitas tuyas, secuencias error → fix, reintentos repetidos del mismo Edit, explicaciones tuyas de por qué algo es así, y workflows que describiste paso a paso.

    Sale: Lista interna de señales (no la ves todavía).

  2. B

    Genera

    Pass B · Generate

    Convierte cada señal en un candidato con categoría (memory, lesson, skill o project-doc), título corto, una frase de rationale, una etiqueta de confidence (alta / media / baja) y un excerpt opcional.

    Sale: Hasta 15 candidatos máximo por corrida — para forzar foco.

  3. C

    Deduplica

    Pass C · Dedup

    Antes de mostrarte la lista, revisa MEMORY.md, ~/.claude/skills/ y CLAUDE.md/AGENTS.md para ver si ya existe algo parecido. Si lo encuentra, anota el overlap — nunca dropea en silencio.

    Sale: Lista con marcadores [overlaps with: nombre-existente] cuando aplica.

  4. D

    Confirma

    Pass D · Confirm

    Te muestra la lista numerada y espera. Puedes responder con números (1,3,5), rangos (1-4), 'all', 'none', 'edit N: <texto>', 'drop low' o 'skip N'. Nada se escribe a disco hasta que tú confirmes.

    Sale: El control siempre regresa a ti.

  5. E

    Ejecuta

    Pass E · Execute

    Para cada candidato aprobado escribe en el lugar correcto: memorias en ~/.claude/projects/<slug>/memory/, lecciones con el prefijo lesson_ y las 4 secciones Reflexion, skills stub en ~/.claude/skills/<slug>/SKILL.md, y project-docs con escritura dual a CLAUDE.md + AGENTS.md.

    Sale: Una línea de confirmación por escritura y un resumen al final.

La regla más importante: nada se escribe a disco antes del paso D. Tú siempre tienes el control de qué guardar.

02 · Paso cero

Instala Claude Code · dos caminos, ninguno requiere saber programar

Si todavía no tienes Claude Code instalado, escoge uno de estos dos caminos. Los dos llegan al mismo lado — pruebas con claude en una terminal y debe abrirse la primera sesión. Si ya lo tienes corriendo, salta a la sección siguiente.

Camino 1 · Terminal

Instálalo por la terminal con un comando

npm install -g @anthropic-ai/claude-code

Si ya tienes Node.js instalado, este comando lo deja listo en menos de un minuto. Abre Terminal (Mac) o PowerShell (Windows), pega el comando y dale enter. Cuando termine, escribe claude en la misma terminal para arrancar la primera sesión.

Para quien ya usó la terminal antes o no le tiene miedo a una línea de comando.

Camino 2 · Aplicación

Descarga la app de escritorio desde claude.com

Visita claude.com/claude-code

Si prefieres una aplicación con su icono en el Dock o en el menú de Inicio, entra al sitio oficial, descarga el instalador para tu sistema (macOS, Windows o Linux), ábrelo y sigue los 3 pasos del wizard. Al final aparece la ventana de Claude Code lista para usar.

claude.com/claude-code

Para quien nunca abrió una terminal y prefiere doble-click + siguiente, siguiente, listo.

03 · Instalación

Instala aprende en 30 segundos · dos slash commands

Adentro de una sesión de Claude Code (no en la terminal — en la ventana del chat), pega estos dos slash commands en orden. Toma 30 segundos en total.

01

Agrega el marketplace de aprende

Pega este slash command en la sesión

/plugin marketplace add Hainrixz/aprende-skill

Adentro de una sesión de Claude Code (no en la terminal — en la ventana del chat), pega este slash command y dale enter. Claude Code se conecta al repo de Hainrixz y lo registra como una fuente de plugins disponible. No instala nada todavía, solo dice 'sé dónde está'.

02

Instala el plugin aprende

Pega este slash command en la sesión

/plugin install aprende@aprende-skill

Inmediatamente después, pega el segundo slash command. Claude Code descarga la habilidad, los 7 comandos y los 2 hooks opcionales. Cuando termina, ya tienes /aprende disponible en cualquier sesión — los hooks quedan activos por defecto y nunca escriben aprendizajes solos (eso solo lo hace /aprende cuando tú confirmas).

Listo. La habilidad y los 2 hooks quedan conectados automáticamente. Los hooks vienen activos por defecto pero nunca escriben aprendizajes — solo acumulan señales para que /aprende las lea después.

04 · Primera corrida

Tu primera /aprende · qué vas a ver en pantalla

Cuando corras /aprende por primera vez, así se va a ver la pantalla. Léelo con calma — abajo te explico cada parte.

Tú:  /aprende

aprende:
  Encontré 3 aprendizajes candidatos en esta conversación.

  Responde con: números (ej. 1,3,5), rangos (1-4), "all", "none", o
  "edit N: <texto>" / "drop low" / "skip N".

   1. [project-doc] Usa pnpm, no npm — el usuario dijo "este repo usa pnpm"  (alta)
   2. [lesson]      localStorage falla en el WebView de compra — usa IndexedDB  (alta)
   3. [memory]      El usuario prefiere mensajes de error explícitos en tests  (media)

  >

Tú:  1,2

aprende:
  ✓ project  → ./CLAUDE.md + ./AGENTS.md  (## Commands)
  ✓ lesson   → ~/.claude/projects/.../lesson_webview-localstorage.md  (+MEMORY.md)

  Capturados 2 aprendizajes. Corre /aprende --review el mes que viene para podar.

Qué significa cada categoría

[memory] = preferencia o hecho durable; [lesson] = anti-patrón estilo Reflexion; [skill] = workflow reusable; [project-doc] = convención del repo (va a CLAUDE.md y AGENTS.md).

Qué significa (alta / media / baja)

alta = corrección explícita tuya o patrón repetido; media = inferido de un comentario único; baja = hipótesis. La regla de oro: prefiere falsos negativos. Si dudas, no lo guardes.

Qué pasa si respondes 'none' o 'drop low'

none = descarta todos los candidatos sin escribir nada; drop low = guarda solo los de confidence alta y media. También puedes editar antes de guardar con 'edit N: <nuevo texto>'.

05 · Comandos

Los 7 comandos del plugin · /aprende y sus seis acompañantes

Estos son los siete comandos que vas a usar en el día a día. /aprende es el principal — los otros son flags y comandos auxiliares.

/aprende

Corrida estándar. Revisa la conversación, te muestra la lista numerada, escribe solo después de tu confirmación.

Cuándo: Al final de cada sesión donde corregiste algo o resolvieron un error juntos.

/learn

Alias en inglés de /aprende. Hace exactamente lo mismo.

Cuándo: Si trabajas con un equipo bilingüe o se te traba el dedo en la ñ.

/aprende --review

Revisa las lessons existentes. Marca cuáles siguen vigentes y cuáles deberías retirar (status: retired, nunca rm).

Cuándo: Una vez al mes — para podar lessons que ya no aplican y no inflar la carpeta.

/aprende --portable

Corrida estándar + espeja las lessons a ./.aprende/ en la raíz del proyecto, con un index.md que Codex puede leer.

Cuándo: Cuando vayas a usar el mismo proyecto en Codex y quieras que conserve la memoria.

/aprende-enable-hooks

Mete los 2 hooks (PostToolUse + Stop) en ~/.claude/settings.json. Si instalaste por plugin, ya están activos — este comando es para instalación manual.

Cuándo: Si hiciste el install manual (git clone + cp) y quieres que los hooks empiecen a acumular señales.

/aprende-disable-hooks

Quita los 2 hooks de settings.json y deja un backup. Las lessons ya guardadas no se tocan.

Cuándo: Si quieres correr /aprende solo manualmente, sin los recordatorios automáticos.

Responder a /aprende

En la lista de candidatos puedes escribir: números (1,3,5), rangos (1-4), 'all' (todos), 'none' (ninguno), 'edit N: <texto>' (modifica antes de guardar), 'drop low' (quita los de confidence baja) o 'skip N' (sáltate uno).

Cuándo: Cada vez que /aprende te muestre la lista numerada y espere tu respuesta.

06 · Hooks

Hooks · activos por defecto, jamás escriben aprendizajes

Si instalaste por plugin, estos dos hooks quedaron activos automáticamente. La garantía clave: solo acumulan señales en ~/.claude/projects/<slug>/.aprende-signals.md — nunca escriben aprendizajes por su cuenta.

PostToolUse

Cuándo corre: Después de cada llamada Bash, Edit o Write que hace Claude Code.

Un script de bash (capture-signal.sh) inspecciona el resultado. Si ve un exit code no-cero, un mensaje de error, o el mismo archivo editado 3+ veces, appendea una línea a ~/.claude/projects/<slug>/.aprende-signals.md.

Garantía: Nunca escribe un aprendizaje. Solo acumula señales para que /aprende las lea después.

Stop

Cuándo corre: Al cerrar la sesión de Claude Code.

Otro script (stop-suggest.sh) revisa si hay señales sin atender y no corriste /aprende. Si es así, te emite un recordatorio de una línea sugiriendo correrlo antes de cerrar.

Garantía: Tampoco escribe aprendizajes. Solo te recuerda — el control sigue siendo tuyo.

Si prefieres correr /aprende solo a mano sin recordatorios, desactívalos. La habilidad deja un backup de tu ~/.claude/settings.json antes de modificarlo, por si te arrepientes.

Desactivar los 2 hooks (deja backup automático)

/aprende-disable-hooks

07 · Almacenamiento

Las 4 categorías de memoria y dónde vive cada una

Aprende guarda lo que tú apruebes en cuatro categorías. Cada una vive en una ruta específica y cumple un rol distinto.

memory

Hechos durables, preferencias del usuario, contexto del proyecto que no cambia entre sesiones.

Vive en

~/.claude/projects/<slug>/memory/<name>.md

Filename ejemplo

feedback_pnpm-sobre-npm.md
lesson

Pasó un error y lo resolvieron juntos. Captura las 4 secciones Reflexion: qué pasó, por qué pasó, cómo evitar, señal de detección.

Vive en

Misma carpeta que memory/, con prefijo lesson_ y type: lesson en el frontmatter.

Filename ejemplo

lesson_webview-storage.md
skill

Apareció un workflow multi-paso reusable que el agente debería saber armar solo. Deja un SKILL.md stub para que tú lo completes después.

Vive en

~/.claude/skills/<slug>/SKILL.md (o ./.claude/skills/...)

Filename ejemplo

SKILL.md
project-doc

Comandos de build, convenciones del repo, gotchas para todo agente futuro — incluso si abren el repo con Codex.

Vive en

./CLAUDE.md + ./AGENTS.md (escritura dual)

Filename ejemplo

CLAUDE.md (marcador <!-- /aprende YYYY-MM-DD -->)

Mapa de almacenamiento completo

~/.claude/
├── projects/
│   └── -Users-tu-ruta-al-proyecto/
│       └── memory/
│           ├── MEMORY.md                    # índice
│           ├── feedback_pnpm-sobre-npm.md   # type: feedback
│           ├── project_supabase-rls.md      # type: project
│           ├── lesson_webview-storage.md    # type: lesson (Reflexion)
│           └── ...
├── skills/
│   ├── aprende/        # la habilidad (workflow A → E)
│   ├── learn/          # alias inglés
│   └── ...             # cualquier skill que /aprende deje como stub
└── settings.json       # config de hooks (después de /aprende-enable-hooks)

<tu-proyecto>/
├── CLAUDE.md           # para Claude Code
├── AGENTS.md           # para Codex (escritura dual, mismo contenido)
└── .aprende/           # solo si corriste --portable
    ├── index.md
    └── lessons/
        └── ...

08 · Cross-tool

Cross-tool · funciona también con Codex sin migrar nada

Aprende está diseñado para vivir en dos ecosistemas a la vez: Claude Code y Codex. La idea es que abras el mismo proyecto en cualquiera de los dos y el agente arranque ya enterado.

Escritura dual a CLAUDE.md + AGENTS.md

Cada vez que /aprende guarda un project-doc, escribe el mismo contenido en CLAUDE.md y en AGENTS.md (la convención que Codex lee). No tienes que mantener dos archivos a mano — la habilidad los sincroniza por ti.

Flag --portable para lessons y memories

Si corres /aprende --portable, además del lugar habitual en ~/.claude/projects/ también espeja las lessons a ./.aprende/lessons/ dentro del proyecto, con un index.md plano. Codex puede leerlo y arrancar enterado.

Convención agentskills.io

La habilidad misma es Markdown + YAML, sin SDK propietario. Cualquier agente que entienda la convención agentskills.io puede cargarla y correr los 5 pases A → E.

Activar el mirror para Codex (corre cuando termines una sesión)

/aprende --portable

09 · Principios

7 principios de diseño · por qué aprende dice no a la captura automática

Los siete principios explican por qué la habilidad se siente intencional en vez de mágica. Si en algún momento /aprende parece rebelde, revisa estos siete — siempre hay un principio detrás de la decisión.

  1. 1.

    Confirmación primero

    Nada se escribe a disco hasta que tú digas qué guardar. La habilidad repite esta regla tres veces internamente porque es la más importante.

  2. 2.

    Prefiere falsos negativos

    Una regla equivocada cristalizada en memoria es peor que repetir la misma corrección tres veces. Las etiquetas de confidence (alta / media / baja) son obligatorias para que tú filtres.

  3. 3.

    Anota overlaps, no dropees

    Cuando un candidato parece duplicado de algo ya guardado, lo marca [overlaps with: nombre-existente] y te deja decidir. Nunca dropea en silencio.

  4. 4.

    Retira, no borres

    Las lecciones obsoletas reciben status: retired en su frontmatter, no se borran con rm. El rastro de auditoría importa para entender por qué cambió tu workflow.

  5. 5.

    Reflexion sobre logging

    Las lecciones capturan por qué pasó un error (no solo qué). El paper de Reflexion (Shinn et al., 2023) midió +20% de lift por incluir ese why — por eso las 4 secciones son obligatorias.

  6. 6.

    Los hooks son consejeros, no autoridades

    PostToolUse y Stop solo acumulan señales y te recuerdan. Nunca escriben aprendizajes por su cuenta. La captura automática es el modo de falla que cristaliza falsos positivos.

  7. 7.

    Tope de 15 candidatos por corrida

    Si /aprende encuentra más de 15 señales en una sesión, recorta a los 15 con mayor confidence. Fuerza foco — mejor 5 lessons buenas que 50 mediocres.

10 · Para Claude Code

7 prompts copy-paste · pégalos y deja que Claude haga el trabajo

Cada prompt está pensado para un momento específico: antes de instalar, después de tu primera corrida, una vez al mes para podar, cuando vayas a migrar a Codex, cuando la carpeta de memoria se sienta llena, cuando una lesson resulte falsa, y cuando ya sepas qué lesson quieres guardar sin esperar al escaneo. Pégalos en orden o salta directo al que aplica hoy.

Antes de instalar: verifica que tienes todo listo

Pega este prompt en Claude Code antes de correr /plugin marketplace add. Claude revisa tu versión, permisos y archivos del proyecto y te dice si puedes seguir o si hay algo que arreglar primero.

Voy a instalar la habilidad aprende (https://github.com/Hainrixz/aprende-skill). Antes de hacerlo, quiero un diagnóstico rápido en seis puntos.

1. Revisa la versión de Claude Code instalada. Tiene que ser 2.0 o superior. Si no llegamos a esa versión, dime cómo actualizar (npm install -g @anthropic-ai/claude-code@latest si me instalé por npm; reinstalar la app si me instalé por desktop).

2. Verifica permisos de escritura en ~/.claude/. Lista los archivos que ya viven ahí (projects/, skills/, settings.json si existe). Si la carpeta no existe todavía, dímelo — eso es normal en una instalación nueva.

3. Revisa si este repo donde estamos ya tiene CLAUDE.md o AGENTS.md. Si los tiene, abre los primeros 20 renglones de cada uno y dime qué encontraste (esto importa porque aprende va a hacer escritura dual a los dos archivos).

4. Comprueba si por error tengo alguna otra habilidad de memoria activa (claude-mem, mempalace, claude-reflect). Lee ~/.claude/settings.json si existe y dime qué hooks tiene registrados.

5. Resumen en cuatro bullets:
   - Versión de Claude Code: <X.Y>
   - Permisos en ~/.claude/: <ok / faltan>
   - CLAUDE.md / AGENTS.md en el repo: <existen / no existen>
   - Otras habilidades de memoria activas: <ninguna / cuáles>

6. Recomendación final: ¿puedo seguir con /plugin marketplace add Hainrixz/aprende-skill o necesito arreglar algo primero?

No instales ni borres nada. Solo el reporte. Cuando lo apruebe, te paso el siguiente prompt.

Corre tu primera /aprende con explicación paso a paso

Para después de una sesión real donde corregiste algo o resolvieron un error juntos. Claude corre /aprende, te explica cada candidato antes de pedir tu confirmación, y al final te dice exactamente dónde quedó cada cosa.

Acabamos de terminar una sesión donde trabajamos en este proyecto. Antes de cerrar, quiero correr /aprende por primera vez y entender cada paso.

1. Antes de correrlo, hazme un resumen de la sesión en tres bullets: qué corregí, qué errores resolvimos juntos, qué decisión tomé que el agente debería recordar la próxima vez. Esto me ayuda a saber qué esperar de la lista.

2. Ahora corre /aprende. Cuando aparezca la lista numerada de candidatos, NO me pidas la confirmación todavía. En vez de eso, para cada candidato dime:
   - Qué señal lo originó (corrección explícita, error → fix, patrón repetido, explicación de por qué, workflow descrito).
   - Por qué cayó en esa categoría (memory, lesson, skill, o project-doc) y no en otra.
   - Qué confidence label tiene (alta, media, baja) y por qué.
   - Si tiene un marcador [overlaps with: ...], dime con qué se solapa.

3. Después de tu explicación, te digo qué números aprobar. Espero usar números o rangos (1,3-5 por ejemplo). Si no quiero guardar ninguno, digo 'none'. Si quiero guardar todos los de alta confidence y descartar los de baja, digo 'drop low'.

4. Cuando ejecutes las escrituras, dime archivo por archivo cuál escribiste y a qué ruta exacta (no me digas solo 'guardé el memory', dime ~/.claude/projects/<slug>/memory/<filename>.md).

5. Al final, abre MEMORY.md y muéstrame las líneas que se agregaron. Quiero verificar que el índice quedó al día.

Si algo falla:
- /aprende no aparece como comando → corrí /plugin install aprende@aprende-skill antes de esto?
- La lista está vacía → quizás la sesión fue corta o no hubo correcciones; corre /aprende otra vez después de una sesión más cargada.
- Permisos negados al escribir → revisa que ~/.claude/projects/<slug>/memory/ exista y tenga permisos de escritura.

Audita las lessons del mes con semáforo verde/amarillo/rojo

Corre /aprende --review pero con un wrapper que clasifica cada lesson por estado actual. Útil una vez al mes para podar sin perder rastro.

Es momento de revisar las lessons que aprende ha guardado durante el último mes. Antes de correr /aprende --review, quiero un mapa completo.

1. Lista todas las lessons del proyecto actual. Lee ~/.claude/projects/<slug>/memory/ y filtra solo los archivos que empiezan con lesson_. Para cada uno extrae: filename, fecha de creación (frontmatter), título corto, y status si existe (active, retired, draft).

2. Para cada lesson, clasifícala con un semáforo:
   - 🟢 Verde: La lesson sigue siendo relevante. Las 4 secciones Reflexion (qué pasó / por qué / cómo evitar / señal de detección) tienen sentido contra el estado actual del repo.
   - 🟡 Amarillo: Borderline. La lesson capturó algo que pasó pero el código ya cambió. Necesita refresh o nota.
   - 🔴 Rojo: Retirada. La lesson ya no aplica porque el archivo se borró, la stack cambió, o resultó ser un falso positivo.

3. Ahora corre /aprende --review y deja que la habilidad haga su pasada. Cuando termine, compárame su clasificación con la mía. Si discrepamos, dime en cuál y por qué.

4. Para las lessons clasificadas en rojo, NO uses rm. Edita el frontmatter y agrega status: retired más una línea retired_at: YYYY-MM-DD. La auditoría importa.

5. Al final, dame un resumen:
   - Total de lessons al inicio: N
   - Verdes (vigentes): N
   - Amarillas (necesitan refresh): N
   - Rojas (retiradas en este review): N

Si algo falla:
- /aprende --review no encuentra lessons → quizás todavía no has guardado ninguna. Corre /aprende primero después de una sesión donde resolvieron un error.
- El frontmatter no tiene type: lesson → quizás es una memoria normal, no una lesson. Verifica con grep "^type:" en los archivos.

Habilita el repo para usar el mismo proyecto en Codex

Antes de abrir el proyecto en Codex, corre /aprende --portable para que las lessons y memories queden espejadas en ./.aprende/ y AGENTS.md tenga la referencia para que Codex las cargue.

Quiero abrir este proyecto también en Codex y necesito que conserve la memoria que aprende ya guardó en Claude Code. Hazlo en este orden.

1. Verifica que aprende ya tiene contenido para migrar. Cuenta cuántos archivos hay en ~/.claude/projects/<slug>/memory/ (memorias y lessons). Si hay cero, dímelo y detente acá — no hay nada que migrar todavía.

2. Corre /aprende --portable. Esto hace dos cosas: la corrida estándar (escanea, presenta candidatos, espera confirmación) y al ejecutar también espeja las lessons aprobadas a ./.aprende/lessons/ en la raíz del proyecto.

3. Verifica que ./.aprende/ quedó creado. Listame su contenido:
   - ./.aprende/index.md (debe existir)
   - ./.aprende/lessons/<filename>.md por cada lesson que se mirrors

4. Abre el AGENTS.md del proyecto. Tiene que tener una línea agregada automáticamente apuntando a ./.aprende/index.md. Si no la tiene, agrega tú esta línea al final de la sección de project-docs:

   ## Aprende mirror
   Las lessons espejadas viven en ./.aprende/lessons/. El índice está en ./.aprende/index.md.

5. Smoke test desde Codex (manual): cuando abras el proyecto en Codex, pídele "lee AGENTS.md y dime qué lessons hay en ./.aprende/lessons/". Si responde con la lista, la migración funcionó.

Si algo falla:
- ./.aprende/ no se creó → confirma que corriste --portable, no /aprende solo. El flag es lo que activa el mirror.
- AGENTS.md no recibió la línea → revisa permisos de escritura en la raíz del proyecto.
- Codex no encuentra el index → quizás abrió el proyecto antes de que terminara la corrida. Cierra Codex, vuelve a abrir.

Audita la carpeta memory/, marca overlaps y sugiere retiros

Cuando ~/.claude/projects/<slug>/memory/ empieza a sentirse llena, este prompt hace un inventario, marca duplicados y propone hasta 3 archivos para retirar — sin tocar nada todavía.

Quiero hacer una limpieza guiada de mi carpeta de memoria. No borres ni edites nada — solo me das un reporte y yo apruebo después.

1. Listame todo lo que vive en ~/.claude/projects/<slug>/memory/ (donde <slug> es el slug del proyecto actual). Agrupa por tipo:
   - feedback_*.md (preferencias del usuario)
   - project_*.md (contexto del proyecto)
   - lesson_*.md (lessons estilo Reflexion)
   - otros (cualquier cosa que no entre en los tres anteriores)

2. Por cada archivo extrae: filename, una línea de resumen del cuerpo, fecha del frontmatter, status si existe.

3. Detecta overlaps. Para cada par de archivos que cubre el mismo tema (mismo error, misma preferencia, misma convención), marca el par con [overlap potencial: <razon de 1 línea>]. NO los unas todavía — solo márcalos.

4. Sugiere hasta 3 archivos para retirar (no borrar). Para cada uno explícame:
   - Por qué deberías retirarlo (obsoleto, cubierto por otro, capturado por error).
   - Qué archivo lo reemplaza si aplica.
   - El comando de edición que ejecutaría: 'edit ~/.claude/projects/<slug>/memory/<filename>.md y agregar status: retired al frontmatter'.

5. Pregunta confirmación archivo por archivo. Si apruebo, edita solo el frontmatter (agregar status: retired y retired_at: YYYY-MM-DD). Si no apruebo, déjalo intacto y pasa al siguiente.

6. Al final, actualiza MEMORY.md para que el índice refleje los nuevos status. Muéstrame las líneas modificadas.

Si algo falla:
- Carpeta vacía → /aprende aún no ha capturado nada en este proyecto. Corre una sesión y luego /aprende.
- Permisos negados → revisa que tu usuario sea dueño de ~/.claude/projects/.

Marca una lesson como retirada (no borrar)

Cuando una lesson capturada resulta ser incorrecta. Este prompt la marca status: retired, agrega el motivo, y deja constancia para futuros reviews — sin borrarla.

Una lesson que aprende guardó resultó ser un falso positivo. No la borres — márquemela como retirada con el rastro de auditoría.

1. Te paso el filename exacto (o yo te lo digo después de que listes los disponibles). Ejemplo:
   ~/.claude/projects/<slug>/memory/lesson_<algo>.md

2. Antes de editar, ábrelo y muéstrame:
   - El frontmatter actual (todo el bloque YAML).
   - Las 4 secciones Reflexion (qué pasó / por qué / cómo evitar / señal de detección).

3. Hazme una pregunta corta: ¿por qué crees que es falso positivo? Espera mi respuesta — la voy a copiar tal cual al frontmatter como motivo.

4. Cuando responda, edita el frontmatter agregando estos campos (sin tocar el resto del archivo):
   - status: retired
   - retired_at: <fecha de hoy YYYY-MM-DD>
   - retired_reason: <mi respuesta literal>

5. Actualiza MEMORY.md: cambia la línea que apunta a esta lesson para que diga (retirada YYYY-MM-DD: <motivo abreviado>).

6. Confirma el cambio:
   - Vuelve a abrir la lesson y muéstrame el frontmatter nuevo.
   - Vuelve a abrir MEMORY.md y muéstrame la línea actualizada.

7. No borres el archivo. Importa el rastro: en un /aprende --review futuro vamos a poder revisar las lessons retiradas y ver patrones de falsos positivos.

Si algo falla:
- No encuentras el archivo → quizás está en otra carpeta de proyecto. Lista todas las carpetas en ~/.claude/projects/ que tienen lessons.
- El archivo ya tiene status: retired → confirma fecha y motivo viejo, y pregunta si quiero sobrescribir.

Escribe una lesson sin correr /aprende

Para cuando sabes exactamente qué lección quieres guardar y no quieres esperar a que aprende escanee la conversación. Claude la formatea con las 4 secciones Reflexion y la deja en la carpeta correcta.

Quiero guardar una lesson manualmente sin correr /aprende. Tengo el contenido en la cabeza y necesito que me lo formatees con las 4 secciones Reflexion y lo guardes en el lugar correcto.

1. Pregúntame las 4 secciones, una por una, esperando mi respuesta antes de pasar a la siguiente:
   - **Qué pasó:** el evento concreto (error, mistake, mala decisión).
   - **Por qué pasó:** la causa raíz, no el síntoma.
   - **Cómo evitar:** la regla práctica que el agente debe seguir la próxima vez.
   - **Señal de detección:** qué patrón en el código o en el log indica que el mismo error está a punto de repetirse.

2. Cuando tenga las 4 respuestas, propónme un filename corto en kebab-case con prefijo lesson_ (ejemplo: lesson_webview-localstorage.md). Espera mi visto bueno antes de escribir.

3. Arma el archivo final con este formato exacto:

   ---
   type: lesson
   created_at: <fecha hoy YYYY-MM-DD>
   status: active
   confidence: <pregúntame: alta / media / baja>
   ---

   # <título corto en una línea>

   **Qué pasó:** <respuesta 1>

   **Por qué pasó:** <respuesta 2>

   **Cómo evitar:** <respuesta 3>

   **Señal de detección:** <respuesta 4>

4. Guarda el archivo en ~/.claude/projects/<slug>/memory/<filename>.md (donde <slug> es el slug del proyecto actual).

5. Actualiza MEMORY.md agregando una línea al final con el filename + el título.

6. Confírmame qué quedó:
   - Ruta del archivo nuevo.
   - Línea agregada a MEMORY.md.

Si algo falla:
- Carpeta memory/ no existe → créala primero con mkdir -p antes de escribir.
- Filename ya existe → propón una variación (lesson_<base>-v2.md) y pregunta cuál usar.

11 · FAQ

Las 4 preguntas que la comunidad hace siempre

¿Mi carpeta de memoria se va a llenar de basura?

Tres defensas: las etiquetas de confidence te hacen filtrar antes de guardar; el dedup marca overlaps antes de mostrarte la lista; y /aprende --review te deja podar mensualmente con un comando.

¿Funciona con Codex?

Sí. Las escrituras de project-doc van siempre a CLAUDE.md y AGENTS.md a la vez. Para lessons, corre /aprende --portable para espejarlas a ./.aprende/ dentro del proyecto — Codex puede leer ese folder.

¿El agente puede aprender solo sin que yo corra /aprende?

No, por diseño. La captura automática es el modo de falla que cristaliza falsos positivos. Los hooks te recuerdan correr /aprende pero nunca escriben por su cuenta. El control sigue siendo tuyo siempre.

¿En qué se diferencia de claude-mem o claude-reflect?

aprende es intencionalmente más simple: sin SQLite, sin embeddings, sin servidor MCP. Markdown plano + workflow bilingüe + formato Reflexion para las lessons. Se enchufa a la convención de memoria existente del usuario en vez de levantar un sistema paralelo. Si necesitas búsqueda vectorial, mira claude-mem o MemPalace.

12 · Antes de cerrar

Checklist final · siete pasos para declarar que se acabó la amnesia

Antes de declarar que aprende quedó bien instalado, pasa los siete ítems. Cada uno trae cómo verificarlo en una línea.

  • Claude Code 2.0+ está instalado y la primera sesión funciona.

    Cómo verificar: Abre Claude Code, escribe /help. Si responde con la lista de comandos, está listo.

  • El plugin aprende quedó instalado (corriste los 2 slash commands).

    Cómo verificar: Escribe / en una sesión nueva. Tiene que aparecer /aprende en la lista de comandos disponibles.

  • Corriste tu primera /aprende y guardaste al menos un candidato.

    Cómo verificar: Lee ~/.claude/projects/<slug>/memory/MEMORY.md — debe tener una entrada con el filename del aprendizaje que aprobaste.

  • Los hooks PostToolUse + Stop están activos (por default si instalaste por plugin).

    Cómo verificar: Cierra la sesión sin correr /aprende. Si ves un recordatorio de una línea sugiriendo correrlo, los hooks están activos.

  • Si guardaste un project-doc, CLAUDE.md tiene el marcador HTML <!-- /aprende YYYY-MM-DD -->.

    Cómo verificar: Abre CLAUDE.md y busca el comentario HTML. Cada bloque que aprende escribió queda firmado con la fecha.

  • Si tienes Codex también, AGENTS.md tiene el mismo contenido que CLAUDE.md.

    Cómo verificar: Abre AGENTS.md y compara con CLAUDE.md. Si son idénticos en la sección que /aprende tocó, la escritura dual funcionó.

  • Tienes un recordatorio mensual para correr /aprende --review.

    Cómo verificar: Agéndalo en tu calendario o en el archivo de tareas que uses — sin podar, el folder se infla con lessons que ya no aplican.

Si los siete pasan, la siguiente sesión de Claude Code va a arrancar ya enterada de lo que aprendiste con él. Se acabó la amnesia.

Cierre de la guía

Aprende es Markdown plano hecho por personas reales. Si te salvó de repetir un error tres veces, dale una estrella al repo y compártelo con alguien cuyo agente sigue olvidando lo mismo cada semana. Construido por la comunidad tododeia junto a @Hainrixz como mantenedor del repo. Si quieres leer la guía completa en español (con todos los detalles del SKILL.md y los hooks), revisa el README.es.md en GitHub.

Aprende es open-source bajo MIT, construido por tododeia y mantenido por @Hainrixz. Construido sobre patrones de Reflexion (Shinn et al., 2023), Hermes Agent (Nous Research), claude-reflect y claude-mem. Mascota y arte del hero generados con Higgsfield. Esta página no está afiliada a Anthropic ni a los autores de los repos referenciados.