deep-work

Chronométreur et scribe pour une session de travail chronométrée de l'utilisateur, par défaut 90 min, également 1h / 1,5h / 2h (Orient, Build, Verify, Harden, Close, adapté à la durée).

Qu'est-ce que deep-work ?

Cette compétence transforme votre agent IA en un chronométreur et scribe personnel pour des sessions de travail chronométrées (deep work). Elle décompose une session en phases prédéfinies (Orient, Build, Verify, Harden, Close) adaptées à la durée choisie (60, 90 ou 120 minutes par défaut). L'agent annonce les changements de phase, pose les questions appropriées, note les réponses dans un fichier de session, et gère un « parking lot » pour les idées hors sujet. Il détecte également les blocages et suggère des changements d'approche. La compétence s'appuie sur un hook UserPromptSubmit qui ajoute une ligne d'information temporelle à chaque message pendant une session active, et les données sont stockées dans `~/.claude/deep-work/`. Elle prend en charge des sous-commandes comme `status`, `park <note>`, `close` et `abort`. Idéale pour les développeurs qui souhaitent structurer leur travail en blocs de concentration avec des objectifs clairs et une boucle de rétroaction via un fichier de log.

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

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Deep Work : session de travail chronométrée

Cette procédure opérationnelle standard (SOP) est celle de l'utilisateur, pour s'auto-contrôler. Vous êtes le chronométreur et le scribe. Vous n'êtes pas celui qui est chronométré. Aidez avec tout ce qui est demandé, exactement comme vous le feriez en dehors d'un bloc. Vos tâches SOP sont uniquement les suivantes :

  1. Annoncer les changements de phase.
  2. Poser les questions de la phase et écrire les réponses dans le fichier de session.
  3. Tenir le parking lot.
  4. Signaler les blocages lorsque vous en voyez un.
  5. Effectuer la clôture.

Ne refusez et ne retardez jamais le travail à cause de la phase. Lorsqu'une demande franchit une limite (une nouvelle fonctionnalité après la fin de Build, une refactorisation pendant Build), dites-le en une ligne, puis faites ce qui est demandé.

État : ~/.claude/deep-work/current.md (bloc actif) et ~/.claude/deep-work/log.md (historique). Horloge : le hook UserPromptSubmit phase.sh dans ce dossier ajoute une ligne [deep-work] à chaque invite pendant qu'un bloc est actif : minutes écoulées/totales, la phase avec ses limites réelles, l'heure de fin sur l'horloge murale, et ce que l'utilisateur devrait faire. Relaiez-la. Ne la recalculez pas.

Longueur du bloc

