@elyun/bylane 1.17.0 → 1.19.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 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
- - **프로젝트 분석** — 코드 스타일·디자인 토큰·아키텍처를 자동 분석해 `.claude/instructions/`에 저장, CLAUDE.md에 자동 import
10
- - **전체 워크플로우 자동화** — `/bylane 다크모드 토글 추가해줘` 한 줄로 이슈 생성부터 PR까지
11
- - **개별 실행 가능** — 각 에이전트를 단독으로 실행 가능
12
- - **실시간 모니터링** — 2열 그리드 터미널 TUI 대시보드
13
- - **자동 리뷰 루프** 5분 주기로 review 요청 PR 자동 리뷰
14
- - **자동 대응 루프** 5분 주기로 PR 리뷰/코멘트 자동 대응 (accept/rebut)
15
- - **피드백 루프** 테스트 실패 자동 재시도 (설정 가능)
16
- - **GitHub 접근 방법** MCP / CLI(`gh`) / REST API 자동 감지
17
- - **리뷰 템플릿** 코드 예시, 모델 명시, 커스텀 푸터 설정 가능
18
- - **에이전트별 모델 설정** 에이전트마다 다른 AI 모델 지정 가능
19
- - **Figma MCP 연동** 이슈의 Figma 링크에서 스펙 자동 추출 (선택적)
20
- - **Slack / Telegram 알림** 완료 또는 개입 필요 알림
21
- - **pre-commit 보안 훅** 시크릿/민감 파일/console.log 자동 검사
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 기본 제공), `gh` CLI, 또는 `GITHUB_TOKEN` 중 하나
28
- - Slack MCP / Telegram (알림 사용 )
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
- Skills, Commands, Hooks 파일을 `~/.claude/` 하위 디렉토리에 자동으로 복사합니다.
40
- 기존 파일이 있으면 `.bak`으로 백업 후 교체합니다.
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,54 @@ 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 # pre-commit 보안 훅 자동 등록
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
- 7단계 인터랙티브 설정:
66
- 1. GitHub 접근 방법 (MCP / CLI / API / auto)
67
- 2. 이슈 트래커 (GitHub Issues / Linear / 둘 다)
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
+ ### 사전 점검
73
+
74
+ 설정이 올바른지 확인하려면:
75
+
76
+ ```bash
77
+ npx @elyun/bylane preflight
78
+ ```
79
+
80
+ 또는 Claude Code에서:
81
+
82
+ ```
83
+ /bylane preflight
84
+ ```
85
+
86
+ 점검 항목: bylane.json 존재, GitHub CLI 로그인, GITHUB_TOKEN, Slack/Telegram 연동 설정.
87
+ 문제가 있으면 항목마다 수정 방법을 안내합니다.
88
+
89
+ ```
90
+ ── byLane 사전 점검 ──
91
+
92
+ ✓ bylane 설정 v1.0
93
+ ✓ GitHub CLI (fallback) github.com
94
+ ! GitHub Token (fallback) GITHUB_TOKEN 환경변수 없음
95
+ → export GITHUB_TOKEN=ghp_xxxx
96
+ ```
97
+
98
+ 모든 에이전트 실행 전 자동으로 점검하여 연동 오류로 인한 중간 실패를 방지합니다.
99
+
100
+ ---
74
101
 
75
102
  ## 사용법
76
103
 
77
104
  ### 전체 워크플로우
78
105
 
79
- 자연어로 작업 내용을 설명하면 오케스트레이터가 적절한 에이전트를 자동으로 실행합니다.
80
-
81
106
  ```
82
107
  /bylane 다크모드 토글 버튼 추가해줘
83
108
  /bylane issue #123 구현해줘
@@ -94,84 +119,193 @@ Claude Code를 열고 프로젝트 디렉토리에서:
94
119
  /bylane test 테스트 실행
95
120
  /bylane commit 커밋 생성
96
121
  /bylane pr PR 생성
97
- /bylane review [PR번호] PR 리뷰
98
- /bylane review-loop 5분 주기 자동 리뷰 루프
99
- /bylane respond [PR번호] 리뷰 반박/반영
100
- /bylane respond-loop 5분 주기 자동 대응 루프
122
+ /bylane review [#PR번호] [scope] PR 인라인 리뷰
123
+ /bylane respond [#PR번호] [모드] 리뷰 반박/반영
101
124
  /bylane notify 알림 발송
102
125
  /bylane status 현재 상태 요약
103
126
  ```
