¿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.mdoCONSTRAINTS.mden 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=nomuestra 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 congit add -u, que nunca los añade.git check-ignore -q .claude-work/spec/SPEC.mdtiene é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 antigua | Ruta 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.mdcomodocs/SPEC.mdexisten. Pregunta cuál es la especificación. - Otros archivos en
tasks/: mueve soloplan.mdytodo.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.mden el antiguotasks/plan.mdse convierte en../spec/SPEC.mden.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ízSPEC-foo.mdse 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ón | Realidad |
|---|---|
"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 --followno 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/odocs/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 statusestá limpio. No se ha hecho push.