CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/plugin-creator

Create a Tessl plugin: turn agent workflows and guardrails into a versioned bundle of skills, rules, hooks, and MCP servers, then validate and publish it.

93

1.31x
Quality

88%

Does it follow best practices?

Impact

95%

1.31x

Average score across 9 eval scenarios

SecuritybySnyk

Low

Low-risk findings worth noting

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-6/

{
  "context": "Tests whether the agent correctly maps a set of team requirements to Tessl primitives (skill, rule, MCP server, hook), justifies each choice, avoids padding with unneeded primitives, and chooses the cross-agent hook tier for agent-independent lifecycle behavior.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Skill for PR review",
      "description": "Recommends a skill (not a rule or command) for the task-specific, on-demand PR review workflow",
      "max_score": 10
    },
    {
      "name": "Rule for import convention",
      "description": "Recommends a rule (not a skill) for the always-on Python import ordering convention",
      "max_score": 10
    },
    {
      "name": "MCP server for metrics API",
      "description": "Recommends an MCP server (not a skill or rule) for the live metrics API query capability",
      "max_score": 10
    },
    {
      "name": "Cross-agent hook for post-edit validation",
      "description": "Recommends a generic cross-agent `hooks` entry using the `PostToolUse` event and an Edit/Write matcher for deterministic post-edit validation; does not defer hooks or claim they are unavailable",
      "max_score": 12
    },
    {
      "name": "Justification for each primitive",
      "description": "Provides a brief justification for each primitive choice (not just a list of types), explaining why that primitive fits the requirement",
      "max_score": 8
    },
    {
      "name": "No padding",
      "description": "Does NOT add extra primitives (e.g. a command, a second MCP server, additional rules/skills) that were not needed by the stated requirements",
      "max_score": 10
    },
    {
      "name": "Plan is concise",
      "description": "The composition-plan.md is structured as a short plan (not a full implementation or lengthy spec) — a few lines per component rather than detailed code or exhaustive prose",
      "max_score": 10
    },
    {
      "name": "Plugin shape stated",
      "description": "States the overall proposed shape — whether this is a single skill or a plugin — and names which primitives will be bundled together",
      "max_score": 10
    },
    {
      "name": "No secrets hard-coded for MCP",
      "description": "Does not hard-code the bearer token or API URL secret in the plan; notes that credentials should be provided via environment variable or configuration",
      "max_score": 10
    },
    {
      "name": "Skill vs rule distinction clear",
      "description": "The plan explicitly distinguishes between always-on (rule) and on-demand/task-specific (skill) as the reason for the primitive split, not just listing names",
      "max_score": 10
    }
  ]
}

README.md

tile.json