Ensure Tessl tiles meet all requirements for public registry publishing with comprehensive validation, quality gates, and evaluation scenarios. Use when preparing skills for public Tessl release, validating tile.json configuration, creating evaluation scenarios, enforcing quality thresholds, or checking agent-agnostic compliance. Keywords: tessl, tile, publishing, public-registry, validation, quality-gates, tile.json, evaluation-scenarios, skill-publishing
94
94%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
This document defines all required and optional fields for Tessl tile.json files, specifically for public registry publishing. Based on analysis of 66+ actual production tiles.
All public tiles MUST include these fields:
The globally unique package identifier for the tile.
Format: workspace/tile-name
pantheon-ai, my-org)markdown-authoring, terraform-validator)Examples:
"name": "pantheon-ai/markdown-authoring"
"name": "my-workspace/docker-best-practices"Validation:
Semantic version number following SemVer 2.0.0 specification.
Format: MAJOR.MINOR.PATCH
Examples:
"version": "1.0.0"
"version": "2.3.1"
"version": "0.1.0"Validation:
^\d+\.\d+\.\d+$0.1.0 for initial development1.0.0 for first stable public releaseVersion bumping rules:
A comprehensive one-line description of the skill's purpose, capabilities, and usage.
Characteristics:
Structure pattern:
[Action verb] [what it does] [key capabilities]. Use when [trigger phrases]. Keywords: [3-8 relevant terms].Examples (from actual production tiles):
"summary": "Author high-quality Markdown documentation with deterministic structure, lint compliance, and CI integration. Use when writing README files, creating docs pages, fixing markdownlint failures, defining style rules, or wiring markdown checks into pre-commit and pipelines. Keywords: markdown, markdownlint, readme, docs, headings, lists, code fences, links, images, lint config, ci, documentation style""summary": "Validate, lint, test, and automate Terraform configurations with comprehensive HCL analysis, security scanning, and CI/CD integration. Use when working with .tf files, validating infrastructure-as-code, debugging configurations, performing dry-run testing with terraform plan, or implementing custom providers and modules. Keywords: terraform, hcl, validation, infrastructure-as-code, iac, terraform-validate, tflint, security"Validation:
Controls tile visibility in the Tessl registry.
Values:
false: Tile is publicly discoverable and installable by anyone (required for public publishing)true: Tile is only accessible within your workspace (private/development)true (private)Examples:
"private": false // For public publishing - REQUIRED
"private": true // For private/workspace-only tilesPublishing rules:
false before running tessl skill publish --publicfalse, bump version number insteadDefines the skills contained within this tile, their file paths, and optional bundled resources.
Structure:
{
"skills": {
"skill-identifier": {
"path": "relative/path/to/SKILL.md",
"references": ["ref1.md", "ref2.md"],
"resources": ["resource1.md", "resource2.md"]
}
}
}Required per skill:
path (string): Relative path from tile root to SKILL.md fileOptional per skill:
references (array): Markdown files referenced by this skill (bundled with tile)resources (array): Markdown resource files for this skill (alternative name for references)Rules:
Single skill example:
{
"skills": {
"markdown-authoring": {
"path": "SKILL.md"
}
}
}Skill with references example (from k8s-debug):
{
"skills": {
"k8s-debug": {
"path": "SKILL.md",
"references": [
"references/troubleshooting_workflow.md",
"references/common_issues.md",
"references/kubectl_commands.md"
]
}
}
}Skill with resources example (from typescript-advanced):
{
"skills": {
"typescript-advanced": {
"path": "SKILL.md",
"resources": [
"references/compiler-tsconfig.md",
"references/types-generics.md",
"references/utility-types.md"
]
}
}
}Multiple skills example:
{
"skills": {
"terraform-generator": {
"path": "generator/SKILL.md",
"references": ["generator/references/templates.md"]
},
"terraform-validator": {
"path": "validator/SKILL.md",
"references": ["validator/references/rules.md"]
}
}
}Validation:
name and descriptionreferences and resources paths must existThese fields enhance discoverability and organization but are not required:
Path to the primary documentation file for this tile.
Example:
"docs": "references/overview.md"Usage:
Used by: 2 tiles (minimal usage, most tiles use SKILL.md for all docs)
Additional files to bundle with the tile (templates, assets, configuration examples).
Example (from gitlab-ci-generator):
{
"files": [
"references/best-practices.md",
"references/security-guidelines.md",
"templates/basic-pipeline.yml",
"templates/docker-build.yml"
]
}Usage:
Used by: 7 tiles (gitlab-ci-generator, ansible-generator, helm-generator, etc.)
Note: The difference between files (root-level) and skills.<skill>.references (skill-level):
files: Shared across all skills in the tile, general tile resourcesreferences/resources: Specific to one skill, skill-specific documentation{
"name": "my-workspace/awesome-skill",
"version": "1.0.0",
"private": false,
"summary": "Create amazing things with powerful automation and best practices. Use when building features, fixing bugs, or optimizing workflows. Keywords: automation, best-practices, productivity",
"skills": {
"awesome-skill": {
"path": "SKILL.md"
}
}
}{
"name": "pantheon-ai/k8s-debug",
"version": "1.2.0",
"private": false,
"summary": "Debug Kubernetes clusters with systematic troubleshooting workflows, pod inspection, and log analysis. Use when pods crash, services are unreachable, or resources are misconfigured. Keywords: kubernetes, k8s, debug, troubleshoot, kubectl, pods, logs",
"skills": {
"k8s-debug": {
"path": "SKILL.md",
"references": [
"references/troubleshooting_workflow.md",
"references/common_issues.md",
"references/kubectl_commands.md"
]
}
}
}{
"name": "pantheon-ai/gitlab-ci-complete",
"version": "2.0.0",
"private": false,
"summary": "Generate, validate, and optimize GitLab CI/CD pipelines with best practices, security scanning, and comprehensive testing. Use when creating pipelines, validating YAML syntax, implementing CI/CD workflows, or debugging pipeline failures. Keywords: gitlab-ci, ci-cd, pipelines, yaml, gitlab, automation, devops",
"docs": "references/overview.md",
"files": [
"references/best-practices.md",
"references/security-guidelines.md",
"templates/basic-pipeline.yml",
"templates/docker-build.yml"
],
"skills": {
"gitlab-ci-generator": {
"path": "generator/SKILL.md",
"references": ["generator/references/pipeline-patterns.md"]
},
"gitlab-ci-validator": {
"path": "validator/SKILL.md",
"references": ["validator/references/validation-rules.md"]
}
}
}Before publishing publicly, verify:
name field exists and follows workspace/tile-name format (lowercase, kebab-case)version field exists and follows semantic versioning (x.y.z)private field is explicitly set to boolean false (not string "false")summary field exists and is descriptive (150-300 chars recommended)summary includes "Use when..." trigger phrasessummary includes relevant keywords inline ("Keywords: term1, term2, term3")skills object exists with at least one skill definedreferences and resources paths exist (if specified)files paths exist (if specified){
"name": "my-workspace/skill",
"version": "1.0.0"
// ERROR: Missing "private", "summary", and "skills"
}{
"private": "false" // ERROR: Must be boolean false, not string "false"
}{
"private": true // ERROR: Must be false for public publishing
}{
"summary": "A useful skill" // ERROR: Too generic, no keywords, no "Use when"
}FIX:
{
"summary": "Validate JSON schemas with comprehensive error reporting and automatic fixing. Use when validating API responses, config files, or data structures. Keywords: json, schema, validation, json-schema"
}{
"name": "MyWorkspace/SkillName" // ERROR: Must be lowercase kebab-case
}{
"name": "workspace_skill_name" // ERROR: Use forward slash, not underscores
}{
"version": "1.0" // ERROR: Must be x.y.z format
}{
"version": "v1.0.0" // ERROR: No 'v' prefix
}{
"skills": {} // ERROR: Must contain at least one skill
}{
"skills": {
"my-skill": {
"path": "does-not-exist.md" // ERROR: File must exist
}
}
}{
"summary": "Validate Terraform configurations",
"keywords": ["terraform", "validation"] // ANTI-PATTERN: Embed in summary instead
}FIX: Embed keywords inline in summary
{
"summary": "Validate Terraform configurations with HCL syntax checking and security scanning. Use when working with .tf files or debugging infrastructure code. Keywords: terraform, validation, hcl, iac, infrastructure-as-code"
}Reasoning: Only 1 out of 66 production tiles uses separate keywords array. Standard pattern is to embed keywords inline in the summary for better discoverability and readability.
Based on analysis of 66 production tiles in this repository:
| Property | Usage | Type | Level |
|---|---|---|---|
name | 66/66 (100%) | Required | Root |
version | 66/66 (100%) | Required | Root |
private | 66/66 (100%) | Required | Root |
summary | 66/66 (100%) | Required | Root |
skills | 66/66 (100%) | Required | Root |
files | 7/66 (11%) | Optional | Root |
docs | 2/66 (3%) | Optional | Root |
keywords | 1/66 (2%) | Deprecated | Root |
references | ~30/66 (45%) | Optional | Skill-level |
resources | 1/66 (2%) | Optional | Skill-level |
Key insight: The keywords property is effectively deprecated. Embed keywords inline in the summary instead.
tessl skill lint for automated validationtessl skill import to generate initial tile.json