Skip to content
Skill Authoring
Skill

/vocabulary

NLPM noun/verb registry (R51): pick the canonical term, detect vocabulary drift.

BOOST
From plugin
nlpm
15317 skills8 agents15 commands1 hook
Install
$ npx -y skills add xiaolai/nlpm --skill vocabulary --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/vocabulary

Context preview

The summary Claude sees to decide when to auto-load this skill.

NLPM noun/verb registry (R51): pick the canonical term, detect vocabulary drift.

SKILL.md

vocabulary.SKILL.md
name: vocabulary
description: "NLPM noun/verb registry (R51): pick the canonical term, detect vocabulary drift."
version: 0.1.0
user-invocable: false

NLPM Domain Vocabulary

> The canonical noun-and-verb set NLPM uses to name what it does. Every artifact name, command name, agent name, rule wording, and prose description should draw from this registry. Synonyms are flagged by `/nlpm:check` and penalized by `/nlpm:score`. > > **Sister skill:** `nlpm:conventions` holds upstream Claude Code framework terms (hook events, frontmatter fields, manifest keys). This skill holds NLPM-internal domain language. If a term is from Anthropic's docs, it belongs in `conventions`. If it is from NLPM's own corpus, it belongs here.

---

How this registry is built

Every term listed below has **literary warrant** — it appears in at least one NLPM artifact today, captured by `analysis/scripts/extract-vocabulary.py`. Re-run that script after adding or renaming artifacts; the freshest output lives at `analysis/vocabulary-extract/summary.md`. New terms enter the registry only after one of the four warrant types from `analysis/vocabulary-design-principles.md` (P6) is satisfied — literary warrant alone is the entry bar for terms already in use; new coinages need user, structural, or domain warrant.

---

Two scopes (P1)

NLPM has two declared scopes. A homonym across them is a **boundary**, not a collision.

| Scope | Lives in | What it operates on | |-------|----------|---------------------| | **internal** | `commands/`, `agents/`, `skills/`, `bin/`, `scripts/`, project CLAUDE.md | NLPM's own behavior — scoring, checking, fixing, testing, listing, trending NL artifacts in the current project. | | **auditor** | `.github/workflows/auditor-*.yml`, `auditor/` | The self-evolution pipeline that audits external repos, opens contribution PRs, tracks outcomes, refines rules. |

A verb that appears in both scopes (`scan`, `test`, `discover`) carries the same identity criterion in both — these are sanctioned homonyms. A verb that appears in only one scope (`audit`, `contribute`, `track` in auditor; `score`, `check`, `fix`, `ls`, `trend`, `init` in internal) is scope-bound; using it in the other scope requires either renaming or declaring a second scope-specific definition.

---

Verbs

Internal scope (NLPM commands)

| Canonical verb | Output | Judgment? | Examples in corpus | |----------------|--------|-----------|--------------------| | `score` | number + penalty list | no (deterministic) | `commands/score.md`, `agents/scorer.md` | | `check` | consistency violation list | no (deterministic) | `commands/check.md`, `agents/checker.md` | | `test` | pass/fail against named specs | no (deterministic) | `commands/test.md`, `agents/tester.md` | | `scan` | pattern-match findings against a signature database | no (deterministic) | `commands/security-scan.md`, `agents/vague-scanner.md`, `agents/security-scanner.md` | | `fix` | mutated artifact | no (mechanical) | `commands/fix.md` | | `ls` | inventory of artifacts | no | `commands/ls.md`, `agents/scanner.md` | | `trend` | history report | no | `commands/trend.md` | | `init` | config file | no | `commands/init.md` |

**Deprecated synonyms (do not use in internal scope):**

  • `lint`, `validate` → use `check` (structural) or `score` (quality)
  • `find`, `search`, `list` → use `ls`
  • `analyze` → use `score` (if quantitative) or pick a more specific verb
  • `audit` → not in internal scope; live in auditor scope only

Auditor scope (`.github/workflows/auditor-*.yml`, `auditor/scripts/`)

| Canonical verb | Output | Judgment? | Examples in corpus | |----------------|--------|-----------|--------------------| | `discover` | candidate-repo list | no | `auditor-discover.yml` | | `audit` | composite quality + security report | **yes** | `auditor-audit.yml` | | `contribute` | PR(s) to target repo | no | `auditor-contribute.yml` | | `track` | outcome events appended to `events.jsonl` | no | `auditor-track.yml` | | `classify` | categorical label on a PR comment | no (model-deterministic) | `auditor-classify.yml` | | `refine` | rule-edit PR (human-gated) | no (LLM-generated, human-merged) | `auditor-refine-rules.yml` | | `cite` | citation-edit PR (human-gated) | no | `auditor-cite-exemplars.yml`, `propose-rule-citations.py` | | `diff` | finding-by-finding comparison | no | `diff-findings.py`, `auditor-docs-diff.yml` | | `report` | rolled-up summary at a cadence | no | `auditor-daily-report.yml`, `generate-daily-report.py` | | `review` | rule-review issue body (human reads, decides) | **yes** (human) | `auditor-rule-review.yml`, `generate-rule-review-body.py` | | `propose` | a draft for human approval | no | `propose-rule-citations.py` | | `validate` | yes/no on a structural rule | no | `validate-feedback.sh`, `validate-rule-ids.py` |

> **Sibling-granularity note (P1):** `report` is broader than its peers (`classify`, `refine`, `cite`, `diff`). The auditor's noun-named workflow convention absorbs this — workflows that produce reports are noun-named after the output (`auditor-daily-report`, `auditor-rule-review`), and the verb `report` is the generic act behind that family. Documented inconsistency, not a P1 violation; flagged here so future additions don't replicate the pattern without intent.

**Cross-scope homonyms (same meaning in both scopes):**

  • `scan` — pattern-match against a signature database (used by `security-scan` command and `scan-suppressions.py`)
  • `test` — pass/fail against named specs (used by `/nlpm:test` and `auditor-integration-test.yml`)
  • `discover` — produce a candidate list (`/nlpm:ls` description text and `auditor-discover.yml`)

Verbs proposed but not entered

Per the precedence order in `analysis/vocabulary-design-principles.md` (P6 last; warrant is an entry check, not a veto), proposed terms split into two lists.

**Deferred (P2–P5 satisfied; awaiting warrant):**

| Proposed verb | Closure gap or judgment named | Warrant needed | |------

Read more
Ships withnlpm

Natural-Language Programming Manager — score, check, fix, and test NL artifacts across Claude Code, Codex CLI, and Antigravity. Tier-aware scoring with per-tool overlays. Part of the xiaolai plugin marketplace.

Get the whole plugin

Other skills on nlpm.