Creating skills

Learn how to create and manage skills using Tessl.

Skills are reusable capabilities that extend AI coding agents with specialized knowledge, workflows, or tool integrations. Tessl makes it easy to create, publish, and share skills with your team or the broader community through the Tessl Registry.

This guide walks you through creating a skill, publishing it, and installing it so your agent can use it.

Prerequisites

Before you begin, make sure you have:

Creating a skill

Step 1: Create a new skill

Use the tessl skill new command to create a new skill. You can run it interactively or with flags:

Option 1: Interactive wizard (recommended for first-time users)

tessl skill new

This launches an interactive wizard that guides you through creating the skill.

Option 2: Create with flags

You can create a skill with all parameters specified:

The command creates a new directory with a SKILL.md file following the Agent Skills specification. See the CLI commands reference for all available options.

Option 3: Import an existing skill

If you already have a skill (e.g., from a GitHub repository or local directory), you can import it:

This validates and imports the skill into your workspace. See the CLI commands reference for all import options.

Step 2: Write your skill

Your skill file must be named SKILL.md and should contain the skill definition following the Agent Skills format. For the complete specification, see:

Example SKILL.md

Here's what a well-documented SKILL.md file looks like:

Key components:

  • YAML frontmatter (required):

    • name: The skill identifier (lowercase, hyphens only)

    • description: Clear description of the trigger when skill should activate - this is critical for skill discovery by agents

  • Markdown body: Concise instructions, examples, and guidance

Important: Keep the documentation simple and focused. The frontmatter description helps agents discover your skill, while the body provides clear, actionable guidance.

Understanding the Tessl package structure

When you create a skill with tessl skill new, it creates a Tessl package structure with a tile.json manifest file. This file contains metadata about your skill:

The tile.json file looks like this:

Key fields:

  • name: Package name in workspace/skill-name format

  • version: Semantic version (semverarrow-up-right)

  • skills: Maps skill names to their SKILL.md file paths

You typically don't need to manually edit tile.json unless you're updating the version for a new release. For more details on the tile structure and configuration options, see Configuration files.

Step 3: Validate your skill

Before publishing, validate your skill structure and contents:

This command checks:

  • SKILL.md format and structure

  • Required frontmatter fields (name, description)

  • Conformance to the Agent Skills specification

  • Markdown validity

For a more comprehensive review with detailed recommendations:

Fix any errors before proceeding.

Step 4: Publish your skill

Publish your skill to the Tessl Registry:

By default, skills are published as private. This means only members of your workspace can install them.

If you're in the skill directory, you can omit the path:

To make a skill public (after approval):

After publishing, your skill will be available in the Tessl Registry and can be installed by members of your workspace.

Giving others access to your private skill:

To allow team members to install your private skill, add them to your workspace using tessl workspace add-member. See Workspaces for details on managing workspace members and Workspace management for the complete command reference.

Installing a skill

Once published (as private or public), you or your team members can install the skill in any project:

Or install a specific version:

Skills are installed as part of Tessl packages and automatically made available to your configured agent.

How skills are made available to your agent

When you install a skill (via tessl install), Tessl automatically makes it available to your configured agent:

  1. Package installation: The skill is downloaded as part of a Tessl package to .tessl/tiles/<workspace>/<package-name>/ in your project

  2. Skill extraction: Skills are extracted and made available to the agent

  3. Agent integration: Skills are made available to your agent depending on your agent platform.

Updating a skill

To update a published skill:

  1. Make your changes to the SKILL.md file

  2. Update the version number in tile.json (following semantic versioningarrow-up-right)

  3. Validate with tessl skill lint or tessl skill review

  4. Publish the new version with tessl skill publish

Important: Always increment the version in tile.json when publishing updates. Use semantic versioning:

  • Patch (1.0.0 → 1.0.1): Bug fixes, minor improvements

  • Minor (1.0.0 → 1.1.0): New features, backward-compatible changes

  • Major (1.0.0 → 2.0.0): Breaking changes

Users who have installed your skill can update to the new version by running:

This will automatically fetch the latest version of your skill.

Making your skill public (optional)

If you want to share your skill publicly so anyone can install it, you need to request to make it public:

  1. Navigate to the Tessl Registryarrow-up-right in your browser

  2. Log in if you're not already authenticated

  3. Navigate to your workspace and find your skill

  4. Click on the skill to view its details

  5. Select ActionsMake Public

  6. Click Request to Make Public

Tessl will review your request and contact you about the status. Once approved, you can publish with the --public flag:

For more details, see Sharing tiles publicly.

Best practices

  • Use SKILL.md format: Skills must be named SKILL.md and follow the Agent Skills specification

  • Write clear descriptions: The description in your frontmatter is critical for skill discovery - make it specific about when the skill should be used

  • Keep skills focused: Each skill should have a single, clear purpose

  • Test before publishing: Use tessl skill lint and tessl skill review to validate your skill before publishing

  • Document clearly: Include concise instructions and examples in your SKILL.md body

  • Use the --install flag: When creating a new skill, use --install to test it locally immediately

  • Version carefully: Always update the version in tile.json before publishing updates (following semantic versioning)

Alternative: Creating a tile for your skill

The workflow above uses tessl skill commands for a skill-first approach. If you need more flexibility (such as combining docs, rules, and skills in one package), you can use the tile-first workflow:

  1. Use tessl tile new to create a tile structure with tile.json

  2. Add your SKILL.md file to the tile's skills/ directory

  3. Reference the skill in tile.json:

  4. Use tessl tile lint and tessl tile publish to validate and publish

This approach is useful when you want to package skills together with documentation and rules. For more details, see Creating documentation.

Last updated