Orchestrates the recurring daily-maintenance loop for the PM wiki — registry-driven multi-source sweep, ingest, daily brief, brief rotation, and a health check — with explicit interactive-vs-autonomous mode handling.
Installs into .claude/skills of the current project.
Are you the author of Llm Wiki Maintain?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/anh-chu-llm-wiki-maintain)
---
name: llm-wiki-maintain
description: Orchestrates the recurring daily-maintenance loop for the PM wiki — registry-driven multi-source sweep, ingest, daily brief, brief rotation, and a health check — with explicit interactive-vs-autonomous mode handling.
when_to_use: Use for "daily maintenance", "run the daily wiki", "morning sweep", "ingest all sources and brief me", "do the daily run", "maintain the wiki", or any scheduled/autonomous run that should sweep all sources and produce a brief. For a brief alone use llm-wiki-brief; for a single ingest use core llm-wiki-pm.
allowed-tools: Read Grep Bash Edit Write
---
# LLM Wiki Maintain
The recurring maintenance loop, as one defined operation. "Every day: sweep all
sources → ingest what's new → produce a brief → keep the wiki tidy" was
previously improvised step-by-step on faith; this skill makes the order, the
brief lifecycle, and the autonomous-mode behavior explicit.
This skill **orchestrates** — it does not reimplement. The actual work is done
by the core `llm-wiki-pm` skill (orient, ingest, lint) and `llm-wiki-brief`
(brief generation). Route to them at each step. If a sub-skill isn't installed,
fall back to the core skill's matching operation.
## Mode: interactive vs autonomous (decide first)
The skill's proactive behaviors (ambient "want me to add that?", per-step
confirmations, post-task offers) assume a human is watching. In a scheduled or
autonomous run nobody answers them — they stall or force a guess. So classify
the run before doing anything:
- **Interactive** — a human invoked this in a live chat. Normal behavior:
surface takeaways, ask before mass updates (10+ pages), offer follow-ups.
- **Autonomous** — a scheduled/cron/loop run with no human in the loop (no one
to answer a prompt). Then:
- **Suppress interactive prompts.** Do not ask "want me to add this?" or wait
on confirmations. Act on the clear cases.
- **Act-then-report, never block.** Anything that *would* need a human
decision (a risky mass update, an ambiguous create-vs-update, a possible
contradiction) goes into a **Needs Review** queue in the brief instead of
halting the run.
- **Stay within safe bounds.** Never delete or supersede without a human;
queue those. Snapshot before any overwrite (core rule still applies).
If you can't tell which mode you're in, ask once ("interactive or autonomous
run?") and proceed on the answer; default to interactive.
## The loop (ordered)
① **Orient.** Run the core Pre-Flight + orient (SCHEMA, index, log, overview,
`_status.md`). Do not skip — every write still requires orient.
② **Registry-driven sweep.** Read the `## Sweep Registry` in
`$WIKI/MY-INTEGRATIONS.md` and sweep **every** source listed, under the core
**Source-completeness guard** (≥2 varied queries, classify
`hits`/`empty-after-retries`/`failed`, bound output — concise/limit≤15/narrow
scope first). One batch sweep up front satisfies freshness-first for the whole
run (see the Freshness↔batch rule); do NOT re-sweep per page. If no registry
exists, build it from connected tools + `Active Sources`, confirm (interactive)
or queue for review (autonomous), and write it before sweeping.
③ **Ingest findings.** For each new/changed signal, route to the core ingest
flow (capture raw → thresholds → write/update → backlinks → log →
MY-INTEGRATIONS). Pages are private by default; never mark a digest
`shareable`. Stamp `lifecycle: stub-intentional` on by-design thin stubs.
④ **Daily brief.** Route to `llm-wiki-brief` (daily brief). If filing it as a
page, write `briefings/YYYY-MM-DD.md` with `lifecycle: dated-digest` (keeps
it out of the orphan count). The brief MUST include the Source Coverage
ledger (one row per registered source) and, in autonomous mode, a **Needs
Review** section.
⑤ **Brief rotation.** Keep the last 7 days in `briefings/`; move older briefs to
`_archive/briefings/`. Use `git mv` if the file is tracked, plain `mv` if not
(check first — don't let an untracked file abort the run).
⑥ **Health check.** Run `scripts/lint.py $WIKI`. Surface the tiered summary,
the export-surface (shareable) audit, and any new orphans/broken links.
Optionally `lint.py $WIKI --auto-fix` to backfill+sort the index (interactive:
offer it; autonomous: run it — it's non-destructive).
⑦ **Report.** One consolidated summary: sweep coverage ledger, pages
created/updated, brief link, lint health delta, and the Needs Review queue.
## Brief lifecycle convention
- `briefings/YYYY-MM-DD.md` — current briefs, `lifecycle: dated-digest`.
- `_archive/briefings/` — briefs older than 7 days.
- Briefs are orphans by design; the `dated-digest` flag keeps them out of lint's
orphan count. Never link-spam pages just to de-orphan a brief.
## What this skill does NOT do
Single ingests, ad-hoc queries, updates, persona/PRD/research/CRM work — route
to the core skill or the matching sub-skill. This skill is the daily loop only.