Remote OpenClaw
Menu
SkillsMCPPluginsFree guideDigestSubmit MCPSkillPluginMCPMCP, plugin, or skillAdvertise
Remote OpenClaw
SkillsMCPPluginsFree guideDigestSubmit MCPSkillPluginMCPMCP, plugin, or skillAdvertise

Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Skills/ar9av/obsidian-wiki/wiki-lint
wiki-lint logo

wiki-lint

ar9av/obsidian-wiki
2K installs2K stars
Run it on Hostinger →up to 70% off + an extra 10% with code ZACAARON10Free API →

Installation

npx skills add https://github.com/ar9av/obsidian-wiki --skill wiki-lint

Summary

>

SKILL.md

Wiki Lint — Health Audit

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.

Before You Start

  1. Resolve config — follow the Config Resolution Protocol in llm-wiki/SKILL.md (walk up CWD for .env → ~/.obsidian-wiki/config → prompt setup). This gives OBSIDIAN_VAULT_PATH
  2. Read index.md for the full page inventory
  3. Read log.md for recent activity context

Lint Checks

Run these checks in order. Report findings as you go.

1. Orphaned Pages

Find pages with zero incoming wikilinks. These are knowledge islands that nothing connects to.

How to check:

  • Glob all .md files in the vault
  • For each page, Grep the rest of the vault for [[page-name]] references
  • Pages with zero incoming links (except index.md and log.md) are orphans

How to fix:

  • Identify which existing pages should link to the orphan
  • Add wikilinks in appropriate sections

2. Broken Wikilinks

Find [[wikilinks]] that point to pages that don't exist.

How to check:

  • Grep for \[\[.*?\]\] across all pages
  • Extract the link targets
  • Check if a corresponding .md file exists

How to fix:

  • If the target was renamed, update the link
  • If the target should exist, create it
  • If the link is wrong, remove or correct it

3. Missing Frontmatter

Every page should have: title, category, tags, sources, created, updated.

How to check:

  • Grep frontmatter blocks (scope to ^--- at file heads) instead of reading every page in full
  • Flag pages missing required fields

How to fix:

  • Add missing fields with reasonable defaults

3a. Missing Summary (soft warning)

