Agent skill

Obsidian Wiki Linter

by AgriciDaniel in AgriciDaniel/claude-obsidian

Runs a deterministic, read-only health check on an Obsidian vault, reporting dead or ambiguous links, orphan pages, missing frontmatter, empty sections and stale index entries.

MITAuto-check passedKnowledge Management

Install Obsidian Wiki Linter

skills CLI
$ npx skills add AgriciDaniel/claude-obsidian --skill wiki-lint -a claude-code

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

GitHub CLI
$ gh skill install AgriciDaniel/claude-obsidian wiki-lint --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/AgriciDaniel/claude-obsidian.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/wiki-lint .claude/skills/wiki-lint && 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-lint
GitHub stars
15k
Token cost
~938 tokens
SKILL.md length
444 words
Files
1
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Runs a deterministic, read-only health check on an Obsidian vault, reporting dead or ambiguous links, orphan pages, missing frontmatter, empty sections and stale index entries.

  • Works in 5 steps: Preserve the engine's paths, line… → Group findings by likely impact: broken… → Explain that an orphan may be… → …
  • Running a health check on an Obsidian vault for broken links and orphan pages
  • SKILL.md covers Run, Explain findings, Repair is a separate operation and Checkpoint
  • Calls python3

What it does

The skill wraps a portable Python lint engine that observes vault state without creating reports, dashboards or fixes of its own. It resolves the engine's own installed location rather than the vault path, then runs it against the chosen vault with an optional markdown output format and a repeatable exclude glob to scope folders, such as a scratchpad, out of every scan category: pages, link resolution, orphans, frontmatter, empty sections and stale indexes.

Its deterministic parser understands Obsidian wikilinks and embeds, Markdown links, aliases, heading and block fragments, and code fences, skips dot-prefixed directories the way Obsidian's own indexer does, and honors .gitignore files directly rather than shelling out to git, dropping a gitignored candidate when a link is ambiguous between it and a real page. When explaining findings, the skill preserves the engine's own paths, line numbers and categories, groups them by likely impact from broken navigation down to maintainability, and is explicit that an orphan page may be intentional and that the tool performs no semantic or prose-level analysis beyond what it actually reports.

When your agent uses it

  • Running a health check on an Obsidian vault for broken links and orphan pages
  • Auditing frontmatter and stale index entries across a wiki
  • Checking a vault for dead links before a bigger reorganization

Example prompts

  • “Lint my vault and show me every dead or ambiguous link.”
  • “Run a wiki health check excluding the scratchpad folder.”
  • “Check for orphan pages and missing frontmatter titles across the vault.”

Requirements

  • python3
  • An installed claude-obsidian product with its lint engine

Workflow steps

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

  1. Preserve the engine's paths, line numbers, targets, categories, and counts.
  2. Group findings by likely impact: broken navigation, ambiguous resolution,
  3. Explain that an orphan may be intentional and an ambiguous basename needs a
  4. Treat allowlisted findings as policy, not as proof that the target exists.
  5. Separate deterministic facts from suggested remediation.

What it can do on your machine

Read from SKILL.md and the folder at commit 32ac5a0. 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:

    • python3

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

  • Network

    No URLs in SKILL.md.

    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

Obsidian Wiki Linter loads about 938 tokens when it runs. Until then it costs about 87 tokens; SKILL.md has 444 words of instructions outside code blocks.

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

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 AgriciDaniel/claude-obsidian at commit 32ac5a0, republished under its MIT licence (© AgriciDaniel). 444 words, ~938 tokens.

