Communitygithub.com

AaronAsAChimp/skills

Verwenden, um Code in eine andere Programmiersprache zu portieren.

Was ist skills?

Diese Skill-Anleitung ist für KI-Agenten (wie Claude Code, Cursor etc.) vorgesehen, die Code von einer Sprache in eine andere übertragen sollen. Sie beschreibt einen strukturierten Prozess: Zuerst wird eine Gliederung der Schlüsselfunktionalität erstellt, die Randfälle und empfohlene Bibliotheksäquivalente festhält. Danach werden Komponententests portiert, um eine Verifikationsbasis zu haben. Schließlich wird der Code selbst portiert, wobei die Tests als Grundlage für Korrekturen dienen. Die Anleitung betont, sprachspezifische Muster und Namenskonventionen zu verwenden, die Struktur und Kommentare zu erhalten sowie neue Randfälle und Strukturänderungen zu dokumentieren. Die Erfolgskriterien umfassen bestandene Unit-Tests, Linting, Implementierung aller Funktionen und Berücksichtigung aller erkannten Randfälle.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AaronAsAChimp/skills/tree/HEAD/skills/porting-code

In Ihrer bevorzugten KI fragen

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

Dokumentation

Code portieren

Diese Fähigkeit wird verwendet, um Code von einer Sprache in eine andere Sprache zu portieren.

Eingabe

  • Zielsprache
  • Quelldateien oder zu portierenden Code

Ablauf

Beginnen Sie damit, eine Gliederung der wichtigsten Funktionalitäten zu erstellen, die im aktuellen Code vorhanden sind. Notieren Sie alle:

  • Randfälle, die der Code oder die Komponententests abdecken
  • Verwendete Bibliotheken und empfohlene Äquivalente in der Zielsprache.

Nutzen Sie das strukturierte Benutzereingabe- oder Fragentool, um jede verwendete Bibliothek durchzugehen und mit dem Benutzer zu klären, welches Äquivalent verwendet werden soll.

Zusätzliche Optionen zur Auswahl:

  • Bibliotheksfunktionalität bereitstellen
  • Von Grund auf neu implementieren

Portieren Sie als Nächstes alle Komponententests. Verwenden Sie diese als Grundlage zur Überprüfung des portierten Codes.

Portieren Sie schließlich den Code mithilfe der zuvor erstellten Gliederung. Iterieren Sie diesen Schritt unter Verwendung der Komponententests, um Korrekturen vorzunehmen.

Allgemeine Richtlinien

  • Verwenden Sie Muster, die für die Zielsprache üblich sind.
  • Verwenden Sie Namenskonventionen, die für die Zielsprache üblich sind.
  • Der portierte Code sollte den ursprünglichen Code widerspiegeln, sodass der Benutzer leicht entsprechende Funktionalitäten finden kann.
  • Behalten Sie Logging und Kommentare bei, die im ursprünglichen Code vorhanden sind.
  • Notieren Sie alle neuen Randfälle.
  • Notieren Sie alle Änderungen an der Struktur des Codes, um dem Benutzer die Orientierung zu erleichtern.

Erfolgskriterien

  • Komponententests bestehen, falls vorhanden.
  • Linting ist erfolgreich, falls vorhanden.
  • Alle wesentlichen Funktionalitäten sind implementiert.
  • Alle identifizierten Randfälle sind berücksichtigt.
  • Alle benötigten Bibliotheken sind installiert und einsatzbereit.

Beispiele

Beispielhafter Originalcode

/**
 * Calculate the final price of the product including any discounts and with tax.
 * 
 * Throws an error on an invalid discount. 
 */
export function calculatePrice(basePrice: number, discount: number | null, taxRate: number): number {
	let discountAmount = 0;

	if (discount) {
		if (discount >= 1) {
			// If the discounts are misconfigured they can end up calculating a
			// negative price. Halt before showing the user an invalid price.
			throw new Error('Invalid discount');
		}

		discountAmount = basePrice * discount;
	}

	const taxAmount = (basePrice - discountAmount) * taxRate;

	return (basePrice - discountAmount) + taxAmount;
}

Beispielhafte Gliederung

Wesentliche Funktionalität:

  • Die Funktion calculatePrice akzeptiert einen Grundpreis, einen Rabattprozentsatz und einen Steuersatz und berechnet den Endpreis des Produkts.
    • Randfälle:
      • Rabatt kann null sein
      • Wenn der Rabatt größer oder gleich 1 ist, wird eine Ausnahme ausgelöst, um ungültige Preise zu verhindern.

Beispielhafter portierter Code

def calculate_price(base_price: float, discount: Optional[float], tax_rate: float) -> float:
	"""
	Calculate the final price of the product including any discounts and with tax.

	Raises an exception on an invalid discount.
	"""
	discount_amount = 0

	if discount is not None:
		if discount >= 1:
			# If the discounts are misconfigured they can end up calculating a
			# negative price. Halt before showing the user an invalid price.
			raise Exception('Invalid discount')

		discount_amount = base_price * discount

	tax_amount = (base_price - discount_amount) * tax_rate

	return (base_price - discount_amount) + tax_amount

Beispielhafte Antwort

Ich habe den Code nach Python portiert.

  • calculatePrice heißt jetzt calculate_price

Individual skills in this repo

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

Verwandte Skills