# Rfc Process

> memex 专属 RFC 处理命令。一次调用只处理一个 issue：ADM1 评审 → ADM2 实施 → ADM3 review，并写入 logs/rfc/ 日志。无参数时自动选最旧的 open RFC issue；带参数时处理指定 issue 编号。非 RFC issue 自动跳过。

- Skill: `orangeviolin/rfc-process` (Agent Skill)
- Install (CLI): `npx skillmds@latest add orangeviolin/rfc-process`
- Raw SKILL.md: https://api.skillmd.com/api/skills/orangeviolin/rfc-process/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: OrangeViolin (https://skillmd.com/u/orangeviolin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/orangeviolin/rfc-process

---


# /rfc-process — RFC 处理（memex 专属）

## 铁律：仅限 memex 执行

**第一步必须验证工作目录**：

```bash
git remote get-url origin 2>/dev/null
```

若输出不含 `baojie/memex`，立即停止并报错：

```
/adm 只能在 memex 主仓库中执行（当前不是 baojie/memex）。
```

不在 memex 时绝不继续任何后续步骤。

---

## 参数解析

- **无参数**：从 GitHub 列出所有 open issue，选标题含 `RFC-` 的**最旧一条**（最小编号）
- **`/adm <N>`**：处理 issue #N

```bash
# 无参数时
gh issue list --repo baojie/memex --state open --json number,title,createdAt \
  | python3 -c "
import json, sys
issues = json.load(sys.stdin)
rfc = [i for i in issues if 'RFC-' in i['title']]
if not rfc:
    print('NO_RFC')
else:
    rfc.sort(key=lambda x: x['number'])
    print(rfc[0]['number'])
"
```

若结果为 `NO_RFC`，输出"当前无待处理 RFC issue"，正常结束。

---

## 跳过条件

对指定 issue（有参数时），检查标题是否含 `RFC-`：

```bash
gh issue view <N> --repo baojie/memex --json title -q .title
```

若标题不含 `RFC-`，输出：

```
Issue #N 标题不含 RFC-，跳过。
```

正常结束，不报错。

---

## 执行流程：一个 issue 的完整处理

### Step 0 — 读取 issue 信息

```bash
gh issue view <N> --repo baojie/memex
```

提取：
- RFC ID（从标题解析，如 `RFC-aima-0003`）
- 来源 wiki（RFC ID 中的 `<wiki>` 部分）
- RFC 文件路径（从 issue 正文中找 `ref/rfc/rfc-<wiki>-NNNN-slug.md`）

在对应 wiki 目录中读取 RFC 文件完整内容（路径如 `~/work/knowledge/<wiki>/ref/rfc/rfc-<wiki>-NNNN-slug.md`）。

若 RFC 文件的 `Status` 不是 `proposed`，输出当前状态后结束：

```
RFC-<wiki>-NNNN 当前状态为 <status>，跳过。
```

---

### Step 1 — ADM1：评审

按 `skills/gene/ADM1-rfc-evaluate.md` 执行：

1. 读取 RFC 的 Problem / Root cause / Proposed change / Alternatives
2. 对五维（P/R/S/I/X）各打 0-2 分，输出得分和理由
3. 按总分做出决策（accept / accept-modified / defer / reject）
4. 更新 RFC 文件的 `Status` 字段
5. 在 GitHub issue 留评审评论

**写日志**（`logs/rfc/RFC-<wiki>-NNNN.md`）：
- 若文件不存在，先写文件头（RFC ID、标题、来源 wiki、创建日期）
- 追加 `## ADM1 评审（YYYY-MM-DD）` 节，格式见 `ref/spec/workflow-rfc-cycle.md`

**决策分支**：
- `reject` / `defer` → 关闭 issue，流程结束（不进入 ADM2）
- `accept` / `accept-modified` → 继续 Step 2

---

### Step 2 — ADM2：实施

按 `skills/gene/ADM2-rfc-implement.md` 执行：

1. 从 RFC Proposed change 建立实施清单
2. 逐项检查：是否已存在 / 是否在范围内 / accept-modified 的调整方向
3. 按 memex 规范落地（脚本、基因文件、BIRTH.spec.md、ref/spec/ 等）
4. 每项完成后语法验证（Python 脚本 `python3 -m py_compile`）
5. **commit 前**调用 ADM3 pre-commit review，不通过则补做，直到 faithful
6. Git commit

**写日志**：追加 `## ADM2 实施（YYYY-MM-DD）` 节

---

### Step 3 — ADM3：Review + 关闭

按 `skills/gene/ADM3-rfc-review.md` post-commit 模式执行：

1. 对照 RFC Proposed change 逐项 review commit 内容
2. 输出 faithful / partial / diverged
3. 在 GitHub issue 留 review 评论（含 commit 链接）
4. 更新 RFC 文件追加 `## Implementation` 节
5. 更新 RFC Status → `implemented`（faithful）/ `partial-implemented`（partial）
6. faithful / 次要 partial → 关闭 issue

**写日志**：追加 `## ADM3 Review（YYYY-MM-DD）` 节

---

## 完成输出

处理完毕后，输出一行摘要：

```
✓ RFC-<wiki>-NNNN  决策:<accept|defer|reject>  实施:<faithful|partial|N/A>  issue:#N <closed|open>
日志: logs/rfc/RFC-<wiki>-NNNN.md
```

---

## 参考文档

| 文档 | 用途 |
|------|------|
| `skills/gene/ADM1-rfc-evaluate.md` | 评审规则与评分表 |
| `skills/gene/ADM2-rfc-implement.md` | 实施规范 |
| `skills/gene/ADM3-rfc-review.md` | Review 格式与关闭规则 |
| `ref/spec/workflow-rfc-cycle.md` | 日志格式 |
| `logs/rfc/` | 日志存放目录 |

