Agent skill

Wiki Merge

by flonat in flonat/flonat-research

Merge an overlap cluster of Vault concepts into one canonical concept, rewrite wikilinks, and preserve a dry-run/apply boundary.

MITAuto-check: notes

Install Wiki Merge

skills CLI
$ npx skills add flonat/flonat-research --skill wiki-merge -a claude-code

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

GitHub CLI
$ gh skill install flonat/flonat-research wiki-merge --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/flonat/flonat-research.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/wiki-merge .claude/skills/wiki-merge && 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
wiki-merge
GitHub stars
146
Token cost
~1.4k tokens
SKILL.md length
594 words
Files
1
Skills in repo
83
Repo updated
First seen
Licence
MIT

At a glance

Merge an overlap cluster of Vault concepts into one canonical concept, rewrite wikilinks, and preserve a dry-run/apply boundary.

  • Works in 7 steps: Read winner + every loser concept file… → Build merged body — winner's body… → Build merged frontmatter — winner's… → …
  • $wiki-curate has identified a winner and fold-in slugs
  • SKILL.md covers When to Use, When NOT to Use, What it does and Dry-run output, plus 4 more sections
  • Calls uv

What it does

Wiki Merge is an agent skill from flonat/flonat-research. Merge an overlap cluster of Vault concepts into one canonical concept, rewrite wikilinks, and preserve a dry-run/apply boundary. Use when $wiki-curate has identified a winner and fold-in slugs. Not for general wiki auditing or automatic article promotion.

Its SKILL.md is about 1.4k 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: Shareable Claude Code + Codex infrastructure for PhD researchers — skills, agents, hooks, and rules for academic workflows. The licence is MIT.

When your agent uses it

  • $wiki-curate has identified a winner and fold-in slugs

Example prompts

  • “/wiki-merge”

