CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

follow-ticket

Keep the Canonical Workflow's ship-ticket and land-pr runs in step with what people do: cancel runs when a person takes an issue back, close the pull request when an issue ends, wake the issues it was blocking, wake an issue when a person answers Tessl's question, and cancel runs when a Tessl pull request closes. Works with Linear and with GitHub Issues.

Quality

91%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

96%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An exceptionally tight, operational skill body: concrete commands throughout, explicit validation checkpoints with re-read-before-write and retry loops, and zero filler. The only structural blemish is the dangling frontmatter reference to a missing schemas/inputs.schema.json file.

Suggestions

Ship the referenced ./schemas/inputs.schema.json in the bundle or drop the frontmatter $ref — as written it points at a file that does not exist.

Consider moving the Linear- and GitHub-specific 'Environment facts' into one-level-deep reference files so the core workflow reads shorter.

DimensionReasoningScore

Conciseness

Every sentence carries system-specific operational fact Claude cannot know — 'tessl launch list --link-type ... --json', the '<!-- tessl-factory -->' markers, Linear's delayed state reads, exact branch naming ('tessl/<identifier lowercased>') — with no padding and no explanation of concepts Claude already knows. It matches 'lean and efficient; every token earns its place'.

5 / 5

Actionability

Copy-paste-ready commands cover the common cases: the tessl launch list/cancel commands, the full gh command set, the jq label extraction, the GitHub search query, verbatim comment bodies, GraphQL mutation shapes ('issueUpdate(id, input: {stateId})', 'commentCreate(input: {issueId, body})'), and the endpoint/auth header. The only gaps (Linear read queries, team-state lookup) are minor and derivable from the given shapes.

5 / 5

Workflow Clarity

The workflow has an explicit stop-condition checklist ('Stop with no write and say what was wrong when:...'), first-match situation ordering per TICKET_CHANGE, re-read-before-write checkpoints ('Read the issue and the pull request again. If the issue is still ended and the pull request still open...'), a stale-read feedback loop ('read it again, up to five times, 10 to 30 seconds apart'), and per-failure handling including a retry-once rule. This matches 'clear sequence with explicit validation steps; feedback loops for error recovery; checklists'.

5 / 5

Progressive Disclosure

There are no bundle files (no references/, scripts/, or assets/), and the single-file structure with well-labeled sections (inputs, per-change sections, Unblocking, Invariants, Environment facts, Judgment) is defensible since one run needs all of them. It falls short of the top anchor because the frontmatter's '$ref: ./schemas/inputs.schema.json' points to a file that does not exist in the bundle, and the ~220-line body is at the edge where per-tracker environment details could live in separate reference files.

4 / 5

Total

19

/

20

Passed

Description

83%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: it lists every capability concretely and sits in a distinct, well-bounded niche. Its main weakness is that trigger guidance is embedded per-action rather than given as an explicit, consolidated 'Use when...' clause, and a few natural trigger synonyms are absent.

Suggestions

Add an explicit trigger clause, e.g. 'Use when a ticket change fires for an issue or pull request Tessl is working on: a person takes it back, ends it, replies to a question, or closes a Tessl pull request.'

Include natural synonyms users would say, such as 'remove the tessl label', 'person commented', or 'issue closed', alongside the existing phrases.

Spell out 'runs on issues and pull requests in this repository' once up front so the scope is stated at skill level rather than only through the action list.

DimensionReasoningScore

Specificity

The description enumerates five concrete actions — 'cancel runs when a person takes an issue back, close the pull request when an issue ends, wake the issues it was blocking, wake an issue when a person answers Tessl's question, and cancel runs when a Tessl pull request closes' — comprehensively covering the skill's capabilities. It matches the top anchor (multiple specific concrete actions, comprehensive coverage) with no minor gaps in coverage.

5 / 5

Completeness

The 'what' is explicit via the enumerated actions, and 'when' guidance exists ('when a person takes an issue back', 'when an issue ends', 'when a Tessl pull request closes'), so it is more than weakly implied. However, the trigger guidance is distributed across per-action clauses rather than a consolidated 'Use when...' clause naming the invoking events, so it fits 'both present; when could be more explicit or specific' rather than the top anchor's explicit trigger phrasing.

4 / 5

Trigger Term Quality

Natural phrases like 'takes an issue back', 'issue ends', 'pull request closes', and 'answers Tessl's question', plus named systems 'Linear' and 'GitHub Issues', give good keyword coverage. It falls short of the top anchor because a few natural user-facing variants (e.g. 'remove the label', 'person commented/replied', 'close the issue') are missing and some terms (Tessl, ship-ticket, land-pr) are system jargon rather than natural user terms.

4 / 5

Distinctiveness Conflict Risk

The niche is unmistakable — keeping Tessl's ship-ticket and land-pr run lifecycle in step with human actions on issues and pull requests, on Linear and GitHub Issues — with named proprietary systems throughout. It is clearly distinguishable from any generic skill and has minimal conflict risk, matching the top anchor.

5 / 5

Total

18

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

frontmatter_unknown_keys

Unknown frontmatter key(s) found; consider removing or moving to metadata

Warning

Total

15

/

16

Passed

Repository

perihelionhq/perihelion-platform-context

Path

plugins/canonical-workflow/skills/follow-ticket/SKILL.md

Reviewed

Table of Contents

Is this your skill?

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.