# Developing plugins locally

When creating plugins, you'll often want to test them locally before publishing to the Tessl Registry. Tessl lets you install plugins directly from your filesystem, making it easy to iterate on your plugin content and validate it works correctly with your agent.

## Why develop locally

* **Test before publishing** - Validate your plugin works correctly before sharing it
* **Iterate quickly** - Make changes and test them immediately without publishing
* **Create repository-specific plugins** - Build context that's specific to one codebase
* **Work with monorepos** - Create plugins for different parts of your monorepo that stay with the code

## Development workflow

### 1. Create your plugin

Create a new plugin with a skill

```bash
tessl skill new --name my-skill --path ./my-plugin/skills/my-skill
```

or a generic plugin structure:

```bash
tessl plugin new --name myworkspace/my-plugin --path ./my-plugin
```

### 2. Install locally

Install your plugin from the filesystem:

```bash
tessl install file:./my-plugin
```

The plugin is now available to your agent.

### 3. Test and validate

Test with your agent:

* **Skills**: Invoke the skill - confirm it executes correctly and produces expected results
* **Rules**: Ask agent to generate code - check it follows your guidance

Then validate the plugin structure:

```bash
tessl plugin lint ./my-plugin
tessl plugin pack --output ./dist ./my-plugin
```

### 4. Iterate

Edit content → reinstall → test → repeat.

## Plugin structure

Plugins can contain two types of content:

<pre><code><strong>&#x3C;your-plugin-name>/
</strong><strong>├── .tessl-plugin/
</strong>│     └── plugin.json
└── skills/&#x3C;your-skill-name>/SKILL.md
├── rules/             # Mandatory guidance - always loaded
│   └── standards.md
├── evals/
│     └── scenario-1/
│          ├── task.md
│          ├── criteria.json
│          └── scenario.json        # optional: fixtures, includes, setup scripts
│     └── scenario-2/
</code></pre>

* `.tessl-plugin/plugin.json` will have a reference to where your SKILL.md is located in relation to the .tessl-plugin root. For example, if the skill is in the root of the plugin folder, use `"skills" : [.]` or if it resides like above use: `"skills" : [./skills/<your-skill-name>]` where the actual name of the directory is specified.
* evals/ is only present if [scenarios](/improving-your-skills/overview-improving-skills-and-plugins.md) were generated
* `skills/<your-skill-name>/SKILL.md` is suggested structure, otherwise plugin.json will need a specific pointer

See [Configuration files](/reference/configuration.md#plugin-configuration) for complete `.tessl-plugin/plugin.json` reference.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tessl.io/create/developing-plugins-locally.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
