scoring

A scoring guide for judging the quality of natural-language programming artifacts, such as skills, rules, and agents. It uses a 100-point scale with defined penalties for missing, unclear, or oversized parts.

In plain words
What is it for?
Use it to score programming instructions, calibrate reviewers, apply quality penalties, and compare borderline examples against worked reference cases.
Why use it?
It makes reviews more consistent by replacing vague opinions with the same checks and penalties each time.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/xiaolai/nlpm/scoring
Any agent
npx skills add xiaolai/nlpm --skill scoring
Clone the repo
git clone --depth 1 https://github.com/xiaolai/nlpm

Made for: Claude Code, Codex.

Per session 68 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,075 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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

ModelPer sessionOnce invoked
Fable 5 $0.00068 $0.06075
Opus 5 $0.00034 $0.03037
Sonnet 5 $0.00014 $0.01215
Haiku 4.5 $0.00007 $0.00607

Measured 2d ago against content hash 142f19f53c91, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

scoring scanned grade C with 1 finding 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.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

| -- | Command safety | Hook command contains dangerous patterns (`rm -rf`, `git push --force`, `DROP TABLE`) | -15 |
codex/skills/scoring/SKILL.md · 464 lines

How it starts

The opening of the file, as written. The whole thing — 464 lines — stays where its author put it; the contents beside it link to each section on GitHub.

NLPM Quality Scoring Rubric

100-point quality scale for all NL programming artifacts. Apply penalties deterministically. Use calibration examples to anchor judgment on borderline cases.


Scoring Formula

base_score = 100
adjustments = sum of all applicable penalties (all penalties are negative)
final_score = max(0, min(100, base_score + adjustments))

Penalties stack. The floor is 0; the ceiling is 100. No bonuses — the default assumption is that an artifact is well-formed, and quality is measured by what is missing or wrong.


Penalty Tables

Skills

Rule Check Condition Penalty
-- name present Missing -25
-- name matches parent directory Frontmatter name: value does not equal parent directory name (per nlpm:conventions §5 — open spec MUST) -15
R04 description present Missing -25
R04 Trigger quality Description is generic (≤1 specific phrase) -15
R04 Description length Description 500–800 chars -5
R04 Description length Description >800 chars -10
R05 Body length 400–500 lines -5
R05 Body length >500 lines -10
R06 Code examples Complex concepts with no examples -5
R06 Code examples No examples at all in a technical skill -10
R06 <example> blocks Zero <example> blocks on a user_invocable: true skill -10
R07 Scope note No scope note / cross-references -3

Scope-note discipline: R07 means "scope note when related skills exist." Do NOT apply R07 to missing example blocks — that is the new R06 row above (penalty -10, not -15). The 2026-05-13 lijigang/ljg-skills audit applied R07 + −15 fourteen times for missing example blocks; both labels were wrong (R07 is not example-related, and -15 is the agents penalty, not the skills penalty). The validator at auditor/scripts/validate-rule-ids.py catches this kind of drift in CI.

<example>-block counting discipline (added 2026-08-01, origin: xiaolai/cc-suite v1.3.1 remediation): an <example> block counts only when it sits outside fenced code blocks — in the body or in a frontmatter description block scalar. Tags inside a fenced template (```markdown … ```) are illustrative content, and prose that names the string `<example>` is a mention, not a block. A 2026-07-31 scoring pass credited a skill with example blocks that existed only inside a fenced template, hiding a real R06 violation across 13 files. Verify by reading the file, not by grepping for the tag.

Read the full file on GitHub · 464 lines

Files

What ships with it

1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

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.

  1. 2d ago First seen · 464 lines · 68 tokens per session scan C 142f19f53c91

Subscribe to this mod's changes

scoring is a skill published in the GitHub repository xiaolai/nlpm (133 stars, last pushed 2d ago), licensed ISC. It adds 68 tokens to every session and 6,075 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it C with 1 finding (recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.