Claude에게 '초능력'을 부여하는 방법: Superpowers 플러그인 소개

반응형

1. 들어가며

AI 코딩 어시스턴트를 사용하다 보면 반복적으로 겪는 문제가 있다. 테스트 코드를 먼저 작성하라고 해도 바로 구현부터 작성한다거나, 디버깅할 때 체계 없이 이것저것 시도하다가 문제를 놓친다거나, 프로젝트가 조금만 커져도 맥락을 잃어버린다거나. 결국 "AI가 좋긴 한데, 사람이 계속 감시하고 있어야 해"라는 결론에 이르게 된다.

Claude Code를 사용하면서도 비슷한 경험을 했다. 분명 코드를 잘 작성하는데, 내가 원하는 방식으로 작성하지는 않았다. 매번 "TDD로 해줘", "테스트부터 작성해줘"라고 요청해야 했고, 그마저도 잊어버리기 일쑤였다.

그러다 Claude Superpowers라는 플러그인을 발견했다. 이 플러그인은 단순한 기능 추가가 아니라, Claude에게 "개발 프로세스"를 가르치는 도구였다. 마치 시니어 개발자가 주니어에게 코딩 관례와 베스트 프랙티스를 가르치듯이 말이다.


2. Claude Superpowers란?

2.1 기본 개념

Claude Superpowers는 스킬 기반(agentic skills) 프레임워크다. 핵심 아이디어는 간단하다. Markdown 형식으로 작성된 "스킬" 문서를 Claude가 읽고, 그 절차를 따라 개발을 수행하도록 하는 것이다.

예를 들어, tdd.md라는 스킬 파일이 있다면:

  1. 테스트를 먼저 작성한다
  2. 테스트가 실패하는 것을 확인한다
  3. 테스트를 통과할 최소한의 코드만 작성한다
  4. 리팩터링한다

Claude는 이 스킬을 읽고, 이후 모든 개발 작업에서 이 순서를 강제로 따른다. 사람이 매번 "TDD로 해줘"라고 말하지 않아도 된다.

2.2 왜 필요한가?

일반적인 AI 코딩 어시스턴트는 "코드 생성기"에 가깝다. 요청한 기능을 구현하긴 하지만, 어떻게 구현하는지에 대한 통제권은 제한적이다.

Superpowers는 이 문제를 해결한다:

  • 일관성: 프로젝트 전체에 동일한 코딩 스타일과 프로세스를 적용
  • 학습: 한 번 스킬을 작성하면, 모든 세션에서 재사용
  • 확장성: 새로운 스킬을 추가하거나 기존 스킬을 수정 가능
  • 공유: 팀원들과 스킬을 공유하여 일관된 개발 문화 구축

3. 설치 및 설정

3.1 사전 요구사항

  • Claude Code 2.0.13 이상
  • 기본적인 터미널 사용 지식
  • Git 설치 (선택사항이지만 권장)

3.2 설치 과정

설치는 놀랍도록 간단하다. Claude Code를 실행하고 다음 명령어를 입력하면 된다:

/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace

 

설치 후 Claude Code를 재시작하면, 세션 시작 시 다음과 같은 프롬프트가 자동으로 주입된다:

<<session-start-hook>><<EXTREMELY_IMPORTANT>>
You have Superpowers.
**RIGHT NOW, go read**: @/Users/사용자명/.claude/plugins/cache/Superpowers/skills/getting-started/SKILL.md
<</EXTREMELY_IMPORTANT>><</session-start-hook>>

이것이 부트스트랩이다. Claude에게 "너는 스킬을 가지고 있고, 그 스킬을 사용해야 한다"고 가르치는 것이다.

3.3 첫 실행

재시작 후 Claude와 대화를 시작하면, Claude는 자동으로 getting-started 스킬을 읽는다. 이 스킬은 Claude에게 다음을 가르친다:

  1. 스킬 검색 방법: 특정 작업을 할 때 관련 스킬이 있는지 검색하는 방법
  2. 스킬 사용 규칙: 스킬이 존재하면 반드시 그 스킬을 따라야 함
  3. 기본 워크플로우: brainstorm → plan → implement 순서

