> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devinenterprise.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Transformer un hotfix de production en playbook

export const UseCaseHero = ({title, description, prompt, category, features, devinUrl, agent, intent, playbookId, type}) => {
  const encodedPrompt = encodeURIComponent(prompt || '');
  const tag = 'docs-use-case-gallery';
  const utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=hero-cta';
  const agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  const devinHref = type === 'schedule' ? 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + (prompt ? '&prompt=' + encodedPrompt : '') : type === 'review' ? 'https://app.devin.ai/review?' + utm : agent === 'ada' ? 'https://app.devin.ai/search?' + utm + '&noSubmit=true' + (prompt ? '&prompt=' + encodedPrompt : '') : devinUrl ? devinUrl.includes('?') ? devinUrl + '&' + utm + agentParams : devinUrl + '?' + utm + agentParams : prompt ? 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encodedPrompt : 'https://app.devin.ai/?' + utm + agentParams;
  const buttonLabel = type === 'schedule' ? 'Schedule in Devin ↗' : type === 'review' ? 'Set Up Devin Review ↗' : agent === 'advanced' ? 'Try in Devin ↗' : agent === 'dana' ? 'Try in Dana ↗' : agent === 'ada' ? 'Try in Ask Devin ↗' : 'Try in Devin ↗';
  const featureList = features ? features.split(',').map(f => f.trim()) : [];
  return <div className="uc-hero">
      <div className="uc-hero-inner">
        <div className="uc-hero-left">
          <h1 className="uc-hero-title">{title}</h1>
          <p className="uc-hero-desc">{description}</p>
          <div>
            <a href={devinHref} target="_blank" rel="noopener noreferrer" className="try-in-devin-btn">
              {buttonLabel}
            </a>
          </div>
        </div>
        <div className="uc-hero-meta">
          <div className="uc-meta-item">
            <span className="uc-meta-label">Author</span>
            <span className="uc-meta-value">Cognition</span>
          </div>
          <div className="uc-meta-item">
            <span className="uc-meta-label">Category</span>
            <span className="uc-meta-value">{category}</span>
          </div>
          {featureList.length > 0 && <div className="uc-meta-item">
              <span className="uc-meta-label">Features</span>
              <span className="uc-meta-value">{featureList.join(', ')}</span>
            </div>}
        </div>
      </div>
    </div>;
};

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<UseCaseHero title="Transformer un correctif urgent en production en playbook" description="Extrayez les étapes exactes d’une session de gestion d’incident réussie afin que votre équipe puisse rejouer la correction à chaque fois." prompt="La session d’incident de fuite mémoire de mardi dernier était exemplaire — Devin a identifié la fuite dans le pool de connexions, appliqué la correction, vérifié en staging, puis déployé sans aucun temps d’arrêt : [session link]. Extrayez-en un playbook de correctif urgent réutilisable pour que les ingénieurs d’astreinte puissent suivre le même processus lors de futurs problèmes de mémoire." category="Optimisation Devin" features="Avancé, Playbooks" agent="advanced" intent="create" />

<div className="uc-detail-wrapper">
  <Tip>Vous ne voulez pas tout configurer manuellement ? Collez un lien vers cette page dans une session Devin et demandez-lui de tout configurer pour vous.</Tip>

  <Steps>
    <Step title="Identifier la session d’incident qui mérite d’être capturée">
      Après avoir résolu un incident en production, vous disposez d’une transcription de session Devin qui a capturé chaque étape de diagnostic, chaque commande exécutée et chaque décision prise sous pression. Cette transcription est la matière première d’un playbook que votre équipe d’astreinte pourra réutiliser la prochaine fois.

      Toutes les sessions d’incident ne sont pas forcément des candidates pour un playbook. Recherchez des sessions où Devin a suivi une méthodologie claire et répétable — le type d’incident que votre équipe rencontre régulièrement :

      * **Fuites mémoire** — identifié la source, appliqué la correction, vérifié l’utilisation du heap après le déploiement
      * **Épuisement du pool de connexions** — tracé la cause racine, ajusté les paramètres du pool, ajouté de la supervision
      * **Timeouts en cascade** — isolé l’upstream défaillant, ajouté des circuit breakers, validé la récupération
    </Step>

    <Step title="Créer le playbook">
      Ouvrez la [page d’accueil de Devin](https://app.devin.ai/?utm_source=docs\&utm_medium=use-case-gallery) et démarrez une nouvelle session. Décrivez la session que vous souhaitez transformer en playbook.

      Collez le lien de la session d’incident et décrivez ce que le playbook doit capturer. Soyez précis sur le **périmètre de généralisation** — le playbook doit fonctionner pour la *classe* d’incident, pas seulement pour le service qui a cassé.

      <PromptBlock agent="advanced" intent="create">
        ```txt Create hotfix playbook from incident session theme={null}
        This session diagnosed and fixed a memory leak in our payments service
        caused by unclosed database connections:
        https://app.devin.ai/sessions/abc123

        Create a reusable hotfix playbook for memory-leak incidents that any
        on-call engineer can attach to a new session. It should:
        - Generalize the diagnostic steps (not payments-specific)
        - Include the heap profiling approach from the session
        - Capture how it validated the fix in staging before deploying
        - Keep the rollback procedure in case the fix makes things worse
        - Add a step for posting a summary to the #incidents Slack channel
        ```
      </PromptBlock>

      Si vous avez plusieurs incidents résolus du même type (par exemple, deux sessions différentes de fuite mémoire), ajoutez-les tous. Devin identifie les schémas communs entre les sessions et produit un [playbook](/fr/product-guides/creating-playbooks) plus robuste.
    </Step>

    <Step title="Le tester sur le prochain incident">
      Le véritable test consiste à vérifier si le playbook fonctionne sur une instance *différente* de la même classe d’incident. Lorsque le prochain problème de mémoire survient, démarrez une nouvelle session Devin, associez le playbook et pointez-le vers le service affecté.

      <PromptBlock>
        ```txt Diagnose memory leak in the notifications service theme={null}
        Use the attached hotfix playbook to investigate and fix a memory leak
        in the notifications service. OOM kills started at 03:12 UTC.
        The service is at src/services/notifications/.
        ```
      </PromptBlock>

      Si la session résout l’incident proprement, votre playbook se généralise bien. Si elle rencontre des difficultés — par exemple, le schéma de fuite est différent ou le service utilise un autre driver de base de données — réinjectez cette session dans Devin et demandez-lui d’améliorer le playbook. Consultez [Fix a Flaky DB Migration Playbook](/fr/use-cases/gallery/improve-playbook-from-sessions) pour ce flux de travail.
    </Step>
  </Steps>
</div>
