Skip to content
Back to skills

Card Review

ASecurity

Internal skill for onboard's semantic review gate. After the deterministic validation gate (which catches invented symbols / hash drift / secrets), this skill drives a sampled `claude -p` pass that checks whether the TLDR and role are DIRECTIONALLY ACCURATE given the file's structure and head snippet. The deterministic gate is the FLOOR; this skill is the ceiling check for plausible- but-wrong summaries (e.g. "handles auth middleware" when the file only renders auth *errors*). Used by onboard...

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 5, 2026
ai-agentsgo

Security analysis

A100/100

Scanned September 5, 2026

npx -y skills add tmj-90/gaffer --skill card-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Card Review?

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

Security grade badge for Card Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tmj-90-card-review/badge)](https://www.skillsdirectory.com/skills/tmj-90-card-review)

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: card-review
description: |
  Internal skill for onboard's semantic review gate. After the deterministic
  validation gate (which catches invented symbols / hash drift / secrets), this
  skill drives a sampled `claude -p` pass that checks whether the TLDR and role
  are DIRECTIONALLY ACCURATE given the file's structure and head snippet. The
  deterministic gate is the FLOOR; this skill is the ceiling check for plausible-
  but-wrong summaries (e.g. "handles auth middleware" when the file only renders
  auth *errors*). Used by onboard-analyze.mjs. Not for the ticket delivery flow.
stack: []
area: memory
---

# Review one file card — the semantic accuracy gate

You will be given:
1. A **card** (tldr + role) produced by the generation pass.
2. The **mechanical structure** of the file (imports, top-level symbol names).
3. A **bounded head snippet** of the file.

Your job: judge whether the TLDR and role are **directionally accurate and not
over-claiming** — given ONLY the structure and snippet shown.

You are NOT asked to rewrite the card. You are asked to give a **verdict** and
one sentence explaining it.

## The accuracy bar

**This is a generous but honest bar.** You are not looking for perfection; you
are catching meaningful errors.

A card PASSES if:
- The TLDR's primary claim is consistent with the structure and snippet.
- Imprecision or vagueness is acceptable as long as nothing is actively wrong.
- The role label is plausible (even if another label might be slightly better).

A card REVISES if:
- The TLDR is partially right but contains a specific false claim that could
  mislead an agent (e.g. claims it exports `handleSession` when no such symbol
  appears in the structure).
- The role label is clearly wrong (e.g. `migration` for a route handler).

A card REJECTS if:
- The TLDR describes something fundamentally different from what the file is
  (e.g. "implements JWT authentication" for a file that only does arithmetic).
- The TLDR is so vague it provides zero retrieval value ("utility functions").
- The TLDR contains fabricated behaviour not visible in the structure or snippet.

## What you must NOT do

- Do NOT penalise a card for being brief or imprecise — only for being wrong.
- Do NOT infer capabilities from the filename alone; use only what the structure
  and snippet show.
- Do NOT reject a card because you would have written it differently. The bar is
  directional accuracy, not editorial quality.
- Do NOT consider the symbols field in your verdict — that is the deterministic
  gate's job. Focus only on the TLDR and role_primary.
- Do NOT write a revised TLDR. Your output is verdict + one-sentence reason only.

## Sampling context

This review runs on a SAMPLE of cards (typically up to 5 per onboard, configurable
via GAFFER_CARD_REVIEW_SAMPLE). It is best-effort: a review failure never fails
the onboard. Cards that pass the deterministic gate but fail this semantic gate
are downgraded to model_status='failed_validation' with your reason recorded.

The mechanical fields (path, symbols, loc) are still served even for failed
model summaries — the card retains retrieval value, just without the TLDR.

## Output format

Return EXACTLY one fenced ```json block as the LAST thing in your response:

```json
{
  "verdict": "pass | revise | reject",
  "reason": "<one sentence: what is correct, or what specific claim is wrong>"
}
```

Examples of good reasons:
- pass: "TLDR correctly identifies the file as arithmetic helpers exporting `add` and `PI`."
- revise: "TLDR claims `handleSession` is exported but that symbol is not in the structure."
- reject: "TLDR describes JWT authentication but the file only contains math utility functions."

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.