CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

upgrade-stripe

Guide for upgrading Stripe API versions, webhook endpoints, server-side SDKs, Stripe.js, and mobile SDKs

66

1.08x
Quality

77%

Does it follow best practices?

Impact

100%

1.08x

1 of 3 eval scenarios. Add 2 more for a full score.

SecuritybySnyk

Low

Low-risk findings worth noting

Fix and improve this skill with Tessl

tessl review fix ./providers/claude/plugin/skills/upgrade-stripe/SKILL.md

The canonical home for this skill is upgrade-stripe in stripe/ai

SKILL.md
Quality
Evals
Security

Quality

Content

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

A well-structured, highly actionable upgrade guide whose strongest points are its explicit validation checkpoints, rollback loop, and coverage of genuinely non-obvious Stripe versioning behavior. Its weaknesses are padding (the semver explainer, a redundant code example, version numbers hardcoded in every snippet) and some coverage gaps in the code examples (PHP, strongly-typed SDK commands).

Suggestions

Delete the semantic-versioning MAJOR.MINOR.PATCH explainer under "iOS and Android SDKs" — Claude already knows semver — and keep only the Stripe-specific deviation (the React Native 0.x.y model).

Remove the redundant "Good: Explicit version / Avoid: Relying on account default" JavaScript block, which repeats the configuration example already shown, and consolidate the webhook destination guidance duplicated between the opening section and checklist step 6.

Define the pinned example version once and reference it (or use a placeholder like <API_VERSION>) in the code snippets instead of repeating the date-based literal 2026-09-30.endive in every block, and add the missing PHP global-config example plus concrete strongly-typed SDK upgrade commands (e.g., go get, Maven coordinates).

DimensionReasoningScore

Conciseness

Much of the body is genuinely non-obvious Stripe-specific behavior (monthly no-breaking-change cadence, biannual majors, thin vs. snapshot events, immutable destination snapshot_api_version, 72-hour rollback), but it pads with a semantic-versioning MAJOR.MINOR.PATCH explainer that Claude already knows, a redundant "Good/Avoid" JavaScript example repeating an earlier snippet, and the time-sensitive version 2026-09-30.endive hardcoded into every code block. This matches anchor 3: mostly efficient but includes unnecessary explanation and could be tightened, rather than anchor 4's "minor instances".

3 / 5

Actionability

The body provides executable, copy-paste-ready code for Python/Ruby/Node client configuration, per-request overrides, curl Stripe-Version testing, and the Stripe.js script tag, plus concrete commands (npm update stripe, pip install --upgrade stripe) in a 9-step checklist. It stays at 4 rather than 5 due to gaps: PHP is listed among dynamically-typed languages but has no example, the strongly-typed SDK section gives no concrete package-manager commands, and the webhook destination replacement step lacks a specific command.

4 / 5

Workflow Clarity

The skill opens with a decision-rule-driven target-selection procedure (including honesty requirements like "If a pin already matches the target, report it as unchanged" and "say that the latest version remains unverified") and closes with a sequenced 9-step checklist featuring explicit validation (test via Stripe-Version header, create-and-test replacement destination, dual signing secrets during cutover) and an error-recovery feedback loop (72-hour rollback in Workbench). This matches anchor 5, and the destructive cutover steps do include validation, so the cap does not apply.

5 / 5

Progressive Disclosure

Good structure with clearly signaled one-level-deep external references ("See [Mobile SDK Versioning](https://docs.stripe.com/sdks/mobile-sdk-versioning.md) for details") and a logical section flow, in a single ~190-line file with no bundle files. It falls short of anchor 5 because the Stripe.js and mobile SDK sections are inline content a stricter split would place in reference files, and webhook destination guidance is duplicated between the opening section and checklist step 6.

4 / 5

Total

16

/

20

Passed

Description

70%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 specific, distinctive description that clearly enumerates the upgrade surface, written in appropriate third-person noun-phrase form. Its main defect is the complete absence of any "Use when..." trigger guidance, which caps completeness and weakens discoverability despite otherwise strong keyword coverage.

Suggestions

Append an explicit trigger clause, e.g. "Use when the user asks to upgrade or update Stripe API versions, migrate the Stripe integration to a new API version, or update Stripe SDKs (server-side, Stripe.js, or mobile)."

Include common user synonyms such as "update", "migrate", and "bump" alongside "upgrading" so the description matches how users naturally phrase the request.

Mention the verification/testing dimension of the task (e.g., testing with the Stripe-Version header before switching) to round out coverage of what the skill does.

DimensionReasoningScore

Specificity

The description lists five concrete upgrade targets ("Stripe API versions, webhook endpoints, server-side SDKs, Stripe.js, and mobile SDKs"), matching the anchor for several specific actions with minor gaps. It stays at 4 rather than 5 because it relies on a single verb ("upgrading") applied to a list rather than multiple distinct concrete actions, and omits verification/testing aspects of the task.

4 / 5

Completeness

The "what" is clear and enumerated, but there is no "Use when..." clause or any equivalent explicit trigger guidance, capping this dimension at 3 per the rubric guideline. When a user should invoke the skill is only weakly implied by the topic itself.

3 / 5

Trigger Term Quality

Natural terms users would say are present: "Stripe", "upgrading", "API versions", "webhook endpoints", "SDKs", "Stripe.js", "mobile SDKs". It falls short of anchor 5 because common synonyms users actually use are missing, such as "update", "migrate", and bare "webhooks".

4 / 5

Distinctiveness Conflict Risk

"Stripe" pins a clear niche, and the enumerated components (API versions, webhook endpoints, Stripe.js, mobile SDKs) are distinct triggers unlikely to fire a competing skill. It matches anchor 5: clear niche with distinct triggers and minimal conflict risk.

5 / 5

Total

16

/

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

stripe/ai

Path

providers/claude/plugin/skills/upgrade-stripe/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.