Every page should have a summary: frontmatter field — 1–2 sentences, ≤200 chars. This is what cheap retrieval (e.g. wiki-query's index-only mode) reads to avoid opening page bodies.

How to check:

  • Grep frontmatter for ^summary: across the vault
  • Flag pages without it, but as a soft warning, not an error — older pages predating this field are fine; the check exists to nudge ingest skills into filling it on new writes.
  • Also flag pages whose summary exceeds 200 chars.

How to fix:

  • Re-ingest the page, or manually write a short summary (1–2 sentences of the page's content).

4. Stale Content

Pages whose updated timestamp is old relative to their sources.

How to check:

  • Compare page updated timestamps to source file modification times
  • Flag pages where sources have been modified after the page was last updated

5. Contradictions

Claims that conflict across pages.

How to check:

  • This requires reading related pages and comparing claims
  • Focus on pages that share tags or are heavily cross-referenced
  • Look for phrases like "however", "in contrast", "despite" that may signal existing acknowledged contradictions vs. unacknowledged ones

How to fix:

  • Add an "Open Questions" section noting the contradiction
  • Reference both sources and their claims

6. Index Consistency

Verify index.md matches the actual page inventory.

How to check:

  • Compare pages listed in index.md to actual files on disk
  • Check that summaries in index.md still match page content

7. Provenance Drift

Check whether pages are being honest about how much of their content is inferred vs extracted. See the Provenance Markers section in llm-wiki for the convention.

How to check:

  • For each page with a provenance: block or any ^[inferred]/^[ambiguous] markers, count sentences/bullets and how many end with each marker
  • Compute rough fractions (extracted, inferred, ambiguous)
  • Apply these thresholds:
  • AMBIGUOUS > 15%: flag as "speculation-heavy" — even 1-in-7 claims being genuinely uncertain is a signal the page needs tighter sourcing or should be moved to synthesis/
  • INFERRED > 40% with no sources: in frontmatter: flag as "unsourced synthesis" — the page is making connections but has nothing to cite
  • Hub pages (top 10 by incoming wikilink count) with INFERRED > 20%: flag as "high-traffic page with questionable provenance" — errors on hub pages propagate to every page that links to them
  • Drift: if the page has a provenance: frontmatter block, flag it when any field is more than 0.20 off from the recomputed value
  • Skip pages with no provenance: frontmatter and no markers — treated as fully extracted by convention

How to fix:

  • For ambiguous-heavy: re-ingest from sources, resolve the uncertain claims, or split speculative content into a synthesis/ page
  • For unsourced synthesis: add sources: to frontmatter or clearly label the page as synthesis
  • For hub pages with INFERRED > 20%: prioritize for re-ingestion — errors here have the widest blast radius
  • For drift: update the provenance: frontmatter to match the recomputed values

8. Fragmented Tag Clusters

Checks whether pages that share a tag are actually linked to each other. Tags imply a topic cluster; if those pages don't reference each other, the cluster is fragmented — knowledge islands that should be woven together.

How to check:

  • For each tag that appears on ≥ 5 pages:
  • n = count of pages with this tag
  • actual_links = count of wikilinks between any two pages in this tag group (check both directions)
  • cohesion = actual_links / (n × (n−1) / 2)
  • Flag any tag group where cohesion < 0.15 and n ≥ 5

How to fix:

  • Run the cross-linker skill targeted at the fragmented tag — it will surface and insert the missing links
  • If a tag group is large (n > 15) and still fragmented, consider splitting it into more specific sub-tags

9. Visibility Tag Consistency

Checks that visibility/ tags are applied correctly and aren't silently missing where they matter.

How to check:

  • Untagged PII patterns: Grep page bodies for patterns that commonly indicate sensitive data — lines containing password, api_key, secret, token, ssn, email:, phone: followed by an actual value (not a field description). If a page matches and lacks visibility/pii or visibility/internal, flag it as a likely mis-classification.
  • visibility/pii without sources:: A page tagged visibility/pii should always have a sources: frontmatter field — if there's no provenance, there's no way to verify the classification. Flag any visibility/pii page missing sources:.
  • Visibility tags in taxonomy: visibility/ tags are system tags and must not appear in _meta/taxonomy.md. If found there, flag as misconfigured — they'd be counted toward the 5-tag limit on pages that include them.

How to fix:

  • For untagged PII patterns: add visibility/pii (or visibility/internal if it's team-context rather than personal data) to the page's frontmatter tags
  • For missing sources:: add provenance or escalate to the user — don't auto-fill
  • For taxonomy contamination: remove the visibility/ entries from _meta/taxonomy.md

10. Misc Promotion Candidates

Find pages in misc/ that have accumulated enough project affinity to be promoted.

How to check:

  • Glob $OBSIDIAN_VAULT_PATH/misc/*.md
  • For each page, read the affinity frontmatter field
  • Flag pages where any single project's score ≥ 3

How to fix:

  • Run the cross-linker skill first if affinity scores look stale (e.g., affinity: {} on a page with many wikilinks)
  • To promote: move the page to projects/<project-name>/references/ (or another appropriate category), update its category frontmatter, remove promotion_status, and grep the vault for backlinks to update them

12. Confidence and Lifecycle Schema

Enforces the confidence + lifecycle frontmatter schema (see llm-wiki/SKILL.md, Confidence and Lifecycle section).

Two modes:

  • --check (default, read-only) — reports errors and warnings
  • --fix — may rewrite base_confidence only when drift is detected (Rule 12e); never rewrites lifecycle
Rule 12a — lifecycle enum validation

How to check: Grep frontmatter for ^lifecycle: across all pages. Flag any value not in {draft, reviewed, verified, disputed, archived}.

How to fix: n/a (only a human should set lifecycle state)

Rule 12b — base_confidence range

How to check: Grep frontmatter for ^base_confidence: across all pages. Flag any value outside [0.0, 1.0] or any page missing the field entirely.

How to fix: n/a (wrong value means the skill computed it wrong — surface for manual correction)

Rule 12c — Stale page report (computed overlay)

Staleness is never stored — it is computed at read time: is_stale = (today − updated) > 90 days.

How to check: For each page, read updated: from frontmatter and compute is_stale. If stale, also check lifecycle:. Report:

  • Stale pages with lifecycle: verified with a louder annotation (these are the most dangerous — high-trust pages that may be wrong)
  • All other stale pages as a standard warning

How to fix: --fix does not rewrite lifecycle. Staleness clears automatically when a re-ingest bumps updated.

Rule 12d — Supersession integrity

How to check: For each page with superseded_by: "[[target]]":

  • Verify the target page exists
  • Verify the target page is not itself archived (no circular or chained supersession)
  • Verify there are no cycles (A supersedes B which supersedes A)
  • Warn if lifecycle != archived while superseded_by is set (inconsistent state)

How to fix: n/a — flag for human resolution

Rule 12e — Confidence drift

How to check: For pages that have both base_confidence: and sources: in frontmatter, recompute base_confidence using the formula in llm-wiki/SKILL.md. If the stored value differs from the recomputed value by more than 0.05, flag it as drift.

How to fix (--fix only): Rewrite the base_confidence field to the recomputed value. This is the only rule that mutates frontmatter automatically.

Migration timeline
PhaseWhenBehavior on missing fields
Phase 1: Soft launchInitial PRWarning only — missing base_confidence or lifecycle on any page
Phase 2: New pages enforced+2 weeksError for newly created pages missing the fields; existing pages still warn even if updated is bumped during routine maintenance
Phase 3: Full enforcement+6 weeks, gated on a backfill script shipping in a separate PRError for all pages
Output additions

Add to the Wiki Health Report:

### Confidence/Lifecycle Issues (N found)
- `concepts/foo.md` — missing `lifecycle` field (warning: Phase 1)
- `entities/bar.md` — `lifecycle: stalestate` is not a valid enum value
- `concepts/scaling.md` — `base_confidence: 1.4` is out of range [0.0, 1.0]
- `synthesis/old-analysis.md` — STALE (last updated 2025-10-01, 182 days ago) lifecycle=verified ⚠️ HIGH PRIORITY
- `concepts/outdated.md` — STALE (last updated 2025-11-15, 137 days ago) lifecycle=draft
- `entities/tool-v1.md` — `superseded_by: [[entities/tool-v2]]` but lifecycle=draft (expected archived)
- `concepts/drift-example.md` — base_confidence drift: stored=0.80, recomputed=0.59 (delta=0.21)

Append to the LINT log entry:

- [TIMESTAMP] LINT ... lifecycle_issues=N

13. Typed Relationships Validity

Validate relationships: frontmatter blocks. Skip pages that have no relationships: block — the field is optional.

Allowed types: extends, implements, contradicts, derived_from, uses, replaces, related_to

How to check:

  • Grep frontmatter for ^relationships: across all vault pages
  • For each page that has a relationships: block, read its frontmatter (not the full page body)
  • For each entry in the block:
  1. Type validation — flag any type: value not in the allowed set above
  2. Broken target — strip [[ and ]] from the target: string, normalize (lowercase, spaces→hyphens, strip .md), and check whether a .md file at that path exists in the vault. Flag unresolved targets.
  3. Self-reference — flag any entry where the resolved target equals the page's own node id

How to fix:

  • Invalid type: correct the value to the nearest allowed type, or use related_to when the type is ambiguous
  • Broken target: update or remove the entry; if the target page should exist, create it first
  • Self-reference: remove the entry

Output additions:

### Typed Relationship Issues (N found)
- `concepts/foo.md` — relationships[1]: type "contradication" is not an allowed type (did you mean "contradicts"?)
- `concepts/bar.md` — relationships[0]: target "[[skills/nonexistent-skill]]" resolves to no page in vault
- `entities/baz.md` — relationships[2]: self-reference (target resolves to this page's own id)

Append to the LINT log entry:

... relationship_issues=N

11. Synthesis Gaps

Identify high-value synthesis opportunities the wiki is missing — concept pairs that co-occur across many pages but have no synthesis/ page connecting them.

How to check:

  • List all pages in synthesis/ — collect the concept pairs each one already covers (from its [[wikilinks]] or title)
  • Pick 10-15 frequently linked concepts from concepts/ and entities/
  • For each pair, run a quick grep to count pages that link to both:
  grep -rl "\[\[ConceptA\]\]" "$OBSIDIAN_VAULT_PATH" --include="*.md" > /tmp/a.txt
  grep -rl "\[\[ConceptB\]\]" "$OBSIDIAN_VAULT_PATH" --include="*.md" > /tmp/b.txt
  comm -12 <(sort /tmp/a.txt) <(sort /tmp/b.txt) | wc -l
  • Flag pairs with co-occurrence ≥ 3 that have no existing synthesis page

How to fix:

  • Run /wiki-synthesize to automatically discover and fill the top gaps

Output Format

Report findings as a structured list:

## Wiki Health Report

### Orphaned Pages (N found)
- `concepts/foo.md` — no incoming links

### Broken Wikilinks (N found)
- `entities/bar.md:15` — links to [[nonexistent-page]]

### Missing Frontmatter (N found)
- `skills/baz.md` — missing: tags, sources

### Stale Content (N found)
- `references/paper-x.md` — source modified 2024-03-10, page last updated 2024-01-05

### Contradictions (N found)
- `concepts/scaling.md` claims "X" but `synthesis/efficiency.md` claims "not X"

### Index Issues (N found)
- `concepts/new-page.md` exists on disk but not in index.md

### Missing Summary (N found — soft)
- `concepts/foo.md` — no `summary:` field
- `entities/bar.md` — summary exceeds 200 chars

### Provenance Issues (N found)
- `concepts/scaling.md` — AMBIGUOUS > 15%: 22% of claims are ambiguous (re-source or move to synthesis/)
- `entities/some-tool.md` — drift: frontmatter says inferred=0.10, recomputed=0.45
- `concepts/transformers.md` — hub page (31 incoming links) with INFERRED=28%: errors here propagate widely
- `synthesis/speculation.md` — unsourced synthesis: no `sources:` field, 55% inferred

### Fragmented Tag Clusters (N found)
- **#systems** — 7 pages, cohesion=0.06 ⚠️ — run cross-linker on this tag
- **#databases** — 5 pages, cohesion=0.10 ⚠️

### Visibility Issues (N found)
- `entities/user-records.md` — contains `email:` value pattern but no `visibility/pii` tag
- `concepts/auth-flow.md` — tagged `visibility/pii` but missing `sources:` frontmatter
- `_meta/taxonomy.md` — contains `visibility/internal` entry (system tag must not be in taxonomy)

### Misc Promotion Candidates (N found)
Pages in misc/ that have ≥ 3 connections to a single project and are ready to be promoted:

| Page | Top Project | Affinity Score |
|---|---|---|
| `misc/web-martinfowler-articles-microservices.md` | `obsidian-wiki` | 4 |

### Typed Relationship Issues (N found)
- `concepts/foo.md` — relationships[1]: type "contradication" is not an allowed type
- `concepts/bar.md` — relationships[0]: target "[[skills/nonexistent]]" resolves to no page

### Synthesis Gaps (N found)
Concept pairs that co-occur frequently but have no synthesis page:

| Pair | Co-occurrence | Suggested Action |
|---|---|---|
| [[Caching]] × [[Consistency]] | 5 pages | Run `/wiki-synthesize` |
| [[Testing]] × [[Observability]] | 3 pages | Run `/wiki-synthesize` |

After Linting

Append to log.md:

- [TIMESTAMP] LINT issues_found=N orphans=X broken_links=Y stale=Z contradictions=W prov_issues=P missing_summary=S fragmented_clusters=F visibility_issues=V promotion_candidates=C synthesis_gaps=G relationship_issues=R

Offer to fix issues automatically or let the user decide which to address.

---

Consolidate Mode (--consolidate)

Triggered by wiki-lint --consolidate. Switches from report-only to act-and-report — the "dream cycle" that runs periodically so the wiki self-heals.

Safety protocol

Always run in dry-run first. Before writing anything:

  1. Run all 12 lint checks (Step 1–12 above).
  2. Print the planned consolidation actions as a structured list (see Dry-Run Output below).
  3. Ask the user: "Apply these N changes? [yes / no / select]".
  4. Only proceed with writes after explicit confirmation. If the user selects individual actions, apply only those.
  5. Never merge pages — use wiki-dedup for that. Only link, promote, demote, and flag.

Consolidation actions (in order, after confirmation)

Action 1: Fix broken wikilinks

For each broken [[Target]] found in Check 2:

  • Search the vault for a page whose title or filename is the closest fuzzy match (use Grep across index.md titles)
  • If a unique best match exists (edit distance ≤ 2 characters or same root word): rewrite the link. Note the rewrite: [[Oringal]] → [[corrected-page]].
  • If no match or ambiguous: convert to plain text (~~[[Target]]~~ → Target) and add a comment <!-- broken link: no match found -->.
  • Never create a new page just to satisfy a broken link.
Action 2: Add missing cross-references for orphans

For each orphan page found in Check 1 (zero incoming links):

  • Grep the vault body text for mentions of the page's title or aliases (case-insensitive).
  • For each mention found in another page, add a [[wikilink]] replacing the plain-text mention.
  • Limit to 3 insertions per orphan — don't flood pages with links.
  • This is scoped to orphans only (different from cross-linker which runs broadly).
Action 3: Correct lifecycle states

Apply these rules automatically (they don't require human judgment — they enforce the documented state machine):

  • Promote draft → reviewed: pages where lifecycle: draft AND created > 30 days ago AND base_confidence > 0.7. Set lifecycle: reviewed, lifecycle_changed: <today>, lifecycle_reason: "auto-promoted by wiki-lint --consolidate: age>30d, confidence>0.7".
  • Demote verified → stale: NOT a state transition — stale is a computed overlay, not a lifecycle value. Instead: for verified pages where is_stale = (today − updated) > 180 days, add a callout at the top of the page body: > ⚠️ Stale: This page was last updated <date>. Verify before relying on it. Only add if the callout isn't already present.
  • Do not change reviewed → verified or any other transition — those are human-only.
Action 4: Tier demotion

For pages with tier: supporting (or unset) that have 0 incoming links AND haven't been updated in 90+ days:

  • Set tier: peripheral.
  • Emit a list of demotions for the user to review.
  • Do not demote tier: core pages automatically — those were manually set.
Action 5: Tag normalization

Read _meta/taxonomy.md for the alias mapping (e.g., ml → machine-learning). For each page, replace known alias tags with their canonical form in the tags: frontmatter field. This is a subset of tag-taxonomy's work — only alias fixes, no full audit.

Action 6: Contradiction callouts

For each pair of pages marked as contradicting each other (via relationships: contradicts in frontmatter, or flagged in Check 5):

  • Check whether a > ⚠️ Contradiction flagged with [[Other Page]] callout already exists near the relevant claim.
  • If not, add it at the end of the "Key Ideas" section (or before "Open Questions" if no "Key Ideas" section). Keep it concise — one line.
  • Do not resolve the contradiction; only flag it visually.

Action 7: Write consolidation report

After all actions, write a report to synthesis/consolidation-<YYYY-MM-DD>.md:

---
title: Consolidation Report <YYYY-MM-DD>
category: synthesis
tags: [maintenance, consolidation]
sources: []
summary: Auto-generated consolidation report from wiki-lint --consolidate run on <date>.
lifecycle: draft
lifecycle_changed: <date>
tier: peripheral
created: <ISO timestamp>
updated: <ISO timestamp>
---

# Consolidation Report — <YYYY-MM-DD>

## Summary
- Broken links fixed: N
- Cross-references added: M
- Lifecycle states updated: K
- Tier demotions: D
- Tags normalized: T
- Contradiction callouts added: C

## Broken Link Fixes
- `concepts/foo.md:12` — [[OldTarget]] → [[correct-target]]
- `entities/bar.md:8` — [[Missing]] → `Missing` (no match found)

## Cross-References Added (orphan rescue)
- `concepts/baz.md` — now linked from: [[concepts/alpha]], [[skills/beta]]

## Lifecycle Updates
- `concepts/old-draft.md` — draft → reviewed (age 45d, confidence 0.74)
- `synthesis/stale-verified.md` — stale callout added (last updated 2025-10-01)

## Tier Demotions
- `concepts/unused-concept.md` — supporting → peripheral (0 links, 120 days stale)

## Tag Normalizations
- `entities/some-tool.md` — `ml` → `machine-learning`

## Contradiction Callouts
- `concepts/scaling.md` — flagged contradiction with [[synthesis/efficiency]]

Dry-Run Output (shown before any writes)

wiki-lint --consolidate — Dry Run

Planned actions (N total):
[1] Fix broken link: concepts/foo.md:12 [[OldTarget]] → [[correct-target]]
[2] Add cross-ref: concepts/baz.md ← [[concepts/alpha]] (orphan rescue)
[3] Lifecycle: concepts/old-draft.md → reviewed (age 45d, confidence 0.74)
[4] Tier demotion: concepts/unused.md → peripheral (0 links, 112 days stale)
[5] Tag alias: entities/some-tool.md: ml → machine-learning
[6] Contradiction callout: concepts/scaling.md ↔ [[synthesis/efficiency]]

Apply these 6 changes? [yes / no / select by number]

Log entry for consolidate mode

- [TIMESTAMP] LINT_CONSOLIDATE links_fixed=N orphans_rescued=M lifecycle_updates=K tier_demotions=D tag_fixes=T contradiction_callouts=C report=synthesis/consolidation-YYYY-MM-DD.md

QMD Refresh After Vault Writes

QMD is a search index, not the source of truth. If $QMD_WIKI_COLLECTION is empty or unset, skip this step. Run it only after this skill has written or rewritten vault markdown. If QMD refresh fails, do not roll back the vault changes; report the QMD status separately.

Use $QMD_CLI if set; otherwise use qmd.

${QMD_CLI:-qmd} update

If the output says vectors are needed or embeddings may be stale, run:

${QMD_CLI:-qmd} embed

Verify the collection with either:

${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"

or, when a specific page path is known:

${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5

Record one of:

  • QMD refreshed: update + embed + verified
  • QMD refreshed: update only + verified
  • QMD skipped: QMD_WIKI_COLLECTION unset
  • QMD skipped: qmd CLI unavailable
  • QMD failed: <short error summary>

Score

0–100
57/ 100

Grade

C

Popularity17/30

2,466 installs — growing adoption. Source repo has 2,034 GitHub stars.

Completeness19/30

Documented: full SKILL.md body, one-line install. Missing: description, category/license metadata.

Trust15/25

Community skill with a public GitHub source repository you can review.

Freshness6/15

No update timestamp is tracked for this skill in our catalog.

Scored automatically from popularity, completeness, trust, and freshness — computed only from data in our catalog, never fabricated.

Proud of your score? Add this badge to your README.

Paste a snippet into your GitHub README. The badge updates automatically and links back to this page.

Wiki Lint skill score badge previewScore badge

Markdown

[![Wiki Lint skill](https://www.remoteopenclaw.com/skills/ar9av/obsidian-wiki/wiki-lint/badges/score.svg)](https://www.remoteopenclaw.com/skills/ar9av/obsidian-wiki/wiki-lint)

HTML

<a href="https://www.remoteopenclaw.com/skills/ar9av/obsidian-wiki/wiki-lint"><img src="https://www.remoteopenclaw.com/skills/ar9av/obsidian-wiki/wiki-lint/badges/score.svg" alt="Wiki Lint skill"/></a>

Wiki Lint FAQ

How do I install the Wiki Lint skill?

Run “npx skills add https://github.com/ar9av/obsidian-wiki --skill wiki-lint” in your terminal. The skill is added to your agent's skills directory and picked up automatically on the next run — no restart or extra configuration needed.

What does the Wiki Lint skill do?

> The full SKILL.md on this page shows the exact instructions the skill gives your agent.

Is the Wiki Lint skill free?

Yes. Wiki Lint is a free, open-source skill published from ar9av/obsidian-wiki. As with any third-party skill, review the source repository before installing it into an agent with sensitive access.

Does Wiki Lint work with Claude Code and OpenClaw?

Yes. Skills use the portable SKILL.md format, so Wiki Lint works with Claude Code, OpenClaw, Codex, Hermes, and any other agent that reads SKILL.md skills.

Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →
Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger →
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger →
Turn any website into LLM-ready data with Firecrawl logoTurn any website into LLM-ready data with Firecrawl

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits plus 10% off through our link.

Try Firecrawl free →
Your own AI agent, running 24/7 with QwikClaw logoYour own AI agent, running 24/7 with QwikClaw

QwikClaw sets up and runs an always-on OpenClaw agent for you. One click, no config files, no server setup.

Deploy now →
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free →

Categories

Command ExecutionPrompt Injection
View on GitHub

Recommended skills

Browse all →
find-skills logo

find-skills

vercel-labs/skills

2.7M installsInstall
frontend-design logo

frontend-design

anthropics/skills

720K installsInstall
grill-me logo

grill-me

mattpocock/skills

701K installsInstall
agent-browser logo

agent-browser

vercel-labs/agent-browser

596K installsInstall
grill-with-docs logo

grill-with-docs

mattpocock/skills

594K installsInstall
vercel-react-best-practices logo

vercel-react-best-practices

vercel-labs/agent-skills

591K installsInstall

Browse

Skills by category

Frontend250Git198Data154Testing120Design105Docs103Security96Automation87Backend76Devops37Productivity29Mcp23

Related guides

Hand-picked reading to help you choose, install, and use agent skills.

GuideBest Openclaw Skills 2026GuideHow To Evaluate Openclaw Skill Before InstallingGuideOpenclaw Skills Complete Guide

Remote OpenClaw

AI agent skills directory, marketplace, and workflow hub for OpenClaw, Hermes Agent, Claude Code, Codex, and MCP-powered operator stacks.

The Agent Stack: weekly agent tooling digest, free.

Explore

  • Home
  • Skills Directory
  • Claude Code Skills
  • Codex Skills
  • MCP Clients
  • Marketplace
  • Hermes Ecosystem
  • Free guide
  • Learn
  • OpenClaw for Creators
  • OpenClaw for Founders
  • Blog
  • The Agent Stack (Digest)

More

  • Submit a Tool
  • Advertise
  • Playbook
  • Free Tools
  • API
  • Shipping
  • Contact
  • Terms
  • Privacy

Know a company that should advertise here? Refer them and earn 10% — up to $300 per referral.

© 2026 Remote OpenClaw
Fazier badgeFeatured on Twelve ToolsFeatured on Wired BusinessRemote OpenClaw - Featured on AI Agents DirectoryListed on Turbo0Featured on Uneed