用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/Undermybelt/hermes-skills --skill prob-firs-cdp-paym-orch命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Use when retiring old logic, collapsing duplicate owners, removing fallbacks, or touching schema, persistence, or source-of-truth boundaries while deciding whether to delete old paths, retain compatibility, or stop for confirmation.
Use when defining new features, product behavior, UI/component design, architecture choices, contract changes, or ambiguous medium/high-complexity work before implementation.
Use when the user asks for caveman mode, fewer tokens, brief responses, compressed communication, or otherwise explicitly requests a much shorter answer.
基于 SOC 职业分类
正在显示 SKILL.md
| name | prob-firs-cdp-paym-orch |
| description | 对真实 Chrome + CDP 的支付/回调编排,先固化 contract 与边界,再用 probes 采证;未知站点规则不得直接升入主线。 |
| triggers | ["Stripe 支付编排","Alipay 回调","real Chrome CDP payment","tab registry","callback state machine","probe first payment","browser control decision","windsurf payment"] |
适用场景:
持久化只存这些:
不要把这些当 durable state:
正式层:
实验层:
禁忌:
若文档已定“real Chrome + CDP 为正式面”,但代码里唯一非 stub backend 仍桥到旧脚本:
*_probe / legacy_* / experimental_*当用户问“是不是终端里填一个 Gmail 就能躺平出 Stripe / dashboard / 扫码 / 自动整合”时:
不要只看 master plan。按下列顺序做机械核验:
app/cli.py 暴露了哪些 register-backend / payment-backendapp/bootstrap.py 实际把它们接到哪些实现python3 / 裸 pytest.venv/bin/python -m app.cli run --count 1 --base-email <gmail> --register-backend stub --payment-backend stub31tu / gmail.31tu.com / mail31tu,确认是否真有 Gmail 收码 providerwind2api / windsurf2api,确认是否真有自动整合面app/services/dashboard_state.py 之类是否只有 JSON/manifest writerlegacy_* / *_probe,或只会开 tab / 采证,不要称其为正式闭环结论口径:
把“纯 contract 阶段完成”定义清楚:
browser-control-decision 与 state-machineTabRegistry 至少含 register/get/keepalive/update_url/snapshot/from_snapshotdaily/weekly/reset 候选 key,未知 payload 原样保留到 raw_payload满足以上后:
probe/experimental目的:
每次 probe 至少落盘:
当 real_chrome_cdp_probe 已能 version/new/activate,但 last_seen_url 仍只信 open_tab() 返回值时,下一步最小安全增量是:
docs/change-surface.md,把可改面收窄到:
docs/change-surface.mdapp/adapters/experimental/real_chrome_cdp_probe.pytests/test_real_chrome_cdp_probe.pyCdpHttpClient.list_tabs() 命中 /json/listlast_seen_url 回退 open_tab 结果last_seen_url 取匹配 tab 的实时 URLtab_id 精确匹配,不引入 title/url 模糊规则。probe_artifact 只允许追加最小观察字段:
observed_tab_countmatched_tab_titlematched_tab_typelast_seen_url_sourcepayment/* / pipeline / storage.venv/bin/python -m pytest tests/test_real_chrome_cdp_probe.py -q.venv/bin/python -m pytest -q.venv/bin/python -m compileall app testsapp/tests 下 __pycache__此步仍属 experimental evidence。若想把 /json/list 结果升格为正式 tab registry 或 callback 决策依据,必须另开 surface。
当 open_tab() 与 activate_tab() 已成功,但 /json/list 取证临时失败时:
last_seen_url 回退 open_tab 返回 URL(再退才用原始 stripe_url)observed_tab_count = 0matched_tab_title = ""matched_tab_type = ""last_seen_url_source = "open_tab"last_error/json/list 异常升级成 callback / tab-registry 正式规则list_tabs() 抛错的 fake client 红测,再补最小实现过绿。此类降级仍属 experimental resilience。若要记录异常原因、上报监控、或持久化失败状态,须另开 change-surface。
当 /json/activate/<tab_id> 已返回 HTTP success,但响应体不是 JSON dict(空体、纯文本、布尔值等)时:
CdpHttpClient.activate_tab() 先保证 HTTP 成功,再单独处理响应体:
{ "activated": true }{ "activated": bool(payload) }RealChromeCdpPaymentProbe 内不要假定 activate_tab() 一定可 .get(...);先做最小 dict 归一。last_errorCdpHttpClient 命中 non-JSON activate response 时仍返回 { "activated": true }此类容错只为 experimental 开 tab 主路径保活。若要记录 activate 原始响应、异常分类、或做正式监控/告警,须另开 change-surface。
看到下列情况,应立即判为越界:
若下一步需要碰:
先确认 change surface,再继续;不要借 probe 名义偷渡进主线。