plugins/wiki/skills/lint/SKILL.md
Runs lint checks on project content quality and reports frontmatter, URL, index, and skill issues. Use when the user asks to "lint", "audit content quality", or "check health".
npx skillsauth add bcbeidel/wos lintInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Observe and report on project content quality. Read-only by default —
reports findings without modifying files. The one exception is a
single opt-in additive edit (adding an @AGENTS.md line to CLAUDE.md)
performed only on explicit user confirmation; all other cleanup actions
delegate to other skills.
This skill ships no scripts of its own. lint.py is a plugin-shared
script under plugins/wiki/scripts/lint.py; <plugin-scripts-dir> in
the invocation lines below resolves there. Inputs are validated by
argparse; the script does not call subprocess with shell=True or
take untrusted command strings.
Also fires when the user phrases the request as:
lint.py against the project root (see How to Run)Each phase depends on the previous. Do not offer cleanup actions before presenting results.
# Default: fast, offline checks only
python <plugin-scripts-dir>/lint.py --root .
# Include URL reachability (network-dependent, off by default)
python <plugin-scripts-dir>/lint.py --root . --urls
# Validate a single file
python <plugin-scripts-dir>/lint.py path/to/file.md --root .
# JSON output for programmatic use
python <plugin-scripts-dir>/lint.py --root . --json
# Exit 1 on any issue (including warnings)
python <plugin-scripts-dir>/lint.py --root . --strict
# Override the resolver-recommendation threshold (default: 3)
python <plugin-scripts-dir>/lint.py --root . --resolver-threshold 5
Exit code: 1 if any fail, 0 if only warn. Use --strict to exit 1 on any issue.
Verifies:
name and description are non-emptyOther frontmatter fields (type, sources, confidence, schema-defined
values, etc.) are not enforced here. Project-specific schema validation
belongs in the project's own conventions — wiki/SCHEMA.md lint hooks
in when present.
Checks that every URL in sources is reachable via HTTP. Off by
default (network-dependent, slow). Enable with --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.
Warns when no RESOLVER.md exists at the project root but enough
top-level directories contain ≥2 markdown files with valid YAML
frontmatter (ambient dirs like .git, node_modules, .venv
excluded). The recommendation is to run /build:build-resolver.
The default threshold is 3 conventionful directories — override with
--resolver-threshold N. Routing-artifact quality (when a resolver
does exist) is not checked here — see
Resolver Evaluation.
Summary line first, then table:
2 fail across 15 files
file | sev | issue
docs/context/api/auth.md | fail | Frontmatter 'name' is empty
docs/context/api/another.md | fail | Source URL unreachable
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:
/wiki:setup to
initialize. Confirm with the user before writing any files./wiki:setup
to add the managed section. Confirm before modifying existing content.@AGENTS.md line./build:build-resolver to scaffold a routing table. Show the
conventionful directories the lint check detected so the user can
judge whether the recommendation fits.@AGENTS.md line added to CLAUDE.md,
performed only after user confirmation./wiki:setup to initialize missing project structureSkill quality evaluation is handled entirely by /build:check-skill — lint does
not run automated Python-level skill checks. Invoke /build: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
/build:check-skill to evaluate quality?"
Routing-artifact evaluation is handled entirely by /build:check-resolver —
lint does not audit RESOLVER.md, the AGENTS.md pointer, or
.resolver/evals.yml. When RESOLVER.md exists at the project root, offer:
"Found a resolver — run /build:check-resolver to audit filing coverage,
context actionability, and eval pass rate?"
Do not duplicate the resolver audit dimensions here — check-resolver is the
single source of truth for routing quality, the same way check-skill is for
skills. The lint script's own resolver check is intentionally narrow: it only
warns when no RESOLVER.md exists but the repo crosses the threshold.
--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.Chainable to: /build:check-skill (per-skill quality); /build:check-resolver (routing-artifact audit when RESOLVER.md exists); /build:build-resolver (when threshold is crossed without one)
tools
Use when the user wants to "audit a help skill", "review my plugin index", or "verify my help-skill is up to date". Audits a plugins/<plugin>/skills/help/SKILL.md against the help-skill rubric — coverage, freshness, frontmatter fidelity, plus five judgment dimensions and a trigger-collision check.
tools
Use when the user wants to "scaffold a help skill", "add a /<plugin>:help command", or "build a plugin index skill", or wants to give a plugin an orientation surface that lists its skills and common workflows. Produces a SKILL.md at plugins/<plugin>/skills/help/SKILL.md.
tools
Audits pair-level integrity of a primitive-pair (the artifact `/build:build-skill-pair` produces) by walking the four required artifact slots — principles doc, `build-<primitive>/SKILL.md`, `check-<primitive>/SKILL.md`, and the `primitive-routing.md` registration — and reports cross-artifact issues a per-SKILL.md checker cannot see: missing principles doc, divergent principles paths between halves, absent routing registration, missing build→check handoff. Per-half structural compliance with the unified pattern (`check-skill-pattern.md`) is delegated to `plugins/build/_shared/scripts/check_skill_pattern.py`. Use when the user wants to "audit a skill pair", "review a primitive pair", or "validate the skill pair for X". Not for auditing a single SKILL.md — route to `/build:check-skill`. Not for re-distilling a stale principles doc — route to `/build:build-skill-pair`.
testing
Audit a root-level resolver — verify AGENTS.md pointer, managed-region integrity, filing-table coverage against disk, context-table actionability, and trigger-eval pass rate. Use when the user wants to "audit a resolver", "validate routing table", or "find dark capabilities".