obsidian-lint-light
Read-only audit of an Obsidian vault — broken wikilinks, orphan/stale sources, SHA256 drift, malformed frontmatter, provenance drift.
Skill by DoxaLogosGit
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/doxalogosgit-obsidian-lint-light
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, security
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/obsidian-lint-light
What's inside
- Skill name
obsidian-lint-light- Description
- Read-only audit of an Obsidian vault — broken wikilinks, orphan/stale sources, SHA256 drift, malformed frontmatter, provenance drift. Optionally rebuilds project and master indexes. Reports issues to _meta/lint-report-<timestamp>.md without auto-fixing anything else.
- License
- MIT
- Instructions
- 65 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (3)
- SKILL.md
- lint.py
- test_lint_config.py
SKILL.md (first lines)
# obsidian-lint-light Audit the vault for structural issues. Lint **reports**; it does not auto-fix content. The single exception is the optional index-rebuild step, which regenerates fully agent-managed `index.md` files from current note state. ## Implementation The audit logic lives in [`lint.py`](./lint.py) — a checked-in script. Don't regenerate the workflow inline; invoke the script: ```bash python3 .agents/skills/obsidian-lint-light/lint.py [scope] [--rebuild-indexes] ``` The script auto-discovers the vault root by walking up from its own location until it finds an `AGENTS.md` or `CLAUDE.md` next to a `_meta/` directory, so it works regardless of the current working directory. It reads `audited_roots` and `index_rollup_roots` from `_meta/vault-config.yml`. ## Inputs - **Scope** (optional positional arg): vault-relative project path (e.g., `Projects/Example/Widget`). Omit for a full-vault audit. - **`--rebuild-indexes`** (optional flag): also regenerate per-folder `index.md` files in scope plus the vault-wide `_meta/index.md` after the audit. Off by default. - **`--keep N`** (optional, default `5`): after writing the new report, prune older `_meta/lint-report-*.md` files so only the `N` most recent remain. Pass `--keep 0` to disable pruning entirely. ## What It Checks Per `.md` note (excluding any underscore-prefixed directory — `_sources/`, `_reference/`, etc. — and `index.md`). Notes in `_`-prefixed dirs are not audited but remain valid wikilink targets, so links *into* them (e.g. sermon → Bible verse) still resolve: 1. **Frontmatter validity** — parses as YAML; `owner` is `human`/`agent`/`shared`/absent; `sources:` entries are well-formed; `updated:` is ISO 8601; `ingested_uuids:` entries have `uuid`+`message_count`+`last_ingested`. 2. **Wikilinks** — every `[[Target]]`, `[[Target|Alias]]`, `[[Target#heading]]` resolves to a note in the vault (heading-only `[[#Section]]` is skipped). 3. **Source existence + SHA256 drift** — every `sources:` entry's file exists at the recorded path under the project's `_sources/`; if `sha256:` is recorded, it matches current file content. Drift is a re-ingest signal, not an error. 4. **Orphan source files** — every file in any `_sources/` is referenced by at least one note in the same project folder. 5. **Provenance drift** — if a note declares `provenance:` fractions, observed marker counts (`^[inferred]`, `^[ambiguous]`) over paragraphs are within 10% of declared. Code blocks are excluded. Reports are marked "approximate." 6. **Index drift** (only when `--rebuild-indexes` is NOT set) — each folder's `index.md` matches current note titles and `summary:` lines. 7. **Inferred-claim audit list** — every sentence containing `^[inferred]` or `^[ambiguous]` is collected for human spot-check. ## What It Optionally Writes When `--rebuild-indexes` is passed: - **Per-folder `<folder>/index.md`** for every folder in scope that contains at least one note. `owner: agent`, fully regenerated each run. - **Vault-wide `_meta/index.md`** always reflects the entire vault (not just the scope), grouped by folder path. Format and rules match step §7 of [`obsidian-ingest`](../obsidian-ingest/SKILL.md). ## Output A timestamped report at `_meta/lint-report-<YYYY-MM-DD-HHMMSS>.md` containing summary counts, per-category issue lists, and the inferred-claim audit list. The script also prints a one-line terminal summary: ``` Lint complete — <scope>. Issues: <N>. Report: _meta/lint-report-<timestamp>.md [Rebuilt indexes: <project-count> folders + 1 master] ← only when --rebuild-indexes ``` ## What This Skill Will Never Do - Modify note content (frontmatter, body, anything inside a note) - Modify or delete files in `_sources/` - Auto-correct typos, malformed YAML, broken wikilinks, or any other flagged issue - Rebuild indexes unless `--rebuild-indexes` is explicitly passed - Touch `_meta/schema.md`, `_meta/design-log.md`, or any other vault metadata file beyond writing its own timestamped report (and indexes when opted in) The contract: **report issues, let the human fix them**. Index regeneration is the only opt-in write, and only because indexes are fully agent-managed derived artifacts with no human authorship. ## When to Edit the Logic Edit `lint.py` directly. Bug fixes, new check categories, or output-format changes belong there. This SKILL.md describes the contract; the script implements it. After editing, commit both files together so the contract and implementation stay in sync.
From DoxaLogosGit/obsidian-agent-vault, MIT.
More from DoxaLogosGit/obsidian-agent-vault
- 0.565score
obsidian-youtube
DoxaLogosGit
Ingest one or more YouTube video links into the Obsidian vault.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-fetch-export
DoxaLogosGit
Move a Claude data export from ~/Downloads into _sources/, skipping content that is already there or already ingested.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-ingest
DoxaLogosGit
Universal entry point for ingesting any source file from the vault-root _sources/ folder into derived Obsidian notes.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-onboard
DoxaLogosGit
Set up an existing Obsidian vault for the vault skills after `install.py into`.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-retire
DoxaLogosGit
Retire and delete sources in _sources/ whose content already reached notes, so _sources/ does not grow without limit.
SkillAFreshness: AClaude Code +9 - 0.561score
obsidian-claude-export-ingest
DoxaLogosGit
INTERNAL — called by obsidian-ingest.
SkillAFreshness: AClaude Code +9 - 0.559score
obsidian-files-backlog
DoxaLogosGit
Backfill chat files into Claude conversations that were ingested before file support existed.
SkillAFreshness: AClaude Code +9 - 0.559score
obsidian-status
DoxaLogosGit
Show when the vault was last ingested.
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 26, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from DoxaLogosGit
- 0.565score
obsidian-fetch-export
DoxaLogosGit
Move a Claude data export from ~/Downloads into _sources/, skipping content that is already there or already ingested.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-ingest
DoxaLogosGit
Universal entry point for ingesting any source file from the vault-root _sources/ folder into derived Obsidian notes.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-onboard
DoxaLogosGit
Set up an existing Obsidian vault for the vault skills after `install.py into`.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-retire
DoxaLogosGit
Retire and delete sources in _sources/ whose content already reached notes, so _sources/ does not grow without limit.
SkillAFreshness: AClaude Code +9 - 0.565score
obsidian-youtube
DoxaLogosGit
Ingest one or more YouTube video links into the Obsidian vault.
SkillAFreshness: AClaude Code +9 - 0.561score
obsidian-claude-export-ingest
DoxaLogosGit
INTERNAL — called by obsidian-ingest.
SkillAFreshness: AClaude Code +9
Cite this page
obsidian-lint-light skill. Agent Mart. https://agentmart.dev/skills/doxalogosgit-obsidian-lint-light (last updated 2026-10-24)