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

# Feature-Prompt von 42 auf 12 ACUs reduzieren

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="Einen Feature-Prompt von 42 auf 12 ACUs reduzieren" description="Gehe eine reale Session Schritt für Schritt durch, die für eine Paginierungsaufgabe das Dreifache der erwarteten ACUs verbraucht hat, identifiziere drei Hauptursachen und formuliere den Prompt neu, um 70 % einzusparen." prompt="Diese Session hat 42 ACUs verbraucht, um Pagination für GET /api/users hinzuzufügen, aber ich hatte mit etwa 12 gerechnet. Analysiere, wofür Devin die meiste Zeit aufgewendet hat, welche Sackgassen oder falschen Ansätze es ausprobiert hat und welcher Kontext in meinem Prompt gefehlt hat. Gib mir einen überarbeiteten, strukturierten Prompt, der diese Probleme vermeidet." category="Devin-Optimierung" features="Erweitert" agent="advanced" intent="analyze" />

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

  <Steps>
    <Step title="Sitzung, die die Untersuchung ausgelöst hat">
      Ein*e Entwickler*in hat Devin gebeten, einem API-Endpunkt Paginierung hinzuzufügen. Der Prompt war kurz und klang vernünftig:

      <PromptBlock>
        ```txt Original prompt (vague) theme={null}
        Add pagination to GET /api/users. Run the tests when done.
        ```
      </PromptBlock>

      Die Sitzung wurde erfolgreich abgeschlossen – die Tests wurden bestanden, der PR sah gut aus. Aber sie verbrauchte **42 ACUs** für eine Aufgabe, die **\~12 ACUs** hätte kosten sollen. Dreieinhalbmal so hohe Kosten wie erwartet, und das für ein Feature, das an anderer Stelle in der Codebasis bereits ein funktionierendes Muster hatte.

      So finden Sie heraus, was schiefgelaufen ist, und stellen sicher, dass es nicht wieder passiert.
    </Step>

    <Step title="Mit Session Insights starten">
      Jede abgeschlossene Session kann eine kostenlose [Session Insights](/de/product-guides/session-insights)-Analyse haben. Klicke auf das **Glühbirnensymbol** in der oberen Leiste einer beliebigen abgeschlossenen Session und dann auf **Generate Analysis**, um sie auszulösen – keine Advanced-Session erforderlich.

      Für diese Paginations-Session hat Session Insights Folgendes hervorgehoben:

      * **Issue Timeline** — Rote Markierungen bei Minute 14 und Minute 28, an denen Devin den Ansatz komplett geändert hat.
      * **Issues Detected** — „Falsche Annahme über Codebasis: Paginierung von Grund auf neu implementiert, obwohl `src/utils/paginate.ts` bereits existierte“ und „Falsche Implementierungsart: cursor-basierte Paginierung verwendet, aber Tests erwarten offset-basierte.“
      * **Improved Prompt** — Eine neu formulierte Version mit dem zuvor fehlenden Kontext, bereit zum Kopieren.
      * **ACU Usage** — 42 ACUs, als unverhältnismäßig für den Umfang der Aufgabe markiert.

      Für viele Sessions ist das ausreichend. Kopiere den verbesserten Prompt, starte eine neue Session und vergleiche. Wenn du jedoch die vollständige, phasenbezogene Kostenaufschlüsselung möchtest, kannst du tiefer einsteigen.
    </Step>

    <Step title="Erhalten Sie eine Aufschlüsselung nach Phasen">
      Klicken Sie im Panel **Session Insights** auf **Investigate with Devin**, um eine Devin-Sitzung zu starten, die mit der vollständigen Historie der ursprünglichen Sitzung vorgeladen ist. Oder starten Sie manuell eine neue Sitzung und beschreiben Sie, was analysiert werden soll:

      <PromptBlock agent="advanced" intent="analyze">
        ```txt Analysiere die Pagination-Sitzung theme={null}
        Diese Sitzung hat 42 ACUs verbraucht, um Pagination zu GET /api/users hinzuzufügen.
        Ich hatte etwa 12 erwartet. Bitte analysiere:
        1. Wo hat Devin ungewöhnlich viel Zeit verbracht?
        2. Welche Sackgassen oder falschen Ansätze hat es verfolgt?
        3. Was hätte es effizienter machen können?
        4. Welcher Kontext hat in meinem Prompt gefehlt?
        5. Gib mir einen überarbeiteten, strukturierten Prompt, der diese Probleme vermeidet.
        ```
      </PromptBlock>

      Devin überprüft jede Aktion aus der ursprünglichen Sitzung und identifiziert, wo Zeit ineffizient aufgewendet wurde:

      ```
      Sitzungsanalyse | Aufgabe: Paginierung zu GET /api/users hinzufügen
      Tatsächlich: 42 ACUs | Erwartet: ~12 ACUs

      Identifizierte Ineffizienzen:

      1. Unnötige Erkundung — Untersuchungsphase dauerte ungewöhnlich lange
         Devin durchsuchte 23 Dateien auf der Suche nach einem Paginierungs-Helper.
         Die Paginierung wurde von Grund auf neu erstellt, dann wurde
         src/utils/paginate.ts entdeckt und alles musste refaktoriert werden.
         Lösung: Vorhandene Hilfsfunktionen im Prompt erwähnen.

      2. Falscher Ansatz — gesamte Implementierung musste neu geschrieben werden
         Devin implementierte cursor-basierte Paginierung. Tests schlugen fehl,
         da die API offset-basierte Paginierung verwendet. Die gesamte
         Implementierung wurde von Grund auf neu geschrieben.
         Lösung: „offset-basiert" im Prompt angeben.

      3. Umgebungsproblem — wiederholt fehlgeschlagene Installationen
         npm install schlug zweimal fehl aufgrund einer fehlenden .npmrc-Konfiguration
         für die private Registry. Devin versuchte es erneut mit Workarounds.
         Lösung: Registry-Konfiguration zum Repository-Setup hinzufügen.
      ```

      Drei Hauptursachen, die sich alle mit einem besseren Prompt oder einer besseren Repo-Konfiguration vermeiden lassen.
    </Step>

    <Step title="Formuliere den Prompt neu und vergleiche">
      Sie können Devin bitten, direkt mit dem verbesserten Prompt eine neue Sitzung zu starten – ganz ohne Copy-&-Paste. Die Analyse erzeugt einen strukturierten Prompt, der genau den zuvor fehlenden Kontext enthält:

      <PromptBlock>
        ```txt Optimierter Prompt (strukturiert) theme={null}
        Füge eine offset-basierte Paginierung zu GET /api/users hinzu.

        ## Kontext
        - Verwende unsere bestehende Paginierungs-Hilfsfunktion unter src/utils/paginate.ts
        - Folge demselben Muster wie bei GET /api/projects (bereits paginiert)
        - Query-Parameter: page (Standard 1), limit (Standard 20, max. 100)
        - Antwortstruktur: { data: User[], meta: { page, limit, total, totalPages } }

        ## Implementierung
        1. Füge die Query-Parameter page und limit mit Zod-Validierung hinzu
        2. Verwende paginate() aus src/utils/paginate.ts, um die Prisma-Query zu kapseln
        3. Gib die paginierte Antwort in der obigen Struktur zurück

        ## Tests
        - Führe die bestehenden Tests mit npm test aus
        - Überprüfe, dass die Paginierung mit 0 Ergebnissen, 1 Seite und mehreren Seiten funktioniert
        - Überprüfe, dass ungültige page/limit-Parameter 400 zurückgeben

        Öffne keinen PR, bevor alle Tests bestanden sind.
        ```
      </PromptBlock>

      Vergleiche die beiden Prompts nebeneinander:

      |                       | Original        | Optimiert               |
      | --------------------- | --------------- | ----------------------- |
      | **Pagination type**   | Nicht angegeben | "offset-basiert"        |
      | **Existing utility**  | Nicht erwähnt   | `src/utils/paginate.ts` |
      | **Reference pattern** | Keines          | "wie GET /api/projects" |
      | **Response shape**    | Nicht angegeben | Explizites Schema       |
      | **Testing criteria**  | "Run the tests" | Konkrete Randfälle      |
      | **ACU result**        | 42 ACUs         | \~12 ACUs               |

      Der optimierte Prompt beseitigt alle drei Hauptursachen. Devin überspringt die Erkundung von 23 Dateien, wählt die richtige Paginierungsart gleich beim ersten Versuch und folgt einem bewährten Muster.
    </Step>

    <Step title="Machen Sie aus den Befunden dauerhafte Behebungen">
      Das einmalige Umschreiben eines Prompts spart ACUs in einer Sitzung. Wenn Sie die Erkenntnisse in eine dauerhafte Konfiguration überführen, sparen Sie ACUs in jeder zukünftigen Sitzung.

      **Fügen Sie wiederkehrenden Kontext zu [Knowledge](/de/product-guides/knowledge) hinzu.** Die Paginierungsanalyse hat zwei Fakten offengelegt, die Devin wiederholt benötigt – den Paginierungstyp und den Speicherort der Utility. Fügen Sie sie als Knowledge-Einträge hinzu, damit jede Sitzung automatisch mit diesem Kontext startet:

      * *"Alle API-Endpunkte verwenden offset-basierte Paginierung. Die gemeinsame Utility befindet sich unter `src/utils/paginate.ts`. Siehe GET /api/projects für die Referenzimplementierung."*
      * *"Führen Sie Tests mit `npm test` aus. Führen Sie Typprüfungen mit `npm run typecheck` aus."*

      **Beheben Sie Workspace-Probleme in der [Umgebungskonfiguration](/de/onboard-devin/environment).** Die 3 ACUs, die durch `npm install`-Fehler verschwendet wurden, wurden durch eine fehlende `.npmrc`-Konfiguration für die private Registry verursacht. Das Hinzufügen der Registry-Konfiguration zu Ihrer Umgebung verhindert, dass zukünftige Sitzungen auf diesen Fehler stoßen.

      **Führen Sie Batch-Analysen durch, um teamweite Muster zu finden.** Wenn mehrere Entwickler Sitzungen mit hohem ACU-Verbrauch haben, analysieren Sie mehrere auf einmal, um gemeinsame Ursachen zu finden:

      <PromptBlock agent="advanced" intent="analyze">
        ```txt Batch-analyze recent sessions theme={null}
        Hier sind 5 Sitzungen aus dieser Woche: [paste session links]

        Finden Sie gemeinsame Muster von ACU-Verschwendung über alle
        diese Sitzungen hinweg. Welche Knowledge-Einträge sollte ich
        hinzufügen, um diese Probleme in jeder zukünftigen Sitzung
        zu verhindern?
        ```
      </PromptBlock>
    </Step>
  </Steps>
</div>
