@rayburst/cc 1.0.25 → 1.0.26
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/commands/rb/implement.md +109 -185
- package/package.json +1 -1
package/commands/rb/implement.md
CHANGED
|
@@ -5,8 +5,7 @@ allowed-tools:
|
|
|
5
5
|
- Glob
|
|
6
6
|
- Grep
|
|
7
7
|
- Bash
|
|
8
|
-
-
|
|
9
|
-
- ExitPlanMode
|
|
8
|
+
- Agent
|
|
10
9
|
- mcp__playwright__browser_navigate
|
|
11
10
|
- mcp__playwright__browser_snapshot
|
|
12
11
|
- mcp__playwright__browser_click
|
|
@@ -24,7 +23,7 @@ allowed-tools:
|
|
|
24
23
|
|
|
25
24
|
# rb:implement — Card Implementation
|
|
26
25
|
|
|
27
|
-
Implement a Rayburst board card: load the card
|
|
26
|
+
Implement a Rayburst board card end-to-end: load the card + linked features, plan with a subagent, execute with a subagent, then move to `validation`. Works like `/gsd:quick` — spawns a planner agent then an executor agent with no interactive plan approval pause.
|
|
28
27
|
|
|
29
28
|
## Reference Data
|
|
30
29
|
|
|
@@ -48,7 +47,7 @@ Examples:
|
|
|
48
47
|
|
|
49
48
|
## Workflow
|
|
50
49
|
|
|
51
|
-
### Step
|
|
50
|
+
### Step 1: Resolve MCP Prefix
|
|
52
51
|
|
|
53
52
|
Read `.claude/rb-config.md` and parse the `## MCP Role Assignments` table. Find the row where `Role` is `engineer` and read its `MCP Server Name`.
|
|
54
53
|
|
|
@@ -58,25 +57,25 @@ Read `.claude/rb-config.md` and parse the `## MCP Role Assignments` table. Find
|
|
|
58
57
|
```
|
|
59
58
|
Example: if the server name is `rayburst-rb-engineer-780086`, then `MCP_PREFIX = mcp__rayburst-rb-engineer-780086__`.
|
|
60
59
|
|
|
61
|
-
- 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
|
|
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.
|
|
62
61
|
|
|
63
62
|
All MCP tool calls below use `<MCP_PREFIX>` as a stand-in for the resolved prefix.
|
|
64
63
|
|
|
65
64
|
---
|
|
66
65
|
|
|
67
|
-
### Step
|
|
66
|
+
### Step 2: Verify MCP Connection
|
|
68
67
|
|
|
69
68
|
```
|
|
70
69
|
<MCP_PREFIX>ping()
|
|
71
70
|
```
|
|
72
71
|
|
|
73
|
-
|
|
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.
|
|
74
73
|
|
|
75
|
-
|
|
74
|
+
---
|
|
76
75
|
|
|
77
|
-
### Step
|
|
76
|
+
### Step 3: Resolve the Card
|
|
78
77
|
|
|
79
|
-
**If the input looks like a UUID
|
|
78
|
+
**If the input looks like a UUID:**
|
|
80
79
|
|
|
81
80
|
```
|
|
82
81
|
<MCP_PREFIX>get_card({ cardId: "<input>" })
|
|
@@ -88,207 +87,160 @@ If ping via curl also fails (network error), stop and report the error.
|
|
|
88
87
|
<MCP_PREFIX>list_cards({ boardId: "23578fa2-49c1-475c-b398-6d7080a676bc" })
|
|
89
88
|
```
|
|
90
89
|
|
|
91
|
-
Find the
|
|
90
|
+
Find the closest title match, then call `get_card` on it.
|
|
92
91
|
|
|
93
|
-
|
|
94
|
-
<MCP_PREFIX>get_card({ cardId: "<resolved-id>" })
|
|
95
|
-
```
|
|
92
|
+
Collect: `card.id`, `card.title`, `card.description`, `card.status`, `card.todos[]`.
|
|
96
93
|
|
|
97
|
-
|
|
98
|
-
- `card.id`, `card.title`, `card.description`, `card.status`
|
|
99
|
-
- `card.todos[]` — implementation checklist items
|
|
100
|
-
- `card.columnId` / current board context
|
|
101
|
-
|
|
102
|
-
**If card status is not `ready` or `in-progress`**, warn the user:
|
|
94
|
+
**If card status is not `ready` or `in-progress`**, warn and ask:
|
|
103
95
|
```
|
|
104
|
-
⚠️ Card "<title>" is currently
|
|
105
|
-
Proceed anyway? (yes / no)
|
|
96
|
+
⚠️ Card "<title>" is currently "<status>". Expected "ready". Proceed anyway? (yes / no)
|
|
106
97
|
```
|
|
107
98
|
Stop if the user says no.
|
|
108
99
|
|
|
109
|
-
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
### Step 4: Load Linked Features & Criteria
|
|
110
103
|
|
|
111
104
|
```
|
|
112
105
|
<MCP_PREFIX>list_card_features({ cardId: "<cardId>" })
|
|
113
106
|
```
|
|
114
107
|
|
|
115
|
-
For each linked feature
|
|
116
|
-
|
|
108
|
+
For each linked feature:
|
|
117
109
|
```
|
|
118
110
|
<MCP_PREFIX>get_feature({ featureId: "<featureId>" })
|
|
119
111
|
```
|
|
120
112
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
Also fetch prior validation reports for this card:
|
|
124
|
-
|
|
113
|
+
Also load prior validation reports:
|
|
125
114
|
```
|
|
126
115
|
<MCP_PREFIX>list_validations({ cardId: "<cardId>" })
|
|
127
116
|
```
|
|
128
117
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
If no features are linked, warn the user:
|
|
132
|
-
```
|
|
133
|
-
⚠️ No features are linked to this card. Implementation will proceed without acceptance criteria.
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
#### Step 3b: Load Prior Validation Context (if card was returned from validation)
|
|
137
|
-
|
|
138
|
-
If the card's current status is `in-progress` (indicating it may have been returned from validation after a QA failure), fetch prior failure context:
|
|
139
|
-
|
|
118
|
+
If the card is `in-progress` (possible QA return), also check for prior failures:
|
|
140
119
|
```
|
|
141
120
|
<MCP_PREFIX>list_comments({ cardId: "<cardId>" })
|
|
142
|
-
<MCP_PREFIX>list_validations({ cardId: "<cardId>" })
|
|
143
|
-
```
|
|
144
|
-
|
|
145
|
-
Inspect the comments for a recent QA failure comment (look for "QA: Validation Failed" in the content). Inspect the latest validation report for criteria with status `"fail"`.
|
|
146
|
-
|
|
147
|
-
If a prior failure is detected, display it prominently before proceeding:
|
|
148
|
-
|
|
149
121
|
```
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
The card was previously returned from validation with the following failures:
|
|
122
|
+
Look for a "QA: Validation Failed" comment and note any failing criteria — these get extra attention in the plan.
|
|
153
123
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
The implementation plan will specifically address these failing criteria.
|
|
157
|
-
```
|
|
124
|
+
If no features are linked, warn the user but continue.
|
|
158
125
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
If no prior failure comment or validation report is found, proceed normally.
|
|
162
|
-
|
|
163
|
-
### Step 4: Move Card to `in-progress`
|
|
126
|
+
---
|
|
164
127
|
|
|
165
|
-
|
|
128
|
+
### Step 5: Move Card to `in-progress`
|
|
166
129
|
|
|
167
130
|
```
|
|
168
131
|
<MCP_PREFIX>move_card({ cardId: "<cardId>", status: "in-progress" })
|
|
169
132
|
```
|
|
170
133
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
Before planning, detect criteria in *other* active features that this implementation might break.
|
|
174
|
-
|
|
175
|
-
**Detection process:**
|
|
134
|
+
---
|
|
176
135
|
|
|
177
|
-
|
|
178
|
-
2. Use `Glob` and `Grep` to identify which source files will need to change
|
|
179
|
-
3. Load the full feature atlas:
|
|
180
|
-
```
|
|
181
|
-
<MCP_PREFIX>list_features({ limit: 100 })
|
|
182
|
-
```
|
|
183
|
-
4. For each *other* active feature (status `active`, not linked to this card), check if its criteria describe behavior in the same files/components/routes the implementation will touch
|
|
184
|
-
5. Assess risk level: HIGH if the same component/route is directly modified, MEDIUM if a shared utility is changed, LOW if only indirect overlap
|
|
136
|
+
### Step 6: Spawn Planner Agent
|
|
185
137
|
|
|
186
|
-
|
|
138
|
+
Spawn a `Plan` subagent to design the implementation. Pass it all the card context you've collected (title, description, todos, criteria, prior failures if any). The planner writes the plan as output — it does NOT write files.
|
|
187
139
|
|
|
188
140
|
```
|
|
189
|
-
|
|
141
|
+
Agent(
|
|
142
|
+
subagent_type="Plan",
|
|
143
|
+
prompt="
|
|
144
|
+
You are planning the implementation of a Rayburst board card.
|
|
190
145
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
146
|
+
## Card
|
|
147
|
+
Title: <card title>
|
|
148
|
+
Description: <card description>
|
|
149
|
+
Status: in-progress
|
|
150
|
+
Card ID: <cardId>
|
|
194
151
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
Criterion: "<criterion description>" (ID: <full-uuid>)
|
|
198
|
-
Risk: <why this implementation could break it>
|
|
152
|
+
## Acceptance Criteria
|
|
153
|
+
<list all criteria from linked features, with criterionId and Given/When/Then description>
|
|
199
154
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
2. Adjust the plan to preserve these criteria
|
|
203
|
-
3. Cancel
|
|
155
|
+
## Todo List (implement in this order)
|
|
156
|
+
<list card todos in order>
|
|
204
157
|
|
|
205
|
-
|
|
206
|
-
|
|
158
|
+
## Prior QA Failures (if any)
|
|
159
|
+
<list any criteria that previously failed — these must be fixed>
|
|
207
160
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
<MCP_PREFIX>move_card({ cardId: "<cardId>", status: "ready" })
|
|
213
|
-
```
|
|
214
|
-
Then stop.
|
|
161
|
+
## Codebase Context
|
|
162
|
+
App URL: http://www.rayburst.app
|
|
163
|
+
Frontend: rayburst/ (React, TanStack Router, Tailwind v4)
|
|
164
|
+
Backend: rayburst-api/ (Hono, Drizzle ORM, PostgreSQL)
|
|
215
165
|
|
|
216
|
-
|
|
166
|
+
## Your Task
|
|
167
|
+
Produce a complete implementation plan:
|
|
168
|
+
1. List every file to create or modify (exact paths)
|
|
169
|
+
2. Describe the approach for each acceptance criterion
|
|
170
|
+
3. Cover any DB migrations, API changes, env vars needed
|
|
171
|
+
4. Note edge cases and error handling
|
|
172
|
+
5. If prior QA failures exist, add a 'Fixing QA Failures' section at the top
|
|
217
173
|
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
174
|
+
Output the plan as structured markdown. Be specific — the executor will follow this plan without asking questions.
|
|
175
|
+
",
|
|
176
|
+
description="Plan: <card title>"
|
|
177
|
+
)
|
|
178
|
+
```
|
|
221
179
|
|
|
222
|
-
|
|
223
|
-
- Files to create or modify (with exact paths)
|
|
224
|
-
- Implementation approach for each acceptance criterion from the test plan
|
|
225
|
-
- Any database migrations, API changes, or environment variable additions needed
|
|
226
|
-
- Edge cases and error handling
|
|
227
|
-
- How at-risk criteria from Step 5 (if any) will be preserved
|
|
180
|
+
Store the plan output as `$PLAN`.
|
|
228
181
|
|
|
229
|
-
|
|
182
|
+
---
|
|
230
183
|
|
|
231
|
-
### Step 7:
|
|
184
|
+
### Step 7: Post Plan as Card Comment
|
|
232
185
|
|
|
233
|
-
|
|
186
|
+
Post the plan to the card before execution starts:
|
|
234
187
|
|
|
235
188
|
```
|
|
236
189
|
<MCP_PREFIX>add_comment({
|
|
237
190
|
cardId: "<cardId>",
|
|
238
|
-
content: "## Implementation Plan\n\n
|
|
191
|
+
content: "## Implementation Plan\n\n<$PLAN summary — 2-3 sentences>\n\n### Files to Modify\n- <file>\n\n### Approach\n<prose>\n\n### Criteria Coverage\n- <criterion>: <how satisfied>"
|
|
239
192
|
})
|
|
240
193
|
```
|
|
241
194
|
|
|
242
|
-
Keep
|
|
243
|
-
|
|
244
|
-
### Step 8: Execute Implementation
|
|
195
|
+
Keep under 5000 characters. Describe the approach — no raw code blocks.
|
|
245
196
|
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
1. **Work the todo list in order** — use `list_card_todos` to get the ordered checklist, implement each item before moving to the next
|
|
249
|
-
2. **Make atomic changes** — one logical unit at a time (e.g., backend schema first, then service, then routes, then frontend)
|
|
250
|
-
3. **Run tests after significant changes**:
|
|
251
|
-
```bash
|
|
252
|
-
cd rayburst && npm run test -- <relevant-test-file>
|
|
253
|
-
cd rayburst-api && npm run type-check
|
|
254
|
-
```
|
|
255
|
-
4. **Run lint/type check before moving on**:
|
|
256
|
-
```bash
|
|
257
|
-
cd rayburst && npm run check
|
|
258
|
-
cd rayburst-api && npm run check
|
|
259
|
-
```
|
|
197
|
+
---
|
|
260
198
|
|
|
261
|
-
|
|
199
|
+
### Step 8: Spawn Executor Agent
|
|
262
200
|
|
|
263
|
-
|
|
201
|
+
Spawn a `general-purpose` subagent to execute the plan. Pass it the full plan and all card context.
|
|
264
202
|
|
|
265
|
-
|
|
203
|
+
```
|
|
204
|
+
Agent(
|
|
205
|
+
subagent_type="general-purpose",
|
|
206
|
+
prompt="
|
|
207
|
+
You are implementing a Rayburst board card. Execute the plan below completely. Do not ask questions — make decisions and write the code.
|
|
266
208
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
209
|
+
## Card
|
|
210
|
+
Title: <card title>
|
|
211
|
+
Card ID: <cardId>
|
|
212
|
+
MCP Prefix: <MCP_PREFIX>
|
|
271
213
|
|
|
272
|
-
|
|
214
|
+
## Implementation Plan
|
|
215
|
+
<full $PLAN>
|
|
273
216
|
|
|
274
|
-
|
|
217
|
+
## Acceptance Criteria (verify each before finishing)
|
|
218
|
+
<list all criteria with criterionId>
|
|
275
219
|
|
|
276
|
-
|
|
220
|
+
## Todo List (work in this order)
|
|
221
|
+
<list card todos>
|
|
277
222
|
|
|
278
|
-
|
|
279
|
-
|
|
223
|
+
## Execution Rules
|
|
224
|
+
- Work through todos in order
|
|
225
|
+
- Make atomic changes (backend schema → service → routes → frontend)
|
|
226
|
+
- After backend changes: run `cd rayburst-api && npm run type-check`
|
|
227
|
+
- After frontend changes: run `cd rayburst && npx biome check <changed files>`
|
|
228
|
+
- After implementation: do a self-check — does each criterion have code that satisfies it?
|
|
229
|
+
- When all todos are complete and criteria are satisfied, call:
|
|
230
|
+
<MCP_PREFIX>move_card({ cardId: '<cardId>', status: 'validation' })
|
|
231
|
+
- Then post a summary comment:
|
|
232
|
+
<MCP_PREFIX>add_comment({ cardId: '<cardId>', content: '## Implementation Complete\n\n### What was built\n<summary>\n\n### Files changed\n- <file>\n\n### Criteria coverage\n- <criterion>: satisfied via <explanation>' })
|
|
233
|
+
- Return a completion message listing files changed and criteria satisfied.
|
|
234
|
+
",
|
|
235
|
+
description="Implement: <card title>"
|
|
236
|
+
)
|
|
280
237
|
```
|
|
281
238
|
|
|
282
|
-
|
|
239
|
+
---
|
|
283
240
|
|
|
284
|
-
|
|
285
|
-
<MCP_PREFIX>add_comment({
|
|
286
|
-
cardId: "<cardId>",
|
|
287
|
-
content: "## Implementation Complete\n\nReady for QA validation.\n\n### What was built\n<brief prose summary of what was implemented>\n\n### Files changed\n- <file path>\n- <file path>\n\n### Criteria coverage\n- <criterion description>: satisfied via <brief explanation>"
|
|
288
|
-
})
|
|
289
|
-
```
|
|
241
|
+
### Step 9: Print Summary
|
|
290
242
|
|
|
291
|
-
|
|
243
|
+
After the executor returns, print:
|
|
292
244
|
|
|
293
245
|
```
|
|
294
246
|
## Implementation Complete: <Card Title>
|
|
@@ -299,7 +251,6 @@ Then print:
|
|
|
299
251
|
|
|
300
252
|
### Files Changed
|
|
301
253
|
- <file path>
|
|
302
|
-
- <file path>
|
|
303
254
|
|
|
304
255
|
Run `/rb:validate-card <cardId>` to run QA validation.
|
|
305
256
|
```
|
|
@@ -308,9 +259,16 @@ Run `/rb:validate-card <cardId>` to run QA validation.
|
|
|
308
259
|
|
|
309
260
|
## MCP Curl Fallback
|
|
310
261
|
|
|
311
|
-
When MCP tools are unavailable, use
|
|
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).
|
|
312
263
|
|
|
313
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
|
+
|
|
314
272
|
# Get card
|
|
315
273
|
curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
|
|
316
274
|
-H "Authorization: Bearer <KEY>" \
|
|
@@ -331,34 +289,6 @@ curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
|
|
|
331
289
|
-H "Content-Type: application/json" \
|
|
332
290
|
-H "Accept: application/json, text/event-stream" \
|
|
333
291
|
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"add_comment","arguments":{"cardId":"<cardId>","content":"<comment>"}}}'
|
|
334
|
-
|
|
335
|
-
# List comments (used in Step 3b to detect prior QA failures)
|
|
336
|
-
curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
|
|
337
|
-
-H "Authorization: Bearer <KEY>" \
|
|
338
|
-
-H "Content-Type: application/json" \
|
|
339
|
-
-H "Accept: application/json, text/event-stream" \
|
|
340
|
-
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_comments","arguments":{"cardId":"<cardId>"}}}'
|
|
341
|
-
|
|
342
|
-
# List validations (used in Step 3b to identify failing criteria)
|
|
343
|
-
curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
|
|
344
|
-
-H "Authorization: Bearer <KEY>" \
|
|
345
|
-
-H "Content-Type: application/json" \
|
|
346
|
-
-H "Accept: application/json, text/event-stream" \
|
|
347
|
-
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_validations","arguments":{"cardId":"<cardId>"}}}'
|
|
348
|
-
|
|
349
|
-
# Submit validation report (Steps 13)
|
|
350
|
-
curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
|
|
351
|
-
-H "Authorization: Bearer <KEY>" \
|
|
352
|
-
-H "Content-Type: application/json" \
|
|
353
|
-
-H "Accept: application/json, text/event-stream" \
|
|
354
|
-
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"submit_validation","arguments":{"cardId":"<cardId>","results":[{"criterionId":"<id>","status":"pass","comment":"<evidence>"}],"overallComment":"N of total criteria passing."}}}'
|
|
355
|
-
|
|
356
|
-
# Move card to done (Step 14 — only after submit_validation passes)
|
|
357
|
-
curl -s -X POST "https://api.rayburst.app/api/v1/mcp" \
|
|
358
|
-
-H "Authorization: Bearer <KEY>" \
|
|
359
|
-
-H "Content-Type: application/json" \
|
|
360
|
-
-H "Accept: application/json, text/event-stream" \
|
|
361
|
-
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"move_card","arguments":{"cardId":"<cardId>","status":"done"}}}'
|
|
362
292
|
```
|
|
363
293
|
|
|
364
294
|
Parse the `data:` line from the SSE response to extract the JSON result.
|
|
@@ -369,15 +299,9 @@ Parse the `data:` line from the SSE response to extract the JSON result.
|
|
|
369
299
|
|
|
370
300
|
- **Full UUIDs only** — short hashes return NOT_FOUND
|
|
371
301
|
- **Rate limit: 60 req/min** — batch MCP calls in groups of 4-5
|
|
372
|
-
- **
|
|
302
|
+
- **No interactive plan approval** — planner agent produces the plan, executor runs it immediately
|
|
303
|
+
- **Move card to `in-progress` before planning** (Step 5) — board must reflect active work
|
|
373
304
|
- **Post plan as comment before executing** (Step 7) — creates a paper trail
|
|
374
|
-
- **
|
|
375
|
-
- **Always run QA validation after implementation** (Steps 11–13) — never stop at `validation` status
|
|
376
|
-
- **Only move card to `done` after `submit_validation` passes** (Step 14) — the MCP gate is mandatory
|
|
377
|
-
- **On QA failure: post comment then move to `in-progress`** — never leave a failed card in `validation`
|
|
378
|
-
- **Do NOT fix failing criteria during QA** — report them, return the card, and stop
|
|
379
|
-
- **If conflict detection finds at-risk criteria, STOP and prompt** — do not silently proceed
|
|
380
|
-
- **If user cancels after conflict detection, move card back to `ready`** before stopping
|
|
305
|
+
- **Executor moves card to `validation`** — do not move it manually after spawning
|
|
381
306
|
- **Implementation comments under 5000 characters** — no raw code in comment content
|
|
382
|
-
- **Validation criterion comments under 500 characters** — plain prose only, no backticks
|
|
383
307
|
- **Run `/rb:init` first** if `.claude/rb-config.md` is missing
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rayburst/cc",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.26",
|
|
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"
|