Awesome-omni-skill vloj

LibreOJ题目抓取与解题工作流。用户输入形如loj1/loj001或https://loj.ac/p/1 等题号或URL时触发;创建以题号命名的空文件夹,使用Chrome DevTools MCP读取题面并保存为md文件,最后用C++生成解答文件。

install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tools/vloj" ~/.claude/skills/diegosouzapw-awesome-omni-skill-vloj && rm -rf "$T"
manifest: skills/tools/vloj/SKILL.md
source content

vloj

目标

  • 解析题号,创建以题号命名的空文件夹。
  • 访问对应题目页面,抓取题面并写入Markdown。
  • 编写C++解答文件。

触发与解析

  • 支持输入示例:
    loj1
    loj001
    https://loj.ac/p/1
    http://loj.ac/p/123
  • 提取连续数字作为题号,去除前导零后作为规范题号。
  • 题目URL格式固定为:
    https://loj.ac/p/<id>

工作流

  1. 创建空文件夹

    • 在当前工作区根目录创建以题号命名的文件夹:
      <id>/
    • 若文件夹不存在,直接创建。
    • 若文件夹已存在且非空,先请求用户确认是否清空;确认后删除内容并保持空文件夹。
  2. 读取题面(Chrome DevTools MCP)

    • 打开题目URL并等待页面加载完成。
    • 使用页面快照或脚本评估获取题面主体文本:
      • 优先抓取页面主内容区域(常见为
        main
        article
        、或含“题目描述/输入格式/输出格式/样例”文本的容器)。
      • 无法精准定位时,回退使用
        document.body.innerText
        ,再按标题/小节进行整理。
    • 需要确保包含题目标题、描述、输入输出、样例与提示(如存在)。
  3. 写入Markdown

    • 在题号文件夹中创建
      problem.md
    • 内容结构:
      • 标题:
        # <题号> <题目标题>
      • URL:
        原始URL
      • 题面正文分节整理(保留原有小节标题)。
  4. 编写C++解答

    • 在题号文件夹中创建
      solution.cpp
    • 使用 C++11 标准,包含必要头文件与
      main()
    • 依据题意实现可通过的解法,并在顶部用简短注释说明思路与复杂度。

输出约束

  • 仅创建
    problem.md
    solution.cpp
    ,不生成额外文件。
  • 保持文件夹为空创建流程的前置步骤,先建目录再抓取题面。