Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .agents/plugins/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -652,6 +652,18 @@
},
"category": "Development"
},
{
"name": "tessl",
"source": {
"source": "local",
"path": "./plugins/tessl"
},
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
},
"category": "Development"
},
{
"name": "java-development",
"source": {
Expand Down
9 changes: 9 additions & 0 deletions .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -634,6 +634,15 @@
"tags": ["runtime", "tooling"],
"source": "./plugins/bun"
},
{
"name": "tessl",
"description": "Tessl CLI toolkit for agent-native, spec-driven development — create, develop, lint, pack, and publish Tessl plugins and skills to the registry, including setup-tessl + skill-review CI publishing",
"category": "development",
"keywords": ["tessl", "cli", "skills", "plugins", "spec-driven", "agent-native", "registry"],
"tags": ["cli", "skills", "tooling"],
"source": "./plugins/tessl",
"homepage": "https://tessl.io"
},
{
"name": "java-development",
"description": "Comprehensive collection of skills for Java development including Spring Boot, Quarkus, testing, documentation, and best practices - imported from github/awesome-copilot",
Expand Down
1 change: 1 addition & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,5 +50,6 @@
"plugins/zod": "1.1.0",
"plugins/graphite": "2.0.0",
"plugins/bun": "1.2.0",
"plugins/tessl": "1.0.0",
"plugins/portone": "1.1.0"
}
24 changes: 24 additions & 0 deletions plugins/tessl/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{
"name": "tessl",
"version": "1.0.0",
"description": "Tessl CLI toolkit for agent-native, spec-driven development — create, develop, lint, pack, and publish Tessl plugins and skills to the Tessl registry. Use when running tessl commands, authoring SKILL.md or rules, installing plugins, or publishing on push via setup-tessl CI.",
"author": {
"name": "Tessl",
"url": "https://github.com/tesslio"
},
"homepage": "https://tessl.io",
"repository": "https://github.com/tesslio",
"license": "MIT",
"keywords": [
"tessl",
"cli",
"skills",
"plugins",
"spec-driven",
"agent-native",
"registry"
],
"skills": [
"./skills/"
]
}
36 changes: 36 additions & 0 deletions plugins/tessl/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "tessl",
"version": "1.0.0",
"description": "Tessl CLI toolkit for agent-native, spec-driven development — create, develop, lint, pack, and publish Tessl plugins and skills to the Tessl registry. Use when running tessl commands, authoring SKILL.md or rules, installing plugins, or publishing on push via setup-tessl CI.",
"author": {
"name": "Tessl",
"url": "https://github.com/tesslio"
},
"interface": {
"displayName": "Tessl",
"shortDescription": "Tessl CLI toolkit for agent-native, spec-driven development — create, develop, lint, pack, and publish Tessl plugins and skills to the Tessl registry",
"longDescription": "Tessl CLI toolkit for agent-native, spec-driven development — create, develop, lint, pack, and publish Tessl plugins and skills to the Tessl registry. Use when running tessl commands, authoring SKILL.md or rules, installing plugins, or publishing on push via setup-tessl CI.",
"developerName": "Tessl",
"category": "Development",
"capabilities": [
"Skill"
],
"defaultPrompt": [
"Help me use Tessl for my current task."
],
"websiteURL": "https://tessl.io"
},
"homepage": "https://tessl.io",
"repository": "https://github.com/tesslio",
"license": "MIT",
"keywords": [
"tessl",
"cli",
"skills",
"plugins",
"spec-driven",
"agent-native",
"registry"
],
"skills": "./skills/"
}
90 changes: 90 additions & 0 deletions plugins/tessl/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# tessl

