@brxce/mcp-server 1.1.16 → 1.1.17
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 +40 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -1
- package/dist/index.js.map +1 -1
- package/dist/install-skill.d.ts +15 -0
- package/dist/install-skill.d.ts.map +1 -0
- package/dist/install-skill.js +166 -0
- package/dist/install-skill.js.map +1 -0
- package/package.json +2 -1
- package/skills/brxce-mcp/SKILL.md +147 -0
- package/skills/brxce-mcp/references/error-recovery.md +274 -0
- package/skills/brxce-mcp/references/footguns.md +277 -0
- package/skills/brxce-mcp/references/tool-selection.md +245 -0
- package/skills/brxce-mcp/references/workflows.md +274 -0
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
# BRXCE MCP Tool Selection
|
|
2
|
+
|
|
3
|
+
89개 툴 전체 분류 + "이럴 때 무엇을 쓰는가" 결정 트리. SKILL.md 본문은 카테고리 표만 보여주고 여기는 결정 트리 + 모든 툴의 한 줄 설명.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 결정 트리: 무엇을 쓸 것인가
|
|
8
|
+
|
|
9
|
+
### "워크노드를 찾고 싶다"
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
nodeId/displayId/UUID를 이미 안다?
|
|
13
|
+
├── UUID + 상세 한 건
|
|
14
|
+
│ └── brxce_worknode_detail({ nodeId: <uuid> })
|
|
15
|
+
│
|
|
16
|
+
├── UUID + 단순 11 필드
|
|
17
|
+
│ └── brxce_read_worknodes({ nodeIds: [<uuid>] }) # alias of worknodeIds
|
|
18
|
+
│
|
|
19
|
+
├── displayId (#5723)
|
|
20
|
+
│ └── brxce_worknode_detail({ nodeId: "#5723", workspaceId })
|
|
21
|
+
│
|
|
22
|
+
└── ID 모름 — 검색해야 함
|
|
23
|
+
│
|
|
24
|
+
├── title/description 키워드
|
|
25
|
+
│ └── brxce_read_worknodes({ workspaceId, query: "..." })
|
|
26
|
+
│
|
|
27
|
+
├── 필터 조합 (status + tags + priority + due date)
|
|
28
|
+
│ └── brxce_filter_worknodes({ workspaceId, status: [...], tags: [...], ... })
|
|
29
|
+
│
|
|
30
|
+
├── 특정 멤버에게 할당된 것 전부
|
|
31
|
+
│ └── brxce_worknodes_by_member({ workspaceId, userId })
|
|
32
|
+
│
|
|
33
|
+
├── 특정 태그 붙은 것
|
|
34
|
+
│ └── brxce_find_worknodes_by_tags({ workspaceId, tagSlugs: ["..."] })
|
|
35
|
+
│
|
|
36
|
+
├── 미할당 / 인박스
|
|
37
|
+
│ └── brxce_workspace_inbox({ workspaceId })
|
|
38
|
+
│
|
|
39
|
+
└── 내가 작업 중인 것 (활성 / 완료 / 긴급)
|
|
40
|
+
└── brxce_my_work({ workspaceId, mode: "active" })
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### "워크노드를 만들거나 바꾸고 싶다"
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
혼자 vs 여러 개?
|
|
47
|
+
├── 1개 단순 생성/수정 → create_worknodes / update_worknodes (single-element array)
|
|
48
|
+
│
|
|
49
|
+
├── 여러 개 같은 액션 (complete / archive / delete / move / status / priority)
|
|
50
|
+
│ └── brxce_batch_actions({ action, nodeIds, params })
|
|
51
|
+
│
|
|
52
|
+
├── 여러 개에 같은 사람 할당 → brxce_batch_assign({ nodeIds, assigneeId })
|
|
53
|
+
│
|
|
54
|
+
└── 여러 개에 같은 태그 → brxce_batch_assign_tags({ worknodeIds, tagIds })
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### "회의 작업"
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
├── 회의 만들기 → brxce_create_meeting (preview:true → false)
|
|
61
|
+
├── 아젠다 → brxce_add_agenda_item / list_agenda_items / update / delete
|
|
62
|
+
├── 아젠다별 노트 (1.1.16+) → brxce_add_agenda_note / list / update / delete
|
|
63
|
+
├── 회의 노트 (전체) → brxce_add_meeting_note / list / update / delete
|
|
64
|
+
├── 결정 사항 → brxce_add_meeting_decision / list / update / delete
|
|
65
|
+
└── 회의 자체 수정 → brxce_update_meeting({ meetingId, changes: {...}, preview: false })
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### "삭제"
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
├── 일반 삭제 (soft, 복구 가능) → brxce_delete_worknode (single) / batch_actions(delete)
|
|
72
|
+
├── 영구 삭제 (cascade, 복구 불가) → brxce_permanent_delete_worknode({ confirm: true })
|
|
73
|
+
│ ⚠️ owner만 가능, children/criteria/comments/tags 함께 삭제
|
|
74
|
+
└── 아카이브 (status만 변경) → brxce_archive_worknodes / unarchive_worknodes
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### "에러 / 디버깅"
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
├── 캐시 stale 의심 → 노드 다시 read하면 최신 (1.1.16+ 자동 invalidation)
|
|
81
|
+
├── 401 → MCP 토큰 갱신 + 서버 재시작
|
|
82
|
+
├── 410 Gone → invitation/workspace_member 툴은 폐기됨, 사용 중단
|
|
83
|
+
├── 500 + Prisma → backend 버그, GitHub 이슈
|
|
84
|
+
└── "Found 0 WorkNodes" → UUID를 query로 보냈을 가능성, worknodeIds로 변경
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 89 툴 전체 분류
|
|
90
|
+
|
|
91
|
+
### Workspace (8)
|
|
92
|
+
|
|
93
|
+
| 툴 | 한 줄 설명 |
|
|
94
|
+
|----|----------|
|
|
95
|
+
| `brxce_list_workspaces` | 접근 가능한 전체 워크스페이스 |
|
|
96
|
+
| `brxce_workspace_overview` | 단일 워크스페이스 트리 (depth-first) + stats |
|
|
97
|
+
| `brxce_workspace_statistics` | 통계 (status/priority/type/멤버/dueDate/goal progress) |
|
|
98
|
+
| `brxce_workspace_inbox` | 미할당 / 내 인박스 (캐시 기반) |
|
|
99
|
+
| `brxce_workspace_delta` | sinceVersion 이후 변경 (incremental sync) — `maxChanges` 필수 |
|
|
100
|
+
| `brxce_workspace_ascii_export` | 사람이 읽기 좋은 ASCII 트리 |
|
|
101
|
+
| `brxce_global_overview` | 워크스페이스 통합 요약 (1.1.16+에서 4 layered fix) |
|
|
102
|
+
| `brxce_list_workspace_members` | 멤버 + role + 가입일 |
|
|
103
|
+
|
|
104
|
+
### WorkNode Read (10)
|
|
105
|
+
|
|
106
|
+
| 툴 | 한 줄 설명 |
|
|
107
|
+
|----|----------|
|
|
108
|
+
| `brxce_read_worknodes` | query / worknodeIds / nodeIds(alias) / 필터 / 페이지 |
|
|
109
|
+
| `brxce_worknode_detail` | 단일 노드 + AC + children summary |
|
|
110
|
+
| `brxce_worknode_subtree` | 노드 + 모든 descendant tree |
|
|
111
|
+
| `brxce_worknode_history` | CREATE/UPDATE 이벤트 히스토리 |
|
|
112
|
+
| `brxce_worknode_tag_relations` | 노드의 모든 태그 + 누가 언제 |
|
|
113
|
+
| `brxce_get_worknode_tags` | UUID-only로도 동작 (1.1.16+) |
|
|
114
|
+
| `brxce_filter_worknodes` | status + tags(name) + assignee + dueDate + priority + page |
|
|
115
|
+
| `brxce_find_worknodes_by_tags` | tagIds / tagSlugs (string OR array) + matchAll |
|
|
116
|
+
| `brxce_worknodes_by_member` | userId/memberId(alias) + status |
|
|
117
|
+
| `brxce_my_work` | mode: active/completed/urgent/inbox/all |
|
|
118
|
+
|
|
119
|
+
### WorkNode Write (10)
|
|
120
|
+
|
|
121
|
+
| 툴 | 한 줄 설명 |
|
|
122
|
+
|----|----------|
|
|
123
|
+
| `brxce_create_worknodes` | 배열, preview 기본 true, task/subtask는 AC 필수 |
|
|
124
|
+
| `brxce_update_worknodes` | updates[{nodeId, changes, cascade?}], preview 기본 true |
|
|
125
|
+
| `brxce_move_worknode` | newParentId 지정 |
|
|
126
|
+
| `brxce_complete_worknode` | status → completed (note는 static) |
|
|
127
|
+
| `brxce_archive_worknodes` | nodeIds[] |
|
|
128
|
+
| `brxce_unarchive_worknodes` | nodeIds[] |
|
|
129
|
+
| `brxce_delete_worknode` | soft, idempotent (1.1.13+) |
|
|
130
|
+
| `brxce_permanent_delete_worknode` | hard + cascade, owner only |
|
|
131
|
+
| `brxce_batch_actions` | action: complete/archive/unarchive/delete/move/update-status/update-priority |
|
|
132
|
+
| `brxce_plan_organize` | 인박스/노이즈 자동 분류 제안 |
|
|
133
|
+
|
|
134
|
+
### Bulk (3)
|
|
135
|
+
|
|
136
|
+
| 툴 | 한 줄 설명 |
|
|
137
|
+
|----|----------|
|
|
138
|
+
| `brxce_batch_assign` | nodeIds[] + assigneeId (1.1.15+에서 PATCH로 수정) |
|
|
139
|
+
| `brxce_batch_assign_tags` | worknodeIds[] + tagIds[] |
|
|
140
|
+
| `brxce_create_tags_batch` | tags[] + workspaceId (slug 자동 생성 가능) |
|
|
141
|
+
|
|
142
|
+
### Tags (10)
|
|
143
|
+
|
|
144
|
+
| 툴 | 한 줄 설명 |
|
|
145
|
+
|----|----------|
|
|
146
|
+
| `brxce_list_tags` | 카테고리별 그룹 |
|
|
147
|
+
| `brxce_list_tag_categories` | 카테고리 메타 (color, allow_multiple) |
|
|
148
|
+
| `brxce_search_tags` | 키워드 검색 |
|
|
149
|
+
| `brxce_get_tag_stats` | 사용/미사용 + 카테고리 utilization |
|
|
150
|
+
| `brxce_tag_changes` | sinceDate 이후 태그 변경 (uuid cast 1.1.15+) |
|
|
151
|
+
| `brxce_create_tag` | name 필수, slug 자동 생성, categoryId 필수 |
|
|
152
|
+
| `brxce_update_tag` | tagId + 변경 필드 |
|
|
153
|
+
| `brxce_delete_tag` | tagId |
|
|
154
|
+
| `brxce_create_tag_category` | name + slug |
|
|
155
|
+
| `brxce_update_tag_category` / `brxce_delete_tag_category` | 카테고리 관리 |
|
|
156
|
+
|
|
157
|
+
### Tag–WorkNode (3)
|
|
158
|
+
|
|
159
|
+
| 툴 | 설명 |
|
|
160
|
+
|----|------|
|
|
161
|
+
| `brxce_add_tags_to_worknode` | worknodeId + tagIds[] |
|
|
162
|
+
| `brxce_remove_tag_from_worknode` | worknodeId + tagId |
|
|
163
|
+
| `brxce_get_worknode_tags` | UUID-only (1.1.16+) |
|
|
164
|
+
|
|
165
|
+
### Meeting (15)
|
|
166
|
+
|
|
167
|
+
| 툴 | 설명 |
|
|
168
|
+
|----|------|
|
|
169
|
+
| `brxce_create_meeting` | preview 기본 true, auto-review 포함 |
|
|
170
|
+
| `brxce_list_meetings` | workspaceId 필터 |
|
|
171
|
+
| `brxce_get_meeting` | 단일 회의 + review/agenda/notes/decisions |
|
|
172
|
+
| `brxce_update_meeting` | changes 객체, preview 기본 true |
|
|
173
|
+
| `brxce_delete_meeting` | soft delete |
|
|
174
|
+
| `brxce_add_agenda_item` / `list_agenda_items` / `update_agenda_item` / `delete_agenda_item` | 아젠다 CRUD |
|
|
175
|
+
| `brxce_add_agenda_note` / `list_agenda_notes` / `update_agenda_note` / `delete_agenda_note` | 아젠다별 노트 (1.1.16+) |
|
|
176
|
+
| `brxce_add_meeting_note` / `list_meeting_notes` / `update_meeting_note` / `delete_meeting_note` | 회의 전체 노트 |
|
|
177
|
+
| `brxce_add_meeting_decision` / `list_meeting_decisions` / `update_meeting_decision` / `delete_meeting_decision` | 결정 사항 |
|
|
178
|
+
|
|
179
|
+
### Comments (4)
|
|
180
|
+
|
|
181
|
+
| 툴 | 설명 |
|
|
182
|
+
|----|------|
|
|
183
|
+
| `brxce_create_comment` | nodeId + content |
|
|
184
|
+
| `brxce_list_comments` | nodeId |
|
|
185
|
+
| `brxce_update_comment` | commentId + content |
|
|
186
|
+
| `brxce_delete_comment` | commentId |
|
|
187
|
+
|
|
188
|
+
### Acceptance Criteria (4)
|
|
189
|
+
|
|
190
|
+
| 툴 | 설명 |
|
|
191
|
+
|----|------|
|
|
192
|
+
| `brxce_create_criteria` | nodeId + title + (type/priority/measurementType) |
|
|
193
|
+
| `brxce_list_criteria` | nodeId |
|
|
194
|
+
| `brxce_update_criteria` | criteriaId + 필드 (isCompleted=true는 evidence 필요) |
|
|
195
|
+
| `brxce_delete_criteria` | criteriaId |
|
|
196
|
+
|
|
197
|
+
### Notifications (5)
|
|
198
|
+
|
|
199
|
+
| 툴 | 설명 |
|
|
200
|
+
|----|------|
|
|
201
|
+
| `brxce_list_notifications` | total + unreadCount + meta |
|
|
202
|
+
| `brxce_get_unread_counts` | 빠른 카운트만 |
|
|
203
|
+
| `brxce_mark_notification_read` | 단일 |
|
|
204
|
+
| `brxce_mark_all_notifications_read` | workspaceId 필터 (1.1.16+) |
|
|
205
|
+
| `brxce_delete_notification` | 1.1.16+ |
|
|
206
|
+
|
|
207
|
+
### Recurring (4)
|
|
208
|
+
|
|
209
|
+
| 툴 | 설명 |
|
|
210
|
+
|----|------|
|
|
211
|
+
| `brxce_create_recurring_template` | rrule (RFC 5545) + nodeType |
|
|
212
|
+
| `brxce_list_recurring_templates` | workspaceId |
|
|
213
|
+
| `brxce_update_recurring_template` | templateId + 변경 |
|
|
214
|
+
| `brxce_delete_recurring_template` | templateId |
|
|
215
|
+
|
|
216
|
+
### Attachments (3)
|
|
217
|
+
|
|
218
|
+
| 툴 | 설명 |
|
|
219
|
+
|----|------|
|
|
220
|
+
| `brxce_list_attachments` | nodeId — 1.1.15+에서 UUID 정상 |
|
|
221
|
+
| `brxce_upload_attachment` | nodeId + filename + contentType + base64Data |
|
|
222
|
+
| `brxce_download_attachment` | nodeId + attachmentId — signed URL |
|
|
223
|
+
|
|
224
|
+
### Analysis / Reporting (4)
|
|
225
|
+
|
|
226
|
+
| 툴 | 설명 |
|
|
227
|
+
|----|------|
|
|
228
|
+
| `brxce_daily_report` | 오늘 완료 + 미달성 AC + 산출물 누락 |
|
|
229
|
+
| `brxce_goal_progress` | goalId 없으면 전체 goal 일괄 (1.1.15+) |
|
|
230
|
+
| `brxce_workspace_delta` | 변경 델타 |
|
|
231
|
+
| `brxce_plan_organize` | AI 제안 인박스 정리 |
|
|
232
|
+
|
|
233
|
+
### Users (1)
|
|
234
|
+
|
|
235
|
+
| 툴 | 설명 |
|
|
236
|
+
|----|------|
|
|
237
|
+
| `brxce_search_users` | query (email/username/name) |
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 폐기된 툴 (사용 금지)
|
|
242
|
+
|
|
243
|
+
`brxce_create_invitation`, `brxce_list_invitations`, `brxce_accept_invitation`, `brxce_decline_invitation` (모두 #1094로 제거됨), `brxce_add_workspace_member`, `brxce_update_member_role`, `brxce_remove_workspace_member` (#1021로 백엔드 410, #1108로 MCP 제거됨), `brxce_create_bot`, `brxce_list_bots`, `brxce_delete_bot`, `brxce_update_bot`, `brxce_regenerate_bot_key`, `brxce_upload_bot_avatar`, `brxce_delete_bot_avatar` (#1029로 전체 bot 기능 제거).
|
|
244
|
+
|
|
245
|
+
이 툴들은 1.1.11+ 이후 더 이상 등록되지 않는다.
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
# BRXCE MCP Workflows
|
|
2
|
+
|
|
3
|
+
실전에서 자주 쓰는 워크플로우 카탈로그. 각 패턴은 step-by-step + 권장 도구 + 안전 체크를 포함한다.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 1. 인박스 트리아지 (Inbox Triage)
|
|
8
|
+
|
|
9
|
+
새로 들어온 미할당 노드를 빠르게 정리.
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
1. brxce_workspace_inbox(workspaceId)
|
|
13
|
+
→ myInboxCount, sharedInboxCount 확인
|
|
14
|
+
|
|
15
|
+
2. 각 노드를 카테고리별로 분류 (head로 5~10건씩)
|
|
16
|
+
- 즉시 완료 가능 → batch_actions(action: complete, nodeIds: [...])
|
|
17
|
+
- 다른 부모로 이동 → batch_actions(action: move, nodeIds, params: {newParentId})
|
|
18
|
+
- 노이즈/중복 → batch_actions(action: archive)
|
|
19
|
+
- 검토 필요 → 본인 assignee + 우선순위 설정 (update_worknodes)
|
|
20
|
+
|
|
21
|
+
3. 인박스 재확인 → 0건 또는 진짜 검토 필요한 항목만 남도록
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**팁**: 같은 부모로 이동할 그룹은 한 번의 `batch_actions(action: move)` 호출로 묶을 것. 50건씩 페이지네이션으로 처리.
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 2. 일일 보고 (Daily Report)
|
|
29
|
+
|
|
30
|
+
매일 아침 어제 무엇을 끝냈고 오늘 무엇을 할지 정리.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
1. brxce_daily_report(workspaceId)
|
|
34
|
+
→ 오늘 완료된 노드, 충족 미달 AC, 산출물 누락 자동 집계
|
|
35
|
+
|
|
36
|
+
2. brxce_my_work(workspaceId, mode: "active")
|
|
37
|
+
→ 진행 중인 작업 리스트
|
|
38
|
+
|
|
39
|
+
3. brxce_goal_progress(workspaceId) # goalId 생략 = 전체 goal 일괄
|
|
40
|
+
→ 목표별 AC 충족률
|
|
41
|
+
|
|
42
|
+
4. (선택) brxce_workspace_statistics(workspaceId)
|
|
43
|
+
→ memberStats, dueDates 등 매크로 통계
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**팁**: `daily_report` 응답의 `unmetCriteria` 항목들이 우선순위 1순위. 거기 노드를 `worknode_detail`로 열어 상세 검토.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## 3. GitHub 이슈 → BRXCE 워크노드 동기화
|
|
51
|
+
|
|
52
|
+
새 GitHub 이슈가 만들어지면 BRXCE에 대응 task 생성.
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
1. brxce_create_worknodes({
|
|
56
|
+
worknodes: [{
|
|
57
|
+
title: "[Bug] 로그인 시 401 — 토큰 갱신 누락 (#123)",
|
|
58
|
+
nodeType: "task",
|
|
59
|
+
parentNodeId: <"이슈 처리" 프로젝트 UUID>,
|
|
60
|
+
priority: "high",
|
|
61
|
+
acceptance_criteria: [
|
|
62
|
+
{ title: "재로그인 없이 토큰 자동 갱신" },
|
|
63
|
+
{ title: "401 에러 로깅 + 알림" },
|
|
64
|
+
],
|
|
65
|
+
}],
|
|
66
|
+
preview: false,
|
|
67
|
+
})
|
|
68
|
+
|
|
69
|
+
2. brxce_add_tags_to_worknode({
|
|
70
|
+
worknodeId: <위에서 받은 ID>,
|
|
71
|
+
tagIds: [<"issue-created" 태그 UUID>],
|
|
72
|
+
workspaceId,
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
3. (선택) brxce_create_comment({
|
|
76
|
+
nodeId: <ID>,
|
|
77
|
+
content: "GitHub: https://github.com/foo/bar/issues/123",
|
|
78
|
+
})
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**팁**: 태그 ID는 `brxce_search_tags(query: "issue-created")` 한 번으로 캐시. 반복 호출하지 말 것.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 4. 회의 준비 + 노트 작성
|
|
86
|
+
|
|
87
|
+
회의 자동 리뷰 → 아젠다 → 노트/결정 → 후속 작업.
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
1. brxce_create_meeting({
|
|
91
|
+
workspaceId,
|
|
92
|
+
title: "Sprint 23 Review",
|
|
93
|
+
scheduledAt: "2026-04-15T09:00:00Z",
|
|
94
|
+
preview: true, # 먼저 dry run으로 review period + 완료 워크노드 확인
|
|
95
|
+
})
|
|
96
|
+
|
|
97
|
+
2. (검토 후) 동일 호출에 preview: false
|
|
98
|
+
→ meetingId 받음
|
|
99
|
+
|
|
100
|
+
3. brxce_add_agenda_item({
|
|
101
|
+
meetingId,
|
|
102
|
+
title: "Sprint 23 결과 리뷰",
|
|
103
|
+
})
|
|
104
|
+
→ itemId 받음
|
|
105
|
+
|
|
106
|
+
4. 회의 진행 중:
|
|
107
|
+
brxce_add_agenda_note({ meetingId, itemId, content: "..." })
|
|
108
|
+
brxce_add_meeting_decision({ meetingId, title: "다음 sprint는 X에 집중" })
|
|
109
|
+
|
|
110
|
+
5. 회의 종료:
|
|
111
|
+
brxce_update_meeting({ meetingId, changes: { status: "completed" }, preview: false })
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**팁**: agenda note는 1.1.16+에서 fully working. 이전 버전은 add/list/update/delete 모두 404였음.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## 5. 멤버별 작업 리뷰 (1:1 준비)
|
|
119
|
+
|
|
120
|
+
각 팀원의 진행 중인 작업과 미달성 AC를 한눈에.
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
1. brxce_search_users(query: "member name")
|
|
124
|
+
→ userId 확인
|
|
125
|
+
|
|
126
|
+
2. brxce_worknodes_by_member({
|
|
127
|
+
workspaceId,
|
|
128
|
+
userId: <user UUID>, # memberId alias도 동일
|
|
129
|
+
status: "in_progress",
|
|
130
|
+
limit: 50,
|
|
131
|
+
})
|
|
132
|
+
|
|
133
|
+
3. 각 노드에 대해 worknode_detail로 AC 진행도 확인
|
|
134
|
+
4. 막힌 작업이 있으면 brxce_create_comment로 이슈 코멘트
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
**팁**: 1.1.16부터 `userId`와 `memberId` 둘 다 alias로 동작. 이전 버전은 `memberId`만.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 6. 태그 거버넌스 (Tag Governance)
|
|
142
|
+
|
|
143
|
+
중복/미사용 태그 정리.
|
|
144
|
+
|
|
145
|
+
```
|
|
146
|
+
1. brxce_get_tag_stats(workspaceId)
|
|
147
|
+
→ unused tags, total assignments
|
|
148
|
+
|
|
149
|
+
2. 미사용 태그 발견 시:
|
|
150
|
+
brxce_delete_tag({ workspaceId, tagId })
|
|
151
|
+
|
|
152
|
+
3. 새 카테고리/태그 생성:
|
|
153
|
+
brxce_create_tag_category({ workspaceId, name: "환경", slug: "environment" })
|
|
154
|
+
brxce_create_tags_batch({
|
|
155
|
+
workspaceId,
|
|
156
|
+
tags: [
|
|
157
|
+
{ name: "Production", categoryId: <위에서 받음> }, # slug 자동 생성
|
|
158
|
+
{ name: "Staging", categoryId: <...> },
|
|
159
|
+
{ name: "Local", categoryId: <...> },
|
|
160
|
+
],
|
|
161
|
+
})
|
|
162
|
+
|
|
163
|
+
4. brxce_batch_assign_tags({
|
|
164
|
+
workspaceId,
|
|
165
|
+
worknodeIds: [...],
|
|
166
|
+
tagIds: [<production 태그 UUID>],
|
|
167
|
+
})
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**팁**: `create_tag` slug는 1.1.15+부터 자동 derive (`Backend/Node.js` → `backend-nodejs`). 명시 가능.
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## 7. 대량 검색 → 일괄 변경 (Bulk Update)
|
|
175
|
+
|
|
176
|
+
특정 조건의 모든 노드에 동일 변경 적용.
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
1. brxce_filter_worknodes({
|
|
180
|
+
workspaceId,
|
|
181
|
+
status: ["backlog"],
|
|
182
|
+
tags: ["urgent"],
|
|
183
|
+
pageSize: 100,
|
|
184
|
+
})
|
|
185
|
+
→ worknodes[] + total
|
|
186
|
+
|
|
187
|
+
2. 결과에서 nodeId 추출
|
|
188
|
+
|
|
189
|
+
3. brxce_batch_actions({
|
|
190
|
+
action: "update-priority",
|
|
191
|
+
nodeIds: [...],
|
|
192
|
+
params: { priority: "critical" },
|
|
193
|
+
})
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**팁**: `filter_worknodes`는 1.1.15+에서 도입된 새 backend 라우트. 이전 버전은 404. 큰 결과는 페이지로 나눠 호출.
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## 8. 워크스페이스 델타 동기화 (Incremental Sync)
|
|
201
|
+
|
|
202
|
+
외부 시스템(Notion 미러, 백업 등)에 최신 변경만 sync.
|
|
203
|
+
|
|
204
|
+
```
|
|
205
|
+
1. brxce_workspace_delta({
|
|
206
|
+
workspaceId,
|
|
207
|
+
sinceVersion: <마지막 동기화 버전>,
|
|
208
|
+
maxChanges: 100,
|
|
209
|
+
})
|
|
210
|
+
|
|
211
|
+
2. response.changes를 순회해서 외부 시스템 갱신
|
|
212
|
+
3. response.currentVersion (또는 truncated 시 nextSinceVersion) 저장
|
|
213
|
+
4. truncated: true이면 다음 호출에서 nextSinceVersion부터 이어가기
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**경고**: `sinceVersion: 0` 첫 동기화는 800KB+ 가능. 반드시 `maxChanges` 명시 + 페이지 처리.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 9. 반복 작업 템플릿 (Recurring)
|
|
221
|
+
|
|
222
|
+
매주/매일 자동 생성되는 작업.
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
1. brxce_create_recurring_template({
|
|
226
|
+
workspaceId,
|
|
227
|
+
title: "주간 회고",
|
|
228
|
+
rrule: "FREQ=WEEKLY;BYDAY=FR",
|
|
229
|
+
nodeType: "task",
|
|
230
|
+
priority: "medium",
|
|
231
|
+
timezone: "Asia/Seoul",
|
|
232
|
+
})
|
|
233
|
+
|
|
234
|
+
2. 백엔드가 cron으로 매주 금요일에 실제 task 자동 생성
|
|
235
|
+
3. brxce_list_recurring_templates(workspaceId)로 활성 템플릿 확인
|
|
236
|
+
4. 변경 필요 시 brxce_update_recurring_template
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**팁**: AC가 필요한 task는 템플릿에 `acceptance_criteria` 함께 정의 (작성 시점에 제공해야 함, 자동 생성된 인스턴스에는 없음).
|
|
240
|
+
|
|
241
|
+
---
|
|
242
|
+
|
|
243
|
+
## 10. 클린업 (테스트 데이터 제거)
|
|
244
|
+
|
|
245
|
+
세션 끝낼 때 테스트 노드 정리.
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
1. brxce_read_worknodes({
|
|
249
|
+
workspaceId,
|
|
250
|
+
query: "[테스트]", # title prefix로 검색
|
|
251
|
+
limit: 200,
|
|
252
|
+
})
|
|
253
|
+
|
|
254
|
+
2. brxce_batch_actions({
|
|
255
|
+
action: "delete", # soft delete
|
|
256
|
+
nodeIds: [...],
|
|
257
|
+
})
|
|
258
|
+
|
|
259
|
+
3. (필요 시) 각 노드를 brxce_permanent_delete_worknode로 hard delete
|
|
260
|
+
→ cascade로 children, criteria, comments, tagRelations 모두 제거
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**경고**: `permanent_delete`는 owner만 가능. cascade가 큰 트리에서는 시간 걸릴 수 있음.
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 안티 패턴 (피해야 할 것)
|
|
268
|
+
|
|
269
|
+
- ❌ N개 노드에 N번 `update_worknodes` 호출 → ✅ `batch_actions` 한 번
|
|
270
|
+
- ❌ task 생성 시 AC 생략 → ✅ 항상 최소 1개
|
|
271
|
+
- ❌ `preview` 명시 없이 create/update → ✅ 명시적 `false`
|
|
272
|
+
- ❌ UUID를 `query`로 read → ✅ `worknodeIds` / `nodeIds`
|
|
273
|
+
- ❌ workspace_delta sinceVersion=0 무한정 → ✅ maxChanges + 페이지
|
|
274
|
+
- ❌ permanent_delete 후 즉시 inbox 신뢰 → ✅ 1.1.16+에서 자동, 그 미만은 한 번 더 read
|