agentsclimarketplace

Omv repro

Skill bx33661/oh-my-vul/skills/omv-repro

Guides a researcher through local reproduction of a vulnerability finding. Use when the user has an omv-audit result with evidence.reproducer filled but evidence.observed_result still unknown, wants to confirm a finding by running it locally, or invokes `/omv-repro`. Reads .omv/findings/<id>.yaml and guides step-by-step execution, then writes the observed result, records repro artifacts, and validates submission readiness.From its SKILL.md

Install
npx -y skills add bx33661/oh-my-vul --skill omv-repro

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 3 stars3 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

4.7 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it

omv-repro

引导研究员在本地执行复现步骤,将 evidence.observed_resultunknown 填写为具体可验证的观测描述,完成 /omv-report 所需的最后一块证据。

Stay in passive research mode: do not execute any commands yourself. Guide the user to execute locally and report back what they observed.

Invocation

/omv-repro <id> [--force]
  • <id> 对应 .omv/findings/<id>.yaml 文件
  • --force 允许覆盖已有 observed_result(默认不覆盖)

Reference Loading

按需加载,不要一次性全读:

  • 环境准备与观测记录框架:references/repro-guide.md
  • Evidence.v1 字段定义与 evidence/submission 评分规则:contracts/evidence.v1.yaml

复现目标

读取 .omv/findings/<id>.yaml 后,你的目标是:

终态条件(任一)

  1. evidence.observed_result 写入非 unknown 的具体观测描述,复现材料保存到 .omv/repro/<id>/,且 omv findings validate <id> 输出 submission score ≥ 75
  2. 无法复现,blockers 中记录具体原因,verdict.exploitability 更新为 blockeddisproven

如何达到目标,由你自主决定。 根据 evidence.reproducer 的内容——步骤数量、依赖环境、漏洞类型——自主决定如何拆解步骤、向用户提什么问题、如何解读输出。参考 references/repro-guide.md 获取环境准备和观测记录的思维框架。

开始前始终展示:versions.testedevidence.sourceevidence.sinkevidence.reproducer 的当前值,作为复现背景。

约束边界

以下是硬约束,不可逾越:

  1. 不自动执行命令 — 所有命令由用户在本地环境执行,Codex 或 Claude Code 只提供指令和解读
  2. 不修改 evidence.reproducer — 该字段属于 omv-audit 职责,只读
  3. 不推断或编造 observed_result — 必须来自用户的真实执行报告,不得根据 reproducer 文字推断结果
  4. 不攻击线上服务 — 所有执行在本地隔离环境中进行
  5. confirmed 由 CLI validation 决定 — 写入用户报告的 observed_result 后,必须运行 omv findings validate <id>;失败时保持 candidate
  6. 复现材料标准化保存 — 建议把命令、输出、截图或 Compose 文件放到 .omv/repro/<id>/,并在 evidence.repro_artifacts 中列出路径

HARD-GATE: observation before proven

NO invented observed_result
NO exploitability: proven WITHOUT user-reported local observation recorded in Evidence
NO "ready to submit" — after success, point to omv review --strict, not free-form certainty

结论规则

结论触发条件下一步
confirmedobserved_result 已填,submission score ≥ 75运行 omv findings validate <id>,提示用户运行 /omv-report
blocked多次尝试后无法在本地复现,或环境依赖无法满足填写 blockers,运行 omv findings validate <id>(预期 FAIL)
candidate(保留)observed_result 已填但其他字段缺失或 submission score 不足展示缺失项清单,提示回到 /omv-audit 补充

推荐 artifact 布局:

.omv/repro/<id>/
  README.md
  commands.sh
  observed.txt
  docker-compose.yml
  screenshots/

evidence.reproducer 必须保持只读;如果用户发现步骤本身错误,提示回到 /omv-audit 修订,而不是在 /omv-repro 中改写。

复现结束时始终运行:

omv findings validate <id>

然后运行或建议:

omv dashboard

Use the CLI result for lifecycle handoff:

  • If reproduction confirms the finding and validation returns OK, tell the user to run /omv-report <id>.
  • If reproduction cannot continue and the finding is blocked, tell the user to review blockers and optionally run omv findings archive <id> --reason not-reproducible.
  • If validation still fails because audit fields are missing, tell the user to return to /omv-audit <id>.

Deterministic Helpers

  • omv findings validate <id> — 校验字段完整性,输出 evidence/submission 分数
  • omv findings promote <id> --status confirmed|blocked — 更新 status 字段
  • omv dashboard — 显示 active findings 的下一步动作

What ships with it: 10 files

20.2 KB alongside SKILL.md, 1 of them executable

contracts/

references/

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.