Claude Code Plugins

Community-maintained marketplace

Feedback

language-support

@ljchg12-hue/dotfiles
0
0

Multi-language development support

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name language-support
description Multi-language development support

Complete Language Support for Claude Code

버전: 1.0.0
검증 환경: Ubuntu 24.04 LTS (Claude Code)
최종 수정: 2025-01-XX
대상 언어: C#, Swift, Ruby, PHP, R, Perl


📋 Overview

Claude Code의 Linux 환경에서 부분 지원 언어완전 지원 수준으로 전환하는 종합 가이드입니다.

핵심 기능

  • 공식 출처 검증: Microsoft, Swift.org, CRAN 등 1차 공식 문서 기반
  • 즉시 실행 가능: 모든 명령어 Ubuntu 24.04에서 테스트 완료
  • 완전한 예시: 설치 → 프로젝트 생성 → 실행까지 전체 과정
  • 문제 해결: 일반적인 오류 및 해결 방법 포함

지원 범위

언어 버전 설치 방법 소요 시간 난이도
C# .NET 8.0 apt ~2분 🟢 쉬움
Swift 5.10 수동 ~8분 🟠 어려움
Ruby 3.3 RVM/apt ~5분 🟡 중간
PHP 8.3 apt ~1분 🟢 쉬움
R 4.4 apt+저장소 ~3분 🟡 중간
Perl 5.38 기본 포함 0분 🟢 쉬움

🎯 When to Use

이 스킬을 사용해야 하는 경우:

신규 프로젝트 시작

  • "C#으로 새 프로젝트 만들어줘"
  • "Swift 서버 사이드 앱 개발하고 싶어"
  • "Ruby on Rails 시작하려고"

기존 코드 실행

  • "이 C# 코드 실행해줘" (Mono 필요 시)
  • "PHP 스크립트 돌려봐"
  • "R 데이터 분석 스크립트 실행"

환경 설정

  • "Swift 개발 환경 셋업"
  • "Ruby gem 설치 방법 알려줘"
  • "Composer로 PHP 패키지 관리"

문제 해결

  • "[언어]가 안 돼요"
  • "설치했는데 command not found 나와요"
  • "버전이 맞지 않는 것 같아요"

🚀 Installation & Setup

1. C# (.NET Core 8.0) - 완전 지원

설치

# .NET 8.0 SDK 설치 (공식 Microsoft 저장소)
sudo apt-get update
sudo apt-get install -y dotnet-sdk-8.0

# 확인
dotnet --version  # 출력: 8.0.xxx

프로젝트 생성

# 콘솔 앱
dotnet new console -n MyConsoleApp
cd MyConsoleApp
dotnet run

# ASP.NET Core 웹 API
dotnet new webapi -n MyWebApi
cd MyWebApi
dotnet run  # http://localhost:5000

샘플 코드

// Program.cs
using System;
using System.Linq;

Console.WriteLine("Hello from C# on Linux!");

// LINQ 예제
var numbers = new[] { 1, 2, 3, 4, 5 };
var squares = numbers.Select(n => n * n);
Console.WriteLine($"Squares: {string.Join(", ", squares)}");

알려진 제약사항

  • WinForms/WPF: Windows GUI 전용, Linux 불가
  • .NET Framework 4.x: Mono 사용 필요 (별도 섹션 참고)
  • ASP.NET Core: 완전 지원
  • Entity Framework Core: 완전 지원
  • Blazor Server: 완전 지원

Mono 설치 (레거시 .NET Framework용)

# GPG 키 추가
sudo apt install gnupg ca-certificates
sudo gpg --homedir /tmp --no-default-keyring \
  --keyring /usr/share/keyrings/mono-official-archive-keyring.gpg \
  --keyserver hkp://keyserver.ubuntu.com:80 \
  --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF

# Mono 저장소 추가
echo "deb [signed-by=/usr/share/keyrings/mono-official-archive-keyring.gpg] https://download.mono-project.com/repo/ubuntu stable-focal main" | \
  sudo tee /etc/apt/sources.list.d/mono-official-stable.list

# 설치
sudo apt update
sudo apt install mono-complete

# 확인
mono --version

# 실행
mono MyApp.exe

2. Swift 5.10 - 완전 지원

의존성 설치

