Communitygithub.com

AaronAsAChimp/portage-de-code

Utilisé pour porter du code d'un langage de programmation vers un autre.

Qu'est-ce que portage-de-code ?

Cette compétence (skill) permet de porter du code d'un langage de programmation vers un autre langage. Elle est utile lors de migrations de codebase, de refontes techniques ou d'adaptation de fonctionnalités vers un nouvel environnement. La compétence suit un processus structuré : d'abord, elle crée un plan des fonctionnalités clés du code source en notant les cas limites, les bibliothèques utilisées et leurs équivalents dans le langage cible. Elle propose des options comme l'implémentation à partir de zéro ou le stub des fonctions. Ensuite, elle porte les tests unitaires existants pour servir de base de vérification, puis porte le code lui-même en s'appuyant sur ces tests. Les directives incluent l'utilisation de conventions et de motifs propres au langage cible, le maintien des logs et commentaires, ainsi que la préservation de la structure pour faciliter la navigation. La compétence supporte tous les langages de programmation courants. Elle est conçue pour fonctionner avec des agents comme Claude Code, Cursor, Codex, GitHub Copilot, etc.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Portage de code

Cette compétence est utilisée pour porter du code d'un langage de programmation vers un autre langage.

Entrée

  • Langage cible
  • Fichiers source ou code à porter

Processus

Commencez par créer un plan des fonctionnalités clés présentes dans le code actuel. Notez tout :

  • Cas limites que le code ou les tests unitaires couvrent
  • Bibliothèques utilisées et équivalents recommandés dans le langage cible.

Utilisez l'entrée utilisateur structurée ou l'outil de questionnement pour passer en revue chaque bibliothèque utilisée et vérifier avec l'utilisateur quel équivalent utiliser.

Options supplémentaires à présenter :

  • Fonctionnalité de bibliothèque simulée (stub)
  • Implémenter à partir de zéro

Porter ensuite les tests unitaires. Utilisez-les comme base pour vérifier le code porté.

Enfin, portez le code en utilisant le plan préparé auparavant. Itérez sur ce portage en utilisant les tests unitaires pour identifier les corrections nécessaires.

Directives générales

  • Utilisez les motifs courants pour le langage cible.
  • Respectez les conventions de nommage courantes pour le langage cible.
  • Le code porté doit refléter le code original afin qu'il soit facile pour l'utilisateur de retrouver les fonctionnalités équivalentes.
  • Conservez les logs et commentaires présents dans le code original.
  • Signalez tout nouveau cas limite.
  • Notez tout changement dans la structure du code pour aider l'utilisateur à s'orienter.

Critères de succès

  • Les tests unitaires passent, s'ils sont présents.
  • Le linting passe, s'il est présent.
  • Toutes les fonctionnalités clés sont implémentées.
  • Tous les cas limites identifiés sont pris en compte.
  • Toutes les bibliothèques nécessaires sont installées et prêtes à l'emploi.

Exemples

Exemple de code original

/**
 * Calcule le prix final du produit incluant les réductions et la taxe.
 * 
 * Lève une erreur en cas de réduction invalide.
 */
export function calculatePrice(basePrice: number, discount: number | null, taxRate: number): number {
	let discountAmount = 0;

	if (discount) {
		if (discount >= 1) {
			// Si les réductions sont mal configurées, elles peuvent aboutir à un
			// prix négatif. S'arrêter avant d'afficher un prix invalide à l'utilisateur.
			throw new Error('Réduction invalide');
		}

		discountAmount = basePrice * discount;
	}

	const taxAmount = (basePrice - discountAmount) * taxRate;

	return (basePrice - discountAmount) + taxAmount;
}

Exemple de plan

Fonctionnalités clés :

  • La fonction calculatePrice accepte un prix de base, un pourcentage de réduction et un taux de taxe et calcule le prix final du produit.
    • Cas limites :
      • La réduction peut être nulle
      • Si la réduction est supérieure ou égale à 1, lever une exception pour éviter des prix invalides.

Exemple de code porté

def calculate_price(base_price: float, discount: Optional[float], tax_rate: float) -> float:
	"""
	Calcule le prix final du produit incluant les réductions et la taxe.

	Lève une exception en cas de réduction invalide.
	"""
	discount_amount = 0

	if discount is not None:
		if discount >= 1:
			# Si les réductions sont mal configurées, elles peuvent aboutir à un
			# prix négatif. S'arrêter avant d'afficher un prix invalide à l'utilisateur.
			raise Exception('Réduction invalide')

		discount_amount = base_price * discount

	tax_amount = (base_price - discount_amount) * tax_rate

	return (base_price - discount_amount) + tax_amount

Exemple de réponse

J'ai porté le code en Python.

  • calculatePrice est maintenant calculate_price

Individual skills in this repo

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

Skills associés