CtrlK
BlogDocsLog inGet started
Tessl Logo

php-point-of-sale

PHP Point of Sale integration. Manage Organizations. Use when the user wants to interact with PHP Point of Sale data.

50

Quality

56%

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

Fix and improve this skill with Tessl

tessl review fix ./skills/php-point-of-sale/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

46%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 CLI integration guidance is concrete and well-sequenced with a connection-state feedback loop, but the document is dominated by an ~800-line padded, malformed entity enumeration that should live in a separate reference file, dragging down conciseness and structure.

Suggestions

Remove or relocate the ~800-line entity enumeration into a separate reference file (e.g., references/entities.md) and link to it from the overview instead of inlining it.

Add a validation/verification checkpoint before running potentially destructive POS actions (e.g., confirm scope or dry-run before sales/expense/inventory writes).

Replace placeholder examples with one concrete end-to-end run (real actionId, input JSON, and expected output) to lift actionability to copy-paste complete.

DimensionReasoningScore

Conciseness

The body inlines an ~800-line auto-generated enumeration of entity names (e.g., "Item Location Inventory Spoilage", "Item Kit Location Inventory Warranty Extension") that is heavily padded and even truncates mid-line; this is noticeably verbose with large unnecessary sections. It is above anchor 1 only because the CLI usage half is reasonably lean, but well below anchor 3 due to the padded entity wall.

2 / 5

Actionability

Concrete copy-paste commands are provided throughout ("npm install -g @membranehq/cli@latest", "membrane connection ensure", "membrane action list", "membrane action run", "membrane request"), plus a flags table, matching anchor 4. It is below anchor 5 because examples use placeholders (CONNECTION_ID) and do not show representative input/output for the common cases.

4 / 5

Workflow Clarity

A clear sequence exists (install → authenticate → connect → search actions → run → proxy) with a real feedback loop for connection state (poll until not BUILDING, handle CLIENT_ACTION_REQUIRED, check error fields). Per the destructive/batch cap, however, action execution on a POS (sales, expenses, inventory writes) has no validation/verification step, so it caps at 3 rather than 4.

3 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ absent) and the giant entity enumeration is inlined monolithic content that clearly belongs in a separate reference file or should be discovered on demand, matching anchor 2. It is above anchor 1 because the CLI section has headers, but below anchor 3 because nothing is split out and no references are signaled.

2 / 5

Total

11

/

20

Passed

Description

66%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 is third-person, distinct, and includes an explicit "Use when" trigger, but it is narrow: it surfaces only Organizations while the skill covers dozens of entities, and trigger terms are limited to the product name without common synonyms.

Suggestions

Broaden the "what" beyond Organizations to reflect the main capabilities the skill actually exposes (e.g., manage items, sales, customers, suppliers, inventory).

Add natural trigger synonyms users would say, such as "POS", "point of sale", "retail sales", or "inventory", not just the product name.

Make the "when" clause concrete with the data types or tasks users mention (e.g., "Use when retrieving sales, inventory, or customer data from PHP Point of Sale").

DimensionReasoningScore

Specificity

Quotes "PHP Point of Sale integration. Manage Organizations." name the domain plus one concrete action area, but "manage" is generic and coverage is not comprehensive (the body exposes Items, Sales, Customers, etc., none mentioned). It is above anchor 2 (which only names the domain) because a concrete action ("Manage Organizations") is present, but below anchor 4 because only one generic action is listed.

3 / 5

Completeness

It has both a "what" ("PHP Point of Sale integration. Manage Organizations.") and an explicit "when" ("Use when the user wants to interact with PHP Point of Sale data."), matching anchor 4. It is below anchor 5 because the "what" is thin (only Organizations) and the "when" is somewhat circular (restating the product name rather than concrete trigger phrases).

4 / 5

Trigger Term Quality

The trigger phrase "Use when the user wants to interact with PHP Point of Sale data" supplies the product name as a keyword, but common variations/synonyms (POS, point of sale, retail, inventory, sales) are absent. This matches anchor 3 (some relevant keywords, missing common variations) rather than anchor 4's broader coverage.

3 / 5

Distinctiveness Conflict Risk

"PHP Point of Sale" is a specific named product, giving the skill a clear niche with distinct triggers and minimal conflict risk, matching anchor 5. It is not below 5 because no other generic skill would naturally claim this trigger.

5 / 5

Total

15

/

20

Passed

Validation

87%

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

Validation14 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (983 lines); consider splitting into references/ and linking

Warning

frontmatter_unknown_keys

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

Warning

Total

14

/

16

Passed

Repository
membranedev/application-skills
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.