Install
$ agentstack add skill-adtn0810-truestack-truestack-skill-evaluation ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
truestack-skill-evaluation
A score is only worth what's behind it. This skill measures skill quality with evidence — a deterministic lint you can re-run, plus a judged read and a trigger test — so "8/10" means something checkable, not a guess. It exists because the easy failure here is exactly the one the honesty contract forbids: asserting a confident number nobody verified.
When to run
- The user asks to score / rate / audit / improve a skill or set.
- Right after writing or editing a skill (gate before shipping).
- Periodically, to catch drift, bloat, and trigger collisions as a set grows.
Three layers (run in order; each is cheap)
- Static lint (deterministic). Run
scripts/skill_lint.py(no Python on the
box? uv run --no-project scripts/skill_lint.py provisions one). It checks every SKILL.md for: valid frontmatter, name matching its folder, a description that says what it does AND when to use it, body within the token budget (both halves — lines and chars), references/ that are actually linked (no orphans) and that every referenced file exists (no dead refs), and the obvious anti-patterns. Repeatable, no judgment — same input, same score; the lint itself is unit-tested by scripts/test_skill_lint.py.
- Semantic judge. Read each
SKILL.mdand rate it against the rubric dimensions, grounded
in the actual text — reward clarity and correct scope, not length. A long skill is a cost, not a virtue. Cite the line that justifies each deduction.
- Behavioral trigger test. Two parts. (a) Measured floor (deterministic): run
scripts/trigger_eval.mjs — it routes the committed fixtures/trigger-cases.json (prompt → expected skill, plus should-not-fire cases) by IDF-weighted keyword overlap and asserts each intended skill lands in the top-2; it exits 1 on a miss, so a description edited to stop matching its own triggers fails in CI. Keyword overlap only approximates the LLM router — it's a regression guard, not proof of live routing — so label it measured-but-approximate. (b) Judged: for cases the fixtures don't cover, write 3–5 should-fire and 2 should-not prompts per skill and reason about routing. Under-triggering (too timid) and over-triggering (grabs unrelated work, collides with a sibling) are both findings; add a regression case to the fixtures for any real miss you find.
What it scores
Six dimensions, 0–10, weighted — full anchors, weights, anti-pattern catalog, and badge thresholds in references/rubric.md:
- Triggering accuracy — does the description fire when it should and stay quiet when it shouldn't?
- Scope calibration — one clear job, not too broad (collides) or too narrow (never fires).
- Token efficiency — earns its context cost; progressive disclosure via
references/. - Structural completeness — frontmatter, body, references, handoff all present and consistent.
- Robustness / anti-patterns — none of: empty/vague description, missing "when", over-constrained MUST-walls, bloated body, orphan/dead reference, name mismatch, duplicated trigger surface.
- Honesty adherence — does the skill itself ground/verify/abstain rather than invent (for skills that produce claims)?
Be honest about the number (this skill, of all skills)
Label each layer: the static score is deterministic; the judge and behavioral scores are estimates — say so. Report only what you actually ran. Don't average away a Critical finding (a dead reference or an empty description caps the skill until fixed). A measured 6/10 with three concrete fixes is worth more than a flattering 9 — surfacing the gap is the point.
Output
# Skill-eval report:
## Scorecard
| Skill | Static | Judge | Behavioral | Score /10 | Badge | Top fix |
## Critical findings (must fix — cap the score)
## Per-skill notes (deduction → evidence → fix)
## Set-level: trigger collisions · total token budget · coverage gaps
Verdict: ship / fix-first — with the honest caveat on judged vs measured
Explain it simply
Lead with the one-line verdict and the single highest-leverage fix. Show the scorecard as a table, findings by severity — not prose. Make every deduction point to the line that caused it, so a fix is obvious. After fixes, re-run the lint and show the before/after.
Fixes that change a skill's behavior or wording → that's editing the skill; re-run this eval to confirm the score moved. For a brand-new skill, hold it to the same bar from the start: write it against this skill's rubric (references/rubric.md) and run the lint before shipping.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: adtn0810
- Source: adtn0810/truestack
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.