agentleFS
dexio-wikidexio-wiki/llm-wiki-skills/skills/wiki-lint/SKILL.md

wiki-lint

Skill1 starsChanged 47 days agoMITView on GitHub

Check an LLM wiki's health and fix what it finds: broken links, leaked credentials, orphaned and unreferenced pages, missing frontmatter or descriptions, stale pages, oversized pages and duplicate titles. Ships a zero-dependency Python checker for markdown folders ([[wikilinks]] and relative links, Obsidian-compatible). Use on a schedule, before committing or merging wiki changes, after a refactor, or when an agent reports it cannot find a page.

  • Reads credentials

42 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use wiki-status, cross-linker and 8 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • nexuschainsSkill

    wiki-status

    Reports the current state of the wiki vault — page counts, category breakdown, hub pages, orphans, stale entries, and a delta showing what has changed since the last ingest. Use this skill when the operator asks "what's the status", "wiki dashboard", "how many pages", "what's stale", "what's been ingested", "show me the delta", or "wiki health overview". Also surfaces structural insights (top hubs, fragmented clusters, bridge pages) when the operator asks "wiki insights", "what's central", or "show me the hubs". Read-only: this skill reports and recommends; it does not modify any files.

    Also in 5 projects that use this

  • nexuschainsSkill

    cross-linker

    Scans the wiki vault and adds missing [[wikilinks]] between pages that are related but not yet connected. Use this skill when the operator says "link my pages", "find missing links", "cross-reference the wiki", "connect my wiki", "add wikilinks", or after any large ingest to weave new pages into the existing knowledge graph. Also trigger when orphaned pages need connecting or when wiki-lint reports fragmented tag clusters. This is a write-heavy skill — it modifies page files to insert links, unlike wiki-lint which only reports.

    Also in 4 projects that use this

  • Ivy-Chen1999Skill

    wiki-synthesize

    Systematically discover synthesis opportunities across the Obsidian wiki — pairs or clusters of concepts that co-occur frequently across pages but have no synthesis page connecting them. Creates new synthesis/ pages that draw explicit cross-cutting conclusions. Use when the user says "synthesize my wiki", "find connections", "what concepts keep coming up together", "/wiki-synthesize", or after a large ingest when the vault has grown significantly.

    Also in 4 projects that use this

  • bozhouDevSkill

    wiki-init

    Use when bootstrapping a new personal wiki for any knowledge domain — research, codebase documentation, reading notes, competitive analysis, or any long-term knowledge accumulation project.

    Also in 7 projects that use this

  • Ivy-Chen1999Skill

    wiki-research

    Autonomously research a topic via multi-round web search, synthesize findings, and file structured results into the Obsidian wiki. Use this skill when the user says "/wiki-research [topic]", "research X", "find everything about Y", "do a deep dive on Z", "autonomous research on X", or wants comprehensive, web-sourced knowledge on a topic filed directly into their wiki.

    Also in 4 projects that use this

  • bozhouDevSkill

    wiki-update

    Use when revising existing wiki pages because knowledge has changed, a new piece of information updates or contradicts existing content, or the user wants to directly edit wiki content with LLM assistance.

    Also in 7 projects that use this

  • +1 more from nexuschains
  • +3 more from Ivy-Chen1999

The file

We split this skill into the rules it gives an agent

6 rules. 0 are common, 4 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 33 edited versions we read keep these.

  • 4

    Distinctive

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Never create an empty stub just to clear the error.

    line 52
  2. Very specific:

    Frontmatter: Add the missing description (one line saying what the page answers or holds, not the question that started it), title, or a …

    line 54
  3. Distinctive:

    Do not fix a broken link by deleting the sentence around it.

    line 110
  4. Very specific:

    Do not bump updated on a stale page without rereading it.

    line 112
  5. Distinctive:

    Do not batch hundreds of fixes into one change.

    line 114
  6. Distinctive:

    If your viewer resolves differently, trust your viewer and report the mismatch.

    line 118

“Common” is measured: kept by at least 6 in 10 of the 33 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Lint a wiki

A wiki kept by agents decays in predictable ways: links point at pages that were renamed or never written, new pages nobody links to, summaries that fall behind the pages they summarize, and pages that grow until nobody reads them. Linting finds these mechanically so the fixing can be deliberate.