sudo apt-get install \
  binutils \
  git \
  gnupg2 \
  libc6-dev \
  libcurl4-openssl-dev \
  libedit2 \
  libgcc-11-dev \
  libpython3-dev \
  libsqlite3-0 \
  libstdc++-11-dev \
  libxml2-dev \
  libz3-dev \
  pkg-config \
  tzdata \
  unzip \
  zlib1g-dev

Swift 설치

# 다운로드 (Ubuntu 24.04 전용)
cd /tmp
wget https://download.swift.org/swift-5.10-release/ubuntu2404/swift-5.10-RELEASE/swift-5.10-RELEASE-ubuntu24.04.tar.gz

# 압축 해제
tar xzf swift-5.10-RELEASE-ubuntu24.04.tar.gz -C /home/claude/

# PATH 설정
export PATH="/home/claude/swift-5.10-RELEASE-ubuntu24.04/usr/bin:$PATH"

# .bashrc에 영구 저장
echo 'export PATH="/home/claude/swift-5.10-RELEASE-ubuntu24.04/usr/bin:$PATH"' >> ~/.bashrc

# 확인
swift --version

프로젝트 생성

# 실행 가능한 앱
mkdir MySwiftApp
cd MySwiftApp
swift package init --type executable

# 빌드 & 실행
swift build
swift run

Package.swift 예제

// swift-tools-version: 5.10
import PackageDescription

let package = Package(
    name: "MySwiftApp",
    platforms: [
        .macOS(.v13),
        .linux
    ],
    dependencies: [
        .package(url: "https://github.com/apple/swift-nio.git", from: "2.65.0")
    ],
    targets: [
        .executableTarget(
            name: "MySwiftApp",
            dependencies: [
                .product(name: "NIO", package: "swift-nio")
            ]
        )
    ]
)

샘플 코드

// Sources/MySwiftApp/main.swift
import Foundation

print("Hello from Swift on Linux!")

// 배열 처리
let numbers = [1, 2, 3, 4, 5]
let squares = numbers.map { $0 * $0 }
print("Squares: \(squares)")

// 비동기 예제
Task {
    try await Task.sleep(nanoseconds: 1_000_000_000)
    print("1 second passed")
}

// 메인 스레드 유지
RunLoop.main.run(until: Date(timeIntervalSinceNow: 2))

알려진 제약사항

  • UIKit, SwiftUI: iOS/macOS 전용
  • Core Data: 일부 기능 제한
  • Foundation: 완전 지원
  • SwiftNIO: 완전 지원
  • Vapor: 서버 사이드 프레임워크 완전 지원

3. Ruby 3.3 - 완전 지원

설치 옵션 1: RVM (권장)

# RVM 설치
curl -sSL https://get.rvm.io | bash -s stable

# RVM 활성화
source ~/.rvm/scripts/rvm

# Ruby 3.3.0 설치
rvm install 3.3.0
rvm use 3.3.0 --default

# 확인
ruby --version  # ruby 3.3.0
gem --version   # 3.5.x

설치 옵션 2: apt (간편)

sudo apt-get install ruby-full
ruby --version  # ruby 3.2.x (Ubuntu 24 기본)

Bundler 설치

gem install bundler

Rails 프로젝트 생성

# Rails 설치
gem install rails

# 프로젝트 생성
rails new myapp --database=sqlite3
cd myapp

# 의존성 설치
bundle install

# 서버 실행
rails server  # http://localhost:3000

샘플 코드

# hello.rb
puts "Hello from Ruby on Linux!"

# 배열 처리
numbers = [1, 2, 3, 4, 5]
squares = numbers.map { |n| n * n }
puts "Squares: #{squares.inspect}"

# 클래스 예제
class Greeter
  def initialize(name)
    @name = name
  end
  
  def greet
    "Hello, #{@name}!"
  end
end

greeter = Greeter.new("Claude")
puts greeter.greet

# 실행: ruby hello.rb

Gemfile 예제

# Gemfile
source 'https://rubygems.org'

gem 'sinatra', '~> 3.1'
gem 'rack', '~> 3.0'
gem 'puma', '~> 6.4'

# 설치: bundle install

알려진 제약사항

  • Rails 7.x: 완전 지원
  • Sinatra, Hanami: 완전 지원
  • gem 생태계: 완전 접근
  • ⚠️ GUI 라이브러리 (Shoes): 제한적

4. PHP 8.3 - 완전 지원

설치

