> 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/use/understand-your-skill-estate.md).

# Understand your skill estate

Skills are multiplying across your repos. Most teams have no idea how many they have, who owns them, or how many are near-duplicates of each other.

Tessl Skill Inventory gives you a living map of every skill in your org - what exists, where it's used, and where you're duplicating effort.

It's free, and you can run it today.

***

### Quickstart

**1.** [**Download Tessl**](/introduction-to-tessl/installation.md)

**2.** [**Download the Github CLI**](https://cli.github.com/) (we access your code through your Github auth via the CLI)

**3. Authenticate**

```
tessl login
```

**4. Run the import**

```
tessl inventory import
```

Tessl scans your repos, collects your skills and manifests, and gives you a snapshot of your whole inventory. Run it again any time - each scan is diffed, so you get a living view of what's new, unchanged, and removed over time.

> Want to test on a subset first? `tessl inventory import --repo repo-a --repo repo-b`

***

### Detailed Guide

#### How It Works

The tessl CLI scans your repository, collects your skills and manifest files, and uploads them to Tessl. Each upload is a snapshot — Tessl tracks what's new, what's unchanged, and what's been removed across successive uploads so you get a living view of your skill inventory over time.

***

#### The Tessl CLI

The scan runs entirely from your local machine using the `tessl` CLI. Before running it, you need two things:

* **GitHub CLI (`gh`) authenticated** - the CLI uses your GitHub credentials to read repos and files. Access is scoped to whatever your GitHub account can see.
* **Logged in to Tessl** - run `tessl login` to authenticate before scanning.

**Running the scan**

By default, `tessl` scans your last 100 most recently active repositories. For large organisations this is a good starting point, but you can be more selective using `--repo`:

`tessl inventory import --repo repo-a --repo repo-b`

You can pass `--repo` as many times as you like. This is useful for testing the import on a small subset before running it across your whole organisation.

**What we don't collect**

* **No code** - only `skill.md` files and manifest files are read. Source code files are never accessed.
* **No names or email addresses** - only GitHub usernames are collected, never real names or email addresses.
* **No repo clones** - repos are never checked out. Individual files are fetched directly via the GitHub API.

**GitHub API rate limits**

The CLI uses the GitHub API under the hood, which has a limit of 5,000 requests per hour. If you have a large number of repos or skills, you may hit this limit mid-scan. In that case, wait for the limit to reset and re-run - successive scans are diffed, so you won't lose previously collected data.

***

#### What Gets Collected

**Skills (`skill.md` files)**

Every `skill.md` file found anywhere in your repository is collected, including:

* The full markdown body
* Any YAML frontmatter (name, description, etc)
* The file path within the repo
* Git metadata: created/updated dates, last touched by username.

Skills inside test fixture directories are included but tagged separately so they don't pollute your inventory metrics.

**Manifest files**

The following manifest files are collected if present:

| File                              | What it represents                                                              |
| --------------------------------- | ------------------------------------------------------------------------------- |
| `skills-lock.json`                | Skills installed via `npx skills` with pinned versions and content hashes       |
| `tessl.json`                      | Tessl's installed skill manifest                                                |
| `tile.json`                       | Legacy tessl plugin definition with skill declarations                          |
| `.tessl-plugin/plugin.json`       | Tessl plugin definition                                                         |
| `.claude-plugin/plugin.json`      | Claude plugin definition                                                        |
| `.claude-plugin/marketplace.json` | Marketplace plugin listing                                                      |
| `.claude/settings.json`           | Claude Code agent settings. Used to determine which marketplaces are being used |

***

#### Limitations

* **Linked files are not uploaded.** If your `skill.md` references other markdown files (e.g. via `@rules.md` or a markdown link), those files are not followed or stored — only the `skill.md` itself is captured.
* **Scripts are not uploaded.** Any executable files (`.sh`, `.py`, etc.) associated with a skill are not collected.
* **Manifest references are not resolved.** The manifest files themselves are stored, but any file paths referenced *inside* them are not read or uploaded.
* **Default scan is capped at 100 repos.** Only the 100 most recently active repositories are scanned by default. Use `--repo` to target specific repos if needed.


---

# 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:

```
GET https://docs.tessl.io/use/understand-your-skill-estate.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.
