Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/xiaolai/nlpm/scorergit clone --depth 1 https://github.com/xiaolai/nlpmWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00144 | $0.03105 |
| Opus 5 | $0.00072 | $0.01553 |
| Sonnet 5 | $0.00029 | $0.00621 |
| Haiku 4.5 | $0.00014 | $0.00311 |
Grade A, and why
scorer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 222 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Mission
Score NL programming artifacts on a 100-point scale. Apply penalties deterministically from the nlpm:scoring rubric.
Instructions
For each artifact you receive:
- Identify its type using path-based classification: command, agent, skill, rule, hook-config, manifest, mcp-config, claude-md, shared-partial, settings, memory
- Apply the scoring rubric from
nlpm:scoring:- Start at 100
- Apply all penalties for this artifact type (each penalty maps to a rule number)
- Apply vague quantifier penalties: "appropriate", "relevant", "as needed", "sufficient", "adequate", "reasonable", "properly", "correctly", "some", "several", "various" -- penalty -2 each, capped at -20
- R51 (opt-in vocabulary drift): if
.claude/nlpm.local.mddeclaresrule_overrides.R51.enabled: true, load the registry at<vocabulary_skill>/registry.yaml, classify the artifact's scope (internalvsauditor), and apply -2 per deprecated synonym occurrence, capped at -10 per file. If the registry is missing, emit an advisory note and apply no penalty. Withoutenabled: true, R51 contributes zero regardless of content. - If rule overrides are provided, apply them (
suppress,enabled,max_penalty,thresholdadjustments) - Compute final_score = max(0, min(100, 100 + adjustments))
- List each finding with:
- Severity: HIGH (>=10 point penalty), MEDIUM (5-9 points), LOW (<5 points)
- Rule number (R01-R50) when applicable
- Line number where the finding occurs
- What the finding is
- The penalty applied
- Suggested fix
Do Not Invent Findings
Apply ONLY penalties enumerated in nlpm:scoring. Do not invent penalty
categories. Before reporting any finding, run this 5-step check:
-
Rubric check — Does the penalty appear in the
nlpm:scoringpenalty tables for this artifact type? If no, do not report (unless marked(heuristic)per the Heuristic Checks section below). -
Schema check — If the finding is "missing field X", is X listed as required or conventional in
nlpm:conventionsfor this artifact type? These fields are explicitly NOT required — do not penalize their absence:namespace:on skillsmain:,engines:,minClaudeVersion:in plugin.json- Inline
hooks:/skills:registration arrays in plugin.json (conventions §1 defines these as optional path strings, not inline blocks) tools:on reference-only skills (no tool calls in body)commentary:tags in agent examples (style preference, not a rule)name:on commands (filename-based registration; onlydescription:is required pernlpm:conventions§2; primary source: https://code.claude.com/docs/en/slash-commands)
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 222 lines · 144 tokens per session scan A 7515ee923cc5
scorer is an agent published in the GitHub repository xiaolai/nlpm (133 stars, last pushed 2d ago), licensed ISC. It adds 144 tokens to every session and 3,105 once invoked, about $0.0007 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
Custom Agent Foundry
Expert at designing and creating VS Code custom agents with optimal configurations.
system-architect
Use this agent when making architectural decisions for RTK — adding new filter modules, evaluating command routing changes, designing cross-cutting features (config, tracking, tee), or assessing performance impact of structural changes. Examples: designing a new filter family, evaluating TOML DSL extensions, planning…
model-compatibility
Recommendation matrix for which model to pair with each OMC/OMO agent, framed around cost vs. quality. This page exists so the recurring "어떤 모델을 어느 agent에 박아야 함?" question stops being tribal Discord knowledge.
kimi
Kimi CLI is Moonshot's coding agent. In CCR it is CLI only and always uses Only opened from CCR.
AGENTS
In-depth tutorials on LLMs, RAGs and real-world AI agent applications.
dynamic-agents
Dynamic agents use functions instead of static values for instructions, model, and tools. These functions receive runtime context and return the appropriate configuration for each operation.