# LLM Wiki Maintain

> 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.

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

---


# 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.

