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
90%
Does it follow best practices?
Impact
97%
1.44xAverage score across 2 eval scenarios
Advisory
Suggest reviewing before use
JSON Schema definitions for every phase output and cross-phase intermediate produced by the skill-insights pipeline. Each phase script validates inputs and outputs against these schemas at the IO boundary; bad shape aborts the run before downstream phases can read it.
| File | Schema | Produced by | Consumed by |
|---|---|---|---|
[discovery.schema.json](discovery.schema.json) | 1.3 | discover-skills/scripts/discover_skills.py | every analytical phase |
[staleness.schema.json](staleness.schema.json) | 1.1 | analyze-skill-staleness/scripts/analyze_staleness.py | render step |
[quality.schema.json](quality.schema.json) | 2.0 | analyze-skill-quality/scripts/analyze_quality.py | render step |
[duplicates.schema.json](duplicates.schema.json) | 1.0 | detect-skill-duplicates/scripts/finalize_duplicates.py | render step |
[registry-search.schema.json](registry-search.schema.json) | 1.2 | registry-search/scripts/registry_search.py | render step |
[duplicates-prompts-index.schema.json](duplicates-prompts-index.schema.json) | 1.0 | detect-skill-duplicates/scripts/prepare_duplicates.py (writes index.json) | duplicate-judge subagents and finalize_duplicates.py (read it) |
[duplicate-verdict.schema.json](duplicate-verdict.schema.json) | — | each duplicate-judge subagent (one verdict per pair) | finalize_duplicates.py |
[org-usage.schema.json](org-usage.schema.json) | 1.3 | posthog-skill-query/scripts/fetch_org_usage.py | cross-reference / render step (also linked from posthog-skill-query/SKILL.md) |
[_validate.py](_validate.py) is the shared helper used by every phase script. It:
jsonschema if available; otherwise prints a single stderr warning and skips validation (preserves the stdlib-only fallback that the rest of the pipeline aims for)SystemExit(2) so downstream phases never read malformed output) but supports a strict=False mode used for per-pair duplicate verdicts, where one bad subagent shouldn't abort the whole runThis README is linked from skills/discover-skills/SKILL.md, so Tessl's graph traversal (markdown-link reachability from manifest entrypoints) reaches it and pulls in every file linked from here — the JSON schemas and _validate.py. If you add a new schema, link it from this README so it ends up in the published tile.