104
127
 
105
128
  ### 자동 루프
106
129
 
107
- 두 루프를 동시에 실행하면 review 요청과 리뷰 대응을 모두 자동화합니다:
130
+ 두 루프를 동시에 실행하면 리뷰 요청과 리뷰 대응을 완전 자동화합니다:
108
131
 
109
132
  ```bash
110
- node src/review-loop.js & # 내게 요청된 PR 자동 리뷰
111
- node src/respond-loop.js & # 내 PR 리뷰 자동 대응
133
+ node src/review-loop.js & # 내게 요청된 PR 자동 리뷰 (5분 주기)
134
+ node src/respond-loop.js & # 내 PR 리뷰 자동 대응 (5분 주기)
112
135
  ```
113
136
 
114
- ### 모니터 대시보드
137
+ 루프 종료:
115
138
 
116
139
  ```bash
117
- npm run monitor
118
- # 또는
119
- /bylane monitor
140
+ kill $(pgrep -f review-loop.js)
141
+ kill $(pgrep -f respond-loop.js)
142
+ # 또는 모니터에서 [s]
120
143
  ```
121
144
 
145
+ Claude Code에서 실행:
146
+
122
147
  ```
123
- +---------------------------+--------------------------------------+
124
- | AGENT PIPELINE | AGENT LOG [LIVE] |
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
- +---------------------------+--------------------------------------+
148
+ /bylane review-loop 자동 리뷰 루프 시작 (검사 범위 선택 후 시작)
149
+ /bylane respond-loop 자동 대응 루프 시작
135
150
  ```
136
151
 
137
- ## 프로젝트 분석 (analyze)
152
+ ---
138
153
 
139
- `/bylane analyze`를 실행하면 현재 프로젝트를 자동 분석하여 Claude Code가 참조할 수 있는 instruction 파일을 생성합니다.
154
+ ## 모니터 대시보드
140
155
 
141
- ### 생성되는 파일
156
+ ```bash
157
+ npx @elyun/bylane monitor
158
+ ```
142
159
 
