@elyun/bylane 1.11.0 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -17,6 +17,21 @@ description: 변경된 파일들을 conventional commit 형식으로 커밋한
|
|
|
17
17
|
node -e "import('./src/state.js').then(({writeState})=>writeState('commit-agent',{status:'in_progress',startedAt:new Date().toISOString(),progress:0,retries:0,log:[]}))"
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
+
## GitHub 커밋 템플릿 탐지
|
|
21
|
+
|
|
22
|
+
커밋 메시지 작성 전 아래 순서로 템플릿을 탐색한다:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 1. git commit.template 설정 확인
|
|
26
|
+
git config commit.template 2>/dev/null
|
|
27
|
+
|
|
28
|
+
# 2. 일반적인 위치
|
|
29
|
+
ls .gitmessage .github/commit-template.txt .github/COMMIT_TEMPLATE.md 2>/dev/null | head -1
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
템플릿이 있으면 해당 형식을 **반드시** 따른다.
|
|
33
|
+
없으면 conventional commit 형식(`feat:`, `fix:` 등)을 사용한다.
|
|
34
|
+
|
|
20
35
|
## 실행 흐름
|
|
21
36
|
|
|
22
37
|
1. 브랜치명 생성:
|
|
@@ -21,6 +21,25 @@ description: 현재 브랜치의 커밋들로 GitHub Pull Request를 생성한
|
|
|
21
21
|
- `.bylane/state/commit-agent.json`의 `branchName`, `commitSha`
|
|
22
22
|
- `.bylane/state/issue-agent.json`의 `spec.title`, `issueNumber`
|
|
23
23
|
|
|
24
|
+
## GitHub PR 템플릿 탐지
|
|
25
|
+
|
|
26
|
+
PR 본문 작성 전 아래 순서로 템플릿을 탐색한다:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 단일 파일
|
|
30
|
+
ls .github/PULL_REQUEST_TEMPLATE.md \
|
|
31
|
+
.github/pull_request_template.md \
|
|
32
|
+
docs/PULL_REQUEST_TEMPLATE.md \
|
|
33
|
+
PULL_REQUEST_TEMPLATE.md 2>/dev/null | head -1
|
|
34
|
+
|
|
35
|
+
# 다중 템플릿 디렉토리
|
|
36
|
+
ls .github/PULL_REQUEST_TEMPLATE/*.md 2>/dev/null | head -5
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
템플릿이 있으면 해당 구조를 **반드시** 따른다.
|
|
40
|
+
다중 템플릿이 있으면 이슈 유형에 맞는 템플릿을 선택한다.
|
|
41
|
+
템플릿이 없으면 기본 Summary/Test Plan 형식을 사용한다.
|
|
42
|
+
|
|
24
43
|
## 실행 전 상태 기록
|
|
25
44
|
|
|
26
45
|
```bash
|
|
@@ -16,10 +16,55 @@ description: PR 리뷰 코멘트에 반박하거나 코드를 수정하여 반
|
|
|
16
16
|
| `"api"` | REST API + `$GITHUB_TOKEN` |
|
|
17
17
|
| `"auto"` (기본) | MCP → CLI → API 순서로 시도 |
|
|
18
18
|
|
|
19
|
+
## GitHub 리뷰 대응 템플릿 탐지
|
|
20
|
+
|
|
21
|
+
답글 작성 전 프로젝트 내 대응 템플릿을 탐색한다:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
ls .github/REVIEW_RESPONSE_TEMPLATE.md \
|
|
25
|
+
.github/review_response_template.md \
|
|
26
|
+
.github/CONTRIBUTING.md 2>/dev/null | head -1
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- `REVIEW_RESPONSE_TEMPLATE.md`가 있으면 답글 형식을 **반드시** 따른다.
|
|
30
|
+
- `CONTRIBUTING.md`가 있으면 코드 기여 가이드라인을 참고하여 대응 톤/형식을 맞춘다.
|
|
31
|
+
- 없으면 기본 형식으로 작성한다.
|
|
32
|
+
|
|
19
33
|
## 입력
|
|
20
34
|
|
|
21
35
|
- PR 번호
|
|
22
|
-
-
|
|
36
|
+
- 모드 (선택): `auto` (기본) | `accept` | `rebut` | `manual`
|
|
37
|
+
|
|
38
|
+
## 모드 동작
|
|
39
|
+
|
|
40
|
+
| 모드 | 동작 |
|
|
41
|
+
|---|---|
|
|
42
|
+
| `auto` (기본값, 미지정 시) | 각 코멘트를 분석하여 수정 반영 또는 반박을 **자동 판단** 후 진행 |
|
|
43
|
+
| `accept` | 모든 코멘트를 수정 반영 |
|
|
44
|
+
| `rebut` | 모든 코멘트에 반박 |
|
|
45
|
+
| `manual` | 코멘트별로 사용자에게 "수정 반영할까요, 반박할까요?" 질문 후 진행 |
|
|
46
|
+
|
|
47
|
+
### auto 모드 판단 기준
|
|
48
|
+
|
|
49
|
+
각 코멘트를 분석하여:
|
|
50
|
+
- **반영**: 버그 지적, 명확한 컨벤션 위반, 테스트 누락, 성능 문제
|
|
51
|
+
- **반박**: 의견 차이, 이미 의도된 설계, 스펙 요구사항과 일치, 트레이드오프 판단이 필요한 경우
|
|
52
|
+
|
|
53
|
+
자동 판단 결과를 사용자에게 먼저 요약으로 보여준 뒤 실행한다:
|
|
54
|
+
```
|
|
55
|
+
코멘트 #1: [반영] null 체크 누락 → 코드 수정
|
|
56
|
+
코멘트 #2: [반박] 의도된 설계 (이슈 #12 참조)
|
|
57
|
+
코멘트 #3: [반영] 타입 오류
|
|
58
|
+
진행할까요? (y/n)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### manual 모드
|
|
62
|
+
|
|
63
|
+
각 코멘트를 보여주고 사용자에게 선택을 요청:
|
|
64
|
+
```
|
|
65
|
+
[코멘트 #1] null 체크가 없습니다.
|
|
66
|
+
→ (1) 수정 반영 (2) 반박 (3) 건너뜀
|
|
67
|
+
```
|
|
23
68
|
|
|
24
69
|
## 실행 전 상태 기록
|
|
25
70
|
|
|
@@ -16,6 +16,20 @@ description: PR의 diff를 분석하여 코드 리뷰 코멘트를 작성한다.
|
|
|
16
16
|
| `"api"` | REST API + `$GITHUB_TOKEN` |
|
|
17
17
|
| `"auto"` (기본) | MCP → CLI → API 순서로 시도 |
|
|
18
18
|
|
|
19
|
+
## GitHub 리뷰 템플릿 탐지
|
|
20
|
+
|
|
21
|
+
bylane 설정보다 먼저 프로젝트 내 GitHub 리뷰 템플릿을 탐색한다:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
ls .github/REVIEW_TEMPLATE.md \
|
|
25
|
+
.github/review_template.md \
|
|
26
|
+
.github/CODE_REVIEW_TEMPLATE.md \
|
|
27
|
+
docs/REVIEW_TEMPLATE.md 2>/dev/null | head -1
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
GitHub 템플릿이 있으면 해당 형식을 **최우선**으로 따른다.
|
|
31
|
+
없으면 아래 bylane 설정의 템플릿을 사용한다.
|
|
32
|
+
|
|
19
33
|
## 리뷰 템플릿 로드
|
|
20
34
|
|
|
21
35
|
실행 전 `.bylane/bylane.json`의 `review` 설정 읽기:
|
|
@@ -44,6 +58,47 @@ import('./src/config.js').then(({loadConfig}) => {
|
|
|
44
58
|
cat TEMPLATE_FILE_PATH
|
|
45
59
|
```
|
|
46
60
|
|
|
61
|
+
## 검사 항목 선택
|
|
62
|
+
|
|
63
|
+
PR 번호와 함께 검사 범위를 지정할 수 있다. 인자가 없으면 사용자에게 묻는다.
|
|
64
|
+
|
|
65
|
+
### 인자로 지정
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
/bylane review #45 code,security
|
|
69
|
+
/bylane review #45 grammar,domain,code
|
|
70
|
+
/bylane review #45 ← 선택 없으면 아래 질문
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 대화형 선택 (인자 미지정 시)
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
검사 항목을 선택하세요 (쉼표 구분, Enter=전체):
|
|
77
|
+
1. grammar — 문법, 오탈자, 주석/변수명 언어 일관성
|
|
78
|
+
2. domain — 비즈니스 로직, 도메인 규칙 준수 여부
|
|
79
|
+
3. code — 코드 스타일, 컨벤션, 중복, 복잡도
|
|
80
|
+
4. security — 보안 취약점, 시크릿 노출, 인증/인가 이슈
|
|
81
|
+
|
|
82
|
+
선택 (예: 1,3 또는 Enter):
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Enter 또는 아무것도 선택하지 않으면 → `all` (전체 검사)
|
|
86
|
+
|
|
87
|
+
### 검사 항목별 포커스
|
|
88
|
+
|
|
89
|
+
| 항목 | 중점 확인 사항 |
|
|
90
|
+
|---|---|
|
|
91
|
+
| `grammar` | 오탈자, 주석 언어 일관성, 변수/함수명 문법, 문서 일관성 |
|
|
92
|
+
| `domain` | 비즈니스 규칙 위반, 도메인 용어 오용, 로직 정합성 |
|
|
93
|
+
| `code` | 컨벤션 위반, 중복 코드, 복잡도, 불변성, 테스트 커버리지 |
|
|
94
|
+
| `security` | 시크릿 노출, SQL/XSS 인젝션, 인증·인가 누락, 민감 데이터 처리 |
|
|
95
|
+
| `all` | 위 4가지 전체 |
|
|
96
|
+
|
|
97
|
+
선택된 항목만 집중 검사하고, 리뷰 코멘트 상단에 검사 범위를 명시한다:
|
|
98
|
+
```
|
|
99
|
+
> 검사 범위: code, security
|
|
100
|
+
```
|
|
101
|
+
|
|
47
102
|
## 입력
|
|
48
103
|
|
|
49
104
|
PR 번호 (`.bylane/state/pr-agent.json`에서 자동 로드, 또는 수동 전달)
|
|
@@ -11,6 +11,23 @@ description: 5분 주기로 GitHub review 요청된 PR을 감지하여 자동으
|
|
|
11
11
|
`.bylane/state/review-queue.json`에 기록한다. 이 skill은 해당 큐를 감시하다가
|
|
12
12
|
`status: "pending"` 항목이 생기면 `bylane-review-agent`를 실행한다.
|
|
13
13
|
|
|
14
|
+
## 검사 범위 설정
|
|
15
|
+
|
|
16
|
+
루프 시작 전 사용자에게 검사 범위를 묻는다:
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
자동 리뷰 검사 항목을 선택하세요 (쉼표 구분, Enter=전체):
|
|
20
|
+
1. grammar — 문법, 오탈자, 주석/변수명 언어 일관성
|
|
21
|
+
2. domain — 비즈니스 로직, 도메인 규칙 준수 여부
|
|
22
|
+
3. code — 코드 스타일, 컨벤션, 중복, 복잡도
|
|
23
|
+
4. security — 보안 취약점, 시크릿 노출, 인증/인가 이슈
|
|
24
|
+
|
|
25
|
+
선택 (예: 1,3 또는 Enter=전체):
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
선택된 범위를 `.bylane/state/review-queue.json`의 `scope` 필드에 저장하고,
|
|
29
|
+
이후 각 `bylane-review-agent` 호출 시 해당 scope를 전달한다.
|
|
30
|
+
|
|
14
31
|
## 시작
|
|
15
32
|
|
|
16
33
|
### 1. 폴러 시작 (백그라운드)
|
|
@@ -67,6 +84,7 @@ import('./src/state.js').then(({readState, writeState}) => {
|
|
|
67
84
|
{
|
|
68
85
|
"agent": "review-queue",
|
|
69
86
|
"status": "running",
|
|
87
|
+
"scope": ["code", "security"],
|
|
70
88
|
"queue": [
|
|
71
89
|
{
|
|
72
90
|
"number": 45,
|