93 lines
3.3 KiB
JSON
93 lines
3.3 KiB
JSON
{
|
||
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||
"$id": "https://sickn33.github.io/antigravity-awesome-skills/schemas/skill-score.v1.schema.json",
|
||
"title": "Antigravity Skill Score v1",
|
||
"description": "Quality score record for a single Antigravity skill. Scores are informational only and never block skill usage.",
|
||
"type": "object",
|
||
"required": ["skill_id", "risk", "scores", "label"],
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"skill_id": {
|
||
"type": "string",
|
||
"minLength": 1,
|
||
"description": "Skill folder name — matches the 'name' frontmatter field."
|
||
},
|
||
"risk": {
|
||
"type": "string",
|
||
"enum": ["none", "safe", "critical", "offensive", "unknown"],
|
||
"description": "Risk classification as declared in frontmatter."
|
||
},
|
||
"scores": {
|
||
"type": "object",
|
||
"required": ["metadata", "documentation", "security", "total"],
|
||
"additionalProperties": false,
|
||
"description": "Scoring dimensions. All values are in the range [0, 100].",
|
||
"properties": {
|
||
"metadata": {
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"maximum": 100,
|
||
"description": "Metadata completeness score (weight: 30%). Evaluates required and optional frontmatter fields."
|
||
},
|
||
"documentation": {
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"maximum": 100,
|
||
"description": "Documentation quality score (weight: 40%). Evaluates section coverage, code examples, and content depth."
|
||
},
|
||
"security": {
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"maximum": 100,
|
||
"description": "Security posture score (weight: 30%). Reduced by detected dangerous command patterns."
|
||
},
|
||
"total": {
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"maximum": 100,
|
||
"description": "Weighted total: (metadata × 0.30) + (documentation × 0.40) + (security × 0.30)."
|
||
}
|
||
}
|
||
},
|
||
"label": {
|
||
"type": "string",
|
||
"enum": ["excellent", "good", "needs_improvement", "critical"],
|
||
"description": "Human-readable quality label derived from total score. excellent ≥85, good ≥65, needs_improvement ≥45, critical <45."
|
||
},
|
||
"flags": {
|
||
"type": "array",
|
||
"description": "List of security and quality flags detected in this skill.",
|
||
"items": {
|
||
"type": "object",
|
||
"required": ["code", "severity", "message", "line", "matched_text"],
|
||
"additionalProperties": false,
|
||
"properties": {
|
||
"code": {
|
||
"type": "string",
|
||
"pattern": "^SEC[0-9]{3}$",
|
||
"description": "Unique pattern code (e.g. SEC002)."
|
||
},
|
||
"severity": {
|
||
"type": "string",
|
||
"enum": ["error", "warning", "info"],
|
||
"description": "Flag severity level."
|
||
},
|
||
"message": {
|
||
"type": "string",
|
||
"description": "Human-readable description of the detected pattern."
|
||
},
|
||
"line": {
|
||
"type": "integer",
|
||
"minimum": 1,
|
||
"description": "Line number (1-indexed) in the skill body where the pattern was found."
|
||
},
|
||
"matched_text": {
|
||
"type": "string",
|
||
"description": "The matched text fragment from the pattern."
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|