llp-maintain

$npx mdskill add expo/expo-device-hub/llp-maintain

<!-- @ref https://github.com/ccheever/llp/blob/v0.5.2/llp/0004-design-principles.principles.md — co-evolution and living documents, the model this operationalizes --> <!-- @ref https://github.com/ccheever/llp/blob/v0.5.2/llp/0000-linked-literate-programming.explainer.md#6-validation-ref-check — the deterministic subset lives in ref-check, not here --> <!-- @ref https://github.com/ccheever/llp/blob/v0.5.2/llp/0011.000-curation-pass.guide.md — the curate intent follows this procedure -->

SKILL.md

.github/skills/llp-maintainView on GitHub ↗
---
name: llp-maintain
description: "Keep an LLP corpus in sync with its code. Detects code/doc drift, validates @ref annotations interactively, checks provenance tags, and proposes reconciliations, ref repairs, status changes, and overlay changes. Modes — pre-pr, audit, reconcile, retire-proposal, curate (the promote → archive → realign pass). Proposes; never applies."
source: ccheever/[email protected]
---

# llp-maintain

<!-- @ref https://github.com/ccheever/llp/blob/v0.5.2/llp/0004-design-principles.principles.md — co-evolution and living documents, the model this operationalizes -->
<!-- @ref https://github.com/ccheever/llp/blob/v0.5.2/llp/0000-linked-literate-programming.explainer.md#6-validation-ref-check — the deterministic subset lives in ref-check, not here -->
<!-- @ref https://github.com/ccheever/llp/blob/v0.5.2/llp/0011.000-curation-pass.guide.md — the curate intent follows this procedure -->

The upkeep engine. Living documents rot into misleading guidance unless code and docs co-evolve; this skill finds the drift and **proposes** fixes. The propose-only line is what lets one skill cover four maintenance moments without becoming a mega-skill.

Invoke as `/llp-maintain --intent <pre-pr | audit | reconcile | retire-proposal | curate>` (each has a sensible default scope).

## Trigger

Before opening a PR (`pre-pr`, the common case); periodically or on suspicion (`audit`); after a pull or against a branch (`reconcile`); "this doc looks done/stale" (`retire-proposal`); after design work lands, before a release, or on cadence (`curate`).

## Invariants

- MUST propose, never apply: no edit, ref repair, or status change without sign-off. Output is a reviewable checklist or diff, never a mass rewrite.
- MUST NOT classify untagged rationale claims silently — flag them for the author to mark `[observed]`/`[confirmed]`/`[inferred]`.
- `curate` MUST run its three verbs in order — promote, archive, realign — and MUST realign the code only against `llp/foundation/`, never against the whole corpus. Promotion proposals MUST apply LLP 0000's admission test (design recreatable from the set; set-level; too-small fails), not importance.
- MUST NOT claim to be a CI gate. The deterministic, merge-blocking checks are `ref-check`'s job; this skill is the interactive, judgment-bearing complement.

## Checks

For `@ref`s in scope: **broken** target/anchor (error — list the anchors that *do* exist); **tombstoned/superseded** target (warning, note the replacement); **stale gloss** (hint); **orphaned** annotation whose attached construct is gone (warning). For provenance-tagged docs: `[inferred]` in `Accepted`/`Active` (error); `[observed]` without a stated location, or `[confirmed]` without name+date (flag for the author). For installed skills: a `source:` pin that lags upstream releases (note, when network allows). Beyond the mechanical: code whose behavior no longer matches the section it references; new files implementing a documented LLP with no `@ref`; LLP sections the diff contradicts.

## Modes

| Intent | Default scope | Artifact |
|---|---|---|
| `pre-pr` | working tree | co-evolution checklist ("update doc or code" / "repair ref" / "consider annotating") + proposed status changes, **not applied** |
| `audit` | corpus | findings list: drift, broken refs, stale statuses |
| `reconcile` | diff range / branch | per-doc reconciliation proposals (or "the code drifted, not the doc") |
| `retire-proposal` | one named doc | a drafted `Superseded`/`Tombstoned` proposal with rationale (a status change in the header — files never move) |
| `curate` | overlays + foundation vs. code | the PROMOTE / ARCHIVE / REALIGN checklist of LLP 0011.000: links to add or remove, folds, status fixes, and code changes foundation now demands |

## Hand-offs

- A reconciliation that is really a new design decision → `llp-review`.
- Broken refs surfaced by `llp-orient` land here for repair proposals.
- A stale `source:` pin noted by `audit` → `/llp-adopt update` applies the update after an approved diff (this skill never applies).
- Deterministic CI enforcement → `ref-check`.

More from expo/expo-device-hub

SkillDescription
llp-adoptBring LLP to a repository and keep its installed skills current — the single entry point for "set up LLP here" and "update the LLP skills". Scaffold mode (fresh structure), retrofit mode (survey the codebase, draft a provenance-tagged root LLP, propose an adoption plan), install step (copy skills from a tagged release with a receipt), and update mode (verified, diff-approved skill updates).
llp-createCreate a new LLP document with the next available number (top-level NNNN or a dotted sub-LLP under a parent), the NNNN-slug.type.md filename convention, and a scaffolded metadata header, linked into llp/current/ — or extend an existing LLP when one already covers the topic.
llp-orientBefore editing a subsystem, file, or starting a task, assemble the governing LLP context — read the root LLP, follow the @ref annotations on the code in scope, and find the LLPs covering the relevant systems. Produces a compact context pack of the constraints a change must respect. Read-only.
llp-reviewRun the LLP 0005 review loop for an LLP document — orchestrate reviews from other model families, write one provenance-tracked artifact per review actually received under llp/reviews/, and never fabricate a review or accept on the author's behalf. Review intensity scales with stakes; the author decides when it's enough.
serve-simControl and stream a running iOS, iPad, or Apple Watch Simulator with npx @expo/serve-sim. Use for simulator preview, taps, gestures, hardware buttons, rotation, camera injection, permissions, accessibility, and CoreAnimation debug.
serve-sim-placeholder-assetsAudit and update serve-sim's Device Hub-style simulator placeholder assets from local Xcode/CoreTypes resources. Use after installing a new Xcode or macOS seed, or when iPhone, iPad, Watch, or Vision placeholder previews look wrong.