> ## 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.

# Pianifica in blocco il backlog dei ticket

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="Pianifica in blocco il backlog di ticket" description="Seleziona più ticket in Linear e ottieni piani di implementazione con punteggio di affidabilità per l'intero backlog." prompt="Esamina tutti i ticket nel backlog dello sprint corrente. Per ciascuno, analizza la codebase, assegna un punteggio di affidabilità (verde/giallo/rosso) e pubblica un piano di implementazione come commento sul ticket. Non iniziare l'implementazione: limita il lavoro alla sola definizione dell'ambito." category="Gestione progetti" features="Integrazioni, Playbook" devinUrl="https://app.devin.ai/settings/connections/linear" />

<div className="uc-detail-wrapper">
  <Tip>Non vuoi configurarlo manualmente? Incolla un collegamento a questa pagina in una sessione di Devin e chiedigli di impostare tutto per te.</Tip>

  <Steps>
    <Step title="Collega Linear">
      Vai su [**Settings > Connections > Linear**](https://app.devin.ai/settings/connections/linear?utm_source=docs\&utm_medium=use-case-gallery) e fai clic su **Connect**. Autorizzerai Devin ad accedere al tuo workspace e sceglierai quali team può visualizzare. Puoi anche usare [Jira](/it/integrations/jira) al suo posto se è il sistema di ticketing del tuo team.

      Una volta che l’integrazione con [Linear](/it/integrations/linear) è attiva, controlla la sezione **Synced playbook labels** nelle impostazioni di Linear. Il [playbook](https://app.devin.ai/settings/playbooks/b0d9a34380374c3e903d900d340d8da7?utm_source=docs\&utm_medium=use-case-gallery) `!plan` è impostato come predefinito: indica a Devin di analizzare e commentare i ticket senza scrivere codice.

      <Note>Perché le etichette dei playbook vengano sincronizzate automaticamente con Linear, il tuo workspace Linear deve avere **Manage workspace labels** impostato su **All members** (si trova in **Settings > Security** di Linear). Se questa opzione non è abilitata, dovrai creare le etichette manualmente in Linear.</Note>
    </Step>

    <Step title="Seleziona i ticket e aggiungi l’etichetta Devin">
      Apri il backlog in [**Linear**](https://linear.app), premi **Cmd+A** per selezionare tutti i ticket (oppure Shift+Click per un intervallo specifico), quindi fai clic con il tasto destro e seleziona **Add label > Devin**. Per usare uno specifico playbook, scegli invece un'etichetta sincronizzata come `!plan` dal gruppo di etichette **Devin Playbooks**.

      Devin inizia a definire lo scope di ogni ticket selezionato in parallelo. Nel giro di pochi minuti, ogni ticket ottiene un commento dettagliato con un punteggio di confidenza e un piano di implementazione.
    </Step>

    <Step title="Leggi l'analisi di Devin per ogni ticket">
      Devin pubblica un commento strutturato direttamente su ogni ticket. Ogni commento include un **confidence score** (🟢 🟡 🔴), i **file e i moduli rilevanti** che ha trovato nel tuo codebase, un **piano di implementazione** passo per passo e tutte le **domande aperte** che richiedono una risposta umana prima che Devin possa procedere.

      | Ticket  | Titolo                          | Score | Cosa ha trovato Devin                                                                                           |
      | ------- | ------------------------------- | ----- | --------------------------------------------------------------------------------------------------------------- |
      | FE-412  | Dark mode toggle                | 🟢    | Il contesto del tema esiste in `src/contexts/ThemeContext.tsx`; pattern di toggle usato in altre 3 impostazioni |
      | FE-419  | Bug di timezone nel date picker | 🟢    | Bug isolato in `formatLocalDate()` in `src/utils/dates.ts`; test unitario mancante                              |
      | BE-203  | Migrare prefs a Postgres        | 🟡    | 14 punti di chiamata in 6 servizi — servono chiarimenti sulla strategia di rollback                             |
      | BE-210  | Rate limiting sui webhook       | 🟢    | Middleware di rate limiting già esistente in `src/middleware/rateLimiter.ts`; serve solo configurazione         |
      | INF-102 | k8s health check                | 🟢    | La readiness probe esiste già su `/healthz`; la liveness probe segue lo stesso pattern                          |

      **Cosa significano gli score:**

      * **🟢 Verde** — Devin può gestirlo in autonomia. Fai clic sul link nel commento di Devin per avviare subito una sessione.
      * **🟡 Giallo** — Devin ha domande specifiche. Rispondi nel thread del ticket o in [Spaces](/it/product-guides/knowledge) e Devin rivaluterà — spesso passando a verde.
      * **🔴 Rosso** — Meglio assegnarlo a un ingegnere umano, ma l’analisi del codebase di Devin ti dà un vantaggio iniziale per definire l’ambito.

      <Tip>Con l’integrazione Linear installata, Devin ha accesso nativo agli strumenti di Linear — quindi il tuo playbook può istruire Devin ad aggiornare le etichette dei ticket in base ai suoi risultati. Ad esempio, Devin potrebbe aggiungere un’etichetta `Green`, `Yellow` o `Red` a ciascun ticket in base al suo confidence score. Poiché le etichette possono attivare altre automazioni, puoi concatenare i flussi di lavoro — ad esempio, un’etichetta `Green` potrebbe avviare una seconda sessione di Devin che comincia l’implementazione.</Tip>
    </Step>

    <Step title="Configura i trigger di automazione per la pianificazione continua">
      Invece di etichettare manualmente i ticket ogni volta, configura un **trigger di automazione** così i nuovi ticket vengono pianificati non appena entrano nel tuo backlog.

      In [**Settings > Connections > Linear**](https://app.devin.ai/settings/connections/linear?utm_source=docs\&utm_medium=use-case-gallery), scorri fino a **Automation triggers** e fai clic su **Add trigger**:

      * **Teams**: Seleziona i team da pianificare automaticamente (ad esempio, "Engineering", "Platform")
      * **Statuses**: Si attiva quando un ticket passa a uno stato specifico come "Triage" o "Todo"
      * **Labels**: Limita facoltativamente l'ambito a etichette specifiche (ad esempio, solo ticket `Feature` o `Improvement`)
      * **Playbook**: Seleziona `!plan` in modo che Devin definisca l'ambito e aggiunga commenti senza scrivere codice

      <Tip>Puoi duplicare il [template playbook](https://app.devin.ai/settings/playbooks/b0d9a34380374c3e903d900d340d8da7?utm_source=docs\&utm_medium=use-case-gallery) `!plan` e personalizzarlo per la tua organizzazione — ad esempio, modificando il formato dell'output, aggiungendo istruzioni specifiche per i repo o cambiando quali dettagli Devin include nei suoi commenti.</Tip>

      I trigger utilizzano il [rilevamento delle transizioni](/it/integrations/linear): vengono attivati solo quando un ticket *passa* a uno stato corrispondente, non per i ticket già in quello stato. Ogni nuovo ticket che entra ora nella tua colonna "Todo" arriva pre-analizzato con un punteggio di confidenza e un piano di implementazione, pronto per essere esaminato e a cui il tuo team può assegnare la priorità.
    </Step>
  </Steps>
</div>
