Communitygithub.com

fiftiesHousewife/Clean-Claude

Robert Martin 스타일의 코딩 스타일 피드백을 제공하고 OpenRewrite 및 정적 코드 분석 도구를 사용하여 Claude Skills을 생성하는 Gradle 플러그인입니다.

Clean-Claude란 무엇인가요?

이 스킬은 Gradle 플러그인으로, 클린 코드 원칙(특히 Robert C. Martin, 일명 'Uncle Bob'의 스타일)에 기반한 코드 리뷰 및 피드백을 자동화합니다. OpenRewrite 레시피와 정적 코드 분석 도구(예: Checkstyle, PMD, SpotBugs 등)를 통합하여 코드 품질을 평가하고 개선점을 제안합니다. 또한 분석 결과를 바탕으로 Claude AI 어시스턴트가 사용할 수 있는 맞춤형 Skills(YAML/마크다운 형식)을 자동 생성하여, 개발자가 지속적으로 클린 코드 원칙을 따를 수 있도록 도와줍니다. 주로 Java/Kotlin 프로젝트에서 사용되며, Gradle 빌드 파이프라인에 쉽게 통합되어 지속적 통합(CI) 환경에서도 활용할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add fiftiesHousewife/Clean-Claude

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

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

문서

Clean-Claude은(는) 무엇을 하나요?

Robert Martin 스타일의 코딩 스타일 피드백을 제공하고 OpenRewrite 및 정적 코드 분석 도구를 사용하여 Claude Skills을 생성하는 Gradle 플러그인입니다.

개요

이 플러그인은 Gradle 빌드 과정에서 코드를 분석하고 Robert C. Martin의 클린 코드 원칙에 따른 피드백을 제공합니다. OpenRewrite 레시피를 적용하여 코드를 자동으로 개선하고, 정적 코드 분석 결과를 바탕으로 Claude AI 어시스턴트용 Skills 파일을 생성합니다.

주요 기능

  • 코드 분석: OpenRewrite와 정적 분석 도구(Checkstyle, PMD, SpotBugs 등)를 사용하여 코드 품질 평가
  • 피드백 생성: Robert Martin 스타일의 구체적이고 실행 가능한 코드 리뷰 피드백 제공
  • Claude Skills 생성: 분석 결과를 바탕으로 Claude AI 어시스턴트가 사용할 수 있는 Skills(YAML/마크다운 형식) 자동 생성
  • 자동 개선: OpenRewrite 레시피를 적용하여 코드를 자동으로 리팩토링

사용 방법

필수 조건

  • Gradle 7.0 이상
  • Java 11 이상

설치

build.gradle 파일에 플러그인을 추가합니다:

plugins {
    id 'io.github.fiftieshousewife.clean-claude' version '0.1.0'
}

설정

build.gradle 파일에서 플러그인을 설정합니다:

cleanClaude {
    outputDir = file('build/clean-claude')
    skillName = 'my-clean-code-skill'
    includePatterns = ['**/*.java', '**/*.kt']
    excludePatterns = ['**/test/**']
}

실행

./gradlew cleanClaude
generateSkill

환경 변수

변수명설명기본값
CLEAN_CLAUDE_OUTPUT_DIR생성된 Skills 파일의 출력 디렉토리build/clean-claude
CLEAN_CLAUDE_SKILL_NAME생성될 스킬의 이름clean-code-skill

지원 도구

  • OpenRewrite (레시피 실행)
  • Checkstyle (코딩 스타일 검사)
  • PMD (잠재적 버그 감지)
  • SpotBugs (버그 패턴 분석)

예제

// Bad: 긴 메서드, 의미 없는 변수명
public List<String> getTheStuff(List<Integer> input) {
    List<String> result = new ArrayList<>();
    for (int i = 0; i < input.size(); i++) {
        if (input.get(i) % 2 == 0) {
            result.add("Even: " + input.get(i));
        }
    }
    return result;
}

// Good: 짧은 메서드, 명확한 변수명, 스트림 사용
public List<String> getEvenNumbers(List<Integer> numbers) {
    return numbers.stream()
            .filter(number -> number % 2 == 0)
            .map(number -> "Even: " + number)
            .collect(Collectors.toList());
}

라이선스

MIT License

기여

이슈 및 풀 리퀘스트는 GitHub 저장소에서 환영합니다.

관련 스킬