vcs-prlisted
Install: claude install-skill Kucell/cortex-agent
# vcs-pr (L1 secrets-vcs)
把"创建 PR"做成 framework 一等公民。Agent 说"用 `secret://gitea-pr` 创建 PR",框架负责 token + HTTP + 写 run event。
## When to Use
- Phase 1 session-triage 开启的 mission 干完一轮验证后 → `vcs-pr create --head feat/foo --base main --title "..."`
- 想看 PR 现在 merged/closed 没 → `vcs-pr status --pr-number 5`
- 显式 user gate 合并 PR → `vcs-pr merge --pr-number 5 --gate user`
- 列已开 PR → `vcs-pr list --state open`
## Commands
```bash
node .agent/skills/vcs-pr/scripts/index.js create \
--backend gitea \
--head feat/foo --base main \
--title "feat: ..." \
[--body-file .agent/pr-bodies/foo.md | --body-from-run R-session-001] \
--run-id R-session-001 --gate user
node .agent/skills/vcs-pr/scripts/index.js status \
--pr-number 5 [--backend gitea] --gate agent
node .agent/skills/vcs-pr/scripts/index.js merge \
--pr-number 5 [--commit-message "..."] --gate user
node .agent/skills/vcs-pr/scripts/index.js list \
[--state open|merged|closed|all] --gate agent
```
PR 创建后,vcs-pr 自动:
1. 调 `secrets get --ref <cfg.token_ref> --no-mask --gate user` 取 token(只 vcs-pr 自己拿,**不**透传 agent)
2. 调对应 backend 的 `createPR()` — token 注入 `Authorization` header
3. 写 `runs/<run-id>.json#events[]` 一条 `vcs_pr_opened` event(pr_number / url / head / base)
4. 输出 JSON `{ok: true, action: "create", number, url, ...}`,**不含** token
## Configuration
`.agent/config/vcs.yml`:
```yaml
backend: gitea
host: "http://192.168.2.110:3000"
token_ref: gitea-pr
default:
org: SamkoonHMI
repo: SamHMI
base_branch: m