Lint — Wiki health check
Follow
for format conventions, frontmatter, and links.
Language
Write the artifact in the user's language. Apply correct grammar and any required diacritics or script-specific characters. If the user's language is unclear, ask before generating output.
Project root
This skill writes artifacts at paths relative to the project root (the repo where the work happens), not the agent's current working directory.
- If invoked from inside the project, use the relative paths shown in this skill.
- If invoked from another directory (e.g., a sibling repo, or when the project lives elsewhere), prepend to every artifact path.
- When the project root is ambiguous, confirm with the user via the harness question tool before writing.
Prompting
Follow the project-wide convention in
/
("Skill Prompting Conventions"). Use the harness's structured-question tool —
(Claude Code),
(Codex), or
(OpenCode) — for the decision points below. Use free-form text only where a path/name/value cannot be enumerated.
| Decision point | Why structured | Suggested options |
|---|
| Scope (multi-select) | Affects what is checked | Frontmatter · Links · Drift · Empty subfolders · All |
| Auto-fix safe issues | Hard-to-undo edits | Report-only · Auto-fix · Ask per issue |
Free-form prompts (no structured tool):
No-pause mode: if the user has explicitly disabled mid-skill clarification, convert every structured prompt into an entry under Open questions (or equivalent) and proceed without blocking.
Query language alignment
For semantic lint checks, query in the wiki language. Determine it from
(
or
), then from wiki frontmatter/index if guardrails are absent. Preserve exact names and code identifiers. Reports to the user should remain in the user's language.
Retrieval — prefer QMD when available
Use
QMD (local hybrid search) for the
semantic checks (orphans, missing cross-refs, contradictions). Setup is one-time per repo — see
. For purely structural checks (frontmatter, broken links), grep/glob is fine and faster.
- Use (MCP) or (CLI) when looking for semantic neighbors of a page (orphan candidates, contradiction candidates, missing cross-refs).
- Always pass an line to QMD describing what you are looking for.
- Do not run / automatically — flag the need at the end of the lint if the wiki has changed and the index is stale.
Checklist
Go through the items in order. If the user asked for something specific (e.g., "just the links"), focus on that part.
1. Broken cross-refs
- Relative links that point to nonexistent pages.
- Fix the link OR create the missing page.
2. Orphan pages
- Wiki pages (except , , ) with no inbound link in .
- For each orphan candidate, run a QMD query with
intent: page describing <topic of orphan>
to find which existing pages should link to it.
- If it has valid content → add it to and add cross-refs from semantically-adjacent pages.
- If irrelevant → suggest deletion to the human.
3. Frontmatter
All wiki pages must have:
| Field | Required | Validation |
|---|
| yes | Present and not empty |
| yes | One of: , , , |
| yes | Non-empty list |
| yes | ISO date. Flag if > 90 days |
| yes | Non-empty list |
| yes | One of: , , |
4. raw/ ↔ wiki/sources/ consistency
- Sources without summary — referenced in as ingested but missing .
- Summaries without source — whose points to a nonexistent file.
5. Audience boundary check
- Pages in should not contain business rules (pricing, policies, journeys, monetization). If they do, those rules must move to and the page should keep only a cross-ref.
- Run a QMD query like
intent: business rule (pricing/policy/monetization/cancellation)
against the wiki collection (path-prefixed to ) to spot leakage inside the wiki itself.
- For product/code repos that the project keeps as siblings (and that the project's convention says should hold only technical rules), audit them with / rather than indexing them into QMD. Indexing those repos blurs the "wiki is canonical" boundary by inviting agents to treat product-repo prose as authoritative. Surface any business-rule language found as a candidate for migration into .
6. Missing cross-refs
- For each substantive wiki page, run a QMD query for its title/topic and inspect the top 5-10 hits. Pages that semantically belong together but do not link should be flagged.
- Suggest to the human (do not fix automatically — it may introduce noise).
7. Contradictions
- For each topic that appears on multiple pages, run QMD for a hyde-style query of the canonical statement (e.g.
hyde: The cancellation policy is X hours with Y consequence
) and compare the top hits.
- If pages contradict each other → flag with a note on the page.
8. Outdated status
- that could be (complete and validated content).
- with > 90 days → consider marking as .
9. index.md statistics
- Does the page count match reality?
- Are page descriptions up to date?
10. QMD index health (only if QMD is configured)
- Call (or ).
- If → tell the owner to run .
- If file count in differs significantly from for the wiki collection → tell the owner to run .
Behavior
- Simple fixes (frontmatter, links, ) → do them automatically.
- Content changes → ask the human first.
- Response to the human: focus on the actionable:
- Pending items that need a human decision
- Improvement opportunities
- Numerical summary (total issues / automatic fixes)
- QMD reindex commands the owner needs to run (if any)
- Do not list all automatic fixes in the response — the detail goes into .
Logging
Update
(insert
at the top, after the header):
## [YYYY-MM-DD] lint | health check
### Automatic fixes
- ...
### Pending (human decision)
- ...
### Suggestions
- ...
### QMD reindex needed
- qmd update / qmd embed (only if applicable)