Buch-in-Skill Konverter
Wandle geschriebenes Wissen in umsetzbare Agenten-Skills um, indem du Struktur extrahierst – keine Zusammenfassungen erstellst.
Philosophie
Bücher enthalten kristallisiertes Fachwissen: Frameworks, Prinzipien und Techniken, deren Entwicklung Jahre gedauert hat. Diese Skill extrahiert dieses Wissen in ein Format, das GitHub Copilot CLI, Amp, Claude Code oder ein anderer kompatibler Agent wiederholt nutzen kann.
Extrahiere Struktur, keine Zusammenfassungen. Eine Skill ist kein Buchbericht. Sie ist ein Werkzeugkasten aus:
- Benannten Frameworks (mentale Modelle mit klarer Anwendung)
- Umsetzbaren Prinzipien (Regeln, die Entscheidungen leiten)
- Techniken (Schritt-für-Schritt-Methoden)
- Anti-Patterns (was zu vermeiden ist und warum)
- Stimmkalibrierung (wie der Autor denkt und kommuniziert)
Bewahre die Präzision des Autors. Frameworks haben oft spezifische Namen aus gutem Grund. „Die 5 Warums“ ist nicht austauschbar mit „mehrmals nach dem Warum fragen“. Erfasse die genaue Formulierung.
Schichte die Tiefe angemessen. Einfache Bücher → einfache Skills. Komplexe Bücher mit 10+ Frameworks → Skills mit Referenzdateien und Kapiteln auf Abruf.
Betriebsmodi
Vier Wege verfügbar. Entscheide basierend auf der Anfrage des Benutzers:
1. Vollständige Konvertierung (Standard)
Auslöser: Benutzer gibt einen oder mehrere Dokument-/Verzeichnis-/Glob-Pfade ohne spezielle Anweisungen an Aktion: Führe alle Schritte unten aus (Schritte 0–9) Ausgabe: Vollständige Skill mit SKILL.md, Kapiteln/, Glossar, Mustern, Spickzettel
2. Nur Analyse
Auslöser: Benutzer sagt „analysieren“, „nur extrahieren“ oder „ich möchte vor der Generierung überprüfen“ Aktion: Führe Schritte 0–3 aus, erstelle dann einen strukturierten Extraktionsbericht (gefundene Frameworks, Prinzipien, Techniken). Stoppe – generiere KEINE Skill-Dateien. Ausgabe: Analysebericht zur Überprüfung durch den Benutzer
3. Generierung aus vorheriger Analyse
Auslöser: Benutzer hat vorhandene Analysenotizen oder hat zuvor „nur analysieren“ ausgeführt Aktion: Überspringe Schritte 0–3, verwende die bereitgestellte Analyse als Eingabe, führe Schritte 4–9 aus Ausgabe: Skill-Dateien aus der bereitgestellten Analyse
4. Aktualisierung / Einarbeitung (bestehende Skill)
Auslöser: Benutzer gibt einen oder mehrere neue Quellpfade an und weist darauf hin, dass eine bestehende Skill aktualisiert werden soll (entweder durch Angabe des vorhandenen Skill-Ordners, eines bereits in SKILLS_HOME vorhandenen Skill-Slugs oder durch explizite Anfrage zur Aktualisierung).
Aktion: Führe Schritt 0 (Prüfung außerhalb des Gültigkeitsbereichs), Schritt 1 (Eingabevalidierung), Schritt 1.5 (Buchtyp identifizieren) und Schritt 2 (Neue Dateien extrahieren) aus. Springe dann zu Schritt 5 (Vorhandenen Skill-Pfad identifizieren/erkennen) und führe den Aktualisierungs-/Einarbeitungs-Workflow aus, um die neuen Inhalte in die bestehenden Skill-Dateien einzufügen.
Ausgabe: Aktualisierte bestehende Skill mit neuen/überarbeiteten Kapitelzusammenfassungen und zusammengeführten Indizes/Glossaren.
Skill-Speicherorte
Dieser Konverter kann von mehreren Skill-Systemen aus ausgeführt werden. Wenn nach dem Hilfsskript dieses Konverters gesucht oder der generierte Buch-Skill geschrieben wird, bevorzuge diese Orte in dieser Reihenfolge:
- GitHub Copilot CLI persönliche Skills:
~/.copilot/skills/ - Agentenübergreifende persönliche Skills (Copilot + Amp):
~/.agents/skills/ - Claude Code persönliche Skills:
~/.claude/skills/ - Projektlokale Copilot-Skills:
.github/skills/ - Projektlokale Claude-Skills:
.claude/skills/ - Projektlokale Amp / Copilot-Skills:
.agents/skills/ - Amp globale Skills:
~/.config/agents/skills/ - Amp legacy globale Skills:
~/.config/amp/skills/
Wähle für generierte Buch-Skills ein Ziel, das der Host-Agent des Benutzers tatsächlich erkennen kann (siehe Schritt 5). Wenn mehr als ein gültiger Root existiert, frage den Benutzer einmal und merke dir die Antwort für die Sitzung – nimm nicht stillschweigend den Standardwert.
Schritt 0 – Prüfung außerhalb des Gültigkeitsbereichs
Wenn keine Argumente angegeben werden, stoppe und antworte:
„book-to-skill erfordert einen unterstützten Dokumentenpfad, Ordner oder ein Glob-Muster. Verwendung:
book-to-skill <Pfad-zu-Dokumentenordner-oder-Glob>... [Skill-Name-Slug]“
Während des gesamten Workflows:
- Identifiziere die Eingabepfade und den optionalen Skill-Slug.
- Wenn das letzte Argument keine Datei, kein Ordner und kein Glob ist, das/die existiert oder mit Dateien übereinstimmt, und es wie ein Skill-Slug aussieht (z.B. Kleinbuchstaben mit Bindestrichen, alphanumerisch), behandle es als
SKILL_NAME. - Behandle alle anderen Argumente als Liste der
INPUT_PATHS. - Wenn ein Eingabepfad ein vorhandenes Skill-Verzeichnis ist (enthält
SKILL.mdund einenchapters/-Unterordner) oder wennSKILL_NAMEmit einem vorhandenen Skill-Slug inSKILLS_HOMEübereinstimmt, kennzeichne diesen Lauf als Aktualisierungs-/Einarbeitungs-Vorgang (Modus 4).
Schritt 1 – Eingabe validieren
Überprüfe, ob mindestens eine unterstützte Datei, ein Verzeichnis oder ein Glob-Muster unter den INPUT_PATHS vorhanden ist.
Erweitere für Verzeichnisse und Glob-Muster diese, um passende unterstützte Dateien zu finden (.pdf, .epub, .docx, .txt, .md, .markdown, .rst, .adoc, .html, .htm, .rtf, .mobi, .azw, .azw3).
Wenn keine unterstützten Dateien gefunden werden, stoppe mit einer klaren Fehlermeldung.
Schritt 1.5 – Inhaltstyp identifizieren
Frage den Benutzer vor der Extraktion:
„Welche Art von Inhalt haben diese Quellen? Dies hilft mir, die beste Extraktionsmethode auszuwählen.
- Technisch – hat Codeblöcke, Tabellen, Formeln, Diagramme (z.B. Programmierbücher, wissenschaftliche Arbeiten, Architekturanleitungen)
- Textlastig – hauptsächlich Prosa, wenige oder keine Tabellen/Code (z.B. Management, Produktivität, erzählendes Sachbuch)
- Nicht sicher – Ich verwende die schnelle Methode und warne dich, wenn die Qualität begrenzt erscheint“
Speichere die Antwort als BOOK_TYPE:
- Option 1 →
BOOK_TYPE=technical - Option 2 →
BOOK_TYPE=text - Option 3 →
BOOK_TYPE=text
Wenn BOOK_TYPE=technical, informiere den Benutzer vor dem Fortfahren:
„📐 Technischer Modus ausgewählt – Verwende Docling für strukturbewusste Extraktion (Tabellen, Codeblöcke, Formeln als Markdown erhalten). Dies dauert ~1,5s pro Seite, also rechne für längere Quellen mit einigen Minuten. Starte jetzt…“
Wenn BOOK_TYPE=text, informiere:
„📄 Textmodus ausgewählt – Verwende den schnellstmöglichen Extractor für jeden Dateityp. Klartext/Markdown/HTML sind normalerweise in Sekunden bereit; PDFs verwenden pdftotext, wenn verfügbar.“
Schritt 2 – Text aus den Quelldokumenten extrahieren
Führe das Extraktionsskript aus und übergib die Eingabepfade:
SCRIPT_PATH=""
for candidate in \
"$HOME/.copilot/skills/book-to-skill/scripts/extract.py" \
"$HOME/.agents/skills/book-to-skill/scripts/extract.py" \
"$HOME/.claude/skills/book-to-skill/scripts/extract.py" \
".github/skills/book-to-skill/scripts/extract.py" \
".claude/skills/book-to-skill/scripts/extract.py" \
".agents/skills/book-to-skill/scripts/extract.py" \
"$HOME/.config/agents/skills/book-to-skill/scripts/extract.py" \
"$HOME/.config/amp/skills/book-to-skill/scripts/extract.py"
do
if [ -f "$candidate" ]; then
SCRIPT_PATH="$candidate"
break
fi
done
if [ -z "$SCRIPT_PATH" ]; then
echo "Konnte scripts/extract.py für book-to-skill nicht finden" >&2
exit 1
fi
PYTHON_BIN="${PYTHON_BIN:-python3}"
if ! command -v "$PYTHON_BIN" >/dev/null 2>&1; then
PYTHON_BIN="python"
fi
"$PYTHON_BIN" "$SCRIPT_PATH" $INPUT_PATHS --mode <BOOK_TYPE> --install-missing ask
Vor der Extraktion prüft das Skript optionale Python-Pakete, die für das erkannte Format benötigt werden. Wenn ein besserer Extractor fehlt, fordert es den Benutzer mit dem verfügbaren Fallback auf. Nicht-interaktive Sitzungen verwenden standardmäßig den Fallback, es sei denn, der Installationsmodus ist explizit yes.
Tipp – Umgebung vorbereiten: führe "$PYTHON_BIN" "$SCRIPT_PATH" --check aus, um einen formatspezifischen Bericht darüber zu erhalten, welche Extractor installiert sind und den genauen Befehl, um fehlende zu installieren, ohne eine Datei zu verarbeiten. Nützlich, wenn ein Benutzer ein Einrichtungs- oder Qualitätsproblem meldet.
Dies erstellt:
<tempdir>/book_skill_work/full_text.txt– kombinierter extrahierter Text aller Quellen mit klar visuell abgegrenzten Grenzen.<tempdir>/book_skill_work/metadata.json– gesamte kombinierte Größe, Wörter, Seiten, Token-Anzahl und eine detaillierte Liste der einzelnen verarbeitetenQuellen.
Lese <tempdir>/book_skill_work/metadata.json, um die Ergebnisse zu überprüfen.
Schritt 2.5 – Kostenabschätzung vor dem Flug
Lese <tempdir>/book_skill_work/metadata.json und präsentiere dem Benutzer eine Schätzung vor der Generierung:
📖 Erkannte Quellen: <Gesamtquellen> Quelle(n)
<Liste jede Quelldatei und ihr Format aus der Quellen-Metadatenliste>
📄 Kombinierte Seiten/Abschnitte: ~<N> | Wörter: ~<N> | Gesamt-Token: ~<N>K
💰 Geschätzte Token-Kosten (Vollständige Konvertierung / Aktualisierung):
Eingabe (Lesen + Prompts): ~<N>K Token
Ausgabe (generierte/aktualisierte Skill-Dateien): ~<N>K Token
Gesamt: ~<N>K Token
Kosten: Multipliziere die obigen Token-Anzahlen mit den aktuellen
Eingabe-/Ausgabepreisen pro 1 Mio. Token deines Modells (Preise und Modellnamen ändern sich häufig –
gebe sie nicht fest ein; zitiere den heutigen Satz und kennzeichne ihn als Schätzung).
⏱ Geschätzte Zeit: ~<N> Minuten
📁 Zu generierende/aktualisierende Dateien:
SKILL.md + Kapiteldateien + Glossar + Muster + Spickzettel
➡ Mit vollständiger Konvertierung / Aktualisierung fortfahren? (oder „nur analysieren“ eingeben, um eine Vorschau zu erhalten)
Wie man schätzt:
- Eingabe-Token ≈
estimated_tokensaus Metadaten × 1,3 (Prompt-Overhead pro Kapiteldurchlauf) - Ausgabe-Token ≈ Kapitel × Budget pro Kapitel + 4.000 (SKILL.md) + 4.500 (Glossar + Muster + Spickzettel)
- Budget-Mittelwert pro Kapitel nach
BOOK_TYPE(TIEFE wird später in Schritt 4 entschieden und kann es erhöhen):text≈ 1.000,technical≈ 1.800. Wenn der Benutzer bereits Referenz vs. vertiefendes Studium angegeben hat, verwende die entsprechende Zeile der Schritt-7-Matrix.
- Budget-Mittelwert pro Kapitel nach
- Kosten: gib die Token-Anzahlen an und multipliziere sie mit den aktuellen Eingabe-/Ausgabepreisen pro 1 Mio. Token des Benutzers. Gib KEINE Dollar-Beträge fest ein – Modellnamen und Preise ändern sich; wenn du einen anzeigst, kennzeichne ihn als Schätzung und datiere ihn.
Warte auf die Bestätigung des Benutzers, bevor du fortfährst. Wenn er „nur analysieren“ sagt, wechsle zu Modus 2.
Schritt 2.6 – REPL-ähnlicher Zugriff für große Bücher (> 50k Token)
Inspiriert vom Recursive Language Model (RLM)-Paradigma: Behandle full_text.txt als abfragbares Korpus, nicht als einzelne Lektüre. Das Laden der gesamten Datei in den Kontext verbraucht Budget, das du später für die Generierung benötigst.
Bei Büchern über ~50k Token bevorzuge programmatische Sonden gegenüber Read(full_text.txt) ohne Begrenzung:
# Größenprüfung vor jedem Read
wc -w "$FULL_TEXT_PATH"
# Finde Kapitel-Offsets, ohne die gesamte Datei zu laden
grep -n -E "^\s*(Chapter|CHAPTER)\s+[0-9]+" "$FULL_TEXT_PATH" | head -40
# Hole nur das benötigte Kapitel (Zeilen start..end inklusive)
sed -n '<start>,<end>p' "$FULL_TEXT_PATH"
# Überprüfe, ob ein Framework tatsächlich erwähnt wird, bevor es in der SKILL.md beansprucht wird
grep -c -i "westrum\|dora" "$FULL_TEXT_PATH"
# Gezieltes Read mit Offset/Limit vermeidet das Ausgabe der gesamten Datei
# Read(file_path=full_text.txt, offset=<line>, limit=<lines>)
Verwende diesen Ansatz für Schritt 3 (Strukturanalyse), Schritt 7 (Kapitelzusammenfassungen) und Schritt 8 (Glossar-/Muster-Extraktion). Bei Büchern unter 50k Token ist ein einzelnes Read in Ordnung.
Warum dies wichtig ist: Ein 200-seitiges Buch hat ~75k Token. Es einmal pro Kapitel erneut zu lesen (28 Durchgänge) kostet ~2 Mio. Eingabe-Token; die Verwendung von grep + sed, um nur relevante Ausschnitte zu ziehen, hält die Generierungskosten proportional zur Ausgabe, nicht zur Quelle.
Schritt 3 – Buchstruktur analysieren
Lese die ersten 8.000 Zeichen der extrahierten full_text.txt, um zu identifizieren:
- Buch-titel und Autor(en)
- Kapitelstruktur (suche nach „Chapter N“, „PART I“, nummerierten Überschriften, Inhaltsverzeichnis)
- Kernthemen und Fachgebiet
- Ungefähre Anzahl der Kapitel
Lese dann den Abschnitt „Inhaltsverzeichnis“, falls vorhanden, um alle Kapitel abzubilden.
Wenn der Modus „Nur Analyse“ ist: erstelle jetzt den Extraktionsbericht und stoppe. Struktur:
## Extraktionsbericht — <Titel>
### Kern-Frameworks des Autors
- **<Framework-Name>**: <was es ist und wann es anzuwenden ist>
### Wichtige Prinzipien
- <Prinzip>: <umsetzbare Regel>
### Techniken & Methoden
- <Technik>: <Schritt-für-Schritt oder Anleitung>
### Anti-Patterns
- <Was zu vermeiden ist>: <warum>
### Vorgeschlagener Skill-Name
`{Autor-Nachname}-{Kernkonzept}` – z.B. `cialdini-influence`
### Erkannte Kapitel
| # | Titel | Haupt-Frameworks |
Schritt 4 – Zweck erfragen (nur bei vollständiger Konvertierung)
Frage den Benutzer vor der Generierung:
„Wobei soll dir diese Skill helfen? (Wähle eine oder mehrere)
- Die Frameworks des Autors während der Arbeit anwenden
- Mit den mentalen Modellen des Autors denken
- Spezifische Kapitel und Konzepte nachschlagen
- Alles davon“
Verwende die Antwort, um zu gewichten, was im Kernabschnitt der SKILL.md hervorgehoben wird.
Leite TIEFE aus der Antwort ab (keine zusätzliche Aufforderung):
- Antwort ist nur Option 3 (Referenz) →
TIEFE=reference– schlanke, schnelle Kapitel zum Nachschlagen. - Antwort enthält Option 1, 2 oder 4 →
TIEFE=study– tiefere Kapitel mit mehr ausgearbeiteten Details, Beispielen und Begründungen.
TIEFE und BOOK_TYPE legen gemeinsam das Token-Budget pro Kapitel in Schritt 7 fest. Frage nicht separat nach „Studium vs. Referenz“ – es wird hier abgeleitet. (In den Modi 2/3, wo Schritt 4 übersprungen wird, ist die Standardeinstellung TIEFE=study.)
Schritt 5 – Skill-Namen bestimmen
Wenn SKILL_NAME angegeben wurde, verwende ihn als Skill-Slug.
Andernfalls schlage zwei Optionen vor und lasse den Benutzer wählen:
- Nach Autor-Konzept:
{Autor-Nachname}-{Kernkonzept}(z.B.cialdini-influence,meadows-systems) - Nach Titel: Kleinbuchstaben mit Bindestrichen aus dem Buchtitel (z.B.
designing-data-intensive-apps)
Standardmäßig wird das Autor-Konzept-Format verwendet, wenn das Buch eine starke methodische Identität hat.
Wähle das Ziel-Skill-Root (SKILLS_HOME). Durchsuche das Dateisystem des Benutzers nach vorhandenen Skill-Heimen und wähle basierend auf dem Host, den der Benutzer ausführt:
| Host-Agent | Persönlich |
...