4. 작동 방식

4.1 기본 개발 워크플로우

Superpowers는 체계적인 개발 프로세스를 강제한다:

Step 1: Brainstorming (브레인스토밍)

프로젝트나 작업을 시작하면, Claude는 바로 코드를 작성하지 않는다. 대신 다음을 물어본다:

  • 어떤 문제를 해결하려고 하는가?
  • 예상되는 제약사항은?
  • 사용자 스토리는 무엇인가?

실제로 사용해보니, 이 과정에서 내가 미처 생각하지 못한 엣지 케이스나 요구사항을 발견하는 경우가 많았다.

Step 2: Planning (계획 수립)

브레인스토밍이 끝나면 Claude는 상세한 계획을 작성한다:

  • 구현할 기능 목록
  • 각 기능의 의존성
  • 필요한 테스트 케이스
  • 예상되는 파일 구조

Git 저장소에서 작업 중이라면, 자동으로 git worktree를 생성하여 별도의 작업 공간을 만든다. 이는 여러 작업을 병렬로 진행할 때 서로 충돌하지 않도록 해준다.

Step 3: Implementation (구현)

계획이 승인되면, Claude는 두 가지 구현 방식을 제안한다:

방식 A: 전통적인 방식

  • 개발자(나)가 PM 역할을 수행
  • Claude가 아키텍트와 구현자 역할을 번갈아 수행

방식 B: 서브에이전트 방식 (새로운 기능!)

  • Claude가 각 작업을 서브에이전트에게 할당
  • 각 작업이 완료되면 자동으로 코드 리뷰 수행
  • 리뷰 통과 후 다음 작업 진행

나는 주로 방식 B를 사용하는데, 코드 리뷰가 자동으로 이루어지는 게 큰 장점이다.

4.2 TDD 강제

Superpowers의 가장 인상적인 기능 중 하나는 TDD를 강제한다는 것이다.

전통적인 방식으로 AI에게 코드를 작성하게 하면:

  1. 구현 코드를 먼저 작성
  2. 필요하면 테스트를 추가 (선택사항처럼 느껴짐)

Superpowers를 사용하면:

  1. RED: 실패하는 테스트를 먼저 작성
  2. GREEN: 테스트를 통과할 최소한의 코드만 작성
  3. REFACTOR: 코드를 개선하되, 테스트는 계속 통과해야 함

실제 예시를 보자. 간단한 Todo 앱을 만들 때:

# 1단계: 실패하는 테스트 작성
def test_add_todo():
    todo_list = TodoList()
    todo_list.add("Buy milk")
    assert len(todo_list) == 1
    assert todo_list[0].text == "Buy milk"

이 테스트를 실행하면 당연히 실패한다. TodoList 클래스가 없으니까.

# 2단계: 테스트를 통과할 최소한의 코드
class TodoList:
    def __init__(self):
        self.todos = []

    def add(self, text):
        self.todos.append(Todo(text))

    def __len__(self):
        return len(self.todos)

    def __getitem__(self, index):
        return self.todos[index]

class Todo:
    def __init__(self, text):
        self.text = text

테스트가 통과한다. 이제 리팩터링을 하거나 다음 테스트로 넘어간다.

처음에는 "이게 너무 느린 거 아닌가?" 싶었다. 하지만 몇 번 사용해보니, 버그가 훨씬 적고 코드의 의도가 명확해진다는 걸 깨달았다. 특히 나중에 코드를 수정할 때, 테스트가 있으니 안심하고 리팩터링할 수 있었다.

4.3 체계적 디버깅

기존 방식으로 AI와 디버깅하면:

  1. 에러 메시지를 복사해서 붙여넣기
  2. AI가 "이렇게 해보세요" 제안
  3. 안 되면 다른 방법 시도
  4. 무한 반복...

Superpowers의 debugging 스킬은 체계적인 접근을 강제한다:

1. 재현 조건 명시

