Einen Mod erstellen
Lassen Sie Claude einen Claude Code-Mod anhand einer Beschreibung schreiben, oder schreiben Sie selbst einen, der Tool-Aufrufe zählt und einen Befehl hinzufügt. Lernen Sie den Ablauf aus Neuladen und Validieren kennen.
Ein Mod ist ein Claude Code-Plugin mit einer Einstiegsdatei, dem sogenannten Hooks-Modul: einer JavaScript- oder TypeScript-Datei, deren Funktionen Claude Code aufruft, wenn Ereignisse eintreten. So erstellen Sie einen:
- Claude bitten, ihn zu schreiben: Beschreiben Sie, was Sie möchten, in einer Claude Code-Sitzung
- Selbst schreiben: Folgen Sie dem Tutorial, um zu lernen, wie der Code eines Mods funktioniert. Sie benötigen weder Node.js noch einen Bundler oder einen Build-Schritt, da Claude Code
.js- und.ts-Dateien direkt lädt.
Wenn Sie noch nicht entschieden haben, ob ein Mod das richtige Tool ist, lesen Sie zuerst den Vergleich in der Übersicht.
Mods erfordern Claude Code v2.1.287 oder höher. Führen Sie in Ihrer Shell claude --version aus, um dies zu prüfen. Um festzustellen, ob Mods bei Ihnen geladen werden können, lesen Sie Prüfen, ob Mods geladen werden können.
Claude um einen Mod bitten
Beschreiben Sie den gewünschten Mod in einer interaktiven Claude Code-Sitzung, und Claude schreibt ihn. Claude arbeitet dabei mit einem integrierten Skill namens plugin-authoring, der festlegt, wo der Mod geschrieben wird, welche Events und Methoden Ihre Version bietet und wie der Mod geladen wird. Claude kann den Skill laden, wenn Sie um einen Mod bitten, oder Sie laden ihn selbst, indem Sie /plugin-authoring in der Claude Code-Eingabeaufforderung ausführen.
Der Mod wird ausgeführt, sobald Sie ihn genehmigen, außer in Sitzungen, in denen ein von Claude geschriebener Mod nicht geladen werden kann.
Den Mod beschreiben
Bitten Sie mit eigenen Worten um den Mod, zum Beispiel make a mod that shows the current git branch above the prompt. Claude schreibt den Mod in ein eigenes Verzeichnis im Mods-Ordner der Sitzung, also ~/.claude/dev-mods/ gefolgt von der ID der Sitzung. Der vollständige Pfad eines Mods sieht so aus: ~/.claude/dev-mods/3f2a9c1e-5b7d-4e8a-9c21-6d0f4b8a7e13/git-branch/.
In den Berechtigungsmodi default und acceptEdits fragt Claude Code nach, bevor Claude jede Datei des Mods erstellt, da ~/.claude ein geschützter Pfad ist. Genehmigen Sie jede Datei, sobald sie angezeigt wird.
Den Mod genehmigen
Wenn Claude die erste Datei speichert, fragt Claude Code, ob Hot Reloading für die Sitzung aktiviert werden soll. Hot Reloading führt die Mods aus, die Claude in dieser Sitzung schreibt, und übernimmt jede spätere Änderung.
Wählen Sie eine dieser Antworten:
- Enable for this session: Die Mods im Mods-Ordner der Sitzung werden am Ende des Turns geladen und am Ende jedes Turns, der sie ändert, neu geladen. Ihre Antwort gilt für die gesamte Sitzung, auch nachdem Sie sie fortgesetzt haben.
- Not now: Vorerst wird nichts geladen. Die Dateien bleiben dort, wo Claude sie geschrieben hat, und die Mods werden beim nächsten Start dieser Sitzung geladen. Um zu verhindern, dass ein Mod jemals geladen wird, löschen Sie sein Verzeichnis.
Prüfen, ob der Mod geladen wurde
Führen Sie /plugin in der Claude Code-Eingabeaufforderung aus und drücken Sie Tab, bis der Tab Installed ausgewählt ist. Dort wird der Mod aufgeführt, und Sie können ihn dort ausschalten.
Den Mod ausprobieren
Verwenden Sie, worum Sie gebeten haben. Beim Beispiel-Prompt erscheint der Name des aktuellen Branches über dem Eingabefeld. Wenn der Mod nicht das tut, was Sie wollten, sagen Sie Claude, was geändert werden soll. Der Mod wird am Ende jedes Turns neu geladen, der seine Dateien ändert, sodass Sie die Änderung ausprobieren können, sobald Claude fertig ist.
Den Mod in anderen Sitzungen verwenden
Ein von Claude geschriebener Mod wird nur in der Sitzung geladen, in der er erstellt wurde, und Claude Code löscht den Mods-Ordner dieser Sitzung, sobald er älter als cleanupPeriodDays ist. Um den Mod zu behalten, kopieren Sie sein Verzeichnis aus dem Mods-Ordner an einen eigenen Ort, etwa ~/mods/git-branch. Wählen Sie dann, wie er geladen werden soll:
- In einer Sitzung, die Sie starten: Führen Sie in Ihrer Shell
claude --plugin-dir ~/mods/git-branchaus - Für andere Personen: Fügen Sie ihn einem Marketplace hinzu, damit andere ihn installieren können
Sitzungen, in denen ein von Claude geschriebener Mod nicht geladen werden kann
Ein von Claude geschriebener Mod wird erst geladen, nachdem Sie ihn genehmigt haben, und nur in einem vertrauenswürdigen Workspace, in dem Mods ausgeführt werden dürfen. In diesen Sitzungen wird er nicht geladen:
- Niemand ist da, um zu genehmigen: Die Sitzung kann Ihnen keine Abfrage anzeigen, etwa bei einer Ausführung mit
claude -poder imdontAsk-Modus - Der Workspace ist nicht vertrauenswürdig: Sie haben die Vertrauensabfrage für das Verzeichnis nicht akzeptiert
- Mods sind deaktiviert: Sie haben mit
--safe-modeoder--baregestartet, Sie habendisableAllHooksgesetzt, oder die verwalteten Einstellungen Ihrer Organisation blockieren sie
Einen Mod selbst schreiben
In diesem Tutorial erstellen Sie einen Mod namens first-mod, der die Tool-Aufrufe von Claude zählt, die Anzahl neben dem Spinner anzeigt, während Claude arbeitet, und einen Befehl /tally hinzufügt, der sie ausgibt. Anschließend lesen Sie die Typdeklarationen, die Claude Code neben Ihren Mod schreibt, und führen claude plugin validate aus. Zusammen zeigen sie Ihnen die Events und Methoden, die Ihre Version bietet, und was Claude Code aus Ihrem Code liest.
Diese Aufnahme zeigt den fertigen Mod. Der Spinner zählt Tool-Aufrufe, /tally gibt die Anzahl aus, und eine Änderung am Code wird wirksam, während die Sitzung läuft:
Sie schreiben drei Dateien:
first-mod/
├── .claude-plugin/
│ └── plugin.json
└── hooks/
├── hooks.json
└── register.js
plugin.json: das Manifest des Pluginshooks.json: verweist auf Ihre Codedateiregister.js: Ihr Code, das sogenannte Hooks-Modul
Plugin-Verzeichnis erstellen
Erstellen Sie die beiden Verzeichnisse, die die Dateien enthalten:
mkdir -p first-mod/.claude-plugin first-mod/hooks
New-Item -ItemType Directory -Force first-mod\.claude-plugin, first-mod\hooks
Manifest schreiben
Ein Mod ist ein Plugin, und ein Mod benötigt ein Manifest. Das Manifest dieses Mods hat keine besonderen Felder. Speichern Sie Folgendes als first-mod/.claude-plugin/plugin.json:
{
"name": "first-mod",
"version": "0.1.0",
"description": "Counts Claude's tool calls, shows the count beside the spinner, and adds a /tally command",
"author": { "name": "Your Name" }
}
Claude Code mitteilen, wo sich Ihr Code befindet
Wenn Claude Code ein Plugin lädt, liest es die Datei hooks/hooks.json des Plugins. Der Schlüssel modules in dieser Datei gibt den Pfad zu Ihrem Code an, und erst dieser Schlüssel macht das Plugin zu einem Mod. Geben Sie einen Pfad relativ zu hooks.json an. Hier verweist er auf register.js, das Sie im nächsten Schritt schreiben.
Speichern Sie Folgendes als first-mod/hooks/hooks.json:
{
"description": "The first-mod hooks module",
"modules": ["./register.js"]
}
Code schreiben
Diese Datei ist der Code des Mods, das sogenannte Hooks-Modul. Wenn der Mod geladen wird, ruft Claude Code die von der Datei exportierte Funktion register auf und übergibt ihr eine Funktion namens on. Jeder Aufruf von on registriert einen Event-Handler, einen sogenannten Hook, für das angegebene Event.
Speichern Sie Folgendes als first-mod/hooks/register.js:
// The count, shared by the hooks below
let calls = 0
// Claude Code calls this once when the mod loads
export function register(on) {
// Runs when the session starts, before your first prompt
on('session.start', async ($, e, next) => {
// Add the /tally command
await $.command.register({
name: 'tally',
description: 'Show how many tool calls Claude has made',
})
// Let the session start as usual
return next(e)
})
// Runs each time Claude is about to use a tool
on('tool.call', async ($, e, next) => {
calls += 1
// Ask Claude Code to draw the interface again, so the new count shows
$.ui.invalidate('ui.render')
// Let the tool run as usual
return next(e)
})
// Runs when you type /tally, and only then, because of the matcher
on('command.run', { command: 'tally' }, async () => {
// The text to print in the transcript
return { text: 'Claude has made ' + calls + ' tool calls since this mod loaded' }
})
// Runs each time Claude Code draws the spinner
on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
// Keep Claude Code's spinner, with the count added after its word
return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })
})
}
Die Datei speichert eine Anzahl in calls und registriert vier Hooks:
session.startwird beim Start der Sitzung vor Ihrem ersten Prompt ausgeführt und erneut bei jedem Neuladen des Mods. Er fügt Claude Code den Befehl/tallyhinzu.tool.callwird jedes Mal ausgeführt, wenn Claude im Begriff ist, ein Tool zu verwenden. Er erhöhtcallsum eins und fordert Claude Code auf, die Oberfläche neu zu zeichnen.command.runwird ausgeführt, wenn Sie/tallyeingeben. Er gibt den auszugebenden Text zurück.ui.renderwird jedes Mal ausgeführt, wenn Claude Code den Spinner zeichnet. Er fügt die Anzahl nach dem Wort des Spinners hinzu.
Wie der Beispiel-Mod funktioniert erklärt die drei Argumente, die jeder Hook erhält, und was jeder zurückgibt.
Mod laden
Starten Sie Claude Code mit dem Flag --plugin-dir, das ein Plugin-Verzeichnis für eine Sitzung lädt, ohne es zu installieren:
claude --plugin-dir ./first-mod
Mod ausprobieren
Bitten Sie Claude um etwas, das einige Tool-Aufrufe erfordert, etwa list the files here and read the README. Während Claude arbeitet, folgt auf das Wort des Spinners eine steigende Anzahl, wie in Thinking · tool calls: 2…. Wenn Claude fertig ist, geben Sie /tally ein und drücken Sie die Eingabetaste. Das Transkript zeigt first-mod: Claude has made 2 tool calls since this mod loaded mit Ihrer eigenen Anzahl an. Claude Code stellt dem Text des Befehls den Namen des Plugins voran.
Um den Befehl ohne interaktive Sitzung zu prüfen, führen Sie ihn im nicht interaktiven Modus aus:
claude -p "/tally" --plugin-dir ./first-mod
first-mod: Claude has made 0 tool calls since this mod loaded
Wenn /tally nicht in der Befehlsliste erscheint, wurde das Modul nicht geladen. Siehe Herausfinden, warum ein Mod nichts tut.
Code ändern, während die Sitzung läuft
Lassen Sie die Sitzung geöffnet. Ändern Sie in register.js im Hook ui.render ' · tool calls: ' in ' · tools used: ' und speichern Sie. Die hervorgehobene Zeile ist diejenige, die sich ändert:
// Runs each time Claude Code draws the spinner
on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
// Keep Claude Code's spinner, with the count added after its word
return next({ ...e, props: { ...e.props, suffix: ' · tools used: ' + calls + '…' } })
})
Eine Zeile im Transkript meldet, dass first-mod neu geladen wurde, und listet seine Hooks auf, und der nächste Spinner verwendet den neuen Text, wie in Thinking · tools used: 1….
Wie der Beispiel-Mod funktioniert
Jede Funktion, die Sie an on übergeben, ist ein Hook, also ein Event-Handler. Claude Code übergibt jedem Hook dieselben drei Argumente:
- Die Mods-API, namens
$: alle Methoden, die ein Mod aufrufen kann, um über sich selbst hinaus zu wirken, in Namespaces wie$.uiund$.command - Das Event, namens
e: die Eingabe des Events als einfache Daten, etwa Name und Argumente eines Tool-Aufrufs - Der nächste Handler, namens
next: eine Funktion, die das Event an die anderen Mods und dann an das eigene Verhalten von Claude Code weitergibt und das Ergebnis zurückgibt
Die Hooks in first-mod behandeln ihre Events auf folgende Weise:
- Beobachten: Der Hook
session.startregistriert den Befehl, und der Hooktool.callzählt den Aufruf und fordert ein Neuzeichnen an. Beide gebennext(e)zurück, sodass die Sitzung startet und das Tool wie gewohnt ausgeführt wird. - Antworten: Der Hook
command.rungibt sein eigenes Ergebnis zurück und ruftnextnie auf. Das zweite Argument vonon,{ command: 'tally' }, ist ein Filter, ein sogenannter Matcher, sodass der Hook nur für/tallyausgeführt wird. - Umschreiben: Der Hook
ui.renderruftnextmit einer Kopie voneauf, derensuffixdie Anzahl enthält, sodass Claude Code seinen gewohnten Spinner mit Ihrem Text nach dem Wort zeichnet
Claude Code überwacht ein mit --plugin-dir geladenes Verzeichnis und lädt das Hooks-Modul per Hot-Reload neu, wenn sich eine Datei darin ändert. Bei jedem Neuladen wird register erneut ausgeführt, sodass calls auf 0 zurückgesetzt wird und /tally von vorn zu zählen beginnt. Wie Sie einen Wert über Neuladevorgänge hinweg behalten, erfahren Sie unter Zustand beibehalten.
An einem Mod weiterarbeiten
Sobald ein Mod geladen ist, können Sie Claude Änderungen daran vornehmen lassen, Ihren Code mit den Typdefinitionen für Ihre Version abgleichen, die Events und Aufrufe auflisten, die Claude Code darin findet, und den Mod testen.
Einen Mod mit Claude ändern
Um einen vorhandenen Mod zu ändern, starten Sie die Sitzung mit --plugin-dir, das auf das Verzeichnis des Mods zeigt, damit das, was Claude schreibt, in derselben Sitzung geladen wird:
claude --plugin-dir ./first-mod
Bitten Sie dann um die Änderung, zum Beispiel add a /tally-reset command to this mod that sets the tally back to zero. Claude bearbeitet das Hooks-Modul, führt claude plugin validate aus und behebt, was gemeldet wird. Ein Verzeichnis, das Sie mit --plugin-dir laden, ist ein geschützter Pfad, daher werden Sie in den Modi default und acceptEdits gebeten, jede Bearbeitung des Mods durch Claude zu genehmigen. Die Tabelle der geschützten Pfade zeigt das Ergebnis für die anderen Berechtigungsmodi.
Dateien, die Claude während seines Turns speichert, werden am Ende des Turns neu geladen, sodass Sie /tally-reset ausprobieren können, sobald Claude fertig ist.
Typdefinitionen für Ihre Version erhalten
Jedes Mal, wenn Claude Code einen Mod aus einem Verzeichnis lädt oder neu lädt, das Sie an --plugin-dir übergeben, oder einen Mod, den Claude für Sie geschrieben hat, schreibt es TypeScript-Deklarationsdateien mit der Endung .d.ts in .claude-plugin/types/ innerhalb des Mod-Verzeichnisses. Sie beschreiben die genauen Events, Methoden der Mods-API und Elemente in der Claude Code-Version, die Sie ausführen, sodass Ihr Editor Ihre Hooks automatisch vervollständigen und typprüfen kann. Um die Deklarationen online einzusehen, lesen Sie mods/types/claude-code.d.ts im Claude Code-Repository; die erste Zeile nennt die Version, die die Datei geschrieben hat. Das Verzeichnis enthält diese Dateien:
| Pfad | Was deklariert wird |
|---|---|
claude-code/index.d.ts |
Jedes Event mit seiner Eingabe und seinem Ergebnis, jeder Namespace und jede Methode der Mods-API sowie die Elemente, die jede Oberfläche zeichnen kann |
claude-code-tools/index.d.ts |
Die Eingaben und Ergebnisse der integrierten Tools, sodass die Prüfung e.tool === 'Bash' den Typ von e eingrenzt |
claude-code-mcp/index.d.ts |
Die Eingaben der MCP-Tools, die beim letzten Speichern einer Datei im Mod verbunden waren |
index.d.ts in einem nach einem Plugin benannten Verzeichnis |
Was dieses Plugin zur Mods-API hinzufügt. Es gibt ein Verzeichnis für jedes Plugin, das Ihre plugin.json unter dependencies aufführt. |
tsconfig.json |
Compiler-Optionen, die zu einem Hooks-Modul passen |
Wenn Ihr Mod keine eigene tsconfig.json hat, fügt Claude Code im Stammverzeichnis des Mods eine hinzu, die die generierte erweitert, sodass Ihr Editor und tsc -p ./first-mod den Mod ohne weitere Einrichtung typprüfen.
Die Events und Methoden können sich zwischen Releases ändern. Vertrauen Sie daher im Zweifelsfall diesen Dateien mehr als jeder Seite, einschließlich dieser.
claude-code/index.d.ts ist die umfassendste Referenz für Ihren Build, mit einem Kommentar und einem Beispiel für jede Methode der Mods-API. Um etwas nachzuschlagen, durchsuchen Sie die Datei nach dem Namen, etwa 'tool.call'.
Prüfen, was Claude Code aus Ihrem Mod liest
Um Ihren Mod so zu sehen, wie Claude Code ihn sieht, ohne Ihren Code auszuführen oder eine Sitzung zu starten, verwenden Sie claude plugin validate. Der Befehl prüft das Manifest und führt auf dem Quellcode des Hooks-Moduls dieselbe statische Analyse aus, die Claude Code beim Laden eines Mods ausführt. Führen Sie ihn in Ihrer Shell auf dem Verzeichnis des Mods aus:
claude plugin validate ./first-mod
Für first-mod enthält die Ausgabe diese Zeilen.
❯ ./register.js hooks: session.start, tool.call, command.run{command=tally}, ui.render{component=Spinner}
❯ ./register.js calls: $.command.register, $.ui.invalidate
✔ Validation passed
Die Zeile hooks: listet die Events auf, an die sich Ihr Modul hängt, jeweils mit seinem Filter in geschweiften Klammern. Die Zeile calls: listet jede Methode der Mods-API auf, die es aufruft. Ein Modul, das Umgebungsvariablen liest oder setzt, erhält außerdem die Zeilen env reads: und env writes:, und eines, das $.state verwendet, erhält state reads: und state writes:.
Wenn ein Event, das Sie behandeln wollten, in der ersten Zeile fehlt, ruft Claude Code diesen Hook ebenfalls nicht auf. Die übliche Ursache ist ein falsch geschriebener Event-Name, den der Befehl als Fehler meldet, etwa "tool.calls" is not an event.
Befolgen Sie diese Regeln, damit die statische Analyse jeden Hook und jeden Aufruf finden kann:
- Schreiben Sie jeden Aufruf der Mods-API vollständig aus:
$, den Namespace, dann die Methode, wie in$.store.get('notes'). Sie können$an eine Funktion übergeben, die auf oberster Ebene derselben Datei deklariert ist; für eine eigene Funktion namensloadNoteslautet die Zeilecalls:dann$.store.get (via loadNotes). Wenn Sie$an eine Methode, an eine innerhalb des Hooks definierte Funktion oder an eine aus einer anderen Ihrer Dateien importierte Funktion übergeben, schlägt die Validierung fehl. Die Funktionenreadundupdate, die$.stateverwendet, sind die Importe, die es entgegennehmen können. Weisen Sie$oder einen seiner Namespaces keiner Variablen zu, destrukturieren Sie es nicht und indizieren Sie es nicht mit einem berechneten Namen.const ui = $.uischlägt mit$.ui is used as a valuefehl. - Schreiben Sie den Event-Namen in jedem
on-Aufruf als String-Literal, etwa'tool.call'. Eine Variable oder eine Schleife über eine Liste von Namen schlägt mitthe event name passed to on() is not a string literalfehl. - Deklarieren Sie innerhalb von
registerkeine zweite Variable und keinen zweiten Parameter namenson. Die Validierung schlägt mit"on" is declared again (shadowed)fehl. - Importieren Sie nur aus Dateien innerhalb des Plugin-Verzeichnisses, über einen relativen Pfad. Der einzige erlaubte Bare Import ist
claude-code, für Typen und einige Hilfsfunktionen. - Verwenden Sie
import-Deklarationen am Anfang der Datei, wie inimport { name } from './file.js'. Ein dynamischesimport()schlägt mita dynamic import(); a hooks module imports its own files with an import declarationfehl. - Schreiben Sie jede Datei als ES-Modul, mit
importund nicht mitrequire. Die Referenz listet die Dateiendungen auf, die Claude Code lädt.
Den Mod testen
Sie können automatisierte Tests für einen Mod schreiben und sie in Ihrer Shell mit claude plugin test ausführen, ohne Sitzung, Anmeldung oder Netzwerk. Ein Test löst die Events aus, die Ihre Hooks behandeln, und prüft, was die Hooks getan haben.
Dieser Test löst zwei Tool-Aufrufe aus, führt /tally aus und prüft, dass die Antwort beide zählt. Speichern Sie ihn als first-mod/tests/first-mod.test.ts:
import { expect, test } from 'claude-code/testing'
test('/tally reports the tool calls the mod has seen', async ($, on) => {
// Answer each tool call in Claude Code's place, so no tool runs
on('tool.call', () => ({ result: 'ok' }))
// Fire two tool calls, which the mod's tool.call hook counts
await $.tool.call({ tool: 'Bash', command: 'ls' })
await $.tool.call({ tool: 'Read', file_path: 'README.md' })
// Run /tally and check the text its hook returns
const answer = await $.command.run({ command: 'tally', args: '' })
expect(answer.text).toBe('Claude has made 2 tool calls since this mod loaded')
})
Führen Sie die Tests in Ihrer Shell im Verzeichnis first-mod aus:
claude plugin test
Die Ausgabe nennt jeden Test und ob er bestanden wurde, mit Zeitangaben, die von Lauf zu Lauf variieren:
tests/first-mod.test.ts:
(pass) /tally reports the tool calls the mod has seen [22.87ms]
1 pass
0 fail
Ran 1 test across 1 file. [0.19s]
Einen Mod testen behandelt das Stubben eines Modellaufrufs oder des Stores sowie das Testen von Timern und Zeichnungen.
Ihren Mod teilen
Ein Mod ist ein Plugin. Sie versionieren ihn also im Manifest, und andere installieren und aktualisieren ihn mit den /plugin-Befehlen. Wie Sie ihn teilen, hängt davon ab, für wen er gedacht ist:
- Einige wenige Personen: Senden Sie ihnen das Verzeichnis des Plugins oder eine
.zip-Datei davon. Siehe Ein Plugin ohne Marketplace teilen - Ihr Team: Führen Sie ihn in Ihrem eigenen Marketplace auf, etwa in einem privaten Repository mit einem Verzeichnis für jedes Plugin. Um diesen Marketplace für alle hinzuzufügen, die in einem Repository arbeiten, registrieren Sie ihn in den Einstellungen des Repositorys
- Ihre gesamte Organisation: Ein Administrator kann die Mods Ihrer Organisation über verwaltete Einstellungen installieren
- Alle: Machen Sie das Repository Ihres Marketplace öffentlich, oder reichen Sie das Plugin beim Verzeichnis von Anthropic ein
Prüfen Sie vorher den name des Plugins: claude plugin validate lehnt einen Namen ab, der wie einer von Anthropics eigenen aussieht, etwa einen, der mit claude- beginnt. Die Events und Methoden können sich zwischen Releases ändern. Geben Sie daher in Ihrer README an, mit welcher Claude Code-Version Sie getestet haben.
Entwickeln Sie weiterhin mit --plugin-dir gegen das Verzeichnis, nicht gegen eine installierte Kopie. Claude Code speichert ein installiertes Plugin versionsweise im Cache. Ihre Änderungen erreichen die installierte Kopie daher erst, wenn Sie die Version erhöhen und erneut installieren.
Nächste Schritte
- In der Oberfläche zeichnen: einen Bereich öffnen, oberhalb des Prompts zeichnen und Schaltflächen sowie Textfelder hinzufügen
- Auf Ereignisse reagieren: Tool-Aufrufe, Prompts und Turns abfangen
- Die Mods-API verwenden: Befehle und Tools hinzufügen, ein Modell aufrufen und Aufgaben per Timer ausführen
- Einen Mod testen: die Antworten von Claude Code simulieren sowie Timer und Zeichnungen testen
- Fehlerbehebung bei einem Mod: die Gründe, warum ein Mod nichts tut, und das Debug-Log
- Den Quellcode der integrierten Mods lesen: vollständige Plugins, jeweils mit ihrem Hooks-Modul und Tests