@elyun/bylane 1.31.0 → 1.33.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
@@ -28,7 +28,7 @@ GitHub Issues에서 시작해 코드 구현, 테스트, 커밋, PR 생성, 리
28
28
  - [Claude Code](https://claude.ai/code) CLI
29
29
  - Node.js 20+
30
30
  - GitHub MCP (Claude Code 기본 제공) / `gh` CLI / `GITHUB_TOKEN` 중 하나
31
- - Slack MCP 또는 Telegram (알림 사용 시, 선택사항)
31
+ - Slack Incoming Webhook URL 또는 Telegram Bot Token (알림 사용 시, 선택사항)
32
32
  - Figma MCP (디자인 연동 사용 시, 선택사항)
33
33
 
34
34
  ---
@@ -443,7 +443,7 @@ respond-loop 독립: 5분 주기 리뷰 코멘트 감지
443
443
  "linear": { "enabled": false, "apiKey": "" }
444
444
  },
445
445
  "notifications": {
446
- "slack": { "enabled": true, "channel": "#dev-alerts" },
446
+ "slack": { "enabled": true, "webhookUrl": "https://hooks.slack.com/services/T.../B.../..." },
447
447
  "telegram": { "enabled": false, "chatId": "" }
448
448
  },
449
449
  "workflow": {
@@ -486,6 +486,54 @@ respond-loop 독립: 5분 주기 리뷰 코멘트 감지
486
486
  }
487
487
  ```
488
488
 
489
+ ### Slack 웹훅 설정 (Workflow Builder)
490
+
491
+ **1. Workflow 생성**
492
+
493
+ Slack → **Automations** → **New Workflow** → **Start from scratch**
494
+ 트리거: **Webhook**
495
+
496
+ **2. 변수 스키마 정의**
497
+
498
+ 웹훅 트리거 설정에서 아래 변수를 추가:
499
+
500
+ | 변수명 | 타입 |
501
+ |--------|------|
502
+ | `title` | 텍스트 |
503
+ | `status` | 텍스트 |
504
+ | `url` | 텍스트 |
505
+ | `elapsed` | 텍스트 |
506
+ | `reason` | 텍스트 |
507
+
508
+ **3. 메시지 단계 추가**
509
+
510
+ "Send a message" 단계에서 변수 참조:
511
+ ```
512
+ {{title}} — {{status}}
513
+ {{url}}
514
+ {{elapsed}}{{reason}}
515
+ ```
516
+
517
+ **4. Workflow 게시 후 Webhook URL 복사**
518
+
519
+ URL 형식: `https://hooks.slack.com/workflows/...`
520
+
521
+ **5. `.bylane/bylane.json`에 입력**
522
+
523
+ ```json
524
+ "notifications": {
525
+ "slack": {
526
+ "enabled": true,
527
+ "webhookUrl": "https://hooks.slack.com/workflows/..."
528
+ }
529
+ }
530
+ ```
531
+
532
+ 알림이 발송되는 시점:
533
+ - ✅ PR 생성/머지 완료
534
+ - ⚠️ 테스트 실패로 개입 필요
535
+ - ❌ 파이프라인 오류
536
+
489
537
  ### 브랜치 네이밍 토큰
490
538
 
491
539
  | 토큰 | 설명 |
@@ -38,18 +38,44 @@ PR: PR_URL
38
38
 
39
39
  ### Slack 알림 (notifications.slack.enabled: true)
40
40
 
41
- Slack MCP `slack_send_message` 도구 사용:
42
- - 채널: `config.notifications.slack.channel`
43
- - 완료 메시지:
44
- ```
45
- [byLane] 완료: TITLE
46
- PR: PR_URL | 소요 시간: ELAPSED
47
- ```
48
- - 개입 필요 메시지:
49
- ```
50
- [byLane] ⚠️ 개입 필요: TITLE
51
- 이유: REASON | 확인: PR_URL
52
- ```
41
+ Slack Workflow Builder 웹훅으로 POST한다.
42
+ Workflow에 정의된 변수 스키마와 페이로드 키가 일치해야 한다.
43
+
44
+ ```bash
45
+ # 완료 (type: completed)
46
+ curl -s -X POST "$SLACK_WEBHOOK_URL" \
47
+ -H "Content-Type: application/json" \
48
+ -d "{
49
+ \"title\": \"TITLE\",
50
+ \"status\": \"completed\",
51
+ \"url\": \"PR_URL\",
52
+ \"elapsed\": \"ELAPSED\",
53
+ \"reason\": \"\"
54
+ }"
55
+
56
+ # 개입 필요 (type: escalated / error)
57
+ curl -s -X POST "$SLACK_WEBHOOK_URL" \
58
+ -H "Content-Type: application/json" \
59
+ -d "{
60
+ \"title\": \"TITLE\",
61
+ \"status\": \"escalated\",
62
+ \"url\": \"PR_URL\",
63
+ \"elapsed\": \"\",
64
+ \"reason\": \"REASON\"
65
+ }"
66
+ ```
67
+
68
+ Workflow Builder에서 정의해야 할 변수 스키마:
69
+
70
+ | 변수명 | 타입 | 설명 |
71
+ |--------|------|------|
72
+ | `title` | 텍스트 | 작업 제목 |
73
+ | `status` | 텍스트 | `completed` / `escalated` / `error` |
74
+ | `url` | 텍스트 | GitHub PR/Issue URL |
75
+ | `elapsed` | 텍스트 | 소요 시간 (완료 시) |
76
+ | `reason` | 텍스트 | 실패/에스컬레이션 이유 |
77
+
78
+ `webhookUrl`이 비어 있으면 Slack 알림을 건너뛴다.
53
79
 
54
80
  ### Telegram 알림 (notifications.telegram.enabled: true)
55
81
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elyun/bylane",
3
- "version": "1.31.0",
3
+ "version": "1.33.0",
4
4
  "description": "Frontend development harness for Claude Code",
5
5
  "type": "module",
6
6
  "bin": {
package/src/config.js CHANGED
@@ -8,7 +8,7 @@ export const DEFAULT_CONFIG = {
8
8
  linear: { enabled: false, apiKey: '' }
9
9
  },
10
10
  notifications: {
11
- slack: { enabled: false, channel: '' },
11
+ slack: { enabled: false, webhookUrl: '' },
12
12
  telegram: { enabled: false, chatId: '' }
13
13
  },
14
14
  team: {