Agent skill

wiki-lint

Health check the Obsidian wiki vault. Finds orphan pages, dead wikilinks, stale claims, missing cross-references, frontmatter gaps, and empty sections. Creates or updates Dataview dashboards. Generates canvas maps. Triggers on: "lint", "health check", "clean up wiki", "check the wiki", "wiki maintenance", "find orphans", "wiki audit".

Stars 573
Forks 58

Install this agent skill to your Project

npx add-skill https://github.com/AgriciDaniel/claude-obsidian/tree/main/skills/wiki-lint

SKILL.md

wiki-lint: Wiki Health Check

Run lint after every 10-15 ingests, or weekly. Ask before auto-fixing anything. Output a lint report to wiki/meta/lint-report-YYYY-MM-DD.md.


Lint Checks

Work through these in order:

  1. Orphan pages. Wiki pages with no inbound wikilinks. They exist but nothing points to them.
  2. Dead links. Wikilinks that reference a page that does not exist.
  3. Stale claims. Assertions on older pages that newer sources have contradicted or updated.
  4. Missing pages. Concepts or entities mentioned in multiple pages but lacking their own page.
  5. Missing cross-references. Entities mentioned in a page but not linked.
  6. Frontmatter gaps. Pages missing required fields (type, status, created, updated, tags).
  7. Empty sections. Headings with no content underneath.
  8. Stale index entries. Items in wiki/index.md pointing to renamed or deleted pages.

Lint Report Format

Create at wiki/meta/lint-report-YYYY-MM-DD.md:

markdown
---
type: meta
title: "Lint Report YYYY-MM-DD"
created: YYYY-MM-DD
updated: YYYY-MM-DD
tags: [meta, lint]
status: developing
---

# Lint Report: YYYY-MM-DD

## Summary
- Pages scanned: N
- Issues found: N
- Auto-fixed: N
- Needs review: N

## Orphan Pages
- [[Page Name]]: no inbound links. Suggest: link from [[Related Page]] or delete.

## Dead Links
- [[Missing Page]]: referenced in [[Source Page]] but does not exist. Suggest: create stub or remove link.

## Missing Pages
- "concept name": mentioned in [[Page A]], [[Page B]], [[Page C]]. Suggest: create a concept page.

## Frontmatter Gaps
- [[Page Name]]: missing fields: status, tags

## Stale Claims
- [[Page Name]]: claim "X" may conflict with newer source [[Newer Source]].

## Cross-Reference Gaps
- [[Entity Name]] mentioned in [[Page A]] without a wikilink.

Naming Conventions

Enforce these during lint:

Element Convention Example
Filenames Title Case with spaces Machine Learning.md
Folders lowercase with dashes wiki/data-models/
Tags lowercase, hierarchical #domain/architecture
Wikilinks match filename exactly [[Machine Learning]]

Filenames must be unique across the vault. Wikilinks work without paths only if filenames are unique.


Writing Style Check

During lint, flag pages that violate the style guide:

  • Not declarative present tense ("X basically does Y" instead of "X does Y")
  • Missing source citations where claims are made
  • Uncertainty not flagged with > [!gap]
  • Contradictions not flagged with > [!contradiction]

Dataview Dashboard

Create or update wiki/meta/dashboard.md with these queries:

markdown
---
type: meta
title: "Dashboard"
updated: YYYY-MM-DD
---
# Wiki Dashboard

## Recent Activity
```dataview
TABLE type, status, updated FROM "wiki" SORT updated DESC LIMIT 15
```

## Seed Pages (Need Development)
```dataview
LIST FROM "wiki" WHERE status = "seed" SORT updated ASC
```

## Entities Missing Sources
```dataview
LIST FROM "wiki/entities" WHERE !sources OR length(sources) = 0
```

## Open Questions
```dataview
LIST FROM "wiki/questions" WHERE answer_quality = "draft" SORT created DESC
```

Canvas Map

Create or update wiki/meta/overview.canvas for a visual domain map:

json
{
  "nodes": [
    {
      "id": "1",
      "type": "file",
      "file": "wiki/overview.md",
      "x": 0, "y": 0,
      "width": 300, "height": 140,
      "color": "1"
    }
  ],
  "edges": []
}

Add one node per domain page. Connect domains that have significant cross-references. Colors map to the CSS scheme: 1=blue, 2=purple, 3=yellow, 4=orange, 5=green, 6=red.


Before Auto-Fixing

Always show the lint report first. Ask: "Should I fix these automatically, or do you want to review each one?"

Safe to auto-fix:

  • Adding missing frontmatter fields with placeholder values
  • Creating stub pages for missing entities
  • Adding wikilinks for unlinked mentions

Needs review before fixing:

  • Deleting orphan pages (they might be intentionally isolated)
  • Resolving contradictions (requires human judgment)
  • Merging duplicate pages

Expand your agent's capabilities with these related and highly-rated skills.

AgriciDaniel/claude-obsidian

defuddle

Strip clutter from web pages before ingesting into the wiki. Removes ads, navigation, headers, footers, and boilerplate: leaving clean readable markdown that saves 40-60% tokens. Triggers on: defuddle, clean this page, strip this url, fetch and clean, clean web content before ingesting, strip ads, remove clutter, clean URL content, readable markdown from URL.

573 58
Explore
AgriciDaniel/claude-obsidian

obsidian-markdown

Write correct Obsidian Flavored Markdown: wikilinks, embeds, callouts, properties, tags, highlights, math, and canvas syntax. Reference this when creating or editing any wiki page. Triggers on: write obsidian note, obsidian syntax, wikilink, callout, embed, obsidian markdown, wikilink format, callout syntax, embed syntax, obsidian formatting, how to write obsidian markdown.

573 58
Explore
AgriciDaniel/claude-obsidian

wiki-ingest

Ingest sources into the Obsidian wiki vault. Reads a source, extracts entities and concepts, creates or updates wiki pages, cross-references, and logs the operation. Supports files, URLs, and batch mode. Triggers on: ingest, process this source, add this to the wiki, read and file this, batch ingest, ingest all of these, ingest this url.

573 58
Explore
AgriciDaniel/claude-obsidian

obsidian-bases

Create and edit Obsidian Bases (.base files): Obsidian's native database layer for dynamic tables, card views, list views, filters, formulas, and summaries over vault notes. Triggers on: create a base, add a base file, obsidian bases, base view, filter notes, formula, database view, dynamic table, task tracker base, reading list base.

573 58
Explore
AgriciDaniel/claude-obsidian

canvas

Visual layer of the wiki. Add images, text cards, PDFs, and wiki pages to Obsidian canvas files with auto-positioning inside zones. Integrates with /banana for image capture. Triggers on: /canvas, canvas new, canvas add image, canvas add text, canvas add pdf, canvas add note, canvas zone, canvas list, canvas from banana, add to canvas, put this on the canvas, open canvas, create canvas.

573 58
Explore
AgriciDaniel/claude-obsidian

save

Save the current conversation, answer, or insight into the Obsidian wiki vault as a structured note. Analyzes the chat, determines the right note type, creates frontmatter, files it in the correct wiki folder, and updates index, log, and hot cache. Triggers on: "save this", "save that answer", "/save", "file this", "save to wiki", "save this session", "file this conversation", "keep this", "save this analysis", "add this to the wiki".

573 58
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results