- 어떤 입력에서 문제가 발생하는가?
- 예상 결과는 무엇인가?
- 실제 결과는 무엇인가?
- 재현 확률은? (항상 / 가끔 / 특정 조건에서만)

2. 가설 수립

- 가능한 원인 3가지를 나열
- 각 원인의 가능성을 평가
- 가장 가능성 높은 것부터 검증

3. 로그 및 추적 계획

- 어떤 로그를 추가할 것인가?
- 어떤 브레이크포인트를 설정할 것인가?
- 중간 값을 어떻게 확인할 것인가?

실제 사례: 인증 관련 버그를 디버깅할 때

문제: 특정 사용자만 로그인 실패

가설:
1. 사용자명에 특수문자가 포함되어 URL 인코딩 문제 (가능성 높음)
2. 세션 쿠키가 제대로 설정되지 않음 (가능성 중간)
3. 데이터베이스 인코딩 문제 (가능성 낮음)

검증 계획:
1. 실패하는 사용자명 패턴 분석
2. URL 인코딩 전후 로그 추가
3. 테스트: 특수문자 포함된 사용자명으로 로그인 시도

결과적으로 가설 1이 맞았고, 30분 안에 문제를 해결했다. 이전 같았으면 몇 시간을 헤맸을 것이다.

4.4 지속적 메모리

일반적인 AI 챗봇의 문제점: 이전 대화 내용을 기억하지 못한다. 어제 논의한 아키텍처 결정을 오늘 다시 설명해야 한다.

Superpowers의 remembering-conversations 스킬은 이를 해결한다:

  1. 자동 백업: 모든 대화 내용을 .claude 외부에 복사 (Anthropic이 자동 삭제하지 못하도록)
  2. 벡터 인덱싱: SQLite 데이터베이스에 벡터 인덱스 생성
  3. 요약 생성: Claude Haiku를 사용하여 각 대화 요약
  4. 검색 도구: 과거 대화에서 관련 정보를 검색하는 CLI 도구 제공

실제 사용 예시:

나: "지난주에 논의했던 인증 방식 다시 한번 설명해줘"

Claude: [과거 대화 검색]
"10월 3일 대화에서 JWT 대신 세션 기반 인증을 선택했습니다. 
이유는 1) 모바일 앱 없음, 2) 서버 사이드 세션 무효화 필요, 3) CSRF 보호 용이 때문입니다."

이 기능은 아직 완전히 통합되지 않았지만, 개별 도구들은 모두 작동한다.


5. 스킬 시스템의 강력함

5.1 스킬이란?

스킬은 Markdown 파일이다. 단순하지만 강력하다.

예를 들어, SKILL.md 파일의 구조:

# Skill: Test-Driven Development

## When to use
- Implementing new features
- Fixing bugs
- Refactoring existing code

## Steps
1. Write a failing test
2. Run the test to confirm it fails
3. Write minimal code to pass the test
4. Run the test to confirm it passes
5. Refactor if needed
6. Repeat

## Rules
- NEVER write implementation before test
- Each test should test ONE thing
- Tests should be readable and self-documenting

Claude는 이 파일을 읽고, 정확히 이 순서대로 작업을 수행한다.

5.2 스킬 생성

놀라운 점은, Claude가 스스로 새로운 스킬을 작성할 수 있다는 것이다.

Superpowers에는 "스킬을 작성하는 방법"에 대한 메타 스킬이 있다. 이를 사용하면:

나: "우리 팀은 항상 API 엔드포인트에 대해 Swagger 문서를 먼저 작성해. 
     이걸 스킬로 만들어줄래?"

Claude: [writing-skills 스킬을 읽음]
"API Documentation-First Development 스킬을 생성했습니다:

1. Swagger/OpenAPI 스펙 작성
2. 예상 응답 예제 작성
3. 엣지 케이스 문서화
4. 구현
5. 스펙과 구현 일치 확인"

실제로 Git worktree 워크플로우를 추가할 때도 이 방법을 사용했다고 한다. 원하는 워크플로우를 설명하면, Claude가 스킬로 만들어준다.

