Skip to content
Back to skills

Qa Hunt

ASecurity

만든 것을 실제로 실행·조작하며 버그를 찾아내고, 재현 스크립트로 확인된 버그만 보고하는 탐색형 QA 스킬

  • 110 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 10, 2026
ai-agentsgobashapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned November 10, 2026

npx -y skills add autopus-ai/autopus-adk --skill qa-hunt --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Qa Hunt?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Qa Hunt
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/autopus-ai-qa-hunt/badge)](https://www.skillsdirectory.com/skills/autopus-ai-qa-hunt)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: qa-hunt
description: 만든 것을 실제로 실행·조작하며 버그를 찾아내고, 재현 스크립트로 확인된 버그만 보고하는 탐색형 QA 스킬
compatibility: omp
---

# QA Hunt Skill

테스트가 통과해도 버그는 남습니다. 테스트는 작성자가 떠올린 경우만 확인하기 때문입니다. 이 스킬은 만든 것을
**실제로 실행하고 조작하면서** 작성자가 떠올리지 못한 실패를 찾습니다. 게임을 직접 플레이하며 버그를 찾는
playtester와 같은 방식입니다.

판정은 에이전트가 하지 않습니다. 에이전트는 의심을 재현 스크립트로 바꾸고, `auto qa hunt verify`가 스크립트를
다시 돌려 매번 같은 방식으로 실패하는 것만 버그로 인정합니다.

## 요청 종류

| 종류 | 예 | 하는 일 |
|---|---|---|
| explore | "결제 흐름을 탐색해" | 기능 하나를 넓게 조작하며 이상한 점을 모은다 |
| hunt | "이번 변경에서 잘못된 걸 전부 찾아" | 변경된 영역을 중심으로 경계값·오류 경로·조합을 공격한다 |
| verify | "빈 파일을 넣으면 오류 메시지가 나오는지 확인해" | 주장 하나를 재현 스크립트로 확인한다 |
| goal | "로그인 후 3번 안에 주문을 끝내" | 목표를 제약 안에서 달성하려 시도하고 막히는 지점을 보고한다 |

## 절차

### 1. 배우기 (memory 먼저)

`.autopus/qa/hunt/memory.md`가 있으면 먼저 읽습니다. 지난 실행에서 배운 빌드·실행 방법, 진입점, 조작 방법,
알려진 버그, 시간을 낭비한 함정이 들어 있습니다. 없으면 README, 빌드 설정, 진입점 코드를 읽어 직접 알아냅니다.

### 2. driver 만들기

제품을 조작하는 일회용 driver를 `.autopus/qa/hunt/drivers/`에 씁니다. 제품 코드는 고치지 않습니다.

| 제품 | driver |
|---|---|
| CLI | 셸 스크립트. 인자·stdin·환경변수·파일 입력을 바꿔 가며 실행하고 exit code·stdout·stderr를 기록 |
| HTTP API | curl 또는 짧은 스크립트. 정상·누락·잘못된 타입·큰 값·동시 요청 |
| 웹 UI | `playwright-cli` 스킬. 클릭·입력·뒤로가기·새로고침·느린 네트워크, console error와 실패한 요청 수집 |
| TUI | `tmux new-session -d` + `send-keys` + `capture-pane`으로 키 입력과 화면 캡처 |
| 라이브러리 | 공개 API를 부르는 작은 프로그램. 경계값·빈 값·거대한 값·왕복(encode→decode) |
| 게임·앱 | 엔진이나 앱이 제공하는 자동화 hook, 없으면 입력 이벤트 주입과 화면 캡처 |

### 3. oracle로 이상 감지

"이상하다"는 느낌이 아니라 아래 중 하나에 걸려야 의심으로 남깁니다.

- `crash`: panic, stack trace, segfault, 비정상 종료
- `error_output`: 정상 입력인데 오류 출력, 또는 오류 입력인데 조용히 성공
- `hang`: 시간 제한 안에 끝나지 않음
- `http_5xx`: 서버 오류 응답, 실패한 네트워크 요청
- `invariant`: 문서·코드·상식에서 나온 불변식 위반 (예: 저장 후 다시 읽으면 같아야 한다, 개수는 음수가 아니다)
- `spec_mismatch`: README·help·요청 문장이 약속한 동작과 다름
- `visual`: 깨진 레이아웃, 잘린 글자, 겹친 요소 (스크린샷을 증거로 남기고 `ux-validator`가 판정)

### 4. 재현 스크립트 만들기

의심 하나마다 `.autopus/qa/hunt/findings/<id>/`에 두 파일을 씁니다. `<id>`는 소문자·숫자·`-`입니다.

`repro.sh`는 **버그가 있으면 exit 1, 고쳐졌으면 exit 0**으로 끝나야 합니다. 그 밖의 종료 코드는 스크립트
자체의 실패로 봅니다. 프로젝트 root에서 실행되고, 사람이 손대지 않아도 처음부터 끝까지 돌아야 합니다.
hang을 재현할 때는 스크립트 안에서 시간 제한을 걸고 넘기면 exit 1을 냅니다.

```bash
#!/usr/bin/env bash
# Bug present -> exit 1. Fixed -> exit 0.
set -u
out=$(./bin/app import --file testdata/empty.csv 2>&1); code=$?
if [ "$code" -ne 0 ] || grep -q panic <<<"$out"; then
  echo "import of an empty CSV failed: $out"; exit 1
fi
exit 0
```

`finding.json`:

```json
{
  "schema": "autopus.qa.hunt.finding.v1",
  "id": "empty-csv-import-panics",
  "title": "빈 CSV를 import하면 panic",
  "severity": "major",
  "oracle": "crash",
  "expected": "빈 파일이라는 오류 메시지와 exit 1",
  "actual": "index out of range panic",
  "steps": ["./bin/app import --file testdata/empty.csv"],
  "evidence": [".autopus/qa/hunt/findings/empty-csv-import-panics/output.txt"]
}
```

severity는 `critical`(데이터 손실·보안·핵심 흐름 불가), `major`(기능 실패), `minor`(불편·표시 문제)입니다.

### 5. 판정

```bash
auto qa hunt verify            # 모든 finding의 repro를 두 번씩 다시 실행
auto qa hunt verify --id <id>  # 하나만
```

`confirmed`만 버그로 보고합니다. `flaky`는 따로, `not_reproduced`와 `broken_repro`는 의심으로만 적습니다.
결과는 `.autopus/qa/hunt/report.md`에 남습니다. 고친 뒤 같은 명령을 다시 돌리면 `not_reproduced`로 바뀌어
수정이 확인됩니다.

### 6. memory 갱신

끝나기 전에 `.autopus/qa/hunt/memory.md`에 다음 실행이 알아야 할 것만 짧게 덧붙입니다: 빌드·실행 명령,
조작 방법, 쓸모 있던 driver, 막혔던 함정, 확인된 버그 id. 같은 내용을 반복해 쓰지 않습니다.

## 금지 사항

- 제품 코드, 테스트, 설정을 고치지 않습니다. 쓰는 곳은 `.autopus/qa/hunt/` 아래뿐입니다.
- `auto qa hunt verify`를 거치지 않은 의심을 버그라고 보고하지 않습니다.
- repro를 통과시키려고 기대값을 바꾸지 않습니다. 기대값이 틀렸다면 finding을 지우고 이유를 적습니다.
- 외부 서비스에 쓰기 요청을 보내지 않습니다. 결제·메일·배포처럼 되돌릴 수 없는 동작은 로컬 대체물이나
  dry-run으로만 조작합니다.
- 비밀값을 finding·memory·증거 파일에 남기지 않습니다.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.