Communitygithub.com

AaronAsAChimp/skills

코드를 다른 프로그래밍 언어로 포팅하는 스킬입니다.

skills란 무엇인가요?

이 스킬은 기존 코드베이스를 한 언어에서 다른 언어로 변환(포팅)하는 과정을 돕습니다. 주요 기능을 개요로 작성하고, 엣지 케이스와 라이브러리 종속성을 고려한 후 단위 테스트를 먼저 포팅하여 기준을 마련합니다. 그런 다음 코드를 포팅하고 테스트를 반복하여 정확성을 검증합니다. 대상 언어의 일반적인 패턴, 명명 규칙을 따르며, 주석과 로그를 유지하여 원본 코드와의 대응 관계를 쉽게 파악할 수 있도록 합니다. Claude Code, Cursor, Codex 등 AI 에이전트 환경에서 사용할 수 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AaronAsAChimp/skills/tree/HEAD/skills/porting-code

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

코드 포팅

이 스킬은 코드를 한 언어에서 다른 언어로 포팅하는 데 사용됩니다.

입력

  • 대상 언어
  • 포팅할 소스 파일 또는 코드

프로세스

현재 코드에 있는 주요 기능의 개요를 작성하는 것으로 시작합니다. 다음 사항을 기록하세요.

  • 코드 또는 단위 테스트가 다루는 엣지 케이스
  • 사용된 라이브러리와 대상 언어의 권장 대체 라이브러리

구조화된 사용자 입력 또는 질문 도구를 사용하여 각 라이브러리를 하나씩 살펴보고 사용자와 어떤 대체 라이브러리를 사용할지 확인합니다.

추가 옵션:

  • 라이브러리 기능 스텁 처리
  • 처음부터 직접 구현

다음으로 모든 단위 테스트를 포팅합니다. 이를 포팅된 코드 검증의 기준으로 사용합니다.

마지막으로 미리 준비한 개요를 사용하여 코드를 포팅합니다. 단위 테스트를 통해 수정 사항을 확인하며 반복합니다.

일반 지침

  • 대상 언어에 일반적인 패턴을 사용합니다.
  • 대상 언어에 일반적인 명명 규칙을 사용합니다.
  • 포팅된 코드는 원본 코드를 반영하여 사용자가 동등한 기능을 쉽게 찾을 수 있도록 해야 합니다.
  • 원본 코드에 있는 로깅 및 주석을 유지합니다.
  • 새로운 엣지 케이스를 기록합니다.
  • 사용자가 방향을 잡을 수 있도록 코드 구조의 변경 사항을 기록합니다.

성공 기준

  • 단위 테스트가 통과합니다(있는 경우).
  • 린트 검사가 통과합니다(있는 경우).
  • 모든 주요 기능이 구현되었습니다.
  • 식별된 모든 엣지 케이스가 처리되었습니다.
  • 필요한 모든 라이브러리가 설치되어 사용 가능합니다.

예제

예제 원본 코드

/**
 * 할인 및 세금을 포함한 제품 최종 가격을 계산합니다.
 * 
 * 유효하지 않은 할인에 대해 오류를 발생시킵니다.
 */
export function calculatePrice(basePrice: number, discount: number | null, taxRate: number): number {
	let discountAmount = 0;

	if (discount) {
		if (discount >= 1) {
			// 할인이 잘못 설정되면 음수 가격이 계산될 수 있습니다.
			// 사용자에게 유효하지 않은 가격을 보여주기 전에 중단합니다.
			throw new Error('Invalid discount');
		}

		discountAmount = basePrice * discount;
	}

	const taxAmount = (basePrice - discountAmount) * taxRate;

	return (basePrice - discountAmount) + taxAmount;
}

예제 개요

주요 기능:

  • calculatePrice 함수는 기본 가격, 할인율, 세율을 받아 제품의 최종 가격을 계산합니다.
    • 엣지 케이스:
      • 할인은 null일 수 있음
      • 할인이 1 이상이면 예외를 발생시켜 유효하지 않은 가격을 방지

예제 포팅된 코드

def calculate_price(base_price: float, discount: Optional[float], tax_rate: float) -> float:
	"""
	할인 및 세금을 포함한 제품 최종 가격을 계산합니다.

	유효하지 않은 할인에 대해 예외를 발생시킵니다.
	"""
	discount_amount = 0

	if discount is not None:
		if discount >= 1:
			# 할인이 잘못 설정되면 음수 가격이 계산될 수 있습니다.
			# 사용자에게 유효하지 않은 가격을 보여주기 전에 중단합니다.
			raise Exception('Invalid discount')

		discount_amount = base_price * discount

	tax_amount = (base_price - discount_amount) * tax_rate

	return (base_price - discount_amount) + tax_amount

예제 응답

코드를 Python으로 포팅했습니다.

  • calculatePrice는 이제 calculate_price입니다.

Individual skills in this repo

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

관련 스킬