Migrar Diseño

Migra archivos de trabajo de agent-skills (SPEC.md, tasks/plan.md, tasks/todo.md, CONSTRAINTS.md, etc.) de las rutas raíz del proyecto a las rutas del equipo en .claude-work/. Útil cuando un proyecto se inició antes de instalar agent-skills-jksim, o cuando existen tanto archivos raíz como .claude-work/.

¿Qué es Migrar Diseño?

Esta habilidad está diseñada para equipos que usan agent-skills-jksim y necesitan unificar la ubicación de los archivos de trabajo del agente. Normalmente, estos archivos se encuentran en la raíz del proyecto (como SPEC.md), pero la estructura de equipo los organiza dentro de .claude-work/. La habilidad automatiza la migración en un solo commit, preservando el historial de git de cada archivo mediante `git mv`, y también actualiza las referencias vivas (como enlaces relativos en README.md o referencias en CLAUDE.md) para que apunten a las nuevas rutas. Es importante destacar que la habilidad no modifica registros históricos (como entradas de tareas completadas o mensajes de commit) y requiere la aprobación del usuario antes de cualquier movimiento. Está pensada para proyectos ya en curso, no para proyectos nuevos, y evita conflictos como mover archivos no rastreados o interferir con directorios como spec/ (usado por RSpec).

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jksim/agent-skills-jksim/tree/HEAD/skills/migrate-layout

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Migrar Diseño?

Resumen

El agent-skills ascendente mantiene los archivos de trabajo en la raíz del proyecto. El equipo los mantiene en .claude-work/ (consulta la tabla de Rutas en las anulaciones del equipo). Esta habilidad mueve un proyecto en curso al diseño del equipo en un solo commit. Cada archivo conserva su historial de git. Las casillas de verificación de tareas se mueven con los archivos, por lo que el trabajo continúa donde se detuvo.

El argumento es el <id> para los archivos de plan y tareas, por ejemplo /agent-skills-jksim:migrate-layout fl-debug.

Cuándo Usar

  • Un proyecto tiene SPEC.md, tasks/plan.md, tasks/todo.md o CONSTRAINTS.md en su raíz.
  • Un proyecto tiene tanto archivos de trabajo raíz como .claude-work/.

No lo uses para un proyecto nuevo. La etapa de especificación escribe en .claude-work/ desde el inicio.

Proceso

1. Verificar el estado inicial

Detente e informa al usuario cuando se cumpla una de estas condiciones:

  • La carpeta no es un repositorio de git.
  • git status --porcelain --untracked-files=no muestra cambios en archivos rastreados. Pide al usuario que primero los confirme o los guarde con stash. Los archivos no rastreados pueden permanecer: el paso 8 prepara con git add -u, que nunca los añade.
  • git check-ignore -q .claude-work/spec/SPEC.md tiene éxito. Verifica una ruta de archivo: un patrón como .claude-work/ no coincide con la carpeta antes de que exista. Los proyectos consumidores confirman .claude-work/.

2. Encontrar los archivos antiguos

Mira solo estas rutas, relativas a la raíz del proyecto:

Ruta antiguaRuta del equipo
SPEC.md, docs/SPEC.md.claude-work/spec/SPEC.md
SPEC-<módulo>.md.claude-work/spec/SPEC-<módulo>.md
CAPABILITY-MAP.md.claude-work/spec/CAPABILITY-MAP.md
tasks/plan.md.claude-work/tasks/plan-<id>.md
tasks/todo.md.claude-work/tasks/todo-<id>.md
CONSTRAINTS.md.claude-work/docs/CONSTRAINTS.md
docs/ideas/<nombre>.md.claude-work/docs/ideas/<nombre>.md
docs/intent/<tema>.md.claude-work/docs/intent/<tema>.md
docs/decisions/Se queda. Pregunta (ver paso 4)

No toques spec/. RSpec y otros diseños de prueba lo usan.

Usa solo archivos que git rastree (git ls-files). git mv falla en otros archivos. Nombra cualquier archivo antiguo no rastreado o ignorado y pregunta al usuario.

Cuando no exista ningún archivo antiguo, informa al usuario de que no hay nada que migrar. Detente.

3. Obtener el <id>

Usa el argumento. Sin argumento, sugiere un id corto en kebab-case a partir del nombre del proyecto y pregunta al usuario. Omite este paso cuando no haya tasks/plan.md o tasks/todo.md.

4. Mostrar el plan y esperar aprobación

