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.mdsource content
vloj
目标
- 解析题号,创建以题号命名的空文件夹。
- 访问对应题目页面,抓取题面并写入Markdown。
- 编写C++解答文件。
触发与解析
- 支持输入示例:
、loj1
、loj001
、https://loj.ac/p/1
。http://loj.ac/p/123 - 提取连续数字作为题号,去除前导零后作为规范题号。
- 题目URL格式固定为:
。https://loj.ac/p/<id>
工作流
-
创建空文件夹
- 在当前工作区根目录创建以题号命名的文件夹:
。<id>/ - 若文件夹不存在,直接创建。
- 若文件夹已存在且非空,先请求用户确认是否清空;确认后删除内容并保持空文件夹。
- 在当前工作区根目录创建以题号命名的文件夹:
-
读取题面(Chrome DevTools MCP)
- 打开题目URL并等待页面加载完成。
- 使用页面快照或脚本评估获取题面主体文本:
- 优先抓取页面主内容区域(常见为
、main
、或含“题目描述/输入格式/输出格式/样例”文本的容器)。article - 无法精准定位时,回退使用
,再按标题/小节进行整理。document.body.innerText
- 优先抓取页面主内容区域(常见为
- 需要确保包含题目标题、描述、输入输出、样例与提示(如存在)。
-
写入Markdown
- 在题号文件夹中创建
。problem.md - 内容结构:
- 标题:
# <题号> <题目标题> - URL:
原始URL - 题面正文分节整理(保留原有小节标题)。
- 标题:
- 在题号文件夹中创建
-
编写C++解答
- 在题号文件夹中创建
。solution.cpp - 使用 C++11 标准,包含必要头文件与
。main() - 依据题意实现可通过的解法,并在顶部用简短注释说明思路与复杂度。
- 在题号文件夹中创建
输出约束
- 仅创建
与problem.md
,不生成额外文件。solution.cpp - 保持文件夹为空创建流程的前置步骤,先建目录再抓取题面。