CommunityCodierung & Entwicklunggithub.com

opendraft – 18-stufige KI-Pipeline zur Erstellung wissenschaftl…

Eine 18-stufige KI-Pipeline, die aus einem einzelnen Themenvorschlag eine vollständige wissenschaftliche Arbeit mit echter Literaturbasis erstellt.

Was ist opendraft – 18-stufige KI-Pipeline zur Erstellung wissenschaftl…?

OpenDraft ist eine vollständig lokal ausgeführte Pipeline bestehend aus 18 KI-gesteuerten Agenten-Schritten und fünf Python-Skripten, die aus einem einzigen Thema eine druckreife wissenschaftliche Arbeit erstellt. Es verwendet keine API-Keys oder externen Dienste – die einzigen Netzwerkaufrufe gehen an die offenen Endpunkte von Crossref, OpenAlex und DataCite. Der Benutzer fungiert selbst als Sprachmodell, indem er die Agenten-Prompts ausführt. Die Pipeline deckt den gesamten Schreibprozess ab: von der Literatursuche und Zusammenfassung über die Gliederung und das Verfassen von Abschnitten bis hin zur Peer-Review-Simulation, Stilangleichung und finalen Formatierung. Besonders hervorzuheben ist die strikte Trennung zwischen KI-Urteilsvermögen (was die Agenten tun) und automatisierten Buchhaltungsaufgaben (was die Skripte tun), wodurch eine hohe Zuverlässigkeit und Integrität der Ausgabe gewährleistet wird. Die Pipeline unterstützt verschiedene Papierformen, Zitationsstile und Wortbegrenzungen und ist über die bereitgestellten Referenzdateien vollständig konfigurierbar.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/getedgehq/skills/tree/main/opendraft

Installed? Explore more Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

opendraft

Wandelt einen Themenvorschlag in eine fertige wissenschaftliche Arbeit mit echter Literaturbasis um.

Portiert von OpenDraft (github.com/federicodeponte/opendraft, MIT), das ursprünglich als gehosteter Dienst lief. Hier bist du die Engine: achtzehn Stufen, jede ein Prompt in agents/, plus fünf Skripte, die die Teile erledigen, die ein Sprachmodell nicht von Hand machen darf.

Du bist das Modell. Kein API-Key, kein Dienst, kein Konto. Die einzigen Netzwerkaufrufe gehen an Crossref, OpenAlex und DataCite – alles offene Endpunkte.

Der eine Befehl

Schreibe eine Arbeit über <Thema>

Alles Weitere ergibt sich daraus. Bitte den Benutzer nicht, die Stufen selbst auszuführen; führe sie aus.

Frage zuerst vier Dinge ab

Vor Stufe 5, falls der Benutzer es nicht bereits gesagt hat, frage nach:

  1. Zielpublikation, oder „keine, allgemein wissenschaftlich“.
  2. Gesamtwortzahlbegrenzung.
  3. Zitierstil, einer der sechs in references/citation-styles.md.
  4. Dokumententyp, einer der Typen in references/paper-types.md.

Dies sind vier Fragen in einer Nachricht, kein Interview, und sie sind die einzigen Fragen, die die Pipeline stellt. Alles andere entscheidet sie selbst.

Frage, weil die Kosten des Ratens am Ende anfallen und dort nicht mehr beglichen werden können. Eine Publikation mit einer strikten Obergrenze von 150 Wörtern für die Zusammenfassung wird in Stufe 6 oder gar nicht durchgesetzt: Wenn Stufe 17 die Zusammenfassung schreibt, ist das Wortbudget, gegen das jeder Abschnitt entworfen wurde, bereits falsch. Ein an der Pforte gewählter Zitierstil (statt in Stufe 6) bedeutet, dass der gesamte Entwurf gegen die falsche Markierungsdichte geschrieben wurde.

Wenn der Benutzer die Antwort verweigert oder sagt „such du aus“, fahre mit den Standardeinstellungen in references/paper-types.md fort, schreibe sie in den Formatblock der Publikation in Stufe 6 und teile in einem Satz mit, welche Standardeinstellungen du verwendet hast. Gehe niemals von einer unausgesprochenen Annahme aus, die du dem Benutzer nicht gezeigt hast.

