CommunityProgramación y desarrollogithub.com

deep-work

Cronometrador y escriba para las sesiones de trabajo con límite de tiempo del usuario, por defecto 90 min, también 1h / 1.5h / 2h (Orientar, Construir, Verificar, Consolidar, Cerrar, escalado al bloque). Se usa cuando el usuario dice 'iniciar sesión', 'trabajo profundo', 'bloque de 90 min', 'bloque de trabajo' o invoca /deep-work. Subcomandos: status, park <nota>, close, abort.

¿Qué es deep-work?

Esta habilidad para agentes de IA (como Claude Code, Cursor, Codex) convierte al agente en un cronometrador y escriba para sesiones de trabajo con límite de tiempo. Al iniciar una sesión (por defecto 90 minutos, también soporta 60 y 120 minutos), el agente guía al usuario a través de cinco fases: Orientar (planificación), Construir (ejecución), Verificar (pruebas), Consolidar (refinamiento) y Cerrar (documentación). El agente anuncia cambios de fase, registra el progreso en un archivo de sesión, gestiona un 'parking lot' para ideas fuera del camino, detecta estancamientos y ejecuta un cierre formal con opción de commit. Esto ayuda a los desarrolladores a mantener el enfoque, gestionar el tiempo y documentar el progreso de manera estructurada, mejorando la productividad en sesiones de trabajo profundo.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jamesisbuilding/App-Building-Skills/tree/main/skills/deep-work

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

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

Documentación

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:

  1. Anunciar los cambios de fase.
  2. Hacer las preguntas de la fase y escribir las respuestas en el archivo de la sesión.
  3. Mantener el parking lot.
  4. Reportar estancamientos cuando puedas ver uno.
  5. 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ónOrientarConstruirVerificarConsolidarCerrar
600-77-4040-5050-5757-60
900-1010-6060-7575-8585-90
1200-1313-8080-100100-113113-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: ejecutar sh ~/.claude/skills/deep-work/phase.sh < /dev/null y mostrar current.md.
  • park <nota>: añadir - <nota> debajo de parking: en current.md. Responder en una línea.
  • close: ejecutar Cerrar ahora, sea cual sea la fase.
  • abort: eliminar current.md sin registrar. Confirmar primero.

Init

  1. Si current.md existe: decirlo, dar la fase, continuar. Nunca iniciar un segundo bloque.
  2. mkdir -p ~/.claude/deep-work. Si log.md tiene una entrada cuyo encabezado termina con | <cwd>, citar la Próxima acción y el Resultado de la próxima sesión más recientes y ofrecerlos como el Resultado por defecto. Si log.md tiene 10 o más entradas, mostrar el recuento de los valores de Alcance fue:. Ese es su bucle de calibración.
  3. 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.
  4. Escribir current.md e 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:
  1. 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 completar Alcance fue honestamente.

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)

  1. 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í.
  2. 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.
  3. 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: ...
  1. rm ~/.claude/deep-work/current.md.
  2. 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.

Individual skills in this repo

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

app-icon-design

Create, revise, and audit app icons using Apple's Human Interface Guidelines, with a clear visual identity and production-ready deliverables.

app-keyword-research

Validate an app idea against the App Store before building it. Turns the idea into search phrases, measures demand (App Store autocomplete) and competition (current top-10 apps) for each, ranks keywords by opportunity, and maps which apps own the market. Use when the user wants keyword research, ASO, "is there demand for…", "who are the competitors for…", "what should we call it / which keywords", or to validate or compare app ideas.

app-offer

Designs one opinionated "Grand Slam Offer" for any app idea, new or already shipped, by running Alex Hormozi's $100M Offers method adapted to app stores. It covers the market and niche, the commodity check, a value-equation audit, the problem inventory, delivery vehicles, the trimmed value stack, pricing and tiers, scarcity, urgency, bonuses, the guarantee, naming, the paywall per placement, the onboarding fast win, a test plan and a ship plan. It works within App Store and Google Play rules. For a shipped app it reads the code and notes first and produces a before/after. Use it when the user says "/app-offer", "run app-offer on <idea>", "make a grand slam offer for my app", "Hormozi my app", "price my app" or "design my paywall offer", or asks how to package, price, name, guarantee or paywall an app. It writes offer/grand-slam-offer.md (or ./<app-slug>-grand-slam-offer.md for a new idea).

brand-reference-pack

Build or refresh a shortform brand reference pack for any app from its real surfaces — website, App Store listing and reviews, socials, the live app (driven end to end on the simulator) and its code tokens — plus a status check of the upstream foundations (ICP, voice of customer, brand voice). Produces the context that content formats and design decisions are made from, as markdown, tokens.json and a PDF. Use for "build a brand pack for <app>", "refresh the brand pack", "capture the site/app/socials for shortform", "/brand-reference-pack".

new-app-info

Builds the information pack Apple asks for when App Review replies "We need additional information to better understand the app". It covers all six required items: (1) a screen recording on a physical device, as a shot list the user records; (2) the app's purpose and target audience; (3) setup and main features, with any login credentials or sample files; (4) the external services the app uses; (5) regional differences; (6) regulated industry or protected third-party material. It also runs Apple's "Prevent common issues" checks. Every answer comes from the app's own code (accounts, user-generated content, in-app purchases, SDKs, locales, screen-capture blocking, data deletion). It reads the connected iPhone's iOS version and checks it is the latest. It ends by telling the user to paste the reply into App Review Information → Notes. Use it when the user pastes that App Review message, says "/new-app-info", "we got rejected, they want more info", "answer App Review", or "make the App Store review pack". It w...

reel-motion-graphics

Turn a script or concept into an on-brand 9:16 explainer reel (luxury tech, warm sand on near-black, glassmorphism, CSS 3D, Bodoni + Instrument Sans) built in HyperFrames, with the animation above the fold and the presenter's talking head below. Use when the user gives a script, transcript, paper summary or concept and asks for a reel, motion graphics, an animated explainer or "the same style as the upcycling reel". Produces a HyperFrames project, a rendered MP4 and a live artifact player.

Skills relacionados