OpenClaw v2026.2 적용 |
coding-agent、git-workflows、test-runner스킬 설치 필요, 프로젝트 코드베이스 접근 권한 필요.
TL;DR: 코드 리뷰: Agent가 PR 변경 분석 후 리뷰 보고서 생성. 자동화 테스트: "test-runner": {"frameworks": ["jest", "vitest"]}. CI/CD 통합: Webhook으로 GitHub/GitLab 이벤트 수신. 다중 프로젝트: "projects": {"frontend": {...}, "backend": {...}}. 핵심 명령: openclaw agent --message "이 PR 리뷰해줘".
실전 목표
다음 기능을 갖춘 AI 프로그래밍 어시스턴트를 구축합니다:
- 코드 리뷰 자동화
- 테스트 실행 및 결과 보고
- 코드 문서 생성
- CI/CD 파이프라인 통합
- 다중 프로젝트 컨텍스트 전환
필수 스킬 설치
# 프로그래밍 관련 스킬
openclaw skill install coding-agent
openclaw skill install debug-pro
openclaw skill install git-workflows
openclaw skill install docker-essentials
# 테스트 스킬
openclaw skill install test-runner
코드 리뷰 자동화
코드 리뷰 설정
---
name: code-review-assistant
version: 1.0.0
description: OpenClaw 기반 자동 코드 리뷰
triggers:
- code review
- 코드 리뷰
- review
- PR review
---
# Code Review Assistant
풀 리퀘스트 코드 리뷰 자동화.
## 기능
- 코드 변경 리뷰
- 일반 이슈 검사
- 개선 제안
- 리뷰 코멘트 생성
## 리뷰 체크리스트
1. **코드 품질**
- 명명 규칙
- 코드 구조
- 에러 처리
2. **보안**
- SQL 인젝션
- XSS 취약점
- 시크릿 노출
3. **성능**
- N+1 쿼리
- 메모리 누수
- 비효율 알고리즘
4. **모범 사례**
- DRY 원칙
- SOLID 원칙
- 디자인 패턴
코드 리뷰 시나리오
사용자: 이 PR 리뷰해줘
Agent: PR #123 리뷰하겠습니다...
[PR 정보 조회]
[코드 변경 분석]
[잠재 이슈 검사]
## PR #123 리뷰 보고서
### 개요
- 브랜치: feature/user-search
- 변경: +156 -23
- 파일: 8개
### 발견 이슈
**심각** (1):
- 🚨 `auth.js:45` - 비밀번호 평문 저장 위험
**경고** (3):
- ⚠️ `search.js:23` - 잠재적 SQL 인젝션
- ⚠️ `user.js:78` - 미처리 Promise
- ⚠️ `utils.js:12` - deprecated API 사용
**제안** (5):
- 💡 단위 테스트 추가 고려
- 💡 매직 넘버 대신 상수 사용
- 💡 에러 바운더리 추가 권장
- 💡 공통 메서드 추출 고려
- 💡 타입 주석 추가 권장
### 코드 장점
- ✅ 함수 명명 양호
- ✅ 모듈 분리 적절
- ✅ 주석 적절
리뷰 코멘트 생성할까요?
자동화 테스트
테스트 실행 설정
{
"skills": {
"test-runner": {
"frameworks": ["jest", "vitest", "pytest"],
"coverage": {
"enabled": true,
"threshold": 80
},
"reporting": {
"format": "markdown",
"output": "test-report.md"
}
}
}
}
테스트 시나리오
사용자: 테스트 실행하고 결과 보고해줘
Agent: 테스트 실행 중입니다...
[테스트 명령 실행]
[테스트 결과 수집]
[커버리지 분석]
## 테스트 보고서
### 테스트 결과
- 총계: 45개 테스트
- 통과: 42 ✅
- 실패: 2 ❌
- 스킵: 1 ⏭️
### 실패한 테스트
**1. UserSearch.test.js**
AssertionError: expected [] to equal [{id: 1, name: ’test’}]
권장: DB 연결 또는 mock 데이터 확인
**2. Auth.test.js**
Timeout: Async callback not invoked within 5000ms
권장: 타임아웃 연장 또는 비동기 로직 확인
### 커버리지
| 파일 | 문장 | 분기 | 함수 | 라인 |
|-----|-----|-----|-----|-----|
| auth.js | 85% | 78% | 90% | 85% |
| search.js | 72% | 65% | 80% | 70% |
| user.js | 90% | 85% | 95% | 90% |
| **총계** | **82%** | **76%** | **88%** | **82%** |
실패한 테스트 수정할까요?
CI/CD 통합
GitHub Actions 통합
# .github/workflows/openclaw-review.yml
name: OpenClaw Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup OpenClaw
run: npm install -g openclaw@latest
- name: Run Review
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
openclaw agent --message "Review PR #${{ github.event.pull_request.number }}" \
--output review-comment.md
- name: Post Comment
uses: actions/github-script@v6
with:
script: |
const fs = require('fs');
const comment = fs.readFileSync('review-comment.md', 'utf8');
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: comment
});
자동 배포
사용자: staging에 배포해줘
Agent: staging 환경에 배포 중입니다...
[최신 코드 풀]
[테스트 실행]
[프로젝트 빌드]
[서버 배포]
## 배포 보고서
### 배포 정보
- 환경: staging
- 브랜치: main
- 커밋: abc1234
- 시간: 2026-02-26 15:30
### 배포 단계
1. ✅ 코드 풀
2. ✅ 의존성 설치
3. ✅ 테스트 실행 (45/45 통과)
4. ✅ 프로젝트 빌드
5. ✅ 서버 배포
### 헬스 체크
- API: ✅ 정상
- DB: ✅ 연결 정상
- Redis: ✅ 연결 정상
### 접속 URL
- URL: https://staging.example.com
- API: https://api-staging.example.com
배포 완료!
다중 프로젝트 관리
프로젝트 설정
{
"projects": {
"frontend": {
"path": "~/projects/frontend",
"skills": ["coding-agent", "test-runner"],
"context": "AGENTS.md"
},
"backend": {
"path": "~/projects/backend",
"skills": ["coding-agent", "docker-essentials"],
"context": "AGENTS.md"
},
"mobile": {
"path": "~/projects/mobile",
"skills": ["coding-agent"],
"context": "AGENTS.md"
}
}
}
프로젝트 전환
사용자: backend 프로젝트로 전환해줘
Agent: backend 프로젝트로 전환했습니다.
현재 프로젝트 정보:
- 이름: backend
- 경로: ~/projects/backend
- 기술: Python/FastAPI
- 최근 커밋: 사용자 인증 추가
무엇을 도와드릴까요?
코드 생성
보일러플레이트 코드 생성
사용자: User 모델용 CRUD API 만들어줘
Agent: User 모델용 CRUD API 생성하겠습니다...
[기존 코드 구조 분석]
[코드 파일 생성]
다음 파일 생성됨:
**1. models/user.py**
```python
from pydantic import BaseModel
from datetime import datetime
class User(BaseModel):
id: int
name: str
email: str
created_at: datetime
updated_at: datetime
class UserCreate(BaseModel):
name: str
email: str
class UserUpdate(BaseModel):
name: str | None = None
email: str | None = None
2. routers/users.py
from fastapi import APIRouter, HTTPException
from models.user import User, UserCreate, UserUpdate
router = APIRouter(prefix="/users", tags=["users"])
@router.get("/", response_model=list[User])
async def list_users(): ...
@router.get("/{user_id}", response_model=User)
async def get_user(user_id: int): ...
@router.post("/", response_model=User)
async def create_user(user: UserCreate): ...
@router.put("/{user_id}", response_model=User)
async def update_user(user_id: int, user: UserUpdate): ...
@router.delete("/{user_id}")
async def delete_user(user_id: int): ...
3. tests/test_users.py
from fastapi.testclient import TestClient
def test_list_users(): ...
def test_create_user(): ...
def test_update_user(): ...
def test_delete_user(): ...
테스트 실행해서 검증할까요?
## 문서 생성
### API 문서
사용자: 이 API 문서 만들어줘
Agent: API 엔드포인트 분석 중입니다…
[라우트 파일 스캔] [API 정보 추출] [문서 생성]
API 문서
사용자 모듈
GET /users
사용자 목록 조회
파라미터
| 이름 | 타입 | 필수 | 설명 |
|---|---|---|---|
| page | int | 아니오 | 페이지 번호 |
| limit | int | 아니오 | 페이지당 개수 |
응답
{
"data": [User],
"total": int,
"page": int,
"limit": int
}
POST /users
사용자 생성
요청 본문
{
"name": "string",
"email": "string"
}
응답
{
"id": 1,
"name": "string",
"email": "string",
"created_at": "2026-02-26T00:00:00Z",
"updated_at": "2026-02-26T00:00:00Z"
}
docs/api.md에 저장할까요?
## 장애 대응
### CI/CD 이슈
```bash
# CI/CD 상태 확인
openclaw ci status
# CI/CD 로그 조회
openclaw ci logs --last
# 실패 작업 재실행
openclaw ci retry
코드 이슈
# 코드 이슈 분석
openclaw analyze --project backend
# 수정 제안 생성
openclaw suggest --file auth.js
요약
OpenClaw로 프로그래밍 어시스턴트 구축:
- 코드 리뷰: PR 리뷰 자동화
- 테스트 실행: 자동 테스트 및 보고
- CI/CD 통합: 배포 프로세스 자동화
- 다중 프로젝트: 컨텍스트 빠른 전환
- 코드 생성: 보일러플레이트 코드 생성
- 문서 생성: API 문서 자동 생성
업데이트 기록:
- 2026-02-26: 초판 발행
시리즈 네비게이션:
- ← 이전: 실전: 사무 자동화 어시스턴트 구축
- → 다음: 실전: 스마트홈 제어 센터 구축