Install any skill in seconds. Free to start, no credit card required.
Get Started Free →ar9av/wiki-lint
Audit and maintain the health of the Obsidian wiki.
Passed 12 of 18 test cases with the skill, and 8 of 18 without it.
and 5 more in the full report
6 fixed10 passed either way8 still failing0 broke
Tokens, turns and time describe resource use, not a dollar price.
This benchmark measured an earlier version of the skill.
A newer attempt on gemini-3.8-flash on 10/18/2026 did not produce a publishable comparison (not comparable). The snapshot above is the previously measured run.
One of 6 test cases the skill fixed. Same model, same prompt, with and without the skill.
A page in our vault has 20% ambiguous claim markers, while another page has 50% inferred claims without any sources field in frontmatter. What severity and threshold categories apply to these provenance states?
| Checked | Without skill | With skill |
|---|---|---|
| Flags pages with over 15% ambiguous claims as speculation-heavy. | Missed | Passed |
| Flags pages with over 40% inferred claims lacking sources as unsourced synthesis. | Missed | Passed |
The instructions your model reads when the skill loads.
You are performing a health check on an Obsidian wiki. Your goal is to find and fix structural issues that degrade the wiki's value over time.
Before scanning anything: follow the Retrieval Primitives table in llm-wiki/SKILL.md. Prefer frontmatter-scoped greps and section-anchored reads over full-page reads. On a large vault, blindly reading every page to lint it is exactly what this framework is built to avoid.
Writing profile: Before drafting or rewriting natural-language Markdown, read and apply the Writing Profile Resolution section in llm-wiki/SKILL.md. Framework schema, provenance, safety, and operation-specific requirements take precedence.
Apply WRITING.md preferences only to generated consolidation reports; deterministic findings and fixes keep their existing formats.
llm-wiki/SKILL.md (inline @name override → walk up CWD for .env → global config → prompt setup). This gives OBSIDIAN_VAULT_PATH plus any OBSIDIAN_ALLOWED_LIFECYCLES, OBSIDIAN_ALLOWED_RELATIONSHIP_TYPES, OBSIDIAN_REQUIRED_TRUST_FIELDS, and OBSIDIAN_SCHEMA_SOURCE values.$OBSIDIAN_VAULT_PATH/AGENTS.md exists, read it before interpreting any schema. Owner rules override framework defaults.index.md for the full page inventorylog.md for recent activity contextPass the effective schema to deterministic checks explicitly. For example, add each owner extension with --allow-lifecycle / --allow-relationship-type, replace trust requiredness with repeatable --required-trust-field, and identify the authority with --schema-source "$OBSIDIAN_VAULT_PATH/AGENTS.md". The JSON report's schema block must match the schema you formed before findings are accepted.
Schema precedence is CLI flags > resolved environment/config values > framework defaults; lifecycle and relationship extensions remain additive. Strip every override before use. An explicitly configured empty or whitespace-only value—and any empty comma-separated list entry—fails closed; never treat it as a valid lifecycle, relationship type, required field, or authority locator. Remove the variable instead when defaults are intended.
When obsidian-wiki is on PATH, prefer obsidian-wiki lint "$OBSIDIAN_VAULT_PATH" --json (with the same schema override flags as above) and fold the JSON findings into the health report. If the CLI is unavailable, keep the grep-based checks below — do not require the binary.
If the JSON report includes findings.snapshot_mismatch, list those pages in the report. Missing or drifted snapshots: is not missing required frontmatter (section 3 still covers only title, category, tags, sources, created, updated). Do not rewrite sources: to fix snapshot drift. Run obsidian-wiki snapshots apply --from-json <lint.json> (dry-run), show the preview, and pass --apply only after explicit user confirmation. Apply writes quoted "[[_raw/_archived/stem|stem]]" list items (native Property links with display text). wiki-lint --consolidate still does not apply this finding.
Run these checks in order. Report findings as you go.
Scope: skip _archives/, _raw/, _readouts/, and .obsidian/ in every check. These hold frozen snapshots, unprocessed staging drafts, and derived readouts (saved by wiki-narrate) — they are not knowledge-graph pages, so orphan, frontmatter, and link checks don't apply to them.
Find pages with zero incoming wikilinks. These are knowledge islands that nothing connects to.
How to check:
.md files in the vault[[page-name]] referencesindex.md and log.md) are orphanstest cases passed, vs 8 / 18 without
Published skills whose descriptions closely match this one, with their headline benchmark lift.
More skills from the same source and nearby in the registry, with their headline benchmark lift.