Two findings are defects: a broken link and a credential-shaped string. Everything else in the report is information that needs a judgment call, not an automatic fix.

Run the check

Markdown folder (Obsidian vault, git repo, any directory of .md files):

python3 scripts/wiki_lint.py path/to/wiki            # readable report
python3 scripts/wiki_lint.py path/to/wiki --json     # for you to parse

scripts/ is inside this skill's folder. Python 3.8 or later, no packages. Options: --stale-days 90, --max-lines 200, --strict (also fail on frontmatter problems), --today 2026-09-28 (measure ages from that date instead of the system clock).

Hosted wiki over MCP: call the host's health tool instead (on Dexio, wiki_health). It reports the same categories.

Exit status 1 means at least one broken link or possible secret, so the same command works as a pre-commit hook or a CI step.

Fix in this order

  1. Secrets. The report shows where and what kind, never the value. Remove the value from the page at once, replace it with where the credential lives ("in the deploy host's .env"), and tell a person: the value is still in history, so the credential has to be rotated. A placeholder or an example key the checker flags can be reworded so it no longer looks like one.
  2. Broken links. For each, decide which is true:
    • The page was renamed or moved: point the link at the new path.
    • The page should exist: it appears in wanted, ranked by how many pages link to it. A target wanted by three or more pages usually deserves a real page; write it with wiki-record.
    • The link was speculative: remove the brackets and keep the words. Never create an empty stub just to clear the error. A stub is a broken link that no longer shows up.
  3. Frontmatter. Add the missing description (one line saying what the page answers or holds, not the question that started it), title, or a valid updated date. The description is what makes the catalog useful, so write it for someone deciding whether to open the page.
  4. Orphaned pages (no links in or out). Read the page. If it still matters, link it from the one or two pages a reader would come from and link out from it to its neighbors. If it is superseded, archive it (wiki-refactor). If it is a passing mention, fold its content into the page that covers the topic and archive it.
  5. Unreferenced pages (links out, none in). Same as orphans, lower priority: search finds them, browsing does not.
  6. Stale pages. "Unchanged for N days while pages it links to changed" is a hint, not a verdict. Reread the page against the newer pages and the original sources. If it still holds, bump updated and say in the change note that you rechecked it. If not, fix it or record the conflict (wiki-conflicts). A page past its own stale_after date must be rechecked before anyone relies on it.
  7. Long pages. Split past about 200 lines (wiki-refactor). Long pages are where contradictions hide, because nobody rereads the whole thing before appending.
  8. Duplicate titles. Two pages with one title usually means two pages on one topic. Merge them (wiki-refactor), or retitle one so each title says what is different.

Then run the check again and confirm zero broken links and zero secrets before you finish.

Other uses of the script

python3 scripts/wiki_lint.py path/to/wiki --catalog          # every page and its description
python3 scripts/wiki_lint.py path/to/wiki --links-to concepts/llm-wiki   # before a rename
python3 scripts/wiki_lint.py path/to/wiki --verify-queue 10  # what to fact-check next

--catalog prints the catalog from page descriptions, grouped by folder. Generate it when you need an index instead of keeping index.md by hand, which drifts out of sync and is the file every parallel writer collides on. --verify-queue ranks pages for wiki-verify.

Automate it

Pre-commit hook in a git-backed wiki (.git/hooks/pre-commit, made executable):

#!/bin/sh
python3 path/to/wiki_lint.py . >/dev/null || { python3 path/to/wiki_lint.py .; exit 1; }

GitHub Actions:

- uses: actions/checkout@v4
- run: python3 skills/wiki-lint/scripts/wiki_lint.py wiki

A scheduled agent run is better than either for the judgment calls: run the check weekly, fix broken links and frontmatter, and report orphans, stale pages and long pages to a person rather than deleting anything.

Pitfalls

  • Do not fix a broken link by deleting the sentence around it. The sentence is usually right; only the target is wrong.
  • Do not bump updated on a stale page without rereading it. That turns a warning into a false claim that the page was checked.
  • Do not batch hundreds of fixes into one change. Group by kind (all link fixes, then all descriptions) so a reviewer can read the diff and a bad fix is easy to revert.
  • Resolution rules differ between tools. This checker resolves the exact path from the wiki root, then the path relative to the linking page, then the one page with that file name. If your viewer resolves differently, trust your viewer and report the mismatch.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.