@elyun/bylane 1.16.0 → 1.18.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.
- package/README.md +262 -121
- package/commands/bylane-cleanup.md +36 -0
- package/commands/bylane-code-agent.md +3 -24
- package/commands/bylane-commit-agent.md +3 -19
- package/commands/bylane-issue-agent.md +1 -1
- package/commands/bylane-notify-agent.md +1 -1
- package/commands/bylane-orchestrator.md +4 -23
- package/commands/bylane-pr-agent.md +2 -2
- package/commands/bylane-respond-agent.md +22 -31
- package/commands/bylane-respond-loop.md +6 -18
- package/commands/bylane-review-agent.md +112 -120
- package/commands/bylane-review-loop.md +6 -17
- package/commands/bylane-test-agent.md +1 -1
- package/package.json +1 -1
- package/src/cleanup.js +152 -0
- package/src/cli.js +39 -0
- package/src/monitor/index.js +96 -1
- package/src/monitor/layout.js +1 -1
- package/src/respond-loop.js +1 -1
- package/src/review-loop.js +1 -1
- package/templates/review-template.md +17 -47
package/README.md
CHANGED
|
@@ -1,32 +1,36 @@
|
|
|
1
1
|
# byLane
|
|
2
2
|
|
|
3
|
-
> Claude Code용
|
|
3
|
+
> Claude Code용 개발 자동화 하네스
|
|
4
4
|
|
|
5
5
|
GitHub Issues에서 시작해 코드 구현, 테스트, 커밋, PR 생성, 리뷰, 리뷰 반영까지 전체 개발 워크플로우를 에이전트 기반으로 자동화합니다.
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 핵심 기능
|
|
10
|
+
|
|
11
|
+
| 기능 | 설명 |
|
|
12
|
+
|------|------|
|
|
13
|
+
| **전체 워크플로우** | 자연어 한 줄로 이슈 → 코드 → 테스트 → 커밋 → PR 자동화 |
|
|
14
|
+
| **프로젝트 분석** | 코드 스타일·디자인 토큰·아키텍처 자동 분석, `.claude/instructions/` 생성 |
|
|
15
|
+
| **인라인 코드 리뷰** | 변경 라인마다 개별 코멘트 + GitHub suggestion 블록 자동 등록 |
|
|
16
|
+
| **자동 리뷰 루프** | 5분 주기로 review 요청된 PR을 자동 감지 → 리뷰 실행 |
|
|
17
|
+
| **자동 대응 루프** | 5분 주기로 내 PR 리뷰/코멘트 감지 → 자동 수정 반영 또는 반박 |
|
|
18
|
+
| **실시간 모니터** | 터미널 TUI 대시보드 (에이전트 상태, 로그, 큐, 루프 모니터링) |
|
|
19
|
+
| **에이전트별 모델** | 에이전트마다 다른 Claude 모델 지정 가능 |
|
|
20
|
+
| **GitHub 자동 감지** | MCP → CLI(`gh`) → REST API 순서로 자동 시도 |
|
|
21
|
+
| **보안 훅** | 커밋마다 시크릿/민감 파일/console.log 자동 검사 |
|
|
22
|
+
|
|
23
|
+
---
|
|
22
24
|
|
|
23
25
|
## 요구사항
|
|
24
26
|
|
|
25
27
|
- [Claude Code](https://claude.ai/code) CLI
|
|
26
28
|
- Node.js 20+
|
|
27
|
-
- GitHub MCP (Claude Code 기본 제공)
|
|
28
|
-
- Slack MCP
|
|
29
|
-
- Figma MCP (디자인 연동 사용
|
|
29
|
+
- GitHub MCP (Claude Code 기본 제공) / `gh` CLI / `GITHUB_TOKEN` 중 하나
|
|
30
|
+
- Slack MCP 또는 Telegram (알림 사용 시, 선택사항)
|
|
31
|
+
- Figma MCP (디자인 연동 사용 시, 선택사항)
|
|
32
|
+
|
|
33
|
+
---
|
|
30
34
|
|
|
31
35
|
## 설치
|
|
32
36
|
|
|
@@ -36,10 +40,11 @@ GitHub Issues에서 시작해 코드 구현, 테스트, 커밋, PR 생성, 리
|
|
|
36
40
|
npx @elyun/bylane
|
|
37
41
|
```
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
기존
|
|
43
|
+
`~/.claude/commands/`와 `~/.claude/hooks/`에 파일을 자동 복사합니다.
|
|
44
|
+
기존 파일은 `.bak`으로 백업 후 교체됩니다.
|
|
45
|
+
`.bylane/bylane.json` 사용자 설정은 **절대 덮어쓰지 않습니다**.
|
|
41
46
|
|
|
42
|
-
심볼릭
|
|
47
|
+
심볼릭 링크 설치 (레포 업데이트 시 자동 반영):
|
|
43
48
|
|
|
44
49
|
```bash
|
|
45
50
|
npx @elyun/bylane --symlink
|
|
@@ -50,34 +55,26 @@ npx @elyun/bylane --symlink
|
|
|
50
55
|
```bash
|
|
51
56
|
git clone https://github.com/el-yun/byLane.git
|
|
52
57
|
cd byLane
|
|
53
|
-
npm install
|
|
58
|
+
npm install
|
|
54
59
|
node src/cli.js install
|
|
55
60
|
```
|
|
56
61
|
|
|
57
|
-
### 셋업 위자드
|
|
62
|
+
### 셋업 위자드
|
|
58
63
|
|
|
59
|
-
Claude Code
|
|
64
|
+
설치 후 Claude Code에서 프로젝트 디렉토리로 이동:
|
|
60
65
|
|
|
61
66
|
```
|
|
62
67
|
/bylane setup
|
|
63
68
|
```
|
|
64
69
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
3. 알림 채널 (Slack / Telegram / 둘 다)
|
|
69
|
-
4. 팀 모드 설정
|
|
70
|
-
5. 권한 범위 (read-only / write / full)
|
|
71
|
-
6. 고급 설정 (재시도 횟수, 타임아웃, Figma MCP)
|
|
72
|
-
7. 브랜치 네이밍 패턴
|
|
73
|
-
8. 에이전트별 AI 모델
|
|
70
|
+
인터랙티브 설정 (GitHub 접근 방법, 알림 채널, 브랜치 패턴, 에이전트 모델 등).
|
|
71
|
+
|
|
72
|
+
---
|
|
74
73
|
|
|
75
74
|
## 사용법
|
|
76
75
|
|
|
77
76
|
### 전체 워크플로우
|
|
78
77
|
|
|
79
|
-
자연어로 작업 내용을 설명하면 오케스트레이터가 적절한 에이전트를 자동으로 실행합니다.
|
|
80
|
-
|
|
81
78
|
```
|
|
82
79
|
/bylane 다크모드 토글 버튼 추가해줘
|
|
83
80
|
/bylane issue #123 구현해줘
|
|
@@ -94,84 +91,193 @@ Claude Code를 열고 프로젝트 디렉토리에서:
|
|
|
94
91
|
/bylane test 테스트 실행
|
|
95
92
|
/bylane commit 커밋 생성
|
|
96
93
|
/bylane pr PR 생성
|
|
97
|
-
/bylane review [PR번호]
|
|
98
|
-
/bylane
|
|
99
|
-
/bylane respond [PR번호] 리뷰 반박/반영
|
|
100
|
-
/bylane respond-loop 5분 주기 자동 대응 루프
|
|
94
|
+
/bylane review [#PR번호] [scope] PR 인라인 리뷰
|
|
95
|
+
/bylane respond [#PR번호] [모드] 리뷰 반박/반영
|
|
101
96
|
/bylane notify 알림 발송
|
|
102
97
|
/bylane status 현재 상태 요약
|
|
103
98
|
```
|
|
104
99
|
|
|
105
100
|
### 자동 루프
|
|
106
101
|
|
|
107
|
-
두 루프를 동시에 실행하면
|
|
102
|
+
두 루프를 동시에 실행하면 리뷰 요청과 리뷰 대응을 완전 자동화합니다:
|
|
108
103
|
|
|
109
104
|
```bash
|
|
110
|
-
node src/review-loop.js & # 내게 요청된 PR 자동 리뷰
|
|
111
|
-
node src/respond-loop.js & # 내 PR 리뷰 자동 대응
|
|
105
|
+
node src/review-loop.js & # 내게 요청된 PR 자동 리뷰 (5분 주기)
|
|
106
|
+
node src/respond-loop.js & # 내 PR 리뷰 자동 대응 (5분 주기)
|
|
112
107
|
```
|
|
113
108
|
|
|
114
|
-
|
|
109
|
+
루프 종료:
|
|
115
110
|
|
|
116
111
|
```bash
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
112
|
+
kill $(pgrep -f review-loop.js)
|
|
113
|
+
kill $(pgrep -f respond-loop.js)
|
|
114
|
+
# 또는 모니터에서 [s]
|
|
120
115
|
```
|
|
121
116
|
|
|
117
|
+
Claude Code에서 실행:
|
|
118
|
+
|
|
122
119
|
```
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
| | |
|
|
126
|
-
| issue-agent [v] 완료 | 17:32:38 code-agent |
|
|
127
|
-
| code-agent [>] 67% | > ThemeToggle.tsx 생성 |
|
|
128
|
-
| test-agent [ ] 대기 | 17:30:09 issue-agent |
|
|
129
|
-
| ... | > spec.json 저장됨 |
|
|
130
|
-
+---------------------------+--------------------------------------+
|
|
131
|
-
| QUEUE | SYSTEM STATUS |
|
|
132
|
-
| 1 Issue #124 대기중 | GitHub OK 연결됨 |
|
|
133
|
-
| 2 PR #45 review | Slack OK #dev-alerts |
|
|
134
|
-
+---------------------------+--------------------------------------+
|
|
120
|
+
/bylane review-loop 자동 리뷰 루프 시작 (검사 범위 선택 후 시작)
|
|
121
|
+
/bylane respond-loop 자동 대응 루프 시작
|
|
135
122
|
```
|
|
136
123
|
|
|
137
|
-
|
|
124
|
+
---
|
|
138
125
|
|
|
139
|
-
|
|
126
|
+
## 모니터 대시보드
|
|
140
127
|
|
|
141
|
-
|
|
128
|
+
```bash
|
|
129
|
+
npx @elyun/bylane monitor
|
|
130
|
+
```
|
|
142
131
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
|
132
|
+
> `npx`를 사용하면 항상 최신 버전이 실행됩니다. 로컬 구버전이 실행되지 않습니다.
|
|
133
|
+
|
|
134
|
+
```
|
|
135
|
+
+-----------------------------+--------------------------------------+
|
|
136
|
+
| AGENT PIPELINE | AGENT LOG [LIVE] |
|
|
137
|
+
| | |
|
|
138
|
+
| [>] code-agent 12s ##-- | 17:32:38 code-agent |
|
|
139
|
+
| [ ] test-agent 대기 | > ThemeToggle.tsx 생성 |
|
|
140
|
+
| [v] issue-agent | 17:30:09 issue-agent |
|
|
141
|
+
| | > spec.json 저장됨 |
|
|
142
|
+
| LOOPS | |
|
|
143
|
+
| [>] review-loop 45s | |
|
|
144
|
+
| [-] respond-loop 미실행 | |
|
|
145
|
+
| | |
|
|
146
|
+
| SUBAGENTS | |
|
|
147
|
+
| [>] executor 8s 코드... | |
|
|
148
|
+
+-----------------------------+--------------------------------------+
|
|
149
|
+
| QUEUE | SYSTEM STATUS |
|
|
150
|
+
| PR #45 review pending | GitHub OK |
|
|
151
|
+
| PR #48 respond pending | Loops 1 running |
|
|
152
|
+
+-----------------------------+--------------------------------------+
|
|
153
|
+
[q]종료 [c]에이전트취소토글 [s]루프종료 [Tab]포커스 [j/k]로그스크롤
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### 단축키
|
|
157
|
+
|
|
158
|
+
| 키 | 동작 |
|
|
159
|
+
|----|------|
|
|
160
|
+
| `q` / `Ctrl+C` | 모니터 종료 |
|
|
161
|
+
| `r` | 상태 정리 (권한 수정, 좀비 초기화, 큐 복구) |
|
|
162
|
+
| `c` | 하위 에이전트 취소 플래그 토글 (새 Agent 호출 차단) |
|
|
163
|
+
| `s` | 실행 중인 루프 선택 → SIGTERM 전송 |
|
|
164
|
+
| `Tab` | 패널 포커스 이동 |
|
|
165
|
+
| `j` / `k` | 로그 스크롤 |
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## 코드 리뷰
|
|
170
|
+
|
|
171
|
+
### 검사 범위 선택
|
|
172
|
+
|
|
173
|
+
리뷰 실행 시 검사 항목을 선택합니다. 선택 없이 Enter → 전체 검사:
|
|
148
174
|
|
|
149
|
-
|
|
175
|
+
```
|
|
176
|
+
검사 항목을 선택하세요 (쉼표 구분, Enter=전체):
|
|
177
|
+
1. grammar — 문법, 오탈자, 주석/변수명 언어 일관성
|
|
178
|
+
2. domain — 비즈니스 로직, 도메인 규칙 준수 여부
|
|
179
|
+
3. code — 코드 스타일, 컨벤션, 중복, 복잡도
|
|
180
|
+
4. security — 보안 취약점, 시크릿 노출, 인증/인가 이슈
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
인자로도 지정 가능:
|
|
184
|
+
```
|
|
185
|
+
/bylane review #45 code,security
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### 인라인 코멘트
|
|
189
|
+
|
|
190
|
+
모든 리뷰 코멘트는 **해당 코드 라인에 직접** 등록됩니다. 수정 제안이 있으면 GitHub suggestion 블록으로 작성되어 "Apply suggestion" 버튼으로 바로 적용할 수 있습니다.
|
|
191
|
+
|
|
192
|
+
```
|
|
193
|
+
제목
|
|
194
|
+
|
|
195
|
+
설명
|
|
150
196
|
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
197
|
+
```suggestion
|
|
198
|
+
// 수정 제안 코드
|
|
199
|
+
```
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### GitHub 리뷰 템플릿 우선 적용
|
|
203
|
+
|
|
204
|
+
프로젝트에 아래 파일이 있으면 해당 형식을 **최우선**으로 따릅니다:
|
|
156
205
|
|
|
157
206
|
```
|
|
158
|
-
/
|
|
159
|
-
/
|
|
207
|
+
.github/REVIEW_TEMPLATE.md
|
|
208
|
+
.github/CODE_REVIEW_TEMPLATE.md
|
|
209
|
+
docs/REVIEW_TEMPLATE.md
|
|
160
210
|
```
|
|
161
211
|
|
|
162
|
-
|
|
212
|
+
없으면 `templates/review-template.md`를 사용합니다.
|
|
213
|
+
|
|
214
|
+
---
|
|
163
215
|
|
|
164
|
-
##
|
|
216
|
+
## 리뷰 대응 (respond)
|
|
165
217
|
|
|
166
|
-
|
|
|
167
|
-
|
|
168
|
-
| `
|
|
169
|
-
| `
|
|
170
|
-
| `
|
|
218
|
+
| 모드 | 동작 |
|
|
219
|
+
|------|------|
|
|
220
|
+
| `auto` (기본) | 각 코멘트를 분석해 수정 반영 또는 반박을 자동 판단, 요약 확인 후 실행 |
|
|
221
|
+
| `accept` | 모든 코멘트 수정 반영 |
|
|
222
|
+
| `rebut` | 모든 코멘트 반박 |
|
|
223
|
+
| `manual` | 코멘트별로 수정/반박/건너뜀 직접 선택 |
|
|
171
224
|
|
|
172
|
-
|
|
225
|
+
```
|
|
226
|
+
/bylane respond #45 auto 모드 (기본)
|
|
227
|
+
/bylane respond #45 manual 코멘트별 수동 선택
|
|
228
|
+
/bylane respond #45 accept 전체 반영
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
auto 모드에서는 실행 전 요약을 먼저 보여주고 확인을 받습니다:
|
|
173
232
|
|
|
174
|
-
|
|
233
|
+
```
|
|
234
|
+
코멘트 #1: [반영] null 체크 누락 → 코드 수정
|
|
235
|
+
코멘트 #2: [반박] 의도된 설계 (이슈 #12 참조)
|
|
236
|
+
진행할까요? (y/n)
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 프로젝트 분석
|
|
242
|
+
|
|
243
|
+
`/bylane analyze` 실행 시 현재 프로젝트를 자동 분석하여 Claude Code가 참조할 instruction 파일을 생성합니다.
|
|
244
|
+
|
|
245
|
+
| 파일 | 내용 |
|
|
246
|
+
|------|------|
|
|
247
|
+
| `.claude/instructions/code-style.md` | 언어, 포맷팅, 네이밍 컨벤션, import 규칙 |
|
|
248
|
+
| `.claude/instructions/design-tokens.md` | 색상, 타이포그래피, 간격, 다크모드 |
|
|
249
|
+
| `.claude/instructions/architecture.md` | 프레임워크, 상태관리, 폴더 구조 |
|
|
250
|
+
|
|
251
|
+
ESLint/Prettier/tsconfig, Tailwind config, CSS 변수 등 설정 파일을 자동 탐색하고 실제 소스 패턴을 샘플링합니다. 분석 후 `CLAUDE.md`에 import 구문을 자동 추가합니다.
|
|
252
|
+
|
|
253
|
+
```
|
|
254
|
+
/bylane analyze 기존 파일 있으면 확인 요청
|
|
255
|
+
/bylane analyze --force 강제 덮어쓰기
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## 에이전트 파이프라인
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
orchestrator
|
|
264
|
+
→ issue-agent 이슈 생성/분석, Figma 스펙 추출 (선택)
|
|
265
|
+
→ code-agent 코드 구현
|
|
266
|
+
→ test-agent 테스트 실행, 실패 시 code-agent 재시도
|
|
267
|
+
→ commit-agent 브랜치 생성 + 커밋
|
|
268
|
+
→ pr-agent PR 생성
|
|
269
|
+
→ review-agent 인라인 코드 리뷰
|
|
270
|
+
→ respond-agent 리뷰 반박 또는 반영
|
|
271
|
+
→ notify-agent Slack/Telegram 알림
|
|
272
|
+
|
|
273
|
+
analyze-agent 독립: 프로젝트 분석 → .claude/instructions/ 생성
|
|
274
|
+
review-loop 독립: 5분 주기 review 요청 감지
|
|
275
|
+
respond-loop 독립: 5분 주기 리뷰 코멘트 감지
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
각 에이전트는 `.bylane/state/{name}.json`에 상태를 기록합니다. 모니터가 1초마다 폴링합니다.
|
|
279
|
+
|
|
280
|
+
---
|
|
175
281
|
|
|
176
282
|
## 설정 파일 (`.bylane/bylane.json`)
|
|
177
283
|
|
|
@@ -208,6 +314,7 @@ npm run monitor
|
|
|
208
314
|
"code-agent": "claude-sonnet-4-6",
|
|
209
315
|
"review-agent": "claude-sonnet-4-6",
|
|
210
316
|
"respond-agent": "claude-opus-4-6",
|
|
317
|
+
"analyze-agent": "claude-opus-4-6",
|
|
211
318
|
"test-agent": "claude-haiku-4-5-20251001",
|
|
212
319
|
"commit-agent": "claude-haiku-4-5-20251001",
|
|
213
320
|
"pr-agent": "claude-haiku-4-5-20251001",
|
|
@@ -216,10 +323,9 @@ npm run monitor
|
|
|
216
323
|
"review": {
|
|
217
324
|
"model": "claude-sonnet-4-6",
|
|
218
325
|
"language": "ko",
|
|
219
|
-
"includeModel": true,
|
|
220
326
|
"includeCodeExample": true,
|
|
221
327
|
"templateFile": "",
|
|
222
|
-
"footer": "
|
|
328
|
+
"footer": "{model} · {date}"
|
|
223
329
|
},
|
|
224
330
|
"extensions": {
|
|
225
331
|
"figma": { "enabled": false, "useAt": "issue-analysis" }
|
|
@@ -227,64 +333,99 @@ npm run monitor
|
|
|
227
333
|
}
|
|
228
334
|
```
|
|
229
335
|
|
|
230
|
-
|
|
336
|
+
### 브랜치 네이밍 토큰
|
|
337
|
+
|
|
338
|
+
| 토큰 | 설명 |
|
|
339
|
+
|------|------|
|
|
340
|
+
| `{tracker}` | 트래커 종류 (예: `issues`) |
|
|
341
|
+
| `{type}` | 작업 타입 (예: `feature`, `fix`) |
|
|
342
|
+
| `{issue-number}` | 이슈 번호 |
|
|
343
|
+
| `{custom-id}` | 커스텀 ID |
|
|
344
|
+
| `{title-slug}` | 이슈 제목 슬러그 |
|
|
345
|
+
| `{date}` | 날짜 (YYYYMMDD) |
|
|
346
|
+
| `{username}` | GitHub 사용자명 |
|
|
231
347
|
|
|
348
|
+
값이 없는 토큰은 자동으로 제외됩니다 (`{custom-id}` 없으면 `issues-32-add-dark-mode`).
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## 주의사항
|
|
353
|
+
|
|
354
|
+
### 업데이트 시 설정 보존
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
npx @elyun/bylane # 재설치/업데이트
|
|
232
358
|
```
|
|
233
|
-
orchestrator
|
|
234
|
-
→ issue-agent (이슈 생성/분석, Figma 스펙 추출)
|
|
235
|
-
→ code-agent (코드 구현)
|
|
236
|
-
→ test-agent (테스트 실행, 실패 시 code-agent 재시도)
|
|
237
|
-
→ commit-agent (브랜치 생성 + 커밋)
|
|
238
|
-
→ pr-agent (PR 생성)
|
|
239
|
-
→ review-agent (자동 리뷰)
|
|
240
|
-
→ respond-agent (리뷰 반박 또는 반영)
|
|
241
|
-
→ notify-agent (Slack/Telegram 알림)
|
|
242
359
|
|
|
243
|
-
|
|
244
|
-
|
|
360
|
+
`.bylane/bylane.json` 사용자 설정은 절대 덮어쓰지 않습니다. 나머지 파일은 `.bak`으로 백업 후 교체됩니다.
|
|
361
|
+
|
|
362
|
+
### 모니터 버전 불일치
|
|
363
|
+
|
|
364
|
+
프로젝트의 `node_modules`에 구버전이 설치된 경우 `npm run monitor`를 사용하면 구버전이 실행됩니다.
|
|
365
|
+
항상 `npx @elyun/bylane monitor`를 사용하세요.
|
|
366
|
+
|
|
367
|
+
### 루프 중복 실행
|
|
368
|
+
|
|
369
|
+
review-loop / respond-loop는 PID를 상태 파일에 기록합니다. 모니터의 `[s]` 키 또는 `pgrep`으로 확인 후 종료하세요.
|
|
370
|
+
|
|
371
|
+
### GitHub MCP vs CLI
|
|
372
|
+
|
|
373
|
+
Claude Code 세션 내에서는 MCP가 자동 사용됩니다. 루프 폴러(`review-loop.js`, `respond-loop.js`)는 Claude 세션 외부에서 실행되므로 `gh` CLI 또는 `GITHUB_TOKEN`이 필요합니다.
|
|
374
|
+
|
|
375
|
+
### 상태 정리 (cleanup)
|
|
376
|
+
|
|
377
|
+
에이전트 크래시, 루프 강제 종료, 권한 문제 등으로 상태가 꼬인 경우 정리 명령을 실행합니다:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
npx @elyun/bylane cleanup
|
|
245
381
|
```
|
|
246
382
|
|
|
247
|
-
|
|
383
|
+
또는 모니터에서 **`[r]`** 키를 누르면 즉시 실행됩니다.
|
|
248
384
|
|
|
249
|
-
|
|
385
|
+
| 정리 항목 | 동작 |
|
|
386
|
+
|-----------|------|
|
|
387
|
+
| `.bylane/state/` 권한 | 디렉토리 755, 파일 644로 수정 |
|
|
388
|
+
| 죽은 루프 프로세스 | PID 확인 → 없으면 `stopped`로 전환 |
|
|
389
|
+
| 30분 초과 `in_progress` | `failed`로 초기화 |
|
|
390
|
+
| `subagents.json` active | PID 없는 항목 제거 |
|
|
391
|
+
| 큐의 `reviewing`/`responding` | `pending`으로 복구 (재처리 대기) |
|
|
250
392
|
|
|
251
|
-
|
|
252
|
-
|----|------|
|
|
253
|
-
| `"auto"` (기본) | MCP → CLI → API 순서로 자동 시도 |
|
|
254
|
-
| `"mcp"` | GitHub MCP 도구만 사용 |
|
|
255
|
-
| `"cli"` | `gh` CLI만 사용 |
|
|
256
|
-
| `"api"` | REST API + `$GITHUB_TOKEN`만 사용 |
|
|
393
|
+
정리 후 상태 파일이 갱신되면 chokidar가 감지하여 모니터에 즉시 반영됩니다.
|
|
257
394
|
|
|
258
|
-
|
|
395
|
+
### 하위 에이전트 제어
|
|
259
396
|
|
|
260
|
-
`
|
|
397
|
+
모니터에서 `[c]`를 누르면 `.bylane/state/cancel.json`이 생성되어 새 하위 에이전트 호출이 차단됩니다. 다시 `[c]`를 누르면 해제됩니다.
|
|
261
398
|
|
|
262
|
-
|
|
399
|
+
---
|
|
263
400
|
|
|
264
401
|
## 보안
|
|
265
402
|
|
|
266
|
-
`npm install` 시 pre-commit 훅이 자동 등록됩니다.
|
|
403
|
+
`npm install` 시 pre-commit 훅이 자동 등록됩니다.
|
|
267
404
|
|
|
268
|
-
| 항목 |
|
|
269
|
-
|
|
270
|
-
| AWS/OpenAI/GitHub/Slack/Google 키 패턴 |
|
|
271
|
-
| `.env`, `.pem`, `credentials` 등 민감 파일 |
|
|
272
|
-
| 하드코딩된 password/api_key |
|
|
273
|
-
| `node_modules` 실수 커밋 |
|
|
274
|
-
| `console.log` |
|
|
405
|
+
| 검사 항목 | 처리 |
|
|
406
|
+
|-----------|------|
|
|
407
|
+
| AWS/OpenAI/GitHub/Slack/Google 키 패턴 | 커밋 차단 |
|
|
408
|
+
| `.env`, `.pem`, `credentials` 등 민감 파일 | 커밋 차단 |
|
|
409
|
+
| 하드코딩된 password/api_key | 커밋 차단 |
|
|
410
|
+
| `node_modules` 실수 커밋 | 커밋 차단 |
|
|
411
|
+
| `console.log` | 경고 (차단 안 함) |
|
|
275
412
|
|
|
276
|
-
우회: `git commit --no-verify`
|
|
413
|
+
우회: `git commit --no-verify` (권장하지 않음)
|
|
414
|
+
|
|
415
|
+
---
|
|
277
416
|
|
|
278
417
|
## 개발
|
|
279
418
|
|
|
280
419
|
```bash
|
|
281
420
|
npm install # 의존성 설치 + pre-commit 훅 등록
|
|
282
421
|
npm test # 테스트 실행 (19개)
|
|
283
|
-
npm run monitor # 모니터 대시보드
|
|
284
|
-
npm version minor # 버전 올리기
|
|
285
|
-
npm run release # npm 배포 (커밋/푸시 후 실행)
|
|
422
|
+
npm run monitor # 모니터 대시보드 (소스에서 직접 실행)
|
|
423
|
+
npm version minor # 버전 올리기 (커밋 + 태그 자동 생성)
|
|
424
|
+
npm run release # npm 배포 (커밋/푸시 완료 후 실행)
|
|
286
425
|
```
|
|
287
426
|
|
|
427
|
+
---
|
|
428
|
+
|
|
288
429
|
## 라이선스
|
|
289
430
|
|
|
290
431
|
MIT
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bylane-cleanup
|
|
3
|
+
description: 상태 파일 권한 수정, 좀비 에이전트/루프 초기화, 큐 복구를 한 번에 실행한다.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /bylane cleanup
|
|
7
|
+
|
|
8
|
+
## 중요
|
|
9
|
+
|
|
10
|
+
cleanup은 **터미널 명령**으로 실행하세요. Claude가 직접 실행하지 않고 명령을 안내합니다.
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
아래 명령을 실행하면 상태 정리가 완료됩니다:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npx @elyun/bylane cleanup
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
또는 모니터가 실행 중이라면 **`[r]` 키**를 누르면 즉시 실행됩니다.
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 정리 항목
|
|
25
|
+
|
|
26
|
+
| 항목 | 동작 |
|
|
27
|
+
|------|------|
|
|
28
|
+
| `.bylane/state/` 권한 | 디렉토리 755, 파일 644로 수정 |
|
|
29
|
+
| 죽은 루프 프로세스 | PID 확인 → 없으면 `stopped`로 전환 |
|
|
30
|
+
| 30분 초과 `in_progress` | `failed`로 초기화 |
|
|
31
|
+
| `subagents.json` active | PID 없는 항목 제거 |
|
|
32
|
+
| 큐의 `reviewing`/`responding` | `pending`으로 복구 (재처리 대기) |
|
|
33
|
+
|
|
34
|
+
## 완료
|
|
35
|
+
|
|
36
|
+
안내 후 이 스킬을 즉시 종료합니다.
|
|
@@ -12,18 +12,7 @@ description: issue-agent의 스펙을 기반으로 프론트엔드 코드를 구
|
|
|
12
12
|
## 실행 전 상태 기록
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
|
|
16
|
-
import('./src/state.js').then(({writeState}) => {
|
|
17
|
-
writeState('code-agent', {
|
|
18
|
-
status: 'in_progress',
|
|
19
|
-
startedAt: new Date().toISOString(),
|
|
20
|
-
progress: 0,
|
|
21
|
-
currentTask: '코드 구현 시작',
|
|
22
|
-
retries: 0,
|
|
23
|
-
log: []
|
|
24
|
-
})
|
|
25
|
-
})
|
|
26
|
-
"
|
|
15
|
+
npx @elyun/bylane state write code-agent '{"status":"in_progress","startedAt":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","progress":0,"currentTask":"코드 구현 시작","retries":0,"log":[]}'
|
|
27
16
|
```
|
|
28
17
|
|
|
29
18
|
## 실행 흐름
|
|
@@ -36,21 +25,11 @@ import('./src/state.js').then(({writeState}) => {
|
|
|
36
25
|
4. 기존 코드베이스 패턴 파악 후 동일 스타일로 작성 (TypeScript, 테스트 파일 위치 등)
|
|
37
26
|
5. 각 파일 구현 후 `appendLog` 호출:
|
|
38
27
|
```bash
|
|
39
|
-
|
|
28
|
+
npx @elyun/bylane state append code-agent "FILENAME 구현 완료"
|
|
40
29
|
```
|
|
41
30
|
6. 구현 완료 후 상태 업데이트:
|
|
42
31
|
```bash
|
|
43
|
-
|
|
44
|
-
import('./src/state.js').then(({writeState}) => {
|
|
45
|
-
writeState('code-agent', {
|
|
46
|
-
status: 'completed',
|
|
47
|
-
progress: 100,
|
|
48
|
-
currentTask: '구현 완료',
|
|
49
|
-
retries: 0,
|
|
50
|
-
changedFiles: CHANGED_FILES_ARRAY
|
|
51
|
-
})
|
|
52
|
-
})
|
|
53
|
-
"
|
|
32
|
+
npx @elyun/bylane state write code-agent '{"status":"completed","progress":100,"currentTask":"구현 완료","retries":0,"changedFiles":CHANGED_FILES_ARRAY}'
|
|
54
33
|
```
|
|
55
34
|
|
|
56
35
|
## 코딩 원칙
|
|
@@ -14,7 +14,7 @@ description: 변경된 파일들을 conventional commit 형식으로 커밋한
|
|
|
14
14
|
## 실행 전 상태 기록
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
npx @elyun/bylane state write commit-agent '{"status":"in_progress","startedAt":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","progress":0,"retries":0,"log":[]}'
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
## GitHub 커밋 템플릿 탐지
|
|
@@ -36,16 +36,7 @@ ls .gitmessage .github/commit-template.txt .github/COMMIT_TEMPLATE.md 2>/dev/nul
|
|
|
36
36
|
|
|
37
37
|
1. 브랜치명 생성:
|
|
38
38
|
```bash
|
|
39
|
-
|
|
40
|
-
Promise.all([
|
|
41
|
-
import('./src/branch.js'),
|
|
42
|
-
import('./src/config.js')
|
|
43
|
-
]).then(([{buildBranchNameFromConfig},{loadConfig}]) => {
|
|
44
|
-
const config = loadConfig()
|
|
45
|
-
const branch = buildBranchNameFromConfig(config, ISSUE_NUMBER)
|
|
46
|
-
console.log(branch)
|
|
47
|
-
})
|
|
48
|
-
"
|
|
39
|
+
npx @elyun/bylane branch ISSUE_NUMBER
|
|
49
40
|
```
|
|
50
41
|
|
|
51
42
|
2. 브랜치 생성 및 체크아웃:
|
|
@@ -72,14 +63,7 @@ ls .gitmessage .github/commit-template.txt .github/COMMIT_TEMPLATE.md 2>/dev/nul
|
|
|
72
63
|
|
|
73
64
|
6. 상태 업데이트:
|
|
74
65
|
```bash
|
|
75
|
-
|
|
76
|
-
import('./src/state.js').then(({writeState})=>writeState('commit-agent',{
|
|
77
|
-
status:'completed',
|
|
78
|
-
progress:100,
|
|
79
|
-
branchName:'BRANCH_NAME',
|
|
80
|
-
commitSha:'COMMIT_SHA'
|
|
81
|
-
}))
|
|
82
|
-
"
|
|
66
|
+
npx @elyun/bylane state write commit-agent '{"status":"completed","progress":100,"branchName":"BRANCH_NAME","commitSha":"COMMIT_SHA"}'
|
|
83
67
|
```
|
|
84
68
|
|
|
85
69
|
## 출력
|
|
@@ -102,7 +102,7 @@ Figma MCP `get_file` 또는 `get_node` 도구로 프레임/컴포넌트 분석.
|
|
|
102
102
|
|
|
103
103
|
상태 기록:
|
|
104
104
|
```bash
|
|
105
|
-
|
|
105
|
+
npx @elyun/bylane state write issue-agent '{"status":"in_progress","startedAt":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","progress":0,"retries":0}'
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
## 수동 실행
|
|
@@ -14,7 +14,7 @@ description: 워크플로우 완료 또는 개입 필요 시 Slack/Telegram으
|
|
|
14
14
|
## 실행 전 상태 기록
|
|
15
15
|
|
|
16
16
|
```bash
|
|
17
|
-
|
|
17
|
+
npx @elyun/bylane state write notify-agent '{"status":"in_progress","startedAt":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","progress":0,"retries":0,"log":[]}'
|
|
18
18
|
```
|
|
19
19
|
|
|
20
20
|
## 실행 흐름
|