| name | wiki-lint |
| description | Use only when the user explicitly asks to lint or health-check the LLM-Wiki. Never run it as part of ingest or normal wiki work. |
| argument-hint | [mode=<full|scoped>] |
Wiki Lint
Health-check the LLM-Wiki and report findings. This is invocation-gated โ run it ONLY when the user explicitly asks to lint/health-check the wiki. It is NOT part of ingest and must never run automatically during normal wiki operations.
Context
The LLM-Wiki is a compounding, interlinked web of LLM-owned concept pages under LLM-Wiki/. Over time it can drift: orphaned concepts, contradictions between pages, missing cross-references, cohesion decay (a concept split across many thin pages, duplicate/near-synonym pages, near-synonym domains, or a weak/empty domain index hub), and โ because LLMs generate non-Latin (CJK) prose with sub-syllable tokenization โ well-formed-but-wrong syllables (a wrong jamo/๋ฐ์นจ yields a real but wrong word, e.g. ๊ถค์ โ๊ถ์ , ๋์คโ๋์ค), and broken math (a formula written as a backtick code-span, with \(...\)/\[...\] delimiters, or with doubled backslashes like \\phi, instead of Obsidian's $โฆ$/$$โฆ$$ โ it renders as monospace text, not math). Lint surfaces these.
Two layers:
- Structural (deterministic, 0 LLM tokens) โ delegated entirely to
para-zk:audit. Never re-implement these checks here.
- Semantic (the core of this skill) โ a fresh-context read pass over page bodies. The decisive property is context freshness, not model identity: an agent re-reading prose IT generated stays primed (reads intended, not actual) and misses most slips; a reader with no generation context for these pages reliably catches them. So the reader MUST NOT be the agent that wrote the pages (never the wiki-weaver). The skill orchestrator qualifies if it did not itself generate the prose; otherwise spawn a fresh reviewer.
Report-only, with one exception: high-confidence mechanical orthographic slips (a clear non-word with one obvious correction) are fixed in place via update-llm-wiki ... op=replace. Everything ambiguous or semantic (contradictions, missing concepts/cross-refs, data gaps, uncertain corrections) is reported to the user โ never auto-rewritten (auto-rewriting prose re-introduces generation errors). Semantic remediation routes to para-zk:wiki-ingest re-ingest or a manual edit, at the user's discretion.
Argument Routing
| Argument | Mode | Routing |
|---|
mode=full (default) | full | Lint every page under LLM-Wiki/. Bounded: the wiki fits in context at moderate scale; for a large wiki, process pages in bounded batches and chain, always reporting coverage. |
mode=scoped paths=<json-or-comma-list> | scoped | Lint only the listed LLM-Wiki/ pages (e.g. the pages a recent ingest touched). paths is required for scoped. |
mode defaults to full. Reject paths for full. Do not ask the user to resolve invalid arguments; stop with the concrete routing error.
Execution
-
Orient: Run optsidian para-zk:conventions ONCE first for this task, then call optsidian para-zk:describe / optsidian para-zk:describe type=<t> as reference. Use the returned invocation style for subsequent para-zk:* calls โ run them via optsidian or the native obsidian CLI (obsidian para-zk:โฆ), interchangeable; use whichever is on PATH. Confirm the surface exposes para-zk:audit, para-zk:list, para-zk:read-llm-wiki, and para-zk:update-llm-wiki. If the vault is unavailable, stop with the CLI error.
-
Resolve scope: For full, enumerate pages with optsidian para-zk:list type=llm-wiki limit=all. For scoped, use the provided paths (reject if empty).
-
Structural pass (deterministic, free): Run optsidian para-zk:audit limit=all and keep findings on llm-wiki pages โ orphan_wiki_page, upward_wiki_link, broken_link, dangling_reference, idless_reference. These are report-only here (id-less references are separately auto-fixable by the user via para-zk:audit fix=true). Do NOT re-derive them in the semantic pass. (orphan_wiki_page exempts <domain>/index hubs โ they are intentional roots โ so an empty or weak hub is judged in the semantic pass, not here.)
-
Semantic pass (fresh-context read): Read the target pages' bodies and detect, per page and across pages: orthographic/generation slips (malformed CJK/non-Latin syllables); broken math (a formula or symbol inside a backtick code-span, with \(...\)/\[...\] delimiters, or with doubled backslashes like \\phi, instead of Obsidian's $โฆ$/$$โฆ$$ โ it renders as monospace, not math; a backtick span is a formula candidate when its contents include a backslash, a Greek letter, or a math operator, a citation when it matches PZ[...], and code when it is a programming token, so do NOT flag legitimate `PZ[id]` citations or code/identifier spans); cross-page contradictions; concepts that warrant their own page but lack one; missing cross-references between related pages; data gaps; and cohesion (the wiki must read as one interlinked web, not a flat pile):
- Over-fragmentation โ thin single-source pages that should be SECTIONS of a broader concept page (e.g. several motion-prior mechanisms that belong in one "Motion Prior" page), and duplicate / near-synonym concept pages that should merge into one.
- Domain coherence โ near-synonym domains (
RL vs Reinforcement Learning) that should be one; a domain that is a large flat bucket with no organizing structure.
- Hub health โ read each domain's
<domain>/index: it should be a real RELATIONAL MAP of the area (grouped concepts + how they relate), not empty (never filled by Synthesize) or a bare link list; and every concept page in a domain should be reachable from that domain's index. (This complements the structural orphan_wiki_page, which flags any page with no incoming wiki link; here you instead judge whether the domain's index โ itself exempt from that check โ actually maps to every leaf.)
Choose the reader by context-freshness:
- If you (the orchestrator) did NOT generate these pages this session, read them directly:
optsidian para-zk:read-llm-wiki title=<title> key=body.
- If the page set is large (a full sweep on a big wiki) or you orchestrated their generation this session, spawn ONE fresh general-purpose reviewer agent (clean context, no generation history) and have it drive the vault through
mcp__optsidian__command_run (a sandboxed sub-agent cannot reach Obsidian over Bash). Pass it the page list and this report/fix policy.
- Never let the wiki-weaver (or any agent that just wrote these pages) lint its own output.
-
Fix policy: Fix ONLY high-confidence mechanical orthographic slips โ a clear non-word with one obvious correction from context โ in place: optsidian para-zk:update-llm-wiki title=<title> key=body op=replace match=<garbled> with=<fixed> by=<model-id>. Report (do NOT fix) every ambiguous correction and every semantic finding (contradiction, missing concept page, missing cross-reference, data gap). Broken math is REPORTED, not auto-fixed: deciding whether a backtick span is a formula (vs a legitimate `PZ[id]` citation or code/identifier span) and how to re-delimit it (inline $โฆ$ vs display $$โฆ$$, single backslashes) needs judgment, so it routes to a para-zk:wiki-ingest re-ingest or a manual edit. Never op=set a recomposed body to "fix" semantics โ that re-runs generation and can introduce new slips.
-
Inject by: Use the orchestrator's current model id for by=<model-id> on any op=replace fix.
Report
Return a structured report:
- mode + coverage: which pages were read (and, for a chunked large sweep, which remain) โ never silently truncate.
- structural (from
para-zk:audit): the wiki findings by code, with paths.
- fixed (auto-applied): page, and the
<garbled> โ <fixed> orthographic correction for each.
- needs decision (report-only): ambiguous orthographic corrections; broken-math findings (a formula in a backtick code-span,
\(...\)/\[...\] delimiters, or doubled backslashes, instead of $โฆ$/$$โฆ$$); semantic findings (contradictions, missing concept pages, missing cross-references, data gaps); and cohesion findings (over-fragmentation, duplicate / near-synonym pages, near-synonym domains, weak / empty / unreachable index hubs) โ each with page references and a one-line suggestion. Cohesion remediation is generally a para-zk:wiki-ingest re-plan (which decides the page set / domains / hubs globally), not a manual edit; minor fixes (add a cross-link, fill an empty hub) can be done directly.
Do not commit, do not edit source notes, and do not auto-rewrite prose.