@rayburst/cc 1.0.26 → 1.0.28

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.
@@ -77,11 +77,13 @@ Print a warning:
77
77
 
78
78
  If a feature-atlas key is found, proceed to Step 1 using this derived prefix.
79
79
 
80
- ---
81
-
82
- **Level 3 (curl-only fallback)**
80
+ If no feature-atlas server is found in either `rb-config.md` or `.mcp.json`, stop immediately:
81
+ ```
82
+ ERROR: rb:discover requires an MCP server assigned to the `feature-atlas` role.
83
83
 
84
- Only if no feature-atlas server is found in either `rb-config.md` or `.mcp.json`: fall back to curl JSON-RPC using the Bearer token of the first HTTP MCP server in `.mcp.json`. Note that all subsequent MCP calls in the workflow will use curl JSON-RPC instead of MCP tool calls.
84
+ Run /rb:init to configure MCP server role assignments.
85
+ The feature-atlas role must be mapped to an MCP server in .mcp.json before running discovery.
86
+ ```
85
87
 
86
88
  ---
87
89
 
@@ -94,7 +96,15 @@ Call:
94
96
  ```
95
97
 
96
98
  - **Success** → proceed with MCP tool calls
97
- - **Failure** → switch to curl fallback for all remaining MCP calls; do NOT stop the workflow
99
+ - **Failure** → stop immediately:
100
+ ```
101
+ ERROR: The MCP server for the feature-atlas role is not loaded in this session.
102
+
103
+ The MCP server '<server-name>' must be available. Try:
104
+ 1. Start a new Claude session (MCP servers load at session start)
105
+ 2. Verify the server entry exists in .mcp.json
106
+ 3. Re-run /rb:init to confirm role assignments
107
+ ```
98
108
 
99
109
  ---
100
110
 
@@ -57,7 +57,13 @@ Read `.claude/rb-config.md` and parse the `## MCP Role Assignments` table. Find
57
57
  ```
58
58
  Example: if the server name is `rayburst-rb-engineer-780086`, then `MCP_PREFIX = mcp__rayburst-rb-engineer-780086__`.
59
59
 
60
- - If `.claude/rb-config.md` does not exist or the role is `unassigned`, set `MCP_PREFIX = ""` and use the curl fallback for all MCP calls (see "MCP Curl Fallback" section). Read the API key from `.mcp.json` under the first HTTP MCP server entry.
60
+ - If `.claude/rb-config.md` does not exist or the role is `unassigned`, stop immediately:
61
+ ```
62
+ ERROR: rb:implement requires an MCP server assigned to the `engineer` role.
63
+
64
+ Run /rb:init to configure MCP server role assignments.
65
+ The engineer role must be mapped to an MCP server in .mcp.json before implementing cards.
66
+ ```
61
67
 
62
68
  All MCP tool calls below use `<MCP_PREFIX>` as a stand-in for the resolved prefix.
63
69
 
@@ -69,7 +75,15 @@ All MCP tool calls below use `<MCP_PREFIX>` as a stand-in for the resolved prefi
69
75
  <MCP_PREFIX>ping()
70
76
  ```
71
77
 
72
- If ping fails (tool not found), fall back to curl JSON-RPC for the entire workflow. If ping via curl also fails, stop and report the error.
78
+ If ping fails (tool not found or error), stop immediately:
79
+ ```
80
+ ERROR: The MCP server for the engineer role is not loaded in this session.
81
+
82
+ The MCP server '<server-name>' must be available. Try:
83
+ 1. Start a new Claude session (MCP servers load at session start)
84
+ 2. Verify the server entry exists in .mcp.json
85
+ 3. Re-run /rb:init to confirm role assignments
86
+ ```
73
87
 
74
88
  ---
75
89
 
@@ -257,44 +271,6 @@ Run `/rb:validate-card <cardId>` to run QA validation.
257
271
 
258
272
  ---
259
273
 
