CtrlK
BlogDocsLog inGet started
Tessl Logo

testland/web-ext-cli-mozilla

Author, lint, run, build, and sign a Firefox / Chromium WebExtension using Mozilla's `web-ext` CLI v8. Covers `web-ext lint` (addons-linter wrapper, JSON output for CI), `web-ext run` (temporary install in firefox-desktop / firefox-android / chromium targets with hot-reload), `web-ext build` (deterministic zip), and `web-ext sign` (AMO submission API, listed vs unlisted channels, JWT credentials). Use when the extension targets Firefox (signing is mandatory for distribution) or when cross-browser test runs need a single CLI that drives both Firefox and Chromium against the same source tree.

76

Quality

96%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Passed

No findings from the security scan

Overview
Quality
Evals
Security
Files

Quality

Content

92%

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

The content is lean, highly actionable, and well-sequenced with explicit CI validation gating and an error-recovery anti-patterns table. Its only weakness is progressive disclosure: everything lives inline in one long file with no bundle references, so command-reference detail that could be split out remains in SKILL.md.

Suggestions

Move the full sign flag table and lint-output JSON schema into a reference file (e.g. references/COMMAND-REFERENCE.md) and link to it from a concise SKILL.md overview, achieving one-level-deep progressive disclosure.

Add an explicit validate->fix->retry loop for the manual signing workflow (e.g. 'if web-ext sign exits non-zero, inspect the AMO rejection message, fix the manifest/amo-metadata, then re-sign') to make the feedback loop concrete rather than implied by the CI gate.

Tighten minor padding such as the parenthetical '(an API base path, not a browsable page)' and the repeated 'Per [we-cmd]' framing to reduce token cost without losing the citation signal.

DimensionReasoningScore

Conciseness

The body supplies only tool-specific knowledge Claude would not already have (v8 flag semantics, --keep-profile-changes, --approval-timeout defaults, AMO base URL) with little concept over-explanation, fitting the 'lean and efficient; every token earns its place' anchor rather than the padded score-2 example.

3 / 3

Actionability

Commands are fully executable and copy-paste ready (web-ext lint/run/build/sign invocations with real flags, a web-ext-config.cjs, a GitHub Actions YAML, and jq/sed result-parsing snippets), matching the 'fully executable code/commands' anchor and well above the pseudocode score-2 case.

3 / 3

Workflow Clarity

Sections are clearly sequenced (Authoring -> Running -> Parsing results -> CI -> Anti-patterns -> Limitations) with explicit validation gating (--warnings-as-errors escalates to non-zero exit, build runs lint first, sign exit-code semantics) and an anti-patterns table for error recovery, meeting the 'clear sequence with explicit validation steps' anchor.

3 / 3

Progressive Disclosure

The skill is a single ~400-line file with no bundle directories; it is well organized into sections with an external References list, but substantial reference content (full CI YAML, sign flag table, lint output schema) stays inline where a one-level-deep reference file would help, matching the 'some structure ... content that should be separate is inline' anchor rather than the score-3 file-split pattern.

2 / 3

Total

11

/

12

Passed

Description

100%

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

The description is specific, action-oriented, and third-person, with explicit 'what' and 'Use when' trigger guidance and a well-scoped niche that limits conflict with sibling extension-testing skills. It earns the top anchor on every dimension.

DimensionReasoningScore

Specificity

Lists multiple concrete actions ('Author, lint, run, build, and sign') with subcommand-specific detail (lint -> JSON for CI, sign -> AMO submission API, listed vs unlisted), matching the 'lists multiple specific concrete actions' anchor and exceeding the score-2 domain-only level.

3 / 3

Completeness

Explicitly answers both 'what' (author/lint/run/build/sign a WebExtension) and 'when' via the 'Use when the extension targets Firefox ... or when cross-browser test runs need a single CLI' clause, matching the score-3 anchor with an explicit trigger.

3 / 3

Trigger Term Quality

Natural user-facing terms are well covered ('Firefox', 'Chromium', 'WebExtension', 'browser extension', 'sign', 'AMO'), the kind of vocabulary a user would actually say rather than jargon-only, so it sits above the 'some relevant keywords' score-2 anchor.

3 / 3

Distinctiveness Conflict Risk

The niche is sharply scoped (Mozilla web-ext v8, Firefox signing mandatory, one CLI for both browsers) with distinct triggers unlikely to collide with the named sibling skills, matching the 'clear niche with distinct triggers' anchor rather than the score-2 overlap case.

3 / 3

Total

12

/

12

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.

Validation15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

metadata_version

'metadata.version' is missing

Warning

Total

15

/

16

Passed

Reviewed

Table of Contents