From auto-complete-loop
Runs the actual app and validates user flows from the user perspective.
npx claudepluginhub vp-k/auto-complete-loopThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides slash command development for Claude Code: structure, YAML frontmatter, dynamic arguments, bash execution, user interactions, organization, and best practices.
Runs the actual app and validates user flows from the user perspective. Finds runtime bugs that code review (static analysis) cannot detect.
프로젝트 루트에서 다음을 확인하여 타입 결정:
| 감지 파일 | 프로젝트 타입 | 테스트 도구 |
|---|---|---|
pubspec.yaml + (android/ or ios/) + 에뮬레이터 사용 가능 | Flutter Mobile | Maestro / Flutter Integration Test |
pubspec.yaml + web/ 폴더 존재 + 에뮬레이터 미사용 | Flutter Web | Playwright MCP |
package.json + React/Next/Vue | 웹앱 | Playwright MCP |
package.json + Express/Fastify/Nest | API 서버 | curl + DB 조회 |
requirements.txt or pyproject.toml + FastAPI/Django/Flask | API 서버 | curl + DB 조회 |
go.mod | Go 서버 | curl + DB 조회 |
| 기타 | 범용 | 가능한 도구로 대체 |
프로젝트 타입에 따라 앱을 기동:
# 의존성 설치 (필요시)
# npm install / pip install -r requirements.txt 등
# 개발 서버 시작 (백그라운드) — PID를 기록하여 종료 시 사용
# npm run dev & APP_PID=$!
# python manage.py runserver & APP_PID=$!
# go run main.go & APP_PID=$!
# 서버 준비 대기 (최대 30초)
# curl로 health check 반복
중요: 앱 기동 시 & APP_PID=$!로 PID를 반드시 기록. Step 5에서 kill $APP_PID로 종료.
# Flutter 의존성
flutter pub get
# 에뮬레이터/시뮬레이터 확인
flutter devices
# 앱 빌드 + 실행
flutter run -d <device_id>
flutter pub get
flutter run -d chrome --web-port=3000
앱 기동 실패 시: 에러 로그 수집 → LIVE-CRITICAL finding으로 보고 → 추가 테스트 불가
Playwright MCP를 사용하여 브라우저에서 직접 상호작용:
Maestro flow 파일 생성 후 실행:
# flow.yaml 예시
appId: com.example.app
---
- launchApp
- tapOn: "로그인"
- inputText:
id: "email"
text: "test@example.com"
- inputText:
id: "password"
text: "password123"
- tapOn: "로그인 버튼"
- assertVisible: "홈"
maestro test flow.yaml
Maestro 미설치 시: Flutter Integration Test로 fallback
flutter test integration_test/
주요 API 엔드포인트를 순차적으로 호출:
# 1. 헬스 체크
curl -s http://localhost:3000/health
# 2. 인증 플로우
curl -s -X POST http://localhost:3000/api/auth/register -H "Content-Type: application/json" -d '{"email":"test@test.com","password":"test1234"}'
# 3. CRUD 작업
curl -s -X POST http://localhost:3000/api/posts -H "Authorization: Bearer $TOKEN" -d '{"title":"test","content":"test"}'
curl -s http://localhost:3000/api/posts
curl -s http://localhost:3000/api/posts/1
# 4. 에러 케이스
curl -s http://localhost:3000/api/posts/999999 # 존재하지 않는 리소스
curl -s -X POST http://localhost:3000/api/posts -d '{}' # 잘못된 입력
모든 프로젝트 타입에서 확인:
progress 파일에서 로드한 acceptance criteria 각 항목을 실제로 검증:
### LIVE-{SEVERITY}-{번호}: {제목}
- 시나리오: {수행한 user flow 단계별 설명}
- 기대 동작: {문서/상식 기반 기대}
- 실제 동작: {실제로 관찰된 결과}
- 원인 추정: {에러 로그/스택트레이스 기반으로 의심되는 모듈/엔드포인트}
- 재현 방법: {다른 사람이 재현할 수 있는 구체적 단계}
테스트 완료 후:
if [[ "$APP_PID" =~ ^[0-9]+$ ]] && kill -0 "$APP_PID" 2>/dev/null; then
kill "$APP_PID"
fi
# 포트 해제 확인 (fallback: 포트 기반 종료)
# lsof -ti :3000 | xargs kill 2>/dev/null || true