Muestra una tabla: ruta antigua, ruta nueva. Luego, enumera cada conflicto y pregunta al respecto:

  • El destino existe: ya hay un archivo en la ruta del equipo. No muevas ese archivo. Pregunta qué hacer.
  • Dos especificaciones: tanto SPEC.md como docs/SPEC.md existen. Pregunta cuál es la especificación.
  • Otros archivos en tasks/: mueve solo plan.md y todo.md. Nombra los otros archivos.
  • docs/decisions/ existe: el valor predeterminado es mantenerlo, porque un proyecto conserva su propia carpeta de ADR. Muévelo a .claude-work/docs/adr/ solo cuando el usuario lo indique.

No muevas nada hasta que el usuario apruebe la tabla.

5. Mover con git mv

Ejecuta git mv <antiguo> <nuevo> para cada archivo. Crea primero las carpetas de destino (mkdir -p). Nunca copies y borres: git mv conserva el historial. Si tasks/ queda vacía, ejecuta rmdir tasks.

6. Corregir referencias vivas

Busca en el proyecto las rutas antiguas: git grep -n -E 'SPEC(-[A-Za-z0-9_-]+)?\.md|CAPABILITY-MAP\.md|CONSTRAINTS\.md|tasks/(plan|todo)\.md|docs/(ideas|intent|decisions)/'.

También busca los nombres de archivo simples, porque un archivo movido puede nombrar a su compañero sin carpeta: git grep -n -E '(^|[^-/A-Za-z0-9_])(plan|todo)\.md'. Ejemplo: "detalle en todo.md" en el plan se convierte en "detalle en todo-.md".

Una referencia viva le dice al lector o al agente dónde está el archivo ahora. Cámbiala:

  • CLAUDE.md: "SPEC.md: especificación aprobada" se convierte en ".claude-work/spec/SPEC.md: especificación aprobada".
  • README.md: [SPEC.md](SPEC.md) se convierte en [SPEC.md](.claude-work/spec/SPEC.md).
  • Un enlace relativo en un archivo movido: ../SPEC.md en el antiguo tasks/plan.md se convierte en ../spec/SPEC.md en .claude-work/tasks/plan-<id>.md.
  • La línea puntero de restricciones en CLAUDE.md.
  • Otros enlaces relativos en cada archivo movido. Un archivo movido está a una nueva profundidad, por lo que un enlace a un archivo que no se movió también se rompe. Ejemplo: [x](src/a.kt) en la raíz SPEC-foo.md se convierte en [x](../../src/a.kt) en .claude-work/spec/SPEC-foo.md.

Un registro informa lo que sucedió en un momento pasado. Déjalo como está:

  • Una entrada de tarea completada: "Archivos: README.md, SPEC.md".
  • Un registro de cambios, una nota de revisión o un mensaje de commit.

Cuando no estés seguro, deja el texto y enuméralo en el paso 7.

7. Mostrar el resultado

Muestra git status, la diferencia de las referencias modificadas y una lista de las referencias de rutas antiguas que no cambiaste, con el motivo de cada una.

8. Confirmar una vez

git mv ya preparó los movimientos. Prepara las referencias editadas con git add -u. No uses git add -A: puede añadir archivos no relacionados. Confirma con el mensaje Mover archivos de trabajo a .claude-work. No hagas push.

Si un hook rechaza la confirmación, detente e infórmalo. No uses --no-verify.

9. Informar el siguiente paso

Dile al usuario qué archivos se movieron y cuáles se quedaron. Si .claude-work/docs/VOCABULARY.md no existe, di que la siguiente etapa de especificación lo creará (regla 2). No lo hagas ahora.

Justificaciones Comunes

JustificaciónRealidad
"Copiar es más simple que git mv."Una copia pierde el historial del archivo. Los revisores y git log --follow lo necesitan.
"Actualizaré cada mención de SPEC.md."Los registros describen el pasado. Cambiarlos reescribe la historia.
"El árbol solo está un poco sucio."El trabajo no confirmado termina en el commit de migración. Pregunta al usuario primero.
"El plan es obvio, así que omitiré la aprobación."El usuario decide el <id> y cada conflicto. Espera.

Banderas Rojas

  • git log --follow no muestra historial anterior al commit de migración.
  • Una entrada de tarea completada o un registro de cambios nombra una ruta del equipo que no existía entonces.
  • spec/ o docs/decisions/ se movió sin la aprobación del usuario.
  • Más de un commit, o un push.

Verificación

  • Cada archivo antiguo está en su ruta del equipo. No queda ningún archivo antiguo en la raíz, excepto aquellos que el usuario eligió conservar.
  • git log --follow <nueva ruta> muestra el historial antiguo.
  • Las referencias vivas apuntan a las rutas del equipo. Los registros no han cambiado.
  • Las casillas de verificación de tareas no han cambiado.
  • Un commit, Mover archivos de trabajo a .claude-work. git status está limpio. No se ha hecho push.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills relacionados