143
- | 파일 | 내용 |
144
- |---|---|
145
- | `.claude/instructions/code-style.md` | 언어, 포맷팅, 네이밍 컨벤션, import 규칙, 금지 패턴 |
146
- | `.claude/instructions/design-tokens.md` | 색상 팔레트, 타이포그래피, 간격, 브레이크포인트, 다크모드 |
147
- | `.claude/instructions/architecture.md` | 프레임워크, 렌더링 전략, 상태관리, 데이터 페칭, 폴더 구조 |
160
+ > `npx`를 사용하면 항상 최신 버전이 실행됩니다. 로컬 구버전이 실행되지 않습니다.
161
+
162
+ ```
163
+ +-----------------------------+--------------------------------------+
164
+ | AGENT PIPELINE | AGENT LOG [LIVE] |
165
+ | | |
166
+ | [>] code-agent 12s ##-- | 17:32:38 code-agent |
167
+ | [ ] test-agent 대기 | > ThemeToggle.tsx 생성 |
168
+ | [v] issue-agent | 17:30:09 issue-agent |
169
+ | | > spec.json 저장됨 |
170
+ | LOOPS | |
171
+ | [>] review-loop 45s | |
172
+ | [-] respond-loop 미실행 | |
173
+ | | |
174
+ | SUBAGENTS | |
175
+ | [>] executor 8s 코드... | |
176
+ +-----------------------------+--------------------------------------+
177
+ | QUEUE | SYSTEM STATUS |
178
+ | PR #45 review pending | GitHub OK |
179
+ | PR #48 respond pending | Loops 1 running |
180
+ +-----------------------------+--------------------------------------+
181
+ [q]종료 [c]에이전트취소토글 [s]루프종료 [Tab]포커스 [j/k]로그스크롤
182
+ ```
183
+
184
+ ### 단축키
185
+
186
+ | 키 | 동작 |
187
+ |----|------|
188
+ | `q` / `Ctrl+C` | 모니터 종료 |
189
+ | `r` | 상태 정리 (권한 수정, 좀비 초기화, 큐 복구) |
190
+ | `c` | 하위 에이전트 취소 플래그 토글 (새 Agent 호출 차단) |
191
+ | `s` | 실행 중인 루프 선택 → SIGTERM 전송 |
192
+ | `Tab` | 패널 포커스 이동 |
193
+ | `j` / `k` | 로그 스크롤 |
194
+
195
+ ---
196
+
197
+ ## 코드 리뷰
198
+
199
+ ### 검사 범위 선택
200
+
201
+ 리뷰 실행 시 검사 항목을 선택합니다. 선택 없이 Enter → 전체 검사:
202
+
203
+ ```
204
+ 검사 항목을 선택하세요 (쉼표 구분, Enter=전체):
205
+ 1. grammar — 문법, 오탈자, 주석/변수명 언어 일관성
206
+ 2. domain — 비즈니스 로직, 도메인 규칙 준수 여부
207
+ 3. code — 코드 스타일, 컨벤션, 중복, 복잡도
208
+ 4. security — 보안 취약점, 시크릿 노출, 인증/인가 이슈
209
+ ```
210
+
211
+ 인자로도 지정 가능:
212
+ ```
213
+ /bylane review #45 code,security
214
+ ```
215
+
216
+ ### 인라인 코멘트
217
+
218
+ 모든 리뷰 코멘트는 **해당 코드 라인에 직접** 등록됩니다. 수정 제안이 있으면 GitHub suggestion 블록으로 작성되어 "Apply suggestion" 버튼으로 바로 적용할 수 있습니다.
219
+
220
+ ```
221
+ 제목
222
+
223
+ 설명
224
+
225
+ ```suggestion
226
+ // 수정 제안 코드
227
+ ```
228
+ ```
229
+
230
+ ### GitHub 리뷰 템플릿 우선 적용
231
+
232
+ 프로젝트에 아래 파일이 있으면 해당 형식을 **최우선**으로 따릅니다:
233
+
234
+ ```
235
+ .github/REVIEW_TEMPLATE.md
236
+ .github/CODE_REVIEW_TEMPLATE.md
237
+ docs/REVIEW_TEMPLATE.md
238
+ ```
239
+
240
+ 없으면 `templates/review-template.md`를 사용합니다.
241
+
242
+ ---
148
243
 
149
- ### 동작 방식
244
+ ## 리뷰 대응 (respond)
245
+
246
+ | 모드 | 동작 |
247
+ |------|------|
248
+ | `auto` (기본) | 각 코멘트를 분석해 수정 반영 또는 반박을 자동 판단, 요약 확인 후 실행 |
249
+ | `accept` | 모든 코멘트 수정 반영 |
250
+ | `rebut` | 모든 코멘트 반박 |
251
+ | `manual` | 코멘트별로 수정/반박/건너뜀 직접 선택 |
252
+
253
+ ```
254
+ /bylane respond #45 auto 모드 (기본)
255
+ /bylane respond #45 manual 코멘트별 수동 선택
256
+ /bylane respond #45 accept 전체 반영
257
+ ```
150
258
 
151
- 1. ESLint/Prettier/tsconfig, Tailwind config, CSS 변수, package.json 설정 파일을 자동 탐색
152
- 2. 소스 파일을 샘플링하여 실제 사용 패턴 파악
153
- 3. 분석 결과를 `.claude/instructions/`에 Markdown 파일로 저장
154
- 4. `CLAUDE.md`에 `@.claude/instructions/*.md` import 구문 자동 추가
155
- - `CLAUDE.md`가 없으면 `/init`으로 먼저 생성
259
+ auto 모드에서는 실행 요약을 먼저 보여주고 확인을 받습니다:
156
260
 
