Install
$ agentstack add skill-mgechev-skillgrade-skillgrade-graders ✓ 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.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Skillgrade Grader Authoring
Procedures
Step 1: Identify the Grading Strategy
- Determine whether the task requires objective verification (deterministic) or qualitative assessment (LLM rubric).
- For most tasks, combine both: deterministic graders verify outcomes (weight 0.7), LLM rubrics assess approach quality (weight 0.3).
Step 2: Write a Deterministic Grader
- Create a script in the skill's
graders/directory (bash or TypeScript). - The script must output a JSON object to stdout with the following structure:
``json {"score": 0.67, "details": "2/3 checks passed", "checks": [{"name": "check-name", "passed": true, "message": "Description"}]} ``
score(0.0–1.0) anddetailsare required.checksis optional but recommended.- Read
references/grader-output-schema.mdfor the full output specification. - Use
awkfor arithmetic in bash scripts —bcis not available innode:20-slim. - Reference the grader in eval.yaml:
```yaml
- type: deterministic
run: bash graders/check.sh weight: 0.7 ```
Step 3: Write an LLM Rubric Grader
- Draft a rubric with explicit scoring criteria and point allocations.
- Structure the rubric into weighted sections that sum to 1.0:
``` Workflow Compliance (0-0.5):
- Did the agent follow the mandatory workflow steps?
Efficiency (0-0.5):
- Completed in ≤5 commands without trial-and-error?
```
- Reference the rubric in eval.yaml:
```yaml
- type: llm_rubric
rubric: | [rubric text or file path] weight: 0.3 provider: gemini # optional: gemini (default) | anthropic | openai model: gemini-3-flash-preview # optional, each provider has a default model ```
- For long rubrics, store in a separate file and reference by path:
rubric: rubrics/quality.md.
Step 4: Combine Multiple Graders
- Assign weights to each grader based on importance. Weights are normalized automatically.
- Final reward is calculated as:
Σ (grader_score × weight) / Σ weight. - Example configuration:
```yaml graders:
- type: deterministic
run: bash graders/check.sh weight: 0.7
- type: llm_rubric
rubric: rubrics/quality.md weight: 0.3 ```
Step 5: Validate Graders
- Create a reference solution script that produces the expected output.
- Run
skillgrade --validateto verify graders score the reference solution correctly. - Test only deterministic graders:
skillgrade --grader=deterministic(skips LLM calls, faster iteration). - Test only LLM rubric graders:
skillgrade --grader=llm_rubric. - Run a specific eval with a specific grader type:
skillgrade --eval=my-eval --grader=deterministic. - If a grader returns unexpected scores, inspect the script output and adjust scoring logic.
Error Handling
- If a deterministic grader outputs non-JSON, ensure all
echo/console.logstatements except the final JSON result are redirected to stderr. - If an LLM rubric grader returns 0.00 with a missing API key message, set the appropriate key for your provider:
GEMINI_API_KEY(provider: gemini),ANTHROPIC_API_KEY(provider: anthropic), orOPENAI_API_KEY(provider: openai). - To use a custom/self-hosted LLM endpoint, set
ANTHROPIC_BASE_URL(for provider: anthropic) orOPENAI_BASE_URL(for provider: openai) — e.g. for Ollama or vLLM. - If scores are inconsistent across trials, reduce rubric ambiguity by adding concrete examples of passing and failing behavior.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: mgechev
- Source: mgechev/skillgrade
- License: MIT
- Homepage: https://blog.mgechev.com/2026/03/14/skillgrade/
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.