> For the complete documentation index, see [llms.txt](https://docs.tessl.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.tessl.io/tutorials/using-tessl-as-a-package-manager.md).

# Using Tessl as a package manager

{% hint style="info" %}
**Takeaways**

* How to find, install, and update skills from the registry or a git repo.
* How to publish your own skill to a workspace, public or private.
* How to develop a plugin locally and reinstall it on every change.
  {% endhint %}

Tessl manages agent context the way npm or pip manages code dependencies. Skills, rules, and docs are versioned packages you install into a project, update when new versions ship, and publish for others to consume. This tutorial covers the basics of using Tessl: the day-to-day package-manager flows you reach for most.

## Find and install a skill

Search the registry for skills and plugins. Tessl search is intelligent: instead of matching literal keywords, it interprets the meaning of your query and evaluates it against each result's name, description, and source, then ranks them by how closely they fit what you described. So you can search in plain language by what a skill does, as well as by its package name:

```bash
tessl search "react testing"
```

You can also browse the registry UI, open a skill, and copy its install command straight from the page.

Many commands take a workspace name. Run `tessl workspace list` first to see the workspaces you have access to, then use one of those names wherever a command shows the `<workspace>` placeholder.

Install a skill or plugin by its registry name, a GitHub repo, or a local path:

```bash
tessl install <workspace>/<skillname>  # from the registry
tessl install github:acme/skills       # from a GitHub repo
tessl install file:./local-plugin      # from a local directory
```

By default Tessl installs into the current project and records the dependency in your `tessl.json` manifest. Pass `--global` to install into `~/.tessl` for every project, and `--skill` to pick specific skills from a multi-skill source. Without `--agent`, Tessl installs for every coding agent it detects in the project; pass `--agent` to target a specific one instead.

## Keep installed skills up to date

See which installed dependencies have newer versions:

```bash
tessl outdated
```

This lists each dependency with its current, compatible-update, and latest version. Apply the updates:

```bash
tessl update
```

`tessl update` selects the compatible updates and lets you choose which to apply. A new major version that could break compatibility is held back until you pass `--force`. Pass `--yes` to apply all compatible updates without prompting. Remove a dependency you no longer want with `tessl uninstall <workspace>/<skillname>`.

## Publish your own skill

If you have a `SKILL.md` that is not yet a package, turn it into one:

```bash
tessl skill import ./path-to-skill --workspace <workspace>
```

This writes a `.tessl-plugin/plugin.json` manifest under the skill directory. If you omit `--workspace`, the manifest is written with the workspace set to `"local"` and you will need to update `.tessl-plugin/plugin.json` to replace `"local"` with your workspace name before you can publish.

Publish the skill to your workspace:

```bash
tessl skill publish ./path-to-skill --workspace <workspace>
```

The first publish starts at version `0.1.0`. On later publishes, pass `--bump patch`, `--bump minor`, or `--bump major` to increment the version. Use `--dry-run` to validate what would be published without publishing.

## Choose public or private

A skill is published privately by default: it goes to its workspace, where only members can find and install it. If you expect to see it in the public registry and do not, this is usually why. Add `--public` to publish it for anyone to install:

```bash
tessl skill publish ./path-to-skill --workspace <workspace> --public
```

Workspaces are how Tessl scopes who can see and install a package. List the workspaces you belong to with `tessl workspace list`. A skill's full name includes its workspace, for example `<workspace>/<skillname>`, so workspace names are visible to anyone who can see the package.

## Develop a plugin locally

A plugin is a bundle of skills, rules, commands, and hooks described by a `.tessl-plugin/plugin.json` manifest. You can install one straight from a local directory and iterate on it before publishing.

First add the local plugin to your project:

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

Then run install in watch mode, which re-syncs every local source in your manifest whenever its files change:

```bash
tessl install --watch-local
```

Leave it running while you edit `./my-plugin`. Each save reinstalls the updated plugin into your project, so you can test changes against a real codebase before you publish. When it is ready, publish the whole bundle with `tessl plugin publish`:

```bash
tessl plugin publish ./my-plugin --workspace <workspace>
```

Like `tessl skill publish`, it accepts `--bump patch|minor|major` to increment the version and `--dry-run` to validate without publishing.

## Where to go next

* [Creating skills](/creating-skills-and-plugins/create-a-skill.md) and [Creating plugins](/creating-skills-and-plugins/create-a-plugin.md) to go deeper on authoring.
* [Distributing via registry](/distribute/distributing-via-registry.md) to share with your team or publicly.
* [Protecting yourself from insecure skills](/tutorials/protecting-against-insecure-skills.md) to review what you install for security.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://docs.tessl.io/tutorials/using-tessl-as-a-package-manager.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
