Create custom Tessl reviewer plugins – fork the default rubric, build one from scratch, or derive its rubrics from evidence (existing skills, PR review feedback, agent logs). Scaffolds the plugin directory structure, authors rubrics and config.json, and validates the result with tessl review run.
97
96%
Does it follow best practices?
Impact
98%
1.15xAverage score across 6 eval scenarios
Advisory
Suggest reviewing before use
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "rubric.schema.json",
"title": "SkillReviewRubric",
"description": "JSON Schema for skill review rubric files (rubrics/description.json and rubrics/content.json).",
"type": "object",
"required": ["evaluation_target", "scale", "reference_examples", "dimensions"],
"additionalProperties": false,
"properties": {
"evaluation_target": {
"type": "string",
"description": "Which part of the skill (or artifact) this rubric evaluates. Built-in values are 'description' and 'content'; custom rubrics may use any string."
},
"scope": {
"type": "string",
"description": "Human-readable description of what is being evaluated (content rubric only)."
},
"scale": {
"type": "object",
"required": ["min", "max"],
"additionalProperties": false,
"properties": {
"min": {
"type": "number",
"description": "Minimum valid score (inclusive)."
},
"max": {
"type": "number",
"description": "Maximum valid score (inclusive)."
}
}
},
"reference_examples": {
"type": "object",
"required": ["judging_guidelines", "good_overall_examples", "bad_overall_examples"],
"additionalProperties": false,
"properties": {
"judging_guidelines": {
"type": "array",
"items": { "type": "string" },
"minItems": 1,
"description": "Ordered list of guidelines for the judge to follow."
},
"good_overall_examples": {
"type": "array",
"items": { "type": "string" },
"minItems": 1,
"description": "Examples of high-quality skills for this evaluation target."
},
"bad_overall_examples": {
"type": "array",
"items": { "type": "string" },
"minItems": 1,
"description": "Examples of low-quality skills for this evaluation target."
}
}
},
"dimensions": {
"type": "array",
"minItems": 1,
"description": "Ordered list of evaluation dimensions. Weights must sum to 1.0.",
"items": {
"type": "object",
"required": ["id", "name", "weight", "question", "scores"],
"additionalProperties": false,
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]*$",
"description": "Unique snake_case identifier for this dimension. Used as key in judge output scores."
},
"name": {
"type": "string",
"description": "Human-readable name for this dimension."
},
"weight": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 1,
"description": "Fractional weight of this dimension in the overall score. All weights must sum to 1.0."
},
"question": {
"type": "string",
"description": "The core question the judge should answer for this dimension."
},
"rationale": {
"type": "string",
"description": "Why this dimension matters (optional, content rubric dimensions)."
},
"scores": {
"type": "array",
"minItems": 2,
"description": "Anchor definitions for each score level.",
"items": {
"type": "object",
"required": ["score", "anchor", "example"],
"additionalProperties": false,
"properties": {
"score": {
"type": "number",
"description": "The numeric score value."
},
"anchor": {
"type": "string",
"description": "Brief description of what earns this score."
},
"example": {
"type": "string",
"description": "Concrete example of content at this score level."
}
}
}
}
}
}
},
"scoring_notes": {
"type": "object",
"required": ["simple_skills", "code_vs_instruction_skills", "feedback_loops"],
"additionalProperties": false,
"description": "Additional scoring guidance (content rubric only).",
"properties": {
"simple_skills": {
"type": "string"
},
"code_vs_instruction_skills": {
"type": "string"
},
"feedback_loops": {
"type": "string"
}
}
}
},
"if": {
"properties": { "evaluation_target": { "const": "content" } }
},
"then": {
"required": ["scope", "scoring_notes"]
}
}