# Skill Optimizer

> 직전 세션의 실행 흐름을 분석하여 병목, 중복 호출, 에러 재시도 등 비효율 패턴을 찾고 구체적인 최적화 방안을 제안합니다. /skill-optimizer 로 실행.

- Skill: `rollrat/skill-optimizer` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add rollrat/skill-optimizer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rollrat/skill-optimizer/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: rollrat (https://skillmd.com/u/rollrat)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/rollrat/skill-optimizer

---


# Skill Optimizer — 세션 복기 & 최적화 제안

## Overview

현재 대화 기록을 분석하여:
1. 각 단계의 실행 흐름과 소요 시간을 재구성
2. 비효율 패턴(에러 재시도, 중복 호출, 직렬→병렬화 가능 등)을 탐지
3. Before/After 예시와 함께 구체적인 개선안을 제안
4. 관련 스킬 파일이 있다면 수정 포인트까지 제안

스킬/워크플로우 종류를 불문하고 범용적으로 사용할 수 있다.

## Usage

```
/skill-optimizer
```

인자 없음. 현재 대화 기록 전체를 분석 대상으로 한다.

## Critical Rules

### 날짜 처리 (필수)
- 현재 날짜/시간은 반드시 Bash 커맨드로 얻는다. 절대 추론하거나 추정하지 않는다.

### 출력 언어
- 분석 결과는 항상 한국어로 작성한다.

### 시간 추정 원칙
- 실측값이 있으면 실측값을 우선한다 (tool output의 duration, 타이머 결과 등).
- 실측값이 없으면 추정임을 명시한다: `~Xs (추정)`.
- 추정 근거를 간략히 표시한다 (예: "yt-dlp 네트워크 호출 평균", "LLM 토큰 생성 속도").

### 분석 범위
- 현재 대화에서 실제로 실행된 tool call만 분석한다.
- 사용자의 질문/답변은 분석 대상이 아니다.

## 탐지할 비효율 패턴

아래 패턴을 대화 기록에서 탐색한다. 해당 없는 패턴은 생략한다.

| 패턴 | 탐지 기준 | 예시 |
|------|----------|------|
| **에러 재시도** | 동일/유사 tool call이 실패 후 재실행 | 경로 오류로 Python 스크립트 3회 실행 |
| **중복 외부 호출** | 같은 URL/API에 2회 이상 요청 | yt-dlp를 메타데이터·자막 따로 호출 |
| **직렬→병렬화 가능** | 독립적 작업이 순차 실행됨 | 날짜 확인 + yt-dlp 버전 확인 순차 실행 |
| **불필요한 파일 I/O** | 메모리에서 처리 가능한 데이터를 파일로 중계 | 변수 → 파일 저장 → Read 도구로 재읽기 |
| **서브에이전트 오버헤드** | Task agent 실행 시간 중 실제 작업 비중이 낮음 | agent 초기화 3s + 파일 읽기 1s + 생성 55s |
| **불필요한 block 대기** | background agent인데 어차피 결과를 기다림 | run_in_background=true 후 즉시 TaskOutput block=true |
| **인코딩/경로 오류** | Windows 환경 특유의 cp949·경로 문제로 재시도 | /c/Users/... vs C:/Users/... |
| **과도한 중간 파일** | tmp 파일이 여러 단계에 걸쳐 생성되고 순차 전달됨 | script → file → read → agent → file → read |
| **skill.md 인라인 코드 과다** | skill.md에 실행 가능한 코드 블록이 대량 포함됨 | 50줄 이상 Python이 skill.md에 인라인으로 존재 |

## Workflow

### 1. 타임라인 재구성

대화 기록의 tool call을 순서대로 나열하고, 각 단계에 소요 시간을 붙인다.

출력 형식:
```
### 단계별 타임라인

| # | 단계 | 도구 | 소요 시간 | 비고 |
|---|------|------|----------|------|
| 1 | 날짜 확인 | Bash | ~0.1s | |
| 2 | yt-dlp 메타데이터 | Bash(Python) | ~3s | |
| 3 | yt-dlp 자막 | Bash(Python) | ~3s | 중복 → 통합 가능 |
| 4 | 요약 에이전트 | Task(background) | 62s (실측) | 전체의 80% |
| ... | | | | |
| | **합계** | | **~Xs** | |
```

### 2. 비효율 패턴 분류

탐지된 패턴을 영향도 순(시간 절약 큰 것부터)으로 나열한다.

각 패턴마다:
- **무엇이 문제인가** (1~2문장)
- **얼마나 낭비됐나** (시간/호출 횟수)
- **Before/After 코드 또는 플로우**

출력 형식:
```
### 발견된 비효율 패턴

#### 🔴 1. [패턴명] — 절약 가능: ~Xs

**문제**: ...
**낭비**: 약 Xs, N회 불필요 호출

Before:
  step A (Xs) → step B (Xs) = 합계 Xs

After:
  step A+B 통합 (Xs) = 합계 Xs

---

#### 🟡 2. [패턴명] — 절약 가능: ~Xs
...
```

영향도 기호:
- 🔴 큰 영향 (전체의 20% 이상 또는 10초 이상)
- 🟡 중간 영향 (5~10초 또는 재시도 1~2회)
- 🟢 작은 영향 (5초 미만, 코드 품질/안정성 개선)

### 3. 최적화 요약

```
### 최적화 요약

- 현재 총 소요 시간: ~Xs
- 최적화 후 예상: ~Xs
- 단축 가능: ~Xs (~X%)

핵심 개선 포인트:
1. ...
2. ...
```

### 4. 스킬 파일 수정 제안 (해당 시)

세션에서 스킬이 사용된 경우, 스킬 파일에 반영할 구체적 수정안을 제시한다.

```
### 스킬 업데이트 제안: {skill-name}

파일: ~/.claude/skills/{skill-name}/skill.md

**수정 1**: {섹션명}
- 현재: `...`
- 변경: `...`
- 이유: ...

**수정 2**: ...
```

### 5. 스킬 구조 최적화 제안 (해당 시)

세션에서 사용된 스킬의 skill.md에 실행 가능한 코드 블록이 대량 포함된 경우, 스크립트 분리를 제안한다.

**탐지 기준**: skill.md 내 코드 블록 합계가 50줄 이상이거나, 동일 스크립트가 세션마다 반복 출력됨.

**왜 문제인가:**
- skill.md는 스킬이 로드될 때마다 컨텍스트에 전부 올라온다.
- 인라인 코드가 많을수록 매 세션 시작 시 토큰 낭비가 발생한다.
- 코드 수정 시 skill.md 안에서 찾아야 하므로 유지보수도 불편하다.

**개선 방향: 스크립트를 별도 파일로 분리**

```
Before (skill.md 인라인):
  ~/.claude/skills/my-skill/
    skill.md   ← Python 100줄 포함

After (분리):
  ~/.claude/skills/my-skill/
    skill.md          ← 경로 참조 한 줄만
    scripts/
      download.py     ← yt-dlp 호출 + 자막 파싱
      parse.py        ← 텍스트 변환
```

skill.md에는 아래처럼만 남긴다:
```markdown
### 2. 메타데이터 + 자막 다운로드

아래 스크립트를 실행한다:
\```bash
python ~/.claude/skills/my-skill/scripts/download.py {vid} {lang} {tmp_dir}
\```
stdout: meta JSON / 자막 json3 → tmp_dir 저장
```

**트레이드오프 명시**: 스크립트 분리 시 디버깅이 필요한 경우 Claude가 Read로 파일을 별도 로드해야 하므로, 자주 수정되는 스크립트라면 인라인 유지가 나을 수 있다. 안정적으로 동작하는 스크립트에만 분리를 권장한다.

출력 형식:
```
### 스킬 구조 최적화 제안: {skill-name}

현재 skill.md 코드 블록: 약 N줄
분리 권장 대상:
  - scripts/download.py  (현재 Workflow 2~3 섹션, 약 N줄)
  - scripts/parse.py     (현재 Workflow 4 섹션, 약 N줄)

분리 후 skill.md 절약: 약 N줄 → 토큰 N개
```

## 인자 없이 실행 시 동작

**동일하게 동작한다.** 인자가 없어도 현재 대화 기록을 분석 대상으로 삼는다.

단, 대화 기록에 tool call이 없으면:
```
분석할 실행 기록이 없습니다.
이 스킬은 tool call이 포함된 세션에서 사용해주세요.
```

## Error Handling

- **실측 시간 없음**: 모든 시간을 추정으로 표시하고 추정 근거 명시.
- **tool call이 적음 (3개 미만)**: "분석할 단계가 충분하지 않습니다"와 함께 있는 내용만 분석.
- **패턴 미탐지**: "이 세션에서 명확한 비효율 패턴은 발견되지 않았습니다"로 종료.

