For the complete documentation index, see llms.txt. This page is also available as Markdown.

Develop and test locally

Install a plugin straight from your filesystem so you can test and iterate before publishing.

Takeaway Install a plugin from your filesystem with tessl install file:./my-plugin, test it with your agent, then edit and reinstall to iterate. Nothing is published until you choose to.

You usually want to test a plugin before it reaches the registry. Tessl installs plugins directly from your filesystem, so you can iterate on the content and confirm it works with your agent first. This is also how you build context that stays with one codebase, or plugins for different parts of a monorepo.

This whole loop is also handled by your agent: tessl install tessl/plugin-creator

The loop

1. Create

Scaffold a plugin, seeding a first skill:

tessl plugin new --name engteam/my-plugin --workspace engteam --skill --skill-name my-skill --skill-description "When ..." --path ./my-plugin

engteam is a stand-in workspace; run tessl workspace list and use one of yours.

Add any further skills by authoring my-plugin/skills/<name>/SKILL.md directly. Use tessl skill new only for a standalone skill, not inside a plugin directory, where it would nest a separate package.

2. Install from the filesystem

tessl install file:./my-plugin

The plugin is now available to your agent, exactly as an installed one would be.

3. Test with your agent

  • Skills: trigger the skill and confirm it runs and produces what you expect.

  • Rules: ask the agent to write some code and check it follows the rule.

  • MCP servers: confirm the server appears in the agent's tools.

4. Validate

Lint the structure, then pack it and inspect the archive to confirm every intended file ships. Lint alone can pass on a plugin that would drop content when packaged, so check both:

5. Iterate

Edit the content, reinstall, and test again. Repeat until it behaves.

Plugin structure

  • .tessl-plugin/plugin.json points at your content. If a skill sits at the plugin root use "skills": ["."]; if it sits under skills/<name> use "skills": ["./skills/<name>"], or rely on the ./skills/ convention.

  • evals/ is present only once you have generated scenarios.

The complete .tessl-plugin/plugin.json reference is in Configuration files.

Next

Last updated