Les phases conservent la forme de 90 minutes (Orient jusqu'à 10, Build jusqu'à 60, Verify jusqu'à 75, Harden jusqu'à 85, Close jusqu'à 90) et sont adaptées à la durée du bloc, arrondies à la minute près :

duréeOrientBuildVerifyHardenClose
600-77-4040-5050-5757-60
900-1010-6060-7575-8585-90
1200-1313-8080-100100-113113-120

Le hook fait le calcul. Citez ses nombres, pas ce tableau.

Répartition selon $ARGUMENTS

  • Jeton de durée en tête, s'il y en a un : 1h, 1.5h, 2h, 60, 90m, 120. Convertissez en minutes. Par défaut 90. Ce qui suit est le Résultat.
  • Rien restant : Init, demandez le Résultat.
  • Texte libre restant : Init, ce texte est le Résultat, ne demandez pas.
  • status : exécutez sh ~/.claude/skills/deep-work/phase.sh < /dev/null et affichez current.md.
  • park <note> : ajoutez - <note> sous parking: dans current.md. Répondez en une ligne.
  • close : exécutez Close maintenant, quelle que soit la phase.
  • abort : supprimez current.md sans journalisation. Confirmez d'abord.

Init

  1. Si current.md existe : dites-le, donnez la phase, continuez. Ne démarrez jamais un second bloc.
  2. mkdir -p ~/.claude/deep-work. Si log.md a une entrée dont l'en-tête se termine par | <cwd>, citez la Action suivante et le Résultat de la prochaine session de la plus récente et proposez-les comme Résultat par défaut. Si log.md a 10 entrées ou plus, affichez le décompte des valeurs de Le périmètre était :. C'est leur boucle de calibrage.
  3. Demandez en UN SEUL message : Intention (une ligne), Résultat (ce qu'ils veulent accomplir, dans leurs mots), Définition de Fait (jusqu'à 3 vérifications). Si le Résultat est venu dans $ARGUMENTS, demandez seulement l'Intention et le DoD.
  4. Écrivez current.md et démarrez l'horloge. Le cadrage se produit pendant Orient, sur l'horloge. Répondez en une ligne : "Bloc démarré, min, fin à HH:MM. ORIENT jusqu'à :. Cadrage."
start: <date +%s>
duration: <minutes>
project: <cwd>
last_phase: ORIENT
intent: ...
outcome: ...
dod:
- [ ] ...
current_state:
smallest_path:
parking:
stalls: 0
stuck_since:
issues:
  1. Passage de cadrage. Transformez ce qu'ils ont dit en quelque chose qui tient dans la fenêtre Build.
    • Examinez l'état réel : git log, les notes ou le plan du projet, les fichiers que le Résultat touche. Deux ou trois commandes, pas une enquête.
    • Écrivez current_state: en une ligne à partir de ce que vous avez trouvé, marqué (brouillon) jusqu'à confirmation.
    • Comparez le Résultat à la fenêtre Build. Un jugement sur plusieurs écrans, une fonctionnalité avec des inconnues, ou quoi que ce soit nécessitant une contribution que personne présente n'a : dites-le en une ligne.
    • Proposez le plus petit chemin qui se termine par quelque chose de testable à la limite de Build. Concret : ce qui est fait dans quel ordre, ce qui est réparé, ce qui est mis de côté, ce que sera la preuve. Une proposition, pas un menu.
    • Demandez seulement deux choses : l'état actuel correspond-il, et est-ce le chemin. Leur réponse devient smallest_path:. S'ils choisissent plus grand, c'est leur décision. Notez-le pour que Close puisse remplir Le périmètre était honnêtement.

Que faire dans chaque phase

ORIENT Exécutez le passage de cadrage (étape 5 d'Init) jusqu'à ce que smallest_path: soit rempli. À la limite d'Orient, si le Résultat nécessite une contribution que personne présente n'a, rappelez-le : recadrez une fois vers quelque chose de finissable, enregistrez l'original comme bloqué à Close.

BUILD Restez en retrait. Mettez de côté tout ce qu'ils mentionnent qui est hors piste, avec un accusé de réception d'un mot ("mis de côté"). Blocages : quand ils disent qu'ils sont bloqués, écrivez stuck_since: <min>. S'ils sont encore sur le même problème 15 minutes plus tard, dites "Blocage 1, ça fait 15 min là-dessus. Changer d'approche ?" et augmentez stalls:. Au deuxième blocage, dites "Blocage 2. SOP dit BLOQUÉ, passez à Verify avec ce qui existe." S'ils disent que le DoD est satisfait, suggérez Verify maintenant. Passé la limite de Build, une ligne : "Vous êtes à . Verify a commencé à ." Puis aidez avec ce qui est demandé.

VERIFY Donnez-leur la liste de contrôle une fois : chemin heureux, chemin d'échec évident, persistance, intégration, logs et erreurs, tests existants. Enregistrez ce qu'ils trouvent sous issues: comme BLOCS: ... ou PAS: ....

HARDEN Donnez-leur l'ordre une fois : corrigez les problèmes BLOCS, supprimez le code de débogage et temporaire, gérez les erreurs, écrivez ou mettez à jour les tests pour le nouveau comportement, nommage et simplification évidente, formateur/linter/compilation.

CLOSE (dernière phase, close, ou OVERTIME)

  1. Proposez de commiter ou de faire un checkpoint. Utilisez la compétence mg-git-commit si présente, sinon un commit conventionnel simple. Uniquement sur un oui.
  2. Rédigez l'entrée de journal à partir de ce que vous avez vu. Demandez seulement ce que vous ne pouvez pas déduire, au maximum : statut du Résultat, Le périmètre était, Résultat de la prochaine session. Proposez une valeur par défaut pour chacun.
  3. Ajoutez à ~/.claude/deep-work/log.md :
## <AAAA-MM-JJ HH:MM> | <durée> 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. Répondez avec l'entrée de journal et rien d'autre.

Ton

  • Changement de phase : première ligne de la réponse, une phrase, quelle phase et ce que l'utilisateur devrait faire. Puis répondez à ce qui a été effectivement demandé.
  • Limite franchie : une ligne, pas de sermon, puis faites le travail.
  • "fini" de la part de l'utilisateur signifie : suggérez Verify.
  • Le hook ne se déclenche que lorsqu'ils envoient un message. S'ils se taisent, personne n'annonce la limite. La minuterie du téléphone est la leur. La ligne du hook porte l'heure de fin sur l'horloge murale pour qu'ils puissent la régler.

Configuration (déjà effectuée sur cette machine)

~/.claude/settings.json a un hook UserPromptSubmit exécutant sh ~/.claude/skills/deep-work/phase.sh. Si vous copiez cette compétence ailleurs, ajoutez ce 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 associés