CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

shopify-functions

Shopify Functions allow developers to customize the backend logic that powers parts of Shopify. Available APIs: Discount, Cart and Checkout Validation, Cart Transform, Pickup Point Delivery Option Generator, Delivery Customization, Fulfillment Constraints, Local Pickup Delivery Option Generator, Order Routing Location Rule, Payment Customization

60

Quality

75%

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

Fix and improve this skill with Tessl

tessl review fix ./plugins/shopify/skills/shopify-functions/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

77%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.

The body is exceptionally actionable — every instruction comes with an exact command, complete code sample, or worked naming example, and the search-write-validate-retry workflow is a model feedback loop. Weaknesses are structural and editorial: a large wall of domain rules is inlined into SKILL.md instead of being split into reference files, and the mandatory tool-call instructions are duplicated across two sections with heavy repetitive emphasis. Splitting the Rust/GraphQL deep-dive into references and de-duplicating the workflow instructions would raise both conciseness and progressive disclosure without losing any value.

Suggestions

Move the long Rust codegen rules ('Important notes for Rust function logic', scalar types table) and the GraphQL input-query notes into one-level-deep reference files (e.g., references/rust-notes.md, references/graphql-input.md), keeping SKILL.md as an overview with clearly signaled pointers.

De-duplicate the mandatory workflow: the 'Required Tool Calls' section and the two trailing 'MANDATORY' sections repeat the same search/validate instructions — merge them into a single section and drop the repeated privacy notices into one note.

Trim ALL-CAPS emphasis stacking ('VERY IMPORTANT', 'THIS IS A MUST', 'Never ever ever') to a single emphatic statement per rule; the rules themselves are valuable and remain enforceable without the repetition.

DimensionReasoningScore

Conciseness

Most of the body is dense, non-obvious domain knowledge Claude does not already have (Rust codegen naming rules, scalar handling, GraphQL input-query quirks), so it is mostly efficient. However, it could be tightened: the mandatory search/validate tool-call workflow is stated twice in full (the 'Required Tool Calls' section and the two 'MANDATORY' sections at the end), emphasis is padded with shouting ('THIS IS A MUST', 'Never ever ever'), and two separate privacy notices repeat near-identical text — matching 'mostly efficient but includes some unnecessary explanation or could be tightened'.

3 / 5

Actionability

Fully executable throughout: exact CLI commands ('shopify app generate extension --template <api_lowercase_and_underscore> --flavor <rust|vanilla-js|typescript> --name=<function_name>'), complete copy-paste Rust snippets (main.rs with #[typegen]/#[query], Configuration struct with metafield deserialization), a full GraphQL input-query example, and concrete naming-convention worked examples (FunctionFetchResult -> fetch() -> src/fetch.rs). Not below 5: the common cases (run/fetch targets, multi-target functions, metafield configuration) are all covered with runnable code.

5 / 5

Workflow Clarity

The workflow is an explicit ordered sequence with validation checkpoints and a feedback loop: 1) search docs, 2) write code, 3) validate with scripts/validate.mjs, 4) on failure search the error type, fix, re-validate (max 3 retries), 5) return code only after validation passes. This matches the top anchor ('clear sequence with explicit validation steps; feedback loops for error recovery'), including the detailed error-recovery loop in 'Validate Before Returning Code'.

5 / 5

Progressive Disclosure

There is real bundle structure — scripts/search_docs.mjs and scripts/validate.mjs are referenced by exact path and both exist, and assets/ holds 13 per-API doc bundles — but the 300+ lines of Rust/GraphQL domain rules are inlined monolithically inside a single <system-instructions> block in SKILL.md rather than split into one-level-deep reference files, and the assets/ doc bundles are never surfaced or navigable from the body. This matches 'some structure but could be better organized; content that should be separate is inline'.

3 / 5

Total

16

/

20

Passed

Description

61%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.

The description establishes a clear, niche domain (Shopify Functions) with a concrete enumeration of the available APIs, and uses appropriate third-person voice. Its main weakness is the absence of any explicit 'Use when...' trigger guidance, which both caps completeness and leaves the single action verb ('customize the backend logic') vague. Adding a trigger clause naming the natural user asks (discount functions, checkout validation, cart transforms) would lift it substantially.

Suggestions

Add an explicit trigger clause, e.g. 'Use when the user asks to create or customize Shopify Functions — discounts, checkout/cart validation, cart transforms, delivery or payment customization, or fulfillment constraints.'

Replace the generic 'customize the backend logic' verb with concrete actions per the API list, e.g. 'Create discounts, validate carts and checkout, expand cart line items, reorder delivery and payment options.'

Include natural variations users would say — 'Shopify app extension', 'function target', 'Rust/JavaScript Shopify function' — to round out trigger term coverage.

DimensionReasoningScore

Specificity

The only action stated is the generic 'customize the backend logic that powers parts of Shopify'; the rest is a list of API surface names ('Discount', 'Cart Transform', 'Fulfillment Constraints') rather than concrete actions. This matches the 'names domain and 1-2 concrete actions, but not comprehensive' anchor — the API enumeration is concrete but no specific operations (create a discount, validate a cart, transform line items) are described.

3 / 5

Completeness

The 'what' is present but somewhat vague ('customize the backend logic'), and the API list clarifies scope; however there is no 'Use when...' clause or equivalent explicit trigger guidance, which caps completeness at 3 per the rubric guidelines. Not a 2 because the 'what' is not vague-only — the enumerated APIs make the scope concrete.

3 / 5

Trigger Term Quality

Good natural keyword coverage: 'Discount', 'Cart and Checkout Validation', 'Payment Customization', 'Delivery', 'Fulfillment' are terms users would naturally say when needing this skill. A few natural terms are missing (e.g., 'extension', 'function app', language terms like 'Rust'), keeping it below the comprehensive anchor 5.

4 / 5

Distinctiveness Conflict Risk

'Shopify Functions' is a clear niche with distinct, product-specific API names, so it is mostly distinct from other skills. Minor overlap risk remains with closely related Shopify skills (e.g., a Shopify CLI skill) and generic 'discount'/'checkout' requests, so it does not reach the minimal-conflict anchor 5.

4 / 5

Total

14

/

20

Passed

Validation

100%

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

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository

openai/plugins

Path

plugins/shopify/skills/shopify-functions/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.