Agent skill

Merge School

by OIerDb-ng in OIerDb-ng/OIerDb

Merge incorrectly split school entries in data/school.txt. An agent skill from OIerDb-ng/OIerDb.

AGPL-3.0Auto-check passed

Install Merge School

skills CLI
$ npx skills add OIerDb-ng/OIerDb --skill merge-school -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install OIerDb-ng/OIerDb merge-school --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/OIerDb-ng/OIerDb.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/merge-school .claude/skills/merge-school && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
merge-school
GitHub stars
976
Token cost
~1.5k tokens
SKILL.md length
751 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Merge incorrectly split school entries in data/school.txt. An agent skill from OIerDb-ng/OIerDb.

  • Works in 5 steps: Locate the schools → Identify and assess → Propose the merge plan → …
  • The user wants to merge
  • SKILL.md covers Data Format, How Merging Works, Pre-step: Fetch issue context… and Workflow, plus 1 more section
  • Calls gh

What it does

Merge School is an agent skill from OIerDb-ng/OIerDb. Merge incorrectly split school entries in data/school.txt. Use this skill when the user wants to merge, combine, or deduplicate school entries in the OIerDb school data. Always trigger on phrases like "merge these schools", "combine school entries", "这两个学校是同一个", "合并学校", "学校重复了", "学校拆分错了", or when the user provides school names, line numbers, or OIerDb school references and asks to merge/combine them. Also trigger when the user mentions duplicate schools, school aliases that should be consolidated, or asks to fix…

Its SKILL.md is about 1.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: A database for Chinese OI participants. The licence is AGPL-3.0.

When your agent uses it

  • The user wants to merge
  • Deduplicate school entries in the OIerDb school data
  • Phrases like merge these schools
  • Combine school entries

Example prompts

  • “merge these schools”
  • “combine school entries”
  • “这两个学校是同一个”
  • “/merge-school”

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Locate the schools
  2. Identify and assess
  3. Propose the merge plan
  4. Execute the merge
  5. Commit

What it can do on your machine

Read from SKILL.md and the folder at commit a2f346a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Merge School loads about 1.5k tokens when it runs. Until then it costs about 141 tokens; SKILL.md has 751 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~141
When it runs · the whole SKILL.md, loaded when a task matches
~1.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from OIerDb-ng/OIerDb at commit a2f346a, republished under its AGPL-3.0 licence (© OIerDb-ng). 751 words, ~1,510 tokens.