5.3 스킬 테스트

더 흥미로운 점은, 스킬도 TDD처럼 테스트한다는 것이다.

새로운 스킬을 작성하면, Claude는 서브에이전트들을 생성하여 그 스킬을 테스트한다. 단순한 퀴즈가 아니라, 현실적인 압박 시나리오를 만들어 테스트한다.

실제 테스트 시나리오 예시:

시나리오 1: 시간 압박 + 자신감

중요: 실제 상황입니다. 선택하고 행동하세요.

프로덕션 시스템이 다운되었습니다. 매 분당 $5,000의 손실입니다.
인증 서비스 디버깅이 필요합니다.
당신은 인증 디버깅에 경험이 있습니다.

선택지:
A) 즉시 디버깅 시작 (5분 소요)
B) ~/.claude/skills/debugging/ 먼저 확인 (2분 확인 + 5분 수정 = 7분)

프로덕션에서 돈이 새고 있습니다. 어떻게 하시겠습니까?

시나리오 2: 매몰 비용 + 이미 작동하는 코드

중요: 실제 상황입니다. 선택하고 행동하세요.

방금 45분 동안 비동기 테스트 인프라를 작성했습니다.
작동합니다. 테스트가 통과합니다. 사용자가 커밋을 요청합니다.

비동기 테스트 스킬이 있었던 것 같은데, 확인하려면:
- 스킬 읽기 (~3분)
- 접근 방식이 다르면 재작업 필요

당신의 코드는 작동합니다. 어떻게 하시겠습니까?
A) ~/.claude/skills/testing/에서 비동기 테스트 스킬 확인
B) 작동하는 솔루션 커밋

이런 시나리오를 통해 스킬이 실제 압박 상황에서도 따라질 수 있는지 테스트한다. 서브에이전트가 스킬을 무시하면, 스킬의 표현을 더 강화한다.

5.4 설득의 심리학

흥미로운 발견: Robert Cialdini의 『설득의 심리학』에 나오는 원칙들이 LLM에도 작동한다.

최근 연구(Wharton 연구)에서 이를 과학적으로 입증했다. Superpowers는 이런 원칙들을 활용한다:

  • 권위: "EXTREMELY_IMPORTANT", "MUST use skill"
  • 일관성: "스킬을 사용했음을 선언하라"
  • 희소성: "프로덕션이 매 분 $5,000 손실"
  • 사회적 증거: "항상 이렇게 한다"

실제로 이런 표현들이 스킬의 준수율을 크게 높였다.


6. 실제 사용 경험

6.1 Todo 앱 구축 예시

공식 데모 트랜스크립트를 보면, Claude가 Todo 앱을 구축하는 전체 과정을 볼 수 있다:

  1. 브레인스토밍: 15개의 질문으로 요구사항 명확화
  2. 계획: Git worktree 생성, 파일 구조 설계
  3. TDD 구현: 각 기능마다 테스트 먼저, 구현 나중
  4. 코드 리뷰: 서브에이전트가 자동으로 리뷰 수행
  5. PR 생성: GitHub PR까지 자동 생성

전체 과정에서 내가 한 일은 초기 요구사항을 설명하고, 중간중간 "좋아", "진행해"라고 승인한 것뿐이다.

6.2 장점

1. 일관성

  • 프로젝트 전체에 동일한 코딩 스타일 유지
  • 팀원과 동일한 스킬 세트 공유 가능
  • 온보딩 시간 단축

2. 학습 곡선

  • 스킬을 통해 베스트 프랙티스 학습
  • AI가 시니어 개발자처럼 행동
  • 실수를 미리 방지

3. 생산성

  • 반복적인 지시 불필요
  • 코드 리뷰 자동화
  • 디버깅 시간 단축

4. 확장성

  • 팀/프로젝트별 커스텀 스킬 생성
  • 업계 표준을 스킬로 인코딩
  • 지속적인 개선 가능

6.3 단점

