Working reference for agents using the Tessl CLI — create and publish plugins/skills, install from the registry, update, lint, and run evals.
68
86%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Risky
Do not use without reviewing
Tessl is a registry and toolchain for agent skills and plugins. Key concepts:
.tessl-plugin/plugin.json manifest.SKILL.md file giving an agent reusable instructions. Lives at
skills/<skill-name>/SKILL.md inside a plugin.kumar). Run tessl org list or
tessl workspace list to find yours.tessl.json. Required for evals.my-plugin/
├── .tessl-plugin/
│ └── plugin.json # name, version, description, private
├── skills/
│ └── my-skill/
│ └── SKILL.md # frontmatter (name, description) + body
└── evals/ # optional — eval scenariosUse the CLI (tessl <cmd>) for:
Use the MCP server (tessl mcp start) for:
login, search, install, uninstall, statusConfigure 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-agentMCP server command: tessl mcp start (stdio transport)
| Tool | Auth required | What it does |
|---|---|---|
login | No | Authenticate with Tessl (opens browser) |
search | Yes | Search registry by name, PURL, or URL |
install | Yes | Install a plugin or sync all missing from tessl.json |
uninstall | No | Remove a plugin from the project |
status | No | Check 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.
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 neededtessl 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.jsontessl 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 outputtessl 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.
{
"name": "workspace/plugin-name",
"version": "0.1.0",
"description": "One-line description",
"private": false
}tessl plugin lint # current directory
tessl plugin lint ~/work/my-plugin # specific pathtessl 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 versionVersion 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.
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"# 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%---
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.
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
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-nameEvals 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 --lastDefault agent: claude:deepseek-v4-flash. Ctrl-C detaches without cancelling.
# 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># 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 # 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# 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 annotationstessl 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 mywstessl 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# 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 patchtessl 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-plugintessl 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| Error | Cause | Fix |
|---|---|---|
version already exists | Version in plugin.json already published | Add --bump patch |
Workspace is required | Missing --workspace on plugin new | Add --workspace yourworkspace |
Must specify at least one of: --skill or --rules | Plugin needs at least one component | Add --skill flag |
Plugin structure is invalid | Malformed plugin.json or SKILL.md | Run tessl plugin lint |
Workspace not found | Wrong workspace name | Run tessl workspace list |
Not authenticated | Session expired | Run tessl login or set TESSL_TOKEN |
tessl.json missing / project not found | Evals need a linked project | Run tessl project create or tessl project repair |
| Skill not triggering after install | Description not specific enough | Rewrite description as explicit trigger conditions with example phrases |
| Moderation delay | Plugin not yet searchable after publish | Wait a few minutes — moderation is async |
MCP search/install not working | Not authenticated in MCP session | Use the login MCP tool first |