Vier Dinge, die die Skripte besitzen – und du nicht

Ein Sprachmodell ist gut im Urteilen und schlecht in der Buchhaltung. Diese Trennung ist beabsichtigt, und sie zu überschreiten ist der Grund, warum die Ausgabe fehlschlägt. Jedes dieser Dinge wird von einem Skript durchgesetzt, das mit einem Fehlercode ungleich Null beendet wird – sie sind also an der Pforte keine Frage der Meinung.

Schreibe niemals einen gerenderten Zitierverweis von Hand. Nicht [3], nicht (Smith, 2020). Während des Schreibens schreibst du {cite_<doi>} inline an der genauen Stelle der Behauptung. scripts/citations.py compile wandelt diese in Markierungen um und erstellt das Literaturverzeichnis per Wörterbuchsuche. Es ist deterministisch, sodass die Zuordnung zwischen Fließtext und Literaturverzeichnis mechanisch und nicht auswendig gelernt ist.

Erfinde niemals eine Quelle für eine Behauptung, die du nicht belegen kannst. Wenn eine Behauptung real ist und du keine Quelle dafür findest, schreibe {cite_MISSING: kurze Beschreibung der Behauptung} und fahre fort. compile weigert sich, sie zu rendern, benennt sie und wird mit einem Fehlercode beendet, und integrity.py zählt sie als kritisch, sodass sie nicht in einer fertigen Arbeit überleben kann. Das ist der Sinn: Es ist kein Weg, eine unbelegte Behauptung zu versenden, sondern ein Weg, beim Schreiben ehrlich zu sein, anstatt die Behauptung stillschweigend zu löschen oder an eine erfundene DOI anzuhängen. Räume jede Behauptung vor der Pforte aus, indem du mit sources.py find eine echte Quelle findest oder die Behauptung absichtlich streichst.

Füge die Abschnitte niemals von Hand in den Entwurf ein. scripts/assemble.py erledigt das in numerischer Reihenfolge und weigert sich, etwas in die Arbeit einzufügen, das kein nummerierter Abschnitt ist. Eine manuelle Zusammenführung, die einen Abschnitt auslässt, ist der Fehler, den niemand bemerkt, bis ein Leser es tut.

Entscheide niemals nach Augenmaß, ob die Arbeit in sich schlüssig ist. scripts/integrity.py prüft dies und wird mit einem Fehlercode beendet. Führe es aus und lies den Exit-Code.

Einrichtung

mkdir -p research sections review

Kein API-Key, kein Konto, kein Installationsschritt: Die Skripte verwenden nur die Python-Standardbibliothek. Es gibt eine optionale Umgebungsvariable, und sie ist die einzige, die hier irgendetwas liest. Setze OPENDRAFT_CONTACT_EMAIL auf deine eigene Adresse und sources.py hängt sie an seinen User-Agent an, wodurch Crossref-Anfragen in den höflichen Pool mit besseren Ratenlimits verschoben werden. Ist sie nicht gesetzt, läuft trotzdem jede Stufe; es ist keine Adresse fest codiert, da eine ausgelieferte Standardeinstellung alle Installationen in eine Identität zusammenfassen und ihre Ratenlimit-Probleme an das Postfach eines Fremden weiterleiten würde.

Die Pipeline schreibt in feste Pfade, und jede Stufe liest, was frühere Stufen geschrieben haben. Die Pfade sind der Vertrag zwischen den Stufen:

