CommunityCodierung & Entwicklunggithub.com

lewiswigmore/agent-skills

Deutschsprachiger Leitfaden zur VS Code-Erweiterungsentwicklung – vom Gerüst bis zur Veröffentlichung im Marketplace. Behandelt Webview-Muster, CSP-Sicherheit, TreeView, Tests, Paketierung, KI-Anpassung und Fehlerbehebung. Adaptiert von aktsmm/agent-skills mit Korrekturen für VS Code 1.74+ APIs.

Was ist agent-skills?

Dieses Skill bietet einen umfassenden, deutschsprachigen Leitfaden für die Entwicklung von VS Code-Erweiterungen. Es deckt den gesamten Lebenszyklus ab: vom Erstellen eines neuen Projekts mit `yo code` über die Implementierung von Commands, Webviews und TreeViews bis hin zur Veröffentlichung im Marketplace. Der Leitfaden wurde speziell für VS Code 1.74+ aktualisiert und enthält Best Practices wie ein zentralisiertes Benachrichtigungssystem mit einstellbarem Modus (Sound, SilentToast, SilentStatus) sowie eine konsistente Namensgebung für Pakete, Settings, Command-IDs und View-IDs. Er eignet sich für Cursor, Claude Code, Codex und andere KI-Agenten und enthält Referenzen zu KI-Anpassung, Code-Review-Prompts, Code-Beispielen, Tests und Fehlerbehebung. Die Inhalte sind für Entwickler gedacht, die schnell produktive, sichere und gut wartbare Erweiterungen erstellen möchten.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add lewiswigmore/agent-skills

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

Leitfaden für VS Code-Erweiterungen

Erstellen, entwickeln und veröffentlichen Sie VS Code-Erweiterungen.

Wann verwenden

  • VS Code-Erweiterung, Erweiterungsentwicklung, vscode-plugin
  • Erstellen einer neuen VS Code-Erweiterung von Grund auf
  • Hinzufügen von Befehlen, Tastenkombinationen oder Einstellungen zu einer Erweiterung
  • Veröffentlichen im VS Code Marketplace

Schnellstart

# Neue Erweiterung aus dem Gerüst erstellen (empfohlen)
npm install -g yo generator-code
yo code

# Oder minimale manuelle Einrichtung
mkdir my-extension && cd my-extension
npm init -y && npm install -D typescript @types/vscode

Projektstruktur

my-extension/
├── package.json          # Erweiterungsmanifest (KRITISCH)
├── src/extension.ts      # Einstiegspunkt
├── out/                  # Kompilierte JS (gitignore)
├── images/icon.png       # 128x128 PNG für Marketplace
└── .vscodeignore         # Dateien vom VSIX ausschließen

Erstellen & Paketieren

npm run compile      # Einmalig erstellen
npm run watch        # Watch-Modus (F5 zum Debuggen starten)
npx @vscode/vsce package   # Erstellt .vsix

Abschlusskriterien

  • Erweiterung aktiviert sich fehlerfrei
  • Alle Befehle registriert und funktionsfähig
  • Paketgröße < 5 MB (.vscodeignore verwenden)
  • README.md enthält Links zu Marketplace/GitHub

Schnelle Fehlerbehebung

SymptomLösung
Erweiterung wird nicht geladenactivationEvents prüfen (seit VS Code 1.74 werden beigetragene Befehle/Ansichten automatisch erkannt)
Befehl nicht gefundenBefehl-ID in package.json/Code abgleichen
Tastenkombination funktioniert nichtwhen-Klausel entfernen, Konflikte prüfen

Referenzen

ThemaReferenz
KI-Anpassungreferences/ai-customization.md
Code-Review-Promptsreferences/code-review-prompts.md
Codebeispielereferences/code-samples.md
TreeViewreferences/treeview.md
Webviewreferences/webview.md
Testsreferences/testing.md
Veröffentlichungreferences/publishing.md
Fehlerbehebungreferences/troubleshooting.md

Best Practices

Namensgebung vereinheitlichen

Vereinheitlichen Sie Paketname, Einstellungsschlüssel, Befehl-ID und Ansichts-ID vor der Veröffentlichung:

ElementBeispiel
Paketnamecopilot-scheduler
EinstellungsschlüsselcopilotScheduler.enabled
Befehl-IDcopilotScheduler.createTask
Ansichts-IDcopilotSchedulerTasks

Zentralisierte Benachrichtigungsbehandlung

type NotificationMode = "sound" | "silentToast" | "silentStatus";

function getNotificationMode(): NotificationMode {
  const config = vscode.workspace.getConfiguration("myExtension");
  return config.get<NotificationMode>("notificationMode", "sound");
}

function notifyInfo(message: string, timeoutMs = 4000): void {
  const mode = getNotificationMode();
  switch (mode) {
    case "silentStatus":
      vscode.window.setStatusBarMessage(message, timeoutMs);
      break;
    case "silentToast":
      void vscode.window.withProgress(
        { location: vscode.ProgressLocation.Notification, title: message },
        async () => {},
      );
      break;
    default:
      void vscode.window.showInformationMessage(message);
  }
}

function notifyError(message: string, timeoutMs = 6000): void {
  const mode = getNotificationMode();
  if (mode === "silentStatus") {
    vscode.window.setStatusBarMessage(`⚠ ${message}`, timeoutMs);
    console.error(message);
    return;
  }
  void vscode.window.showErrorMessage(message);
}

Machen Sie eine notificationMode-Einstellung verfügbar, damit Benutzer steuern können, wie Benachrichtigungen zugestellt werden.

Verwandte Skills