openalex-mcp-server 1.0.1

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.
@@ -0,0 +1,613 @@
1
+ ---
2
+ name: ralph-yolo
3
+ description: "YOLO模式 - 直接使用Claude Code子Agent实现PRD,不依赖Amp CLI。顺序执行每个用户故事,前台跟踪进度。"
4
+ ---
5
+
6
+ # Ralph YOLO - Autonomous Agent Loop (No Amp Required)
7
+
8
+ Ralph YOLO 是 Ralph 的轻量版本,直接使用 Claude Code 的 Task tool 管理子 agent 完成任务,无需依赖 Amp CLI。
9
+
10
+ ---
11
+
12
+ ## 与原 Ralph 的区别
13
+
14
+ | 特性 | 原 Ralph | Ralph YOLO |
15
+ |------|----------|------------|
16
+ | 依赖 | Amp CLI | Claude Code Task Tool |
17
+ | 执行方式 | bash 脚本循环 | 前台子 agent 管理 |
18
+ | Agent 实例 | 外部 Amp 进程 | Claude Code Task 子 agent |
19
+ | 状态跟踪 | 文件读写 | 前台实时更新 |
20
+ | 上下文 | 每次全新 | 主会话保持完整上下文 |
21
+
22
+ ---
23
+
24
+ ## 使用方法
25
+
26
+ ```
27
+ /ralph-yolo [path-to-prd.md]
28
+ ```
29
+
30
+ 如果未提供 PRD 路径,会查找项目根目录的 `prd.json` 并直接执行。
31
+
32
+ **示例:**
33
+ ```bash
34
+ /ralph-yolo tasks/prd-my-feature.md # 从 PRD 转换并执行
35
+ /ralph-yolo prd.json # 使用现有 prd.json 执行
36
+ /ralph-yolo # 自动查找 prd.json
37
+ ```
38
+
39
+ ---
40
+
41
+ ## 工作流程
42
+
43
+ ### Phase 1: PRD 转换(如果提供了 markdown PRD)
44
+
45
+ #### Step 1: 读取 PRD 文件
46
+
47
+ 读取用户提供的 markdown PRD 文件。
48
+
49
+ #### Step 2: 归档旧运行(如需要)
50
+
51
+ 检查是否存在 `prd.json` 且 `branchName` 不同。如果是:
52
+ 1. 读取当前 `prd.json` 提取 `branchName`
53
+ 2. 比较新功能的分支名
54
+ 3. 如果不同且 `prd-progress.txt` 有内容:
55
+ - 创建归档文件夹:`.claude/archive/YYYY-MM-DD-[feature-name]/`
56
+ - 复制当前 `prd.json` 和 `prd-progress.txt` 到归档
57
+ - 重置 `prd-progress.txt` 为新的头部信息
58
+
59
+ #### Step 3: 转换为 prd.json
60
+
61
+ 解析 PRD 并生成项目根目录的 `prd.json`:
62
+
63
+ ```json
64
+ {
65
+ "project": "[从 PRD 提取或自动检测的项目名]",
66
+ "branchName": "ralph/[feature-name-kebab-case]",
67
+ "description": "[从 PRD 提取的功能描述]",
68
+ "userStories": [
69
+ {
70
+ "id": "US-001",
71
+ "title": "[故事标题]",
72
+ "description": "As a [用户], I want [功能] so that [收益]",
73
+ "acceptanceCriteria": [
74
+ "标准 1",
75
+ "标准 2",
76
+ "Typecheck passes"
77
+ ],
78
+ "priority": 1,
79
+ "passes": false,
80
+ "notes": ""
81
+ }
82
+ ]
83
+ }
84
+ ```
85
+
86
+ #### 转换规则
87
+
88
+ 1. **每个用户故事成为一个 JSON 条目**
89
+ 2. **ID**:顺序编号(US-001, US-002 等)
90
+ 3. **Priority**:基于依赖顺序(schema → backend → UI)
91
+ 4. **所有故事**:初始 `passes: false`,`notes` 为空
92
+ 5. **branchName**:从功能名派生,kebab-case,前缀 `ralph/`
93
+ 6. **始终添加**:"Typecheck passes" 到每个故事
94
+ 7. **UI 故事**:添加 "Verify in browser"
95
+
96
+ #### 故事大小关键原则
97
+
98
+ 每个故事必须在一个上下文窗口内完成。
99
+
100
+ **合适大小:**
101
+ - 添加数据库列和迁移
102
+ - 向现有页面添加 UI 组件
103
+ - 更新服务器操作
104
+ - 添加过滤下拉菜单
105
+
106
+ **太大(需拆分):**
107
+ - "构建整个仪表板" → 拆分为:schema, queries, UI 组件, filters
108
+ - "添加认证" → 拆分为:schema, middleware, 登录 UI, session handling
109
+
110
+ **经验法则:** 如果不能用 2-3 句话描述变更,就太大了。
111
+
112
+ #### 故事排序
113
+
114
+ 故事按 `priority` 顺序执行。前面的故事不能依赖后面的。
115
+
116
+ **正确顺序:**
117
+ 1. Schema/数据库变更(migrations)
118
+ 2. Server actions / 后端逻辑
119
+ 3. 使用后端的 UI 组件
120
+ 4. 汇总数据的 Dashboard/summary 视图
121
+
122
+ ---
123
+
124
+ ### Phase 2: Ralph YOLO 执行
125
+
126
+ #### Step 1: 预检
127
+
128
+ 验证以下条件:
129
+
130
+ 1. **Git 工作区干净**
131
+ ```bash
132
+ git status --porcelain
133
+ ```
134
+ 如果不干净,要求用户提交或暂存更改
135
+
136
+ 2. **prd.json 存在且有效**
137
+ ```bash
138
+ cat prd.json | jq .
139
+ ```
140
+ 如果无效,显示错误并退出
141
+
142
+ #### Step 2: 创建或检出功能分支
143
+
144
+ 读取 `prd.json` 中的 `branchName`:
145
+ ```bash
146
+ jq -r '.branchName' prd.json
147
+ ```
148
+
149
+ 如果分支不存在,从 main 创建:
150
+ ```bash
151
+ git checkout -b $(jq -r '.branchName' prd.json)
152
+ ```
153
+
154
+ 如果分支存在,检出它:
155
+ ```bash
156
+ git checkout $(jq -r '.branchName' prd.json)
157
+ ```
158
+
159
+ #### Step 3: 初始化进度文件
160
+
161
+ 如果 `prd-progress.txt` 不存在,创建它:
162
+ ```bash
163
+ echo "# Ralph YOLO Progress Log" > prd-progress.txt
164
+ echo "Started: $(date)" >> prd-progress.txt
165
+ echo "---" >> prd-progress.txt
166
+ ```
167
+
168
+ #### Step 4: 顺序执行用户故事
169
+
170
+ 这是 Ralph YOLO 的核心工作流程:
171
+
172
+ ```javascript
173
+ // 伪代码示意
174
+ while (有未完成的用户故事) {
175
+ 1. 读取 prd.json
176
+ 2. 找到最高 priority 且 passes=false 的故事
177
+ 3. 如果没有未完成故事,退出循环
178
+ 4. 创建子 agent 处理该故事
179
+ 5. 等待子 agent 完成
180
+ 6. 验证完成情况
181
+ 7. 更新 prd.json (passes=true)
182
+ 8. 追加进度到 prd-progress.txt
183
+ 9. 继续下一个故事
184
+ }
185
+ ```
186
+
187
+ #### Step 4 详细流程
188
+
189
+ ##### 4.1 选择下一个故事
190
+
191
+ 读取 `prd.json`,找到:
192
+ - `passes: false`
193
+ - 最低 `priority` 值(最高优先级)
194
+ - 按 `priority` 升序排序
195
+
196
+ ##### 4.2 创建子 agent
197
+
198
+ 根据故事类型选择合适的子 agent:
199
+
200
+ **前端故事(涉及 UI):**
201
+ ```javascript
202
+ 使用 `Task` tool 创建 `ui-ux-designer` 子 agent(如需要设计)
203
+ 然后创建 `Full-stack-developer` 子 agent 实施开发
204
+ ```
205
+
206
+ **后端/全栈故事:**
207
+ ```javascript
208
+ 使用 `Task` tool 创建 `Full-stack-developer` 子 agent
209
+ ```
210
+
211
+ **复杂多步骤任务:**
212
+ ```javascript
213
+ 使用 `Task` tool 创建 `general-purpose` 子 agent
214
+ ```
215
+
216
+ **子 Agent 提示词模板:**
217
+
218
+ ```
219
+ 你是一个独立的开发 agent,正在完成一个用户故事。
220
+
221
+ ## 用户故事
222
+
223
+ **ID**: {story.id}
224
+ **标题**: {story.title}
225
+ **描述**: {story.description}
226
+
227
+ ## 验收标准
228
+
229
+ {逐条列出 acceptanceCriteria}
230
+
231
+ ## 上下文信息
232
+
233
+ - 项目: {prd.project}
234
+ - 功能分支: {prd.branchName}
235
+ - 功能描述: {prd.description}
236
+
237
+ ## 你需要做的事情
238
+
239
+ 1. 阅读并理解该用户故事
240
+ 2. 阅读项目的现有代码,了解代码结构
241
+ 3. 实现该用户故事
242
+ 4. 运行质量检查(typecheck, lint, test 等)
243
+ 5. 如果检查通过,提交代码:
244
+ - 提交信息格式: `feat: {story.id} - {story.title}`
245
+ - 使用 Co-Authored-By: Claude <noreply@anthropic.com>
246
+ 6. 如果检查失败,修复问题直到通过
247
+ 7. 确保所有验收标准都满足
248
+
249
+ ## 重要约束
250
+
251
+ - 只工作于这一个用户故事
252
+ - 不要修改其他无关代码
253
+ - 遵循项目现有的代码模式和约定
254
+ - 提交前确保所有检查通过
255
+
256
+ 完成后,请明确报告:
257
+ - 实现了什么
258
+ - 修改了哪些文件
259
+ - 是否成功提交
260
+ - 遇到的任何问题或学习点
261
+ ```
262
+
263
+ ##### 4.3 等待子 agent 完成
264
+
265
+ 使用 `Task` tool 的 **阻塞模式**(默认),等待子 agent 完全完成后再继续。
266
+
267
+ 不要使用 `run_in_background` 参数,确保顺序执行。
268
+
269
+ ##### 4.4 验证完成情况
270
+
271
+ 子 agent 完成后,验证:
272
+
273
+ 1. **检查 Git 状态**
274
+ ```bash
275
+ git log --oneline -1
276
+ ```
277
+ 应该看到新的提交,提交信息匹配故事 ID 和标题
278
+
279
+ 2. **检查工作区**
280
+ ```bash
281
+ git status --porcelain
282
+ ```
283
+ 应该是干净的(所有更改已提交)
284
+
285
+ 3. **运行质量检查**
286
+ ```bash
287
+ # 根据项目配置运行
288
+ npm run typecheck # 或等效命令
289
+ npm run lint # 或等效命令
290
+ npm test # 或等效命令
291
+ ```
292
+
293
+ ##### 4.5 更新 prd.json
294
+
295
+ 如果验证成功:
296
+ 1. 读取当前 `prd.json`
297
+ 2. 将该故事的 `passes` 设置为 `true`
298
+ 3. 保持其他字段不变
299
+ 4. 写回 `prd.json`
300
+
301
+ ##### 4.6 追加进度日志
302
+
303
+ 追加到 `prd-progress.txt`:
304
+
305
+ ```markdown
306
+ ## [Date/Time] - [Story ID]
307
+ - **Story**: [Story Title]
308
+ - **Agent**: [子 agent 类型]
309
+ - **What was implemented**: [实现内容]
310
+ - **Files changed**: [变更文件列表]
311
+ - **Learnings**:
312
+ - [发现的模式]
313
+ - [遇到的问题]
314
+ - [有用的上下文]
315
+ ---
316
+ ```
317
+
318
+ ##### 4.7 继续下一个故事
319
+
320
+ 返回到 Step 4.1,选择下一个未完成的故事。
321
+
322
+ #### Step 5: 完成检测
323
+
324
+ 当所有用户故事的 `passes` 都为 `true` 时:
325
+
326
+ 1. 输出完成信号:
327
+ ```
328
+ <promise>COMPLETE</promise>
329
+ ```
330
+
331
+ 2. 显示完成摘要:
332
+ ```
333
+ ═══════════════════════════════════════════════════════
334
+ Ralph YOLO 完成所有任务!
335
+ ═══════════════════════════════════════════════════════
336
+ 总计完成: X 个用户故事
337
+ 进度文件: prd-progress.txt
338
+ Git 提交: git log --oneline
339
+ ```
340
+
341
+ 3. 退出循环
342
+
343
+ ---
344
+
345
+ ## 子 Agent 管理
346
+
347
+ ### Agent 类型选择
348
+
349
+ | 任务类型 | Agent 类型 | 说明 |
350
+ |---------|-----------|------|
351
+ | UI 设计需求 | `ui-ux-designer` | 设计界面和用户体验 |
352
+ | 一般开发 | `Full-stack-developer` | 日常全栈开发任务 |
353
+ | 复杂任务 | `general-purpose` | 多步骤复杂任务 |
354
+
355
+ ### 创建子 Agent
356
+
357
+ 使用 Claude Code 的 `Task` tool:
358
+
359
+ ```javascript
360
+ Task({
361
+ subagent_type: "Full-stack-developer",
362
+ description: "实现 US-001 用户故事",
363
+ prompt: `[详细的任务指令]`
364
+ })
365
+ ```
366
+
367
+ ### 等待完成
368
+
369
+ 不使用 `run_in_background`,确保同步执行:
370
+
371
+ ```javascript
372
+ // 正确 ✓
373
+ Task({ subagent_type: "...", prompt: "..." })
374
+
375
+ // 错误 ✗(会异步执行)
376
+ Task({ subagent_type: "...", prompt: "...", run_in_background: true })
377
+ ```
378
+
379
+ ---
380
+
381
+ ## 进度监控
382
+
383
+ 在执行过程中,定期向用户报告进度:
384
+
385
+ ### 每个 Agent 完成后
386
+
387
+ ```markdown
388
+ ✓ 完成 US-001: Add priority field to database
389
+ - Agent: Full-stack-developer
390
+ - 提交: abc1234
391
+ - 文件: src/db/schema.sql, migrations/001_add_priority.sql
392
+
393
+ 进度: 1/4 (25%)
394
+ 剩余故事:
395
+ - US-002: Display priority indicator (priority: 2)
396
+ - US-003: Add priority selector (priority: 3)
397
+ - US-004: Filter by priority (priority: 4)
398
+
399
+ 正在启动下一个 agent...
400
+ ```
401
+
402
+ ### 每 N 个故事后
403
+
404
+ 每完成 2-3 个故事,显示详细摘要:
405
+
406
+ ```markdown
407
+ ────────────────────────────────────────────────────────────
408
+ Ralph YOLO 进度报告
409
+ ────────────────────────────────────────────────────────────
410
+ 已完成: 3/10 (30%)
411
+ 当前分支: ralph/task-priority
412
+ 最近提交:
413
+ - abc1234 feat: US-001 - Add priority field
414
+ - def5678 feat: US-002 - Display priority indicator
415
+ - ghi9012 feat: US-003 - Add priority selector
416
+
417
+ 下一步: US-004 - Filter by priority
418
+ ────────────────────────────────────────────────────────────
419
+ ```
420
+
421
+ ---
422
+
423
+ ## 错误处理
424
+
425
+ ### 子 Agent 失败
426
+
427
+ 如果子 agent 报告失败或无法完成任务:
428
+
429
+ 1. **记录失败信息**
430
+ - 将错误信息添加到故事的 `notes` 字段
431
+ - 在 `prd-progress.txt` 中记录详细错误
432
+
433
+ 2. **询问用户**
434
+ ```
435
+ ❌ 子 agent 无法完成 US-001
436
+
437
+ 错误信息: [具体错误]
438
+ 建议: [如何修复]
439
+
440
+ 选项:
441
+ A. 跳过此故事,继续下一个
442
+ B. 手动修复后重试此故事
443
+ C. 暂停执行,让用户介入
444
+
445
+ 请选择 (A/B/C):
446
+ ```
447
+
448
+ 3. **根据用户选择处理**
449
+ - A: 标记 `notes`,继续下一个故事
450
+ - B: 暂停,等待用户手动修复后再继续
451
+ - C: 完全停止,保存当前状态
452
+
453
+ ### 质量检查失败
454
+
455
+ 如果子 agent 完成但质量检查失败:
456
+
457
+ 1. **不更新 prd.json**
458
+ - `passes` 保持 `false`
459
+ - 添加失败原因到 `notes`
460
+
461
+ 2. **创建新的 agent 重试**
462
+ ```
463
+ ⚠️ US-001 质量检查失败
464
+
465
+ 失败的检查:
466
+ - typecheck: 找到 3 个类型错误
467
+
468
+ 正在创建新的 agent 尝试修复...
469
+ ```
470
+
471
+ 3. **最多重试 2 次**
472
+ - 如果 2 次重试后仍失败,询问用户是否跳过
473
+
474
+ ---
475
+
476
+ ## 关键文件
477
+
478
+ | 文件 | 用途 |
479
+ |------|------|
480
+ | `prd.json` | 用户故事及其 `passes` 状态(任务清单)|
481
+ | `prd-progress.txt` | 追踪学习进度的追加日志 |
482
+ | `.claude/archive/` | 旧运行的存档 |
483
+
484
+ ---
485
+
486
+ ## 提示
487
+
488
+ 1. **保持故事小** - 每个必须在一个上下文窗口内完成
489
+ 2. **按依赖排序** - schema 在前,然后是后端,然后是 UI
490
+ 3. **可验证的标准** - "Typecheck passes" 而不是 "工作正常"
491
+ 4. **干净的 git 状态** - 从干净的工作区开始
492
+ 5. **监控进度** - 定期检查 `prd-progress.txt` 和 git log
493
+
494
+ ---
495
+
496
+ ## 示例会话
497
+
498
+ ```
499
+ User: /ralph-yolo tasks/prd-task-priority.md
500
+
501
+ Ralph YOLO:
502
+ ✓ 正在转换 PRD 到 prd.json...
503
+ ✓ 已创建包含 4 个用户故事的 prd.json
504
+ ✓ 检查前置条件...
505
+ ✓ Git 工作区干净
506
+ ✓ 创建分支 ralph/task-priority...
507
+
508
+ ══════════════════════════════════════════════════════
509
+ Ralph YOLO - 自主 Agent 循环
510
+ ══════════════════════════════════════════════════════
511
+ 找到 4 个用户故事
512
+ 开始执行...
513
+
514
+ ────────────────────────────────────────────────────────────
515
+ [Agent 1/4] Full-stack-developer
516
+ 任务: US-001 - Add priority field to database
517
+ ────────────────────────────────────────────────────────────
518
+
519
+ [子 agent 执行中...]
520
+
521
+ ✓ 完成 US-001: Add priority field to database
522
+ - Agent: Full-stack-developer
523
+ - 提交: abc1234
524
+ - 文件: src/db/schema.sql, migrations/001_add_priority.sql
525
+
526
+ 进度: 1/4 (25%)
527
+ 正在启动下一个 agent...
528
+
529
+ ────────────────────────────────────────────────────────────
530
+ [Agent 2/4] Full-stack-developer
531
+ 任务: US-002 - Display priority indicator on task cards
532
+ ────────────────────────────────────────────────────────────
533
+
534
+ [继续执行...]
535
+
536
+ 进度报告
537
+ ────────────────────────────────────────────────────────────
538
+ 已完成: 3/4 (75%)
539
+ 当前分支: ralph/task-priority
540
+
541
+ ✓ 完成 US-001 - Add priority field to database
542
+ ✓ 完成 US-002 - Display priority indicator on task cards
543
+ ✓ 完成 US-003 - Add priority selector to task edit
544
+
545
+ 下一步: US-004 - Filter tasks by priority
546
+
547
+ ────────────────────────────────────────────────────────────
548
+
549
+ [最后的故事执行...]
550
+
551
+ ══════════════════════════════════════════════════════
552
+ Ralph YOLO 完成所有任务!
553
+ ══════════════════════════════════════════════════════
554
+ 总计完成: 4 个用户故事
555
+ 分支: ralph/task-priority
556
+
557
+ 查看详情:
558
+ cat prd-progress.txt
559
+ git log --oneline
560
+
561
+ <promise>COMPLETE</promise>
562
+ ```
563
+
564
+ ---
565
+
566
+ ## 故障排除
567
+
568
+ ### 执行中断
569
+
570
+ 如果 Ralph YOLO 被中断(Ctrl+C 或错误):
571
+
572
+ ```bash
573
+ # 查看当前状态
574
+ cat prd.json | jq '.userStories[] | select(.passes == false) | {id, title, priority}'
575
+
576
+ # 查看进度日志
577
+ cat prd-progress.txt | tail -20
578
+
579
+ # 重新运行 Ralph YOLO(会继续未完成的故事)
580
+ /ralph-yolo
581
+ ```
582
+
583
+ ### 故事失败
584
+
585
+ 如果某个故事反复失败:
586
+
587
+ 1. 检查 `prd.json` 中该故事的 `notes` 字段
588
+ 2. 检查 `prd-progress.txt` 了解错误详情
589
+ 3. 可能需要:
590
+ - 手动修复代码
591
+ - 调整故事范围(拆分得更小)
592
+ - 更新依赖项
593
+
594
+ ### Git 冲突
595
+
596
+ 如果在创建分支时遇到冲突:
597
+
598
+ ```bash
599
+ # 查看当前分支
600
+ git branch
601
+
602
+ # 如果分支已存在,可以选择:
603
+ # 1. 继续使用现有分支
604
+ git checkout ralph/feature-name
605
+
606
+ # 2. 删除并重新创建(谨慎!)
607
+ git branch -D ralph/feature-name
608
+ git checkout -b ralph/feature-name
609
+ ```
610
+
611
+ ---
612
+
613
+ **准备好运行 Ralph YOLO 了喵~ 提供 PRD 路径进行转换,或者浮浮酱会使用现有的 prd.json** φ(≧ω≦*)♪