Skill for the [Tessl](https://tessl.io) CLI — the agent-native, spec-driven development platform. Ships a
single `use-tessl` skill that teaches agents to create, develop, lint, pack, and publish Tessl **plugins**
and **skills** to the Tessl registry, and to wire up CI publishing with the `setup-tessl` and `skill-review`
GitHub Actions.

## Compatibility

The `SKILL.md` format is shared by Claude Code, Cursor, Codex CLI, Gemini CLI, Google Antigravity, and
Windsurf. The same skill content works in all of them — only the install path / manifest format differs.

| Tool | Manifest | Skills path |
|------|----------|-------------|
| Claude Code | `.claude-plugin/plugin.json` | `./skills/` |
| Codex | `.codex-plugin/plugin.json` | `./skills/` |
| Antigravity | `plugin.json` (at plugin root) | `./skills/` |

All three tools read the same `skills/use-tessl/SKILL.md`.

## Install

### Claude Code

```bash
/plugin marketplace add pleaseai/claude-code-plugins
/plugin install tessl@pleaseai
```

### Codex CLI

Install via the Codex marketplace using this repository, or manually copy the plugin contents into your
Codex plugins directory. See the [Codex plugin docs](https://developers.openai.com/codex/plugins/build)
for the local install layout.

### Antigravity

Antigravity recognises this directory as a plugin via the root `plugin.json` marker file.

```bash
# Workspace scope (project-only)
mkdir -p .agents/plugins
cp -R <path-to-this-plugin> .agents/plugins/tessl

# Global scope (all projects)
mkdir -p ~/.gemini/antigravity/plugins
cp -R <path-to-this-plugin> ~/.gemini/antigravity/plugins/tessl
```

**Skill-only install:**

```bash
mkdir -p ~/.gemini/antigravity/skills
cp -R <path-to-this-plugin>/skills/use-tessl ~/.gemini/antigravity/skills/
```

## Prerequisites

- The `tessl` CLI installed and on `PATH` (`tessl --version`, `tessl doctor`). See <https://docs.tessl.io>.
- Authentication: `tessl login` interactively, or a `tessl api-key create` token for CI.

## What's inside

```
plugins/tessl/
├── .claude-plugin/plugin.json # Claude Code manifest (source of truth)
├── .codex-plugin/plugin.json # Codex manifest (generated)
├── plugin.json # Antigravity marker file (generated)
├── README.md # this file
└── skills/use-tessl/
├── SKILL.md # entry point — universal across all tools
└── references/
├── cli-commands.md # full CLI command surface (auth, plugin, skill, eval, …)
├── plugins.md # authoring/publishing plugins, .tessl-plugin/plugin.json, local loop
├── skills.md # SKILL.md format, skill new/import/lint/review/publish, rules
└── ci-publishing.md # setup-tessl + skill-review GitHub Actions, publish-on-push
```

The Codex (`.codex-plugin/plugin.json`) and Antigravity (`plugin.json`) manifests are generated from the
Claude manifest by `bun scripts/cli.ts multi-format` — do not hand-edit them.

## What it covers

- **Project setup** — `tessl init`, `tessl project link`, authentication, `tessl doctor`.
- **Plugin development** — `tessl plugin new/lint/pack/publish/info`, the local `file:` install loop, and
the `.tessl-plugin/plugin.json` manifest schema.
- **Skill authoring** — `SKILL.md` format, `tessl skill new/import/lint/review/publish`, and rules.
- **Publishing** — registry publish with `--dry-run` and `--bump`, unpublish/archive, and CI publishing
with [`tesslio/setup-tessl`](https://github.com/tesslio/setup-tessl) +
[`tesslio/skill-review`](https://github.com/tesslio/skill-review).
21 changes: 21 additions & 0 deletions plugins/tessl/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "tessl",
"version": "1.0.0",
"description": "Tessl CLI toolkit for agent-native, spec-driven development — create, develop, lint, pack, and publish Tessl plugins and skills to the Tessl registry. Use when running tessl commands, authoring SKILL.md or rules, installing plugins, or publishing on push via setup-tessl CI.",
"author": {
"name": "Tessl",
"url": "https://github.com/tesslio"
},
"homepage": "https://tessl.io",
"repository": "https://github.com/tesslio",
"license": "MIT",
"keywords": [
"tessl",
"cli",
"skills",
"plugins",
"spec-driven",
"agent-native",
"registry"
]
}
148 changes: 148 additions & 0 deletions plugins/tessl/skills/use-tessl/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
---
name: use-tessl
description: 'Use the Tessl CLI to build, validate, and publish agent-native plugins and skills, and to manage Tessl projects, workspaces, and the registry. Use when developers: (1) run tessl CLI commands — `tessl init`, `tessl login`, `tessl plugin new|lint|pack|publish|info`, `tessl skill new|import|lint|review|publish`, `tessl install|search|uninstall|list|outdated|update`, `tessl workspace`, `tessl org`, `tessl eval`, `tessl scenario`, `tessl mcp start`, `tessl doctor`; (2) author Tessl content — `.tessl-plugin/plugin.json` manifests, `skills/<name>/SKILL.md`, `rules/*.md`; (3) develop a plugin locally with `tessl install file:./my-plugin` and iterate; (4) publish to the Tessl registry, bump versions (`--bump patch|minor|major`), or set up CI publishing with `tesslio/setup-tessl` and the `tesslio/skill-review` GitHub Actions; (5) migrate a legacy `tile.json` with `tessl tile migrate`. Triggers on: "tessl", "tessl plugin", "tessl skill", "tessl publish", "tessl install", "tessl init", ".tessl-plugin", "SKILL.md", "tessl registry", "tessl workspace", "setup-tessl", "skill-review", "tessl eval", "tile migrate".'
---

# Using the Tessl CLI

Tessl is an agent-native, spec-driven development platform. Its CLI (`tessl`) creates, validates, and
publishes **plugins** — reusable packages that codify team standards and procedural knowledge for coding
agents. A plugin can contain **skills** (step-by-step agent workflows), **rules** (always-loaded coding
standards), and — coming soon — **hooks** and **MCP tools**.

This skill helps you drive that CLI correctly: scaffolding plugins/skills, developing them locally,
linting and packing, and publishing to the Tessl registry (manually or from CI).

## Prerequisites

Verify the CLI is installed and you are authenticated before running anything that touches the registry:

```bash
which tessl # confirm the CLI is on PATH
tessl --version # check installed version
tessl doctor # run diagnostics (auth, project link, environment)
tessl whoami # confirm the authenticated user (alias: tessl auth whoami)
```

If `tessl` is not installed, point the user at the official install instructions at
<https://docs.tessl.io> — do not guess an install command. In CI, install via the
[`tesslio/setup-tessl`](https://github.com/tesslio/setup-tessl) GitHub Action (see
[`references/ci-publishing.md`](references/ci-publishing.md)).

Authenticate interactively with `tessl login` (alias `tessl auth login`). For non-interactive/CI use,
create an API key with `tessl api-key create` and pass it through `setup-tessl`'s `token` input.

## Critical: Verify Commands Against the Live CLI

Tessl is evolving quickly — command names, flags, and the plugin manifest schema change between releases
(the CLI still ships a `tessl tile migrate` shim for the legacy `tile.json` → `.tessl-plugin/plugin.json`
rename). **Do not invent flags or assume a command exists.** Before generating any command:

1. Check the live help: `tessl --help`, `tessl <command> --help`, `tessl <command> <subcommand> --help`.
2. Cross-reference the official docs at <https://docs.tessl.io/reference/cli-commands> for the current
surface. The reference files in this skill ([`references/`](references/)) summarise the commands but the
live `--help` output is authoritative when they disagree.
3. Prefer non-destructive dry runs first: `tessl plugin publish --dry-run` before a real publish.
4. If you cannot confirm a command or flag from `--help` or the docs, say so instead of guessing.

## Topic Map

Load the focused reference for what you're doing — do not read them all upfront.

| Topic | Reference | When |
|-------|-----------|------|
| Full CLI command surface | [`references/cli-commands.md`](references/cli-commands.md) | Looking up any command, subcommand, or flag |
| Authoring & publishing plugins | [`references/plugins.md`](references/plugins.md) | `plugin new/lint/pack/publish`, `.tessl-plugin/plugin.json`, local dev loop |
| Authoring & reviewing skills | [`references/skills.md`](references/skills.md) | `skill new/import/lint/review/publish`, `SKILL.md` format, rules |
| CI publishing | [`references/ci-publishing.md`](references/ci-publishing.md) | `setup-tessl` + `skill-review` GitHub Actions, publish-on-push |

## Core Workflows

### Set up a repository for an agent

```bash
tessl init --agent claude --name my-project # configure repo + coding agent
tessl project link # link the repo to a Tessl project (or `create`/`repair`)
```

### Create and develop a plugin locally

The local loop is: **create → install from filesystem → test → lint/pack → iterate**.

```bash
# Scaffold a plugin (interactive wizard, or pass --name/--path)
tessl plugin new --name myworkspace/my-plugin --path ./my-plugin

# Add a skill to it
tessl skill new --name my-skill --path ./my-plugin/skills/my-skill

# Install it from the local filesystem to test in your repo
tessl install file:./my-plugin

# Validate structure and package before publishing
tessl plugin lint ./my-plugin
tessl plugin pack --output ./dist ./my-plugin
```

Expected layout (see [`references/plugins.md`](references/plugins.md) for the manifest fields):

```
my-plugin/
├── .tessl-plugin/
│ └── plugin.json # manifest: name (workspace/plugin), version, description, skills[]
├── rules/
│ └── standards.md # always-loaded coding standards (optional)
└── skills/
└── my-skill/
└── SKILL.md # YAML frontmatter (name, description) + Markdown body
```

### Review a skill before shipping

```bash
tessl skill lint ./skills/my-skill # validate against the skill spec
tessl skill review --optimize --max-iterations 3 # AI quality review + optional auto-optimisation
```

### Publish to the registry

```bash
tessl plugin publish --dry-run # preview without publishing
tessl plugin publish --bump minor # publish + bump version (patch|minor|major)

# Or publish a single skill (imports it into a plugin manifest, then publishes)
tessl skill publish --workspace myworkspace --bump patch
```

Use `tessl plugin unpublish` (within 2 days) to retract, or `tessl plugin archive --reason "<text>"` to
retire a plugin while preserving existing installs. See [`references/plugins.md`](references/plugins.md).

### Consume plugins

```bash
tessl search --type skills <query> # discover plugins in the registry
tessl install <workspace/plugin> # add to the repo (or --global)
tessl list # show installed plugins
tessl outdated && tessl update --yes # check for and apply updates
```

## Decision Points

- **Plugin vs. single skill** — a plugin bundles many skills/rules under one `workspace/plugin` namespace;
publish the whole plugin with `tessl plugin publish`. For a one-off skill, `tessl skill publish` imports
it into a manifest and publishes in one step. Prefer a plugin when you have more than one related skill.
- **Local `file:` install vs. registry install** — use `tessl install file:./my-plugin` while iterating;
switch to `tessl install <workspace/plugin>` once published. Re-run `tessl plugin lint` after each change.
- **Manual publish vs. CI publish** — for a shared repo, wire `tesslio/setup-tessl` + `tessl plugin publish`
into a publish-on-push workflow so the registry stays in sync with `main`. Add `tesslio/skill-review` to
gate PRs on skill quality. See [`references/ci-publishing.md`](references/ci-publishing.md).
- **Version bump** — `--bump patch` for fixes, `minor` for additive changes, `major` for breaking changes
to a skill's contract. Always `--dry-run` first to confirm what will be published.

## Notes

- Workspaces (`tessl workspace create|list|add-member`) scope private plugin collections to an org; a
plugin's `name` is `workspace/plugin`.
- `tessl eval` and `tessl scenario` evaluate plugins/skills against generated scenarios — useful before a
major version bump. See [`references/cli-commands.md`](references/cli-commands.md).
- `tessl mcp start` launches Tessl's MCP server so agents can call registry/search tools directly.
Loading
Loading