research/sources.md        research/sources.json     research/summaries.md
research/gaps.md           research/citations.json   research/citation-notes.md
outline.md                 outline_formatted.md
sections/*.md              full_draft.md             final.md
review/thread.md           review/narrator.md        review/skeptic.md
review/verifier.md         review/referee.md         review/voice.md
review/entropy.md          review/polish.md

Vier Regeln zu diesen Pfaden, und jede von ihnen wurde schon gebrochen:

  • sections/ enthält nur Papierabschnitte und sonst nichts. Jede Datei darin wird von scripts/assemble.py in die fertige Arbeit eingefügt. Ein dort abgelegter Stufenbericht landet in der Thesis eines anderen. Berichte gehören in review/.
  • research/sources.json ist Maschineneingabe, research/sources.md ist für Menschen zum Lesen. Stufe 1 schreibt beide. citations.py build liest die JSON-Datei.
  • Nichts Handgeschriebenes kommt jemals in research/citations.json. Sie wird von citations.py build erstellt und nur durch erneutes Ausführen von build geändert. Die Ermessensentscheidungen, die kein Skript treffen kann (Quellen ohne DOI, überprüfungsbedürftige Einträge, Erwähnungen, die nicht in einen Platzhalter umgewandelt werden konnten), kommen in research/citation-notes.md, das Fließtext ist und niemals von einem Skript gelesen wird. Eine von Hand bearbeitete Datenbank ist der Weg, wie ein verified-Flag umgedreht wird, um die Pforte zu passieren, und wie eine unaufgelöste DOI im Literaturverzeichnis landet und überprüft aussieht.
  • Nach Stufe 9.5 ist full_draft.md der einzige Entwurf. Nichts stromabwärts liest sections/*.md erneut, sodass das Bearbeiten einer Abschnittsdatei nach der Zusammenführung nichts ändert und die Änderung stillschweigend verloren geht.

Die Pipeline

Führe sie in der richtigen Reihenfolge aus. Jede Stufe bis auf eine ist eine Datei in agents/: Lese diese Datei, befolge ihre Anweisungen, schreibe die benannte Ausgabe und fahre fort. Die Ausnahme ist Stufe 9.5, die ein Skript ist, das du ausführst. Überspringe keine Stufe, nur weil das Thema einfach aussieht.

#StufeAgentendatei oder SkriptSchreibt
1Quellen findenagents/01-scout.mdresearch/sources.md, research/sources.json
2Lesen und zusammenfassenagents/02-scribe.mdresearch/summaries.md
3Die Lücke finden, die es wert ist, gefüllt zu werdenagents/03-signal.mdresearch/gaps.md
4Zitationsdatenbank aufbauenagents/04-citation-manager.mdresearch/citations.json, research/citation-notes.md
5Argument gliedernagents/05-architect.mdoutline.md
6Publikationsformat und Wortbudgets anwendenagents/06-formatter.mdoutline_formatted.md
7Jeden Abschnitt schreibenagents/07-crafter.mdsections/*.md, hängt an research/gaps.md an
8Abschnittsübergreifende Konsistenz prüfenagents/08-thread.mdKorrekturen in sections/*.md, review/thread.md
9Stimme vereinheitlichenagents/09-narrator.mdKorrekturen in sections/*.md, review/narrator.md
9.5Abschnitte zu einem Entwurf zusammenfügenscripts/assemble.pyfull_draft.md
10Argument angreifenagents/10-skeptic.mdreview/skeptic.md, dann Korrekturen
11Behauptungen gegen Quellen prüfenagents/11-verifier.mdreview/verifier.md, dann Korrekturen
12Peer Review simulierenagents/12-referee.mdreview/referee.md, dann Korrekturen
13Stimme des Autors anpassen (optional)agents/13-voice.mdKorrekturen in full_draft.md, review/voice.md
14Prosarhythmus variierenagents/14-entropy.mdKorrekturen in full_draft.md, review/entropy.md
15Grammatik und finale Polituragents/15-polish.mdfull_draft.md, review/polish.md
16Anhänge hinzufügen (optional)agents/16-enhancer.mdfull_draft.md
17Zusammenfassung schreibenagents/17-abstract.mdVorangestellt an full_draft.md
18Titel schreibenagents/18-titlemaker.mdVorangestellt an full_draft.md

Stufe 7 wird einmal pro Abschnitt ausgeführt, nicht einmal pro Arbeit. Stufen 10 bis 12 erstellen Problemlisten; eine Problemliste, die niemand anwendet, ist eine Nulloperation, also wende die Korrekturen an und führe die Stufe erneut aus, bis kein kritisches Problem mehr übrig ist.

Stufe 12 hat eine Zahl, kein Gefühl. Stoppe, wenn eine neue Ausführung null kritische Probleme und eine Gesamtbewertung von mindestens 3,0 von 5 meldet, wobei keine einzelne Dimension unter 3 liegt, es sei denn, du dokumentierst den Grund in review/referee.md. „Gut genug zum Abschicken“ ist keine Abbruchbedingung, da ein Modell, das aufgefordert wird, seinen eigenen Entwurf zu beurteilen, ihn beim dritten Durchgang immer für gut genug befinden wird.

Stufe 13 ist die einzige Stufe mit einer Eingabe, die die Pipeline nie selbst produziert. Sie gleicht den Entwurf an die eigene Prosa des Autors an und liest diese Prosa aus einem samples/-Verzeichnis im Arbeitsverzeichnis: zwei oder drei frühere Arbeiten, Kapitel oder längere Beiträge als .md oder .txt. Nichts erstellt dieses Verzeichnis und nichts fragt dich danach, daher überspringt ein Durchlauf, der nie eines erstellt, Stufe 13 sauber, was der normale Ausgang und kein Fehler ist. Lege vor dem Durchlauf deine eigenen Schriften dort ab, wenn die Arbeit so klingen soll, als hättest du sie geschrieben.

Stufe 9.5 ist als halber Schritt nummeriert, weil es ein Skript und kein Agenten-Prompt ist, und weil die achtzehn Agentenstufen die Nummern behalten, die sie bereits hatten. Sie ist nicht optional. Stufen 1 bis 9 arbeiten auf sections/*.md; Stufen 10 bis 18 arbeiten auf full_draft.md; nichts erzeugt diese Datei außer diesem Befehl:

python3 scripts/assemble.py sections -o full_draft.md

Er führt die Abschnittsdateien in numerischer Reihenfolge zusammen, weigert sich, eine Datei einzufügen, die kein nummerierter Abschnitt ist, und bricht bei einer Nummerierungslücke, einer doppelten Nummer oder einem leeren Verzeichnis mit einem Fehlercode ab. --check zeigt an, was er tun würde, ohne etwas zu schreiben.

Er überspringt auch jede nummerierte Datei, deren Name report, review, notes, checklist oder log enthält – das ist der Mechanismus, der verhindert, dass ein alter Stufenbericht in einer Thesis landet. Das ist eine Dateinamen-Heuristik, daher hat sie eine scharfe Kante: Ein echter Abschnitt namens „Review of the literature“ würde übersprungen werden, und du würdest ihn nur als „Übersprungen“-Zeile auf stdout sehen, nicht als Fehler. Nenne diesen Abschnitt stattdessen related-work oder literature. Lies die Übersprungszeilen; ein Abschnitt, der hier verschwindet, verschwindet stillschweigend.

Ein erneutes Ausführen, nachdem full_draft.md bereits existiert, benötigt --force, und --force verwirft alle Bearbeitungen, die Stufen 10 und später am Entwurf vorgenommen haben. Führe die Zusammenführung also nur dann erneut durch, wenn du neu von den Abschnitten beginnen möchtest.

Skalierung

Passe die Pipeline an das an, was gefragt wurde. Die Stufen sind dieselben; die Tiefe nicht.

  • Ein kurzes Stück, 1.500 bis 3.000 Wörter. Stufen 1 bis 7, dann 9.5, 10, 11, 15. Zehn bis fünfzehn Quellen.
  • Ein vollständiges Papier, die Voreinstellung. Alle achtzehn plus 9.5. Fünfundzwanzig bis fünfzig Quellen, oder fünfzig und mehr, wenn das Papier eine Literaturübersicht ist, deren eigene Untergrenze gilt, wo immer sie höher ist (references/paper-types.md).
  • Ein Thesis-Kapitel oder eine lange Übersicht. Alle achtzehn plus 9.5, Quellen in den Fünfzigern oder mehr, und Stufe 7 einmal pro Unterabschnitt statt pro Abschnitt.

Stufe 9.5 ist in jeder dieser Listen enthalten. Es gibt keine Größenordnung, bei der sich ein Papier von selbst zusammenfügt.

Die zwei Referenzdateien

  • references/paper-types.md enthält das Abschnittsskelett, das Wortbudget und die Quellenanzahl für jeden Dokumententyp. Lese es in Stufe 5.
  • references/citation-styles.md zeigt die tatsächliche kompilierte Ausgabe aller sechs Stile, Inline-Markierung und Referenzeintrag, sodass du einen für die Publikation auswählen und wissen kannst, wie er aussehen wird. Lese es in Stufe 6 und noch einmal vor der Pforte, wenn eine Zitierung in einer unerwarteten Weise gerendert wird. Es gibt auch an, was der Compiler nicht unterstützt: keine Band-, Heft- oder Seitenzahlen, keine Zeitschriftenabkürzung. Wenn ein Betreuer diese verlangt, ist dies der Ort, der es ehrlich sagt, und nicht der Ort, an dem du es hinterher herausfindest.

Keine der Dateien ist eine optionale Lektüre, die als Referenz getarnt ist. Ein Stil, der ohne Lesen der zweiten Datei ausgewählt wird, ist ein aus dem Gedächtnis gewählter Stil, und der Compiler implementiert nicht deine Erinnerung an APA.

Die Skripte

python3 scripts/sources.py find "<Abfrage>" --n 15        # Crossref plus OpenAlex
python3 scripts/sources.py find "<Abfrage>" --json        # maschinenlesbar
python3 scripts/sources.py verify <doi> <doi> ...       # Crossref plus DataCite

python3 scripts/citations.py build research/sources.json -o research/citations.json
python3 scripts/citations.py verify -d research/citations.json
python3 scripts/citations.py compile full_draft.md -d research/citations.json --style apa -o final.md
python3 scripts/citations.py bibtex -d research/citations.json -o refs.bib

python3 scripts/assemble.py sections -o full_draft.md
python3 scripts/assemble.py sections -o full_draft.md --check

python3 scripts/integrity.py final.md -d research/citations.json --target 8000
python3 scripts/integrity.py final.md -c research/summaries.md   # beratende Wortanzahlprüfung
python3 scripts/export.py final.md --format docx -o final.docx

Jedes von ihnen wird bei einem Fehler mit einem Exit-Code ungleich Null beendet. Dieser Exit-Code ist das Signal; lies ihn, anstatt die Ausgabe zu überfliegen.

sources.py find wird mit 1 beendet, wenn überhaupt keine API erreicht werden konnte – das ist etwas anderes, als sie zu erreichen und keine Treffer zu erhalten. agents/01-scout.md ist die Autorität dafür, wie dieser Exit-Code zu lesen ist und welcher Quellenuntergrenze Stufe 1 anhält, statt fortzufahren; lies es dort, anstatt einem leeren Ergebnis zu vertrauen.

citations.py build erwartet das JSON-Array, das Stufe 1 in research/sources.json geschrieben hat, nicht das Markdown in research/sources.md. Ihm die Markdown-Datei zu füttern ist ein Fehler, und es wird das mitteilen.

Suche auch zwei oder drei engere Unterabfragen, wenn der erste Durchlauf dünn ist. Ein Papier mit fünf Quellen liest sich wie eines mit fünf Quellen.

Verifikation und was sie beweist (und was nicht)

citations.py verify versetzt jede DOI in einen von vier Zuständen, und unknown wird niemals stillschweigend in absent umgewandelt:

  • resolved. Crossref oder DataCite hat den Datensatz zurückgegeben. Zitiere ihn.
  • absent. Beide haben 404 zurückgegeben. Entferne ihn. Repariere ihn nicht, rate keine Ersatz-DOI, geh nicht dorthin zurück…

Individual skills in this repo

This repo contains 18 individual skills — each has its own dedicated page.

getedgehq/agent-evals

Build evals for an AI agent that already does real work. Use when someone asks "how do I know my agent is right", wants to test an agent before trusting it, compare models on cost versus quality, or turn production failures into tests. Walks from first tasks and yes/no verifiers, to isolated environments, to a trace-driven improvement loop.

getedgehq/cli-ux-review

Audit a command-line tool for user-friendliness — clear situation / next-step / options in every output, colour-highlighted runnable commands, no raw jargon, no silent hangs. Invoke for "CLI UX audit", "review my CLI", "is this CLI intuitive", or before any CLI release.

getedgehq/generate-image

Generate images with OpenAI GPT Image 2 via the Codex CLI, billed through the user's ChatGPT Plus subscription (no OpenAI API key, no per-image API cost). Use when the user asks to create, generate, or make an image, picture, illustration, icon, hero graphic, or concept art from a text prompt.

getedgehq/harness-first

Diagnose and fix an unreliable, expensive, or unsafe LLM agent by auditing its harness (golden set, judge, cost caps, data layer, action approvals, tracing) before blaming or swapping the model. Use when someone says an agent is "burning tokens", "hallucinating", "brittle", gives inconsistent answers, asks whether to switch to a cheaper/better model, or wants to ship an agent or prompt change to customers.

getedgehq/http-error-triage

Run before concluding anything from an HTTP error on a third-party API. Separates a real credential/entitlement problem from a CDN or WAF block, a wrong endpoint, or a client-signature ban. Use whenever an API returns 401/403/402/429 and you are about to say "the key is dead", "credits are exhausted", "the plan lacks access", or "we are rate limited".

getedgehq/linkedin-media-prep

Convert, crop, resize, and compress images and videos for optimal LinkedIn upload quality and file size. Use when the user wants to prepare a photo, image, or video for LinkedIn (profile picture, cover photo, post image, article featured image, post video, or video ad), optimize file size for LinkedIn, crop and resize for LinkedIn dimensions, convert HEIC/RAW/PNG/MOV to LinkedIn-ready JPEG or MP4, or mentions LinkedIn media requirements, specs, or limits.

getedgehq/monid

>-

getedgehq/people-search

Find and rank professional people for recruiting, partnerships, sales, or research from user-provided data, public web sources, an authenticated search session, or a connected provider. Use for people discovery, LinkedIn or Sales Navigator search design, profile-list ranking, or provider filter translation.

getedgehq/rocketlist

Turn a CV into a shortlist of live startup roles from Rocketlist's public job board, including adjacent job titles the person would never have searched for, each with its published salary, the evidence for the fit, and a direct apply link. Use for "find roles I would be a strong fit for", career pivots, remote or VC-backed job hunts, and salary-visible role discovery.

getedgehq/security-audit-checklist

Run a comprehensive security audit across application code, cloud infrastructure, containers, CI/CD pipelines, and infrastructure-as-code. Covers privacy compliance, OWASP basics, secret leakage, API security, IAM misconfigurations, storage exposure, Kubernetes hardening, and network security. Use when the user asks to audit, review, or harden app or cloud security, check for secrets, scan for XSS/SQLi, verify security headers, review Terraform/CloudFormation, audit AWS/GCP/Azure configs, or perform any security-focused review.

getedgehq/shadcn-first

>-

getedgehq/skills

Develop or review a branded long-form YouTube channel using Simon Kaiser's public creator-led approach: audience fit, recurring formats, natural brand integration, Time with Brand, and an organic, paid, and Shorts strategy. Use for channel strategy, format briefs, and pilots.

getedgehq/skills

Build a YouTube strategy, evidence-backed idea slate, and title plus thumbnail package using Paddy Galloway's public method. Use when planning a channel, choosing concepts, or preparing a video before filming.

getedgehq/skills

Build or review a buyer-centered strategic narrative using Andy Raskin's public method. Use for sales or investor deck stories, homepage positioning, keynotes, launch narratives, and why-now messaging.

getedgehq/skills

Turn a product URL, launch brief, or approved script into a production-ready launch video. Use for product reveals, feature announcements, SaaS launches, and narrated product films; not for generic explainers or editing existing footage.

getedgehq/strip-image-ai-metadata

Strip C2PA and AI-generation metadata from images (PNG, JPEG, WebP) to remove "Generated by AI" / "ChatGPT" / "DALL-E" labels that platforms like LinkedIn, Instagram, and X display. Use when the user wants to clean AI-generated images before posting, remove AI attribution from photos, strip C2PA manifests, sanitize image metadata for professional use, or verify whether an image contains C2PA data.

getedgehq/top-down-comms

>-

getedgehq/workplan

Create, update, or close work plans for multi-step tasks. Use when starting refactors, bug lists, feature work, migrations, or any task with 2+ steps. Also use after auto-compaction to re-orient. Triggers: "workplan", "work plan", "create a plan", "what's the plan", "where was I", or when Claude detects

Verwandte Skills