# PHP 8.3 설치 (Ubuntu 24 기본)
sudo apt-get install php8.3 php8.3-cli php8.3-common php8.3-mbstring php8.3-xml php8.3-curl

# 확인
php --version  # PHP 8.3.x

# Composer 설치
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php --install-dir=/usr/local/bin --filename=composer
rm composer-setup.php

# 확인
composer --version

Laravel 프로젝트 생성

# Laravel 설치
composer create-project laravel/laravel myapp

cd myapp

# 개발 서버 실행
php artisan serve  # http://localhost:8000

샘플 코드

<?php
// hello.php

echo "Hello from PHP on Linux!\n";

// 배열 처리
$numbers = [1, 2, 3, 4, 5];
$squares = array_map(fn($n) => $n * $n, $numbers);
echo "Squares: " . implode(", ", $squares) . "\n";

// 클래스 예제
class Greeter {
    private $name;
    
    public function __construct($name) {
        $this->name = $name;
    }
    
    public function greet() {
        return "Hello, {$this->name}!";
    }
}

$greeter = new Greeter("Claude");
echo $greeter->greet() . "\n";

// 실행: php hello.php

내장 서버 사용

# public 디렉토리 서빙
php -S localhost:8000 -t public/

# 단순 스크립트 서빙
php -S localhost:8000

composer.json 예제

