# Vloj

> Parses LibreOJ problem IDs or URLs, creates a folder, fetches the problem statement via Chrome DevTools MCP, saves it as Markdown, and writes a C++ solution file.

- Skill: `diegosouzapw/vloj` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/vloj`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/vloj/raw
- Safety review: CAUTION (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools, AI & ML, Debugging
- Tags: Chrome Devtools Mcp, Competitive Programming, Libreoj, Problem Statement
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-08-22
- Page: https://skillmd.com/skills/diegosouzapw/vloj

---


# 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`，不生成额外文件。
- 保持文件夹为空创建流程的前置步骤，先建目录再抓取题面。

