---
name: async-await-keyword-fixer
description: JavaScript/TypeScript 코드에서 누락된 async/await 키워드를 찾아 수정합니다. 비동기 오류, Promise 문제, await 누락 수정 요청 시 활성화됩니다.
allowed-tools: Read, Write, Edit, Glob, Grep
---

# Async/Await Keyword Fixer

JavaScript 및 TypeScript 코드에서 async/await 관련 문제를 탐지하고 수정하는 스킬입니다.

## 기능

### 탐지 대상
- **누락된 await**: Promise를 반환하는 함수 호출에 await 누락
- **불필요한 await**: 동기 함수나 non-Promise에 await 사용
- **누락된 async**: await를 사용하지만 async 선언 누락
- **Promise 체이닝 문제**: then/catch와 async/await 혼용
- **병렬 처리 최적화**: 순차 await를 Promise.all로 개선 가능한 경우

### 분석 패턴
```javascript
// ❌ 누락된 await
async function fetchData() {
    const response = fetch('/api/data'); // await 누락
    return response.json();
}

// ✅ 수정
async function fetchData() {
    const response = await fetch('/api/data');
    return response.json();
}
```

```javascript
// ❌ 누락된 async
function processData() {
    const data = await fetchData(); // async 누락
    return data;
}

// ✅ 수정
async function processData() {
    const data = await fetchData();
    return data;
}
```

```javascript
// ❌ 비효율적 순차 처리
async function loadAll() {
    const a = await fetchA();
    const b = await fetchB();
    const c = await fetchC();
}

// ✅ 병렬 처리로 최적화
async function loadAll() {
    const [a, b, c] = await Promise.all([
        fetchA(),
        fetchB(),
        fetchC()
    ]);
}
```

## 분석 프로세스

1. JavaScript/TypeScript 파일 스캔
2. 함수 및 메서드 식별
3. async/await 사용 패턴 분석
4. Promise 반환 함수 추적
5. 문제점 탐지 및 분류
6. 최소 침습적 수정 제안

## 리포트 구조

```markdown
# Async/Await 분석 리포트

## 요약
- 분석 파일: N개
- 발견된 이슈: N개
- 자동 수정 가능: N개

## 발견된 이슈

### 🔴 Critical: 누락된 await
| 파일 | 라인 | 함수 | 문제 |
|------|------|------|------|
| api.js | 23 | fetchUser | await 누락 |
| db.js | 45 | saveData | await 누락 |

### 🟡 Warning: 누락된 async
| 파일 | 라인 | 함수 | 문제 |
|------|------|------|------|
| utils.js | 12 | processItem | async 누락 |

### 💡 최적화 제안
| 파일 | 라인 | 제안 |
|------|------|------|
| loader.js | 30-35 | Promise.all 사용 권장 |

## 수정 패치

### api.js
```diff
- const response = fetch('/api/user');
+ const response = await fetch('/api/user');
```
```

## 사용 예시

```
async/await 문제를 찾아서 수정해줘
이 파일에서 await 누락된 곳을 찾아줘
비동기 코드 문제를 분석해줘
```

## 출처
Original skill from skills.cokac.com
