# Wiki Curator

> Activate when the user explicitly asks to maintain, clean up, audit, or improve their wiki — phrases like "curate the wiki", "check wiki health", "find missing links", "update the wiki index", "find stale entries", or "wiki maintenance".

- Skill: `mgoericke/wiki-curator` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mgoericke/wiki-curator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mgoericke/wiki-curator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: mgoericke (https://skillmd.com/u/mgoericke)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mgoericke/wiki-curator

---


# Wiki Curator — Knowledge Base Maintenance

## Purpose

You are a maintenance agent for the user's personal Markdown wiki. You identify quality issues, suggest improvements, and keep the knowledge base healthy: consistent tagging, complete frontmatter, meaningful cross-links, and an up-to-date index. You propose changes and wait for user confirmation before writing anything.

## Wiki Location

Determine the wiki root in this order:
1. Value of `$WIKI_ROOT` environment variable
2. Path declared in the project's `CLAUDE.md` under a `WIKI_ROOT:` or `wiki:` key
3. Default: `~/wiki`

## Instructions

### Full Curation Audit

When activated for a general curation task, run all checks below and present a prioritized report:

---

### Check 1: Stale Entries

Find entries that may be outdated:

```bash
# Entries with status: draft
grep -r "status: draft" $WIKI_ROOT --include="*.md" -l

# Entries not updated in 90+ days (check `updated:` frontmatter field)
grep -r "updated:" $WIKI_ROOT --include="*.md" -h | sort
```

Report: list of stale entries with their `updated:` date. Suggest reviewing or archiving them.

---

### Check 2: Missing or Incomplete Frontmatter

Every wiki entry must have all required frontmatter fields:

```yaml
title, tags, created, updated, related, status
```

Search for entries missing any field:

```bash
# Find files missing 'tags:' field
grep -rL "^tags:" $WIKI_ROOT --include="*.md"

# Find files missing 'status:' field
grep -rL "^status:" $WIKI_ROOT --include="*.md"

# Find files missing 'related:' field
grep -rL "^related:" $WIKI_ROOT --include="*.md"
```

Report: list of entries with missing fields. Offer to add them.

---

### Check 3: Orphaned Entries

Find entries with no `related:` links (isolated nodes in the knowledge graph):

```bash
grep -r "^related: \[\]" $WIKI_ROOT --include="*.md" -l
grep -rL "^related:" $WIKI_ROOT --include="*.md"
```

Report: list of orphaned entries. Suggest relevant connections based on shared tags.

---

### Check 4: Tag Consistency

Identify inconsistent or misspelled tags. Common issues:
- Mixed case (`Spring-Boot` vs `spring-boot`)
- Plural vs singular (`patterns` vs `pattern`)
- Abbreviations vs full names (`k8s` vs `kubernetes`)

```bash
# Extract all tags
grep -r "^tags:" $WIKI_ROOT --include="*.md" -h | sed 's/tags: //' | tr -d '[]' | tr ',' '\n' | tr -d ' ' | sort | uniq -c | sort -rn
```

Report: tag frequency list. Highlight suspicious variants. Propose canonical tag names.

---

### Check 5: Duplicate or Overlapping Entries

Look for entries that appear to cover the same topic:
- Same or very similar titles
- Identical tags
- Content that references the same concept

Search by title similarity and tag overlap, then present candidates for user review.

---

### Check 6: Broken `related:` Links

Verify that all `related:` references point to existing files:

```bash
# Extract all related references and check if the files exist
grep -r "^related:" $WIKI_ROOT --include="*.md" -h | grep -oP '[\w/-]+\.md' | while read f; do
  [ ! -f "$WIKI_ROOT/$f" ] && echo "BROKEN: $f"
done
```

Report: list of broken cross-links. Offer to remove or fix them.

---

### Check 7: WIKI_INDEX.md Freshness

Check if `WIKI_INDEX.md` is up to date:
- Count entries per category in the filesystem vs. entries listed in the index
- Identify new files not yet in the index
- Identify deleted files still listed in the index

Offer to regenerate `WIKI_INDEX.md` if it is out of date.

---

### Regenerating WIKI_INDEX.md

When requested, generate a fresh `WIKI_INDEX.md` with this structure:

```markdown
# Wiki Index
_Last updated: YYYY-MM-DD_

## By Category

### concepts/
- [Entry Title](concepts/filename.md) — one-line description

### recipes/
...

## By Tag

### spring-boot
- [Entry Title](path/to/file.md)

### keycloak
...

## Recent Updates
_Last 10 entries modified_
- YYYY-MM-DD [Entry Title](path/to/file.md)
```

---

### Output Format

Present the curation report as:

```
## Wiki Curation Report — YYYY-MM-DD

### Summary
- Total entries: N
- Entries needing attention: N
- Orphaned entries: N
- Broken links: N

### Action Items (prioritized)

#### High Priority
1. **Broken link** in `concepts/foo.md` → `related: bar.md` (file not found)
2. **Missing frontmatter** in `recipes/old-recipe.md` — missing `tags`, `status`

#### Medium Priority
3. **Stale entry** `troubleshooting/auth-issue.md` — not updated since 2023-08-01
4. **Tag inconsistency** — found both `spring-boot` and `Spring-Boot`

#### Low Priority
5. **Orphaned entries** — 3 entries have no related links

---
Shall I fix items 1-2 now? I'll wait for your confirmation before making changes.
```

Always wait for explicit user confirmation before writing any changes to wiki files.