157
261
  ```
158
- /bylane analyze # 분석 파일 생성 (기존 파일 확인 요청)
159
- /bylane analyze --force # 기존 instruction 파일 강제 덮어쓰기
262
+ 코멘트 #1: [반영] null 체크 누락 코드 수정
263
+ 코멘트 #2: [반박] 의도된 설계 (이슈 #12 참조)
264
+ 진행할까요? (y/n)
160
265
  ```
161
266
 
162
- 커스텀 내용은 `.claude/instructions/structure.md`를 직접 작성하고 CLAUDE.md에 `@.claude/instructions/structure.md`를 추가하면 재분석 시에도 유지됩니다.
267
+ ---
268
+
269
+ ## 프로젝트 분석
270
+
271
+ `/bylane analyze` 실행 시 현재 프로젝트를 자동 분석하여 Claude Code가 참조할 instruction 파일을 생성합니다.
272
+
273
+ | 파일 | 내용 |
274
+ |------|------|
275
+ | `.claude/instructions/code-style.md` | 언어, 포맷팅, 네이밍 컨벤션, import 규칙 |
276
+ | `.claude/instructions/design-tokens.md` | 색상, 타이포그래피, 간격, 다크모드 |
277
+ | `.claude/instructions/architecture.md` | 프레임워크, 상태관리, 폴더 구조 |
278
+
279
+ ESLint/Prettier/tsconfig, Tailwind config, CSS 변수 등 설정 파일을 자동 탐색하고 실제 소스 패턴을 샘플링합니다. 분석 후 `CLAUDE.md`에 import 구문을 자동 추가합니다.
163
280
 
164
- ## 브랜치 네이밍 패턴
281
+ ```
282
+ /bylane analyze 기존 파일 있으면 확인 요청
283
+ /bylane analyze --force 강제 덮어쓰기
284
+ ```
165
285
 
166
- | 패턴 | 예시 |
167
- |---|---|
168
- | `{tracker}-{issue-number}` | `issues-32` |
169
- | `{tracker}-{issue-number}-{custom-id}` | `issues-32-C-12` |
170
- | `{type}/{issue-number}-{title-slug}` | `feature/32-add-dark-mode` |
286
+ ---
171
287
 
172
- 사용 가능한 토큰: `{tracker}`, `{type}`, `{issue-number}`, `{custom-id}`, `{title-slug}`, `{date}`, `{username}`
288
+ ## 에이전트 파이프라인
173
289
 
174
- 빈 토큰은 자동으로 제외됩니다 (`{custom-id}` 없으면 `issues-32`).
290
+ ```
291
+ orchestrator
292
+ → issue-agent 이슈 생성/분석, Figma 스펙 추출 (선택)
293
+ → code-agent 코드 구현
294
+ → test-agent 테스트 실행, 실패 시 code-agent 재시도
295
+ → commit-agent 브랜치 생성 + 커밋
296
+ → pr-agent PR 생성
297
+ → review-agent 인라인 코드 리뷰
298
+ → respond-agent 리뷰 반박 또는 반영
299
+ → notify-agent Slack/Telegram 알림
300
+
301
+ analyze-agent 독립: 프로젝트 분석 → .claude/instructions/ 생성
302
+ review-loop 독립: 5분 주기 review 요청 감지
303
+ respond-loop 독립: 5분 주기 리뷰 코멘트 감지
304
+ ```
305
+
306
+ 각 에이전트는 `.bylane/state/{name}.json`에 상태를 기록합니다. 모니터가 1초마다 폴링합니다.
307
+
308
+ ---
175
309
 
176
310
  ## 설정 파일 (`.bylane/bylane.json`)
177
311
 
@@ -208,6 +342,7 @@ npm run monitor
208
342
  "code-agent": "claude-sonnet-4-6",
209
343
  "review-agent": "claude-sonnet-4-6",
210
344
  "respond-agent": "claude-opus-4-6",
345
+ "analyze-agent": "claude-opus-4-6",
211
346
  "test-agent": "claude-haiku-4-5-20251001",
212
347
  "commit-agent": "claude-haiku-4-5-20251001",
213
348
  "pr-agent": "claude-haiku-4-5-20251001",