Requirements

  • Python 3
  • Pre-approved tools (allowed-tools): Bash, Read

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Read winner + every loser concept file under ~/vault/concepts/.
  2. Build merged body — winner's body verbatim, then each loser's
  3. Build merged frontmatter — winner's fields preserved; tags
  4. Write merged content back to the winner's file.
  5. Rewrite wikilinks — every [[]] (with or without
  6. Delete loser files from ~/vault/concepts/.
  7. Append to denylist — each loser slug is added to

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uv

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

  • Network

    No URLs in SKILL.md. Its commands use uv, 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

Wiki Merge loads about 1.4k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 594 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read

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 flonat/flonat-research at commit da27600, republished under its MIT licence (© flonat). 594 words, ~1,441 tokens.

Download SKILL.mdSave it as .claude/skills/wiki-merge/SKILL.md (or your agent's skills folder).
name
wiki-merge
description
Merge an overlap cluster of Vault concepts into one canonical concept, rewrite wikilinks, and preserve a dry-run/apply boundary. Use when $wiki-curate has identified a winner and fold-in slugs. Not for general wiki auditing or automatic article promotion.
allowed-tools
Bash, Read
argument-hint
[--apply] <winner-slug> <loser-slug-1> [<loser-slug-2> ...]

Wiki Merge — Collapse an Overlap Cluster

Folds one or more concept slugs into a single canonical entry. Preserves provenance, rewrites incoming wikilinks across atlas / books / concepts / project knowledge folders, deletes the losers, and denylists them so the Saturday wiki-grow cron doesn't re-promote.

When to Use

  • Right after wiki-curate flags an overlap cluster in Section A and you've decided which slug should be canonical.
  • Manual cleanup when you notice two concepts that should be one.

When NOT to Use

  • For trivial renames — keep both files and add an alias.
  • For tag normalisation — that's edit-in-place, not a merge.
  • When the "overlap" turns out to be a genuine sub-concept relation — keep both, add a [[wikilink]] reference between them instead.

What it does

uv run python scripts/wiki-merge.py <winner> <loser1> [<loser2> ...]
uv run python scripts/wiki-merge.py --apply <winner> <loser1> [<loser2> ...]

Steps performed (in order, only on --apply):

  1. Read winner + every loser concept file under ~/vault/concepts/.
  2. Build merged body — winner's body verbatim, then each loser's body under a ## From <loser-slug> section. Each section includes a small admonition naming the source project + promotion date for traceability. Sub-headings in loser bodies are demoted by one level (## → ###) so they don't compete with the new section delimiter.
  3. Build merged frontmatter — winner's fields preserved; tags becomes the union of winner ∪ loser tags; a new fold_in_sources: block records each loser's slug + source_project + promoted_on date; last_merged: is set to today.
  4. Write merged content back to the winner's file.
  5. Rewrite wikilinks — every [[<loser-slug>]] (with or without alias suffix) across atlas topics, book chapters, other concepts, and project knowledge folders gets rewritten to [[<winner-slug>|<original-display-text>]]. The alias keeps the original display label visible so the change isn't jarring on pages that referenced the loser by name.
  6. Delete loser files from ~/vault/concepts/.
  7. Append to denylist — each loser slug is added to ~/vault/concepts/.denylist with a comment noting the merge date. This stops the Saturday wiki-grow cron from re-promoting the loser slug if a project knowledge article with that slug still exists.

Dry-run output

Default invocation (no --apply) prints a plan:

Merge plan (dry-run):
  Winner:  goodharts-law  (concepts/goodharts-law.md)
  Fold in: goodhart-taxonomy, goodhart-resistance
  Merged file size: 11666 chars (winner was 3516)
  Wikilink rewrites: 12 file(s)
    concepts/strategic-classification.md: 1 occurrence(s)
    .../knowledge/goodhart-resistance.md: 1 occurrence(s)
    ...
  Denylist additions: goodhart-taxonomy, goodhart-resistance
  Files to delete: concepts/goodhart-taxonomy.md, concepts/goodhart-resistance.md

(dry-run — pass --apply to perform the merge)

Inspect the file count and the rewrite targets. If anything looks wrong (e.g. a loser slug is wildly overrepresented across the corpus suggesting it's actually a distinct concept), abort and reconsider.

Show full SKILL.md (240 more words)Show less

Apply

uv run python scripts/wiki-merge.py --apply goodharts-law goodhart-taxonomy goodhart-resistance

Performs all six steps. After the run:

  • ~/vault/concepts/goodharts-law.md contains the merged content with fold-in provenance in frontmatter.
  • goodhart-taxonomy.md and goodhart-resistance.md are deleted.
  • All atlas/books/concepts/project-knowledge files that wikilinked to the loser slugs now wikilink to the winner with the original display label preserved as the alias.
  • ~/vault/concepts/.denylist has two new lines.

Verify with wiki-curate — the goodhart cluster should be gone on the next run.


Safety properties

  • Dry-run is default. Forgetting --apply previews only.
  • Loser frontmatter preserved in fold_in_sources: — even though the loser file is deleted, the merged file records source_project + promoted_on for each fold-in, so the provenance is recoverable.
  • Wikilinks preserve display labels — rewrite produces [[winner|Original Display]] form, so a topic page that wrote [[Goodhart Taxonomy]] will still render "Goodhart Taxonomy" after the merge, just pointing at goodharts-law now.
  • Denylist prevents re-promotion — if a project still has <loser-slug>.md in its knowledge folder, the next Saturday cron won't re-promote it.

Anti-patterns

  • Don't merge a curated concept INTO an auto-generated one. If you must, swap winner/loser. Curated content should be the canonical surface.
  • Don't merge concepts from different domains just because slugs share a token (e.g. model token in language-model and linear-model). Use judgement.
  • Don't merge without dry-running first. The dry-run output is the only confirmation step.

Cross-References

SkillRelationship
wiki-curateIdentifies the clusters this skill collapses.
wiki-growWriter of auto-promoted concepts; denylist entries from wiki-merge prevent it from re-promoting losers.
compile-knowledgeSource of project knowledge articles that get promoted to concepts.

© flonat, MIT. 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 skills/wiki-merge of flonat/flonat-research.

Open the folder on GitHubat commit da27600

Compare with similar skills

Wiki Merge 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.

Wiki Merge compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wiki Merge this skillflonat/flonat-research146—~1.4kAutomated safety check: NotesMIT
Obsidian Wiki Vault SetupAgriciDaniel/claude-obsidian15k—~1.3kAutomated safety check: PassMIT
Wiki Maintaineropenclaw/openclaw392k1 repos~462Automated safety check: PassMIT
Mergeremotion-dev/remotion63k—~508Automated safety check: PassCustom licence
LLM WikiYeachan-Heo/oh-my-claudecode40k—~721Automated safety check: PassMIT
Mergewithastro/astro63k—~153Automated safety check: PassCustom licence

Similar skills

  • Obsidian Wiki Vault Setup

    AgriciDaniel/claude-obsidian

    Sets up or adopts a separate Obsidian knowledge vault through the claude-obsidian core script and routes follow-up work to the right wiki sub-skill.

    15k GitHub stars~1.3k tokensUpdated 1 mo ago
    Knowledge ManagementAuto-check passed
  • Wiki Maintainer

    openclaw/openclaw

    Maintain the OpenClaw memory wiki vault with deterministic pages, managed blocks, and source-backed updates.

    392k GitHub starsUsed in 1 repo~462 tokens
    Knowledge ManagementAuto-check passed
  • 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
  • LLM Wiki

    Yeachan-Heo/oh-my-claudecode

    Keeps a persistent markdown wiki of project and session knowledge that the agent can ingest into, query, lint and read across sessions.

    40k GitHub stars~721 tokensUpdated 2 days ago
    Knowledge ManagementAuto-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 today
    Auto-check passed
  • Wiki Query

    paperclipai/paperclip

    A skill your agent uses when an LLM Wiki operation issue asks a question.

    99k GitHub stars~682 tokensUpdated today
    Knowledge ManagementAuto-check passed

More from flonat/flonat-research

All 83 skills in this repo
  • Latex Posters

    flonat/flonat-research

    Create a large-format academic poster in LaTeX using beamerposter, tikzposter, or baposter.

    146 GitHub stars~1.5k tokensUpdated 11 days ago
    Auto-check: notes
  • Skill Creator

    flonat/flonat-research

    Create, revise, and evaluate reusable AI workflow skills, including trigger-quality tests.

    146 GitHub stars~4.4k tokensUpdated 11 days ago
    Auto-check passed
  • DOCX

    flonat/flonat-research

    Create, read, edit, or convert Microsoft Word documents while preserving professional document structure.

    146 GitHub stars~1.2k tokensUpdated 11 days ago
    Auto-check passed
  • PDF

    flonat/flonat-research

    Read, create, combine, split, rotate, OCR, watermark, secure, or extract content from PDF files.

    146 GitHub stars~488 tokensUpdated 11 days ago
    Auto-check passed
  • Init Project Orchestration

    flonat/flonat-research

    Create or migrate project-level agents, repeatable project workflows, and planning state from one client-neutral contract, then render repository-scoped adapters for both Claude Code and Codex.

    146 GitHub stars~1.6k tokensUpdated 11 days ago
    Auto-check passed
  • Pre Commit Audit

    flonat/flonat-research

    Deliver a fast pre-commit safety scan: file size, anonymity (author / affiliation strings in tex/bib), hardcoded secrets, and invisible-Unicode carriers.

    146 GitHub stars~2.8k tokensUpdated 11 days ago
    Auto-check: notes

Questions about Wiki Merge

What does Wiki Merge do?

Merge an overlap cluster of Vault concepts into one canonical concept, rewrite wikilinks, and preserve a dry-run/apply boundary. Wiki Merge is an agent skill from flonat/flonat-research. Merge an overlap cluster of Vault concepts into one canonical concept, rewrite wikilinks, and preserve a dry-run/apply boundary.

When should I use Wiki Merge?

Wiki Merge fits situations like: $wiki-curate has identified a winner and fold-in slugs.

How do I install Wiki Merge in Claude Code?

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

How do I install Wiki Merge in Codex?

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

Can I use Wiki Merge 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 flonat/flonat-research --skill wiki-merge -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wiki-merge, .gemini/skills/wiki-merge, .github/skills/wiki-merge and .opencode/skills/wiki-merge in your project.

What does Wiki Merge need to run?

Going by SKILL.md and its folder, Wiki Merge needs the command-line tools its instructions call (uv). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Bash, Read.

Does Wiki Merge access the network?

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

Is Wiki Merge safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Wiki Merge use?

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

How many tokens does Wiki Merge use?

About 1.4k tokens (SKILL.md is roughly 5.8k 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 Wiki Merge?

Skills that share tags, products or a category with Wiki Merge: Obsidian Wiki Vault Setup (AgriciDaniel/claude-obsidian, 15k stars), Wiki Maintainer (openclaw/openclaw, 392k stars), Merge (remotion-dev/remotion, 63k stars) and LLM Wiki (Yeachan-Heo/oh-my-claudecode, 40k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wiki Merge?

flonat (a GitHub user) maintains it in flonat/flonat-research, which has 146 GitHub stars. The repository holds 83 skills in this directory. The repository was last updated on September 29, 2026.

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