260
- ## MCP Curl Fallback
261
-
262
- When MCP tools are unavailable, use curl JSON-RPC. Read the API key from `.mcp.json` under the server assigned to the `engineer` role (or the first HTTP server entry).
263
-
264
- ```bash
265
- # Ping
266
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
267
- -H "Authorization: Bearer <KEY>" \
268
- -H "Content-Type: application/json" \
269
- -H "Accept: application/json, text/event-stream" \
270
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ping","arguments":{}}}'
271
-
272
- # Get card
273
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
274
- -H "Authorization: Bearer <KEY>" \
275
- -H "Content-Type: application/json" \
276
- -H "Accept: application/json, text/event-stream" \
277
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_card","arguments":{"cardId":"<cardId>"}}}'
278
-
279
- # Move card
280
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
281
- -H "Authorization: Bearer <KEY>" \
282
- -H "Content-Type: application/json" \
283
- -H "Accept: application/json, text/event-stream" \
284
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"move_card","arguments":{"cardId":"<cardId>","status":"in-progress"}}}'
285
-
286
- # Add comment
287
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
288
- -H "Authorization: Bearer <KEY>" \
289
- -H "Content-Type: application/json" \
290
- -H "Accept: application/json, text/event-stream" \
291
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_comment","arguments":{"cardId":"<cardId>","content":"<comment>"}}}'
292
- ```
293
-
294
- Parse the `data:` line from the SSE response to extract the JSON result.
295
-
296
- ---
297
-
298
274
  ## Constraints
299
275
 
300
276
  - **Full UUIDs only** — short hashes return NOT_FOUND
@@ -9,6 +9,23 @@ allowed-tools:
9
9
 
10
10
  # rb:plan — Task-Driven PM Session
11
11
 
12
+ > **HARD STOP — READ BEFORE ANYTHING ELSE**
13
+ >
14
+ > This command is **PM-only**. It MUST NOT touch any code or files outside `.claude/rb-config.md`.
15
+ >
16
+ > The following actions are **absolutely forbidden** for the duration of this command:
17
+ > - Writing, editing, or creating any code file (no Edit, no Write, no file changes)
18
+ > - Running build, test, lint, or npm commands
19
+ > - Making git commits or git operations
20
+ > - Suggesting implementation steps or architectural decisions
21
+ > - Moving cards to `in-progress` or `done`
22
+ >
23
+ > If you feel tempted to implement anything — **stop immediately and return to Step 4 (Create Board Card)**.
24
+ >
25
+ > The CLAUDE.md "PM Feature Sync" rule does NOT apply here — skip it entirely. This command IS the PM step.
26
+
27
+ ---
28
+
12
29
  Given a task description, act as a PM to set it up in the feature atlas and on the board. This command **never implements anything** — it only does PM + board setup.
13
30
 
14
31
  ## Reference Data
@@ -165,15 +182,6 @@ Always use the full UUID from the `create_card` response — never a short hash.
165
182
 
166
183
  ---
167
184
 
168
- ## What `/rb:plan` Must NOT Do
169
-
170
- - Never write, edit, or create code files
171
- - Never run implementation commands (npm, git commits, builds, tests)
172
- - Never suggest implementation steps or architectural decisions
173
- - Never move cards to `in-progress` or `done`
174
-
175
- ---
176
-
177
185
  ## Feature Quality Rules
178
186
 
179
187
  **Titles:**
@@ -61,7 +61,13 @@ Read `.claude/rb-config.md` and parse the `## MCP Role Assignments` table. Find
61
61
  ```
62
62
  Example: if the server name is `rayburst-rb-qa-engineer-55ae0f`, then `MCP_PREFIX = mcp__rayburst-rb-qa-engineer-55ae0f__`.
63
63
 
64
- - If `.claude/rb-config.md` does not exist or the role is `unassigned`, set `MCP_PREFIX = ""` and use the curl fallback for all MCP calls (see "MCP Curl Fallback" section below). Read the API key from `.mcp.json` under the first HTTP MCP server entry.
64
+ - If `.claude/rb-config.md` does not exist or the role is `unassigned`, stop immediately:
65
+ ```
66
+ ERROR: rb:validate-card requires an MCP server assigned to the `qa-engineer` role.
67
+
68
+ Run /rb:init to configure MCP server role assignments.
69
+ The qa-engineer role must be mapped to an MCP server in .mcp.json before validating cards.
70
+ ```
65
71
 
66
72
  All MCP tool calls below use `<MCP_PREFIX>` as a stand-in for the resolved prefix.
67
73
 
@@ -73,22 +79,15 @@ All MCP tool calls below use `<MCP_PREFIX>` as a stand-in for the resolved prefi
73
79
  <MCP_PREFIX>ping()
74
80
  ```
