CtrlK
BlogDocsLog inGet started
Tessl Logo

kumar/tessl-agent

Working reference for agents using the Tessl CLI — create and publish plugins/skills, install from the registry, update, lint, and run evals.

68

Quality

86%

Does it follow best practices?

Impact

No eval scenarios have been run

SecuritybySnyk

Risky

Do not use without reviewing

Overview
Quality
Evals
Security
Files

SKILL.mdskills/tessl-agent/

name:
tessl-agent
description:
Use when working with Tessl — publishing plugins or skills, installing from the registry, running evals, linting, bumping versions, running reviews, launching skills, managing workspaces, or any Tessl CLI or MCP operation. Triggers on: "publish this skill", "push to the registry", "create a tessl plugin", "install a skill", "run evals", "bump the version", "update the plugin", "lint the skill", "run a review", "launch a skill with an agent", "check tessl status", "what tessl tools are available".

Tessl Agent

What is Tessl

Tessl is a registry and toolchain for agent skills and plugins. Key concepts:

  • Plugin — versioned package in the registry. Contains skills, docs, or rules. Has a .tessl-plugin/plugin.json manifest.
  • Skill — a SKILL.md file giving an agent reusable instructions. Lives at skills/<skill-name>/SKILL.md inside a plugin.
  • Workspace — registry namespace (e.g. kumar). Run tessl org list or tessl workspace list to find yours.
  • Project — a local directory linked to Tessl via tessl.json. Required for evals.

Plugin directory layout

my-plugin/
├── .tessl-plugin/
│   └── plugin.json          # name, version, description, private
├── skills/
│   └── my-skill/
│       └── SKILL.md         # frontmatter (name, description) + body
└── evals/                   # optional — eval scenarios

CLI vs MCP — When to Use Which

Use the CLI (tessl <cmd>) for:

  • Creating, linting, publishing plugins and skills
  • Installing/updating/uninstalling plugins in a project
  • Running evals and reviews
  • Managing workspaces, API keys, projects
  • Launching skills with agents
  • Any write operation or lifecycle management

Use the MCP server (tessl mcp start) for:

  • Giving a coding agent (Cursor, Claude Code, Codex, etc.) access to search and install registry plugins mid-session — without leaving the agent
  • Checking auth and sync status from inside an agent session
  • The MCP exposes 4 tools only: login, search, install, uninstall, status

Configure MCP for your agent:

tessl init --agent claude-code    # sets up MCP config for Claude Code
tessl init --agent cursor         # sets up for Cursor
tessl init --agent codex          # etc.
# Supported: claude-code, cursor, gemini, codex, openhands, openclaw,
#            copilot, copilot-vscode, agents, tessl-agent

MCP server command: tessl mcp start (stdio transport)

MCP tools (full list)

ToolAuth requiredWhat it does
loginNoAuthenticate with Tessl (opens browser)
searchYesSearch registry by name, PURL, or URL
installYesInstall a plugin or sync all missing from tessl.json
uninstallNoRemove a plugin from the project
statusNoCheck auth status + plugin sync summary

tessl mcp proxy <workspace/mcp> — proxies calls to a workspace-registered MCP server through the Tessl gateway. Use this when an upstream MCP server requires OAuth and CI can't complete the flow itself.


Authentication

tessl whoami          # check login + workspace name
tessl login           # browser OAuth
tessl logout
tessl org list        # list orgs you belong to
tessl workspace list  # list workspaces you're a member of

# API key (for CI / non-interactive)
# Set TESSL_TOKEN env var — no tessl login needed

Setup / Init

tessl init                          # set up tessl.json + MCP config interactively
tessl init --agent claude-code      # configure MCP for a specific agent
tessl init --agent cursor --agent claude-code   # multiple agents
tessl init --name my-project        # set project name in tessl.json

Project Management

tessl project create my-project --workspace myworkspace  # create + link
tessl project link --workspace myworkspace               # link to existing project
tessl project repair                                     # fix broken tessl.json link
tessl project repair --json                              # machine-readable output

Plugin Lifecycle

Create

tessl plugin new \
  --name workspace/plugin-name \
  --summary "Description" \
  --workspace workspace \
  --skill \
  --skill-name skill-name \
  --skill-description "Trigger description"
# --path ~/work/my-plugin   (optional)
# --public                  (default: private)
# --install                 (auto-install into current repo)

--skill or --rules is required — a plugin must have at least one component.

plugin.json format

{
  "name": "workspace/plugin-name",
  "version": "0.1.0",
  "description": "One-line description",
  "private": false
}

Lint

tessl plugin lint                        # current directory
tessl plugin lint ~/work/my-plugin       # specific path

Publish

tessl plugin publish                              # current dir
tessl plugin publish ~/work/my-plugin             # specific path
tessl plugin publish ~/work/my-plugin --bump patch    # auto-bump if version exists
tessl plugin publish ~/work/my-plugin --bump minor
tessl plugin publish ~/work/my-plugin --bump major
tessl plugin publish ~/work/my-plugin --dry-run       # validate only
tessl plugin publish ~/work/my-plugin --verbose       # show every archived file
tessl plugin publish ~/work/my-plugin --version 1.2.0 # override version

