From wiki
Runs lint checks on project content quality and reports frontmatter, URL, index, and skill issues. Use when the user asks to "lint", "run lint", "check lint", "check health", "validate documents", "run validation", "audit content quality", "review documents", "check coverage", "check freshness", "run health check", or "what needs attention".
How this skill is triggered — by the user, by Claude, or both
Slash command
/wiki:lintThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Observe and report on project content quality. Read-only -- reports but
Observe and report on project content quality. Read-only -- reports but
does not modify any files (unless --fix is used for index regeneration).
# Default: run all checks including URL reachability
python <plugin-scripts-dir>/lint.py --root .
# Skip URL reachability checks (fast, offline-friendly)
python <plugin-scripts-dir>/lint.py --root . --no-urls
# Validate a single file
python <plugin-scripts-dir>/lint.py path/to/file.md --root . --no-urls
# JSON output for programmatic use
python <plugin-scripts-dir>/lint.py --root . --json
# Auto-fix out-of-sync or missing _index.md files
python <plugin-scripts-dir>/lint.py --root . --fix
# Exit 1 on any issue (including warnings)
python <plugin-scripts-dir>/lint.py --root . --strict
# Custom word count threshold for context files (default: 800)
python <plugin-scripts-dir>/lint.py --root . --context-max-words 500
Exit code: 1 if any fail, 0 if only warn. Use --strict to exit 1 on any issue.
Verifies:
name and description are non-emptytype: research documents have a non-empty sources listrelated fieldsWarns when context files exceed 800 words (configurable via --context-max-words).
Artifacts and _index.md files are excluded.
Checks that every URL in sources is reachable via HTTP.
Skipped with --no-urls. URLs returning 403/429 are downgraded to
warn — these sites likely block automated checks, not dead links.
Checks that local file paths in related exist on disk.
_index.md missing or out of sync_index.md has no area description (preamble)Summary line first, then table:
2 fail, 1 warn across 15 files
file | sev | issue
docs/context/api/auth.md | fail | Frontmatter 'name' is empty
docs/context/api/_index.md | warn | Index has no area description (preamble)
With --json, output is a JSON array of objects:
[
{
"file": "docs/context/area/topic.md",
"issue": "Frontmatter 'name' is empty",
"severity": "fail"
}
]
A clean project produces:
All checks passed.
After presenting audit results, offer to help resolve actionable warnings:
Missing AGENTS.md or CLAUDE.md: Offer to run /wos:setup to
initialize. Confirm with the user before writing any files.
AGENTS.md missing WOS markers: Offer to run /wos:setup to add
the WOS-managed section. Confirm before modifying existing content.
CLAUDE.md missing @AGENTS.md reference: Offer to add the reference.
Do not rewrite CLAUDE.md contents — only add the @AGENTS.md line.
403/429 URL warnings: Present each blocked URL to the user and ask them to verify it manually. For each URL:
sources:
list. Show the proposed edit and get approval before writing.sources:
entry. Verify the new URL with python <plugin-scripts-dir>/check_url.py URL
before writing.Process URLs one at a time. Do not batch-ask about all URLs at once.
--fix which only regenerates _index.md files)/wos:setup to initialize missing project structuredocs/ directory) exits 0 with no issuesWhen the audit encounters skill directories, the automated Python checks (name format, description length/voice, body size, instruction density) appear in the standard issue table as usual.
For LLM-level quality evaluation, invoke /wos:check-skill on each skill
directory found and incorporate its findings into the report. Do not perform
independent skill quality judgment here — check-skill is the single source of
truth for what good looks like. Delegating keeps criteria consistent and prevents
drift between the two skills.
If the user ran lint on a specific skill path, pass that path to check-skill.
If lint ran across the full project, offer: "Found N skill(s) — run
/wos:check-skill to evaluate quality?"
--strict promotes all warnings to failures, which is appropriate for CI gating. Using it to artificially block progress without fixing the underlying issues is not.Receives: Project root path (defaults to CWD); optional flags (--no-urls, --strict, --fix) Produces: Validation report listing warnings and failures by file; read-only — no modifications made Chainable to: —
npx claudepluginhub bcbeidel/toolkit --plugin wikiValidates skills, agents, or plugins for token complexity, broken links, frontmatter issues, and structural problems. Invoke via /lint <path-to-skill-or-plugin>.
Audits documentation against source code using git-based staleness detection. Run with no args for smart check or specify a path. Supports full audit, auto-fix, and check-only modes.
Audits a research wiki directory for seven issue classes: orphan sources, missing hubs, broken wikilinks, stale claims, contradictions, open questions, and missing comparisons. User-triggered read-mostly linting.