75
81
 
76
- **If the MCP tool is not found** (error: "No such tool available"), the MCP server did not load in this session. Do NOT stop — fall back to curl JSON-RPC for the entire workflow:
77
-
78
- ```bash
79
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
80
- -H "Authorization: Bearer <API_KEY_FROM_.mcp.json>" \
81
- -H "Content-Type: application/json" \
82
- -H "Accept: application/json, text/event-stream" \
83
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ping","arguments":{}}}'
82
+ **If the MCP tool is not found** (error: "No such tool available"), stop immediately:
84
83
  ```
84
+ ERROR: The MCP server for the qa-engineer role is not loaded in this session.
85
85
 
86
- Read the API key from `.mcp.json` under the server assigned to the `qa-engineer` role (from `rb-config.md`), or the first HTTP server entry if config is missing.
87
- Parse the SSE response: result is in the `data:` line as `{"result":{"content":[{"type":"text","text":"..."}]}}`.
88
-
89
- If ping via curl also fails (network error), stop and report the error.
90
-
91
- **Use curl for ALL subsequent MCP calls** (get_card, list_cards, list_card_features, get_feature, add_comment, submit_validation, move_card) whenever MCP tools are unavailable.
86
+ The MCP server '<server-name>' must be available. Try:
87
+ 1. Start a new Claude session (MCP servers load at session start)
88
+ 2. Verify the server entry exists in .mcp.json
89
+ 3. Re-run /rb:init to confirm role assignments
90
+ ```
92
91
 
93
92
  ### Step 2: Resolve the Card
94
93
 
@@ -222,7 +221,7 @@ After testing each criterion, record locally:
222
221
  })
223
222
  ```
224
223
 
225
- **Comment rules (critical when using curl fallback):**
224
+ **Comment rules:**
226
225
  - Keep comments under 500 characters
227
226
  - Plain prose only — no backtick code, no raw code snippets, no JSON in comment strings (causes `INTERNAL_ERROR`)
228
227
  - Reference files as plain text: "ComponentName.tsx line 79" not a code excerpt
@@ -281,44 +280,6 @@ Report ID: <report-id>
281
280
 
282
281
  ---
283
282
 
284
- ## MCP Curl Fallback
285
-
286
- When MCP tools are unavailable, use this curl pattern. Read the API key from `.mcp.json` under the server assigned to the `qa-engineer` role (or the first HTTP server entry if config is missing):
287
-
288
- ```bash
289
- # Get card
290
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
291
- -H "Authorization: Bearer <KEY>" \
292
- -H "Content-Type: application/json" \
293
- -H "Accept: application/json, text/event-stream" \
294
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_card","arguments":{"cardId":"<cardId>"}}}'
295
-
296
- # List card features
297
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
298
- -H "Authorization: Bearer <KEY>" \
299
- -H "Content-Type: application/json" \
300
- -H "Accept: application/json, text/event-stream" \
301
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_card_features","arguments":{"cardId":"<cardId>"}}}'
302
-
303
- # Submit validation (cardId, not featureId)
304
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
305
- -H "Authorization: Bearer <KEY>" \
306
- -H "Content-Type: application/json" \
307
- -H "Accept: application/json, text/event-stream" \
308
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_validation","arguments":{"cardId":"<cardId>","results":[...],"overallComment":"..."}}}'
309
-
310
- # Move card to done
311
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
312
- -H "Authorization: Bearer <KEY>" \
313
- -H "Content-Type: application/json" \
314
- -H "Accept: application/json, text/event-stream" \
315
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"move_card","arguments":{"cardId":"<cardId>","status":"done"}}}'
316
- ```
317
-
318
- Parse the `data:` line from the SSE response to extract the JSON result.
319
-
320
- ---
321
-
322
283
  ## Constraints
323
284
 
324
285
  - Full UUIDs only
