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

# Convertir les PRD en tickets de sprint

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 les PRD en tickets de sprint" description="Pointez Devin vers un PRD Notion et obtenez des tickets Linear bien cadrés pour chaque lot de travail." prompt="Lisez le PRD sur cette page Notion : [collez l’URL Notion]. Analysez notre base de code pour comprendre l’architecture actuelle, puis découpez le projet en lots de travail indépendants. Pour chaque lot de travail, créez un ticket Linear avec une description, des critères d’acceptation, une estimation de complexité (S/M/L) et la liste des fichiers à modifier." category="Gestion de projet" features="Intégrations, MCP" />

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

  <Steps>
    <Step title="Connecter Notion et Linear">
      Devin lit votre PRD directement depuis Notion en utilisant le [Notion MCP](/fr/work-with-devin/mcp). Accédez à **Settings > Connections > MCP servers**, trouvez **Notion**, puis cliquez sur **Enable**. Une demande d’autorisation d’accès à votre espace de travail Notion s’affichera — accordez un accès en lecture à l’espace de travail où se trouvent vos PRD.

      Votre [intégration Linear](/fr/integrations/linear) doit également être connectée. Accédez à **Settings > Connections > Linear** et cliquez sur **Connect**, puis sélectionnez les équipes pour lesquelles Devin doit créer des tickets. Une fois connecté, Devin dispose automatiquement des outils Linear natifs — aucun MCP Linear séparé n’est nécessaire.
    </Step>

    <Step title="Pointer Devin vers votre PRD">
      Partagez l’URL de la page Notion et indiquez clairement à Devin comment structurer les tickets. Soyez précis concernant le nom du projet Linear, le format de vos tickets et les conventions de votre équipe.

      <PromptBlock>
        ```txt PRD to tickets theme={null}
        Read the PRD at this Notion page:
        https://notion.so/yourteam/user-profiles-v2-abc123

        Investigate our codebase to understand the current user profile
        architecture, then break this project into independent work packages.

        For each work package, create a Linear ticket in the "User Profiles V2"
        project with:
        - A clear description of the change and why it's needed
        - Acceptance criteria
        - Complexity estimate (S/M/L)
        - List of files likely to be modified

        Order the tickets by suggested implementation sequence and note
        any dependencies between them.
        ```
      </PromptBlock>

      Si votre équipe suit un modèle de ticket spécifique, ajoutez-le comme entrée [Knowledge](/fr/product-guides/knowledge) au lieu de le répéter dans chaque prompt. Par exemple : "All engineering tickets must include: Description, Acceptance Criteria, Technical Notes, and T-shirt size estimate." Devin applique automatiquement Knowledge à chaque session.
    </Step>

    <Step title="Passer en revue la décomposition des tickets">
      Devin lit le PRD complet via le Notion MCP, analyse votre base de code pour cartographier l’architecture concernée, puis crée des tickets Linear cadrés sur des périmètres de code indépendants. Il publie un récapitulatif comme celui-ci :

      | Ticket | Titre                                                        | Taille | Dépendances |
      | ------ | ------------------------------------------------------------ | ------ | ----------- |
      | UP-101 | Add avatar upload endpoint to `/api/users/avatar`            | S      | Aucune      |
      | UP-102 | Create profile settings page in `src/pages/settings/profile` | M      | Aucune      |
      | UP-103 | Migrate `users` table to support bio and social links        | M      | Aucune      |
      | UP-104 | Build profile preview card component                         | S      | UP-103      |
      | UP-105 | Add public/private visibility toggle to profile settings     | M      | UP-103      |
      | UP-106 | Index new profile fields in Elasticsearch for user search    | L      | UP-103      |

      Chaque ticket Linear inclut des critères d’acceptation, des chemins de fichiers et des notes d’implémentation issus du PRD et de la base de code réels — pas de descriptions génériques.
    </Step>

    <Step title="Affiner et lancer l’implémentation">
      Passez en revue les tickets dans Linear. Si certains sont trop larges, demandez à Devin de les découper. Lorsque vous êtes prêt, vous pouvez assigner Devin à chacun de ces tickets dans Linear pour commencer l’implémentation, ou ajouter le label `!implement` pour utiliser le playbook d’implémentation par défaut.

      <PromptBlock playbookId="b6ba73c577084d2392720a2abf51dc26">
        ```txt Implement a ticket theme={null}
        Implement UP-101: Add avatar upload endpoint to /api/users/avatar.
        Follow the acceptance criteria in the ticket. Open a PR when done.
        ```
      </PromptBlock>
    </Step>
  </Steps>
</div>