Download SKILL.mdSave it as .claude/skills/wiki-lint/SKILL.md (or your agent's skills folder).
name
wiki-lint
description
Run a deterministic, read-only health check on an Obsidian wiki. Use for lint, vault health check, audit wiki health, find orphans, find dead links, frontmatter audit, provenance audit, or wiki audit. Reports graph, link, frontmatter, provenance-ledger, empty-section, and stale-index findings; it does not reason broadly or repair files.

Lint the wiki

Use the portable lint engine as the source of truth. Lint observes vault state; it does not create reports, dashboards, canvases, stubs, or fixes.

Resolve the installed product root from this skill's own location, not from the vault or current working directory:

bash
PRODUCT_ROOT=/absolute/path/to/installed/claude-obsidian
CORE="$PRODUCT_ROOT/scripts/claude-obsidian.py"
test -f "$CORE"

Every ../wiki/references/ link in this file resolves the same way, relative to this skill's own directory under $PRODUCT_ROOT, never relative to the selected vault's wiki/ directory.

Run

Resolve the user vault, then run one of:

bash
python3 "$CORE" lint --vault "$VAULT"
python3 "$CORE" lint --vault "$VAULT" --format markdown
python3 "$CORE" lint --vault "$VAULT" --exclude "wiki/scratchpad/*"

The repeatable --exclude GLOB flag scopes a path (for example a scratchpad folder) out of page, link-resolution, orphan, frontmatter, empty-section, and stale-index scanning.

Use --strict only when a nonzero exit for findings is useful in automation. The command remains read-only either way.

The deterministic parser understands Obsidian wikilinks and embeds, Markdown links, aliases, heading and block fragments, escaped aliases, and code fences. It skips dot-prefixed directories by default, mirroring Obsidian's own indexer. Link resolution honors .gitignore files inside the vault (no git subprocess): when a link is ambiguous between a page and a gitignored file such as a build artifact, the gitignored candidate is dropped. It reports such categories as dead or ambiguous links, orphan pages, required frontmatter gaps (including title), empty sections, stale index entries, and source/claim ledger contract violations. Report only the checks and counts present in its output; do not claim that it performed semantic, stylistic, or prose-level contradiction analysis when it did not.

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

Explain findings

  1. Preserve the engine's paths, line numbers, targets, categories, and counts.
  2. Group findings by likely impact: broken navigation, ambiguous resolution, metadata quality, then maintainability.
  3. Explain that an orphan may be intentional and an ambiguous basename needs a path-qualified link; do not infer intent from the finding alone.
  4. Treat allowlisted findings as policy, not as proof that the target exists.
  5. Separate deterministic facts from suggested remediation.

Do not write the Markdown rendering into the vault. Return it in chat or stdout.

Repair is a separate operation

Never auto-fix a lint result. After the user chooses specific findings to repair:

  1. Re-read each target and record its expected SHA-256.
  2. Draft only the selected changes; do not delete or merge pages without explicit consent.
  3. Build one repair bundle with a new operation ID.
  4. Inspect the bundle and show exact changed paths.
  5. Apply only after that separate review.
  6. Re-run lint read-only and compare the relevant findings.

Follow the operation transaction contract. Lint itself never applies that transaction and never commits Git.

Checkpoint

Observe the deterministic report, think about root causes rather than finding count, verify proposed repairs against current hashes, and grow by improving the workflow that produced repeated findings.

© AgriciDaniel, 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-lint of AgriciDaniel/claude-obsidian.

Open the folder on GitHubat commit 32ac5a0

Compare with similar skills

Obsidian Wiki Linter 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.

Obsidian Wiki Linter compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Obsidian Wiki Linter this skillAgriciDaniel/claude-obsidian15k—~938Automated safety check: PassMIT
LLM Wikilewislulu/llm-wiki-skill655—~3.7kAutomated safety check: PassNone
LLM WikiCharlesHoskinson/sevenlayer116—~1.5kAutomated safety check: PassCustom licence
Knowledge Base Health Lintjason-effi-lab/karpathy-llm-wiki-vault721—~336Automated safety check: PassNone
Wiki AllPratiyush/llm-wiki397—~587Automated safety check: PassMIT
Wiki DedupAr9av/obsidian-wiki3.5k—~3.8kAutomated safety check: NotesMIT

Similar skills

  • LLM Wiki

    lewislulu/llm-wiki-skill

    Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…

    655 GitHub stars~3.7k tokensUpdated 5 mo ago
    Knowledge ManagementAuto-check passed
  • LLM Wiki

    CharlesHoskinson/sevenlayer

    Builds and maintains a persistent, interlinked Obsidian-compatible markdown knowledge wiki in a git repo via three operations — ingest a source into linked pages, answer a question from the…

    116 GitHub stars~1.5k tokensUpdated 1 mo ago
    Knowledge ManagementAuto-check passed
  • Knowledge Base Health Lint

    jason-effi-lab/karpathy-llm-wiki-vault

    Scans an Obsidian-style wiki for broken double-link references, orphan pages, files missing from the index and unresolved knowledge conflicts, then reports the findings.

    721 GitHub stars~336 tokensUpdated 6 mo ago
    Knowledge ManagementAuto-check passed
  • Wiki All

    Pratiyush/llm-wiki

    Run the complete llmwiki pipeline from scratch — init, sync, graph, build, lint, and serve.

    397 GitHub stars~587 tokensUpdated 3 mo ago
    Knowledge ManagementAuto-check passed
  • Wiki Dedup

    Ar9av/obsidian-wiki

    Detect and merge wiki pages representing the same concept under different names.

    3.5k GitHub stars~3.8k tokensUpdated today
    Knowledge ManagementAuto-check: notes
  • Second Brain

    coreyhaines31/makerskills

    When you want to capture into, compile, query, lint, or connect your personal Second Brain.

    851 GitHub stars~3k tokensUpdated 2 days ago
    Knowledge ManagementAuto-check passed

More from AgriciDaniel/claude-obsidian

All 15 skills in this repo
  • Bounded Autoresearch

    AgriciDaniel/claude-obsidian

    Runs a bounded, source-grounded research loop that drafts a cited dossier and can propose a separately reviewed merge into an Obsidian vault.

    15k GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Obsidian Canvas Boards

    AgriciDaniel/claude-obsidian

    Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.

    15k GitHub stars~1.4k tokensUpdated 1 mo ago
    Auto-check passed
  • 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
    Auto-check passed
  • Obsidian Wiki Log Fold

    AgriciDaniel/claude-obsidian

    Creates a bounded, extractive rollup of recent Obsidian wiki log entries, previewed by default, with one optional apply step and no changes to child pages.

    15k GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Defuddle Web Page Cleaner

    AgriciDaniel/claude-obsidian

    Plans, and with explicit network consent runs, an external Defuddle extractor that turns an article-like HTTPS page into clean Markdown for later wiki ingestion.

    15k GitHub stars~1.1k tokensUpdated 1 mo ago
    Auto-check passed
  • Obsidian Bases Editor

    AgriciDaniel/claude-obsidian

    Explains, drafts and validates Obsidian Bases .base files, building filters, formulas and table, card or list views, and applying edits only through one inspected transaction.

    15k GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Questions about Obsidian Wiki Linter

What does Obsidian Wiki Linter do?

Runs a deterministic, read-only health check on an Obsidian vault, reporting dead or ambiguous links, orphan pages, missing frontmatter, empty sections and stale index entries. The skill wraps a portable Python lint engine that observes vault state without creating reports, dashboards or fixes of its own. It resolves the engine's own installed location rather than the vault path, then runs it against the chosen vault with an optional markdown output format and a repeatable exclude glob to scope folders, such as a scratchpad, out of every scan category: pages, link resolution, orphans, frontmatter, empty sections and stale indexes.

When should I use Obsidian Wiki Linter?

Obsidian Wiki Linter fits situations like: running a health check on an Obsidian vault for broken links and orphan pages; auditing frontmatter and stale index entries across a wiki; checking a vault for dead links before a bigger reorganization.

How do I install Obsidian Wiki Linter in Claude Code?

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

How do I install Obsidian Wiki Linter in Codex?

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

Can I use Obsidian Wiki Linter 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 AgriciDaniel/claude-obsidian --skill wiki-lint -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-lint, .gemini/skills/wiki-lint, .github/skills/wiki-lint and .opencode/skills/wiki-lint in your project.

What does Obsidian Wiki Linter need to run?

Going by SKILL.md and its folder, Obsidian Wiki Linter needs the command-line tools its instructions call (python3). Our summary lists: python3; An installed claude-obsidian product with its lint engine.

Does Obsidian Wiki Linter access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Obsidian Wiki Linter 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 Obsidian Wiki Linter use?

Obsidian Wiki Linter 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 Obsidian Wiki Linter use?

About 938 tokens (SKILL.md is roughly 3.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 Obsidian Wiki Linter?

Skills that share tags, products or a category with Obsidian Wiki Linter: LLM Wiki (lewislulu/llm-wiki-skill, 655 stars), LLM Wiki (CharlesHoskinson/sevenlayer, 116 stars), Knowledge Base Health Lint (jason-effi-lab/karpathy-llm-wiki-vault, 721 stars) and Wiki All (Pratiyush/llm-wiki, 397 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Obsidian Wiki Linter?

AgriciDaniel (a GitHub user) maintains it in AgriciDaniel/claude-obsidian, which has 15,438 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 10, 2026.

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