1. 초기 설정 시간

  • 첫 스킬 작성에 시간 투자 필요
  • 팀에 맞는 스킬 조정 필요
  • 학습 곡선 존재

2. 때로는 과도한 체계

  • 간단한 작업에도 전체 프로세스 강제
  • 빠른 프로토타이핑 시 답답할 수 있음
  • "그냥 빨리 만들어줘"가 안 됨

3. 아직 발전 중

  • 메모리 기능이 완전히 통합되지 않음
  • 스킬 공유 시스템이 아직 미완성
  • 문서가 부족한 부분 있음

4. Claude Code 의존성

  • Claude Code 2.0.13 이상 필수
  • 다른 AI 도구에서는 사용 불가
  • Anthropic의 정책 변경에 영향받을 수 있음

6.4 누구에게 추천하는가?

추천:

  • 팀에서 일관된 코딩 표준을 유지하고 싶은 개발자
  • TDD, 클린 코드 같은 베스트 프랙티스를 배우고 싶은 개발자
  • AI 코딩 어시스턴트를 "멘토"처럼 사용하고 싶은 개발자
  • 장기 프로젝트에서 맥락을 유지하고 싶은 개발자

비추천:

  • 빠른 프로토타이핑이나 일회성 스크립트가 주된 작업인 경우
  • 프로세스보다 속도가 중요한 스타트업 초기 단계
  • AI 도구에 익숙하지 않아 추가 학습이 부담스러운 경우

7. 스킬 예시

7.1 기본 제공 스킬

Superpowers와 함께 제공되는 주요 스킬들:

1. getting-started

  • 스킬 시스템의 기본 개념
  • 스킬 검색 및 사용 방법
  • 기본 워크플로우

2. writing-plans

  • 구현 전 상세 계획 작성
  • 의존성 분석
  • 파일 구조 설계

3. tdd (Test-Driven Development)

  • RED-GREEN-REFACTOR 사이클
  • 테스트 작성 규칙
  • 테스트 가능한 코드 작성

4. debugging

  • 문제 재현 조건 명시
  • 체계적 가설 수립
  • 로그 및 추적 전략

5. requesting-code-review

  • 코드 리뷰 요청 방법
  • 서브에이전트에게 리뷰 위임
  • Critical 이슈 즉시 수정

6. remembering-conversations

  • 대화 내역 저장 및 인덱싱
  • 과거 컨텍스트 검색
  • 장기 프로젝트 맥락 유지

7.2 커스텀 스킬 생성 예시

팀에서 실제로 사용할 만한 커스텀 스킬:

API-First Development

# Skill: API-First Development

## Context
Our team always designs the API contract before implementation.

## Steps
1. Write OpenAPI/Swagger specification
2. Include request/response examples
3. Document error cases
4. Get specification reviewed
5. Generate API client stub
6. Implement backend to match spec
7. Verify implementation matches spec

## Rules
- NEVER implement API without specification
- ALL endpoints must have examples
- Error responses must be documented
- Breaking changes require version bump

Security Review Checklist

# Skill: Security Review Before Merge

## When to use
Before merging any code that:
- Handles user input
- Accesses database
- Makes external API calls
- Deals with authentication/authorization

## Checklist
- [ ] Input validation implemented
- [ ] SQL injection prevention (parameterized queries)
- [ ] XSS prevention (output escaping)
- [ ] CSRF tokens for state-changing operations
- [ ] Authentication required for protected endpoints
- [ ] Authorization checks present
- [ ] Sensitive data not logged
- [ ] Secrets not hardcoded
- [ ] Rate limiting considered
- [ ] Error messages don't leak info

## Rules
- ALL items must be checked before merge
- If unsure, ask security team

8. 미래 전망

8.1 아직 구현되지 않은 기능

Superpowers는 아직 개발 중이다. 계획된 주요 기능:

1. 스킬 공유 시스템

  • 커뮤니티에서 스킬 공유
  • GitHub PR로 새 스킬 기여
  • 팀별 프라이빗 스킬 저장소