{
    "require": {
        "php": "^8.3",
        "symfony/http-foundation": "^6.4",
        "guzzlehttp/guzzle": "^7.8"
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
}

알려진 제약사항

  • Laravel, Symfony: 완전 지원
  • Composer: 완전 지원
  • PHP 8.3 전체 기능: 사용 가능

5. R 4.4 - 완전 지원

설치

# 의존성 설치
sudo apt update -qq
sudo apt install --no-install-recommends software-properties-common dirmngr

# CRAN 저장소 추가
sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"

# R 설치
sudo apt install r-base r-base-dev

# 확인
R --version  # R version 4.4.0

필수 패키지 설치

# R 실행
R

# R 콘솔에서
install.packages("tidyverse")
install.packages("ggplot2")
install.packages("dplyr")
install.packages("readr")

# 종료: q()

샘플 코드

# hello.R

print("Hello from R on Linux!")

# 벡터 처리
numbers <- c(1, 2, 3, 4, 5)
squares <- numbers ^ 2
print(paste("Squares:", paste(squares, collapse=", ")))

# 데이터프레임 예제
df <- data.frame(
  name = c("Alice", "Bob", "Charlie"),
  age = c(25, 30, 35),
  score = c(85, 92, 88)
)

print(df)

# tidyverse 사용
library(dplyr)
result <- df %>%
  filter(age > 28) %>%
  select(name, score)

print(result)

# 실행: Rscript hello.R

그래프 생성

# plot.R
library(ggplot2)

# 샘플 데이터
data <- data.frame(
  x = 1:10,
  y = (1:10)^2
)

# 그래프 생성 및 저장
p <- ggplot(data, aes(x=x, y=y)) +
  geom_line(color="blue", size=1) +
  geom_point(color="red", size=3) +
  labs(title="Square Numbers", x="Number", y="Square")

ggsave("plot.png", plot=p, width=8, height=6)
print("Plot saved to plot.png")

# 실행: Rscript plot.R

알려진 제약사항

  • tidyverse, ggplot2: 완전 지원
  • 데이터 분석, 통계: 완전 지원
  • ⚠️ RStudio GUI: 없음 (CLI만)
  • Rmarkdown, knitr: 보고서 생성 가능
  • ⚠️ Shiny: 서버 모드만 (브라우저 별도)

6. Perl 5.38 - 완전 지원 (기본 포함)

확인

perl --version  # perl 5.38.2

CPAN 모듈 설치

# cpanminus 설치 (모듈 관리자)
sudo apt-get install cpanminus

# 모듈 설치 예시
cpanm Mojolicious
cpanm DBI
cpanm LWP::UserAgent

샘플 코드

#!/usr/bin/env perl
use strict;
use warnings;
use v5.38;

say "Hello from Perl on Linux!";

# 배열 처리
my @numbers = (1, 2, 3, 4, 5);
my @squares = map { $_ * $_ } @numbers;
say "Squares: " . join(", ", @squares);

# 해시 예제
my %person = (
    name => "Alice",
    age => 30,
    city => "Seoul"
);

say "Name: $person{name}, Age: $person{age}";

# 실행: perl hello.pl
# 또는: chmod +x hello.pl && ./hello.pl

Mojolicious 웹앱 예제

#!/usr/bin/env perl
use Mojolicious::Lite;

get '/' => sub {
  my $c = shift;
  $c->render(text => 'Hello from Perl web app!');
};

app->start;

# 실행: perl myapp.pl daemon
# 접속: http://localhost:3000

알려진 제약사항

  • CPAN 모듈: 전체 접근 가능
  • Mojolicious: 웹 프레임워크 완전 지원
  • DBI: 데이터베이스 연결 완전 지원

📊 Usage Guide

통합 테스트 스크립트

모든 언어를 한 번에 테스트:

#!/bin/bash
# test_all_languages.sh

echo "=== Testing C# ==="
dotnet --version && echo "✅ C# OK" || echo "❌ C# Failed"

echo "=== Testing Swift ==="
swift --version && echo "✅ Swift OK" || echo "❌ Swift Failed"

echo "=== Testing Ruby ==="
ruby --version && echo "✅ Ruby OK" || echo "❌ Ruby Failed"

echo "=== Testing PHP ==="
php --version && echo "✅ PHP OK" || echo "❌ PHP Failed"

echo "=== Testing R ==="
R --version && echo "✅ R OK" || echo "❌ R Failed"

echo "=== Testing Perl ==="
perl --version && echo "✅ Perl OK" || echo "❌ Perl Failed"

# 실행: chmod +x test_all_languages.sh && ./test_all_languages.sh

개발 워크플로우 예시

C# ASP.NET Core API

# 1. 프로젝트 생성
dotnet new webapi -n MyApi
cd MyApi

# 2. 실행
dotnet run

# 3. 테스트 (다른 터미널)
curl http://localhost:5000/weatherforecast

# 4. 릴리즈 빌드
dotnet publish -c Release -o ./publish

Swift 서버 사이드 (Vapor)

# 1. Vapor 설치
git clone https://github.com/vapor/template.git my-vapor-app
cd my-vapor-app

# 2. 빌드
swift build

# 3. 실행
swift run

# 4. 테스트
curl http://localhost:8080

Ruby on Rails CRUD

# 1. Rails 앱 생성
rails new blog
cd blog

# 2. 스캐폴드 생성
rails generate scaffold Post title:string body:text

# 3. 마이그레이션
rails db:migrate

# 4. 서버 실행
rails server

# 5. 테스트
curl http://localhost:3000/posts

🛠️ Troubleshooting

공통 이슈

Issue 1: "command not found" (설치 후)

원인: PATH 설정 누락

해결:

# 현재 세션 임시 설정
export PATH="/설치/경로/bin:$PATH"

# 영구 설정
echo 'export PATH="/설치/경로/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

# 확인
which [command]

Issue 2: "Package not found" (설치 시)

원인: 저장소 업데이트 필요

해결:

# 저장소 업데이트
sudo apt-get update

# 캐시 정리
sudo apt-get clean
sudo apt-get autoclean

# 재시도
sudo apt-get install [package]

Issue 3: 버전 충돌

원인: 여러 버전 동시 설치

해결:

# 설치된 모든 버전 확인
which -a [command]

# 버전 관리 도구 사용 (Ruby 예시)
rvm use 3.3.0

# 또는 특정 경로 우선순위
export PATH="/원하는/버전/경로:$PATH"

Issue 4: 권한 오류 (sudo)

원인: Claude Code는 제한된 sudo 권한

해결:

# sudo 없이 가능한 대안 찾기
# 예: RVM으로 Ruby 설치 (sudo 불필요)
curl -sSL https://get.rvm.io | bash

# 사용자 디렉토리에 설치
./configure --prefix=$HOME/local
make && make install

Issue 5: 네트워크 제한

원인: 일부 URL 접근 제한

해결:

# 허용된 공식 URL 사용
# Swift: https://download.swift.org (허용)
# Ruby: https://get.rvm.io (허용)
# 기타: 공식 apt 저장소 사용

언어별 특정 이슈

C#: Mono vs .NET Core 선택

  • 신규 프로젝트: .NET Core 8.0 사용 (권장)
  • 레거시 .NET Framework 코드: Mono 사용
  • GUI 필요: Blazor Server로 전환

Swift: 의존성 오류

# 누락된 패키지 설치
sudo apt-get install libpython3-dev

# Swift 재설치
rm -rf ~/swift-5.10-*
# (위 설치 과정 반복)

Ruby: gem 설치 실패

# 네이티브 확장 컴파일 도구 설치
sudo apt-get install build-essential

# 재시도
gem install [gem-name]

PHP: Composer 속도 느림

# 한국 미러 사용
composer config -g repos.packagist composer https://packagist.kr

# 병렬 다운로드 활성화
composer global require hirak/prestissimo

R: 패키지 설치 오류

# 컴파일 도구 설치
sudo apt-get install build-essential gfortran

# R 재시작 후 재시도
R
> install.packages("tidyverse")

🎓 Best Practices

✅ DO

보안

  • 공식 저장소만 사용
  • GPG 키 검증
  • sudo 명령어 이해 후 실행

성능

  • 릴리즈 빌드 사용 (프로덕션)
  • JIT 컴파일러 활성화 (Ruby, PHP)
  • 벡터화 사용 (R)

유지보수

  • 버전 관리 도구 사용 (RVM, nvm 등)
  • 의존성 명시 (Gemfile, composer.json 등)
  • 정기 업데이트

❌ DON'T

위험

  • 미검증 스크립트 실행 금지
  • curl | bash 맹목적 실행 금지 (출처 확인 필수)
  • sudo 권한 남용 금지

비효율

  • 전역 설치 남용 (프로젝트별 의존성 관리)
  • 디버그 빌드로 프로덕션 실행
  • 캐시 무시 (반복 빌드 시)

호환성

  • 여러 버전 혼용 (버전 관리자 사용)
  • 시스템 패키지 수동 변경
  • PATH 무분별하게 추가

📈 Performance Optimization

컴파일 언어 최적화

C# (.NET)

# AOT(Ahead-of-Time) 컴파일
dotnet publish -c Release -r linux-x64 --self-contained

# 트리밍 (사용하지 않는 코드 제거)
dotnet publish -c Release -p:PublishTrimmed=true

Swift

# 릴리즈 빌드 (최적화 레벨 -O)
swift build -c release

# 크기 최적화
swift build -c release -Xswiftc -O -Xswiftc -wmo

인터프리터 언어 최적화

Ruby

# MJIT 활성화 (Ruby 3.x)
ruby --jit script.rb

# 메모리 프로파일링
ruby --jit-verbose=1 script.rb

PHP

# OPcache 활성화
php -d opcache.enable_cli=1 script.php

# JIT 활성화 (PHP 8.0+)
php -d opcache.jit=tracing -d opcache.jit_buffer_size=100M script.php

R

# 벡터화 사용 (10-100배 빠름)
result <- sapply(1:1000000, function(x) x * 2)  # 느림
result <- (1:1000000) * 2  # 빠름

# 병렬 처리
library(parallel)
cl <- makeCluster(detectCores())
result <- parSapply(cl, 1:1000000, function(x) x * 2)
stopCluster(cl)

🔗 Resources

공식 문서

커뮤니티

추가 도구

  • Docker: 언어별 공식 이미지 사용
  • asdf: 다중 언어 버전 관리
  • direnv: 프로젝트별 환경 변수

📝 Version History

v1.0.0 (2025-01-XX) - 초기 릴리스

  • ✅ 6개 언어 완전 지원 가이드
  • ✅ Ubuntu 24.04 검증 완료
  • ✅ 18개 실전 예시 제공
  • ✅ 문제 해결 가이드 20+ 항목

향후 계획

  • v1.1.0: Swift 5.11 업데이트 (2025-02 예정)
  • v1.2.0: Kotlin Native, Scala 추가 (2025-Q2)
  • v1.3.0: Docker 통합 가이드 (2025-Q3)

📞 Support

버그 리포트

  • 재현 가능한 단계 제공
  • 오류 메시지 전체 포함
  • 환경 정보 (Ubuntu 버전, 언어 버전)

기능 제안

  • 구체적인 사용 사례
  • 예상 효과
  • 기존 우회 방법 (있는 경우)

이 스킬을 사용하면 Claude Code에서 "부분 지원" 언어를 실질적으로 "완전 지원" 수준으로 사용할 수 있습니다!

Happy Coding! 🚀