@@ -216,10 +351,9 @@ npm run monitor
216
351
  "review": {
217
352
  "model": "claude-sonnet-4-6",
218
353
  "language": "ko",
219
- "includeModel": true,
220
354
  "includeCodeExample": true,
221
355
  "templateFile": "",
222
- "footer": "Reviewed by byLane · model: {model}"
356
+ "footer": "{model} · {date}"
223
357
  },
224
358
  "extensions": {
225
359
  "figma": { "enabled": false, "useAt": "issue-analysis" }
@@ -227,64 +361,99 @@ npm run monitor
227
361
  }
228
362
  ```
229
363
 
230
- ## 에이전트 파이프라인
364
+ ### 브랜치 네이밍 토큰
365
+
366
+ | 토큰 | 설명 |
367
+ |------|------|
368
+ | `{tracker}` | 트래커 종류 (예: `issues`) |
369
+ | `{type}` | 작업 타입 (예: `feature`, `fix`) |
370
+ | `{issue-number}` | 이슈 번호 |
371
+ | `{custom-id}` | 커스텀 ID |
372
+ | `{title-slug}` | 이슈 제목 슬러그 |
373
+ | `{date}` | 날짜 (YYYYMMDD) |
374
+ | `{username}` | GitHub 사용자명 |
375
+
376
+ 값이 없는 토큰은 자동으로 제외됩니다 (`{custom-id}` 없으면 `issues-32-add-dark-mode`).
377
+
378
+ ---
231
379
 
380
+ ## 주의사항
381
+
382
+ ### 업데이트 시 설정 보존
383
+
384
+ ```bash
385
+ npx @elyun/bylane # 재설치/업데이트
232
386
  ```
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
387
 
243
- review-loop (독립 실행: 5분 주기 리뷰 요청 감지)
244
- respond-loop (독립 실행: 5분 주기 리뷰 코멘트 감지)
388
+ `.bylane/bylane.json` 사용자 설정은 절대 덮어쓰지 않습니다. 나머지 파일은 `.bak`으로 백업 후 교체됩니다.
389
+
390
+ ### 모니터 버전 불일치
391
+
392
+ 프로젝트의 `node_modules`에 구버전이 설치된 경우 `npm run monitor`를 사용하면 구버전이 실행됩니다.
393
+ 항상 `npx @elyun/bylane monitor`를 사용하세요.
394
+
395
+ ### 루프 중복 실행
396
+
397
+ review-loop / respond-loop는 PID를 상태 파일에 기록합니다. 모니터의 `[s]` 키 또는 `pgrep`으로 확인 후 종료하세요.
398
+
399
+ ### GitHub MCP vs CLI
400
+
401
+ Claude Code 세션 내에서는 MCP가 자동 사용됩니다. 루프 폴러(`review-loop.js`, `respond-loop.js`)는 Claude 세션 외부에서 실행되므로 `gh` CLI 또는 `GITHUB_TOKEN`이 필요합니다.
402
+
403
+ ### 상태 정리 (cleanup)
404
+
405
+ 에이전트 크래시, 루프 강제 종료, 권한 문제 등으로 상태가 꼬인 경우 정리 명령을 실행합니다:
406
+
407
+ ```bash
408
+ npx @elyun/bylane cleanup
245
409
  ```
246
410
 
247
- ## GitHub 접근 방법
411
+ 또는 모니터에서 **`[r]`** 키를 누르면 즉시 실행됩니다.
248
412
 
249
- `github.method` 설정으로 제어:
413
+ | 정리 항목 | 동작 |
414
+ |-----------|------|
415
+ | `.bylane/state/` 권한 | 디렉토리 755, 파일 644로 수정 |
416
+ | 죽은 루프 프로세스 | PID 확인 → 없으면 `stopped`로 전환 |
417
+ | 30분 초과 `in_progress` | `failed`로 초기화 |
418
+ | `subagents.json` active | PID 없는 항목 제거 |
419
+ | 큐의 `reviewing`/`responding` | `pending`으로 복구 (재처리 대기) |
250
420
 
251
- | | 동작 |
252
- |----|------|
253
- | `"auto"` (기본) | MCP → CLI → API 순서로 자동 시도 |
254
- | `"mcp"` | GitHub MCP 도구만 사용 |
255
- | `"cli"` | `gh` CLI만 사용 |
256
- | `"api"` | REST API + `$GITHUB_TOKEN`만 사용 |
421
+ 정리 상태 파일이 갱신되면 chokidar가 감지하여 모니터에 즉시 반영됩니다.
257
422
 
258
- ## 리뷰 템플릿
423
+ ### 하위 에이전트 제어
259
424
 
260
- `templates/review-template.md`를 복사해 커스터마이즈한 `review.templateFile`에 경로를 지정합니다.
425
+ 모니터에서 `[c]`를 누르면 `.bylane/state/cancel.json`이 생성되어 하위 에이전트 호출이 차단됩니다. 다시 `[c]`를 누르면 해제됩니다.
261
426
 
262
- 기본 구성: 심각도 레이블 (CRITICAL/HIGH/MEDIUM/LOW), Before/After 코드 예시, 사용 모델 명시, 커스텀 푸터.
427
+ ---
263
428
 
264
429
  ## 보안
265
430
 
266
- `npm install` 시 pre-commit 훅이 자동 등록됩니다. 커밋마다 아래를 검사합니다:
431
+ `npm install` 시 pre-commit 훅이 자동 등록됩니다.
267
432
 
268
- | 항목 | 심각도 |
269
- |------|--------|
270
- | AWS/OpenAI/GitHub/Slack/Google 키 패턴 | CRITICAL (차단) |
271
- | `.env`, `.pem`, `credentials` 등 민감 파일 | CRITICAL (차단) |
272
- | 하드코딩된 password/api_key | CRITICAL (차단) |
273
- | `node_modules` 실수 커밋 | CRITICAL (차단) |
274
- | `console.log` | WARN (경고만) |
433
+ | 검사 항목 | 처리 |
434
+ |-----------|------|
435
+ | AWS/OpenAI/GitHub/Slack/Google 키 패턴 | 커밋 차단 |
436
+ | `.env`, `.pem`, `credentials` 등 민감 파일 | 커밋 차단 |
437
+ | 하드코딩된 password/api_key | 커밋 차단 |
438
+ | `node_modules` 실수 커밋 | 커밋 차단 |
439
+ | `console.log` | 경고 (차단 안 함) |
275
440
 
276
- 우회: `git commit --no-verify`
441
+ 우회: `git commit --no-verify` (권장하지 않음)
442
+
443
+ ---
277
444
 
278
445
  ## 개발
279
446
 
280
447
  ```bash
