Skip to content
Back to skills

Compendium Lint

ASecurity

Use to gardening-check a Compendium-style controlled-vocabulary store before committing or publishing it — verifying pointer integrity, register discipline, and store health. Invoke after adding/editing entries, on a cadence, or before a release that touches the vocabulary store. Runs the deterministic `lint.cjs` if the runtime is present (`node plugins/compendium/lint.cjs [--reindex]`); otherwise applies the same seven checks by inspection. Portable: the checks are defined over plain markdow...

  • 8 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 29, 2026
ai-agentsgonodegit

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add SoliEstre/EstreGenesis --skill compendium-lint --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Compendium Lint?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Compendium Lint
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/soliestre-compendium-lint/badge)](https://www.skillsdirectory.com/skills/soliestre-compendium-lint)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: compendium-lint
version: 0.2.5
description: "Use to gardening-check a Compendium-style controlled-vocabulary store before committing or publishing it — verifying pointer integrity, register discipline, and store health. Invoke after adding/editing entries, on a cadence, or before a release that touches the vocabulary store. Runs the deterministic `lint.cjs` if the runtime is present (`node plugins/compendium/lint.cjs [--reindex]`); otherwise applies the same seven checks by inspection. Portable: the checks are defined over plain markdown+frontmatter, so they hold for any vault (a dashboard store, an Obsidian vault, a provider memory directory). Pairs with `compendium-curate` (curate first, then lint)."
---

# Compendium Lint — gardening checks for the vocabulary store

A controlled-vocabulary store degrades silently: a renamed heading orphans a pointer, a copied definition drifts, a superseded term keeps getting cited. These checks make that degradation **computable**, like a build's verify pass. **Four hard** (build-failing) + **three soft** (gardening signal) — seven checks total. This is the runtime's severity view of the spec's §9 grouping: the four gardening lints (broken-link · orphan · duplicate-concept · stale) plus the pointer-resolution check (slug resolution · no-competing-full-def · redaction) — same seven, sliced by severity instead of by family.

## If the runtime is present (preferred)

```
node plugins/compendium/lint.cjs            # check only
node plugins/compendium/lint.cjs --reindex  # check + regenerate INDEX.md / index.json + the viewer-agnostic [[id]] projection
node plugins/compendium/lint.cjs --quiet    # exit code only (CI)
```
Exit `1` on any **hard** failure; `0` otherwise. Hard failures must be fixed before commit; soft warnings are a gardening worklist.

## If no runtime — apply the checks by inspection

**HARD (must fix):**
1. **broken-link** — every id in `links:` resolves to an existing entry id. A dangling peer link is a hard failure.
2. **pointer-resolution** — `owner_spec` is of the form `<file>#<slug>`, the file exists, and the slug is an **actual heading** in that file (GitHub-style slug: lowercase, spaces→`-`, punctuation dropped). A pointer to a heading that no longer exists is the most common rot.
3. **no-competing-full-def** — an `internal`-register entry's `definition.text` stays under the one-line cap; a long restatement = a competing SSoT (the pointer-not-paraphrase violation).
4. **redaction** — a conversation-sourced term carries no leaked private/governance content (only settled technical vocabulary reaches a published store).

**SOFT (gardening worklist):**
5. **orphan** — an entry with zero inbound `links` that is not an index: confirm it is genuinely cross-cutting, or wire it in.
6. **duplicate-concept** — two `active` entries sharing a concept/title-slug that contradict: merge, or supersede one (`status: superseded` + `superseded_by`).
7. **stale** — `audit.updated` lags behind a superseding note elsewhere.

## After linting clean

If you changed entries, run `--reindex` so the computed MOC (`INDEX.md`), the machine export (`index.json`), and the viewer-agnostic projection (per-entry `[[id]]` peer edges + `owner_spec` pointer) all match the frontmatter. The frontmatter is the typed SSoT; everything else is derived — never hand-edit the generated artifacts.

> Lint definitions + rationale: **Compendium.md §9** (the four gardening lints + pointer-resolution). This skill points; it does not paraphrase.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.