Download SKILL.mdSave it as .claude/skills/merge-school/SKILL.md (or your agent's skills folder).
name
merge-school
description
Merge incorrectly split school entries in data/school.txt. Use this skill when the user wants to merge, combine, or deduplicate school entries in the OIerDb school data. Always trigger on phrases like "merge these schools", "combine school entries", "这两个学校是同一个", "合并学校", "学校重复了", "学校拆分错了", or when the user provides school names, line numbers, or OIerDb school references and asks to merge/combine them. Also trigger when the user mentions duplicate schools, school aliases that should be consolidated, or asks to fix incorrectly split school records.

Merge School Entries

You help the user merge school entries in data/school.txt that were incorrectly split into separate records. Always merge into the earlier-appearing entry (lower line number), adding unique aliases from the later entry, then marking the later entry as invalid with ,,.

Data Format

Each non-comment, non-empty line has comma-separated fields:

省份,城市,正式名称,别名1,别名2,...
  • Lines starting with # are comments.
  • The first three fields are required: province, city, official name.
  • All subsequent fields are aliases (can be empty or numerous).
  • A line containing only ,, is an invalid/deprecated entry — the parser skips it.

Example:

湖南,长沙市,长沙市雅礼中学,湖南省长沙市雅礼中学,湖南省长沙雅礼中学,长沙雅礼中学,雅礼中学

How Merging Works

When two lines represent the same school:

  1. Keep the earlier entry (lower line number) — it becomes the primary.
  2. Collect unique aliases from the later entry: its official name (if different from the primary's) plus all its aliases not already present in the primary.
  3. Append unique aliases to the end of the primary line, comma-separated.
  4. Mark the later entry as invalid by replacing the entire line content with ,,.

The primary's province, city, and official name are never changed. If the two entries have different cities, flag this to the user — it may mean they are genuinely different schools.

Pre-step: Fetch issue context (if applicable)

If the user provides a GitHub issue number (e.g., "merge school #123"), fetch it first:

bash
gh issue view <number>

Extract school names, line numbers, provinces, and any merge instructions. Proceed to Step 1 with all collected information.

Workflow

Step 1: Locate the schools

From the user's input, extract school names or hints. Use grep with line numbers to find candidates — never read the entire file:

bash
grep -n '学校名' data/school.txt

For more precise matching on the official name (3rd field):

bash
awk -F',' '!/^#/ && $3=="正式名称" {print NR": "$0}' data/school.txt

To search across all fields (name or alias):

bash
grep -n '关键词' data/school.txt
Step 2: Identify and assess

Review all matching lines. Determine:

  • Which lines represent the same school (duplicates/incorrectly split).
  • Which is the earlier entry (lower line number) — this will be the merge target.
  • Whether province and city match. If cities differ, surface this to the user before proceeding.
  • What aliases the later entry has that the earlier entry lacks.
Step 3: Propose the merge plan

Present a clear summary showing both entries in full, then propose:

  • Primary (keep): earlier entry (line N) — show full content.
  • Secondary (invalidate): later entry (line M) — show full content.
  • Aliases to add: list the names from the secondary not already in the primary.
  • Result: show what the merged primary line will look like after the change.

If the two entries have conflicting province/city, or if it's unclear they are the same school, ask the user for clarification.

Use AskUserQuestion to confirm the plan before making any changes. Never proceed without explicit user approval.

Show full SKILL.md (315 more words)Show less
Step 4: Execute the merge

Important: The Edit tool requires that the file has been read with Read at least once before editing. Since school.txt is large, use Read with offset and limit to read just the lines around each target (e.g., offset=line_number-1, limit=3). This satisfies the prerequisite without loading the whole file.

Step 4a — Update the primary line:

Append the unique aliases from the secondary to the end of the primary line:

<original primary line>,<new alias 1>,<new alias 2>,...

Use Edit with the full original primary line as old_string and the appended version as new_string. The old_string must be unique in the file; include enough surrounding context if needed.

Step 4b — Invalidate the secondary line:

Replace the entire secondary line content with ,, to mark it as deprecated:

Use Edit with the full original secondary line as old_string and ,, as new_string. Do not delete the line — the ,, placeholder keeps the file's line structure intact and signals to future readers that the entry has been merged away.

Step 5: Commit

After all edits, use AskUserQuestion to ask whether to commit. Provide a default commit title following this format:

data: fix {正式名称} ({省份})

For example, merging entries for 长沙市雅礼中学 in 湖南:

data: fix 长沙市雅礼中学 (湖南)

If an issue number was provided in the pre-step, append the following line to the commit message body:

Resolves {owner}/{repo}#{issue_number}.

Then create the commit with the approved title and message.

Important Rules

  • Always merge into the earlier entry (lower line number). Never flip primary and secondary.
  • Never read school.txt without grep/awk filters — it's large (~13,000 lines).
  • Always show both entries in full before asking for confirmation.
  • If province and city differ between the two entries, flag this prominently — it may indicate genuinely distinct schools.
  • Only add aliases from the secondary that are not already present in the primary (check against all existing aliases, not just the official name).
  • Never change the official name, province, or city of the primary entry.
  • Replace the secondary line with ,, — do not delete it.

© OIerDb-ng, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/merge-school of OIerDb-ng/OIerDb.

Open the folder on GitHubat commit a2f346a

Compare with similar skills

Merge School next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Merge School compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Merge School this skillOIerDb-ng/OIerDb976—~1.5kAutomated safety check: PassAGPL-3.0
Mergeremotion-dev/remotion63k—~508Automated safety check: PassCustom licence
Mergewithastro/astro63k—~153Automated safety check: PassCustom licence
Merge Upsymfony/symfony31k—~4kAutomated safety check: PassMIT
Mergealirezarezvani/claude-skills28k—~587Automated safety check: PassMIT
Cn School Entrymohitagw15856/pm-claude-skills1.4k—~1.2kAutomated safety check: PassMIT

Similar skills

  • Merge

    remotion-dev/remotion

    Official

    Wait for a Remotion pull request to become mergeable, handle merge conflicts, distinguish genuine CI failures from flakes, rerun flaky checks through the flake skill, and merge the PR.

    63k GitHub stars~508 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Merge

    withastro/astro

    Official

    Handle main-to-next merge tasks including conflict resolution, changeset cleanup, and CI fix-ups.

    63k GitHub stars~153 tokensUpdated yesterday
    Auto-check passed
  • Merge Up

    symfony/symfony

    Cascade-merge maintained Symfony branches from oldest to newest (e.g.

    31k GitHub stars~4k tokensUpdated today
    DevelopmentAuto-check passed
  • Merge

    alirezarezvani/claude-skills

    Merge the winning agent's branch into base, archive losers, and clean up worktrees.

    28k GitHub stars~587 tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Cn School Entry

    mohitagw15856/pm-claude-skills

    A skill your agent uses when asked 幼升小怎么准备, 小升初流程, 入学信息采集, 学区房和多校划片, 公民同招, 民办摇号, 随迁子女入学, 居住证入学材料, or plan a child's entry to primary or junior high school in mainland China.

    1.4k GitHub stars~1.2k tokensUpdated yesterday
    Auto-check passed
  • Merging PRs

    PostHog/posthog

    Official

    Merge a PR into master through the Trunk merge queue and babysit it until it lands.

    40k GitHub stars~4.1k tokensUpdated yesterday
    Auto-check passed

More from OIerDb-ng/OIerDb

  • Merge Oier

    OIerDb-ng/OIerDb

    Merge incorrectly split OIer entries in data/raw.txt. An agent skill from OIerDb-ng/OIerDb.

    976 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Add Contest

    OIerDb-ng/OIerDb

    Append a newly-published competition's award list into this repo

    976 GitHub stars~3.7k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Merge School

What does Merge School do?

Merge incorrectly split school entries in data/school.txt. An agent skill from OIerDb-ng/OIerDb. Merge School is an agent skill from OIerDb-ng/OIerDb.txt.

When should I use Merge School?

Merge School fits situations like: the user wants to merge; deduplicate school entries in the OIerDb school data; phrases like merge these schools; combine school entries.

How do I install Merge School in Claude Code?

Run `npx skills add OIerDb-ng/OIerDb --skill merge-school -a claude-code`. Or copy the skill folder (.claude/skills/merge-school in OIerDb-ng/OIerDb) into .claude/skills/merge-school in your project. Claude Code loads it when a task matches its description.

How do I install Merge School in Codex?

Run `npx skills add OIerDb-ng/OIerDb --skill merge-school -a codex`. Or copy the skill folder (.claude/skills/merge-school in OIerDb-ng/OIerDb) into .agents/skills/merge-school in your project. Codex loads it when a task matches its description.

Can I use Merge School in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add OIerDb-ng/OIerDb --skill merge-school -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/merge-school, .gemini/skills/merge-school, .github/skills/merge-school and .opencode/skills/merge-school in your project.

What does Merge School need to run?

Going by SKILL.md and its folder, Merge School needs the command-line tools its instructions call (gh).

Does Merge School access the network?

SKILL.md contains no URLs. Its commands use gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Merge School safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Merge School use?

Merge School is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Merge School use?

About 1.5k tokens (SKILL.md is roughly 6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Merge School?

Skills that share tags, products or a category with Merge School: Merge (remotion-dev/remotion, 63k stars), Merge (withastro/astro, 63k stars), Merge Up (symfony/symfony, 31k stars) and Merge (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Merge School?

OIerDb-ng (a GitHub organization) maintains it in OIerDb-ng/OIerDb, which has 976 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on August 21, 2026.

Source: OIerDb-ng/OIerDb on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.