Version rules: if version in plugin.json already exists in registry, publish fails unless you pass --bump. Set "private": false before publishing publicly. Moderation is async — may take a few minutes to appear.

Other plugin commands

tessl plugin info workspace/plugin-name           # show registry details
tessl plugin info workspace/plugin-name@1.0.0     # specific version
tessl plugin pack ~/work/my-plugin                # package to .tgz
tessl plugin migrate                               # migrate tile.json → plugin.json
tessl plugin unpublish --plugin workspace/plugin@0.1.2   # within 2 days only
tessl plugin archive --plugin workspace/plugin@0.1.2 --reason "reason"
tessl plugin archive --plugin workspace/plugin --reason "all versions"

Skill Lifecycle

# Create
tessl skill new --name skill-name --workspace myws --description "Trigger description"
tessl skill new --install   # also install into current repo after creating

# Import (create plugin.json from an existing SKILL.md)
tessl skill import ./my-skill --workspace myws --public

# Lint
tessl skill lint              # current dir
tessl skill lint ./my-skill

# Publish (standalone — bundles skill into a plugin automatically)
tessl skill publish ./my-skill --workspace myws --bump patch --public

# Review quality (synchronous, local)
tessl skill review ./my-skill
tessl skill review --optimize ./my-skill          # auto-improve
tessl skill review --optimize --yes ./my-skill    # no confirmation
tessl skill review --optimize --max-iterations 10 ./my-skill
tessl skill review --threshold 80 ./my-skill      # fail if score < 80%

SKILL.md frontmatter

---
name: skill-name          # must match directory name
description: >-
  One or two sentences. Write as a TRIGGER CONDITION for an agent.
  Include explicit trigger phrases: "Triggers on: X, Y, Z."
---

name and description are the only required fields.


Tessl Review (async, server-side)

Distinct from tessl skill review (synchronous, local). Runs server-side, supports CI gating, custom rubrics, and automated fix loops.

# Quality review
tessl review run ./my-skill --workspace engteam
tessl review run ./my-skill --workspace engteam --threshold 80 --json   # CI gate
tessl review run ./my-skill --workspace engteam --label "after refactor"
tessl review run ./my-skill --workspace engteam --force   # skip cache

# Security scan (Snyk-powered)
tessl review run security ./my-skill --workspace engteam
tessl review run security ./my-skill --workspace engteam --fail-on high  # CI gate

# Auto-fix loop
tessl review fix ./my-skill --workspace engteam
tessl review fix ./my-skill --workspace engteam --threshold 90 --max-iterations 5 --yes

# View / manage
tessl review list --workspace engteam
tessl review view --last
tessl review view <run-id>
tessl review retry --last

Install / Update / Uninstall

# Install
tessl install workspace/plugin-name
tessl install workspace/plugin-name@1.0.0       # pin version
tessl install --global workspace/plugin-name     # to ~/.tessl/
tessl install github:user/repo
tessl install github:user/repo --skill skill-one --skill skill-two
tessl install file:./local-plugin                # from local path
tessl install --yes workspace/plugin-name        # skip prompts
tessl install --accept-warnings workspace/plugin  # skip security policy prompts

# List, check, update
tessl list                           # list installed plugins
tessl list --global                  # global installs
tessl outdated                       # check for newer versions
tessl update workspace/plugin-name   # update one
tessl update --yes                   # update all without prompts
tessl update --force workspace/plugin # include breaking updates

# Uninstall
tessl uninstall workspace/plugin-name
tessl uninstall workspace/plugin-name --skill skill-name  # one skill only
tessl uninstall --global workspace/plugin-name

Evals

Evals test whether a skill actually improves agent behavior. Requires a linked project.

# Run evals
tessl eval run .                              # plugin's own evals (shorthand)
tessl eval run ./my-plugin                    # explicit plugin path
tessl eval run ./evals/ --context ./my-plugin # scenarios dir + context
tessl eval run ./evals/ --context workspace/plugin@1.0.0  # published context
tessl eval run --skip-baseline ./my-plugin    # only with-context variant
tessl eval run --force ./my-plugin            # re-run all including solved
tessl eval run --runs 3 ./my-plugin           # repeat each scenario 3x
tessl eval run --label "refactor test"        # tag this run
tessl eval run --agent claude:claude-sonnet-4-6 ./my-plugin
tessl eval run --list-agents                  # show supported agent:model values
tessl eval run --quality-check ./my-plugin    # exclude misleading scenarios
tessl eval run --json ./my-plugin             # output run IDs immediately

# View / manage
tessl eval list
tessl eval list --mine --workspace myteam
tessl eval view --last
tessl eval view <run-id>
tessl eval retry --last

Default agent: claude:deepseek-v4-flash. Ctrl-C detaches without cancelling.


Scenarios (for codebase evals)