281
448
  npm install # 의존성 설치 + pre-commit 훅 등록
282
449
  npm test # 테스트 실행 (19개)
283
- npm run monitor # 모니터 대시보드
284
- npm version minor # 버전 올리기
285
- npm run release # npm 배포 (커밋/푸시 후 실행)
450
+ npm run monitor # 모니터 대시보드 (소스에서 직접 실행)
451
+ npm version minor # 버전 올리기 (커밋 + 태그 자동 생성)
452
+ npm run release # npm 배포 (커밋/푸시 완료 후 실행)
286
453
  ```
287
454
 
455
+ ---
456
+
288
457
  ## 라이선스
289
458
 
290
459
  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
- node -e "
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
- node -e "import('./src/state.js').then(({appendLog})=>appendLog('code-agent','FILENAME 구현 완료'))"
28
+ npx @elyun/bylane state append code-agent "FILENAME 구현 완료"
40
29
  ```
41
30
  6. 구현 완료 후 상태 업데이트:
42
31
  ```bash
43
- node -e "
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
- node -e "import('./src/state.js').then(({writeState})=>writeState('commit-agent',{status:'in_progress',startedAt:new Date().toISOString(),progress:0,retries:0,log:[]}))"
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
- node -e "
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
- node -e "
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
- node -e "import('./src/state.js').then(({writeState})=>writeState('issue-agent',{status:'in_progress',startedAt:new Date().toISOString(),progress:0,retries:0}))"
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
  ## 수동 실행