Run the full optimization cycle for a plugin — review best practices, generate eval scenarios, run BOTH activation evals (does the skill self-activate?) and content evals (does the plugin help solve tasks?), diagnose gaps, fix, and re-run until scores improve. Use when someone says "optimize my skill", "improve my plugin", "run evals", "benchmark my plugin", or wants to measure and improve how well a plugin helps agents solve tasks.
89
86%
Does it follow best practices?
Impact
89%
1.14xAverage score across 29 eval scenarios
Passed
No findings from the security scan
The canonical home for this skill is tessl/skill-optimizer
This skill orchestrates optimize-skill-instructions, setup-skill-performance, and optimize-skill-performance into a single end-to-end optimization cycle.
The full cycle takes 1–2 hours depending on how many scenarios and improvement iterations are needed. Set this expectation with the user upfront.
Review SKILL.md → Apply quick wins → Generate scenarios → Activation check → Content evals → Analyze → Fix → Re-run → Report
└── optimize-skill-instructions ──┘ └─────────── setup-skill-performance ───────────┘ └──────────── optimize-skill-performance ────────────┘Two distinct eval types run in this cycle:
Both apply to every plugin (single-skill and multi-skill alike). The variable is ordering, not whether to run them.
Every tessl eval run invocation MUST include --label <run-label> so the run is identifiable in tessl eval list. The label is a short, human-readable description of what the run is about — not a structured ID.
Compose <run-label> from whatever helps you recognise the run later when scanning the list. Typical ingredients:
activation, baseline, initial evals, verificationdescription rewrite, plan-solution fixes, clean scenario(haiku-4-5), (sonnet-4-6)v0.5.0, v4Examples:
repro-clean-scenariotask-prep v0.3.0 baselinetask-prep v0.5.0 plan-solution fixesv4-final-verificationskill-insights activation (haiku-4-5)skill-insights initial evals (haiku-4-5)Keep it concise — what the run was about should be obvious without opening it.
tessl review run skills/<name> --label "<label>" # review a skill bundle (Step 1)
tessl scenario generate <plugin-path> --count=5 # generate scenarios (Step 2)
tessl eval run <plugin-path> --skip-forced-context-activation --skip-scoring --label <run-label> # test skill routing
tessl eval run <plugin-path> --agent=claude:claude-sonnet-4-6 --label <run-label> # scored eval
tessl eval view --last --json # check resultsInvoke the optimize-skill-instructions skill. This runs tessl review run on the plugin's skill(s) — reviewing the whole bundle — surfaces scoring dimensions and quick wins, and applies approved changes. (For hands-off iteration, that skill can also use the automated tessl review fix loop.)
Entry criteria: The plugin has at least one SKILL.md.
Exit criteria: Review score is presented, approved quick wins are applied. Move to Step 2.
If the review score is already high (>= 85%) and the user is satisfied, skip to Step 2 without changes.
Invoke the setup-skill-performance skill with scope = "Full pipeline". Skip the scope question — go straight to Phase 1.
Before invoking, decide eval ordering by skill count:
ls skills/*/SKILL.md 2>/dev/null | wc -lWork through all phases of setup-skill-performance (Find Plugin → Generate Scenarios → Download & QC → Activation Check → Content Evals → View Results → Next Steps). Key parameters:
--agent (e.g. claude:claude-sonnet-4-6); tessl eval run --list-agents lists the options and the current defaultDecision point after results: If the activation check has been run and reviewed AND the content eval average is ≥ 85% with no regressions, stop and report success. Otherwise, continue to Step 3.
Before invoking optimize-skill-performance, do a quick triage of the results:
Invoke the optimize-skill-performance skill starting from Phase 1 (it will detect the existing results).
Work through the improve cycle:
Iteration rule: Run up to 2 improve iterations. After the second, report results and stop — the user should review before investing more time.
Present a final summary. Activation and content results are reported separately because they measure different things — activation observes natural firing, content forces activation and scores task performance.
Optimization Complete
Plugin: <plugin-name>
Review score: XX% → YY%
Scenarios: N scenarios
Iterations: X (1 setup + Y improve rounds)
Activation Results (natural activation, no forcing)
Scenarios where a skill fired:
- Scenario A → fired: skills/<name>
- Scenario C → fired: skills/<name>
Scenarios where NO skill fired:
- Scenario B
- Scenario D
Task Eval Results (forced activation)
Scenario A: baseline XX% → with-context YY% (Δ +ZZ)
Scenario B: baseline XX% → with-context YY% (Δ +ZZ)
...
Average: XX% → YY%
Cross-reference (where the two eval types meet)
No-activation but high baseline (no skill needed — routing is fine):
- Scenario B (88% baseline) — agent already handles it
No-activation AND low baseline (real routing gap — skill helps but doesn't fire):
- Scenario D (25% baseline → 90% with-context) — suggested description edit: …
Criteria improved: [list]
Still failing: [list with brief reason]
Eval runs:
Activation: [URL]
Content: [URL]If criteria remain stuck after 2 iterations, note whether the gap is addressable via documentation (suggest specific follow-up) or is inherently hard for the agent (suggest accepting or replacing the scenario).
Stop when:
Note: activation findings (zero-firing skills, scenarios with no activation) drive follow-up actions (description rewrites, scenario edits) but are not a numeric pass/fail gate. The gate is "ran and reviewed", not a coverage percentage — natural activation is scenario-driven, so "X of Y skills fired" is not a useful score.
37f0a21
Canonical home
since Apr 30, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.