@@ -61,7 +61,13 @@ Read `.claude/rb-config.md` and parse the `## MCP Role Assignments` table. Find
61
61
  ```
62
62
  Example: if the server name is `rayburst-rb-qa-engineer-55ae0f`, then `MCP_PREFIX = mcp__rayburst-rb-qa-engineer-55ae0f__`.
63
63
 
64
- - If `.claude/rb-config.md` does not exist or the role is `unassigned`, set `MCP_PREFIX = ""` and use the curl fallback for all MCP calls (see "MCP Curl Fallback" section below). Read the API key from `.mcp.json` under the first HTTP MCP server entry.
64
+ - If `.claude/rb-config.md` does not exist or the role is `unassigned`, stop immediately:
65
+ ```
66
+ ERROR: rb:validate-feature requires an MCP server assigned to the `qa-engineer` role.
67
+
68
+ Run /rb:init to configure MCP server role assignments.
69
+ The qa-engineer role must be mapped to an MCP server in .mcp.json before validating features.
70
+ ```
65
71
 
66
72
  All MCP tool calls below use `<MCP_PREFIX>` as a stand-in for the resolved prefix.
67
73
 
@@ -73,22 +79,15 @@ All MCP tool calls below use `<MCP_PREFIX>` as a stand-in for the resolved prefi
73
79
  <MCP_PREFIX>ping()
74
80
  ```
75
81
 
76
- **If the MCP tool is not found** (error: "No such tool available"), the MCP server did not load in this session. Do NOT stop — fall back to curl JSON-RPC for the entire workflow:
77
-
78
- ```bash
79
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
80
- -H "Authorization: Bearer <API_KEY_FROM_.mcp.json>" \
81
- -H "Content-Type: application/json" \
82
- -H "Accept: application/json, text/event-stream" \
83
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"ping","arguments":{}}}'
82
+ **If the MCP tool is not found** (error: "No such tool available"), stop immediately:
84
83
  ```
84
+ ERROR: The MCP server for the qa-engineer role is not loaded in this session.
85
85
 
86
- Read the API key from `.mcp.json` under the server assigned to the `qa-engineer` role (from `rb-config.md`), or the first HTTP server entry if config is missing.
87
- Parse the SSE response: result is in the `data:` line as `{"result":{"content":[{"type":"text","text":"..."}]}}`.
88
-
89
- If ping via curl also fails (network error), stop and report the error.
90
-
91
- **Use curl for ALL subsequent MCP calls** (get_feature, list_boards, create_card, link_feature, submit_validation, update_feature) whenever MCP tools are unavailable.
86
+ The MCP server '<server-name>' must be available. Try:
87
+ 1. Start a new Claude session (MCP servers load at session start)
88
+ 2. Verify the server entry exists in .mcp.json
89
+ 3. Re-run /rb:init to confirm role assignments
90
+ ```
92
91
 
93
92
  ### Step 2: Resolve the Feature
94
93
 
@@ -222,7 +221,7 @@ Rules:
222
221
  })
223
222
  ```
224
223
 
225
- **Comment rules (critical when using curl fallback):**
224
+ **Comment rules:**
226
225
  - Keep comments under 500 characters
227
226
  - Plain prose only — no backtick code, no raw code snippets, no JSON in comment strings (causes `INTERNAL_ERROR`)
228
227
  - Reference files as plain text: "ComponentName.tsx line 79" not a code excerpt
@@ -270,22 +269,6 @@ Submitted via submit_validation (featureId: <id>)
270
269
 
271
270
  ---
272
271
 
273
- ## MCP Curl Fallback
274
-
275
- When MCP tools are unavailable, use this curl pattern. Read the API key from `.mcp.json` under the server assigned to the `qa-engineer` role (or the first HTTP server entry if config is missing):
276
-
277
- ```bash
278
- curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
279
- -H "Authorization: Bearer <KEY>" \
280
- -H "Content-Type: application/json" \
281
- -H "Accept: application/json, text/event-stream" \
282
- -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_feature","arguments":{"featureId":"<id>"}}}'
283
- ```
284
-
285
- Parse the `data:` line from the SSE response to extract the JSON result.
286
-
287
- ---
288
-
289
272
  ## Constraints
290
273
 
291
274
  - Full UUIDs only
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rayburst/cc",
3
- "version": "1.0.26",
3
+ "version": "1.0.28",
4
4
  "description": "Rayburst slash commands for Claude Code — /rb:init, /rb:plan, /rb:sync, /rb:status, /rb:validate-feature, /rb:validate-card, /rb:implement, /rb:discover",
5
5
  "bin": {
6
6
  "rayburst-cc": "bin/install.js"