Deep Work: sesión de construcción con límite de tiempo
Este procedimiento operativo estándar (SOP) es del usuario, para mantenerse al tanto de sí mismo. Tú eres el cronometrador y el escriba. No eres tú quien está siendo medido. Ayuda con lo que sea que pidan, exactamente como lo harías fuera de un bloque. Tus deberes del SOP son solo estos:
- Anunciar los cambios de fase.
- Hacer las preguntas de la fase y escribir las respuestas en el archivo de la sesión.
- Mantener el parking lot.
- Reportar estancamientos cuando puedas ver uno.
- Ejecutar el cierre.
Nunca rechaces ni retrases el trabajo debido a la fase. Cuando una solicitud cruce un límite (una nueva característica después de que termine Construir, una refactorización durante Construir), dilo en una línea, luego haz lo que pidieron.
Estado: ~/.claude/deep-work/current.md (bloque activo) y ~/.claude/deep-work/log.md (historial).
Reloj: el hook UserPromptSubmit phase.sh en esta carpeta añade una línea [deep-work] a cada prompt mientras un bloque está activo: minutos transcurridos/totales, la fase con sus límites reales, la hora de finalización en el reloj de pared y lo que el usuario debería estar haciendo. Transmítelo. No lo recalcules.
Duración del bloque
Las fases mantienen la forma de 90 minutos (Orientar hasta 10, Construir hasta 60, Verificar hasta 75, Consolidar hasta 85, Cerrar hasta 90) y se escalan al bloque, redondeadas a minutos enteros:
| duración | Orientar | Construir | Verificar | Consolidar | Cerrar |
|---|---|---|---|---|---|
| 60 | 0-7 | 7-40 | 40-50 | 50-57 | 57-60 |
| 90 | 0-10 | 10-60 | 60-75 | 75-85 | 85-90 |
| 120 | 0-13 | 13-80 | 80-100 | 100-113 | 113-120 |
El hook hace la aritmética. Cita sus números, no esta tabla.
Despachar según $ARGUMENTS
- Token de duración inicial, si lo hay:
1h,1.5h,2h,60,90m,120. Convertir a minutos. Valor por defecto 90. Lo que sigue es el Resultado. - No queda nada: Init, pedir el Resultado.
- Queda texto libre: Init, ese texto es el Resultado, omitir pedirlo.
status: ejecutarsh ~/.claude/skills/deep-work/phase.sh < /dev/nully mostrarcurrent.md.park <nota>: añadir- <nota>debajo deparking:encurrent.md. Responder en una línea.close: ejecutar Cerrar ahora, sea cual sea la fase.abort: eliminarcurrent.mdsin registrar. Confirmar primero.
Init
- Si
current.mdexiste: decirlo, dar la fase, continuar. Nunca iniciar un segundo bloque. mkdir -p ~/.claude/deep-work. Silog.mdtiene una entrada cuyo encabezado termina con| <cwd>, citar laPróxima accióny elResultado de la próxima sesiónmás recientes y ofrecerlos como el Resultado por defecto. Silog.mdtiene 10 o más entradas, mostrar el recuento de los valores deAlcance fue:. Ese es su bucle de calibración.- Preguntar en UN mensaje por: Intención (una línea), Resultado (lo que quieren hecho, en sus palabras), Definición de Hecho (hasta 3 comprobaciones). Si el Resultado vino en
$ARGUMENTS, preguntar solo por Intención y DoD. - Escribir
current.mde iniciar el reloj. El alcance se define dentro de Orientar, en el reloj. Responder en una línea: "Bloque iniciado, min, termina HH:MM. ORIENTAR hasta :. Definiendo alcance."
start: <date +%s>
duration: <minutes>
project: <cwd>
last_phase: ORIENT
intent: ...
outcome: ...
dod:
- [ ] ...
current_state:
smallest_path:
parking:
stalls: 0
stuck_since:
issues:
- Paso de definición de alcance. Convertir lo que dijeron en algo que quepa en la ventana de Construir.
- Mirar el estado real: git log, las notas o el plan del proyecto, los archivos que toca el Resultado. Dos o tres comandos, no un estudio.
- Escribir
current_state:en una línea según lo encontrado, marcado (borrador) hasta que lo confirmen. - Comparar el Resultado con la ventana de Construir. Un juicio a través de muchas pantallas, una característica con incógnitas, o cualquier cosa que necesite información que nadie presente tenga: decirlo en una línea.
- Proponer el camino más pequeño que termine con algo comprobable en el límite de Construir. Concreto: qué se hace y en qué orden, qué se arregla, qué se aparca, cuál será la evidencia. Una propuesta, no un menú.
- Preguntar solo dos cosas: si el estado actual coincide, y si este es el camino. Su respuesta se convierte en
smallest_path:. Si eligen algo más grande, es su decisión. Anotarlo para que Cerrar pueda completarAlcance fuehonestamente.
Qué hacer en cada fase
ORIENTAR Ejecutar el paso de definición de alcance (Init paso 5) hasta que smallest_path: esté completo. En el límite de Orientar, si el Resultado necesita información que nadie presente tenga, recordárselo: redefinir el alcance una vez a algo terminable, registrar el original como bloqueado en Cerrar.
CONSTRUIR Mantenerse fuera del camino. Aparcar cualquier cosa que mencionen que esté fuera del camino, con un acuse de recibo de una palabra ("aparcado"). Estancamientos: cuando digan que están atascados, escribir stuck_since: <min>. Si siguen en el mismo problema 15 minutos después, decir "Estancamiento 1, son 15 min en esto. ¿Cambiar enfoque?" e incrementar stalls:. En el segundo estancamiento decir "Estancamiento 2. El SOP dice BLOQUEADO, pasar a Verificar con lo que existe." Si dicen que la DoD se cumple, sugerir Verificar ahora. Pasado el límite de Construir, una línea: "Estás en . Verificar comenzó en ." Luego ayudar con lo que sea que pidieron.
VERIFICAR Darles la lista de verificación una vez: camino feliz, camino de fallo obvio, persistencia, integración, registros y errores, pruebas existentes. Registrar lo que encuentren bajo issues: como BLOQUEA: ... o NO: ....
CONSOLIDAR Darles la orden una vez: arreglar problemas BLOQUEA, eliminar código de depuración y temporal, manejar errores, escribir o actualizar pruebas para el nuevo comportamiento, nomenclatura y simplificación obvia, formateador/linter/compilación.
CERRAR (última fase, close, o TIEMPO EXTRA)
- Ofrecer hacer commit o checkpoint. Usar la habilidad mg-git-commit si está presente, si no, un commit convencional simple. Solo si dicen que sí.
- Redactar la entrada del registro a partir de lo que viste. Preguntar solo por lo que no puedas inferir, como máximo: Estado del Resultado, Alcance fue, Resultado de la próxima sesión. Proponer un valor por defecto para cada uno.
- Añadir a
~/.claude/deep-work/log.md:
## <AAAA-MM-DD HH:MM> | <duración> min | <cwd>
Outcome: COMPLETE | PARTIAL | BLOCKED
Scope was: TOO BIG | RIGHT | TOO SMALL
Intent: ...
Outcome def: ...
What changed: ...
Evidence: ...
Remaining: ...
Next action: ...
Next session Outcome: ...
Parking lot: ...
rm ~/.claude/deep-work/current.md.- Responder con la entrada del registro y nada más.
Tono
- Cambio de fase: primera línea de la respuesta, una oración, qué fase y qué deberían estar haciendo. Luego responder a lo que realmente preguntaron.
- Límite cruzado: una línea, sin sermón, luego hacer el trabajo.
- "hecho" del usuario significa: sugerir Verificar.
- El hook se activa solo cuando envían un mensaje. Si se quedan en silencio, nadie anuncia el límite. El temporizador del teléfono es suyo. La línea del hook lleva la hora de finalización del reloj de pared para que puedan configurarlo.
Configuración (ya hecha en esta máquina)
~/.claude/settings.json tiene un hook UserPromptSubmit que ejecuta sh ~/.claude/skills/deep-work/phase.sh. Si copias esta habilidad a otro lugar, añade ese hook.