semantic-wiki-review
Skill4 starsChanged 5 months agoMITView on GitHub
Use when the user asks for a *content* review of the wiki — contradictions between pages, outdated claims overtaken by newer sources, weakly supported assertions, missing cross-references that the structural linter cannot detect. Distinct from `wiki-lint` (structural, deterministic, CI-gated).
In this repository16 other files it gives its agents.
- acquire-sourcesSkill
- add-to-librarySkill
- brainstorming-researchSkill
- drafting-manuscriptSkill
- drift-reportSkill
- executing-research-planSkill
- finishing-a-research-projectSkill
- grant-finderSkill
- ingest-sourceSkill
- literature-reviewSkill
- requesting-peer-reviewSkill
- scaffold-research-projectSkill
- using-research-powersSkill
- wiki-graphSkill
- wiki-lintSkill
- writing-research-planSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 3 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 17
Not a gate. Manual trigger only.
- Distinctive: line 23
After a batch of new sources was ingested and earlier syntheses may be stale.
- Very specific: line 24
Before promoting a status: review page to status: stable.
- Distinctive: line 168
No automatic fix — the report is advisory.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Semantic Wiki Review
scripts/lint-wiki.py proves the wiki is structurally well-formed:
frontmatter present, wikilinks resolve, no orphans. It cannot tell you
whether two source pages contradict each other, whether a synthesis still
holds after a newer source was ingested, or whether a claim lacks citation
backing. That work needs reading — and that is what this skill is for.
Announce at start: "Using semantic-wiki-review to audit the wiki for content issues."
Not a gate. Manual trigger only. Runs alongside the workflow, never blocks it.
When to use
- User asks: "are the wiki pages consistent?", "any contradictions?", "which synthesis pages are stale?"
- After a batch of new sources was ingested and earlier syntheses may be stale.
- Before promoting a
status: reviewpage tostatus: stable. - As a recurring sanity pass (monthly, before manuscript submission).
NOT for: structural lint (use wiki-lint), single-page proofreading,
or fact-checking against external sources (that is a literature task).
Scope
Pick a scope before reading — full wiki audit is expensive. Defaults:
| Scope | When |
All status: stable pages | Before manuscript submission |
| All pages touching topic X | After ingesting a major new source on X |
| All syntheses citing source Y | After source Y was substantially revised |
| Recently-changed pages (last N days) | Periodic check |
State the scope to the user before reading.
Checklist
- Determine scope — confirm with user if ambiguous.
- List in-scope pages — read each fully (no skim).
- Build a claim ledger as you read — one line per substantive claim,
tagged with
[[source-key]]and page-of-origin. - Flag issues in five categories. Each has a recording channel — where
the finding is written so downstream skills (lint, drafting) can act on it:
- Contradictions — two pages assert incompatible things. → Record as a
typed
relations:edge withtype: contradictson the pages themselves (both directions),confidence: inferredunless a verbatim quote grounds it, plus abecause. This is NOT areview_flag(a flag is about one page's own content; a contradiction is a relation between two). - Stale syntheses — a synthesis page relies on sources that have since
been complemented or refuted by newer ingests. →
review_flagskind: stale. - Unsupported claims — assertions without a
[[source]]link or@citekeyin the text. →review_flagskind: weak-support(ormissing-citationwhen a specific citation is simply absent). - Overstatement — a claim stronger than the source supports (superlatives,
precise figures without consensus). →
review_flagskind: overstatement. - Missing cross-references — pages discussing the same entity / concept without linking each other. → Report only (a linking suggestion, not a content defect); the user or a follow-up adds the wikilink.
- Suspect / aggregator citations — citations whose source URL points to aggregator hosts (academia.edu, researchgate.net) or sources flagged as suspect/pseudoscientific. → Report only. See MCP Optimisation below.
- Contradictions — two pages assert incompatible things. → Record as a
typed
- Record structured findings on the affected pages — for the content
categories above, append a
review_flagsentry to the flagged page's frontmatter (see "Recording review flags" below), and add/strengthen therelations: contradictsedges for contradictions. This is the ONLY editing the audit does: frontmatter metadata only, never the page prose. Existing open flags on a page are left in place (dedupe bykind+detail); do not silently reopen astate: resolvedflag. - Write a review report to
knowledge/_meta/semantic-review-<YYYY-MM-DD>.md(frontmatter:type: synthesis,status: draft,author: llm) — the human-readable digest of the same findings, plus the report-only categories. - Never touch page prose or
status. The flags are advisory metadata; the user (or a follow-up skill invocation) decides which issues to fix, and only the user promotesstatus. Resolving a flag means setting itsstate: resolved(with aresolved:date) once the concern is addressed — not deleting it.
Report format
---
title: "Semantic Wiki Review — <scope> — <date>"
type: synthesis
created: YYYY-MM-DD
updated: YYYY-MM-DD
status: draft
author: llm
---
## Scope
<one sentence>
## Pages audited
- [[page-1]]
- [[page-2]]
- ...
## Contradictions
| Pages | Issue | Suggestion |
|-------|-------|------------|
| [[a]] vs [[b]] | A claims X, B claims ¬X | Resolve in synthesis or note dispute |
## Stale syntheses
| Page | Outdated by | Why |
## Unsupported claims
| Page | Claim | Suggested source / mark as opinion |
## Missing cross-references
| Page | Should link | Why |
## Suspect / aggregator citations
| Page | URL | source_class | Primary source known? | Suggested action |
## Summary
<2-3 sentences: how healthy is the wiki, what to prioritise>Recording review flags
Single-page content findings are written to the flagged page's own frontmatter
as a review_flags entry (schema: schema/knowledge-frontmatter.schema.json).
This is a distinct axis from status (human-owned maturity — never touched
here) and from relations: contradicts (page↔page conflicts). A page can be
status: stable and carry an open flag at the same time — that is exactly the
case worth surfacing: a blessed page a newer source now undercuts.
# appended to knowledge/synthesis/chronologie-debatte.md frontmatter
review_flags:
- kind: overstatement # overstatement | weak-support | stale | missing-citation | open-question
detail: "Dates the destruction 'securely' to 925 BCE; the cited source says 'probably'."
raised_by: semantic-wiki-review
detected: 2026-07-03
state: open # open | resolvedWhy on the page and not only in the dated report:
- It gates drafting.
drafting-manuscriptrefuses to draft from a page with an open flag without a logged override — the finding cannot be silently skipped. A detached report can. - It travels with the page — visible in Obsidian and to any later reader,
not buried in a
_meta/file dated weeks ago. - It is auditable and resolvable in place —
state: resolved+ aresolved:date closes it while keeping the trail;wiki-lintreports the open ones.
The dated report (step 6) stays as the human-readable digest and is the only place the report-only categories (missing cross-references, suspect citations) live. Findings and report are two views of the same audit — keep them consistent.
MCP Optimisation (recommended)
If
dao-searxng-mcp(seedocs/recommended-mcps.md) is available in the project, use itssource_classdetection for every cited URL. Otherwise judge aggregator status manually via hostname heuristic (academia.edu, researchgate.net, scribd.com, …).
Procedure:
- Collect every external URL from the audited source / synthesis pages (frontmatter
sources:or body links). - Per URL: call
fetch_url/web_searchviadao-searxng-mcp; the tool annotates withsource_class(primary_publisher|academic_repository|preprint_server|aggregator|suspect|grey_lit_or_unknown). - URLs with
source_class=aggregatororsuspectgo into the new "Suspect / aggregator citations" issue category, with a note on whether the primary source (DOI) is known. - No automatic fix — the report is advisory; the user decides replacement or retention with rationale.
Red Flags
| Thought | Reality |
| "I can check this in my head" | Above 5 pages impossible — keep a ledger. |
| "The linter already checked" | The linter checks structure, not content. Different job. |
| "I'll fix issues as I find them" | No — the audit repairs nothing. It records review_flags (frontmatter) and writes the report; fixing prose is a separate step. |
| "Stable means correct" | Stable means human-reviewed at time X. It can still be stale — flag it, don't demote it. |
| "A contradiction is a page flag" | No — a conflict between two pages is a relations: contradicts edge; a review_flag is about one page's own content. |
Key Principles
- Metadata-only, never prose. The audit records
review_flagsandrelationson pages and writes the dated report — it never edits page prose and never changesstatus. Prose repair is a separate, later step. - One report per run, dated, in
knowledge/_meta/; flags live on the pages. - Scope before depth. 10 pages honestly read beats 100 skimmed.
- No gate. This is a tool, not a precondition for other skills.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

