From memory-mason
Runs 14 health checks on an Obsidian knowledge base: broken wikilinks, orphan pages, stale articles, and more. Reports issues by severity.
How this skill is triggered — by the user, by Claude, or both
Slash command
/memory-mason:mmlThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Run fourteen health checks on the knowledge base and report all findings by severity.
Run fourteen health checks on the knowledge base and report all findings by severity.
This command is operational only. Do not write /mml, /memory-mason:mml, or their execution chatter back into the vault.
Before any other reasoning, resolve vault config in this priority order:
./.env./memory-mason.json~/.memory-mason/.env~/.memory-mason/config.jsonResolve:
Use the source that provides the vault path.
Subfolder rules:
.env file, use MEMORY_MASON_SUBFOLDER from that same file when present, otherwise default to ai-knowledge.memory-mason.json or ~/.memory-mason/config.json, use its subfolder.Do not claim config is missing until you have attempted all four locations above. If none provide a vault path, fail fast with an explicit error that names every location checked.
Use these paths:
_raw/ or _meta/ as knowledge articles, except for the explicit checks below against _meta/manifest.json and _meta/context.md.[[target]] from article content.{subfolder}/_raw/ as valid source references. Links starting with bare _raw/ (missing subfolder prefix) are flagged by Check 13.[[foo]] as format violations handled by Check 13.index.md, find all [[wikilinks]].{subfolder}/_raw/. Skip bare _raw/ links (Check 13 handles missing prefix)./. Check 13 handles them.{subfolder}/, strip the prefix and check whether the target exists at {vault}/{subfolder}/{remainder}.md.{subfolder}/, Check 13 or 14 handles them.ERROR [broken_link] file.md: Broken link: [[target]] - target does not exist
atlas/, concepts/, and synthesis/, count inbound links from other articles in those same content directories.WARN [orphan_page] file.md: No other articles link to [[path/slug]]
ingested map of YYYY-MM-DD -> hash.YYYY-MM-DD as the source key.ingested.WARN [orphan_source] _raw/YYYY-MM-DD/: Not yet compiled
state.json ingested entries, compare the current raw capture hash with the stored hash.WARN [stale_article] _raw/YYYY-MM-DD/: File changed since last compilation
/mmc.SUGGESTION [missing_backlink] a.md: [[a/slug]] links to [[b/slug]] but not vice versa
SUGGESTION [sparse_article] file.md: Only N words (minimum recommended: 200)
For each entry under {vault}/{subfolder}/_raw/:
001.md, 002.md, and so on.meta.json for size calculations.Report captures over 500KB:
WARN [large_daily_folder] _raw/YYYY-MM-DD/: Total {size}KB across {n} chunks. Consider running /mmc.
Report captures over 2MB as error:
ERROR [oversized_daily_folder] _raw/YYYY-MM-DD/: Total {size}MB across {n} chunks. Run /mmc immediately.
SUGGESTION [missing_manifest] _meta/manifest.json: No source-to-page manifest yet. Run /mmc to create lineage metadata.
sources object.sources[sourceKey] entry:
hash must be a stringcompiled_at must be a stringpages_created and pages_updated must be arrays of strings if presentstate.json and _meta/manifest.json and the hashes differ, report:WARN [manifest_drift] _meta/manifest.json: Source key {sourceKey} hash differs from state.json
ERROR [manifest_page_missing] _meta/manifest.json: Listed page {path} does not exist
SUGGESTION [missing_context] _meta/context.md: No session context yet. Run /mmc to create one.
type: metatitle: "Session Context"updated:WARN [invalid_context] _meta/context.md: Missing required frontmatter field {field}
last_compile exists in state.json and context.md's updated timestamp is older than last_compile, report:WARN [stale_context] _meta/context.md: Session context is older than the most recent compilation
concepts/, search for [!contradiction] callout blocks.evergreen status.WARN [unresolved_contradiction] concepts/file.md: Contains N unresolved [!contradiction] callout(s)
concepts/, count outbound [[...]] wikilinks in the body (excluding frontmatter and _raw/ source references).SUGGESTION [isolated_concept] concepts/file.md: No outbound wikilinks — consider adding related concept links
SUGGESTION [thin_moc] atlas/file.md: Only N concept links (minimum recommended: 3)
concepts/, search for [!gap] callout blocks.SUGGESTION [knowledge_gap] concepts/file.md: Contains [!gap] callout — awaiting enrichment from future sessions
All wikilinks must include the {subfolder}/ prefix followed by the directory path. This ensures Obsidian resolves links within the correct project when multiple subfolders share a vault.
index.md:
[[slug]] — always an error. Search for matching files and suggest the full {subfolder}/directory/slug form.[[concepts/slug]], [[atlas/slug]], [[synthesis/slug]], [[_raw/...]] — error. The link must be [[{subfolder}/concepts/slug]], etc.ERROR [short_form_link] file.md: [[foo]] should be [[{subfolder}/concepts/foo]] — use full {subfolder}-prefixed paths
ERROR [ambiguous_short_form_link] file.md: [[foo]] matches [[{subfolder}/concepts/foo]], [[{subfolder}/atlas/foo]] — use an explicit {subfolder}-prefixed target
ERROR [missing_subfolder_prefix] file.md: [[concepts/foo]] should be [[{subfolder}/concepts/foo]] — add {subfolder}/ prefix
ERROR [missing_subfolder_prefix] file.md: [[_raw/2026-05-04/001]] should be [[{subfolder}/_raw/2026-05-04/001]] — add {subfolder}/ prefix
index.md for wikilinks that start with a subfolder prefix OTHER than {subfolder}/.ERROR [cross_project_link] file.md: [[other-project/concepts/foo]] references a different subfolder — remove or replace with a local concept
Return results exactly in this structure:
## Knowledge Base Lint Report
### Errors (must fix)
- ERROR [broken_link] ...
- ERROR [short_form_link] ...
- ERROR [ambiguous_short_form_link] ...
- ERROR [missing_subfolder_prefix] ...
- ERROR [cross_project_link] ...
- ERROR [oversized_daily_folder] ...
- ERROR [manifest_page_missing] ...
### Warnings (should fix)
- WARN [orphan_page] ...
- WARN [large_daily_folder] ...
- WARN [unresolved_contradiction] ...
### Suggestions (nice to fix)
- SUGGESTION [sparse_article] ...
- SUGGESTION [isolated_concept] ...
- SUGGESTION [thin_moc] ...
- SUGGESTION [knowledge_gap] ...
### Summary
- Errors: N
- Warnings: N
- Suggestions: N
If no issues are found, output exactly:
✓ Knowledge base is healthy. No issues found.
npx claudepluginhub s-gryt/memory-mason --plugin memory-masonRuns vault health diagnostics in 8 categories including schema compliance, orphans, links, three-space boundaries, stale notes, MOC coherence. Quick/full/three-space modes yield FAIL/WARN/PASS reports with fixes.
Read-only health check for Obsidian vault: finds broken links, orphaned notes, tag inconsistencies, and wiki issues, then reports prioritized fixes.
Health checks an Obsidian wiki vault for orphan pages, dead wikilinks, frontmatter gaps, stale claims, missing cross-references, and empty sections. Optionally generates Dataview dashboards and canvas maps. Runs on phrases like "lint", "health check", "clean up wiki", "wiki audit".