CtrlK
BlogDocsLog inGet started
Tessl Logo

tessleng/skill-insights

Scan a directory or workspace for SKILL.md files across all agents and repos, capture supporting files (references, scripts, linked docs), dedupe vendored copies, enrich each Tessl tile with registry signals, and emit a canonical JSON inventory validated by JSON Schema. Then run four analytical phases in parallel against the inventory — staleness + git provenance (history, broken refs, contributors), quality (Tessl `skill review`), duplicates (similarity + LLM judgement), registry-search (per-standalone-skill registry suggestions, HTTP only) — and render a self-contained interactive HTML report with a top-of-report health overview, top-issues panel, recently-changed list, and per-tessl.json manifests view.

84

1.44x
Quality

90%

Does it follow best practices?

Impact

97%

1.44x

Average score across 2 eval scenarios

SecuritybySnyk

Advisory

Suggest reviewing before use

Overview
Quality
Evals
Security
Files

registry-search.schema.jsonreferences/schemas/

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tessl.io/skill-insights/registry-search.schema.json",
  "title": "Skill Insights — Registry Search Output",
  "description": "Registry-search results for every standalone skill in a discovery.json. Only skills with `source_type: \"standalone\"` are searched — anything inside a tile or agent-harness directory has already been chosen by the user, so suggesting a registry alternative would be noise. Each candidate is queried against the Tessl /experimental/search endpoint twice (skill index + tile index) and the single higher-aggregate-score hit is recorded as `best_match`. Eval / quality scores are surfaced verbatim so the report can flag local skills with strong registry-side equivalents.",
  "type": "object",
  "additionalProperties": false,
  "required": ["schema_version", "metadata", "matches", "stats", "warnings"],
  "properties": {
    "schema_version": { "type": "string", "const": "1.2" },
    "metadata": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "scanned_at", "tool_version", "registry_base_url", "search_mode",
        "skills_searched", "skills_skipped_non_standalone"
      ],
      "properties": {
        "scan_id": { "type": ["string", "null"] },
        "scanned_at": { "type": "string", "format": "date-time" },
        "tool_version": { "type": "string" },
        "registry_base_url": { "type": "string", "format": "uri" },
        "search_mode": { "type": "string", "enum": ["hybrid", "semantic", "text"] },
        "skills_searched": { "type": "integer", "minimum": 0 },
        "skills_skipped_non_standalone": { "type": "integer", "minimum": 0 }
      }
    },
    "matches": {
      "type": "array",
      "items": { "$ref": "#/$defs/Match" }
    },
    "stats": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "total_skills_searched",
        "skills_with_match",
        "skills_with_no_match",
        "match_kinds",
        "search_errors"
      ],
      "properties": {
        "total_skills_searched": { "type": "integer", "minimum": 0 },
        "skills_with_match": { "type": "integer", "minimum": 0 },
        "skills_with_no_match": { "type": "integer", "minimum": 0 },
        "match_kinds": {
          "type": "object",
          "additionalProperties": false,
          "required": ["skill", "tile"],
          "properties": {
            "skill": { "type": "integer", "minimum": 0 },
            "tile": { "type": "integer", "minimum": 0 }
          }
        },
        "search_errors": { "type": "integer", "minimum": 0 }
      }
    },
    "warnings": {
      "type": "array",
      "items": { "type": "string" }
    }
  },
  "$defs": {
    "Match": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "source_skill_id", "source_skill_name", "source_tile_name",
        "source_query", "best_match", "search_errors"
      ],
      "properties": {
        "source_skill_id": { "type": "string" },
        "source_skill_name": { "type": "string" },
        "source_tile_name": { "type": ["string", "null"] },
        "source_query": { "type": "string" },
        "best_match": {
          "anyOf": [
            { "type": "null" },
            { "$ref": "#/$defs/SkillBestMatch" },
            { "$ref": "#/$defs/TileBestMatch" }
          ]
        },
        "search_errors": {
          "type": "array",
          "items": { "$ref": "#/$defs/SearchError" }
        }
      }
    },
    "SkillBestMatch": {
      "type": "object",
      "additionalProperties": false,
      "required": ["kind", "id", "name", "description", "path", "scores"],
      "properties": {
        "kind": { "const": "skill" },
        "id": { "type": "string" },
        "name": { "type": "string" },
        "description": { "type": "string" },
        "path": { "type": "string", "description": "Repo-relative SKILL.md path as recorded in the registry." },
        "source_url": { "type": ["string", "null"] },
        "tile_workspace": { "type": ["string", "null"] },
        "tile_name": { "type": ["string", "null"] },
        "scores": { "$ref": "#/$defs/Scores" }
      }
    },
    "TileBestMatch": {
      "type": "object",
      "additionalProperties": false,
      "required": ["kind", "id", "name", "full_name", "scores"],
      "properties": {
        "kind": { "const": "tile" },
        "id": { "type": "string" },
        "name": { "type": "string" },
        "full_name": { "type": "string", "description": "workspace/name as displayed in the registry." },
        "describes": { "type": ["string", "null"] },
        "featured": { "type": ["boolean", "null"] },
        "is_private": { "type": ["boolean", "null"] },
        "workspace_name": { "type": ["string", "null"] },
        "latest_version": {
          "anyOf": [
            { "type": "null" },
            { "$ref": "#/$defs/TileVersionSummary" }
          ]
        },
        "scores": { "$ref": "#/$defs/Scores" }
      }
    },
    "TileVersionSummary": {
      "type": "object",
      "additionalProperties": false,
      "required": ["version", "summary"],
      "properties": {
        "version": { "type": "string" },
        "summary": { "type": "string" },
        "has_skills": { "type": ["boolean", "null"] },
        "has_docs": { "type": ["boolean", "null"] },
        "has_steering": { "type": ["boolean", "null"] }
      }
    },
    "Scores": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "aggregate", "quality", "impact", "security",
        "evalAvg", "evalBaseline", "evalImprovement", "evalImprovementMultiplier",
        "evalCount", "lastScoredAt"
      ],
      "properties": {
        "aggregate": { "type": ["number", "null"] },
        "quality": { "type": ["number", "null"] },
        "impact": { "type": ["number", "null"] },
        "security": {
          "type": ["string", "null"],
          "enum": ["LOW", "MEDIUM", "HIGH", "CRITICAL", null]
        },
        "evalAvg": { "type": ["number", "null"] },
        "evalBaseline": { "type": ["number", "null"] },
        "evalImprovement": { "type": ["number", "null"] },
        "evalImprovementMultiplier": { "type": ["number", "null"] },
        "evalCount": { "type": ["integer", "null"], "minimum": 0 },
        "lastScoredAt": { "type": ["string", "null"] }
      }
    },
    "SearchError": {
      "type": "object",
      "additionalProperties": false,
      "required": ["target", "message"],
      "properties": {
        "target": {
          "type": "string",
          "enum": ["skill", "tile"],
          "description": "Which of the two queries failed (the skill-typed search or the tile-typed search). Both queries run regardless; only the higher-scoring result is retained as best_match, but per-query errors are still surfaced for diagnostics."
        },
        "status": { "type": ["integer", "null"] },
        "message": { "type": "string" }
      }
    }
  }
}

README.md

tile.json