# Generate scenarios from repo commits
tessl scenario generate org/repo --commits=abc123,def456 --workspace engteam
tessl scenario generate org/repo --prs=42,43 --workspace engteam
tessl scenario generate ./my-plugin --count=5   # from plugin

# List / view
tessl scenario list --workspace engteam
tessl scenario view --last
tessl scenario view <id>

# Download to evals/
tessl scenario download --last
tessl scenario download --last --strategy replace --output my-evals/
tessl scenario download <id>

Launch Skills with Agents

# Run locally
tessl launch skill workspace/my-skill --agent tessl-agent
tessl launch skill workspace/my-skill --agent claude-code --interactive
tessl launch skill workspace/my-skill --agent tessl-agent --yolo
tessl launch skill file:./my-skill --agent claude-code   # local skill

# Run in the cloud against a repo
tessl launch skill workspace/my-skill --cloud --repo owner/repo --agent tessl-agent
tessl launch skill workspace/my-skill --cloud --repo owner/repo --no-wait

# Launch an agent directly
tessl launch claude-code
tessl launch tessl-agent

# Inspect cloud runs
tessl launch list
tessl launch view <run-id>
tessl launch logs <run-id>

Tessl Agent (built-in)

tessl agent                                    # interactive session
tessl agent --print "summarize recent changes" # one-shot
tessl agent --continue                         # resume last session
tessl agent --model anthropic/claude-opus-4-6
tessl agent --yolo                             # auto-approve all permissions
tessl agent --skill ./my-skill                 # load a specific skill

# MCP server management for the tessl agent
tessl agent mcp add my-server -- npx my-mcp-server
tessl agent mcp add my-server --url https://mcp.example.com --header "Authorization: Bearer token"
tessl agent mcp list
tessl agent mcp get my-server
tessl agent mcp remove my-server

Change Review (PR/diff gating)

# Risk assessment
tessl change risk                              # assess current diff
tessl change risk --fail-if-review-required    # CI gate
tessl change risk init --policy conservative-starter

# Code review
tessl change review --skill tessl/code-review#review-code-legibility
tessl change review --skill ./local-skill --base origin/develop

# Verify files against configured rules
tessl change verify
tessl change verify --dry-run --show-files
tessl change verify --group my-group --github   # emit GitHub annotations

Workspace Management

tessl workspace create myworkspace
tessl workspace list
tessl workspace delete myworkspace
tessl workspace add-member --workspace myws --username alice --role publisher
# Roles: member, publisher, manager, owner
tessl workspace remove-member --workspace myws --username alice
tessl workspace list-members myws
tessl workspace archive --reason "deprecated" myws
tessl workspace unarchive myws

# API keys (for CI)
tessl api-key create --workspace myws --name "ci-key" --role publisher --expiry-date 2027-12-31T00:00:00Z
tessl api-key list --workspace myws
tessl api-key delete --workspace myws

Diagnostics

tessl doctor             # auth + manifest diagnostics
tessl doctor --json
tessl cli update         # update CLI to latest
tessl cli update --channel beta
tessl config get         # show all config
tessl config set shareUsageData false

Typical Agent Workflows

Update and push an existing skill

# 1. Edit skills/<name>/SKILL.md in the plugin directory
# 2. If skill also lives at ~/.agents/skills/, sync it:
cp ~/.agents/skills/my-skill/SKILL.md ~/work/my-plugin/skills/my-skill/SKILL.md
# 3. Lint
tessl plugin lint ~/work/my-plugin
# 4. Publish with auto-bump
tessl plugin publish ~/work/my-plugin --bump patch

Create a new plugin from scratch

tessl plugin new --name myws/my-plugin --workspace myws \
  --skill --skill-name my-skill \
  --skill-description "Trigger description for the skill" \
  --path ~/work/my-plugin
# Edit the generated SKILL.md
tessl plugin lint ~/work/my-plugin
tessl plugin publish ~/work/my-plugin

Measure whether a skill helps

tessl project create my-project --workspace myws   # one-time
tessl eval run ./my-plugin --label "baseline"
# Edit the skill
tessl eval run ./my-plugin --label "after improvement"
tessl eval list --workspace myws

Common Failures

ErrorCauseFix
version already existsVersion in plugin.json already publishedAdd --bump patch
Workspace is requiredMissing --workspace on plugin newAdd --workspace yourworkspace
Must specify at least one of: --skill or --rulesPlugin needs at least one componentAdd --skill flag
Plugin structure is invalidMalformed plugin.json or SKILL.mdRun tessl plugin lint
Workspace not foundWrong workspace nameRun tessl workspace list
Not authenticatedSession expiredRun tessl login or set TESSL_TOKEN
tessl.json missing / project not foundEvals need a linked projectRun tessl project create or tessl project repair
Skill not triggering after installDescription not specific enoughRewrite description as explicit trigger conditions with example phrases
Moderation delayPlugin not yet searchable after publishWait a few minutes — moderation is async
MCP search/install not workingNot authenticated in MCP sessionUse the login MCP tool first

skills

tessl-agent

tile.json