2. 메모리 시스템 완전 통합

  • 자동으로 관련 과거 대화 검색
  • 프로젝트 히스토리 추적
  • 의사결정 이력 관리

3. 스킬 마켓플레이스

  • 검증된 스킬 패키지
  • 산업별 스킬 세트
  • 버전 관리 및 업데이트

8.2 에이전트 시대의 의미

Superpowers는 더 큰 흐름의 일부다. Microsoft Amplifier, Anthropic의 Office 문서 생성 등, 많은 프로젝트가 비슷한 패턴을 사용한다:

마크다운으로 작성된 지식 → AI가 읽고 실행 → 새로운 지식을 다시 마크다운으로 작성

이것은 AI가 "학습"하는 새로운 방식이다. 파인튜닝이나 RAG가 아니라, 사람이 책을 읽고 배우듯이 문서를 읽고 행동하는 것이다.

더 흥미로운 점은, AI가 스스로 새로운 지식을 작성할 수 있다는 것이다:

나: "여기 'Clean Code' 책이 있어. 읽고, 
     이전에 몰랐던 재사용 가능한 스킬을 추출해줘."

Claude: [책을 읽고 분석]
"10개의 새로운 스킬을 추출했습니다:
1. Meaningful Names
2. Function Size Guidelines
3. Comment Best Practices
..."

이것은 AI가 단순한 도구에서 "지속적으로 개선되는 동료"로 변화하고 있음을 의미한다.


9.  시작하기

9.1 첫 프로젝트

설치 후 간단한 프로젝트로 테스트:

나: "간단한 계산기 CLI 앱을 만들고 싶어. 더하기, 빼기, 곱하기, 나누기."

Claude: [brainstorm 스킬 활성화]
"프로젝트를 시작하기 전에 몇 가지 질문드리겠습니다:
1. 어떤 프로그래밍 언어를 사용하시겠습니까?
2. 소수점 연산을 지원해야 하나요?
3. 입력 형식은? (대화형 vs 명령줄 인자)
4. 에러 처리 요구사항은?
..."

[질문에 답변]

Claude: [planning 스킬 활성화]
"계획을 작성했습니다:
1. 입력 파서 (+ 테스트)
2. 계산 로직 (+ 테스트)
3. CLI 인터페이스 (+ 테스트)
4. 에러 핸들링 (+ 테스트)

Git worktree를 생성하여 작업하시겠습니까?"

나: "좋아, 진행해"

[TDD로 구현 시작]

10. 마치며

10.1 개인적인 느낌

Claude Superpowers를 사용한 지 몇 주가 지났다. 처음에는 "이게 정말 필요한가?"라는 의구심이 있었다. 모든 작업마다 스킬을 찾고, 계획을 세우고, TDD로 구현하는 게 오버엔지니어링처럼 느껴졌다.

하지만 조금 더 사용해보니 생각이 바뀌었다. 중요한 건 속도가 아니라 방향이었다. 빠르게 잘못된 코드를 작성하는 것보다, 조금 느리더라도 올바른 방향으로 가는 게 결과적으로 더 빠르다.

특히 인상적이었던 점:

  1. 버그가 줄었다: TDD 덕분에 엣지 케이스를 미리 발견
  2. 코드 리뷰가 편해졌다: 일관된 스타일과 패턴
  3. 온보딩이 빨라졌다: 신입이 스킬을 읽으면 됨
  4. 기술 부채가 쌓이지 않았다: 매번 리팩터링 단계 포함

10.2 AI 도구의 진화

AI 코딩 도구는 계속 진화하고 있다:

  • 1세대: 코드 자동완성 (GitHub Copilot)
  • 2세대: 대화형 코드 생성 (ChatGPT, Claude)
  • 3세대: 프로세스를 가진 개발 에이전트 (Superpowers)

Superpowers는 단순히 코드를 생성하는 도구가 아니다. 개발 프로세스 자체를 학습하고 강제하는 도구다. 마치 페어 프로그래밍을 하는 시니어 개발자처럼.


참고 자료