CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

btcpay-server

BTCPay Server integration. Manage data, records, and automate workflows. Use when the user wants to interact with BTCPay Server data.

Quality

69%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Medium

Suggest reviewing before use

Fix and improve this skill with Tessl

tessl review fix ./skills/btcpay-server/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

65%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 a highly actionable, command-first guide with genuine error-recovery detail around connection states. Its main weaknesses are an incoherent step-numbering scheme ('skip to Step 2' with no Step 2), no validation guidance for destructive actions like delete-store, and a single-file layout that inlines a reference-grade action catalog instead of splitting it out.

Suggestions

Fix the broken workflow numbering: either label sections Step 1/Step 2 explicitly or replace 'skip to **Step 2**' with a real heading reference.

Add a validation checkpoint before destructive actions (e.g., confirm the store ID with get-store and echo-back confirmation before delete-store, since deletion is irreversible).

Move the 19-row action catalog into a references/ file (or trim to the top few) since 'membrane action list --intent' already provides live discovery, keeping SKILL.md as the overview.

DimensionReasoningScore

Conciseness

The body is dominated by executable commands, tables, and state-machine details that earn their tokens, with only minor over-explanation that could be trimmed: the intro paragraph explaining what BTCPay Server is ("a self-hosted, open-source cryptocurrency payment processor"), the filler line "Use action names and parameters as needed", and a garbled agent-types note. This matches anchor 4 ('Efficient; minor instances of over-explanation'); it is not a 3 because the padding is a handful of lines out of ~165, and not a 5 because those unnecessary passages exist.

4 / 5

Actionability

Every workflow stage has copy-paste-ready commands (npm install, membrane login, connection ensure with --wait polling, action list/run, proxy with a full flag table). Minor gap: the run example uses a generic --input '{"key": "value"}' placeholder with no real BTCPay example (e.g., create-invoice with an amount and storeId), and one command inconsistently switches from membrane to npx. This matches anchor 4 ('Mostly executable guidance... with minor gaps'); not a 5 because the common-case invocation is shown only schematically.

4 / 5

Workflow Clarity

The sequence (install → login → connect → poll for READY/CLIENT_ACTION_ERROR states → search → run) is present and the connection polling includes error handling, but the text tells the reader to 'skip to **Step 2**' when no Step 2 heading exists (numbering is incoherent: only '1b' appears), and destructive operations such as delete-store are listed with no verification guidance. Per the rubric cap for destructive/batch operations lacking validation, workflow clarity cannot exceed 3.

3 / 5

Progressive Disclosure

The file is cleanly sectioned and easy to navigate, but it is a ~165-line monolith with no bundle files at all: a 19-row action catalog and a proxy flag reference that duplicate what 'membrane action list' and CLI help provide are inlined rather than split into a references file. This matches anchor 3 ('content that should be separate is inline'); it is not a 4 because reference-type material is not placed in separate files, and not a 2 because the structure and section headers are clear.

3 / 5

Total

14

/

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 correctly names the specific app and includes an explicit 'Use when' clause, keeping conflict risk low. However, its capability statement is generic padding ("Manage data, records, and automate workflows") and trigger coverage relies entirely on the app name, missing the concrete BTCPay concepts (invoices, stores, payment requests) users would naturally mention.

Suggestions

Replace the generic 'Manage data, records, and automate workflows' with concrete BTCPay operations, e.g. 'Create and manage invoices, payment requests, pull payments, payouts, stores, and webhooks'.

Expand the 'Use when' clause with natural trigger phrases such as 'Use when the user mentions BTCPay, wants to accept Bitcoin payments, or needs to manage invoices, stores, or payouts'.

Trim the redundant 'data' wording ('interact with BTCPay Server data') so the trigger refers to actual objects and tasks.

DimensionReasoningScore

Specificity

The description names the domain ("BTCPay Server integration") but the stated actions are generic — "Manage data, records, and automate workflows" — with no concrete operations like creating invoices, managing stores, or handling payment requests. This matches the anchor 'Names the domain but actions are minimal or generic'; it is not a 3 because no concrete action is enumerated.

2 / 5

Completeness

Both parts are explicitly present: what ("BTCPay Server integration. Manage data, records, and automate workflows") and when ("Use when the user wants to interact with BTCPay Server data"). The when is explicit but circular and could be more specific, matching anchor 4; it is not a 3 because the 'Use when...' clause is explicit rather than weakly implied, and not a 5 because neither part offers concrete trigger phrases.

4 / 5

Trigger Term Quality

"BTCPay Server" is a natural keyword and appears in the trigger clause, but coverage stops there — missing common variations users would actually say such as "invoice", "payment request", "store", "payout", or "bitcoin payments". This is 'Some relevant keywords but missing common variations or synonyms'; not a 4 because keyword coverage is one term deep.

3 / 5

Distinctiveness Conflict Risk

BTCPay Server is a single named application, giving the description a clear niche with a distinct trigger term and minimal risk of firing for unrelated skills. This matches anchor 5 ('Clear niche with distinct triggers; minimal conflict risk'); anchor 4 would require actual overlap with a closely related skill, which the specific app name avoids.

5 / 5

Total

14

/

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

membranedev/application-skills

Path

skills/btcpay-server/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.