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

# Bugs automatisch triagieren mit Linear

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="Bugs in Linear automatisch triagieren" description="Devin untersucht Bugs automatisch, sobald in Linear ein Label hinzugefügt wird." prompt="Lies den Bug-Report in diesem Linear-Ticket. Durchsuche die Codebasis nach den relevanten Codepfaden und identifiziere die Root Cause." category="Projektmanagement" features="Integrationen, Playbooks" devinUrl="https://app.devin.ai/settings/connections/linear" />

<div className="uc-detail-wrapper">
  <Tip>Möchtest du das nicht manuell einrichten? Füge einen Link zu dieser Seite in eine Devin-Sitzung ein und bitte Devin, alles für dich einzurichten.</Tip>

  <Steps>
    <Step title="Triage-Playbook erstellen">
      Die Automatisierung benötigt ein Playbook, das Devin *vorgibt*, wie euer Team Bugs triagiert – nicht einfach "den Bug beheben", sondern die konkreten Schritte, denen ein*e Entwickler*in folgen würde.

      Beginne damit, das `!triage`-[Vorlagen-Playbook](https://app.devin.ai/settings/playbooks/14fed18b89d44713a26e673cf258f548?utm_source=docs\&utm_medium=use-case-gallery) zu duplizieren und für euren Stack anzupassen. Oder gehe zu [**Settings > Playbooks**](https://app.devin.ai/settings/playbooks?utm_source=docs\&utm_medium=use-case-gallery) und erstelle ein neues Playbook mit dem Makro `!triage-bug`. Hier ist ein Beispiel:

      <PromptBlock type="playbook">
        ```txt Beispiel für ein Triage-Playbook theme={null}
        Lies den Bug-Report in diesem Linear-Ticket. Dann:

        1. Durchsuche die Codebasis nach den relevanten Codepfaden, die im Report erwähnt werden
        2. Prüfe den Git-Log auf kürzliche Änderungen an diesen Dateien
        3. Identifiziere die Ursache und fasse deine Erkenntnisse zusammen: Ursache,
           betroffene Dateien, kürzliche Änderungen, die sie verursacht haben könnten,
           und einen vorgeschlagenen Ansatz zur Behebung
        ```
      </PromptBlock>

      Je spezifischer dein Playbook ist, desto besser ist Devins Triage. Orientiere dich an den tatsächlichen Mustern deines Teams – Konventionen für Error-Logging, Test-Frameworks, Regeln für Branch-Namen. Sieh dir die [Playbook-Dokumentation](/de/product-guides/creating-playbooks) an, um mehr über effektive Playbooks zu erfahren, oder bitte Devin, ein Playbook für dich zu erstellen.

      <Tip>Verbinde das [Datadog MCP](/de/work-with-devin/mcp#datadog) (oder andere Logging-/Monitoring-Services) und gewähre Devin schreibgeschützten Datenbankzugriff, damit es im Rahmen seiner Analyse Logs, Metriken und Datenabfragen prüfen kann.</Tip>
    </Step>

    <Step title="Verknüpfen Sie den Automation-Trigger">
      Verbinde das Playbook jetzt mit Linear, damit es automatisch ausgelöst wird, wenn einem Bug ein Label zugewiesen wird.

      1. Wechsle zu [**Settings > Connections > Linear**](https://app.devin.ai/settings/connections/linear?utm_source=docs\&utm_medium=use-case-gallery) (verbinde zunächst die Integration, falls du das noch nicht getan hast — [Setup-Anleitung](/de/integrations/linear))
      2. Klicke unter **Synced playbook labels** auf **Add playbook** und wähle `!triage-bug` — dadurch wird ein entsprechendes Label in der **„Devin Playbooks“**-Labelgruppe von Linear erstellt.
      3. Scrolle zu **Automation triggers** und klicke auf **Add trigger**:
         * **Teams**: Wähle das Team, in dem Bugs erfasst werden (z. B. „Engineering“)
         * **Labels**: Wähle `Bug` (oder das Label, das euer Team für Bugmeldungen verwendet)
         * **Playbook**: Wähle `!triage-bug`
      4. Speichere den Trigger

      Trigger verwenden **Edge Detection** – sie werden nur ausgelöst, wenn ein Ticket *in einen passenden Zustand übergeht* (z. B. wenn jemand das `Bug`-Label hinzufügt), nicht für Tickets, die das Label bereits haben. Dadurch löst du Devin nicht versehentlich für deinen gesamten bestehenden Backlog aus.

      <Note>Damit Playbook-Labels automatisch mit Linear synchronisiert werden, muss in deinem Linear-Workspace die Einstellung **Manage workspace labels** auf **All members** gesetzt sein (zu finden unter Linears **Settings > Security**). Wenn das nicht aktiviert ist, musst du die Labels manuell in Linear erstellen.</Note>
    </Step>

    <Step title="Kennzeichne einen Bug und beobachte, wie Devin ihn untersucht">
      Wenn ein Engineer das `Bug`-Label zu einem Linear-Ticket hinzufügt, etwa so:

      > **ENG-487**: Nutzende sehen einen 500-Fehler, wenn sie das Kontaktformular auf /contact absenden. Tritt seit dem Deployment letzten Freitag auf. Der Stack-Trace verweist auf `validateEmail()` in `src/lib/forms.ts`.

      Devin startet automatisch eine Session und folgt eurem Triage-Playbook:

      * **Liest das Ticket** — ruft Titel, Beschreibung und alle Kommentare aus Linear ab
      * **Durchsucht die Codebasis** — findet `src/lib/forms.ts`, den Route-Handler in `src/routes/contact.ts` und die Form-Validierungstests
      * **Prüft jüngste Änderungen** — führt `git log --since="last Friday" -- src/lib/forms.ts` aus und entdeckt einen Commit, der den E-Mail-Regex refactored hat

      Die Ergebnisse von Devin werden automatisch über die Integration mit dem Linear-Ticket synchronisiert. All das passiert, ohne dass jemand das Ticket explizit Devin zuweist — allein das Label löst den gesamten Workflow aus.

      <Tip>Mit der Linear-Integration hat Devin nativen Zugriff auf die Tools von Linear — euer Playbook kann Devin also anweisen, Ticket-Labels basierend auf seinen Ergebnissen zu aktualisieren. Euer Triage-Playbook könnte Devin zum Beispiel anweisen, je nach Ergebnis ein `Clear Fix`-, `Needs Review`- oder `Lacking Context`-Label hinzuzufügen. Da Labels andere Automatisierungen auslösen können, könnt ihr Workflows verketten — z. B. könnte ein `Clear Fix`-Label eine zweite Devin-Session starten, die den Fix implementiert.</Tip>
    </Step>

    <Step title="Die Feedbackschleife optimieren">
      Nach einigen Triagen solltest du das System basierend darauf verfeinern, was Devin richtig macht und wo es mehr Anleitung braucht.

      **Verbessere das Playbook auf Basis realer Sessions.** Wenn Devin regelmäßig etwas übersieht (z. B. keine Logs prüft oder einen verwandten Service nicht beachtet), füge diesen Schritt zu deinem `!triage-bug`-Playbook hinzu. Du kannst Devin bitten, vergangene Sessions zu analysieren und dein Playbook automatisch zu verbessern oder [Knowledge](/de/product-guides/knowledge)-Einträge für Muster zu erstellen, denen Devin in allen Sessions folgen soll – wie "prüfe immer zuerst das Error-Tracking-Dashboard" oder "unsere Auth-Service-Logs sind in CloudWatch, nicht in Datadog."

      **Füge ein Fix-Playbook hinzu, wenn du bereit bist.** Sobald du Devins Triage vertraust, erstelle ein zweites Playbook wie `!fix-bug`, das einen Schritt weiter geht – es schreibt einen Fix, fügt einen Regressionstest hinzu und eröffnet einen PR. Ordne es einem separaten Label zu, damit dein Team zwischen "sag mir nur, was falsch ist" und "beheb es für mich" wählen kann:

      <PromptBlock type="playbook">
        ```txt Fix playbook example theme={null}
        Lies den Bugreport in diesem Linear-Ticket. Dann:

        1. Durchsuche den Codebestand nach den relevanten Codepfaden, die im Report erwähnt werden
        2. Prüfe den Git-Log auf kürzliche Änderungen an diesen Dateien
        3. Identifiziere die Ursache des Problems
        4. Schreibe einen Fix, der die Ursache des Problems behebt
        5. Füge einen Regressionstest hinzu, der diesen Bug entdeckt hätte
        6. Führe die bestehende Testsuite aus, um sicherzustellen, dass nichts anderes kaputtgeht
        7. Öffne einen PR, der mit dem Linear-Ticket verknüpft ist – füge "Fixes ENG-XXX" in
           die PR-Beschreibung ein
        ```
      </PromptBlock>
    </Step>
  </Steps>
</div>
